From bf0fed2fede1c100b3bb04759523294e9ecc4539 Mon Sep 17 00:00:00 2001 From: kurisaw <2053731441@qq.com> Date: Wed, 19 Feb 2025 09:33:59 +0800 Subject: [PATCH] [drivers][bsp][reness] Add Etherkit bsp and RZ series driver compatibility adaptation --- .github/workflows/bsp_buildings.yml | 1 + bsp/renesas/libraries/HAL_Drivers/SConscript | 2 +- .../libraries/HAL_Drivers/config/drv_config.h | 22 +- .../HAL_Drivers/config/rzt/can_config.h | 85 + bsp/renesas/libraries/HAL_Drivers/drv_can.c | 31 +- .../libraries/HAL_Drivers/drv_common.c | 3 +- bsp/renesas/libraries/HAL_Drivers/drv_eth.c | 258 +- bsp/renesas/libraries/HAL_Drivers/drv_eth.h | 20 +- bsp/renesas/libraries/HAL_Drivers/drv_gpio.c | 32 +- .../libraries/HAL_Drivers/drv_hwtimer.c | 10 +- bsp/renesas/libraries/HAL_Drivers/drv_i2c.c | 18 +- bsp/renesas/libraries/HAL_Drivers/drv_rtc.c | 14 + bsp/renesas/libraries/HAL_Drivers/drv_sci.c | 2 + bsp/renesas/libraries/HAL_Drivers/drv_spi.c | 37 +- .../libraries/HAL_Drivers/drv_usart_v2.c | 2 +- bsp/renesas/rzn2l_etherkit/.api_xml | 2 + bsp/renesas/rzn2l_etherkit/.config | 1308 + bsp/renesas/rzn2l_etherkit/.cproject | 221 + bsp/renesas/rzn2l_etherkit/.gitignore | 14 + bsp/renesas/rzn2l_etherkit/.project | 28 + bsp/renesas/rzn2l_etherkit/.secure_azone | 4 + bsp/renesas/rzn2l_etherkit/.secure_xml | 110 + ...gnumcueclipse.managedbuild.cross.arm.prefs | 2 + .../.settings/language.settings.xml | 14 + .../.settings/local_temp_storage.prefs | 2 + .../.settings/org.eclipse.core.runtime.prefs | 3 + .../rzn2l_etherkit/.settings/projcfg.ini | 19 + .../.settings/project.JLink.Debug.rttlaunch | 92 + .../rzn2l_etherkit/.settings/standalone.prefs | 26 + bsp/renesas/rzn2l_etherkit/Kconfig | 17 + bsp/renesas/rzn2l_etherkit/README.md | 170 + bsp/renesas/rzn2l_etherkit/README_zh.md | 166 + bsp/renesas/rzn2l_etherkit/SConscript | 27 + bsp/renesas/rzn2l_etherkit/SConstruct | 55 + bsp/renesas/rzn2l_etherkit/board/Kconfig | 572 + bsp/renesas/rzn2l_etherkit/board/SConscript | 16 + bsp/renesas/rzn2l_etherkit/board/board.h | 65 + .../rzn2l_etherkit/board/ports/SConscript | 16 + .../rzn2l_etherkit/board/ports/gpio_cfg.h | 74 + .../board/ports/hyperram/SConscript | 16 + .../board/ports/hyperram/drv_hyperram.c | 124 + .../board/ports/rtl8211f/SConscript | 16 + .../board/ports/rtl8211f/rtl8211f_init.c | 49 + bsp/renesas/rzn2l_etherkit/buildinfo.ipcf | 156 + bsp/renesas/rzn2l_etherkit/configuration.xml | 1039 + bsp/renesas/rzn2l_etherkit/figures/big.png | Bin 0 -> 1262435 bytes bsp/renesas/rzn2l_etherkit/project.ewd | 3276 ++ bsp/renesas/rzn2l_etherkit/project.ewp | 2901 + bsp/renesas/rzn2l_etherkit/project.ewt | 3433 ++ bsp/renesas/rzn2l_etherkit/project.eww | 10 + bsp/renesas/rzn2l_etherkit/rtconfig.h | 394 + bsp/renesas/rzn2l_etherkit/rtconfig.py | 121 + bsp/renesas/rzn2l_etherkit/rzn/SConscript | 27 + .../CMSIS/Core_R/Include/cmsis_compiler.h | 290 + .../CMSIS_5/CMSIS/Core_R/Include/cmsis_cp15.h | 783 + .../CMSIS_5/CMSIS/Core_R/Include/cmsis_gcc.h | 2233 + .../CMSIS/Core_R/Include/cmsis_iccarm.h | 958 + .../CMSIS/Core_R/Include/cmsis_version.h | 46 + .../CMSIS_5/CMSIS/Core_R/Include/core_cr52.h | 312 + .../rzn/arm/CMSIS_5/LICENSE.txt | 201 + .../rzn/board/rzn2l_rsk/board.h | 67 + .../rzn/board/rzn2l_rsk/board_ethernet_phy.h | 60 + .../rzn/board/rzn2l_rsk/board_init.c | 67 + .../rzn/board/rzn2l_rsk/board_init.h | 64 + .../rzn/board/rzn2l_rsk/board_leds.c | 77 + .../rzn/board/rzn2l_rsk/board_leds.h | 81 + .../rzn2l_etherkit/rzn/fsp/inc/api/bsp_api.h | 111 + .../rzn/fsp/inc/api/r_ioport_api.h | 206 + .../rzn/fsp/inc/api/r_transfer_api.h | 402 + .../rzn/fsp/inc/api/r_uart_api.h | 268 + .../rzn/fsp/inc/fsp_common_api.h | 394 + .../rzn2l_etherkit/rzn/fsp/inc/fsp_features.h | 562 + .../rzn2l_etherkit/rzn/fsp/inc/fsp_version.h | 80 + .../rzn/fsp/inc/instances/r_ioport.h | 212 + .../rzn/fsp/inc/instances/r_sci_uart.h | 246 + .../cmsis/Device/RENESAS/Include/R9A07G084.h | 46278 ++++++++++++++++ .../cmsis/Device/RENESAS/Include/renesas.h | 131 + .../bsp/cmsis/Device/RENESAS/Include/system.h | 58 + .../Device/RENESAS/Source/cr/startup_core.c | 373 + .../Device/RENESAS/Source/cr/system_core.c | 617 + .../bsp/cmsis/Device/RENESAS/Source/startup.c | 197 + .../bsp/cmsis/Device/RENESAS/Source/system.c | 822 + .../rzn/fsp/src/bsp/mcu/all/bsp_cache.c | 752 + .../rzn/fsp/src/bsp/mcu/all/bsp_cache.h | 67 + .../rzn/fsp/src/bsp/mcu/all/bsp_clocks.c | 374 + .../rzn/fsp/src/bsp/mcu/all/bsp_clocks.h | 221 + .../rzn/fsp/src/bsp/mcu/all/bsp_common.c | 221 + .../rzn/fsp/src/bsp/mcu/all/bsp_common.h | 435 + .../src/bsp/mcu/all/bsp_compiler_support.h | 110 + .../rzn/fsp/src/bsp/mcu/all/bsp_delay.c | 159 + .../rzn/fsp/src/bsp/mcu/all/bsp_delay.h | 72 + .../rzn/fsp/src/bsp/mcu/all/bsp_exceptions.h | 50 + .../rzn/fsp/src/bsp/mcu/all/bsp_io.c | 41 + .../rzn/fsp/src/bsp/mcu/all/bsp_io.h | 544 + .../rzn/fsp/src/bsp/mcu/all/bsp_irq.c | 50 + .../rzn/fsp/src/bsp/mcu/all/bsp_irq.h | 236 + .../rzn/fsp/src/bsp/mcu/all/bsp_mcu_api.h | 64 + .../rzn/fsp/src/bsp/mcu/all/bsp_module_stop.h | 228 + .../src/bsp/mcu/all/bsp_register_protection.c | 116 + .../src/bsp/mcu/all/bsp_register_protection.h | 76 + .../rzn/fsp/src/bsp/mcu/all/bsp_reset.c | 139 + .../rzn/fsp/src/bsp/mcu/all/bsp_reset.h | 150 + .../rzn/fsp/src/bsp/mcu/all/bsp_sbrk.c | 108 + .../rzn/fsp/src/bsp/mcu/all/bsp_tfu.h | 228 + .../fsp/src/bsp/mcu/all/cr/bsp_cache_core.c | 48 + .../fsp/src/bsp/mcu/all/cr/bsp_cache_core.h | 52 + .../fsp/src/bsp/mcu/all/cr/bsp_delay_core.c | 63 + .../fsp/src/bsp/mcu/all/cr/bsp_delay_core.h | 63 + .../rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.c | 146 + .../rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.h | 347 + .../rzn/fsp/src/bsp/mcu/rzn2l/bsp_elc.h | 523 + .../rzn/fsp/src/bsp/mcu/rzn2l/bsp_feature.h | 242 + .../rzn/fsp/src/bsp/mcu/rzn2l/bsp_irq_sense.c | 86 + .../fsp/src/bsp/mcu/rzn2l/bsp_loader_param.c | 69 + .../rzn/fsp/src/bsp/mcu/rzn2l/bsp_mcu_info.h | 64 + .../rzn/fsp/src/bsp/mcu/rzn2l/bsp_override.h | 1455 + .../rzn/fsp/src/r_ioport/r_ioport.c | 957 + .../rzn/fsp/src/r_sci_uart/r_sci_uart.c | 1934 + bsp/renesas/rzn2l_etherkit/rzn_cfg.txt | 1158 + bsp/renesas/rzn2l_etherkit/rzn_cfg/SConscript | 19 + .../rzn_cfg/fsp_cfg/bsp/board_cfg.h | 25 + .../rzn_cfg/fsp_cfg/bsp/bsp_cfg.h | 37 + .../rzn_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h | 14 + .../fsp_cfg/bsp/bsp_mcu_device_memory_cfg.h | 552 + .../fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h | 12 + .../rzn_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h | 15 + .../rzn_cfg/fsp_cfg/bsp/bsp_memory_cfg.h | 5 + .../rzn_cfg/fsp_cfg/bsp/bsp_pin_cfg.h | 105 + .../rzn_cfg/fsp_cfg/r_ioport_cfg.h | 13 + .../rzn_cfg/fsp_cfg/r_sci_uart_cfg.h | 16 + bsp/renesas/rzn2l_etherkit/rzn_gen/SConscript | 19 + .../rzn2l_etherkit/rzn_gen/bsp_clock_cfg.h | 42 + .../rzn2l_etherkit/rzn_gen/common_data.c | 75 + .../rzn2l_etherkit/rzn_gen/common_data.h | 16 + bsp/renesas/rzn2l_etherkit/rzn_gen/hal_data.c | 110 + bsp/renesas/rzn2l_etherkit/rzn_gen/hal_data.h | 37 + bsp/renesas/rzn2l_etherkit/rzn_gen/main.c | 6 + bsp/renesas/rzn2l_etherkit/rzn_gen/pin_data.c | 168 + .../rzn2l_etherkit/rzn_gen/vector_data.c | 12 + .../rzn2l_etherkit/rzn_gen/vector_data.h | 50 + .../rzn2l_etherkit/script/fsp_xspi0_boot.icf | 735 + .../rzn2l_etherkit/script/fsp_xspi0_boot.ld | 448 + .../script/fsp_xspi0_boot_scons.ld | 456 + bsp/renesas/rzn2l_etherkit/src/hal_entry.c | 35 + bsp/renesas/rzn2l_etherkit/template.ewd | 3276 ++ bsp/renesas/rzn2l_etherkit/template.ewp | 2616 + bsp/renesas/rzn2l_etherkit/template.eww | 7 + bsp/renesas/rzn2l_rsk/board/Kconfig | 2 +- 148 files changed, 91722 insertions(+), 167 deletions(-) create mode 100644 bsp/renesas/libraries/HAL_Drivers/config/rzt/can_config.h create mode 100644 bsp/renesas/rzn2l_etherkit/.api_xml create mode 100644 bsp/renesas/rzn2l_etherkit/.config create mode 100644 bsp/renesas/rzn2l_etherkit/.cproject create mode 100644 bsp/renesas/rzn2l_etherkit/.gitignore create mode 100644 bsp/renesas/rzn2l_etherkit/.project create mode 100644 bsp/renesas/rzn2l_etherkit/.secure_azone create mode 100644 bsp/renesas/rzn2l_etherkit/.secure_xml create mode 100644 bsp/renesas/rzn2l_etherkit/.settings/ilg.gnumcueclipse.managedbuild.cross.arm.prefs create mode 100644 bsp/renesas/rzn2l_etherkit/.settings/language.settings.xml create mode 100644 bsp/renesas/rzn2l_etherkit/.settings/local_temp_storage.prefs create mode 100644 bsp/renesas/rzn2l_etherkit/.settings/org.eclipse.core.runtime.prefs create mode 100644 bsp/renesas/rzn2l_etherkit/.settings/projcfg.ini create mode 100644 bsp/renesas/rzn2l_etherkit/.settings/project.JLink.Debug.rttlaunch create mode 100644 bsp/renesas/rzn2l_etherkit/.settings/standalone.prefs create mode 100644 bsp/renesas/rzn2l_etherkit/Kconfig create mode 100644 bsp/renesas/rzn2l_etherkit/README.md create mode 100644 bsp/renesas/rzn2l_etherkit/README_zh.md create mode 100644 bsp/renesas/rzn2l_etherkit/SConscript create mode 100644 bsp/renesas/rzn2l_etherkit/SConstruct create mode 100644 bsp/renesas/rzn2l_etherkit/board/Kconfig create mode 100644 bsp/renesas/rzn2l_etherkit/board/SConscript create mode 100644 bsp/renesas/rzn2l_etherkit/board/board.h create mode 100644 bsp/renesas/rzn2l_etherkit/board/ports/SConscript create mode 100644 bsp/renesas/rzn2l_etherkit/board/ports/gpio_cfg.h create mode 100644 bsp/renesas/rzn2l_etherkit/board/ports/hyperram/SConscript create mode 100644 bsp/renesas/rzn2l_etherkit/board/ports/hyperram/drv_hyperram.c create mode 100644 bsp/renesas/rzn2l_etherkit/board/ports/rtl8211f/SConscript create mode 100644 bsp/renesas/rzn2l_etherkit/board/ports/rtl8211f/rtl8211f_init.c create mode 100644 bsp/renesas/rzn2l_etherkit/buildinfo.ipcf create mode 100644 bsp/renesas/rzn2l_etherkit/configuration.xml create mode 100644 bsp/renesas/rzn2l_etherkit/figures/big.png create mode 100644 bsp/renesas/rzn2l_etherkit/project.ewd create mode 100644 bsp/renesas/rzn2l_etherkit/project.ewp create mode 100644 bsp/renesas/rzn2l_etherkit/project.ewt create mode 100644 bsp/renesas/rzn2l_etherkit/project.eww create mode 100644 bsp/renesas/rzn2l_etherkit/rtconfig.h create mode 100644 bsp/renesas/rzn2l_etherkit/rtconfig.py create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/SConscript create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_compiler.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_cp15.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_gcc.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_iccarm.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_version.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/core_cr52.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/LICENSE.txt create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_ethernet_phy.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_init.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_init.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_leds.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_leds.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/api/bsp_api.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/api/r_ioport_api.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/api/r_transfer_api.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/api/r_uart_api.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/fsp_common_api.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/fsp_features.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/fsp_version.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/instances/r_ioport.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/instances/r_sci_uart.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/R9A07G084.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/startup_core.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/system_core.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_cache.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_cache.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_clocks.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_clocks.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_common.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_common.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_compiler_support.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_delay.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_delay.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_exceptions.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_io.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_io.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_irq.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_irq.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_mcu_api.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_module_stop.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_register_protection.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_register_protection.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_reset.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_reset.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_sbrk.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_tfu.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_cache_core.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_cache_core.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_delay_core.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_delay_core.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_elc.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_feature.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_irq_sense.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_loader_param.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_mcu_info.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_override.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/r_ioport/r_ioport.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn/fsp/src/r_sci_uart/r_sci_uart.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_cfg.txt create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_cfg/SConscript create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/board_cfg.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_cfg.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_mcu_device_memory_cfg.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_memory_cfg.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_pin_cfg.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/r_ioport_cfg.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/r_sci_uart_cfg.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_gen/SConscript create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_gen/bsp_clock_cfg.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_gen/common_data.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_gen/common_data.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_gen/hal_data.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_gen/hal_data.h create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_gen/main.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_gen/pin_data.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_gen/vector_data.c create mode 100644 bsp/renesas/rzn2l_etherkit/rzn_gen/vector_data.h create mode 100644 bsp/renesas/rzn2l_etherkit/script/fsp_xspi0_boot.icf create mode 100644 bsp/renesas/rzn2l_etherkit/script/fsp_xspi0_boot.ld create mode 100644 bsp/renesas/rzn2l_etherkit/script/fsp_xspi0_boot_scons.ld create mode 100644 bsp/renesas/rzn2l_etherkit/src/hal_entry.c create mode 100644 bsp/renesas/rzn2l_etherkit/template.ewd create mode 100644 bsp/renesas/rzn2l_etherkit/template.ewp create mode 100644 bsp/renesas/rzn2l_etherkit/template.eww diff --git a/.github/workflows/bsp_buildings.yml b/.github/workflows/bsp_buildings.yml index dd14e2505b7..45a84045983 100644 --- a/.github/workflows/bsp_buildings.yml +++ b/.github/workflows/bsp_buildings.yml @@ -248,6 +248,7 @@ jobs: - "renesas/ra8d1-vision-board" - "renesas/rzt2m_rsk" - "renesas/rzn2l_rsk" + - "renesas/rzn2l_etherkit" - "frdm-k64f" - "xplorer4330/M4" - RTT_BSP: "nuvoton" diff --git a/bsp/renesas/libraries/HAL_Drivers/SConscript b/bsp/renesas/libraries/HAL_Drivers/SConscript index 6e4b1d2a147..deee514c784 100644 --- a/bsp/renesas/libraries/HAL_Drivers/SConscript +++ b/bsp/renesas/libraries/HAL_Drivers/SConscript @@ -55,7 +55,7 @@ if GetDepend(['BSP_USING_TIM']): if GetDepend(['BSP_USING_ETH']): src += ['drv_eth.c'] -if GetDepend(['BSP_USING_CAN']): +if GetDepend(['BSP_USING_CAN']) or GetDepend('BSP_USING_CANFD'): src += ['drv_can.c'] if GetDepend(['BSP_USING_SDHI']): diff --git a/bsp/renesas/libraries/HAL_Drivers/config/drv_config.h b/bsp/renesas/libraries/HAL_Drivers/config/drv_config.h index 8e227c14505..f0270a92715 100644 --- a/bsp/renesas/libraries/HAL_Drivers/config/drv_config.h +++ b/bsp/renesas/libraries/HAL_Drivers/config/drv_config.h @@ -1,13 +1,13 @@ /* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2021-07-29 KyleChan first version - * 2022-12-7 Vandoul ADD ra4m2 - */ +* Copyright (c) 2006-2023, RT-Thread Development Team +* +* SPDX-License-Identifier: Apache-2.0 +* +* Change Logs: +* Date Author Notes +* 2021-07-29 KyleChan first version +* 2022-12-7 Vandoul ADD ra4m2 +*/ #ifndef __DRV_CONFIG_H__ #define __DRV_CONFIG_H__ @@ -145,6 +145,10 @@ extern "C" #include "rzt/uart_config.h" #include "rzt/timer_config.h" +#ifdef BSP_USING_CANFD +#include "rzt/canfd_config.h" +#endif + #ifdef BSP_USING_PWM #include "rzt/pwm_config.h" #endif diff --git a/bsp/renesas/libraries/HAL_Drivers/config/rzt/can_config.h b/bsp/renesas/libraries/HAL_Drivers/config/rzt/can_config.h new file mode 100644 index 00000000000..3bc1b4a5c2e --- /dev/null +++ b/bsp/renesas/libraries/HAL_Drivers/config/rzt/can_config.h @@ -0,0 +1,85 @@ +/* +* Copyright (c) 2006-2025, RT-Thread Development Team +* +* SPDX-License-Identifier: Apache-2.0 +* +* Change Logs: +* Date Author Notes +* 2025-02-11 kurisaW first version +*/ + +#ifndef __CAN_CONFIG_H__ +#define __CAN_CONFIG_H__ + +#include +#include "hal_data.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + +#if defined(BSP_USING_CAN0) +#ifndef CANFD0_CONFIG +#define CANFD0_CONFIG \ + { \ + .name = "canfd0", \ + .num_of_mailboxs = 48, \ + .p_api_ctrl = &g_canfd0_ctrl, \ + .p_cfg = &g_canfd0_cfg, \ + } +#endif /* CAN0_CONFIG */ +#endif /* BSP_USING_CAN0 */ + +#if defined(BSP_USING_CAN1) +#ifndef CANFD1_CONFIG +#define CANFD1_CONFIG \ + { \ + .name = "canfd1", \ + .num_of_mailboxs = 48, \ + .p_api_ctrl = &g_canfd1_ctrl, \ + .p_cfg = &g_canfd1_cfg, \ + } +#endif /* CAN1_CONFIG */ +#endif /* BSP_USING_CAN1 */ + +const canfd_afl_entry_t p_canfd0_afl[CANFD_CFG_AFL_CH0_RULE_NUM] = +{ + { + .id = + { + .id = 0x00, + .frame_type = CAN_FRAME_TYPE_DATA, + .id_mode = CAN_ID_MODE_STANDARD + }, + .destination = + { + .minimum_dlc = CANFD_MINIMUM_DLC_0, + .rx_buffer = CANFD_RX_MB_NONE, + .fifo_select_flags = CANFD_RX_FIFO_0 + } + }, +}; + +const canfd_afl_entry_t p_canfd1_afl[CANFD_CFG_AFL_CH1_RULE_NUM] = +{ + { + .id = + { + .id = 0x01, + .frame_type = CAN_FRAME_TYPE_DATA, + .id_mode = CAN_ID_MODE_STANDARD + }, + .destination = + { + .minimum_dlc = CANFD_MINIMUM_DLC_1, + .rx_buffer = CANFD_RX_MB_NONE, + .fifo_select_flags = CANFD_RX_FIFO_1 + } + }, +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_can.c b/bsp/renesas/libraries/HAL_Drivers/drv_can.c index f4095c2c7a3..591e7f811cb 100644 --- a/bsp/renesas/libraries/HAL_Drivers/drv_can.c +++ b/bsp/renesas/libraries/HAL_Drivers/drv_can.c @@ -6,6 +6,7 @@ * Change Logs: * Date Author Notes * 2021-10-29 mazhiyuan first version + * 2025-02-11 kurisaW support can and canfd drivers for RZ family */ #include "drv_can.h" @@ -47,6 +48,18 @@ static const struct ra_baud_rate_tab can_baud_rate_tab[] = {CAN10kBaud, 4, 14, 5, 1 + 249} }; +#if defined(BSP_USING_CANFD) + +#define can_instance_ctrl_t canfd_instance_ctrl_t + +#define R_CAN_Open R_CANFD_Open +#define R_BSP_IrqStatusClear R_BSP_IrqClearPending +#define R_CAN_ModeTransition R_CANFD_ModeTransition +#define R_CAN_InfoGet R_CANFD_InfoGet +#define R_CAN_Write R_CANFD_Write + +#endif + static rt_uint32_t get_can_baud_index(rt_uint32_t baud) { rt_uint32_t len, index; @@ -66,13 +79,13 @@ static void ra_can_get_config(void) struct can_configure config = CANDEFAULTCONFIG; #ifdef BSP_USING_CAN0 can_obj[CAN0_INDEX].can_dev.config = config; - can_obj[CAN0_INDEX].can_dev.config.msgboxsz = CAN_NO_OF_MAILBOXES_g_can0; + can_obj[CAN0_INDEX].can_dev.config.msgboxsz = 32; can_obj[CAN0_INDEX].can_dev.config.sndboxnumber = 1; can_obj[CAN0_INDEX].can_dev.config.ticks = 50; #endif #ifdef BSP_USING_CAN1 can_obj[CAN1_INDEX].can_dev.config = config; - can_obj[CAN1_INDEX].can_dev.config.msgboxsz = CAN_NO_OF_MAILBOXES_g_can1; + can_obj[CAN1_INDEX].can_dev.config.msgboxsz = 32; can_obj[CAN1_INDEX].can_dev.config.sndboxnumber = 1; can_obj[CAN1_INDEX].can_dev.config.ticks = 50; #endif @@ -168,7 +181,7 @@ rt_err_t ra_can_control(struct rt_can_device *can_dev, int cmd, void *arg) } return RT_EOK; } -int ra_can_sendmsg(struct rt_can_device *can_dev, const void *buf, rt_uint32_t boxno) +rt_ssize_t ra_can_sendmsg(struct rt_can_device *can_dev, const void *buf, rt_uint32_t boxno) { struct ra_can *can; can_frame_t g_can_tx_frame; @@ -180,7 +193,13 @@ int ra_can_sendmsg(struct rt_can_device *can_dev, const void *buf, rt_uint32_t b g_can_tx_frame.id_mode = msg_rt->ide; g_can_tx_frame.type = msg_rt->rtr; g_can_tx_frame.data_length_code = msg_rt->len; +#if defined(BSP_USING_CANFD) && defined(BSP_USING_CAN_RZ) + g_can_tx_frame.options = 0; +#elif defined(BSP_USING_CANFD) + g_can_tx_frame.options = CANFD_FRAME_OPTION_FD | CANFD_FRAME_OPTION_BRS; +#else g_can_tx_frame.options = 0; +#endif memcpy(g_can_tx_frame.data, msg_rt->data, 8); can = rt_container_of(can_dev, struct ra_can, can_dev); RT_ASSERT(boxno < can->config->num_of_mailboxs); @@ -193,7 +212,7 @@ int ra_can_sendmsg(struct rt_can_device *can_dev, const void *buf, rt_uint32_t b return RT_EOK; } -int ra_can_recvmsg(struct rt_can_device *can_dev, void *buf, rt_uint32_t boxno) +rt_ssize_t ra_can_recvmsg(struct rt_can_device *can_dev, void *buf, rt_uint32_t boxno) { struct rt_can_msg *msg_rt = (struct rt_can_msg *)buf; can_frame_t *msg_ra; @@ -205,7 +224,11 @@ int ra_can_recvmsg(struct rt_can_device *can_dev, void *buf, rt_uint32_t boxno) RT_ASSERT(boxno < can->config->num_of_mailboxs); if (can->callback_args->mailbox != boxno) return 0; +#if defined(BSP_USING_CANFD) + msg_ra = &can->callback_args->frame; +#else msg_ra = can->callback_args->p_frame; +#endif msg_rt->id = msg_ra->id; msg_rt->ide = msg_ra->id_mode; diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_common.c b/bsp/renesas/libraries/HAL_Drivers/drv_common.c index 0d9cb7b45be..39bcb3748b1 100644 --- a/bsp/renesas/libraries/HAL_Drivers/drv_common.c +++ b/bsp/renesas/libraries/HAL_Drivers/drv_common.c @@ -36,7 +36,8 @@ static void SysTimerInterrupt(void); static void reboot(uint8_t argc, char **argv) { #ifdef SOC_SERIES_R9A07G0 - return; + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_LPC_RESET); + R_BSP_SystemReset(); #else NVIC_SystemReset(); #endif diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_eth.c b/bsp/renesas/libraries/HAL_Drivers/drv_eth.c index f34cc996144..5a6de7f7dba 100644 --- a/bsp/renesas/libraries/HAL_Drivers/drv_eth.c +++ b/bsp/renesas/libraries/HAL_Drivers/drv_eth.c @@ -1,15 +1,16 @@ /* - * Copyright (c) 2006-2023, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2018-11-19 SummerGift first version - * 2018-12-25 zylx fix some bugs - * 2019-06-10 SummerGift optimize PHY state detection process - * 2019-09-03 xiaofan optimize link change detection process - */ +* Copyright (c) 2006-2023, RT-Thread Development Team +* +* SPDX-License-Identifier: Apache-2.0 +* +* Change Logs: +* Date Author Notes +* 2018-11-19 SummerGift first version +* 2018-12-25 zylx fix some bugs +* 2019-06-10 SummerGift optimize PHY state detection process +* 2019-09-03 xiaofan optimize link change detection process +* 2025-02-11 kurisaW adaptation for RZ Ethernet driver +*/ #include "drv_config.h" #include "drv_eth.h" @@ -17,35 +18,24 @@ #include #include -/* -* Emac driver uses CubeMX tool to generate emac and phy's configuration, -* the configuration files can be found in CubeMX_Config folder. -*/ - /* debug option */ -//#define ETH_RX_DUMP -//#define ETH_TX_DUMP -#define MINIMUM_ETHERNET_FRAME_SIZE (60U) -#define ETH_MAX_PACKET_SIZE 1514 +// #define ETH_RX_DUMP +// #define ETH_TX_DUMP +#define MINIMUM_ETHERNET_FRAME_SIZE (60U) +#define ETH_MAX_PACKET_SIZE (2048U) +#define ETHER_GMAC_INTERRUPT_FACTOR_RECEPTION (0x000000C0) #define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE #define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE -//#define DRV_DEBUG -#define LOG_TAG "drv.eth" +// #define DRV_DEBUG +#define LOG_TAG "drv.eth" #ifdef DRV_DEBUG - #define DBG_LVL DBG_LOG +#define DBG_LVL DBG_LOG #else - #define DBG_LVL DBG_INFO +#define DBG_LVL DBG_INFO #endif /* DRV_DEBUG */ #include -#define MAX_ADDR_LEN 6 - -#undef PHY_FULL_DUPLEX -#define PHY_LINK (1 << 0) -#define PHY_100M (1 << 1) -#define PHY_FULL_DUPLEX (1 << 2) - -struct rt_ra6m3_eth +struct rt_eth_dev { /* inherit from ethernet device */ struct eth_device parent; @@ -55,8 +45,24 @@ struct rt_ra6m3_eth }; static rt_uint8_t *Rx_Buff, *Tx_Buff; -//static ETH_HandleTypeDef EthHandle; -static struct rt_ra6m3_eth ra6m3_eth_device; +// static ETH_HandleTypeDef EthHandle; +static struct rt_eth_dev ra_eth_device; + +static uint8_t g_link_change = 0; ///< Link change (bit0:port0, bit1:port1, bit2:port2) +static uint8_t g_link_status = 0; ///< Link status (bit0:port0, bit1:port1, bit2:port2) +static uint8_t previous_link_status = 0; + +#if defined(SOC_SERIES_R9A07G0) + +#define status_ecsr status_link +#define ETHER_EVENT_INTERRUPT ETHER_EVENT_SBD_INTERRUPT + +#define R_ETHER_Open R_GMAC_Open +#define R_ETHER_Write R_GMAC_Write +#define R_ETHER_Read R_GMAC_Read +#define R_ETHER_LinkProcess R_GMAC_LinkProcess + +#endif #if defined(ETH_RX_DUMP) || defined(ETH_TX_DUMP) #define __is_print(ch) ((unsigned int)((ch) - ' ') < 127u - ' ') @@ -86,43 +92,44 @@ static void dump_hex(const rt_uint8_t *ptr, rt_size_t buflen) extern void phy_reset(void); /* EMAC initialization function */ -static rt_err_t rt_ra6m3_eth_init(void) +static rt_err_t rt_ra_eth_init(void) { fsp_err_t res; res = R_ETHER_Open(&g_ether0_ctrl, &g_ether0_cfg); if (res != FSP_SUCCESS) LOG_W("R_ETHER_Open failed!, res = %d", res); + return RT_EOK; } -static rt_err_t rt_ra6m3_eth_open(rt_device_t dev, rt_uint16_t oflag) +static rt_err_t rt_ra_eth_open(rt_device_t dev, rt_uint16_t oflag) { LOG_D("emac open"); return RT_EOK; } -static rt_err_t rt_ra6m3_eth_close(rt_device_t dev) +static rt_err_t rt_ra_eth_close(rt_device_t dev) { LOG_D("emac close"); return RT_EOK; } -static rt_ssize_t rt_ra6m3_eth_read(rt_device_t dev, rt_off_t pos, void *buffer, rt_size_t size) +static rt_ssize_t rt_ra_eth_read(rt_device_t dev, rt_off_t pos, void *buffer, rt_size_t size) { LOG_D("emac read"); rt_set_errno(-RT_ENOSYS); return 0; } -static rt_ssize_t rt_ra6m3_eth_write(rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size) +static rt_ssize_t rt_ra_eth_write(rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size) { LOG_D("emac write"); rt_set_errno(-RT_ENOSYS); return 0; } -static rt_err_t rt_ra6m3_eth_control(rt_device_t dev, int cmd, void *args) +static rt_err_t rt_ra_eth_control(rt_device_t dev, int cmd, void *args) { switch (cmd) { @@ -130,7 +137,11 @@ static rt_err_t rt_ra6m3_eth_control(rt_device_t dev, int cmd, void *args) /* get mac address */ if (args) { +#if defined(SOC_SERIES_R9A07G0) + SMEMCPY(args, g_ether0_ctrl.p_gmac_cfg->p_mac_address, 6); +#else SMEMCPY(args, g_ether0_ctrl.p_ether_cfg->p_mac_address, 6); +#endif } else { @@ -138,7 +149,7 @@ static rt_err_t rt_ra6m3_eth_control(rt_device_t dev, int cmd, void *args) } break; - default : + default: break; } @@ -147,7 +158,7 @@ static rt_err_t rt_ra6m3_eth_control(rt_device_t dev, int cmd, void *args) /* ethernet device interface */ /* transmit data*/ -rt_err_t rt_ra6m3_eth_tx(rt_device_t dev, struct pbuf *p) +rt_err_t rt_ra_eth_tx(rt_device_t dev, struct pbuf *p) { fsp_err_t res; struct pbuf *q; @@ -185,7 +196,6 @@ rt_err_t rt_ra6m3_eth_tx(rt_device_t dev, struct pbuf *p) framelength = framelength + byteslefttocopy; } - #ifdef ETH_TX_DUMP dump_hex(buffer, p->tot_len); #endif @@ -197,7 +207,6 @@ rt_err_t rt_ra6m3_eth_tx(rt_device_t dev, struct pbuf *p) { dump_hex(q->payload, q->len); } - } #endif res = R_ETHER_Write(&g_ether0_ctrl, buffer, p->tot_len);//>MINIMUM_ETHERNET_FRAME_SIZE?p->tot_len:MINIMUM_ETHERNET_FRAME_SIZE); @@ -207,7 +216,7 @@ rt_err_t rt_ra6m3_eth_tx(rt_device_t dev, struct pbuf *p) } /* receive data*/ -struct pbuf *rt_ra6m3_eth_rx(rt_device_t dev) +struct pbuf *rt_ra_eth_rx(rt_device_t dev) { struct pbuf *p = NULL; struct pbuf *q = NULL; @@ -270,98 +279,116 @@ struct pbuf *rt_ra6m3_eth_rx(rt_device_t dev) { dump_hex(q->payload, q->len); } - } #endif - return p; } static void phy_linkchange() { - static uint32_t phy_speed = 0; - uint32_t phy_speed_new = 0; fsp_err_t res; + uint8_t port = 0; + uint8_t port_bit = 0; - uint32_t p_local_pause; - uint32_t p_partner_pause; +#if defined(SOC_SERIES_R9A07G0) + gmac_link_status_t port_status; +#endif res = R_ETHER_LinkProcess(&g_ether0_ctrl); if (res != FSP_SUCCESS) LOG_D("R_ETHER_LinkProcess failed!, res = %d", res); - res = R_ETHER_PHY_LinkStatusGet(&g_ether_phy0_ctrl); - if (res != FSP_SUCCESS) - LOG_D("R_ETHER_PHY_LinkStatusGet failed!, res = %d", res); - - if(res == FSP_ERR_ETHER_PHY_ERROR_LINK) + if (0 == g_ether0.p_cfg->p_callback) { - LOG_D("link down"); - eth_device_linkchange(&ra6m3_eth_device.parent, RT_FALSE); - return; - } - - res = R_ETHER_PHY_LinkPartnerAbilityGet(&g_ether_phy0_ctrl, - &phy_speed_new, - &p_local_pause, - &p_partner_pause); - if (res != FSP_SUCCESS) - LOG_D("R_ETHER_PHY_LinkPartnerAbilityGet failed!, res = %d", res); + for (port = 0; port < PING_PORT_COUNT; port++) + { +#if defined(SOC_SERIES_R9A07G0) + res = R_GMAC_GetLinkStatus(&g_ether0_ctrl, port, &port_status); +#else + res = R_ETHER_PHY_LinkStatusGet(&g_ether_phy0_ctrl); +#endif + if (FSP_SUCCESS != res) + { + /* An error has occurred */ + LOG_E("PHY_LinkStatus get failed!, res = %d", res); + break; + } - if(res == FSP_ERR_ETHER_PHY_ERROR_LINK) - { - LOG_I("link down"); - eth_device_linkchange(&ra6m3_eth_device.parent, RT_FALSE); - return; + /* Set link up */ + g_link_status |= (uint8_t)(1U << port); + } + if (FSP_SUCCESS == res) + { + /* Set changed link status */ + g_link_change = previous_link_status ^ g_link_status; + } } - if (phy_speed != phy_speed_new) + for (port = 0; port < PING_PORT_COUNT; port++) { - phy_speed = phy_speed_new; - if (phy_speed != ETHER_PHY_LINK_SPEED_NO_LINK) + port_bit = (uint8_t)(1U << port); + + if (g_link_change & port_bit) { - LOG_D("link up"); - if (phy_speed == ETHER_PHY_LINK_SPEED_100H || phy_speed == ETHER_PHY_LINK_SPEED_100F) - { - LOG_D("100Mbps"); - } - else - { - LOG_D("10Mbps"); - } + /* Link status changed */ + g_link_change &= (uint8_t)(~port_bit); // change bit clear - if (phy_speed == ETHER_PHY_LINK_SPEED_100F || phy_speed == ETHER_PHY_LINK_SPEED_10F) + if (g_link_status & port_bit) { - LOG_D("full-duplex"); + /* Changed to Link-up */ + eth_device_linkchange(&ra_eth_device.parent, RT_TRUE); + LOG_I("link up"); } else { - LOG_D("half-duplex"); + /* Changed to Link-down */ + eth_device_linkchange(&ra_eth_device.parent, RT_FALSE); + LOG_I("link down"); } - - /* send link up. */ - LOG_I("link up"); - eth_device_linkchange(&ra6m3_eth_device.parent, RT_TRUE); - } - else - { - LOG_D("link down"); - eth_device_linkchange(&ra6m3_eth_device.parent, RT_FALSE); } } + + previous_link_status = g_link_status; } -void user_ether0_callback(ether_callback_args_t * p_args) +void user_ether0_callback(ether_callback_args_t *p_args) { - rt_err_t result; - result = eth_device_ready(&(ra6m3_eth_device.parent)); + rt_interrupt_enter(); + + switch (p_args->event) + { + case ETHER_EVENT_LINK_ON: ///< Link up detection event/ + g_link_status |= (uint8_t)p_args->status_ecsr; ///< status up + g_link_change |= (uint8_t)p_args->status_ecsr; ///< change bit set + break; + + case ETHER_EVENT_LINK_OFF: ///< Link down detection event + g_link_status &= (uint8_t)(~p_args->status_ecsr); ///< status down + g_link_change |= (uint8_t)p_args->status_ecsr; ///< change bit set + break; + + case ETHER_EVENT_WAKEON_LAN: ///< Magic packet detection event + /* If EDMAC FR (Frame Receive Event) or FDE (Receive Descriptor Empty Event) + * interrupt occurs, send rx mailbox. */ + case ETHER_EVENT_INTERRUPT: ///< BSD Interrupt event + { + rt_err_t result; + result = eth_device_ready(&(ra_eth_device.parent)); if (result != RT_EOK) rt_kprintf("RX err =%d\n", result); + break; + } + + default: + break; + } + + rt_interrupt_leave(); } /* Register the EMAC device */ -static int rt_hw_ra6m3_eth_init(void) +static int rt_hw_ra_eth_init(void) { rt_err_t state = RT_EOK; @@ -382,21 +409,21 @@ static int rt_hw_ra6m3_eth_init(void) goto __exit; } - ra6m3_eth_device.parent.parent.init = NULL; - ra6m3_eth_device.parent.parent.open = rt_ra6m3_eth_open; - ra6m3_eth_device.parent.parent.close = rt_ra6m3_eth_close; - ra6m3_eth_device.parent.parent.read = rt_ra6m3_eth_read; - ra6m3_eth_device.parent.parent.write = rt_ra6m3_eth_write; - ra6m3_eth_device.parent.parent.control = rt_ra6m3_eth_control; - ra6m3_eth_device.parent.parent.user_data = RT_NULL; + ra_eth_device.parent.parent.init = NULL; + ra_eth_device.parent.parent.open = rt_ra_eth_open; + ra_eth_device.parent.parent.close = rt_ra_eth_close; + ra_eth_device.parent.parent.read = rt_ra_eth_read; + ra_eth_device.parent.parent.write = rt_ra_eth_write; + ra_eth_device.parent.parent.control = rt_ra_eth_control; + ra_eth_device.parent.parent.user_data = RT_NULL; - ra6m3_eth_device.parent.eth_rx = rt_ra6m3_eth_rx; - ra6m3_eth_device.parent.eth_tx = rt_ra6m3_eth_tx; + ra_eth_device.parent.eth_rx = rt_ra_eth_rx; + ra_eth_device.parent.eth_tx = rt_ra_eth_tx; - rt_ra6m3_eth_init(); + rt_ra_eth_init(); /* register eth device */ - state = eth_device_init(&(ra6m3_eth_device.parent), "e0"); + state = eth_device_init(&(ra_eth_device.parent), "e0"); if (RT_EOK == state) { LOG_D("emac device init success"); @@ -408,9 +435,9 @@ static int rt_hw_ra6m3_eth_init(void) goto __exit; } - ra6m3_eth_device.poll_link_timer = rt_timer_create("phylnk", (void (*)(void*))phy_linkchange, - NULL, RT_TICK_PER_SECOND, RT_TIMER_FLAG_PERIODIC); - if (!ra6m3_eth_device.poll_link_timer || rt_timer_start(ra6m3_eth_device.poll_link_timer) != RT_EOK) + ra_eth_device.poll_link_timer = rt_timer_create("phylnk", (void (*)(void *))phy_linkchange, + NULL, RT_TICK_PER_SECOND, RT_TIMER_FLAG_PERIODIC); + if (!ra_eth_device.poll_link_timer || rt_timer_start(ra_eth_device.poll_link_timer) != RT_EOK) { LOG_E("Start link change detection timer failed"); } @@ -426,9 +453,8 @@ static int rt_hw_ra6m3_eth_init(void) { rt_free(Tx_Buff); } - } return state; } -INIT_DEVICE_EXPORT(rt_hw_ra6m3_eth_init); +INIT_DEVICE_EXPORT(rt_hw_ra_eth_init); diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_eth.h b/bsp/renesas/libraries/HAL_Drivers/drv_eth.h index 9ea3dd58f83..d54009eddfc 100644 --- a/bsp/renesas/libraries/HAL_Drivers/drv_eth.h +++ b/bsp/renesas/libraries/HAL_Drivers/drv_eth.h @@ -1,12 +1,12 @@ /* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2018-12-25 zylx first version - */ +* Copyright (c) 2006-2021, RT-Thread Development Team +* +* SPDX-License-Identifier: Apache-2.0 +* +* Change Logs: +* Date Author Notes +* 2018-12-25 zylx first version +*/ #ifndef __DRV_ETH_H__ #define __DRV_ETH_H__ @@ -103,4 +103,8 @@ #define PHY_Status_FULL_DUPLEX(sr) ((sr) & PHY_FULL_DUPLEX_MASK) #endif /* PHY_USING_LAN8742A */ +#define PHY_LINK (1 << 0) +#define PHY_100M (1 << 1) +#define PING_PORT_COUNT (3) ///< Count of port + #endif /* __DRV_ETH_H__ */ diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_gpio.c b/bsp/renesas/libraries/HAL_Drivers/drv_gpio.c index 374a0a6d4df..c5022bf5219 100644 --- a/bsp/renesas/libraries/HAL_Drivers/drv_gpio.c +++ b/bsp/renesas/libraries/HAL_Drivers/drv_gpio.c @@ -45,67 +45,67 @@ static void ra_irq_tab_init(void) static void ra_pin_map_init(void) { -#ifdef VECTOR_NUMBER_ICU_IRQ0 +#if defined(VECTOR_NUMBER_ICU_IRQ0) || (VECTOR_NUMBER_IRQ0) pin_irq_map[0].irq_ctrl = &g_external_irq0_ctrl; pin_irq_map[0].irq_cfg = &g_external_irq0_cfg; #endif -#ifdef VECTOR_NUMBER_ICU_IRQ1 +#if defined(VECTOR_NUMBER_ICU_IRQ1) || (VECTOR_NUMBER_IRQ1) pin_irq_map[1].irq_ctrl = &g_external_irq1_ctrl; pin_irq_map[1].irq_cfg = &g_external_irq1_cfg; #endif -#ifdef VECTOR_NUMBER_ICU_IRQ2 +#if defined(VECTOR_NUMBER_ICU_IRQ2) || (VECTOR_NUMBER_IRQ2) pin_irq_map[2].irq_ctrl = &g_external_irq2_ctrl; pin_irq_map[2].irq_cfg = &g_external_irq2_cfg; #endif -#ifdef VECTOR_NUMBER_ICU_IRQ3 +#if defined(VECTOR_NUMBER_ICU_IRQ3) || (VECTOR_NUMBER_IRQ3) pin_irq_map[3].irq_ctrl = &g_external_irq3_ctrl; pin_irq_map[3].irq_cfg = &g_external_irq3_cfg; #endif -#ifdef VECTOR_NUMBER_ICU_IRQ4 +#if defined(VECTOR_NUMBER_ICU_IRQ4) || (VECTOR_NUMBER_IRQ4) pin_irq_map[4].irq_ctrl = &g_external_irq4_ctrl; pin_irq_map[4].irq_cfg = &g_external_irq4_cfg; #endif -#ifdef VECTOR_NUMBER_ICU_IRQ5 +#if defined(VECTOR_NUMBER_ICU_IRQ5) || (VECTOR_NUMBER_IRQ5) pin_irq_map[5].irq_ctrl = &g_external_irq5_ctrl; pin_irq_map[5].irq_cfg = &g_external_irq5_cfg; #endif -#ifdef VECTOR_NUMBER_ICU_IRQ6 +#if defined(VECTOR_NUMBER_ICU_IRQ6) || (VECTOR_NUMBER_IRQ6) pin_irq_map[6].irq_ctrl = &g_external_irq6_ctrl; pin_irq_map[6].irq_cfg = &g_external_irq6_cfg; #endif -#ifdef VECTOR_NUMBER_ICU_IRQ7 +#if defined(VECTOR_NUMBER_ICU_IRQ7) || (VECTOR_NUMBER_IRQ7) pin_irq_map[7].irq_ctrl = &g_external_irq7_ctrl; pin_irq_map[7].irq_cfg = &g_external_irq7_cfg; #endif -#ifdef VECTOR_NUMBER_ICU_IRQ8 +#if defined(VECTOR_NUMBER_ICU_IRQ8) || (VECTOR_NUMBER_IRQ8) pin_irq_map[8].irq_ctrl = &g_external_irq8_ctrl; pin_irq_map[8].irq_cfg = &g_external_irq8_cfg; #endif -#ifdef VECTOR_NUMBER_ICU_IRQ9 +#if defined(VECTOR_NUMBER_ICU_IRQ9) || (VECTOR_NUMBER_IRQ9) pin_irq_map[9].irq_ctrl = &g_external_irq9_ctrl; pin_irq_map[9].irq_cfg = &g_external_irq9_cfg; #endif -#ifdef VECTOR_NUMBER_ICU_IRQ10 +#if defined(VECTOR_NUMBER_ICU_IRQ10) || (VECTOR_NUMBER_IRQ10) pin_irq_map[10].irq_ctrl = &g_external_irq10_ctrl; pin_irq_map[10].irq_cfg = &g_external_irq10_cfg; #endif -#ifdef VECTOR_NUMBER_ICU_IRQ11 +#if defined(VECTOR_NUMBER_ICU_IRQ11) || (VECTOR_NUMBER_IRQ11) pin_irq_map[11].irq_ctrl = &g_external_irq11_ctrl; pin_irq_map[11].irq_cfg = &g_external_irq11_cfg; #endif -#ifdef VECTOR_NUMBER_ICU_IRQ12 +#if defined(VECTOR_NUMBER_ICU_IRQ12) || (VECTOR_NUMBER_IRQ12) pin_irq_map[12].irq_ctrl = &g_external_irq12_ctrl; pin_irq_map[12].irq_cfg = &g_external_irq12_cfg; #endif -#ifdef VECTOR_NUMBER_ICU_IRQ13 +#if defined(VECTOR_NUMBER_ICU_IRQ13) || (VECTOR_NUMBER_IRQ13) pin_irq_map[13].irq_ctrl = &g_external_irq13_ctrl; pin_irq_map[13].irq_cfg = &g_external_irq13_cfg; #endif -#ifdef VECTOR_NUMBER_ICU_IRQ14 +#if defined(VECTOR_NUMBER_ICU_IRQ14) || (VECTOR_NUMBER_IRQ014) pin_irq_map[14].irq_ctrl = &g_external_irq14_ctrl; pin_irq_map[14].irq_cfg = &g_external_irq14_cfg; #endif -#ifdef VECTOR_NUMBER_ICU_IRQ15 +#if defined(VECTOR_NUMBER_ICU_IRQ15) || (VECTOR_NUMBER_IRQ015) pin_irq_map[15].irq_ctrl = &g_external_irq15_ctrl; pin_irq_map[15].irq_cfg = &g_external_irq15_cfg; #endif diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_hwtimer.c b/bsp/renesas/libraries/HAL_Drivers/drv_hwtimer.c index dfe733655f5..e47e7ff90f0 100644 --- a/bsp/renesas/libraries/HAL_Drivers/drv_hwtimer.c +++ b/bsp/renesas/libraries/HAL_Drivers/drv_hwtimer.c @@ -29,7 +29,7 @@ static struct ra_hwtimer ra_hwtimer_obj[BSP_TIMERS_NUM] = const rt_uint32_t PLCKD_FREQ_PRESCALER[PLCKD_PRESCALER_MAX_SELECT] = { -#ifdef SOC_SERIES_R7FA6M3 +#if defined(SOC_SERIES_R7FA6M3) PLCKD_PRESCALER_120M, PLCKD_PRESCALER_60M, PLCKD_PRESCALER_30M, @@ -37,6 +37,14 @@ const rt_uint32_t PLCKD_FREQ_PRESCALER[PLCKD_PRESCALER_MAX_SELECT] = PLCKD_PRESCALER_7_5M, PLCKD_PRESCALER_3_75M, PLCKD_PRESCALER_1_875M, +#elif defined(SOC_SERIES_R9A07G0) + PLCKD_PRESCALER_100M, + PLCKD_PRESCALER_50M, + PLCKD_PRESCALER_25M, + PLCKD_PRESCALER_12_5M, + PLCKD_PRESCALER_6_25M, + PLCKD_PRESCALER_3_125M, + PLCKD_PRESCALER_1_5625M #endif }; diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_i2c.c b/bsp/renesas/libraries/HAL_Drivers/drv_i2c.c index 7b452108b84..6148d70495a 100644 --- a/bsp/renesas/libraries/HAL_Drivers/drv_i2c.c +++ b/bsp/renesas/libraries/HAL_Drivers/drv_i2c.c @@ -22,11 +22,19 @@ #include -#define RA_SCI_EVENT_ABORTED 1 -#define RA_SCI_EVENT_RX_COMPLETE 2 -#define RA_SCI_EVENT_TX_COMPLETE 4 -#define RA_SCI_EVENT_ERROR 8 -#define RA_SCI_EVENT_ALL 15 +#ifndef BIT + #define BIT(idx) (1ul << (idx)) +#endif + +#ifndef BITS + #define BITS(b,e) ((((uint32_t)-1)<<(b))&(((uint32_t)-1)>>(31-(e)))) +#endif + +#define RA_SCI_EVENT_ABORTED BIT(0) +#define RA_SCI_EVENT_RX_COMPLETE BIT(1) +#define RA_SCI_EVENT_TX_COMPLETE BIT(2) +#define RA_SCI_EVENT_ERROR BIT(3) +#define RA_SCI_EVENT_ALL BITS(0,3) struct ra_i2c_handle { diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_rtc.c b/bsp/renesas/libraries/HAL_Drivers/drv_rtc.c index 2815b216b62..5d03c7f5d17 100644 --- a/bsp/renesas/libraries/HAL_Drivers/drv_rtc.c +++ b/bsp/renesas/libraries/HAL_Drivers/drv_rtc.c @@ -34,6 +34,20 @@ static rt_err_t ra_rtc_init(void) result = -RT_ERROR; } +#if defined(SOC_SERIES_R9A07G0) + rtc_time_t default_set_time = + { + .tm_sec = 0, + .tm_min = 0, + .tm_hour = 0, + .tm_mday = 1, + .tm_wday = 1, + .tm_mon = 1, + .tm_year = 1900, + }; + + R_RTC_CalendarTimeSet(&g_rtc_ctrl, &default_set_time); +#endif return result; } diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_sci.c b/bsp/renesas/libraries/HAL_Drivers/drv_sci.c index 1fec7550d49..9df571d6f90 100644 --- a/bsp/renesas/libraries/HAL_Drivers/drv_sci.c +++ b/bsp/renesas/libraries/HAL_Drivers/drv_sci.c @@ -673,6 +673,8 @@ static rt_err_t ra_hw_spi_configure(struct rt_spi_device *device, /**< config bitrate */ #ifdef R_SCI_B_SPI_H R_SCI_B_SPI_CalculateBitrate(obj->spi_cfg->max_hz, SCI_B_SPI_SOURCE_CLOCK_PCLK, &spi_cfg.clk_div); +#elif defined(SOC_SERIES_R9A07G0) + R_SCI_SPI_CalculateBitrate(obj->spi_cfg->max_hz, SCI_SPI_CLOCK_SOURCE_PCLKM, false); #else R_SCI_SPI_CalculateBitrate(obj->spi_cfg->max_hz, &spi_cfg->clk_div, false); #endif diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_spi.c b/bsp/renesas/libraries/HAL_Drivers/drv_spi.c index ea3816bd255..0b36f8a535c 100644 --- a/bsp/renesas/libraries/HAL_Drivers/drv_spi.c +++ b/bsp/renesas/libraries/HAL_Drivers/drv_spi.c @@ -24,9 +24,10 @@ #endif /* DRV_DEBUG */ #include -#if defined(BSP_USING_SPI0) || defined(BSP_USING_SPI1) +#if defined(BSP_USING_SPI0) || defined(BSP_USING_SPI1) || defined(BSP_USING_SPI2) #define RA_SPI0_EVENT 0x01 #define RA_SPI1_EVENT 0x02 +#define RA_SPI2_EVENT 0x03 static struct rt_event complete_event = {0}; #ifdef SOC_SERIES_R7FA8M85 @@ -46,6 +47,10 @@ static struct ra_spi_handle spi_handle[] = #ifdef BSP_USING_SPI1 {.bus_name = "spi1", .spi_ctrl_t = &g_spi1_ctrl, .spi_cfg_t = &g_spi1_cfg,}, #endif + +#ifdef BSP_USING_SPI2 + {.bus_name = "spi2", .spi_ctrl_t = &g_spi2_ctrl, .spi_cfg_t = &g_spi2_cfg,}, +#endif }; static struct ra_spi spi_config[sizeof(spi_handle) / sizeof(spi_handle[0])] = {0}; @@ -70,6 +75,16 @@ void spi1_callback(spi_callback_args_t *p_args) rt_interrupt_leave(); } +void spi2_callback(spi_callback_args_t *p_args) +{ + rt_interrupt_enter(); + if (SPI_EVENT_TRANSFER_COMPLETE == p_args->event) + { + rt_event_send(&complete_event, RA_SPI2_EVENT); + } + rt_interrupt_leave(); +} + static rt_err_t ra_wait_complete(rt_event_t event, const char bus_name[RT_NAME_MAX]) { rt_uint32_t recved = 0x00; @@ -79,7 +94,7 @@ static rt_err_t ra_wait_complete(rt_event_t event, const char bus_name[RT_NAME_M return rt_event_recv(event, RA_SPI0_EVENT, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, - RT_WAITING_FOREVER, + (rt_int32_t)rt_tick_from_millisecond(200), &recved); } else if (bus_name[3] == '1') @@ -87,7 +102,15 @@ static rt_err_t ra_wait_complete(rt_event_t event, const char bus_name[RT_NAME_M return rt_event_recv(event, RA_SPI1_EVENT, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, - RT_WAITING_FOREVER, + (rt_int32_t)rt_tick_from_millisecond(200), + &recved); + } + else if (bus_name[3] == '2') + { + return rt_event_recv(event, + RA_SPI2_EVENT, + RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, + (rt_int32_t)rt_tick_from_millisecond(200), &recved); } return -RT_EINVAL; @@ -164,6 +187,10 @@ static rt_err_t ra_write_read_message(struct rt_spi_device *device, struct rt_sp LOG_E("%s write and read failed.", spi_dev->ra_spi_handle_t->bus_name); return -RT_ERROR; } +#if defined(SOC_SERIES_R9A07G0) + R_BSP_CacheCleanInvalidateAll(); +#endif + /* Wait for SPI_EVENT_TRANSFER_COMPLETE callback event. */ ra_wait_complete(&complete_event, spi_dev->ra_spi_handle_t->bus_name); return message->length; @@ -193,6 +220,8 @@ static rt_err_t ra_hw_spi_configure(struct rt_spi_device *device, /**< config bitrate */ #ifdef SOC_SERIES_R7FA8M85 R_SPI_B_CalculateBitrate(spi_dev->rt_spi_cfg_t->max_hz, SPI_B_CLOCK_SOURCE_PCLK, &spi_cfg.spck_div); +#elif defined(SOC_SERIES_R9A07G0) + R_SPI_CalculateBitrate(spi_dev->rt_spi_cfg_t->max_hz, SPI_CLOCK_SOURCE_PCLKM, &spi_cfg.spck_div); #else R_SPI_CalculateBitrate(spi_dev->rt_spi_cfg_t->max_hz, &spi_cfg.spck_div); #endif @@ -281,7 +310,7 @@ int ra_hw_spi_init(void) } return RT_EOK; } -INIT_BOARD_EXPORT(ra_hw_spi_init); +INIT_DEVICE_EXPORT(ra_hw_spi_init); #endif /** * Attach the spi device to SPI bus, this function must be used after initialization. diff --git a/bsp/renesas/libraries/HAL_Drivers/drv_usart_v2.c b/bsp/renesas/libraries/HAL_Drivers/drv_usart_v2.c index 26c305007a8..af3cc63725d 100644 --- a/bsp/renesas/libraries/HAL_Drivers/drv_usart_v2.c +++ b/bsp/renesas/libraries/HAL_Drivers/drv_usart_v2.c @@ -7,7 +7,7 @@ * Date Author Notes * 2021-07-29 KyleChan first version * 2023-10-17 Rbb666 add ra8 adapt - * 2024-03-11 Wangyuqiang add rzt2m adapt + * 2024-03-11 Wangyuqiang add rzt/rzn adapt */ #include diff --git a/bsp/renesas/rzn2l_etherkit/.api_xml b/bsp/renesas/rzn2l_etherkit/.api_xml new file mode 100644 index 00000000000..fc9bf0b30e4 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/.api_xml @@ -0,0 +1,2 @@ + + diff --git a/bsp/renesas/rzn2l_etherkit/.config b/bsp/renesas/rzn2l_etherkit/.config new file mode 100644 index 00000000000..169bd92b391 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/.config @@ -0,0 +1,1308 @@ + +# +# RT-Thread Kernel +# + +# +# klibc options +# + +# +# rt_vsnprintf options +# +# CONFIG_RT_KLIBC_USING_LIBC_VSNPRINTF is not set +# CONFIG_RT_KLIBC_USING_VSNPRINTF_LONGLONG is not set +# CONFIG_RT_KLIBC_USING_VSNPRINTF_STANDARD is not set +# end of rt_vsnprintf options + +# +# rt_vsscanf options +# +# CONFIG_RT_KLIBC_USING_LIBC_VSSCANF is not set +# end of rt_vsscanf options + +# +# rt_memset options +# +# CONFIG_RT_KLIBC_USING_USER_MEMSET is not set +# CONFIG_RT_KLIBC_USING_LIBC_MEMSET is not set +# CONFIG_RT_KLIBC_USING_TINY_MEMSET is not set +# end of rt_memset options + +# +# rt_memcpy options +# +# CONFIG_RT_KLIBC_USING_USER_MEMCPY is not set +# CONFIG_RT_KLIBC_USING_LIBC_MEMCPY is not set +# CONFIG_RT_KLIBC_USING_TINY_MEMCPY is not set +# end of rt_memcpy options + +# +# rt_memmove options +# +# CONFIG_RT_KLIBC_USING_USER_MEMMOVE is not set +# CONFIG_RT_KLIBC_USING_LIBC_MEMMOVE is not set +# end of rt_memmove options + +# +# rt_memcmp options +# +# CONFIG_RT_KLIBC_USING_USER_MEMCMP is not set +# CONFIG_RT_KLIBC_USING_LIBC_MEMCMP is not set +# end of rt_memcmp options + +# +# rt_strstr options +# +# CONFIG_RT_KLIBC_USING_USER_STRSTR is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRSTR is not set +# end of rt_strstr options + +# +# rt_strcasecmp options +# +# CONFIG_RT_KLIBC_USING_USER_STRCASECMP is not set +# end of rt_strcasecmp options + +# +# rt_strncpy options +# +# CONFIG_RT_KLIBC_USING_USER_STRNCPY is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRNCPY is not set +# end of rt_strncpy options + +# +# rt_strcpy options +# +# CONFIG_RT_KLIBC_USING_USER_STRCPY is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRCPY is not set +# end of rt_strcpy options + +# +# rt_strncmp options +# +# CONFIG_RT_KLIBC_USING_USER_STRNCMP is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRNCMP is not set +# end of rt_strncmp options + +# +# rt_strcmp options +# +# CONFIG_RT_KLIBC_USING_USER_STRCMP is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRCMP is not set +# end of rt_strcmp options + +# +# rt_strlen options +# +# CONFIG_RT_KLIBC_USING_USER_STRLEN is not set +# CONFIG_RT_KLIBC_USING_LIBC_STRLEN is not set +# end of rt_strlen options + +# +# rt_strnlen options +# +# CONFIG_RT_KLIBC_USING_USER_STRNLEN is not set +# end of rt_strnlen options + +# CONFIG_RT_UTEST_TC_USING_KLIBC is not set +# end of klibc options + +CONFIG_RT_NAME_MAX=16 +# CONFIG_RT_USING_ARCH_DATA_TYPE 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_HOOKLIST is not set +CONFIG_RT_USING_IDLE_HOOK=y +CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 +CONFIG_IDLE_THREAD_STACK_SIZE=1024 +# CONFIG_RT_USING_TIMER_SOFT is not set +# CONFIG_RT_USING_CPU_USAGE_TRACER is not set + +# +# kservice options +# +# CONFIG_RT_USING_TINY_FFS is not set +# end of kservice options + +CONFIG_RT_USING_DEBUG=y +CONFIG_RT_DEBUGING_ASSERT=y +CONFIG_RT_DEBUGING_COLOR=y +CONFIG_RT_DEBUGING_CONTEXT=y +# CONFIG_RT_DEBUGING_AUTO_INIT is not set +# CONFIG_RT_USING_CI_ACTION 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 +# end of Inter-Thread communication + +# +# Memory Management +# +CONFIG_RT_USING_MEMPOOL=y +CONFIG_RT_USING_SMALL_MEM=y +# CONFIG_RT_USING_SLAB is not set +# CONFIG_RT_USING_MEMHEAP is not set +CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y +# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set +# 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 +# end of Memory Management + +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +# CONFIG_RT_USING_THREADSAFE_PRINTF is not set +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=512 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart0" +CONFIG_RT_VER_NUM=0x50200 +# CONFIG_RT_USING_STDC_ATOMIC is not set +CONFIG_RT_BACKTRACE_LEVEL_MAX_NR=32 +# end of RT-Thread Kernel + +CONFIG_RT_USING_HW_ATOMIC=y +CONFIG_ARCH_ARM=y +CONFIG_ARCH_ARM_CORTEX_R=y +CONFIG_ARCH_ARM_CORTEX_R52=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 +# end of DFS: device virtual file system + +# CONFIG_RT_USING_FAL is not set + +# +# Device Drivers +# +# CONFIG_RT_USING_DM is not set +# CONFIG_RT_USING_DEV_BUS is not set +CONFIG_RT_USING_DEVICE_IPC=y +CONFIG_RT_UNAMED_PIPE_NUMBER=64 +CONFIG_RT_USING_SYSTEM_WORKQUEUE=y +CONFIG_RT_SYSTEM_WORKQUEUE_STACKSIZE=2048 +CONFIG_RT_SYSTEM_WORKQUEUE_PRIORITY=23 +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_SERIAL_BYPASS is not set +# CONFIG_RT_USING_CAN 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_PHY_V2 is not set +# 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_PULSE_ENCODER is not set +# CONFIG_RT_USING_INPUT_CAPTURE 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_WIFI is not set +# CONFIG_RT_USING_BLK is not set +# CONFIG_RT_USING_VIRTIO is not set +CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_KTIME is not set +# CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CHERRYUSB is not set +# end of Device Drivers + +# +# 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 is not set +# end of Timezone and Daylight Saving Time +# end of ISO-ANSI C layer + +# +# 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 +# +# end of Interprocess Communication (IPC) +# end of POSIX (Portable Operating System Interface) layer + +# CONFIG_RT_USING_CPLUSPLUS is not set +# end of C/C++ and POSIX layer + +# +# 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 +# end of Network + +# +# Memory protection +# +# CONFIG_RT_USING_MEM_PROTECTION is not set +# CONFIG_RT_USING_HW_STACK_GUARD is not set +# end of Memory protection + +# +# 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 +# end of Utilities + +# CONFIG_RT_USING_VBUS is not set + +# +# Using USB legacy version +# +# CONFIG_RT_USING_USB_HOST is not set +# CONFIG_RT_USING_USB_DEVICE is not set +# end of Using USB legacy version + +# CONFIG_RT_USING_FDT is not set +# end of RT-Thread Components + +# +# RT-Thread Utestcases +# +# CONFIG_RT_USING_UTESTCASES is not set +# end of RT-Thread Utestcases + +# +# RT-Thread online packages +# + +# +# IoT - internet of things +# +# 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 +# CONFIG_PKG_USING_WIFI_HOST_DRIVER is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set +# end of Marvell WiFi + +# +# Wiced WiFi +# +# CONFIG_PKG_USING_WLAN_WICED is not set +# end of Wiced WiFi + +# CONFIG_PKG_USING_RW007 is not set + +# +# CYW43012 WiFi +# +# CONFIG_PKG_USING_WLAN_CYW43012 is not set +# end of CYW43012 WiFi + +# +# BL808 WiFi +# +# CONFIG_PKG_USING_WLAN_BL808 is not set +# end of BL808 WiFi + +# +# CYW43439 WiFi +# +# CONFIG_PKG_USING_WLAN_CYW43439 is not set +# end of CYW43439 WiFi +# end of Wi-Fi + +# 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_IOTSHARP_SDK is not set +# end of IoT Cloud + +# 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_BT_CYW43012 is not set +# CONFIG_PKG_USING_CYW43XX 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 +# CONFIG_PKG_USING_MATTER_ADAPTATION_LAYER is not set +# CONFIG_PKG_USING_LHC_MODBUS is not set +# CONFIG_PKG_USING_QMODBUS is not set +# CONFIG_PKG_USING_PNET is not set +# CONFIG_PKG_USING_OPENER is not set +# end of IoT - internet of things + +# +# 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 +# end of security packages + +# +# 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 +# CONFIG_PKG_USING_RYAN_JSON is not set +# end of JSON: JavaScript Object Notation, a lightweight data-interchange format + +# +# XML: Extensible Markup Language +# +# CONFIG_PKG_USING_SIMPLE_XML is not set +# CONFIG_PKG_USING_EZXML is not set +# end of XML: Extensible Markup Language + +# 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 +# end of language packages + +# +# multimedia packages +# + +# +# LVGL: powerful and easy-to-use embedded GUI library +# +# CONFIG_PKG_USING_LVGL is not set +# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set +# end of LVGL: powerful and easy-to-use embedded GUI library + +# +# u8g2: a monochrome graphic library +# +# CONFIG_PKG_USING_U8G2_OFFICIAL is not set +# CONFIG_PKG_USING_U8G2 is not set +# end of u8g2: a monochrome graphic library + +# 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 +# end of multimedia packages + +# +# 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 +# CONFIG_PKG_USING_ZDEBUG is not set +# CONFIG_PKG_USING_RVBACKTRACE is not set +# CONFIG_PKG_USING_HPATCHLITE is not set +# end of tools packages + +# +# system packages +# + +# +# enhanced kernel services +# +# CONFIG_PKG_USING_RT_MEMCPY_CM is not set +# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set +# end of enhanced kernel services + +# CONFIG_PKG_USING_AUNITY 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 +# end of acceleration: Assembly language or algorithmic acceleration packages + +# +# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard +# +# CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_CORE is not set +# CONFIG_PKG_USING_CMSIS_DSP is not set +# CONFIG_PKG_USING_CMSIS_NN is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set +# CONFIG_PKG_USING_CMSIS_RTOS2 is not set +# end of CMSIS: ARM Cortex-M Microcontroller Software Interface Standard + +# +# 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 +# end of Micrium: Micrium software products porting for RT-Thread + +# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set +# CONFIG_PKG_USING_LITEOS_SDK is not set +# CONFIG_PKG_USING_TZ_DATABASE 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_FILEX is not set +# CONFIG_PKG_USING_LEVELX 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_RPMSG_LITE 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 +# CONFIG_PKG_USING_TASK_MSG_BUS is not set +# CONFIG_PKG_USING_UART_FRAMEWORK is not set +# CONFIG_PKG_USING_SFDB is not set +# CONFIG_PKG_USING_RTP is not set +# CONFIG_PKG_USING_REB is not set +# CONFIG_PKG_USING_RMP is not set +# CONFIG_PKG_USING_R_RHEALSTONE is not set +# CONFIG_PKG_USING_HEARTBEAT is not set +# end of system packages + +# +# peripheral libraries and drivers +# + +# +# HAL & SDK Drivers +# + +# +# STM32 HAL & SDK Drivers +# +# CONFIG_PKG_USING_STM32F4_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32F4_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32L4_HAL_DRIVER is not set +# CONFIG_PKG_USING_STM32L4_CMSIS_DRIVER is not set +# CONFIG_PKG_USING_STM32WB55_SDK is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# end of STM32 HAL & SDK Drivers + +# +# Infineon HAL Packages +# +# CONFIG_PKG_USING_INFINEON_CAT1CM0P is not set +# CONFIG_PKG_USING_INFINEON_CMSIS is not set +# CONFIG_PKG_USING_INFINEON_CORE_LIB is not set +# CONFIG_PKG_USING_INFINEON_MTB_HAL_CAT1 is not set +# CONFIG_PKG_USING_INFINEON_MTB_PDL_CAT1 is not set +# CONFIG_PKG_USING_INFINEON_RETARGET_IO is not set +# CONFIG_PKG_USING_INFINEON_CAPSENSE is not set +# CONFIG_PKG_USING_INFINEON_CSDIDAC is not set +# CONFIG_PKG_USING_INFINEON_SERIAL_FLASH is not set +# CONFIG_PKG_USING_INFINEON_USBDEV is not set +# end of Infineon HAL Packages + +# CONFIG_PKG_USING_BLUETRUM_SDK is not set +# CONFIG_PKG_USING_EMBARC_BSP is not set +# CONFIG_PKG_USING_ESP_IDF is not set + +# +# Kendryte SDK +# +# CONFIG_PKG_USING_K210_SDK is not set +# CONFIG_PKG_USING_KENDRYTE_SDK is not set +# end of Kendryte SDK + +# CONFIG_PKG_USING_NRF5X_SDK is not set +# CONFIG_PKG_USING_NRFX is not set +# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set +# end of HAL & SDK 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_MLX90394 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_SHT4X 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 +# end of sensors drivers + +# +# 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_CST812T is not set +# end of touch drivers + +# CONFIG_PKG_USING_REALTEK_AMEBA 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_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_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_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_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_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_ST7789 is not set +# CONFIG_PKG_USING_VS1003 is not set +# CONFIG_PKG_USING_X9555 is not set +# CONFIG_PKG_USING_SYSTEM_RUN_LED is not set +# CONFIG_PKG_USING_BT_MX01 is not set +# CONFIG_PKG_USING_RGPOWER is not set +# CONFIG_PKG_USING_BT_MX02 is not set +# CONFIG_PKG_USING_GC9A01 is not set +# CONFIG_PKG_USING_IK485 is not set +# CONFIG_PKG_USING_SPI_TOOLS is not set +# end of peripheral libraries and drivers + +# +# 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 +# CONFIG_PKG_USING_R_TINYMAIX is not set +# end of AI packages + +# +# Signal Processing and Control Algorithm Packages +# +# CONFIG_PKG_USING_APID is not set +# 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 +# end of Signal Processing and Control Algorithm Packages + +# +# miscellaneous packages +# + +# +# project laboratory +# +# end of 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 +# end of samples: kernel and components samples + +# +# 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 +# end of entertainment: terminal games and other interesting software packages + +# 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_RALARAM 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 +# end of miscellaneous packages + +# +# 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_SKETCH_LOADER_DEMO is not set +# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set +# CONFIG_PKG_USING_ARDUINO_RTDUINO_SENSORFUSION_SHIELD is not set +# CONFIG_PKG_USING_ARDUINO_NINEINONE_SENSOR_SHIELD is not set +# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set +# CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set +# end of Projects and Demos + +# +# Sensors +# +# CONFIG_PKG_USING_ARDUINO_SENSOR_DEVICE_DRIVERS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSORLAB 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_VL6180X is not set +# CONFIG_PKG_USING_ARDUINO_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_ARDUINO_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_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_ARDUINO_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_ARDUINO_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 +# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set +# CONFIG_PKG_USING_ARDUINO_JARZEBSKI_MPU6050 is not set +# end of Sensors + +# +# Display +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_U8G2 is not set +# CONFIG_PKG_USING_ARDUINO_TFT_ESPI 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 +# end of Display + +# +# Timing +# +# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set +# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set +# CONFIG_PKG_USING_ARDUINO_TICKER is not set +# CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set +# end of Timing + +# +# Data Processing +# +# CONFIG_PKG_USING_ARDUINO_KALMANFILTER is not set +# CONFIG_PKG_USING_ARDUINO_ARDUINOJSON is not set +# CONFIG_PKG_USING_ARDUINO_TENSORFLOW_LITE_MICRO is not set +# CONFIG_PKG_USING_ARDUINO_RUNNINGMEDIAN is not set +# end of Data Processing + +# +# Data Storage +# + +# +# Communication +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PN532 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI4713 is not set +# end of Communication + +# +# Device Control +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8574 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCA9685 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 +# CONFIG_PKG_USING_ARDUINO_SEEED_PCF85063TP is not set +# end of Device Control + +# +# Other +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set +# end of Other + +# +# 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 +# end of Signal IO + +# +# Uncategorized +# +# end of Arduino libraries +# end of RT-Thread online packages + +CONFIG_SOC_FAMILY_RENESAS_RZ=y +CONFIG_SOC_SERIES_R9A07G0=y + +# +# Hardware Drivers Config +# +CONFIG_SOC_R9A07G084=y + +# +# Onboard Peripheral Drivers +# +# CONFIG_BSP_USING_HYPERRAM is not set +# end of Onboard Peripheral Drivers + +# +# 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_UART0=y +# CONFIG_BSP_UART0_RX_USING_DMA is not set +# CONFIG_BSP_UART0_TX_USING_DMA is not set +CONFIG_BSP_UART0_RX_BUFSIZE=256 +CONFIG_BSP_UART0_TX_BUFSIZE=0 +# CONFIG_BSP_USING_UART5 is not set +# CONFIG_BSP_USING_ADC is not set +# CONFIG_BSP_USING_CANFD is not set +# CONFIG_BSP_USING_SCI is not set +# CONFIG_BSP_USING_I2C is not set +# CONFIG_BSP_USING_SPI is not set +# CONFIG_BSP_USING_TIM is not set +# CONFIG_BSP_USING_PWM is not set +# CONFIG_BSP_USING_ETH is not set +# end of On-chip Peripheral Drivers + +# +# Board extended module Drivers +# +# CONFIG_BSP_USING_RW007 is not set +# end of Board extended module Drivers +# end of Hardware Drivers Config diff --git a/bsp/renesas/rzn2l_etherkit/.cproject b/bsp/renesas/rzn2l_etherkit/.cproject new file mode 100644 index 00000000000..425953cea05 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/.cproject @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/rzn2l_etherkit/.gitignore b/bsp/renesas/rzn2l_etherkit/.gitignore new file mode 100644 index 00000000000..4a339a10278 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/.gitignore @@ -0,0 +1,14 @@ +/RTE +/Listings +/Objects +/Debug +/build +/makefile.targets +/rtconfig.pyc +/rt-thread +/libraries +/project.custom_argvars +/.vscode +/__pycache +/settings +/rtconfig_preinc.h \ No newline at end of file diff --git a/bsp/renesas/rzn2l_etherkit/.project b/bsp/renesas/rzn2l_etherkit/.project new file mode 100644 index 00000000000..2fca752ff54 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/.project @@ -0,0 +1,28 @@ + + + project + + + + + + 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/rzn2l_etherkit/.secure_azone b/bsp/renesas/rzn2l_etherkit/.secure_azone new file mode 100644 index 00000000000..585ba89ca37 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/.secure_azone @@ -0,0 +1,4 @@ + + + + diff --git a/bsp/renesas/rzn2l_etherkit/.secure_xml b/bsp/renesas/rzn2l_etherkit/.secure_xml new file mode 100644 index 00000000000..c0395a6fcf1 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/.secure_xml @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/rzn2l_etherkit/.settings/ilg.gnumcueclipse.managedbuild.cross.arm.prefs b/bsp/renesas/rzn2l_etherkit/.settings/ilg.gnumcueclipse.managedbuild.cross.arm.prefs new file mode 100644 index 00000000000..7dbfc8a7d95 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/.settings/ilg.gnumcueclipse.managedbuild.cross.arm.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +toolchain.path.1287942917=${toolchain_install_path}/ARM/GNU_Tools_for_ARM_Embedded_Processors/10.2.1/bin diff --git a/bsp/renesas/rzn2l_etherkit/.settings/language.settings.xml b/bsp/renesas/rzn2l_etherkit/.settings/language.settings.xml new file mode 100644 index 00000000000..ea1ae656ed7 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/.settings/language.settings.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bsp/renesas/rzn2l_etherkit/.settings/local_temp_storage.prefs b/bsp/renesas/rzn2l_etherkit/.settings/local_temp_storage.prefs new file mode 100644 index 00000000000..6c3ab86d840 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/.settings/local_temp_storage.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +temp.toolchain.exec.path=D\:\\manufacture_apps\\RT-ThreadStudio\\repo\\Extract\\ToolChain_Support_Packages\\ARM\\GNU_Tools_for_ARM_Embedded_Processors\\10.2.1/bin diff --git a/bsp/renesas/rzn2l_etherkit/.settings/org.eclipse.core.runtime.prefs b/bsp/renesas/rzn2l_etherkit/.settings/org.eclipse.core.runtime.prefs new file mode 100644 index 00000000000..9f1acfcfba2 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/.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/rzn2l_etherkit/.settings/projcfg.ini b/bsp/renesas/rzn2l_etherkit/.settings/projcfg.ini new file mode 100644 index 00000000000..2afe6768b0e --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/.settings/projcfg.ini @@ -0,0 +1,19 @@ +#RT-Thread Studio Project Configuration +#Tue Feb 11 17:22:54 CST 2025 +cfg_version=v3.0 +board_name=rzn2l_etherkit +example_name= +hardware_adapter=J-Link +board_base_nano_proj=false +project_type=rt-thread +chip_name=R9A07G084M04 +selected_rtt_version=latest +bsp_version=1.0.0 +os_branch=master +project_base_rtt_bsp=true +output_project_path=D\:\\Desktop\\Github_ws\\rt-thread\\bsp\\renesas +is_base_example_project=false +is_use_scons_build=true +project_name=etherkit_blink_led +os_version=latest +bsp_path= diff --git a/bsp/renesas/rzn2l_etherkit/.settings/project.JLink.Debug.rttlaunch b/bsp/renesas/rzn2l_etherkit/.settings/project.JLink.Debug.rttlaunch new file mode 100644 index 00000000000..db20f2562b2 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/.settings/project.JLink.Debug.rttlaunch @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/rzn2l_etherkit/.settings/standalone.prefs b/bsp/renesas/rzn2l_etherkit/.settings/standalone.prefs new file mode 100644 index 00000000000..1f9ccf199ad --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/.settings/standalone.prefs @@ -0,0 +1,26 @@ +#Wed Nov 27 16:37:16 CST 2024 +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#Board\#\#rzn2l_rsk\#\#xspi0_x1_boot\#\#2.0.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#Board\#\#rzn2l_rsk\#\#xspi0_x1_boot\#\#2.0.0/all=907937621,script/fsp_xspi0_boot.icf|3822962514,rzn/board/rzn2l_rsk/board_leds.c|358444977,rzn/board/rzn2l_rsk/board_init.c|2067006575,rzn/board/rzn2l_rsk/board.h|736691883,rzn/board/rzn2l_rsk/board_ethernet_phy.h|1631979823,rzn/board/rzn2l_rsk/board_leds.h|1430483072,rzn/board/rzn2l_rsk/board_init.h +com.renesas.cdt.ddsc.contentgen.options/options/suppresswarningspaths= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_ioport\#\#\#\#2.0.0/libraries= +com.renesas.cdt.ddsc.threads.configurator/collapse/module.driver.uart_on_sci_uart.86814920=false +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#Common\#\#all\#\#fsp_common\#\#\#\#2.0.0/all=908052335,rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c|3563504244,rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c|870156648,rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/system_core.c|368480523,rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/startup_core.c|3243637314,rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h|1280798555,rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h|3352808441,rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/R9A07G084.h|1310386533,rzn/fsp/src/bsp/mcu/all/bsp_io.h|3643995939,rzn/fsp/src/bsp/mcu/all/bsp_cache.h|1033616941,rzn/fsp/src/bsp/mcu/all/bsp_register_protection.h|1572168446,rzn/fsp/src/bsp/mcu/all/bsp_io.c|3001342594,rzn/fsp/src/bsp/mcu/all/bsp_common.h|263477342,rzn/fsp/src/bsp/mcu/all/bsp_reset.h|2534029381,rzn/fsp/src/bsp/mcu/all/bsp_module_stop.h|4193244082,rzn/fsp/src/bsp/mcu/all/bsp_irq.h|2136575248,rzn/fsp/src/bsp/mcu/all/bsp_tfu.h|2170977041,rzn/fsp/src/bsp/mcu/all/bsp_delay.c|526389185,rzn/fsp/src/bsp/mcu/all/bsp_compiler_support.h|8162287,rzn/fsp/src/bsp/mcu/all/bsp_clocks.h|3045644015,rzn/fsp/src/bsp/mcu/all/bsp_common.c|1908923075,rzn/fsp/src/bsp/mcu/all/bsp_clocks.c|1289851302,rzn/fsp/src/bsp/mcu/all/bsp_irq.c|358242822,rzn/fsp/src/bsp/mcu/all/bsp_sbrk.c|2321472163,rzn/fsp/src/bsp/mcu/all/bsp_cache.c|225356254,rzn/fsp/src/bsp/mcu/all/bsp_exceptions.h|2518644892,rzn/fsp/src/bsp/mcu/all/bsp_register_protection.c|392613868,rzn/fsp/src/bsp/mcu/all/bsp_reset.c|2238656401,rzn/fsp/src/bsp/mcu/all/bsp_mcu_api.h|1611830052,rzn/fsp/src/bsp/mcu/all/bsp_delay.h|2060190483,rzn/fsp/src/bsp/mcu/all/cr/bsp_cache_core.h|1543064539,rzn/fsp/src/bsp/mcu/all/cr/bsp_delay_core.h|3717942516,rzn/fsp/src/bsp/mcu/all/cr/bsp_cache_core.c|3396795463,rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.c|2195931215,rzn/fsp/src/bsp/mcu/all/cr/bsp_delay_core.c|1126344352,rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.h|1926319940,rzn/fsp/inc/fsp_features.h|2508067197,rzn/fsp/inc/fsp_version.h|3571247719,rzn/fsp/inc/fsp_common_api.h|3347087544,rzn/fsp/inc/instances/r_ioport.h|1765016794,rzn/fsp/inc/api/bsp_api.h|250199021,rzn/fsp/inc/api/r_ioport_api.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#rzn2l\#\#fsp\#\#\#\#2.0.0/libraries= +com.renesas.cdt.ddsc.project.standalone.projectgenerationoptions/isCpp=false +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#all\#\#Memory\#\#\#\#2.0.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#all\#\#Memory\#\#\#\#2.0.0/all= +com.renesas.cdt.ddsc.packs.componentfiles/Arm\#\#CMSIS\#\#CMSIS5\#\#Core\#\#\#\#5.7.0+renesas.1.fsp.2.0.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#Common\#\#all\#\#fsp_common\#\#\#\#2.0.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_rtc\#\#\#\#2.0.0/all=3551601681,rzn/fsp/src/r_rtc/r_rtc.c|3948337697,rzn/fsp/inc/instances/r_rtc.h|3795688877,rzn/fsp/inc/api/r_rtc_api.h +com.renesas.cdt.ddsc.content/com.renesas.cdt.ddsc.content.defaultlinkerscript=script/fsp_xspi0_boot.icf +com.renesas.cdt.ddsc.packs.componentfiles/Arm\#\#CMSIS\#\#CMSIS5\#\#Core\#\#\#\#5.7.0+renesas.1.fsp.2.0.0/all=1441545198,rzn/arm/CMSIS_5/LICENSE.txt|4247764709,rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_gcc.h|1135074086,rzn/arm/CMSIS_5/CMSIS/Core_R/Include/core_cr52.h|510668081,rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_iccarm.h|4245531541,rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_compiler.h|1887099957,rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_cp15.h|3334069041,rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_version.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#rzn2l\#\#device\#\#R9A07G084M04GBG\#\#2.0.0/all= +com.renesas.cdt.ddsc.settingseditor/com.renesas.cdt.ddsc.settingseditor.active_page=SWPConfigurator +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#rzn2l\#\#device\#\#R9A07G084M04GBG\#\#2.0.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_sci_uart\#\#\#\#2.0.0/all=2921827146,rzn/fsp/src/r_sci_uart/r_sci_uart.c|4093801030,rzn/fsp/inc/instances/r_sci_uart.h|1119704027,rzn/fsp/inc/api/r_uart_api.h|3586794436,rzn/fsp/inc/api/r_transfer_api.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#rzn2l\#\#device\#\#\#\#2.0.0/all=3243637314,rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_rtc\#\#\#\#2.0.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#rzn2l\#\#device\#\#\#\#2.0.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#BSP\#\#rzn2l\#\#fsp\#\#\#\#2.0.0/all=2989202485,rzn/fsp/src/bsp/mcu/rzn2l/bsp_loader_param.c|1967641730,rzn/fsp/src/bsp/mcu/rzn2l/bsp_feature.h|1508541487,rzn/fsp/src/bsp/mcu/rzn2l/bsp_elc.h|1088535767,rzn/fsp/src/bsp/mcu/rzn2l/bsp_irq_sense.c|1458388275,rzn/fsp/src/bsp/mcu/rzn2l/bsp_override.h|617637586,rzn/fsp/src/bsp/mcu/rzn2l/bsp_mcu_info.h +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_sci_uart\#\#\#\#2.0.0/libraries= +com.renesas.cdt.ddsc.packs.componentfiles/Renesas\#\#HAL\ Drivers\#\#all\#\#r_ioport\#\#\#\#2.0.0/all=615913359,rzn/fsp/src/r_ioport/r_ioport.c|3347087544,rzn/fsp/inc/instances/r_ioport.h|250199021,rzn/fsp/inc/api/r_ioport_api.h diff --git a/bsp/renesas/rzn2l_etherkit/Kconfig b/bsp/renesas/rzn2l_etherkit/Kconfig new file mode 100644 index 00000000000..896f127335a --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/Kconfig @@ -0,0 +1,17 @@ +mainmenu "RT-Thread Configuration" + +BSP_DIR := . + +RTT_DIR := ../../.. + +# you can change the RTT_ROOT default "rt-thread" +# example : default "F:/git_repositories/rt-thread" + +PKGS_DIR := packages + +ENV_DIR := / + +source "$(RTT_DIR)/Kconfig" +osource "$PKGS_DIR/Kconfig" +rsource "../libraries/Kconfig" +source "$(BSP_DIR)/board/Kconfig" diff --git a/bsp/renesas/rzn2l_etherkit/README.md b/bsp/renesas/rzn2l_etherkit/README.md new file mode 100644 index 00000000000..1f8a9fd078d --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/README.md @@ -0,0 +1,170 @@ +# EtherKit Development Board BSP Documentation + +**English** | **[Chinese](./README_zh.md)** + +## Introduction + +This document provides the BSP (Board Support Package) documentation for the RT-Thread EtherKit development board. By following the Quick Start section, developers can quickly get started with this BSP and run RT-Thread on the development board. + +The main contents are as follows: + +- Introduction to the Development Board +- BSP Quick Start Guide + +## Introduction to the Development Board + +The EtherKit development board is based on the Renesas RZ/N2L and is designed to facilitate embedded system application development by offering flexible software package and IDE configurations. + +The front view of the development board is shown below: + +![image-20240314165241884](figures/big.png) + +Key **onboard resources** include: + +- MPU: R9A07G084M04GBG, maximum operating frequency of 400MHz, Arm Cortex®-R52 core, 128KB tightly coupled memory (with ECC), 1.5MB internal RAM (with ECC) +- Debug Interface: Onboard J-Link interface +- Expansion Interface: One PMOD connector + +**More detailed information and tools** + +## Peripheral Support + +This BSP currently supports the following peripherals: + +Here is the translated text in English, keeping the markdown format: + +| **EtherCAT Solution** | **Support Status** | **EtherCAT Solution** | **Support Status** | +| --------------------- | ------------------ | --------------------- | ------------------ | +| EtherCAT_IO | Supported | EtherCAT_FOE | Supported | +| EtherCAT_EOE | Supported | EtherCAT_COE | Supported | +| **PROFINET Solution** | **Support Status** | **Ethernet/IP Solution** | **Support Status** | +| P-Net (Open source evaluation package supporting ProfiNET slave protocol stack) | Supported | EIP | Supported | +| **On-chip Peripherals** | **Support Status** | **Components** | **Support Status** | +| UART | Supported | LWIP | Supported | +| GPIO | Supported | TCP/UDP | Supported | +| HWIMER | Supported | MQTT | Supported | +| IIC | Supported | TFTP | Supported | +| WDT | Supported | Modbus Master/Slave Protocol | Supported | +| RTC | Supported | | | +| ADC | Supported | | | +| DAC | Supported | | | +| SPI | Supported | | | + + +## Usage Instructions + +Usage instructions are divided into two sections: + +- **Quick Start** + + This section is designed for beginners who are new to RT-Thread. By following simple steps, users can run the RT-Thread OS on the development board and observe the experimental results. + +- **Advanced Usage** + + This section is for developers who need to use more of the development board's resources within the RT-Thread OS. By configuring the BSP using the ENV tool, additional onboard resources and advanced features can be enabled. + +### Quick Start + +This BSP currently provides GCC/IAR project support. Below is a guide using the [IAR Embedded Workbench for Arm](https://www.iar.com/products/architectures/arm/iar-embedded-workbench-for-arm/) development environment to run the system. + +**Hardware Connection** + +Connect the development board to the PC via a USB cable. Use the J-Link interface to download and debug the program. + +**Compilation and Download** + +- Navigate to the `bsp` directory and use the command `scons --target=iar` to generate the IAR project. +- Compile: Double-click the `project.eww` file to open the IAR project and compile the program. +- Debug: In the IAR navigation bar, click `Project -> Download and Debug` to download and start debugging. + +**Viewing the Run Results** + +After successfully downloading the program, the system will automatically run and print system information. + +Connect the corresponding serial port of the development board to the PC. Open the relevant serial port (115200-8-1-N) in the terminal tool. After resetting the device, you can view the RT-Thread output. Enter the `help` command to see the list of supported system commands. + +```bash + \ | / +- RT - Thread Operating System + / | \ 5.1.0 build Mar 14 2024 18:26:01 + 2006 - 2024 Copyright by RT-Thread team + +Hello RT-Thread! +================================================== +This is an IAR project in RAM execution mode! +================================================== +msh > help +RT-Thread shell commands: +clear - clear the terminal screen +version - show RT-Thread version information +list - list objects +backtrace - print backtrace of a thread +help - RT-Thread shell help +ps - List threads in the system +free - Show the memory usage in the system +pin - pin [option] + +msh > +``` + +**Application Entry Function** + +The entry function for the application layer is located in **src\hal_entry.c** within `void hal_entry(void)`. User source files can be placed directly in the `src` directory. + +```c +void hal_entry(void) +{ + rt_kprintf("\nHello RT-Thread!\n"); + rt_kprintf("==================================================\n"); + rt_kprintf("This is an IAR project in RAM execution mode!\n"); + rt_kprintf("==================================================\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 Usage + +**Resources and Documentation** + +- [Development Board Official Homepage](https://www.renesas.cn/zh/products/microcontrollers-microprocessors/rz-mpus/rzn2l-integrated-tsn-compliant-3-port-gigabit-ethernet-switch-enables-various-industrial-applications) +- [Development Board Datasheet](https://www.renesas.cn/zh/document/dst/rzn2l-group-datasheet?r=1622651) +- [Development Board Hardware Manual](https://www.renesas.cn/zh/document/mah/rzn2l-group-users-manual-hardware?r=1622651) +- [EtherKit_User_Manual](https://github.com/RT-Thread-Studio/sdk-bsp-rzn2l-etherkit/blob/master/docs/EtherKit_User_Manual.pdf) +- [RZ/N2L MCU Quick Start Guide](https://www.renesas.cn/zh/document/apn/rzt2-rzn2-device-setup-guide-flash-boot-application-note?r=1622651) +- [RZ/N2L Easy Download Guide](https://www.renesas.cn/zh/document/gde/rzn2l-easy-download-guide?r=1622651) +- [Renesas RZ/N2L Group](https://www.renesas.cn/zh/document/fly/renesas-rzn2l-group?r=1622651) + +**FSP Configuration** + +To modify Renesas BSP peripheral configurations or add new peripheral ports, the Renesas [FSP](https://www2.renesas.cn/jp/zh/software-tool/flexible-software-package-fsp#document) configuration tool is required. Please follow the steps outlined below for configuration. For any questions regarding the configuration, please visit the [RT-Thread Community Forum](https://club.rt-thread.org/). + +1. [Download the Flexible Software Package (FSP) | Renesas](https://github.com/renesas/rzn-fsp/releases/download/v2.0.0/setup_rznfsp_v2_0_0_rzsc_v2024-01.1.exe), use FSP version 2.0.0. +2. To add the **"EtherKit Board Support Package"** to FSP, refer to the document [How to Import a BSP](https://www2.renesas.cn/document/ppt/1527171?language=zh&r=1527191). +3. For guidance on configuring peripheral drivers using FSP, refer to the document: [Configuring Peripheral Drivers Using FSP for RA Series](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/RA-series-using-FSP-configure-peripheral-drivers?id=ra-series-using-fsp-configure-peripheral-drivers). + +**ENV Configuration** + +- To learn how to use the ENV tool, refer to the [RT-Thread ENV Tool User Manual](https://www.rt-thread.org/document/site/#/development-tools/env/env). + +By default, this BSP only enables the UART0 functionality. To use more advanced features such as components, software packages, and more, the ENV tool must be used for configuration. + +The steps are as follows: +1. Open the ENV tool in the `bsp` directory. +2. Use the `menuconfig` command to configure the project. Save and exit once the configuration is complete. +3. Run the `pkgs --update` command to update the software packages. +4. Run the `scons --target=iar` command to regenerate the project. + +## Contact Information + +If you have any thoughts or suggestions during usage, please feel free to contact us via the [RT-Thread Community Forum](https://club.rt-thread.org/). + +## Contribute Code + +If you're interested in EtherKit and have some exciting projects you'd like to share, we welcome code contributions. Please refer to [How to Contribute to RT-Thread Code](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/development-guide/github/github). diff --git a/bsp/renesas/rzn2l_etherkit/README_zh.md b/bsp/renesas/rzn2l_etherkit/README_zh.md new file mode 100644 index 00000000000..629b0a61cfb --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/README_zh.md @@ -0,0 +1,166 @@ +# EtherKit 开发板 BSP 说明 + +**中文** | [**English**](./README.md) + +## 简介 + +本文档为 RT-Thread EtherKit 开发板提供的 BSP (板级支持包) 说明。通过阅读快速上手章节开发者可以快速地上手该 BSP,将 RT-Thread 运行在开发板上。 + +主要内容如下: + +- 开发板介绍 +- BSP 快速上手指南 + +## 开发板介绍 + +基于瑞萨 RZ/N2L 开发的 EtherKit 开发板,通过灵活配置软件包和 IDE,对嵌入系统应用程序进行开发。 + +开发板正面外观如下图: + +![image-20240314165241884](figures\big.png) + +该开发板常用 **板载资源** 如下: + +- MPU:R9A07G084M04GBG,最大工作频率 400MHz,Arm Cortex®-R52 内核,紧密耦合内存 128KB(带 ECC),内部 RAM 1.5 MB(带 ECC) +- 调试接口:板载 J-Link 接口 +- 扩展接口:一个 PMOD 连接器 + +**更多详细资料及工具** + +## 外设支持 + +本 BSP 目前对外设的支持情况如下: + +| **EtherCAT方案** | **支持情况** | **EtherCAT方案** | **支持情况** | +| ---------------- | ------------ | ---------------- | ------------ | +| EtherCAT_IO | 支持 | EtherCAT_FOE | 支持 | +| EtherCAT_EOE | 支持 | EtherCAT_COE | 支持 | +| **PROFINET方案** | **支持情况** | **Ethernet/IP方案** | **支持情况** | +| P-Net(支持ProfiNET从站协议栈的开源评估软件包) | 支持 | EIP | 支持 | +| **片上外设** | **支持情况** | **组件** | **支持情况** | +| UART | 支持 | LWIP | 支持 | +| GPIO | 支持 | TCP/UDP | 支持 | +| HWIMER | 支持 | MQTT | 支持 | +| IIC | 支持 | TFTP | 支持 | +| WDT | 支持 | Modbus主从站协议 | 支持 | +| RTC | 支持 | | | +| ADC | 支持 | | | +| DAC | 支持 | | | +| SPI | 支持 | | | + +## 使用说明 + +使用说明分为如下两个章节: + +- 快速上手 + + 本章节是为刚接触 RT-Thread 的新手准备的使用说明,遵循简单的步骤即可将 RT-Thread 操作系统运行在该开发板上,看到实验效果 。 +- 进阶使用 + + 本章节是为需要在 RT-Thread 操作系统上使用更多开发板资源的开发者准备的。通过使用 ENV 工具对 BSP 进行配置,可以开启更多板载资源,实现更多高级功能。 + +### 快速上手 + +本 BSP 目前提供 GCC/IAR 工程。下面以 [IAR Embedded Workbench for Arm](https://www.iar.com/products/architectures/arm/iar-embedded-workbench-for-arm/) 开发环境为例,介绍如何将系统运行起来。 + +**硬件连接** + +使用 USB 数据线连接开发板到 PC,使用 J-link 接口下载和 DEBUG 程序。 + +**编译下载** + +- 进入 bsp 目录下,打开 ENV 使用命令 `scons --target=iar` 生成 IAR工程。 +- 编译:双击 project.eww 文件,打开 IAR 工程,编译程序。 +- 调试:IAR 左上方导航栏点击 `Project->Download and Debug`下载并启动调试。 + +**查看运行结果** + +下载程序成功之后,系统会自动运行并打印系统信息。 + +连接开发板对应串口到 PC , 在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到 RT-Thread 的输出信息。输入 help 命令可查看系统中支持的命令。 + +```bash + \ | / +- RT - Thread Operating System + / | \ 5.1.0 build Mar 14 2024 18:26:01 + 2006 - 2024 Copyright by RT-Thread team + +Hello RT-Thread! +================================================== +This is a iar project which mode is ram execution! +================================================== +msh >help +RT-Thread shell commands: +clear - clear the terminal screen +version - show RT-Thread version information +list - list objects +backtrace - print backtrace of a thread +help - RT-Thread shell help +ps - List threads in the system +free - Show the memory usage in the system +pin - pin [option] + +msh > +``` + +**应用入口函数** + +应用层的入口函数在 **src\hal_entry.c** 中 的 `void hal_entry(void)` 。用户编写的源文件可直接放在 src 目录下。 + +```c +void hal_entry(void) +{ + rt_kprintf("\nHello RT-Thread!\n"); + rt_kprintf("==================================================\n"); + rt_kprintf("This is a iar project which mode is ram execution!\n"); + rt_kprintf("==================================================\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/zh/products/microcontrollers-microprocessors/rz-mpus/rzn2l-integrated-tsn-compliant-3-port-gigabit-ethernet-switch-enables-various-industrial-applications) +- [开发板数据手册](https://www.renesas.cn/zh/document/dst/rzn2l-group-datasheet?r=1622651) +- [开发板硬件手册](https://www.renesas.cn/zh/document/mah/rzn2l-group-users-manual-hardware?r=1622651) +- [EtherKit用户手册](https://github.com/RT-Thread-Studio/sdk-bsp-rzn2l-etherkit/blob/master/docs/EtherKit_User_Manual.pdf) +- [RZ/N2L MCU 快速入门指南](https://www.renesas.cn/zh/document/apn/rzt2-rzn2-device-setup-guide-flash-boot-application-note?r=1622651) +- [RZ/N2L Easy Download Guide](https://www.renesas.cn/zh/document/gde/rzn2l-easy-download-guide?r=1622651) +- [Renesas RZ/N2L Group](https://www.renesas.cn/zh/document/fly/renesas-rzn2l-group?r=1622651) + +**FSP 配置** + +需要修改瑞萨的 BSP 外设配置或添加新的外设端口,需要用到瑞萨的 [FSP](https://www2.renesas.cn/jp/zh/software-tool/flexible-software-package-fsp#document) 配置工具。请务必按照如下步骤完成配置。配置中有任何问题可到[RT-Thread 社区论坛](https://club.rt-thread.org/)中提问。 + +1. [下载灵活配置软件包 (FSP) | Renesas](https://github.com/renesas/rzn-fsp/releases/download/v2.0.0/setup_rznfsp_v2_0_0_rzsc_v2024-01.1.exe),请使用 FSP 2.0.0 版本 +2. 如何将 **”EtherKit板级支持包“**添加到 FSP 中,请参考文档[如何导入板级支持包](https://www2.renesas.cn/document/ppt/1527171?language=zh&r=1527191) +3. 请参考文档:[RA系列使用FSP配置外设驱动](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/make-bsp/renesas-ra/RA系列使用FSP配置外设驱动?id=ra系列使用-fsp-配置外设驱动)。 + +**ENV 配置** + +- 如何使用 ENV 工具:[RT-Thread env 工具用户手册](https://www.rt-thread.org/document/site/#/development-tools/env/env) + +此 BSP 默认只开启了 UART0 的功能,如果需使用更多高级功能例如组件、软件包等,需要利用 ENV 工具进行配置。 + +步骤如下: +1. 在 bsp 下打开 env 工具。 +2. 输入`menuconfig`命令配置工程,配置好之后保存退出。 +3. 输入`pkgs --update`命令更新软件包。 +4. 输入`scons --target=iar` 命令重新生成工程。 + +## 联系人信息 + +在使用过程中若您有任何的想法和建议,建议您通过以下方式来联系到我们 [RT-Thread 社区论坛](https://club.rt-thread.org/) + +## 贡献代码 + +如果您对 EtherKit 感兴趣,并且有一些好玩的项目愿意与大家分享的话欢迎给我们贡献代码,您可以参考 [如何向 RT-Thread 代码贡献](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/development-guide/github/github)。 \ No newline at end of file diff --git a/bsp/renesas/rzn2l_etherkit/SConscript b/bsp/renesas/rzn2l_etherkit/SConscript new file mode 100644 index 00000000000..db0ef9c0cb5 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/SConscript @@ -0,0 +1,27 @@ +# for module compiling +import os +Import('RTT_ROOT') +Import('rtconfig') +from building import * +from gcc import * + +cwd = GetCurrentDir() +src = [] +CPPPATH = [cwd] +group = [] +list = os.listdir(cwd) + +if rtconfig.PLATFORM in ['iccarm']: + group = DefineGroup('', src, depend = [''], CPPPATH = CPPPATH) +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/rzn2l_etherkit/SConstruct b/bsp/renesas/rzn2l_etherkit/SConstruct new file mode 100644 index 00000000000..c5a21891ca2 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/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/rzn2l_etherkit/board/Kconfig b/bsp/renesas/rzn2l_etherkit/board/Kconfig new file mode 100644 index 00000000000..a53d039a670 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/board/Kconfig @@ -0,0 +1,572 @@ +menu "Hardware Drivers Config" + + config SOC_R9A07G084 + bool + select SOC_SERIES_R9A07G0 + select RT_USING_COMPONENTS_INIT + select RT_USING_USER_MAIN + default y + + menu "Onboard Peripheral Drivers" + + config BSP_USING_HYPERRAM + bool "Enable XSPI0 CS1 Winbond octal hyperRAM" + default n + + endmenu + + menu "On-chip Peripheral Drivers" + + rsource "../../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_UART0 + bool "Enable UART0" + default n + if BSP_USING_UART0 + config BSP_UART0_RX_USING_DMA + bool "Enable UART0 RX DMA" + depends on BSP_USING_UART0 && RT_SERIAL_USING_DMA + default n + + config BSP_UART0_TX_USING_DMA + bool "Enable UART0 TX DMA" + depends on BSP_USING_UART0 && RT_SERIAL_USING_DMA + default n + + config BSP_UART0_RX_BUFSIZE + int "Set UART0 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_UART0_TX_BUFSIZE + int "Set UART0 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + + menuconfig BSP_USING_UART5 + bool "Enable UART5" + default n + if BSP_USING_UART5 + config BSP_UART5_RX_USING_DMA + bool "Enable UART5 RX DMA" + depends on BSP_USING_UART5 && RT_SERIAL_USING_DMA + default n + + config BSP_UART5_TX_USING_DMA + bool "Enable UART5 TX DMA" + depends on BSP_USING_UART5 && RT_SERIAL_USING_DMA + default n + + config BSP_UART5_RX_BUFSIZE + int "Set UART5 RX buffer size" + range 64 65535 + depends on RT_USING_SERIAL_V2 + default 256 + + config BSP_UART5_TX_BUFSIZE + int "Set UART5 TX buffer size" + range 0 65535 + depends on RT_USING_SERIAL_V2 + default 0 + endif + endif + + menuconfig BSP_USING_ADC + bool "Enable ADC" + default n + select RT_USING_ADC + if BSP_USING_ADC + config BSP_USING_ADC0 + bool "Enable ADC0" + config BSP_USING_ADC1 + bool "Enable ADC1" + config BSP_USING_ADC2 + bool "Enable ADC2" + config BSP_USING_ADC3 + bool "Enable ADC3" + default n + endif + + menuconfig BSP_USING_CANFD + bool "Enable CANFD" + default n + select RT_USING_CAN + select RT_CAN_USING_CANFD + if BSP_USING_CANFD + config BSP_USING_CAN_RZ + bool "Enabled this option means turning on standard CAN, while disabling it means switching to CANFD." + default n + config BSP_USING_CAN0 + bool "Enable CANFD0" + default n + config BSP_USING_CAN1 + bool "Enable CANFD1" + default n + endif + + menuconfig BSP_USING_SCI + bool "Enable SCI Controller" + default n + config BSP_USING_SCIn_SPI + bool + depends on BSP_USING_SCI + select RT_USING_SPI + default n + + config BSP_USING_SCIn_I2C + bool + depends on BSP_USING_SCI + select RT_USING_I2C + default n + + config BSP_USING_SCIn_UART + bool + depends on BSP_USING_SCI + select RT_USING_SERIAL + select RT_USING_SERIAL_V2 + default n + + 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_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_I2C0 + bool "Enable Hardware I2C0 BUS" + default n + endif + 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 0x0B03 + config BSP_I2C1_SDA_PIN + hex "I2C1 sda pin number" + range 0x0000 0x0B0F + default 0x050E + 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 + config BSP_USING_SPI2 + bool "Enable SPI2 BUS" + default n + endif + + menuconfig BSP_USING_TIM + bool "Enable timer" + default n + select RT_USING_HWTIMER + if BSP_USING_TIM + config BSP_USING_TIM0 + bool "Enable TIM0" + default n + config BSP_USING_TIM1 + bool "Enable TIM1" + default n + endif + + menuconfig BSP_USING_PWM + bool "Enable PWM" + default n + select RT_USING_PWM + if BSP_USING_PWM + config BSP_USING_PWM5 + bool "Enable GPT5 (32-Bits) output PWM" + default n + endif + + config BSP_USING_ETH + bool "Enable Ethernet" + select RT_USING_SAL + select RT_USING_LWIP + select RT_USING_NETDEV + default n + + endmenu + + menu "Board extended module Drivers" + menuconfig BSP_USING_RW007 + bool "Enable RW007" + default n + select PKG_USING_RW007 + select BSP_USING_SPI + select BSP_USING_SPI2 + select RT_USING_MEMPOOL + select RW007_NOT_USE_EXAMPLE_DRIVERS + + if BSP_USING_RW007 + config RA_RW007_SPI_BUS_NAME + string "RW007 BUS NAME" + default "spi2" + + config RA_RW007_CS_PIN + hex "(HEX)CS pin index" + default 0x1207 + + config RA_RW007_BOOT0_PIN + hex "(HEX)BOOT0 pin index (same as spi clk pin)" + default 0x1204 + + config RA_RW007_BOOT1_PIN + hex "(HEX)BOOT1 pin index (same as spi cs pin)" + default 0x1207 + + config RA_RW007_INT_BUSY_PIN + hex "(HEX)INT/BUSY pin index" + default 0x1102 + + config RA_RW007_RST_PIN + hex "(HEX)RESET pin index" + default 0x1706 + endif + endmenu +endmenu diff --git a/bsp/renesas/rzn2l_etherkit/board/SConscript b/bsp/renesas/rzn2l_etherkit/board/SConscript new file mode 100644 index 00000000000..a27ea8e470c --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/board/SConscript @@ -0,0 +1,16 @@ +import os +from building import * + +objs = [] +cwd = GetCurrentDir() +list = os.listdir(cwd) +CPPPATH = [cwd] +src = Glob('*.c') + +objs = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) + +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/rzn2l_etherkit/board/board.h b/bsp/renesas/rzn2l_etherkit/board/board.h new file mode 100644 index 00000000000..8d16dfc1c4d --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/board/board.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2024-03-11 Wangyuqiang first version + */ + +#ifndef __BOARD_H__ +#define __BOARD_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#define RZ_SRAM_SIZE 1536 /* The SRAM size of the chip needs to be modified */ +#define RZ_SRAM_END (0x10000000 + RZ_SRAM_SIZE * 1024 - 1) + +#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 __bss_end__; +#define HEAP_BEGIN ((void *)&__bss_end__) +#endif + +#define HEAP_END RZ_SRAM_END + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define MAX_HANDLERS BSP_VECTOR_TABLE_MAX_ENTRIES +#define GIC_IRQ_START 0 +#define GIC_ACK_INTID_MASK (0x000003FFU) +/* number of interrupts on board */ +#define ARM_GIC_NR_IRQS (448) +/* only one GIC available */ +#define ARM_GIC_MAX_NR 1 +/* end defined */ + +#define GICV3_DISTRIBUTOR_BASE_ADDR (0x100000) + +/* the basic constants and interfaces needed by gic */ +rt_inline rt_uint32_t platform_get_gic_dist_base(void) +{ + rt_uint32_t gic_base; + + __get_cp(15, 1, gic_base, 15, 3, 0); + return gic_base + GICV3_DISTRIBUTOR_BASE_ADDR; +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/bsp/renesas/rzn2l_etherkit/board/ports/SConscript b/bsp/renesas/rzn2l_etherkit/board/ports/SConscript new file mode 100644 index 00000000000..e8ac9ae59e6 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/board/ports/SConscript @@ -0,0 +1,16 @@ +import os +from building import * + +objs = [] +src = Glob('*.c') +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/rzn2l_etherkit/board/ports/gpio_cfg.h b/bsp/renesas/rzn2l_etherkit/board/ports/gpio_cfg.h new file mode 100644 index 00000000000..d179d4ab6ca --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/board/ports/gpio_cfg.h @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2024-03-11 Wangyuqiang first version + */ + +/* Number of IRQ channels on the device */ +#define RA_IRQ_MAX 16 + +/* PIN to IRQx table */ +#define PIN2IRQX_TABLE \ +{ \ + switch (pin) \ + { \ + case BSP_IO_PORT_00_PIN_1: \ + case BSP_IO_PORT_09_PIN_2: \ + case BSP_IO_PORT_18_PIN_3: \ + return 0; \ + case BSP_IO_PORT_00_PIN_3: \ + case BSP_IO_PORT_07_PIN_4: \ + case BSP_IO_PORT_18_PIN_4: \ + return 1; \ + case BSP_IO_PORT_01_PIN_2: \ + return 2; \ + case BSP_IO_PORT_01_PIN_4: \ + return 3; \ + case BSP_IO_PORT_02_PIN_0: \ + case BSP_IO_PORT_22_PIN_2: \ + return 4; \ + case BSP_IO_PORT_03_PIN_5: \ + case BSP_IO_PORT_13_PIN_2: \ + return 5; \ + case BSP_IO_PORT_14_PIN_2: \ + case BSP_IO_PORT_21_PIN_5: \ + return 6; \ + case BSP_IO_PORT_16_PIN_3: \ + return 7; \ + case BSP_IO_PORT_03_PIN_6: \ + case BSP_IO_PORT_16_PIN_6: \ + return 8; \ + case BSP_IO_PORT_03_PIN_7: \ + case BSP_IO_PORT_21_PIN_6: \ + return 9; \ + case BSP_IO_PORT_04_PIN_4: \ + case BSP_IO_PORT_18_PIN_1: \ + case BSP_IO_PORT_21_PIN_7: \ + return 10; \ + case BSP_IO_PORT_10_PIN_4: \ + case BSP_IO_PORT_18_PIN_6: \ + return 11; \ + case BSP_IO_PORT_05_PIN_0: \ + case BSP_IO_PORT_05_PIN_4: \ + case BSP_IO_PORT_05_PIN_6: \ + return 12; \ + case BSP_IO_PORT_00_PIN_4: \ + case BSP_IO_PORT_00_PIN_7: \ + case BSP_IO_PORT_05_PIN_1: \ + return 13; \ + case BSP_IO_PORT_02_PIN_2: \ + case BSP_IO_PORT_03_PIN_0: \ + case BSP_IO_PORT_05_PIN_2: \ + return 14; \ + case BSP_IO_PORT_02_PIN_3: \ + case BSP_IO_PORT_05_PIN_3: \ + case BSP_IO_PORT_22_PIN_0: \ + return 15; \ + default : \ + return -1; \ + } \ +} diff --git a/bsp/renesas/rzn2l_etherkit/board/ports/hyperram/SConscript b/bsp/renesas/rzn2l_etherkit/board/ports/hyperram/SConscript new file mode 100644 index 00000000000..9654f883302 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/board/ports/hyperram/SConscript @@ -0,0 +1,16 @@ +import os +from building import * + +objs = [] +src = Glob('*.c') +cwd = GetCurrentDir() +CPPPATH = [cwd] + +objs = DefineGroup('Drivers', src, depend = ['BSP_USING_HYPERRAM'], 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/rzn2l_etherkit/board/ports/hyperram/drv_hyperram.c b/bsp/renesas/rzn2l_etherkit/board/ports/hyperram/drv_hyperram.c new file mode 100644 index 00000000000..ff68d13cfa4 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/board/ports/hyperram/drv_hyperram.c @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2006-2024, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2024-10-28 yuanjie first version + */ + +#include +#include "hal_data.h" +#ifdef BSP_USING_HYPERRAM + + +#define DRV_DEBUG +#define LOG_TAG "drv.hyper" +#include + +#define PSRAM_BANK_ADDR ((uint32_t)0x44000000UL) // XSPI0 CS1 +#define PSRAM_SIZE ((uint32_t)0x2000000UL) // 32MBytes +#define PSRAM_DATA_WIDTH 16 + +#ifdef RT_USING_MEMHEAP_AS_HEAP +static struct rt_memheap system_heap; +#endif + + +static int HYPERRAM_Init(void) +{ + int result = RT_EOK; + /* XSPI initial settings */ + /* Initialize the PSRAM controller */ + if (R_XSPI_HYPER_Open(&g_hyperbus0_ctrl, &g_hyperbus0_cfg) != FSP_SUCCESS) + { + LOG_E("HYPER RAM init failed!"); + result = -RT_ERROR; + } + else + { + LOG_D("psram init success, mapped at 0x%X, size is %d bytes, data width is %d", PSRAM_BANK_ADDR, PSRAM_SIZE, PSRAM_DATA_WIDTH); +#ifdef RT_USING_MEMHEAP_AS_HEAP + /* If RT_USING_MEMHEAP_AS_HEAP is enabled, PSRAM is initialized to the heap */ + rt_memheap_init(&system_heap, "psram", (void *)PSRAM_BANK_ADDR, PSRAM_SIZE); +#endif + } + + return result; +} +INIT_BOARD_EXPORT(HYPERRAM_Init); + +#ifdef DRV_DEBUG +#ifdef FINSH_USING_MSH +int psram_test(void) +{ + int i = 0; + uint32_t start_time = 0, time_cast = 0; +#if PSRAM_DATA_WIDTH == 8 + char data_width = 1; + uint8_t data = 0; +#elif PSRAM_DATA_WIDTH == 16 + char data_width = 2; + uint16_t data = 0; +#else + char data_width = 4; + uint32_t data = 0; +#endif + + /* write data */ + LOG_D("Writing the %ld bytes data, waiting....", PSRAM_SIZE); + start_time = rt_tick_get(); + for (i = 0; i < PSRAM_SIZE / data_width; i++) + { +#if PSRAM_DATA_WIDTH == 8 + *(__IO uint8_t *)(PSRAM_BANK_ADDR + i * data_width) = (uint8_t)0x55; +#elif PSRAM_DATA_WIDTH == 16 + *(__IO uint16_t *)(PSRAM_BANK_ADDR + i * data_width) = (uint16_t)0x5555; +#else + *(__IO uint32_t *)(PSRAM_BANK_ADDR + i * data_width) = (uint32_t)0x55555555; +#endif + } + time_cast = rt_tick_get() - start_time; + LOG_D("Write data success, total time: %d.%03dS.", time_cast / RT_TICK_PER_SECOND, + time_cast % RT_TICK_PER_SECOND / ((RT_TICK_PER_SECOND * 1 + 999) / 1000)); + + /* read data */ + LOG_D("start Reading and verifying data, waiting...."); + for (i = 0; i < PSRAM_SIZE / data_width; i++) + { +#if PSRAM_DATA_WIDTH == 8 + data = *(__IO uint8_t *)(PSRAM_BANK_ADDR + i * data_width); + if (data != 0x55) + { + LOG_E("PSRAM test failed!"); + break; + } +#elif PSRAM_DATA_WIDTH == 16 + data = *(__IO uint16_t *)(PSRAM_BANK_ADDR + i * data_width); + if (data != 0x5555) + { + LOG_E("PSRAM test failed!"); + break; + } +#else + data = *(__IO uint32_t *)(PSRAM_BANK_ADDR + i * data_width); + if (data != 0x55555555) + { + LOG_E("PSRAM test failed!"); + break; + } +#endif + } + + if (i >= PSRAM_SIZE / data_width) + { + LOG_D("PSRAM test success!"); + } + + return RT_EOK; +} +MSH_CMD_EXPORT(psram_test, XSPI XIP hyper ram test) +#endif /* FINSH_USING_MSH */ +#endif /* DRV_DEBUG */ +#endif /* BSP_USING_HYPERRAM */ diff --git a/bsp/renesas/rzn2l_etherkit/board/ports/rtl8211f/SConscript b/bsp/renesas/rzn2l_etherkit/board/ports/rtl8211f/SConscript new file mode 100644 index 00000000000..8469b1c9a0f --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/board/ports/rtl8211f/SConscript @@ -0,0 +1,16 @@ +import os +from building import * + +objs = [] +src = Glob('*.c') +cwd = GetCurrentDir() +CPPPATH = [cwd] + +objs = DefineGroup('Drivers', src, depend = ['BSP_USING_ETH'], 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/rzn2l_etherkit/board/ports/rtl8211f/rtl8211f_init.c b/bsp/renesas/rzn2l_etherkit/board/ports/rtl8211f/rtl8211f_init.c new file mode 100644 index 00000000000..d2bd903e8f8 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/board/ports/rtl8211f/rtl8211f_init.c @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2006-2025, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2025-02-11 Rbb666 the first version + */ +#include +#include + +#define RTL_8211F_PAGE_SELECT 0x1F +#define RTL_8211F_EEELCR_ADDR 0x11 +#define RTL_8211F_LED_PAGE 0xD04 +#define RTL_8211F_LCR_ADDR 0x10 + +static int phy_rtl8211f_led_fixup(ether_phy_instance_ctrl_t *phydev) +{ + uint32_t val1, val2 = 0; + + /* switch to led page */ + R_ETHER_PHY_Write(phydev, RTL_8211F_PAGE_SELECT, RTL_8211F_LED_PAGE); + + /* set led1(green) Link 10/100/1000M, and set led2(yellow) Link 10/100/1000M+Active */ + R_ETHER_PHY_Read(phydev, RTL_8211F_LCR_ADDR, &val1); + val1 |= (1 << 5); + val1 |= (1 << 8); + val1 &= (~(1 << 9)); + val1 |= (1 << 10); + val1 |= (1 << 11); + R_ETHER_PHY_Write(phydev, RTL_8211F_LCR_ADDR, val1); + + /* set led1(green) EEE LED function disabled so it can keep on when linked */ + R_ETHER_PHY_Read(phydev, RTL_8211F_EEELCR_ADDR, &val2); + val2 &= (~(1 << 2)); + R_ETHER_PHY_Write(phydev, RTL_8211F_EEELCR_ADDR, val2); + + /* switch back to page0 */ + R_ETHER_PHY_Write(phydev, RTL_8211F_PAGE_SELECT, 0xa42); + + return 0; +} + +void ether_phy_targets_initialize_rtl8211_rgmii(ether_phy_instance_ctrl_t *p_instance_ctrl) +{ + rt_thread_mdelay(100); + phy_rtl8211f_led_fixup(p_instance_ctrl); +} diff --git a/bsp/renesas/rzn2l_etherkit/buildinfo.ipcf b/bsp/renesas/rzn2l_etherkit/buildinfo.ipcf new file mode 100644 index 00000000000..80c3bd0a38b --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/buildinfo.ipcf @@ -0,0 +1,156 @@ + + + + R9A07G084M04 + + + $PROJ_DIR$/rzn/arm/CMSIS_5/CMSIS/Core_R/Include + $PROJ_DIR$/rzn/fsp/inc + $PROJ_DIR$/rzn/fsp/inc/api + $PROJ_DIR$/rzn/fsp/inc/instances + $PROJ_DIR$/rzn/fsp/src/bsp/mcu/all/cr + $PROJ_DIR$/rzn_cfg/fsp_cfg + $PROJ_DIR$/rzn_cfg/fsp_cfg/bsp + $PROJ_DIR$/rzn_gen + $PROJ_DIR$/src + $PROJ_DIR$ + + + _RZN_ORDINAL=1 + _RZN_CORE=CR52_0 + _RENESAS_RZN_ + + + $PROJ_DIR$/rzn/arm/CMSIS_5/CMSIS/Core_R/Include + $PROJ_DIR$/rzn/fsp/inc + $PROJ_DIR$/rzn/fsp/inc/api + $PROJ_DIR$/rzn/fsp/inc/instances + $PROJ_DIR$/rzn/fsp/src/bsp/mcu/all/cr + $PROJ_DIR$/rzn_cfg/fsp_cfg + $PROJ_DIR$/rzn_cfg/fsp_cfg/bsp + $PROJ_DIR$/rzn_gen + $PROJ_DIR$/src + $PROJ_DIR$ + + + _RZN_ORDINAL=1 + _RZN_CORE=CR52_0 + _RENESAS_RZN_ + + + true + $PROJ_DIR$/script/fsp_xspi0_boot.icf + + + --config_search "$PROJ_DIR$" + + + system_init + + + + + RASC_EXE_PATH + D:\manufacture_apps\Renesas\fsp\rzn_v2.0.0\eclipse\rasc.exe + + + + + + rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_compiler.h + rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_cp15.h + rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_gcc.h + rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_iccarm.h + rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_version.h + rzn/arm/CMSIS_5/CMSIS/Core_R/Include/core_cr52.h + rzn/arm/CMSIS_5/LICENSE.txt + rzn/board/rzn2l_rsk/board.h + rzn/board/rzn2l_rsk/board_ethernet_phy.h + rzn/board/rzn2l_rsk/board_init.c + rzn/board/rzn2l_rsk/board_init.h + rzn/board/rzn2l_rsk/board_leds.c + rzn/board/rzn2l_rsk/board_leds.h + rzn/fsp/inc/api/bsp_api.h + rzn/fsp/inc/api/r_ioport_api.h + rzn/fsp/inc/api/r_transfer_api.h + rzn/fsp/inc/api/r_uart_api.h + rzn/fsp/inc/fsp_common_api.h + rzn/fsp/inc/fsp_features.h + rzn/fsp/inc/fsp_version.h + rzn/fsp/inc/instances/r_ioport.h + rzn/fsp/inc/instances/r_sci_uart.h + rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/R9A07G084.h + rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h + rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h + rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/startup_core.c + rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/system_core.c + rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c + rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c + rzn/fsp/src/bsp/mcu/all/bsp_cache.c + rzn/fsp/src/bsp/mcu/all/bsp_cache.h + rzn/fsp/src/bsp/mcu/all/bsp_clocks.c + rzn/fsp/src/bsp/mcu/all/bsp_clocks.h + rzn/fsp/src/bsp/mcu/all/bsp_common.c + rzn/fsp/src/bsp/mcu/all/bsp_common.h + rzn/fsp/src/bsp/mcu/all/bsp_compiler_support.h + rzn/fsp/src/bsp/mcu/all/bsp_delay.c + rzn/fsp/src/bsp/mcu/all/bsp_delay.h + rzn/fsp/src/bsp/mcu/all/bsp_exceptions.h + rzn/fsp/src/bsp/mcu/all/bsp_io.c + rzn/fsp/src/bsp/mcu/all/bsp_io.h + rzn/fsp/src/bsp/mcu/all/bsp_irq.c + rzn/fsp/src/bsp/mcu/all/bsp_irq.h + rzn/fsp/src/bsp/mcu/all/bsp_mcu_api.h + rzn/fsp/src/bsp/mcu/all/bsp_module_stop.h + rzn/fsp/src/bsp/mcu/all/bsp_register_protection.c + rzn/fsp/src/bsp/mcu/all/bsp_register_protection.h + rzn/fsp/src/bsp/mcu/all/bsp_reset.c + rzn/fsp/src/bsp/mcu/all/bsp_reset.h + rzn/fsp/src/bsp/mcu/all/bsp_sbrk.c + rzn/fsp/src/bsp/mcu/all/bsp_tfu.h + rzn/fsp/src/bsp/mcu/all/cr/bsp_cache_core.c + rzn/fsp/src/bsp/mcu/all/cr/bsp_cache_core.h + rzn/fsp/src/bsp/mcu/all/cr/bsp_delay_core.c + rzn/fsp/src/bsp/mcu/all/cr/bsp_delay_core.h + rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.c + rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.h + rzn/fsp/src/bsp/mcu/rzn2l/bsp_elc.h + rzn/fsp/src/bsp/mcu/rzn2l/bsp_feature.h + rzn/fsp/src/bsp/mcu/rzn2l/bsp_irq_sense.c + rzn/fsp/src/bsp/mcu/rzn2l/bsp_loader_param.c + rzn/fsp/src/bsp/mcu/rzn2l/bsp_mcu_info.h + rzn/fsp/src/bsp/mcu/rzn2l/bsp_override.h + rzn/fsp/src/r_ioport/r_ioport.c + rzn/fsp/src/r_sci_uart/r_sci_uart.c + rzn/SConscript + + + rzn_cfg/fsp_cfg/bsp/board_cfg.h + rzn_cfg/fsp_cfg/bsp/bsp_cfg.h + rzn_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h + rzn_cfg/fsp_cfg/bsp/bsp_mcu_device_memory_cfg.h + rzn_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h + rzn_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h + rzn_cfg/fsp_cfg/bsp/bsp_memory_cfg.h + rzn_cfg/fsp_cfg/bsp/bsp_pin_cfg.h + rzn_cfg/fsp_cfg/r_ioport_cfg.h + rzn_cfg/fsp_cfg/r_sci_uart_cfg.h + rzn_cfg/SConscript + + + rzn_gen/bsp_clock_cfg.h + rzn_gen/common_data.c + rzn_gen/common_data.h + rzn_gen/hal_data.c + rzn_gen/hal_data.h + rzn_gen/main.c + rzn_gen/pin_data.c + rzn_gen/SConscript + rzn_gen/vector_data.c + rzn_gen/vector_data.h + + + src/hal_entry.c + + + diff --git a/bsp/renesas/rzn2l_etherkit/configuration.xml b/bsp/renesas/rzn2l_etherkit/configuration.xml new file mode 100644 index 00000000000..8b4b353832d --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/configuration.xml @@ -0,0 +1,1039 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Board Support Package Common Files + Renesas.RZN.2.0.0.pack + + + Memory Config Checking + Renesas.RZN.2.0.0.pack + + + I/O Port + Renesas.RZN.2.0.0.pack + + + Arm CMSIS Version 5 - Core + Arm.CMSIS5.5.7.0+renesas.1.fsp.2.0.0.pack + + + RSK+RZN2L Board Support Files (xSPI0 x1 boot mode) + Renesas.RZN_board_rzn2l_rsk.2.0.0.pack + + + Board support package for R9A07G084M04GBG + Renesas.RZN_mcu_rzn2l.2.0.0.pack + + + Board support package for RZN2L + Renesas.RZN_mcu_rzn2l.2.0.0.pack + + + Board support package for RZN2L - FSP Data + Renesas.RZN_mcu_rzn2l.2.0.0.pack + + + SCI UART + Renesas.RZN.2.0.0.pack + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bsp/renesas/rzn2l_etherkit/figures/big.png b/bsp/renesas/rzn2l_etherkit/figures/big.png new file mode 100644 index 0000000000000000000000000000000000000000..c7df887d34e09196330f277ea5d4ab68d3595394 GIT binary patch literal 1262435 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

|ig4CqM)DPqTYjUnt3* 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�&s5H8@Dgk^CsP6mVw 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�%Ko3m+~m8U1l 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%0D6tW{Q!lbx^EZ z=l&`VktubSMA{m=XqG9ujEbfH{v%cFCy$PpRFxhc>`LP%dR0lk+%|9Xrf^K^yEfe@ zD4!9xN_Imofcc=+ds$AWx=ME3s@VJFR{PRt$D&exS-S?ddnyeP`^L-g@Sm0IyPSpR zIV+EX!sLE{KBM3XdOU90b6+DiilYuvlOrc2@fvhG0@?}<1-o!*b60@Hhh~R|2`!u^MIh?qht8-7O*iF(yDJP|sV^%FK?IIlikBuY@2esPyLx-73=yL#LzKRpFQ`z;!^a2-w2QBeVU+tS;f=F!v=c{w&A+XMV= zWbmyJ$IxhW;svYF;$OX-JUnptJ?@Xym?kH$!GDsxMQ^HMIfUZk5a?wVhi$Gj&ssKM z_@8_M4p9fk?YZsc$K%}r9>)!^Ybn>LJ`!Lwff@mf z)p&tez(c>)2^`IgJ2PCTpHeSf-oW79by^6vaHZXSy+{tXP+~g$TjI+s(mbe1*M$5n z=HoqHupVTfpym1a_O=1&a^4XU6T{eL;|{=oc5GgLQ4*|UrJ2GWQ$f| zHtK}qh(Jff!?u+xO7tWjfq?ort*GgI`pZyjD}74T(O?JbcI8>~DO}sC-7Jh3Hhhtu zl_6ikaY1|$aw>Kl- zqk<`KH~DILYAxq5AvK`=Ah-~acakMQ;1<@^3#yjk6GAYT4);JsVZvPFl=#kK*PmanMbwnygSt*`80KQZcP2OelbA5I3-pDBGH=JQOAO60KJ zuvwiF;y2IF#bzB600xNk%Z;N=Fz(x%7}&>8$F;bd=fhp4*=+xJo*&ajnR^sJk!z=d z0uqv70x~39{+aVX0Fb1B=Os~w;)aGuy=rrH_te=#e-6b-hm#{X>;T$e@uKb7+0}M! zesZ}hU(WO~bJ=o@(Keuj-ruKe)YH;B%glD?CF*5LSm%vdJayxjy`Yj@Ktjaw;LnO% zUFGXdsVxLIhD`FuzfpCyu#gnYaq7r6uh`84ZFJtq-*&WsjvjQId%t(TZkA+nH=<2L zC-3TH4uaeLJKhx!QgMuptuB_*nNo3thV>EJ!So74b0_kvt}Z)0IkB;}uEj_V2+Cuf z0OD+OBfmvJ28#;fg!Xi_w;PvU1zz{L<{*?~YP;bMStvhOk1cgnJ%m+9J`I=i?5<~!WZ&B!$zJXc`Jd<4hx z=H~l;k`lbroUHX*P&KveWrtGWbkoW;A`^(T^MwDFilJc z-p&rQ>#7wJaHq@i*?Tw^;m%J*;j{)PZfCb|CU$~FqKdrGa!xu!WNnX(tyfM1qv_7W znUP_uaW(Rir@#2X%1RZ}#RaIuPS2`jeXp#v5>QLel;lzx`8*e`s8-e$txEbi;F;Dy zaqM}tbw8dzE@ZuAm*ievv^Cp3=J*4RhKV+3|1Q9iorT?Vz{4eoP-`3|hiI{VA1@4m zdBpoLy)XD9mXOEOev@D1NZ?;~$>)VukMPsT7cJh8oiDJEA7B&mWN1iX1BfvJk{Ub6 z(0BsbvMh{@GplK7X`Ni$haSA%ey9ceT8kNK`H>eF#H-B{W$_}}**OX&i30!5Q?Rjz z;99_UpK);?FE<%<|GefXcxiXrf+udytSzjr)>*jPX=p&BjqdNuD_uPV2WKWyGCg7u zofGSEH``l-R%gK0>9COEVijUz6^2Zm=?@3s=x`Y7ys4{xilgyysmfQ0fE7tgTI_h< zC5S)!HH`$gF-5P|H$JVeHRlt2W&~%ZJz|}l76iEEp~1fw5SY67y&XaQ|C_jUjOFD$e%e*?Lvu%J>FoQOBX%Q(e2gA8#H;r-wSaD z*-IGbVvGGUF9SJRrESO6ce zWp5PQkjBnPa}Y&%A7ri5rP3>OA=M2AWovJ*Ub=|~?=Ie;4e24N?$-izZU(jE8hNoL z$WQ$gRah7aA=l9emi4^Ykdff_f>zE&Z${2h)nM`)y}x%eApSbLA4FbOt7dW6-7gdb za>eu_UgJAmefYnEqtIYP$y0X)_z%21oCTMe;!S4mTsA_@n2MWy5oD3$ z+ju2X>Lk?xV+CW>>hj^8TSBgKaHs-GJlwXxE-DX6|S;4rpG`&qwPUykHI4T{k8hgzhx9W?^$1>H}njvy5oi^wYb`}&e zxvQ?p7G}K)07Av$GbWZ+6q0)dh`D+8W4<|FhjruA2Uo=I#78f-;99(P>q*_1* zOfy@gKoRR3uF?5g*L;(opmxV5_!o`FJU+%9r8Ez`+hV57ow*65Idaz3RRPo#m+2lE-nieo#;2z>W9x^o*_Mt73XqR$5LDxM@XMS#Vso zpf@{CYyw%#apFK-t08kLq0`4`ykft;rn-8g!^W}EJ!(9XT>T%LC<|?lns69dI3(7H z&nTexb~Gn*SK|L#0CNp0P~GlsCXkJMqwZy0?ya(aBNK=CjbdJHeplJc)DJ>j+;)*w z7G+z&DMsuT8RPaygC2!u5wyU6n>!*D$5+3C5po!!Opir@Khp~%Oq+;ALmK8~nlxD<^4<&$Te zNZ|QSpAg}??z%3|`P!oY+pCh$!$RT1nO*EUCB@4!t#oAHzP-un92^&_biSCA+KR7B z!bjn{Q2>?4_PyJx?n=n(7!YEc=5T?&BP6Uo@m(5Hl3{}KmS`OB@3z)(Zt#g5n;kx~ z@4i-&E$;MoneTbnyrQ!h*sTvYXI#izMjuqNvMngEoZh^&ZjT%bdI+ z`cg1kn|*W+mFomCdulvJ<(J)iWX;b+TZR`gq$>FYpS(iEfO%hGLr*f(@CnX1!ltFE zTe(Eko?zz0j!~%>f(<4ck{sj?PEE2hIfur3%?Jio@DX{Cl+8>dcm9l?^!@waxw2oB zqdIhidNDH{hY$t|e=zZ4lF2g&8_7h6AJy5T!rWR!iGpCsk}4^?UYGPJtufcPx0U?S zaBvP;4B8hKSK%4ah4}qAgabwAPb0+ggFimPB{?ZtJuYyrACteV#?| zQ?U2pMsLq42Mh(Dv?p1%#QJW2etsdy!`Y;+rNwi*+n?3l392u9Zx3_9eO}(OP5<(I zbvlm3A3-rWUgQNYZ$#8_`>;yy3wdK<#2v(8*ca~ovdKnO#i zhZXf`AYnMZccY&qJtJ#nYxAIXJ;^#RE|d!fDNJ|wM*G5pw;bcfOLL6%yEV4XXkScW zfI)U|U7Z90l|mWT7+t5KsX}Rg4BX_e?=~1!7>YazxbS~91e1e07$jo`51dON17Ze! zb`rYYyC7LFz+NvjeJv!Z?9q5(UwmG30-wVXjr_=E05wJFTxvt~sOyu-vt|mD9=EXj z`D}ADaxylFRPa2;fZ=aGIe-5Pj%h)3ooK^uHw9+SnbNX zKz^9!Mu%?)<-uDFIT_`IVAOh+a&dV@FglnkRe3r_bpXET?PQ9nw23LTf=E@uPe1R; z3f;r%`kmvc6sOl+mhA7w^7#vY;@JY(S4xVTe(XmC&i$vf=3k7whkK1#6qUCe~k_ zA+aY(@WMyaV+y3_%u!iSH{P$|GvLMz--C1ixK_@a$TtHc%njpXfC?nC!Fj-pM-% z)EciC>khAzztcv(4tyL_9Sknau-7)9-H^0z39h1dqLw(b{62PW_HG&;ofhLK^Cc_* zmnO4kXbPuy3t*)LJdhei4z+HM^QNgKFAQ zcqp%{M*vN=V4DM$Ip4zx{C-F}(%hGo12^!%ngS6g!n_WiZ9g+p7Yv5n?AOS^C)gD+ zW?Xtm@WHOfE#KLd%@HiI-D?0l<967f#HgLrcA7P@0gT8}TExR7{MUEO0VrTLCSUIe z@CXPHpdcFM&fo&%hA{6C5m}FcHCQg;`yp33`+r0o8tQXt_vgneE^}7orlRu+&}Fsf zmI9sxbchlX&TfFGCn5D}wh97T)&Si@mvV&YQ!}y~3?|hd>#T z=MQxu()rjU{m{-RvPp)1fpSZhwF(k|HXpuWR3>)QNG!_aN%5QyC;ZKLZ}PU}_5SjJ zqq0$NaaU)iG&wajDgVkG;5};FB=p&T!?*pG<;Z<(gO_k^b}nw6gr}?J1`x!2Qv!al@3u(yj?oVZifgytD^gM=wRd2X?5*wRDLna&t_pe;A@=Qy0 zbzOm_cpN4-Xak636BHDb5^puxSJ4b5Ys4Txh|w`DbSJHsvOpIvldBE5(nS(A*wqU- z9W(eqV9NM44n*BIwH7{lm?&g3tGh7?Fx}&j=eCu0zVpjzIQ&6NX7cM)zbk(XrGQj> zEy~sEF+Kz(2Of%m6*Hx+S_E(iZv|S75aXsCU}+RB4O%}_X%i`?Qhu|D!cFMw%@T6ZXEuBy7U-K4b7+r|bmcpxyrWl=!*>TsH7blKSkeRDT&{4AyZMLOI zs4nem9TSW{=UR{w(`ZoD95cC3pr_LsU#G_;H$uQGaw8y^HfE=xOO_Q{01I>|0>H|e z&zG9=PK`uL)PF|dgR5=6(;IJopS@tU5dfZ2w|dc?lVc2gexBzW-CxpW1Ks`tuTan+ zxaPy)kIvb8f$G;4BxPHdV|9U zc2Py%uH)3lR8%LlkPc2qMx+7yRP?bzs|M@+57rc`Uvb@iY|Ri77WQ2Mm=gr8#tWvr zqN5S%kN)q!ExM~p6FX>uj=Y0|aa>Y?H`$rzULsG*#SY3Ra=S~IWLvQ^MZwS_R7ypqS6{0Y?fdL-VIYR3l zEs#H9D1y}hASl4+W#K3{o2mUS6jhk)RO2Du@jan47~Z#t#){wlbbh{M8ZAj$AGdd4 zL7fEjb{&eUh(U+(rfXn;Y^B1VoRgk2I~{1y&MES#1aucTsZkO|fZom=10XqB-R`J| z>tIodfVvj%3(~;uoyP$^V1i;X{>q5MmLT2tZsg}&T~afh)_ZdkRiteG+4l{!)mlc| z1`K7N)6)Skj@6Pqq+4o$+v4-%81bh&;)8>K!d|? zM5xIx9(r&;v-Qep^QlupyV!O519BZNcQ;`}ax9aeuxTn-hCw4C(&@dM5v7knSb>Y3 zs&Bus#GgFyFN3g@RbQ60f7EUM9jF}BgKbi4q1$uUUHO~J;A4%rS=rpbBIWs}B6-d> zrR0lGjd1{@;}7+6EN*B5ZW*Whnj%}>=7}bt)nQh2bm3S3=G)%mUNqvm3jHOMT3bAlo~cx7eC3yU34hG0Qu1GpFS|JSj5qmEowl@RnEx7%~C|Q_^9G$n5A^;EkKU{;bKpLs082qalFpJbRHTUEagZ9?5XDo)I=A zKjYL^GkRHjp1Xq!55c{$WuP5O{3}euUVCDhIz_Usk(QpFg7#?;61&>GTCXjn?myTN zA{O=aMKAueaSNfdrSw9dN{#f)?AN2f538Nm7IzTjX?9M|^HWm1PtC(dhqbNH?~TGS zAWr6Up-k^jtmG^eA4;r7|oe5sg*p?KLJzTCU8isWpy+ z2a;jIsh)--^Lk~kFx3bWU~9U1SzCu~;p&K?OS##cY&_o$2_hkF#J+Q2^+wjb105|- zyQl#5DFjj?!~2i@n{*5?h<>?st+w4ptjP%RO&VXVM86REoCi*qPf?L95*o!U<%N*% zrq|Mf3!oDHGvb7n$yJn<2OTn7Ng`c2I6za2`o~c@>;`NkG)B(r%X8& z*S^Y)|ACKubX4=WEM7_yUnM0tEhjoH6;k1^_ohmE?fJKc=WHL5wWLbr9qo8gqfBV7c_SgU6Vdh+WOZN?P&VmO8%W~~!-DHWFxGESbR zyM9f1yI`vpLSCj`dX}!+x5w_suC)yQ6s!5N`zk%NUfFKI#gI}g8JyHs(XqFvW#oT< zjS0dfdPmAS0a}2`6Jd%$2JeScLbYEpMkQDqvEu&F210Ja{7ay(AdW-$T8hybGJf($ zUq0FtJsj7_=VSI8Y1OSJY2c-|mxtH!;W{v4-VEoy4UcxbKHzdfgtc@G62vgmt%l7T zBv?og$iNv6@aas+UT4I|$ZBF$21}rAjW?Yw&06iklnj{E>CRHIWLDj)OJc5ORkm(` za>Ox0nx=}ADl_DY=0?@C_LfPL@li$9KPK4{#AEE}k<#-{GNnI7F3ySlpG-yvgT z&(xeG%o~hUxO8>9%fefiFBBCOKej*Ltq9lGY|ASKcCS~e^o)c+xozXn^_c>AvNu(B z?5N6vy*oP#f$uf3$jAVeg{Nlg<1;BUNPAuV{C?JB1zPqVvpf#uz-2M`BMLTFz93&- zuHSx7H6+4=fmK0}S}jxz=`}Wux1p~B^bG#fb7ZjIxUcogM69JjDH%9%gQ%fExK63F zq_prerOqCO5a;3mVk-r3V{r(oe$r0WCQwa`eRb96IQj9%Rg60M=K;`HM5u|ybm9gG z^rBnA&2*U!dsnn@R4Ai3)N^KtxfmBY`y%K=u{Kp-x`QCXb+zZyo9*S(n|3) z)aP03R5XRtFH5nP?s?20_#aELPH~VC37d{{`ccw2dk<_G2*lEdmO3l_CyTgJ5|zs? zz4;hI4^H*Vwk01@&>0vj{uSe{)@PPI72pWCYZ$aEA&ztN@N~YMJ^~_;bb3ePEJlj) z6^FQCQeS%$lK|tq?StEEA}tLy%=lqmMPQ-UDbSxhnAuMGdiM1`EsUWv=vF%F=~F|i zt;2%|WVUvaA_}9`6L`=)2GCORv>ZG98AawrhmuKS3*`w0I z7|mSK*^PaA6XgmaQ)ObdP%;^pEL72+m*&kIQai&MjH9dJMG6=|+@fb;Za-Fcy{l&g zCu!ELe6+@zAw70wPw*P~v84i@W9Q>@n0YxEs^wBI7-De`h~c&z=$hPnJP$xlzA7J` z>x-g>R?ogE^V0ZWzHJ(Y7DMNe2f@q%z$VdmRaI$k4~h*7!G}MFEqr;lJS?0|8@Tj3 zjru}4RVq6WrAC!Zt8L{UEYH0@vtd!kubZ(M8#{SyO+CK)L*k1i_`4I4qvr}+ymy3G zVudY5dPYtMCq3Ds z3Y(Qq+Cx;yD%~??<+R0u#szI~m#3L?gxO>}**{ zLE-b(D4=-XJSbIFlY))}>+23%3d;=?jwE@4bUjhI3HbXQ)Ndw20weE-)x#lfMSOHhox>%Z&!#mid!>5ItoSlt*5E-3`Dloy=RYDylMDHLVe$ zd}B`s;|=oZ-6C&li8KD7PJnvRNr^h*eM!dFuOQ=jCN( zV|!MR2Wqu@$A${(az7T0+(C9d>|>>_0b8cyzd5cCBf<@IqaluChtzB|u3z6Z78mo; zhLlXd)56cY)az3cRo6JCMKeqDab-)oLN+@7s^3+Hv+gC0W7El(Qeo&yju&)6Q{cZ^ z?e=Bmx#uw?St-2EWIDeHUTP`#b6D*nO^G}Rp#M_1r`ns{&5(-v)-YCW5ac zcZ?y&y`FALLju$Cuig};wltoo?sevkhlZA_6rFq*kJWHSuWrU)Os|!?E=uXq(K!oF znlen(KNUC?+C@}M4(w%EkUJ|f`143f4lk_Nels=*!f(V|jHht-Rx~x8d8stW&iKS1 zQ7+HU?mqai=(pzK$)GBPA4vaf?xcYy$$w}%BOtW(mRFaUvd+RV9aEe-J3LJ3di|FH z?lc}zOkb0FR3%l8!5``LaTn6s)$zLA^Rf76AB#GYHc_y)aqX`m7Z1hn(3veQi8GLj|7FVAiJuX+C_EcsQD&y zJb(eAyi;CH3a@vY0ZOoz;R{(Hw+|QlhU4PJvB3H;ojhV)E#R|y* z*(hIZh0MCcq+#xBpBf+4w|ZC;GX6w6Eiwo?&KopnmHwwLzRX3Kf&7{pd2Yz$6?-6= zBfPu2+x=__NF+hFBukp=ZQw*?qh^?U6}P~@#*Bc~a&Z&ZNxVbQ{e2^s@2Cz=@e_#p zYvDYkHVEhTv!$^fG=TnA)JIrdaVN z@P}g9zb>3a;l#++XP7aQn(BiEn)%SjA%=^I^Emda0iX15#W!pt>OV$cT`A!7QI`Ry zV;5FRi$;0*MB{Sjnq7g&qP>3oNmgPaSV;Bn(MVC`N$$Lj^0N!GsZg2{wtc;~t;GnN zL0F{95MS!m->R);IZ^}_-ov_waZX>m*=-I7AfhH zBV@og&Bz+>rW7RL4P6Fklbl09z1`5{a&dEU^3*7mXp~GMNMOa#P{_$SW#EGaxqKx` z#FNAL?TqBu-)Ub*tz{NBp#>KzaT2Lo=&YAh$RtS~mUw5o>sVd7MoL_FYX7!e51lgK zEdJ0cQm#AwSNCArRHY+ly684eJu_@Yj7i~1+&ac30`I22(es(-8)Sp( z^vc{BmQ0GqNQxnSXrflRf180(w~M$!rwhXn>SN}UJ@%lbcm#YyV)@HW`SbT3=*amt ze_x*1&tP-`N%R0J@K{QM_2;FPslwRW6j1;VYeuGt)tZb0r zIt6=lC~y&-+2F#pKu)YiATt@cFO5~OT>f?9>=~5)oG@3~9OKFt{Yo+a+AL8x3slKK z0_zFDb+Jemaw@^s-|}gHi7kA1_Nzq$RI~sj$!3m+iJ1iO*V>HSd`%=zV_xjwjAVY$ zZ!jxECvF9Et>p-{OGPoMdAE1C%o{P}V1t6r`y+BJ-Ho-ZEZ=b;z%-bmd1ETMIgyQm zo_0B&!Oj_x|HuFNzrXa-%a0t`5BHFeyqf+Zo0V9St_)@gK2SSP1aG29_p%ngh-KkQ77;s7 zgb6SrmIgPnSYU%=oxmUhUWK24iKJob5wT|xQB!mWA7E}>E*JEQrk2SPph&kCd;sKQ zA$ie&qF~fKj#?E6B2T4~#G8(T&oJ9GksIa`$8h!vJrr?VWGn>gurL)QYJJ{i*NWNN za)ez&!ol$(^2cWhNYhpjP$=L=z?oCizW?jL{kMwBivR8J{~q(du^a`EP%Y31bQt_pexa0rLGVtkwGyHQUU^9eb>P1Q%fR2rx|K6f{DrqRAxxV zX;oL3A+ZU9B;ml3JYdzxM#>RXN#-AZ;z%9=m>=8=xUF&u-EL+{6D=@U)VUGy1kKf~ z#jPUe06Cl$vV$19QnV5l2c?p?TaJC^LFnZ8)q_=dT;eH^49G(F% z=Rl&CKmO^h*MIxFhidb0K^Ytz`okaI`Q9@}o0}V9gV$77?c2K(1307Wuc2Dh)CPvA zh0$3BbTX%!oKo!%o6mS;6ppwMv&DRH5qx3IAHHeuOG=*7^P^NXQ<+ko+U@FL?}$NL znd4u}J$NT0S+N+y)W4ZQQaKIqT4=C!gjEvNK&K$KxJi0lFngbuTNjq<;8dN^P5n2? zfJz~_sj211R|a*iP)Zvvn(Nh8QMMGRa7zhq1xh9QVvv?fvT5MrqF%S&imQ!hM zZEb35qLxjBHBScuf$_0%=;y{wn`)}7p`WT2(NtZSU!bWn>(|!<+dVxqqbkbE_20V! z-3DTqhvAni!0Ap*Oe`)g2K@eDFenqi19RBW&{$RN4FyAhyk>kpVC_mnE5njqym--= zZJ@fA4J}rZ{BtQ1iN)i_PcY{jT3S#q3e=;bTmu@VNq1^%YXMc#TqE>OKt!-utDG^I ze?VEjSwtq$SPZ#*fCri@G6!e}eg$?S7K;OhfkJX_A?Z>kp1?l<5-Lr4Op|rN;!<=W z@S08)ro>>}0W&!44#WvO{ztn3zY-V#=niX;Wo(zg4{Qry9)Y^Z+5poGHN!9|(xz%; z71e73*{q7;TS&nSkwhSm4wFU*F9SDFEip7f)df28;b{<2Lx%v6gCVhPp>F_{Ns3)& z=g#d`WX=&Q5cf(%Jd5D z3_X9yphSfzQQ>(QGF4V1fE7hp2#eJ!WwSbN$Da_UTC8MRGPH844uy$E42(zyj{%+& z$ReVGFq6(u0T&rNOW8*NoUr%dJ3Ynd{Me8ZI0}WRQ6kkM3P=FdWJV?7S2;k}M7PiB z!XN-Rxg9%p9z1vmCe3cQd#kHYocJ&p48hS#^^hbdFv4ak2te{6x`poUpf=A(@O%04hygMu;(i6}zJ+;Wth;4=VSS&}L2!<=(ATRN43dQh^EQ($q4 zs6-;EdQk=nm>jwa6%y4YRz=X7Od&T_R*R$+g3lS$ywW?#G(w$6jy&Gd+yn$~v)kVN z^E*jg0;=cabSDU;SSrpyO)ojJN&Gyt0OE)O7gtk~s8EdVI3PBl02nN6G%|LcDwc7U ziClms^g}0*=#T-d=E#aL^u5gsyqrbz4YG?_qK8MpmmwygIsb4ttaef<8YV|#q81{A z7|4zzbB?=}D0>mG5CIU%$cU^8+DQ>X0}u%;4T=v~#%i&oQ9sYa&V}LI9d>j(QZbeN z0VDsnW7tH zn>%@z{m75HkmtKY2>A8Lp1xWuhSE;IP&9ES7)0*;8$PHk*1D`lsqCe0m4r-0#ndpPXU{lzRH(;G%@rCDW>uM49 zD!Gx-Tc=NdS~j_^Nzu*j*sG z&b#mY+rRzR<#PU)zyB`)hJW$eFGzp5Dmmr7K%gQ`OK=@A0@{^Cpr}I4&Gc3+#Q^#WowjNFKOAIAN|24lYGk6%!cR zt*G!+Rac3`cOw#s1pJ}92%-y{tFpoa^G22r>E4nwoWJTtgreeCY2VID7W2d8+9cVSX^+pVb0Di|Bp_^2F7YOBYpYh zMJ+9pslbq1TU+4WLUr|Usskzz2&%^b6A0AVcsvPgJ>0O$P6Bblu>kJ{DT}@gfCs2e zM{!q6RSKr-L~_Bx#s^%g-^iHexR)f7Z{U8d5R{JiD+ zRPanqbvFk7(L#7D{b`-pSi@~tHGoQyx|k`7 z7yb1Vo!0a15-i0UmrB_0a)s(A3-7vZHMljqMDSguY_`GD#42mD)|YMtmUh{|NmL}+Si0vN9qCdBJSEhSyW zii*nJdv*syA^H;l-S0mA^ttor02e*}_~QVp006^vhr^yur{8+(?MO7TscqxIgNLT3 zCszi*(8({p_+of?q`9f_nP;B)^5T~_hlUpB7vk|4?D*5CPv5w4v!lJ^vBw_!^SghJ z#bSWTsaaiBRh7q6seE(lUno|a6&PsEyH8d3?%BKO_fr7e+SdB~3(rZp+=-JXA31Q~ z*i%mp4-G;8D=I4L*VhjW3<73$I$eAA?B;mx_22$>#oeL;EDj-7I;yIxPn|k7H8l;~EpWy+u3rb{G8T&qys&e}&dSP407cNx{rmTEEI&Ux zw|f4b+AC6Rla_K&{|C79mtX!qaPT&}jYS(~8|)q8ugIeki(y1T2roqgflw$EF&J8n zWzlWgjSoOMyZ3BAd}x1lO|{$Q%t~2ch;NNeoH>1NbadR@VZ$5H_-gz_d7sCR9NfEi zM{{!%;3en})B_;=i_gEDn3ysLT`wv{U4oh1w{KThS9@bqBS1MtRR9eR4Uc_x`itr5 zS>t{~qD%Fes6CTq5_vR@r+}=vI8tQ=L%`nNy}OPd|BlsaRS6F-qTUMx`ku*;cZItTYj2VD_?%lhyy?tZH)-AA5=?v_@%;@OEr>D*?EG$y&N~K;j zISp0)F}fzjm{Xvlj*iWT4((mPzRvDIPvb;9J}@|Z>Ec!2%v?Uc0Z|6BEL~xyU{y%> zpg-N+TeolD*4*6SB#s!c`aL~^Jy-kY7yMKit|zag>;M(UNz{=Q_1ig_u&0{SETtUy z3ak0*Upxn=glG{In(bCa5T&C1Fxn=_#J&97xl12@a7y>zGxR_Cu2M4==s)1q?(N&Q zZrxN-Sz)oFbMlQFqt~wXO-=cTi>{*2u`&OuK|d^A3$o~5Z^h1?-J7?x!hs2U8IEG0 z+Y1-2%+1a-CX<=GGc7qMVXM8~WTd7-PlY@gdM}}`1OUW84vAn2O zuYu7R;B_@sJ9l-rwY5}LdpQPk^4+>MJuq-{Vq$WY=L*3uY7Nx0v#YJG+2L^7ZPrve zJvKIV-$^zuo+|-;*r9)vT5xP5a zq)_hH7 zy}O>=?kSdiK;KQkWc2mkXlrc(h(&a#%{di#4&Y02;Xoh~2_Jmq08c!}WEl-|s9hpM z%tSeIsuF05_I{WZi8zL(F`Q2VIB#G+TrMwwYKGzAmOv=*hd2K?c>RXC1A$=p>eaz@ z>#F^Wvl}*8tv2BE0DCiXHZwoB00;Ra2lfLu&yYwb#GaG5l8OS2JB?hOo(~rN_kew5 zsaa_v7+9>VaC@t2<8c{&0UR6&2j6<@Ps2mQD@+Kq2s|ZSZ#4KMp%|&?y`f>ftjL!x zT^b%5xp4zWLEkYL<5)}x7;Gu(cb#=Fu)=!Z_B?z;#bC)h&MkGMqJOGSG z$HrkUo_OL2+|%DbKpp%@_@XSTyGeAGZ^|Fcg8ryEU?t%*fLmAtyUk92T35XeaOsJLlfBBOiZ{NQC?AfzTO--$>ttU>LkjdPx zvW$<92mAr#@~gb6=3cAW0Q>!clPAwOT~1hq{rh%VcmNfO!!9~qj%z(P$HvBKi1O%C z%u`WO@D3{U<)#$^=>pEIt*!P}xM2IZ9TuluoM6$OqN1Y0{Gj<2RuujX{ei6(o5fP? zt*mrgF}ak>D$BMJSSPE^S7NsSW63VIc(7ss=rm9;celjcCX? zc1y?R#~(Wg2N&R03lBuawRd1zns6kl&;S-D1kLKeSwj;V0bzYjO%0D6*wfLm*=i9v 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


X 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

?C9-?zWlAH8RAbC!?Y|Ms{8zD* z#g%_du0KKPL(`vUqLXk5D`H|rD8v0uW&??H0+L|%IH&ja${8<^esBxqsh?{s&$rQm zUU3|HbUbuS^VM%W&um>2@kNBd4j|YyZ{*hx;VPrGKBx zjE@F|{fyIeUd6)_8fbLg#qDYzpywfkvVRnA_|uKTJJZG4TXDS@LX4iwN6jbheCoRC z%dg?DdF9SiYT&r6${*c%_8fV54N$lA06G2Nle zj5=C@at9Ap?<9A;$;h~Y99ozM66`DAG2x!>8ptrRGT^s-962o<*hvCNtqS zw69*IQ{YnlMP|3a|4mbBgR2fwXO&%-;%k4jwUM@8JzT$|usN|)oSxCwDC<~~9nJ^~ z*+3TqZ$?ATB&3X6Mxm5BwGN{)IFxP|RBII2LCIOJUbbZYEuu+{Zo4oaq|D)3!^YDy z&{^lwe&*_z+r~t~l>$e^G}6@MCETB?7|SM%eg}}yspl}X7G*qE9(nzpDr_Fef`Buk z36t~>D|x<)92-rV%fbLB+XENzfjlG#oOM;z`)x&?&JwKR?CEeWE3$>3QT=n9X`NIPoIG<4F;R7yVN(2 z1(c-5)>o6BAtF{!quRllK(a_xIgW2xMV4t8{QxxWsZ-r9_j<-sv7&_BJEn(GR*z#U z{C-f7r0>|;-D+^$^y4?4xaJuM83PSPHg9awr1Yi#`qtQ`=z5t={z}D4{mk_APXm4jzs>BN9I{Y$T>Z9< zAW|ZD33MK;qN5g@_Z{7pt&NR$FV9Fynpuu*#Gk7fSQd6|6sAKX?UrmC>2~lGgT%z4 zlA;LG6gBwE@K(vesBktGB;YNNm zS?p7;Cf-Mn13;)_gH?yN9z=jOA^CqV>i_XlW#w(vrq^PF4bc`6M+HXBiBi15!_-54 zp)v5@oBQ654ZV<|qcOn1Kq=AAld4H)T-ragyYP1D{K0~65%%5l$?TruI?i!0pW%|V zMkAK`7qHqIoSyg1mXukXzeh&%fJf5JoAxcwO%fA zO&&U5V_{+P*VyLCfDn_7-9JgoD^jDogf(7*BcF8;-lf89y?wc~RHwj$w!?u8IwM(B zS5=*p5=dK7gPAZNgTnl7#8-v`gLP1ZCb>a@9PzTG2u&>FC_Ewd$&V$U{e9utu#um? ztr- zO~2$i90#!AtUGNAgKpPal5BQ*+^Kz=rKdbsp_TVHqHJcc zNMFY>bSC4sW{^F?L%i-K(?p%WdNFfIMebhY-lA%~0%|K2e{CHUXu|OUm25+%Ip}XK zsTh>9{XZo}Y2RB(fD&A_Da=O|EnJl7riJsqo<!!q8>3>mt-LS)Tk(hfBtI zvuV11k7rOY5j>fi8bm8ATuPCMm{g4sbtw!y_noam?hAE(H%TCwM9l;vq!_Y})vx3XU(hu2uV)}%e4>@f z?|?r4lBe$=Zv2D{%IKkgvEq+j6ue0v(!ym&8xJJtAq=ZucR1|xd>B`b|oVJZn> zI4f)`bf{<63#7>hm;b_ebB2_yq!`{pz9H^<;QX9UGNn82`vrMvDTg$JC6Y>SRg|A? z0RNZmYwk%lRJM5Ynxh00=mMJTTW>J=nX86{aKSth9FjE3}K7f}- zb8rmrx7e-CtgM6~M}d)drJ8ldn_a|iDH1~}TgIJX=qS#!yV26rbQj{{%*KS)EakQauK)Ph%ceb%{3H~!g186O?!IY zfs^y)|4NlFcgi_?^zQgOo;eN9|FwRcX%f!`C4|GaV6IY18$cUw)gCVb0|88Q6&NU< zDoAR!M!ar?OE+Wv3uQ7_q*c$&sj5zZDK=Huyf*wWeT0iiDyC_#(x$--PpRMLnT2XI zEQte(g(%S8`9WYXaI5A;^dQOO3FZpfUV>zWCzU}!0Q90b+uPXq^f#uiLSZNgt8lwa zXv}x?$t*n%I#{4Vz~@pF%y{@l9tTPkUp|~d!ALYg}9=C{acSds)@LkGJ| zv@%(fUxAp=Eej0`;7SR@hBL+rb=LhHVca*Ykp6r5!ouoBs=~F&LtE!YSF1%i;XS*; z;p3B2um9E);P3D5{pN;{2M9j)5_XJwBX2UaUP$5EI^=S7-p7=>AisjKNA%w2?p7Xq zjv#XPFkr!SAiZmgm-A7dJo3&EFB?PF2_eKf^)H4IRPfLCl=t?_dhLRG+a6pWDfb?5 zpu^Vo{SD{^jjcdrK^Qa`0*ka~6-E6YH0*y*Na|cF8-nP|8)>y^$N&(o-;NoKuh3Fe zx+&i|w6bvKFp%hDB_Oz{#EM=}u>=OmE$e<-wYFNV6wo*L@6sL+XHf zj&(~xR+W1gC=yXbuTdoyAVY-YTe1bny%uQ?ilwfvw{aoo48P0^p_p2j9CJ=dogsa%O3-Uqq$?fmcEUzP>Is}H<> zi~GYH#I|(flr#RE)4gfXgWs=a$(k3P+7#O}_kNYZ<(2yp{Hk1q$=w&6!5lv_$!Z% zuYOKsYY`Qr7Vl73XV1 z(^k`XmtoCHia^$e`w_+IoXtWq6^{u3il~MbdBN zJPh(z3M2l^SI3~9tJ(pR>xP!o zeCW^$%2FLkQh|TRzMVb){#|l1nuIrSyy?PaS(}*LUv@pG&T1ccU*Fpwlu|*Y5Y#?o))MUO@^cg8W7aKEWEtnk!U-qt zmxu&kFy|5_Ueolt%>{#Jw>Bc-B?dqT@Bc1ITR<}u@=kr1jgQ1ZNQsnRpCK5@t}%hEM1t4x=kU;&1hdtlgTvTr{x2snNFvODWED2JhyTQ9t6Y~B`7bsK8b z-qmGO+fDs;t@sO}9eG(8U3>(0nzIf&Orp9PD1ThChNS&t2sm(RY=!_4$0G@23U`Vp z8EAJx*^919Cck=oD``?sI1tYrnl~4&B!K4v z*1ha!<65lG!d>9zz=>bjK`wM4S4!@@&na&5=}(je)YYG?TCzqTki)=?5=HIVMY?SJ z&)QQ?X?IhWlxTyI4w07bih@!8;}LYEQ%-for;@dHG`iYQqeqr86il@0$1&cOUatf_ zN|+^jC=Q`!5StS&JrmAlA{iw^b?gq}j&te5639=JPUbRP#tnJw!+~2M>8IkBQbwj$ zA0UxS*Pede7lerzvQrFsu1ypp9&oGK=-5S1CgjY26bbyXx}VB%#Y?gvwkhpvnePG= zzy^Z9D!?R`!X&wVB_cXX!sks!WMhFt!?ig*a-~$r6iJ8eh}-ar;3sTFZ1W&N$|^Yr za@M4}ihC(heQgeT5J?GX6%N1Ya$aPXHuc}wmERi$?5r1TqkW&^BSM7?4i45{*1C7a zZO~1;b=!9n@&(+UjlHcM#PQX?Ye@0UO6(l4e_5oMK`V8Y+Sox4T%NeU-J+a{>4fPU-W7f;7?tr$& z#-d>47?I-+Sa5v8Q$`7e@T~N^vggC=>e9p`F0pYB9(Q*#xOQ~1n52czFD(YS5NhE} zZVp*PEO?Hf_H(Pg?LHrpSkgnmx7ME`uo;BRDV)0gCA$81lRgl7^Bg#(D^i7I5I43i zE_Qyu@XRCt0G_<0%to& z=N_Q!J(;p$KZR9pc-7Y4v%`gAM$=8(kn*-E{*A}kIbd%P>i99Z!a+P>LNFh#wl{h= zdJFOmG@AtO($&Hph{*;25B}&-{eShT+iQp(hCzO+KMItndQY<@1zY@CVVEuRhWD^-{fl+GMEN1&ykUvuj;60P21{LC zL#I}~cvA}Xc_ONxOu8QUm~7nrVJHs z%o(^hw>UOGKEgH{OiebzF2dAxo{pNLYgW%?`QhAy$^W-|b5&mdueY5i2tzGUXLkZL zeT_W&4}h*=tT4ZRt-)7sU0uC~Wlde?RiKt^xl2^i$q8KzJF(j8;{$}S>*{ynY}lp^ zZK|`#eMsz=%&%%{m(FD(1@CoS$`^z}I6r*Y5(Kw3d%PU{e$7x&lJCO?V#9}zNk*PB zQ>QmiDb<#$p3vXz!^xhV7cRQVjw1X(Z(>9SwH$Zt9M5Og`#=&Wf;iD%i5O3t<)2bl@D^(R~a4GtU{BuJ-+9br(1G9$m|%wy7X(_s5#x9T$huVMi*v?Ldg&4V^{;p@7%-Q=ai1 z>)nF@DFqG9J+B0#-;Ri4wG&-v1;Z~IHW054?VK$u58B(wEJ(k)o>5KAFpc&|-g>vM z{X+(w&jw>AOJ0trWAD>!E$KZ0lI{_vZ*=2?jSrd#l1K-+wj2%q)>A&>G7kj!uF=FGLw%TxKH zlE_tBRbYs<&DhiNP6jO3*#8dA4SO^uj`n1$sSd`W0Cm+P@6tqT1^x1cIqy(H`cb2GyJC4Z zxGz9vV1t#g13#<4+uUaZ?Z@zcY{+3D3GPyw&Xxg{L{X8V?gLd}_ zjx8_I_LY#yb&_SlSE&svsa%?cK(e4p7g_&)GnX4as#Pxm?L5}Ct;+NOr%h}2hTpBN zt)-Gb)0i!W=MP`l9U{UM+U$2|!?ilxwIZq8u_x3Ptf{(qc$(}5IDY7dftIlm#E0WD zgV4M(E_L@yLK>IsF}@OFc&h%PY4R$l!e>aqon-jai`la%zo_kz2q(#7&^z*8s|*@q zSWs@G7K^@)B=JU!^8xymPPyZ~_KrCKQM*@BeL7%5LA}5G@=~$WOKKWu7Wur%!4@9! z6HS;a9ifj}?l!6z)NQlqGHWuKb&FG;qco)+9s@<-aUbs#pa1Of4H$B}yuAGO*?-Pa zZ}1nG9}gmfLK<=4yN8G8kv+xE&R$y41Oh8Uxw3L?Yj6M8@4ar$GQKwUe6knS*m>T{ z)@MB6jsH|U?HhFWE%RL7E9c0+?&YVwIo`Wz(2Ol-E+!2JZ$$s5Et5+2D%GdsBs9@i z7)){E*JS&g+sNtaWLl=komdNA7J3mFDONESO&3f|Qo%tP$iK{=KA68GSrkZ)VK*5uwmCxB z+)-qlq9V*ef9+k&?~cPlVy#k&wfT6uJ!X*hs=M$x1US?au-@^eMb>TUyw87oJKl6` zTMBr#PiML~u?k0?ziLSvW*~DpI=>hfQF@I~lR=QtB$F4W8pkq@#1ER$mLUHjhu{Pq zR$8ub3TEDUMzlp{Ev6<6OR_9%X`0P1CkX`2W)6%(@pBGPg(;VHF z`1gPt)djS#@ag*}$Lp@CBfGO+M$47Ex<=nnTNlsm?uM7=l~<3)`&ZL31GUM-{R3N4 zs7>net~0=m+UX&xe+EM7aTv^Bnu6SoP|3=n!nhLjg}8PB#HI`+g9gDcm^HM9wtmh~ zC>|vdhcO*HZB2V}(U_@)6AEI&m@3dv+E8(2(7af=ngiV(Z^JxyOO`TOQ+_o5aX=JT zifdb6Sas?r$WMGbgw~t}zE*w~C<6^-(~kahdfj2r;O4pFCuSxcfG#o>tt(`?sYc|g z(w1l3ZvrTzh4)AH5}~9dnjfl~rT%CWmGY@AZ{rnmTIurd9|BXQ+1G8sAkz3IbW-#3 zG29RYAP7j`pjff{x zdZ;HM?>7f<ZemVU9{8FN@vwF%&Vq(%|v!2 z#E#>YBCLwOlpcPvljsPYA3i-DEvw^G0RU9>2A2;$pI+V!5>EIob=s4~fb-ekLQ3!I zED9o-rpW?Zo3>E>0HlJ>Eiy-wLtE4Bt_o_Q3cAy`FEYJ)riunxGLRslv&*1~XgWFK zaqb9P-4gqsVtwQO%9rx$y{ZIKZ0x3NR?Yi}+M?p?sbGg-(ez4(S<3rP85P_$J_D)` zn7(Gl3lr%d37DO5yE`mq>~}4#1qOvf@fQ0xk;1@I6aDW9{133x-D7JWJ!h3vSS1K~ zc!z`m`>QUhCo_}SIu@Bw7J-CPSWKD(y>sh4)?)g?-lMQcwJ7<H%l%3XtJ7p-N;6O7D!`N+b15pkvgK|CkM?y|3&*V}bEz9h6C0D0v?h~+ zQ5q4oXe4{y3&kxPNPB!)f5_PO>h{k^8wa?>~q;2_oxBA^Gr}~ zt3&B#UEASRY-;c4xn&=4keZ#&wv;Qtb=pz)ZFS%6<2^vLm#*SK|K#1xgrqmTIsA9F z{t(7bigMJ~pVFE!2jU9shVMtpH~7|-(-Tpwwzl^?-`Ni+@C9ST_3bPBQs%;mMqT=M z{$>G@V_wZEV#!#M1uz;`xhD0HXQ<;@z#sP$M`-M)oTTz58T^+flff{(xFZc5(CN7H ziHR9?4HCmo|L?lV06ye=AFh)x;Pr+L9&3+r{eKvgG7R(4W#JC#f!p7cFtuC{TB%#?Ty`9KQ&>l0w?{D!-f!75+(x5cl!<8Z7w zBj!4L{hQc*IR4<}<8?;h^+7n*JoQhQcnvtg$gmn4JxtZ3H*Y*-oU0r?s&ingz z()G9N<@(uhOlYLMg_n(u4I{QHFw?R3%Q#E?UkqnitC^DcAaO}*s1Xdr0&5Uus9|Tk zfMS@~-zBCMw^+6~xG4lOp~x!vLby_+eg%i;neMO4vwiMOOUv~%D_;BoUD9P*f(Ma+7b%~$Hgb5lQH`I^>FJYv z_u3N7=ZWox69HyJeQ!r|*ZYh`b-tDMgiIbIoY%+>peOxa*WA!a9}FjeD%`C^UFtP4 zW>*zT0?*9tRRV<62|ZnzxFmO!I{L3@F$jt9p+J^8gz#%d;z3MtxwAp%FLv&*fTCTh zTeUS5Cho*cTXr-;gKVs0hPYBKr{$z=R}w(_0d*7pk3wnlXrjWwIYlp5YUOBlQ$5-P zi7^Bm?O9IbX-Y&!VSm;c&oGb4@9a2DhlyZAvPlQ>OvsRHD+3x!F5k1Y)xc2O$5! z=w*_QiG`KXr8n(F#yHJo4}ly)S;KPl{$&`@yJX9*^XsoLc!Ym?87J0AJ14fu=hW0- zNXSAL_-njMlrdIYl--2M#f5F#`ej-gedOSl1*ZP4aH~qF5O@~%II$esAZtip#$h77 z*tL_d>JCZCg$qj$vbpV<>JDd>La#8Wt!|I=>+$)DjoQj{2v3{C&R-|+zulN#`jzU{ zv2&do^-G&qEikKWb5yTdaPFEaw#5I@m{$SK-T+=oQiGP7T9n06CTw}OnW1jnS_Ys0&${npG4W&ly=aV;g% zKPxm-clZt{_G=hgYu~>?24$hLX)`pFKI2jPDOS#kLMmgE9%`NP5B%tzwVNgL4`UTG z!*Bv_NiEwH1%}PEFjrsLm~bcWotVnsPR-cQ-d`^7*$)lCb$VUFLRj}eKp=$wugvkp z(DOIyy3chi^^6Z>9AH_0L8|SMggzDiW#d((d4(tT*9C?!_d^U(A1^B;(js88b~`7)smI>KgjFr+}CMl*6Pty6W*qzgPMccGpV>d&de;N zhv!^h^Q7W>mJa_cKB}ZW^zjp}wQ64Gdxv1ICVWH}Q&2K4wF5QOk<7uZqrxnC3)Qri zjUtOD1RYJF=Awl@SK#~ha^wEK9-bsRY~N=k{o40+SiZQSry&S-?AST2Tp*y?-KKu+ z!o3UWYKNoKJa{&51Zm)>;wDOd%Jd2SGt6+EVO0?b<)#}`+57=2Q&b;gJOH-8(`fYb zsosYNF$X-7Nv+T*G~LW>CKu@6(Qa@51B?r;{`B`;tyHak)b_KxRBupqwuN5gC9&7- z1wBg7$dEZ~Tst>Yu$W1k0m4_12>CZRKTuGcy1PG{m49JwJKDxDtJklnj14Iy5dDmH zKD_*i>eX525eH1Y9!t3dawGZ1>T3+I9B1wse=r~t(y9g^%N{t2d80zi%_{@8JR0Rg-$3^ ziN(fmPo$3a8?Da$>rm87eJ7M?q95LugDph_#CG-0a-9(%tszo8FxtA~l7(Ai$9*Vz z`mY(lO@${Y`kip}mF`GWJbk}iqau~lYr>_5czq`pvVoO4(q(^7nC@-TWJI5;cDD4^ zTi~VAu3c1ygtVHiVbSYVFMa*7lUZ;z>gMB2`mHmyT}^%c-(EOkkmrFgFx-f6u*rb8MVr8- zt?MgHxUd`!flzx$UBv1J&A%ILAZi=TK4o6VE(Ycv&=__bKT1;}JW!x!fB1Vn0iTQV zYN`=DhS^2(y`#0XHMIEJ+Ygp+3JJzy316GfwY3$v*tuO}C11QX=aAemcr8gY`Ti~@P4LQLy+xXE@moZ9ffaBk2X>SHn6j4C zwH)x&(0e?tx>;`N^o^;UFxTlQtSA(NErIHy7w}RsFp_OgP=A~WJXBPqNJ%f4D%C|= zNlC;Kt8{VJ=-l;q7JYNxiM>ftlJKY>8Ct1&esB1m_h)~KhA64*(k*? zH*cj!2AVd<2heGBglYNbBeNID0=&j@u?M(hawagvN>#agju|%!siNf2kIoK*tsQ`) z{q~!oqhlgV*)wkbHOn;r=RXsolQ4L!pG(nYR#<=$S2>x=v$sJvT;x-XtAw3^mJX9r zZ{4jMS2<_B@G6js-9@LU-8yJ6-W_my&StuL36k{Tag6%4hlT7CxNK$DeiJHSR)dBA zm)?Z6OsY9cc$qxu{oP_(t%OcW3J~Lne&?6IbmwP)>FfK@6mC~&k~q;(S6#jU)Vfub z325rE$+;LC8{a+3sGchH5KKE?dafA9mOU(xn{_i5E&GSKc3R>_6|7wnw~b{ zv`7RS!6Y7@rrQA_hXDoM4^g0qZZH{bHQ`GCEK#*5TZ>1I))Jt;PBRsI;TMWT)B{Lk z;}WvRvZljo!@5CMfQQa_-ivfM+sH)I&7obQC*VtWmM5NYOOq0oHZZ!rfFcR2DuN~7 zgf=!W^hiu5#v7mL8b|D_Cv2A_aYQ)GUg=PMCS=aKF-hAFtTRnG@dk17nTi1HC5{wh z=l}iecd@0L_JT1!5husnK~Y%WBj=5*rRac&|0w@=auZXJl8tTw$!Ae}V?CQ^a3!nP zq3gg(i-Dgxvc4XoY}KZ^{`23x-{&XLDR$J~|M9_#=4)kD8DJ==wiHH$X*-dfpGAWi zgLjTsUdCtgfN+F3O%5RIPPr~`^s74v_mjkDIB5?me7dq9V?8%AAdPm^ypt-j=!@2q zN}1mU?cYW^t9r=}eeC1BiaFYLKOd{gN2QNP#fO=ZX*Zh;S+AdX-u86CwP1croiSJc zTJ83GKgQ#*H)qMZjgra9$;u`MS9+Na(B6n1VufKOam$81$rc$wUOUa`urB zYJ5O{9dK)C(XLgbrj8!q0+<~)Z^V`=5|-n_mxm`F{(dKi4O5D%vK}3-UBkg+y&4;8 z=ayD@Z4E?A-b(TOfqW8Qry@8gxZUOddC$;;kB4W&mZP(=vEzULcz1Uf&^!Q41=s&I z!8~78_5`%$fArkxS=EOh;l@#xWiVluiW$*WAc9P^-eSp>t5;+Eg2$&rK{KNx&U{g? zj`AfG98^@`FHkq-%9(JCqW@@iyuQ-gyco@Z1om7n)&wpgN`DX-F{gF=shXd`IGtyl z{IsG&7p)?F9OrT*$eQH7X+}70m+U_{wbH>gzyf@E-4uI~lxI1GI#p<50}nF7<9O!X zc~^u2nKt;M=WVqKJ=<|4Bmm{*7SSOhjYXkK;Fni*|E{8vJ^_h+4ewSKGZoR~lpi}W zJ%OVgWxXKOY&b|3Sa~zR2J;^Y-IBVF18`m0?zmWQ;Aq$yLbSr4FOgDA!z>l8KvEo% zS@=620P?{_nD_=39DxZV6&7iUPFey-h|JlFVUWD2@8QtIGPt(pW($o*Y>&rjGv#e= zG5zUlQNfNrwio|R;P7x3-;K?!<5|!)UHMP(NH5m}3gyfvub>~ zm^jrt-$o0wB9;jy*d(;pU1i0MhHX&t;^U7Ua{i3Ml%CG|)&}s4$&S@L!i4NEY-KPcgk_%o*7dXdD{q zLRruS{>f622L~o0XU^o$+wUIzNLaYJ_sB0eMkPZ3kYknjgPR5+9~HU{1G&;ejbmqp zYPD(8aa-Q}8%(?8tCyVZHtv04C^-8f{=lISX5dngr^$D-b9KCoC>Js|F$y3#t^7fa zj!YGX#aNF*e2g>Y&6s0k3O`#6<9PYC&Z_> zf~{+5y6fiW%~L~8w>~no{E9{o5OZH=>M8a#gL1Y(N?{Uo$+@QcgB+Vo zDo|Hi>V|j96^s+L(PyywFl!w?pZ^5cBFR zV_R}aaBvwR{$rA!e)$vP>|KZy_b$Z4j49JX*3hb<3Ptf$@Uc)mdsQ)W z-}9%4_t2kAgh2?50!WhrVMKkwPBeozW(W-B_R>Lg7=zTQ!b0JK_+p)E*4152Kwpvf zE4E@38Bp9wFClb=nCMc^ji4HTj|Wna`xbA596EHn*|xwu!z1^Qm2K0vCJ$M_PfbcKI7g}s1wU7(p8nOkUNC(X}KUfAPr1WLgX&HrH` zt6chg6xm{q+n}<-PV9+&u;G3|4h{gFqafcYKkSa-(6Ifx!QohW_nMdC^1VWSuK~5c z9$A+|eqU5ycZxXe;TJF@N-g$NloW;p1_uVFFy9b)WF*&xq$KrYy9m9%dN+;e-EO3H zZHT}%o`{VX-gFq@qe-Y#*@FNt%+cxxfRt&n>v2HYO9=Ix6b3?Zqo|lM7D}mnVJW*% zlg=})RD12GOPL5FdJy^iqiwxnu4D{+agj|INr;F9mN@Kf@b%X6;p6rCGUaJ+ zZ(?tjAzeD%Dq!Ank)0z_C=@vpYR_`fy0wUr*PbmTCeUfbmmUAdH|Ix_F1>@jJ+I%J zTCHw$m?|#f2iECY%DM+}6!!oexaA?&&|(uV5x*m1$v}DDuLYvUlJm2OU^DB!zlEoS z6!7Lnp!1-XBps~3@E+2&M6zgA;RHqI9YK|$!ayWxvn<)x*iGPAo4_<+D$q(Y8*9SW zR78Mof^%p2NM%TL;*dPjzWay)R@zI@B6pclTlEDm(4^FGJA_Go=w#FU@&rNwJA`RQWkSt~bF6EB_L_Iq@@33?FS20Kw=<(C1kMaa7wk_*Qp;+OZ(M9OVi!E?TMG7!% zNd&z#!_MP^#7X3R$)>p|72h7}lT6Q$NI!L}!+D^9cDmR(lLgw;j$EGd#njwD z*@e=)Y5?&HYZ*qnWg@=qb??U3ClEAP9M`~kNfE-HHhnmUQ*|ebmNwsmS5JD~0MMs> z_bZGQ2Ouv3;y2c!4i65i@FARy&i5dhT}=g zva{Hh!Q87&ihuh>54-23vQ1nifrkJ7x*jSImAiGsRYE5tqxSUH9pxG9@?(>;J{4>_ zEYS)5*sI6c&CT6C{Hd{70C+Tb0k6GTKbyKgJ`UTxGiE`)e*&)aDaP{;1Jc`33 z^7BP3G2jEd_sgdqpAu8>*tB?KPx?5KH>;lxdYg@Vg8F*zrBsed#U;KeP|>E;y35$4 z#Oe1cJj-O%&rD8BNu532-&`vjDLr5@=ykL=i_){=##!Bt-uu!Vz9$Vc35ybchY8k> zyh8-`^x3lf%cYPy-cAtse7ko@lQ#46@;coQdwumfebv1oj-)2-y(lj;VUF3bm{OGFHhAw4s)}cxz0P6!WTajwy zJnBFt*OAvr?zK|8wcNDIo9(&n?d2E^zi8p~1@ea51iJ4{o^5G(CpyRve_3dY8msVi;1ORsQ*$;O))X<}+H-p>{OK2wp zKirUd(f~rvTrZU(1xnf~gO1M1IU^dG5Z`ImeLoRo{noEuJFf^erZ_TiI_0nE>dp?* zKpz6G@Kcc>PmyLN^_LO0;>~G5U>Rx<35C7Sv()^h6*%Cx%+%%s3Et-J?@q))M!0BY z97`2UeFD+0i&#_(rMbOkA#HJy76=?^0T_CN4)4zepuY=V3Hv8_*E;EGzvlqcAA*E$ z8)5368{Z9AV?NKxm2Y{6jrWX+Z!Fw?17kkYO+R3V@%!&4^S`g7{0;pJJwOzJvLd}5 zdG>5u(OtN9{=gxM=RwN{$F|_#-(MiKX?OZ1f~X;)`$JKeTaRWI<{l9a%MJ6a@o+&^ zl|xddQ`1~7SI0Rh|44C!Phu}uL{`SLv`o$I=d{jU9W(qrQ zcnTR3V^nAIo8A2Ev$mEQ6e|9JOe&Li)o~R-6F!|_R z9D_!>0^`5{^KqpWJBU?6=m3R+uh`^aCxp+42x#e_E?e*~q)O7E z$g#6vTGZc+#T7PVjdoTt6JGDTFj6lU3keQey44(5@F4?e%7T6W#MJYJua!+=uhsfr zP6po%eV;F%LyUA&yTN*1i(FUjbup3Z z8tOFV<&?Iwqo7L4%HaxNdD2z(&k**4NZy22)ELU9R4Lkr&Zo7*=1nwm@w}PA?P<}; zCKF@uCq(7NLb-zFY(Xw&!JN4i2=g%UOpUGnXf&Dey@hC&CCz~XkPxA&^O=7)E{mR# z88M8_+@=nHI8Q)?AVXxuCCf2G5@hz%tvITbF-Pyimh|~3Bkyseu?#IEMIFaq)A!!H zvsGY1is$6D4C4%CMH!gm4w=@|y+A_bHp=WVw>hkH{vBf_Xp&i-(T*@FRYG??cdSva zWE#X4Ds@?uIipL1+{N9^Eu+x{k#cm&I~0?@0Kqh?U)KlzdAwL1z-~_;o?XB(!bIg= zA+@geAyp|-i*9Xf3mG&Vb@GIi8)fur7LfFj@;2+6WDc8?euIYQ@!^IGz2V}Jrlh(w zay&qzkO(Qc_FB5VDOq?EpH{=J*9o})^7m=~`>K|H8els8>|4sXj&m1bW84^iEj^}g zGjsnpE)J2^j}{|w+^PG`mw=2BH}2jyGH3|pBE(Vpz+Q=4Dw(l{B%$0>Y~qyTc!$oM z+4yjGiu&S$YE(2r%~C$&&~Sa{$QTF*J_nv~bbDKVFwDa7@bvO|KZsnH*i2{nQ$Tn^ z1LL)KHr~Nua3Gc#5oj@p=s;}KH`E8-2i)+9$(c`Klq%mwmmFEIo=r+RN2eZMJ>fi0 z2E|QC5JYxdAj+8ueh&X0TP96AQKcWB+;|_lt!t%1R82zJ{XML25-;IHcCR>E;$B>z&-M;!=ml2Jm3&ST^J;mVwZZ(0`O1 z&w#6^4IjwM)FNY=OIf6`siUKdZI|iiJO`|@&k0#;T&`2>?fz}dqyFBB1Gr=4_g(Ap z2jO^dOy|B6KMO*;0qFbK4=T@23*E>}fUJcw3_au*If)WFq!4m=A?4xtS+rGlXd+{* zb4L&!N7+Fp13f+LG%Q8_3IRT^%YB(r^$ImbxRs^oz=C_8Eq#Or;Jk=%*townmN>S7 zb~Ag*{7ZJb0dag1_+Mp5g1oB>NE~3#m^$mc;`~8~)F$6`xjH?OkuxLR%WOWRv}wuS z);4x>LM^QQGmSPa+Dr=u3Y?_Gd3zJ60jWDM&hzh`!5)0uvez*CY1X2iXOIba<1W>2 z)2OsnPzV_B@NE8jvC5uk#K>)A8*dE3r7T@a$qGx^vz8m3DJo6O&+NPR z(LrL-m!`|5C<~g7&Qej8l-iD*2NMKYA#Q~X05VkR>TCG*wWYQ7%cgc7|K{aULZMGc zx@~!WeE>C?OWMCuoHn|;(xlVir!(UzxQ?y$D%Z)3aDZucECo|Q;s~~^1DnV3k$=?+ z-fxnN3xEZ*LP3x3>-f+=h!0TYC97mP=fdoEDD($ zvS%%XJMZ}`ADhyGuYhHXc6))SAOzNEV8~l0>a8!+_a%qHF*JPiw{UB>`|I4kxYyS8 zYpN15EbF#ZS;z-<8oDRlxNLIvehTpReYp8b5~JnwCN#fZ+(;VlRwdxq+1dW`XX895 zI{z4!1b-zjEARCzh9T*PVWBFO=y2JegJ8yRY5SVm6Ytrm=0?M$@RVZ6^&U-1&C*Tl|H&u5;#j?;}i`Aj};} z%-f%_!@`^W!o1E%LRC`H6CXkI^?_;J$+FmM__p=i5`7jZw?z*;FR%TCCXoaPI#&VJ zz3#vDc26RVNezD=xsbLnz++s_A;btY?k1W1{Z?Df4l_SU{87iWOAHt(HP=njlMj;? zJG=)9(4VDP%BBH@9!~00 zsb@gU<8EW-MIi-}{O}7_3zTt)#^;SVSeKlg%`Ujy2JZQ2iqy3lNa}8$4O+iEIOK8EODvS$fu>RLT8ZJ|8D>ymiL@0@n zATph>+$#PVA~5JAQ*sY|P=#sV1T)*QliH|~Ig$ga89gA=c>jb3+1YM@aClK+OL|dd zG-#B(b(|IzE*eQ6wnEYtx zL1?Ha4)8-$#>>l1R;DezoicY{@E2 zOIlLtoLz;o2vUe}3Ngo`9T$)>$d2gTSGo z_tVqcE&gW<3kxbLs=mye8lF@)KKI6UOS9AS^ZQiwd8P+LEWE9)S~0RGMFoYe9^TA` zX*(*Aj*B4!+WGeP?cOx($l+gETU)|{F=k86^X2h;d-BY=_Y+czVhS6>4Gn(OA)F-v z$S(|tWPUgDFV%Yr4Y~0yGd98bL7)2PqIQKam#}k_cf8VRP^HlcqdpAP$-(?6(RQUT zEZYf6NrG@T{xM#v8Etg#r5KmRcnvo z>wGd*uV{>h;d`VhFbE0t^W)>q*)lDL6CaaSO~0ubqZW7kXH+8K?!457wIv=?x3()5 z1T_C}C819mfOic*ze2^B#dPnk_{>+h$FK3**dV4Dbi8(3U`rG!&?BrzC__IPQ)L+|c)x9Z-SrW_FwjYb;@KeCN6y1AKz}X|8=lD0*K=`m zvtSMW!-34QhIr>(V^!ywSLW&ykG`GBYungZ2$P z+cm3wr!D+2(W#VVhI9s^*nfXVtaLb!N%{dsd%_itMLK%D zvAClYC3JkNERhE9)H~kLZ66yGo-Jelt%(^{ZEKrI%*gQhB+&_}XNDWKV7{MQsajX_ z)w!K}6EV#bTZp7`q+$i~x*=8ti-L<);ln3b(d8zftv+YbNDfNMPbEcm2zUpv$DmHI zJm9ih;Vzv|FVkZpFVfpv&gA1hvPS1qGGXWi;N7iF+o2eIZ&S3Rg zVYk4gdm?9 zvo||$v4pU%oml={MwK*yfM|G*i?4L5EyHEk(IDGAKlu~pJSG(ON{|~grC;9&YE=uSQD>~G;<6ztRn1=rTz`k0SFe&SWUkFhiVzYZpwYxn)dlx; zWM6Rf=oN|2ZqqAK|0CMe+iW=loVm&tCBHe$l0X&n&GQX6(Cb3${2~0Xs6$kU`VVLM z$PmvmU#q*zzaYvLe!uHBZ}!uBAkgx|hRJ-l(peU(2oNqSvmk~kDYH^pRrNAbEml}? z)`cnnUyMuvVB=hIzj)j`eww+PGoD&a1?yD-tJ!kkZ!-mtF;A0quq`*w`hg1_=iIa8 zKFzcmVNDVO5~Ioi`mp$=ZN_v}coB1_r&g#^W!5ZX5fKq!+gvm%jLU0iSLwt`mCi$g zE6WNuhldhqHTx*5ZEBS-5n^}Ue9BuJpKaIni5j^!(=C6Bsjmi{a}@vHO`21%EAI2i z#EhDZ)=M}qUc235uNKij2z1;Fps1|2>DOv#CzJH1%9a{oCGArfw+`Yp)zLK7<+#qe z8kY;Pp~LLmba#7R%eyc=JwF?law(^36!N$4bjM4E({ZN*vwzi0ORvYYSb`meUVhJn z8!UBMzS0hjx&OoAkNFZIsxg<2*AG&j3ckBm|Gr;bTzq*6leV7*<%y^Kaw(kKb{IRK zZvrFasp5*|v#Lr1ycFRHFq9e6q#WW4I+(KtL!oJaQ0kh^x7|h zSnolexY{6tjn)fg!hrzV;Roo^?(c&#oqwzj4<`QY%Iq{szWPN2H}L=vt8Rfvv%r85 zab>G}q15l))!IAJd0NI_%rm&M9Pnlw;9%B~02IGa)rSlaUr0|k6wLH)>TAqPMeK@j z5P1DJcX(KGuzG4C{tw0&k+eFkkdlEmoxXKYboj5a=Fcm|ZrwN8^dhCs4D^36_PoND zrQXzE7@`wT9?vs*-AB{2S8f?HLLdHz8JE{rXlwIs#>U33prk*7D5{rv{lc|TNh5Md zs>Ib>&K+oE>Wm6_S8fURZxaX)*I6P^RYSzZqeXK#DH|eWxlA5>Oy}53f56s2mpK+P@{=f4Rau%W*=lF!;P?2_SaQt)$+HO#2Fq%2 zMtgAZ!<3&(8buSIR7Pgo=XL@erU*vH0`4Skf?R5$h-T{BzmNw#&e8Dp^3KaVWhN%X zGIJX`WM*UBvV#;3VuxMSzlZQu>MkFRjk@%5vkB|F+%lOi?a5o%6$0em$=#`xQ)+b7 zAr_E}u6D;XqlR?8nPLy0D^6HI*e^$f#(qW~RUn3rgB0YQV<@P314`)s9Gm__Jlkt) z2yKm|Jfj)>XL1YaT&iGe6c5o=lvl3R??cDjC8;s$mEd@<=u0sv@Theca#N!hll!@H z{of8+A(64*)V)uC_7df1@;=|>w8l+J8+7?zLAf8k+uVMkq0U1sxdQyo0?R(B`{w1Fn{QWcWCVok>VSQEjp$#s?`Mo?n z#OJIygb0)rN*s0+^Kx?R?Cn7zz=N^V)6;{Se&3{t&wrOI#CZaheRbOet48HlJZfsc zp3~EiXpNjuq2ih?hBvmhxGT?iX10`WW~OI#7ps0468}Ico&&st?173(W#3FwUDm3- z$)m%}*9d_J>_JK#&JHS4-YJ*@Zdlyak>rl$Un0Q(j#L6)niG%G)DGRyz~ z)!Gb7gjrfxU<>tO#7pp;ER3S-fo_pEFO$3YrXcU(I}Ilj5A(Z5g*shImT9{K==~8L zjaf%PNZ3DhM6dxm&2nSE;8V>=>+IOJ#wHILx>RV(i%IIQ`xaj0xn&;&q{2ku5(K z+U?Djehj60O+eO3poetRNYZGovMShl)CdSw3Vz(tCRl3zV5oX08BxdA15;Zk5(j{5 zkv2C}X))P5I*=z8Qa)e%_kAv{)Lj6?Rb`|5%6c(mbAwpW1`w&hmMn_zJo^TC5$Yia z)D{*p?b`f()@^{|ptB~44Oom6PcT73VjFD4ujY)Rf$DrN9GQ*y1E5CLMtpXEt)uW8S^j z-mN-pnFMlF;7To=b#SthDCUsc&NI-BD2b}i;_(h!q)MS+!`HK#^=)ljfjiy_-Z5no zoP`*;mb6{Y13q~xUpTdu%>a%w$VaDi*Gk9&nU5zOjv=B3gGoY>e~cFais>lhN;U>2 z6hzS#B`j2UwFO7S^sQFU=#D03iVxsj&J=tls%K+-Q(Y@Oe09)Q!DFYuipQ|RR8TV( z!qv=1^#XMNc5;7pdFu`1yZ@Pw?fLYGzw!f0|BSKtH5z3qC~ENjUnV*G50m8EqHIiJ zp{keA!9!C@fG<3l>e8O~>)oNK1JgtXD$OdPWyS0UG(l4hUMHv7+8ao}Z6wj>rLLNL zx7TvL?|oNpki@^3<^X#ap82U(z8@*Sg-eTDB5qbCYN+K0tq#L3Y#m$Xv{rm4Bl(XU zIjr6mpfF_PGO%#fLcW>jUGOD{)4JH*IU zxD!Hhb3LkE#Zk6ElQ>{CKkA#eEb)xN(w;hhdzEiNoT5td2Xo*fMe?fB{#jK=9dRa* zG%i1qrfn9LVu1-#joIX6J78K!L8s*zMLUGZV4{3M^u#ZZQz@)G@$NN92O!G~d&jtk zG95CJ8a=7d(CK;$KA!J@SG$-UQX8@5wAhZr6pzho$q(^r<8?ASJ!A zqXl4vu}uvO_z@d?%5o1&ZlgYoZ{9)^*<^?k$j`$Ac7#o_7Vz$MKUchU(!F%fJca@Y zS5dFLbWEER9h?pOo6!~b(&s3T2aV#EyL8UaFD&T&@8Eo;8cfTau3WniOBEn3sT;7A zbPfZC=U*2ygR`f?CZEAJ1)1wh6X`@$r$8^&`BIF$~zTK`5^s zs7*UJ>|-v{WRpgPZ2>c}y&D%1Dq3{V3xD0q%655gshcCgSAQqPQ?9c?{TzD^z z{*0Z2t?V)fMxq!5f{pnLlwCZDXM$c7mj53Q?C^T{HyI?5h)0u3v5|0U&{3u+36gOV zC#%Q2Rsx0bbt>c40l_7D@zS6{Ko(4s9wF==gAIOue*b1JQdtBAv3V(*fHn(It@gI> zeYPi}hC!GzRI*Zu-$1oU54C#q@XX{g;E1B9>K3fRqG7aC~2Or~+7+QrhXKM$OI7p1#T4Cr&t5 z-_5}gLw>3yG?>0|;C1Il=Ux?6EY#_71ry8j-rl?vbjWrXhCW#GdP_Gnr3fP*$T_-K|F|Z%Zs~8DzX- z&!G6_Wt6I3W&KmDh`X3t=+DhjT41js9TrXDUWU-i1a2v5qKpbGESACowgt7oMW#k2 znS8w2s~#UAT;y^Z4zW%*RyPb0!NvIn-vaR3DzIEx151x83e?4z{YfN{byEwLN-OBZ z2uuhyrf3!ro7Wih#_DPAZf^Sb_Au2O(g|`IguE?kV8t?e5N{ks>76 zq|(pQg{{Pze3*RmxdX+3q{EFD{71F=QC|UOs8j>t-xR1fa7%>mL%TA7P?xDrSVq7A zR0tYc)OZ=If)483#>1y8`HnBxbFaC_3XKM#+OWvY-7bBZiKEnboZ zlxtqV&j6gd!2&T!8g0iX$2mH`zLl19djtRBoIM0xEV}~rNb^xhQcD4V+!%;TjazT&q#Y2=EdpRf7Z-s|FG?utfNXXhDD>)u{rT^*CG zG7SX=G){vpxH(!yg*q}K0f~Fd!h)AgdiZSzv|CK?M1qkKHul8QQSvkc5`*YHnt{bDk@zkSq3YyR@EER z6!_;iSIA`0^Bbbw)9wUne?&#r{%G8ks?Y7sA3Cc4st>84o#_rxj_xDoRkial?p2{ zFA_>)j~)_jvXV~G$FcP`g>3054zPv}Lj{B=E&B-MxgP8FH$!;BUp|bPgX2bgTH`a( z&tPY`hM^Uz{ksg4db;p;%gZUuU+S&gpOQ_q7qGtUyp1gfH;rlxns-77-y=mMK#U3v zhZ5cOCR!FEt-END-h6z214YdIUMj7#+HCW8%67o?95XFYmC18u@M$MK7{*&AW}XFD z-Vc-cVx|u>#w;y8%d54uvlbv8?y)|&6{%#ly<`#Cu*u}nrif{ZkYkQ zc`B8g=| z0H0h9yTy<3uz#GGN#s`^%RAw%tFEA16j4Wsf(E0bm2Fhcsl*%v|KohKgo9!j-^SH{ z^Vr3~g!gVd&7QvOhd5vCkF>JDQQ=l+B_ zgoK0U=U;3bN9V> zJ~x_Jy&`Z>i|)qGj-kGPvSRt7>M)JY7gyl&)d9*Tl zC?9Y0`&S164YpjnaF@T=3!dzv@TE;vT{!}IwQKF>{fGay8p~T!Bm+MzD4rs9HRi;z zxxR`UFBP~Ux3dJ)-g$<0plw&i$IpjEzoq>}Ig{F_m~=Oc_ATE_bKhK{?^h;hV_cC; zG#rlX-w0a2LUFW(?bqxUf*_L|dWt92FVc}vXch=31YAf)Bv`*4U488{kFF&f4Hfjz zfF1YC2YyqQT%_Tk`-B4s@FDLFXCotUu|9a*2BZcEREDXMy@nktjt4WgRM~G*@DXKI z)=dmEB4@6?6gO>c^3BOP~;8z9wcT2 zIgiO_#|1glYkerX&tKvJSO6*+BnCAJrWnJ7Ne&5s?XNij`&dBv>e}2v;=*YqoF7bP zKl)|uBtp;aPWZ2Hf;!(xfpCxZLirVj25}&M!TUe_qP8K0xm?GT=GYX{i3{n$hv~|W zOz|y)>xS`6{&n?pxy-RtNu(@8K65Y#VRdx`d}&oGt)-m^PSpyXElF-z967Y5J4^87 za_#0V0qe{iBROna>s^2<F9w>a<+uKPd ze*OB@K!k^%U$=Ded`*oumQ|)Rj(xx&m}0>Z&N6?{8}>Jk==M17#3c@4#XX|QGy)B_ zTD?kH)oBzr{C;Ly&~MJltOXZ`EK?qSCaT~bVaH>=ylYMgAcIuaK;f>)?`S+y%PmEV z2{rI!c>2-|mht;5Xm0sw`FcCAE~0=W#Z~H?7zBJW{v=WvjG1;D;mPf7l8=N>xPoNb zJ@8$=Z`TJ(rNl@K3N`cKCURbto;suqXv4zr@Ac()z4@b>9>eK9`GQ-D5@|_QeGrLi}gX$7D}Q zGfz+)@X;N?MAbJaGfq8LUPfiyZpc9~8uxNAI{Gf(+R~}9zFD($4u+3*2y-nk12Pd; z!@|-}(vy=9uU&2-_C!dvBw<%D65xiCXHLF7o}d4tL)~N0;mX#}$j1qh(PO*DMLD+k z($fv}UcB8Ro3PQTo}8=<9(0lpmDdwv%d8LhtOO;?zzP3s@Lzdk4;#SEFwVSq*=YyX zVEOtc1H}StT$)&1nSZjdf}T}m|9(#@$mcql@k@7j>>Mjg7r z;o-wG6{~wen(*lyH+*9UMBJbS!}+Ma3@T|WmcldW{zODQ&7qv=l~-o{xfJ_#HYPaa zcU<9IlOWp^+?w%Sg!Q5+-1;B%V4sy|*2B^wmcWgsqDG!m^cJ!)-cq7CQL(}* z5k+|Xu$?Q>=O6_(sVydO?Fga=O>b)SXfcM{`U+W^l3}gzOAV|rRCU~^uDX>gkKAio zt?n&wVwTiK#0e4ht(~3pLGn{VsC(GHkl={n-MD|2vXhXsZzjPez;>`(lRQr(eqZZ~NJs;sNfN<1S<2G>*+bWn`b=UGsdy)w(NxK?e}ve_6s_4Nntu zyW2B;3z`*bH0xWmg6Kv|?)vMz8P&&rdRsro83!>QbuoL{oCTGRsBVEqL0k}t zoP?Igjoj?Ds%dTJ9b;|oMDSYgX1Z&h@3nVcEX5^04pT%Y&)>kf{f@E3Fdw&@jm8Bi zAKl$;b#dybNCV$JhgkA<;*Z*Aky*HcTs7xAwdQc**U{O-D=$!0ln}QtF#w7oHVSaX z`OI^G8{2eg-Kv94I(@tiat5JK7{a{1x%c+H-k&SlN3vokjyH8)#yj!kPxe-=Ol}-W zkPY$%_H_Vu#8n=A{6YRF<&)va#Lwt*Jtj}7e&3e<$D`ELVCln;pFef%$1j$QX09Df z88d6ny862}s;%Sh9Qym~F3#kA4xV>F+BHiWk7-pEcC6&;@A-Mv;yEzQ*jTy2>Xou` z(CW0XkB_f$i#kJH4Z}{)nlLZ#Pv*m+LMNg89Z(6jp`lW_Dvl&j(ZpekgyOdUFL^p2 zfLEM={HJP`o`OJTF6Rc7XWGEpAce+UAMoj7JI~)bD`kHeatbnD9mva_m@WNN_8wEEpvkx`6}vpb4%HBNp6vRF> zLA3CqLz*bpYQfA?vufk)0*3DoVwiVRQ*l*Z4N+TK%5}&vzS%+7BgxXP(lT7%&$r^a(}xH3*;b+{Br1u7&?MJ5H% z3Ij`ahw?pND6^FYJU?zeeUe$+-`_AUQ5=Q`tCPY;XXWGoBw@#ws#ePL{hB<64DCK`4g$9*%U9wKvOe)&VhZmk0KNvOfrZHDl@E4)vTK$NIpafjF zgC^Y2H3BJ)8C1-t`7!z?h75wAnsL4`{;l0&!>k}4Xg zWT+VUkYXZcT1s$wd6?=j##5l5qM>Aojb&`Wuz1bx8)F8XW|cKw?T>8q5K6=%D7K?} zpqUH|ulrhg1-!uC@}$}PRT_BkK=dx^8f7^EuP0w}o3uw^#Z&$YSNL5>+$KRy@7<{3 zzC{fvz@PM`LYhmwC=8wp3J!y0lu6P6-`^=Gsi>JPiq zm4;MmS(*YJVPY1vj5l3&eh(5UGbhY?YuB$lxPAe>Y~b7KRxYGP2aOs`JwU4rmzOnM zMZ|=J!7G>xQoW!+D#}7}Ho7d_kd_k@M#TfH_VX2hs<{@;+_ya$2io)J8PF}=cyMrv2W!4V>POJ85W z^Gt;KMpl_KGJD&iDIz6oy81v6B@6`*1SciSQ7TE#YMQw&vWhhi0q}Kl+Nadwuu0FS zWS}#1YfFp4quS`)bGZrsRy z1RXC&gvOq~)y2tvKdt#}cu9Qt^b8LRO(QUAV#I83uIJV4-SlzK<@ItpcW{?DWg~T}_SMlbO81v~LkXrbiM+iH0ZpZ+0 z;Me_wucHB@S6AOF(zgnjVjf`;nz{?*Y6;=r3h;}5dkwd{8#h72{#7V%-}OtxKGY{i z51Q;Ug28ID-bD3rMo`)@n2bnpNiy`-IwBdRE4lIF9>I)hf5AW)F=gtm{XU6LZB?g0 zx0pf>Cm(N3Uf`$i`yCuiF70w3_NRou5jLm^L z*@S5%u5rW!YhJ5k%aPDsZJ940h?h88DEfdK8hiZwHuMwF0Nz3>#!?W(0$~Vl46kJY znXmnq9^9~fa+ip8^7=6dPrG`_E;q-GPhU1wnMbx#HhO_|8cl&XKFof+6mz2uQV^jl z_0YTuy}=noO>s_tz67y4iB4r7e29wVmQ16b9Qf_1Ho%|%Ww8j0jzK#4DdQhbl#hSyiGyCy^ zTW>t-TUoiizh>v*=EkwMe*VURNIv}6p1;4fH@DqhzJXzqg+?a%fJb4x6@TpTVex%P zKzS0^Q(tq%z5P;*FfKlEdS(WU=ob9gI7jvM z!Z1nl2rm8b0f3R2S=<9XI8hpQEIW73kPVx42EQ79V#T-AgTgu5MIJC-qiptpnH!T zBD=G@m6eebi6KLcrLe_zzoGuLo!#O4Ks`E)U9T4_ioMItwsfpSpZz*J`$B?RP4apg zpZme9dv!NGqS&BnjWXJprH@ZUM7=-ofwuxmWB$jFA7y1!#6n&a1Vc$+dSr-Y$~q|t z2^=-QZ*Olc3UALJFM#17n5Q!_LVD8FU4_^uCJOTVww-|X<(=2a#m>twKo zaIa zC3t0d9R(FORLyveR!7sipEx)@J^EaT3p2I3eJm9P)rS26*0$|Dmn={k5cxjp3oW(D z2WrCh?(O9|#X&AIbJJlbAd??_rx3?xYb$5e!p;h8JYrz6mbj4wOywbBMJP6;ab|XQ zsQumi(PY}v64|8aZhd_{b#76aRnt7gXR0g>R2a!BfiVgMI40k4MpY%~ouS7BE4qtG zIO}@vjZb9_0)Mnbxp^?or9)YvZI_hwZl{B_EkX--O_)TQ4b)78d$mIwq&^cLc#e9<@P*49!|ldRN50 zyX9@^Y9`Xr(>l0KY%qj$&%K!+q(W{xZcp8`)5GE5;Xt`Ht{nM)Sx#lM2KaU7-ugdS zHr%USRo9&Ls1`KC0i6*@9Sas1t|dc%%7IyXUiq-`1ygW)uqi0i|wu7 zy0OiGWXVri7UF-88J0Z>DMH;=?R)igTzq9dm&B91~m%*pm&5A{w}I?FE6% zzyB&oS!SRV8(L)r-RLmQ5HLcIp;6IJBPBW7B%PUh zXlXR-3DBUmrM%W{RR3efHkW}n;&M?(AzJ_d6R46(wQ5nVg%M8@t5<)KP6k@PGa={U zl8?QMA25Th|2;T^AwaJ9g_<%R8H)-{fLrhf67p{FbMRrxO@_YKfBmJQ>pcC>J=w_g z$-PeJCQf&MUt8YfNoG3O(7qd=Agj=Xo@TPyZ)x1nR&g)ciTCEt+^d^zVGjr^_m!>H zO#*!19v0#8o^z)N7O;npy$G-45l$VuJ zXh$@Vlo!NzZskjlph?oE%Q^8TK+bIJwCV2;EyYf4>Cj-xQvM(T;n55e{62#5j%s!E7T(T9iOl!pt$^qcn>D{0U$PXRFNY?B=NiH~GZjaND( z?KvtNY>5d4>kd4a$>Pr@Rp{{FX`IQ?R%5_xYX}JlFySQ^H~^%5(k2ygmO{0A(eH*N z*{id-NqiL{v;Gva`-FzR)`SVGyu@`|{@eFymcCHi=j-?viu#{y0i)L3=7KU`u&v(x za>~(@OQ7|VqyK{Ge^qg2<~mGb>*`S255xG;l13Ow$9=-Q_n+fS5vP#c8U+DNOqfwd zus6iIudZiiyk-<_;c(vZavW!-fEGNRf;3{Mj9FjxJ)iS$?kS&)OK8fZ zz4`Ac@Eb|2;Y?Ll6xZB_{{|j8*_r<0XG4F>AhgAR2~CYTenAez_|+pL1}LqQ7qc3> zRF)M>lg({PCou=37Me2yanLje-NLDi;^%E>A$(J6h#?rug8(yXNRev< zs2Q>Ix|v$3JNG&^ynO0LvkPT{sjCYefRyU=(c}jwMz5zv!0~^Rtq4zK*aF z6M;MyxuyBzW2zAu*U2N7>gwvV%$5sp9a3IP7Npe}5l~OfzRBJF9;uydpnm+=_V)PE z(f6`%n&5jmBN)yx>QT4Q4#dk?EQe*h{Ve%eG7Ip@mvT5vF$337eI=K&aK$I|Iy7%b z4Xy?GE&24AHBw89{F_kcG5zXD%q7OcgogbC$T{ye03IP4@TS1+D5a<8r@MU%^_|?g z8y0~Kw3F-W>mfJN5R2+HXTF?qn^wm%>$c1V=dM)Q){QGhM#f+fzxt&f8+Sh5D+J-} z>8`x~=4RL1GZL~BIhs^C)E5)yIawVBOya2uWi!AZ@(5(?^DaT@4d(CPfqup_Z6NWD zF880_%7uGj7zZK*9A5+_U3O549oPBzIA>C=MRjS3^p>3Vgf--#5f$2EL;ndv&?cap8v z;32r16|ru~9W3X4;&RCun=L59?m#Qg%nI}->e!55Od(IG;}29v(G8TER=S{61YASlJOvB$%U`~>jzu$x8`Nd0%g|Y_X7Xms!y~}O zCGfd@+;~=Py!5#)KQiB6=;U_w-?J+9;S&%L$e!?{>0wTfb-`KRT+ho7%$64*`WB6m zzo=?Nkc~?f=X$O-u)13O5GxZmZNy@P8-ZAjwjUfUZMec~D)gw7dwwAgGZyZNfaEy+ z*BvRl?7+u=?)T!uB1l-&XR21K{d#vd*_be6Lx+1C!C{0yJO4`-Vhl#>RJ6J~oX&2& z0RO%{@u8(lN%T{IG_~!N2f`%Q96IrfsHVOaQj>ET6)$Ggg1z3T3)Id>gSp7ZbvyMi zwQ!em!Xv%#tth{r0Y^>}M&NYy9zft=Y6=O#fh@*rIBnq$897WURat>EFKIMGssU-5 ziNfBf-88w8tqb%c>fxNv$nZ*2ESIb+dhePKrFrOd@T%+O#8yYM*;nq`6A2#M@Z3D0 z6M2jg!3q^!pk9Q}2sRq1?W%(eDRbmmqQiq8FY#}frxm#yZGDE{?pa;=TgmaYZL1Vc8x6^1QO7vk(p&!4Bi%nU^hQbFifdEkyw5uxQxfHjhp-~dK;zFNdRo-A&vf&+M zea~58nfhJ5nmW5!-UCshBe*npgSS+q zefI~qu)kwRG>J(>nW823B=02Ykr-WWu-C6H31;Otj*3X2N?5&;9m;++pZuGC&Lvd* z3;`!?d9A6#GmZb_|Jf5?f%36uki4eH5m z!HtTcP$eY0O^z-Vvu1e^sVfXC)l$Qi!I? zfUmMaB%XFUl)|I`@dgcK-Iu3YaV&0b5+rg{JB(f#Nh7HSDbr{%@Y&jGlPaeQU?+Ak zh0L-Z`!ohQ=w@$p^LJyZtZi(>juu5rK%BtesUO5pGP}8yKfDKOOLur7j_dzu*$yR)IDl*GQc*hK&Yz!FRJwa)8(8y`{+Z6 z&+jY-<(xvYm_CL^Q%MqD0I1vtCmlpVR@NY)dtIy&ps39*ah6q6rO>Ls+RDw$%N!k( z7*r5br5kB&;ot5xbiEez{E@VP#@Qm7xtkbe&(268%`_Za?m;A#bNp zOy&sYJ+QNNrMHo!Q-FS&tw0D;VBP#D%EGP59Y$+fR&JZ?Am7raE9C_!J(7jyvm!lA z3g{NUU&@j8bq(82}Tz;|93DS_i5$is~dB)%9$Ga*bMXvsC-+82PX)NSO0Mp}7Bs zLJSoSArEq^MjStG`z1QK#DtuI_Y6GCmWE(JQOlKY!5Fhvm55jas8Gfbw2-PS-hCeF z;))cTfv~&K!LGcs^9I_7gkfw%j3Ze1{r_TB z;)_0IK(1;BM}=<5a*fbT%7$9qhW-o*#)zo>!YLR}9vzh&fVc(4c9r9cD(0*T2wo-` zNe;IZeff_Y;QxKDX!e8d-XYCnj@kIS8@_@40=Ec6>$lohqp$txgwx<|StiT1j z@c~@#ZVu96qg8vI?^E$>JqesR1M&sYofqbpvcDG9V%D>A7|Kc;(B;y`$7Z&Ao1b1a z8eet~#+5esH$cTP$|U2LG-WL+2qPn0wAb$;2eI2rbO*SgSRuJXKNei(56pjus%Rx@BY=087%GI zP23$-0hq<1g^)v7gsG?g+Xpq*Q2hial0bxl%Y*;*e2oL*CK%c1AJz7V|Hwd_d<_~g zY|nno*Q0V(KJSQl>2iswrd$0;3pdOsMd=OyxL`Qi{VB;zPBxIBX#J)LJu* z37X9H;Y9VQGWU#lSdlzwO@|Qv0d+-Fj3B9^kw%g*t6&@s!YJl)9lEz{$Q^nOc2+Bp zw$-rx$p>=)hiIg(F5n0uA|V51^;od=F5`^d!WM5jLntdKNLQ%T*~DDBSIZ>T^v1rv zz60gzbW0cge1szFV*NfuXNc}hq)Ir+eC5_)5P;&JZ-SEm_@IpQ#f~nDzZ!0=Fkqwz)uc3!@2jesP+nj`LydhRxlKIA8bhRG+w{TyK4sYf1rdF)2V!pzsj6*ooi z4Ia!aFc1Vm!T&-~#uiHy_4@q!EYo{%f^=6>g6x4% zb^M+dl_@++Da%YG10oA7Keg23_08HMn$MOa3{tY(aRhbx}xBHV4^l zcanL(GODU<@TN$ioZ9T^XMS~r^59pKLTZMv%^a;}(v`cpA-&57K_^BC@c?*N<@bvn zB)JwUt0!793rFCqNMO%$jgu}@P%`bA7 z&~3ahu-KG6xf6EABijFisDEILv~9XT(b#6kwlNdiwr$%JdtzteWMZ2W+qP}n$?kWb z?>YM?bl1A8>Z+=>mPtP4tV0!KbO4h4oJvU)WM>BD3FWXp|`nirR$R zc+atx92&|r z2Y58leyzQb6eW(u|7g_jp5yO~aHhEKJW#{$!Gi7CU~dvC2DINjO*R~w#i^nbI=3|p zO-<-lmzP_eD-iL|aV~Jiz*ZGzCDJ$zT_XQ1QO&7L7Eua{?6X`t_2WdMa3|{#$i$D}*?R0V#52;ycWxY+ znd_jz^b^%7&C=Tt1QEkUPDJe?tfqn(Ga_%sCcxtG5Z@?>8j+k1BG5i zQVVCDkZhcf*HLs*#`O3F1itND(8IonATu+z&dz9$gtaiT<*EK0`J19A`TZ7Bj1&Lt z&8xP-eD}&A{QPmSoU^OdKXC9Fr3rEm#yh39BL)#!0lSefzYN0{YMxS&RUxEpaH>p&&2X2H26p9=t~ zf^|!!qXA*RLb#{!nm`EXd!uo|FwT-aAtGYIJ+0NnLBtJ{U9jYDds#7RM<)Pf>aFIw z&X5PSu;)m*E+kBjy*WPspXcS%4qccUaLs+V*t>xF< z+4Q(~`}yjv8q3g@R`ztU=-j0Ixyrv{`Llh~o?X5*N-x8FNt?zPjzR&OkdMn3Q^NU< z^(;;L5UqM!Q*-5ei+kn$$*~IwLis0NZZ~kWC`a&VCEdO`RbL5g%OHT7U$iOGK!-ru z*izDqy%&v^;BpAG{$7wb!Fu36{8uNrRQV$98hB1gLe(ycY!6mg>7jJd#yRo~_l%&= zvGH>; z2XxW)^`CJwi&?ALp373bZ<4jX&gnjl4j8dO%rUEs!nZvGUYN{EHC%l@yQsgNxvIUT zar*j7LwCazYxPj z*3cq8bhmtmKS{l1gsYd5NV>H1__4X*NoPRmsOSui9@;y2xF2QaX1X?7D3fkIe#IC1 z`LjDh&2>tymZ)tA+Cju!uZP;Sal9SS4l`otELUIc+S#^ia135hIewpFN2CLP%A&T* z<-bB{(xBHYHXbovX@_`uL-xCiQA<>X2i~Ti&XAY5^4AHSyTo!fyPFM;Nzd%WhxvfmsVogtpCXBX# zhEeK4KW~Y`93~G=3li*hmxZ&i+KPopB}g`t$p}4dj+-Z)XedW|rs}N3B6(7q1q|V}x{X!b3!a+RN3@zZ(8bG(9!#e6{O4FgP|SoG3jT^gB`e zpN%SR4sP93IVsZ*qQ+Me47*^7NeOl4R6J^kJxS9^Nz^C|Y=}y%34&5_*x95V*l z(A=&pSxV!SC|RNELc!RH>-V{!%}Ci!CH6T6Ds3J2Pi7llT)7hTiLSKRoQ@2_Xy9#& zzv3H}e7{S{`o#{^O?UunG~M&nT{kZF>^4vi02hJWI7+W-KAwB#pyAi`Ut|tkx~uFc>yIF4MRb z<{V?Q&vA79m9naHQw{q@X5}P7;XU9UT)J-Aiq)Un0an>p9hvbz$NGT(F#CUo!ES45 zWMC7WA3>y`*k7!|U`QW`&j?vCp^_1zBE}ypyP4@tnJ{Rjk_)8VDQBBr-Iu2J95)Up z8sL@%HX4KNhtDVbfhmL&VBcr5nIqug4Tyg3b~c#Mt&|!LM%^<&#VVhRw1!!jAlJx1`Q_wEC^&p{)LoiH%sw88qEEe?A5kim)U_m!nWg*ay`uk>`lG0=gR({Hs zI}5n5d?7t&uZp7xfR(;)>b6G9L9x-c+juCkepzNb#vdVr3`M7HqkAc`Qg45kXr1BL zcg_dJv{J>C6y^CxAh?%ArIqL#M75nkFS}i9FV1yW-d#-S9v4Js-%43KsjN=9YGSUq zB*(3SJ!YG%%P#+EG6W9H_4nj!F#QQ~O?EiL8Ug*$YRGpT2IDF?Pf`VuiHaa=*~OvB zJx=)(QN5zkEGI7R9^Z8f1}JpN2i-vz`0ea`eegP3kd*KFo8sP#JKHB~;>ZQK4z^n_ zFP~}9OiS+*KbJbLb8YAtvkNp*fT|^kiLFJpXn3vQa5(?>+N{fn6;*6C-yU_C32Mlc z;Fn>_T_-#(paAss?9^7PDA#7Vt(?I5haa8!w%gjq^Yn#&33t+c^hsv-DKSn``33S) z?^&(H(a{FPqTYXfhMWzs&$v7zY$*Nni3pV#@GI{7n^p)y>;|Bq#atUs;0|ojpUaQv z($tJoQ%;r=&5KL;^*gJ}jiVLy22p%V?D*!fjek)qFy zW)Jv}z7TGbJ{=Qlsrh9Wxnp zdwKggf#$GfNmxrBSga-Q0Tx0>#yIKUZZu8$lmQ@EVmRL1LP6%@i7C)hs*S8t2$q!j zgO!Rf^w5R)yO_c|)N#VdiF-3Wv4q=p%A|wA^j(qJ;HBrSGJ%<6)Y z^uVww@+vlLX!69a661# z51uu|egTp1Y~y8kT<+4j+j_H0BTu=e1+v24cJKFJyyy6RWUw@EMLNZ#3Lwy||4Vw8 z&U?%V$+lDzHwc~Ghg;uGYukd1b*}Bsmi@AM%UDNUwC0kw<8)RO+JC z{gKWv56Tme3#vsn29CQG{J6~TTufpgfNGC>hr5x@m6(%m;oEq#0&1jVjy{K3pCmw? z(_Ou)#Z4KSaf%}$%+q;tbA-Oh3aW{tWYX&GgNIG>GEz~w3^IGMv|jL4mi`X$5iTl~ z!+@r2UUebGDIEHAoac1*WNk!Q3PYzQ7KrsKau66umthl5q#c3%0#WJ!G*(%5HEs6r z(PWkN-xxEgc;REZYQ-gCn7?4YLvsenSZN~A7c0*}6f6R0>;wq@ey6BFae#zfAAux; zz!%tu08oQx?P(ziN$?eoV9@=-s8nOIZCTE=$y&IWVpP;sT1(~}xI5&~+ek+9i|BBD zOvX+FQ7b|8S@OFhvLL+CtO5w8X++RtIDM$1CO41+@|2m&fjCx zAyn0|cq96sFd}83+MBv}`p$}A0PNlL21Egf;WWn(Ky z(_Z#ObUY9mSZ3+TA5YRaqpC30lvcHrF*U7?_O+Su$)QURY6a}aX;T$7iw|1&-%t;x zIz>N_X<)aA4)<_npa_(gMRlP<3v{-9%X}%kcCB9$63y-_mbPI$3^^bphwtCMo}M~# zvS%ChRIxUyFS-%n?)c#R&hksOY{$t@jd@nYXt;qI<%VDM<+r{M)(~MAO15l=yxn^A zC0cp^^ur%6YT@=c{WJgE)-A+=-Oc(hY4C9iCd;>M`5YrEfB`h?k;kk`cE1pkQI7d>w2QY z>)u?W&N{kIncaF{9^5wj@%6=@c--@SU2=$=N=)~+N#J-R!GY3Loc*t%q_?Lo`bACZ zk8!>4ECK@G4_BX$!-t21d#QPLO_Kc62h6b!J&s2qOc4Z<$!*yh#%`Pfsvqi!O;921 z=i*l7=ThsQ8d@;IHgF_c8ryHK z9^C<<=+ov6G3MXcA_?0yHPcgF`3y;8UPLNC35MAJV2!D-Nhp_NI_Dbs4!Wd_xR`eMclV+T?;qQZkQ3gE&x&`G2B3fqV(~cMAz5cI-^)!I2AwAAOmVCBs zHSh(=cnGPni^4qL3Gyt)r|Y%mH_VIxzhSkPEkX$4v+JL=;qwcB$-d_c#O-^6l%H~Ye~JNqR(s;_+M)2!Ug z{BG_H-K?rzitf)gEq%?pZa&=oUH$F6-akv%Pjz+1n%()U3=AfY>#Ht;6mt12a%3kOS@Dq?=)s%WcC6UO$#WCC9e?pd z-afp4_8J;S3)SAzifjA8)bFA6Ab^#SL#jaOD(MNG(YI*!!^vFiS1>~@_H4a(fXBMn zBcZbHf?d~!L^P>eTFfSUkfw2kr-aKxpzNA0?NOX?l@H0C(SR~r0!5{j((AxMmO$ii z7dsrLY?(EKE!5QA5I=Ch90SkGo3SV<%{6nQEg_gW5ChmhK;oO|#^K(ya-gsGxn9U~ znzWTY<95^}J*7I4>q{h{h4LpANPa+;psBJ`1GhjgrAvFzGG4O6CaxlG()ya|NrYiH2tMX>7ldc&6G?O+(nWB;2!<6bg5HbP-}Oz_6y;J!ztu z?b-j4yX&HW$M5!S{z-=||5H?Exkzo}I#-#_E~80QXX&Y1EzRe9Pe-PYYF)L5#4+Yt zS)l(YJ4skR$yFvO(Ta_E7x`=6y6A*vt94=6?VQQ#Xiqh%4rjdXsK|vHpex7zC!d-r z>PVRq(!|)w=r7N*8~?$Q`j3nxcJ~K5*JX8vCk2cZ&)+jI;mfy>^H!AET;)ys#VP7d zof6#N^D8B8?q#rYD!1Eh{Nc{(BVQZSG^uQ_bUzwSy1}5*nw-Y@i#dUqrvLw8`cU25 zVV)V~c~$=0)FiJA4U?EqSxDIDn`yuw#;OOm<=}AtqdbXK6WwecKsDGj-Bsf6QEh4h zixW(9-1nw>`%Zo_NtESMU}@|=JT~JMVzebs61{)4F`KYu{d&?PGH|Ac zqV87o=-19rQ9e~4t%;4Tz~8C!X^Rv2@u}@pwqSgFl<508+o^{=800%&>!qZ--0|bC z|6jm`EzRyCTkBfH`|6vnTgW5wMN(Jafw}lN2;icxng!{Bi2M+dIbvU@TFE6fibhO!w8?)1POuC6{)NA`$kFaB9CGd~P0b!|fCAnyvEsCaNX> zh$xWxVHg!Pr#tUFrybYmuw(N)LT&2`^G{{x-O13on1lwdO)j3kSy6Gvm1`I^+CP74 z$f%%_BSOpjRE_taXC1d)8umo{?!NnDh|m=Xj}#)rFd;z)y(AVXJIjz1aq{}ci(_r) z;laE&c)fk|<_+MLco z7s+uJ!atCR<0}*!+4x{*GT7};6Ronj*VJ69^td&NwGa9H?xn*PYn99rjHS9}39Lz> zB>em$rmbZ)p6TUN*I&Y9`o2V5%C-_Ii(9WOwtLW9R7ObVdk0$=7qwa%PA>ji2Oko% zmU%8-P7vwPfcbGA#!(j(BybKue*W8gQ3=Q^b)jhU+l4SvSae6&-i7tdE6B3Y_Fy<6 zw(SVcb!QCj@~1n>lYr(+*C${^yQ+AK=>)oJDGJ3{i)#FkRoWFFIzbWcH+L@xF-3+o z`wy!`llVDM>Xc@X6S&Zu``$33%Or}J(U5F$<1okqgPa5MV_R#+YtLYusezOTfbu~y zaq(|=7L1RxrI4hwXHDu1V^A0Os7Pa4Q#9ykEwg#&)_4m|*8zV7T@M+#zL$8AB!~$< z4sVLG)xv3jVHQ=4qGgm^`G!2(LZOrLg=>RO)o6SndDi)B<#Y8x&>y}yW!lAPvFLxn zD3?vCknHlBWC`*%AVcELg6}0)khlDRi;Jt6M*Avtm{Xa!RSNXU;IdzqR|?tsNHV1s}~){!b9QoLx+2p9{Ma z;avQ;_D&S+@2ii}6yr+032^k{=X}lllzqdu)XzFCMnnEv128ej?{UYa{<>f*ypr@;=H_JKYT1ySC`Rvk)mg z#)C!hZYdkxe^w_uYq9iopP#P2TJ>uDk9AJ3mA&maj=WseZ&uqnbl8lw#XDEqL4bo3o&CTgMhSw@LgIi39+J%%owMB zm4y|QAp|j}(kSK$2F4h@#bGFWkjz`5>{0Qv%=jp$Jdi7mk!RnObCk(v;2Xonl_{r= z4CQ$xbW%LCI}_tCdgU4JkQJwSFf;qZx5C) zQK?wWn53NDI4Zb(Q40R88s=i}jy0KSrlo|zB@fvn4N2T}L7~BaZ|oj7vAJj{F4*zT zx|D|E%n6XCN;2E6X^L-dd+Tcc^sw>c$-&n8G*Zaza5{aCeykP%Msn=GNXn@EFOtPY zZXKQ`Lj?snoTb<|e|DIT7$-b$hCs7VU-DLr?WF4M=Z*uwg97m1SVTmAzMmZJ%h)zc z5Su9Sf1wy5_Ww+>{V^^bFgpB{en%AeYB;)%i=L-%(*?3*Kj|=6`LM~^2MV6TdRaKM zCkun?Y!78t=_sm}} zKiF|mJt84f&Cn|%BnK3RL51jJO)|Kg_4YiZmHNN;?i9CvYCcWR$<)Ieb8B$jVKdv0*h_@~qk8#&QPtR#UuVX6s>{ac zTR=+5?74aa*$=DINLjJzTkl~D5F{o)5lstQ`(Z*6d)e=#D@{u)+|Kee&lGcB$j_e} zr_h}w`P2f66YRgdS$O<9>7z60b8(P@^$IvN6QB$&Li(84QeE3KC5l8&^&4nwIYEZR z8fhxV3Lw*dGj}AS%+t5(RZH+E{b^5G?{S+&5+q$l472~}R@J`T=^$;kM0y-glTAku zHm5Dp9}>V^xwu^|J_$&WP+G8V8cD?(glt)|wzD=WRm~y)??2rnQX)~OkLm^KlTOgwOU zxZH;zbhA5|$HA#F2GNx9V~91Lk~qn)+uzZXIy5i#$C{VpeXQwAAjN$Mz|*;io2wd$ z%Hnu)dUJ6IFVP?m7qpL9U(Yx2Pfd7?c)_Oqu#=CEYvYowz3+=SVhLbcHxx%$ zzb(bJy?^P9SWLi@viop1P^LLqzqsm}0f7Br=Jj%h1&nijAXZkT7TZ?r!ePLXmRm!O ze2+YhWeZ-owX+rAS6A1i6hYFB$6K{{C^TgxDbBD@e#rX$@-=byyKT~T)0xcJf5~A& z!7*8_WE}ZG2{TG7R-?vn=Cbjyzz*<9+{?Nrz8MXqS+7>l?l0&+ub}(jDBC}2K3>e?*nYN>>+!14;y{!!i%!Hk2II=j1g1{RvPPN! z)YVw9vS*u45e#BZ20p%a*r2?Ij*@LscRJ{fO=msQ!Vs-8RpKlOt4_4F8dpxCptWe( zf9|4oV?SDzY&S8xirI}zjIX*-XPUX#RzOX6d34Q4MSm$+#Xr{DL zc0Ml|jq3JNn3|~y9Cb!M=}t8AV!ZR!r^|)Y3lv2-0t%O#eoOmmUgTOMp=FQ=sl~fv zY@Z#U6cKM+6KDx*U z@X3l`&hxanS-WY^$2ZA4jc)#=D2+~&DM!_TSTb+r=;UU&5;;?fJ$dkbLEz3S241h zy4-lF(o9&b;yc;FQsSjv(2R!TT_4r!ofGT-%k7nTU-6^B39QH;G~DJ$!vp@M5*Ylq z|AH^0K>EM4hxDs-!rr_Hd|ln$J-f+Y`k#l@9431ad>518C&r?rP#9?%0?j8%ph8P5 zN~2-Otn7M=k7|$mHjb4nmNv7@Ok|BhKl`cnT%3O)OWQ3$i2vOd2Xi@wILaJ8Wh-R9 z{5f?y0jJWg5XVmH8dB3} zM^mI=boBRu9@w9#ef(Z0FmTcb?lVDHyvrPsnVeIh=(@0Gcd-G1Kc@owkw ztkI-hvphY0e$vqL{CT&haQS@t%PRcWM&;IbZIBFo-M}z0jBw1IWg)_L5*U}S1uxDF z-eU5}E&%vHo8Z%s_wv{7|D9R0Y|4Q@@8mRPq^wTsuaGOJE7YyZe_FjiS0r~| zWL@+79N!NTLt>OcTSBV~Am(6u==-i2e^UTdw?JH5(5q5n^8E#69v`{$NW-4Xr4MrI zm5u38SH{d-D$D=5Pd0#Mb7h7?Km7$O@67OL>=9o+GN}6U?3D7fJH5*ziA;COKq(WY zChQLT^z-M$Z|p>;De48-l6zwC@ zq|Q{02rNblL#$K(`s1VOvXQIB5tf=QksL~xje?0uAUC_Sj^O>_(Q5h~4Pu`g=jRIO zi6ZY(ls5wHP@0)m^|`SDf^piZVZ{QjSXt11?B*~3+bK65K+)Ibjr)x+zU&>)R#VlG zrrNd9_}smnA+~Bp8)%-Lk+dznzJW} zCdv-ncG=v4OUl9-)L-jT_|hm0c3Kh~Wd<1Q^}bWDA0DxG`80n~`sSaqIaE^_Cq6C! z0$SGjJG{3gDnF$OD;~fF>HG>q6O@xYRzA(MJ^?YgT)L8Kf9oyf{#f9RWocN~X}VPX zu{rS$KW_t(#TcC~)DLh1EE?k!Ht+spO-R*po;a0y>oO>-d}i`ftU;ra0)*+pkc$E! zdWuE)!c*6`wH=%R=(C&!Zk||O(jc-wu zSs4jW0$jG!j@IIYOOxYKT?uqs)-Uhxqp%mt4IaC*vVFO^oTTM}^V#x6{B=cV%j8?UQe+;4&~EC_vV@rrI05a*7FRfE9gZR!luXA?>2LN+I? zGo0BjKc1vCWH3q{eUwvbx~DRG=45~WbJf!F{QUI#dd(IAK8SY$lDhL$;QFmo=U1J) z-kK%*9_N+2KOaj!g?Z?43QbY1refHNT?TLzcDPt?x7yD?$TK>rFBVNf+@z$nx#=aR zp#_GCa#$E43yO{7k1?4u-k&DE)GJcr5z#==m&6|>7JPr)O5Ue1P8C6_R}J2qr0twR4r6L{9|OLx1QPav%9&kv2Nioe|&1Rn9whK zeva7aW%CR;UGS;y9?U1{F|}5{Zoc*8MMGL1yKF9g6faa(3J%Px9Qn6Ih!7SSV4$A7 zAh*UYmzxg|?|#bXFS9Ot7#UAtRj*QCjQoWfQ>?O_9ZQImYZC3B`~gdq<#^EJIpm9V z-j*vZ6#is+`#YXMTnLS0t|?Z#ni$7|HGRblfh=ostLvxEkY|=OC3*ye2?8t(D;jpd zdG7GXftVAv6E=XM4ghW#jbhB?YK4FwR)F^2{2auzz^yRsu8u*Sttb;3pOiMT1poO3 z#rvyD{TQr>Jh%J$`K_&eLyfmr#i}Xee>6JJ8COJhAi0fa>M*3c*O7BaZQxY%mgetF zdbATc+U@(Ny$IAEz0{H}KBM%BDJzROnXqgc-QATpP$I*I!oXa|DJdPDvL~CR-6Q29 zA5-XQd)CXE-6Iq{bQAsOmmYWAH|Qki6)d!vRR=J*i~kqg|IKj(5$xURAn6&ncc_zZ zcS3P|EPYXZ(fN8n@x`FStk*Y(Ty+|o@>GQ+4%=P*6CIM+Gb^jj0@mJLn!wryg^cNF3YlN}sbgC==pSa3 zTxLHQnp=)z86br%$&qGRSx!b=4l6$YG;36`f5O9k`gb71%B@{*&Io~-Je_$qhT0@d zlJ9S*EVQ~sfBsv#y%bD3qAcvh;2v(QmDq$Q`YQl=R5ZqAleFEg{gTtJM5RR8K4Z~( z@c#1_cqJszg%bny*=y;#|4z7P{%+DOz{w-f-r50-YmxHl+nY5fe%NlV<=8iDGSxz5 zD9Vw244Q(p6o;@~shuLSyj$D}8JUq(-@?3FP_GT64GKigHD4#WOICoWytL^1TVp?G zjRA&+r!QmwJM#E;K-O#Sg9W0|iZ1!>CGi(OxU}88P$KG04luy~={srY$(;XhZM&(O z&yYc@Sx7w6$*-q0@cj+`Am!VV*F_5y`gRu>YLIGFu4w$R$M8UoFnTqSK6&MX!T^FL zfB@8Yl@!I~W%H_B(1U!}eM~gJqZglw5Oq=uw9?|gB8s_$@y~x=-AQh^&Ym=^B__76 zTr~bsNyFHj2{gL^7$5*`OhWlviuZn{NaS9rL^s_!vAG%q24X@vuKx`&cZlM za`uQ0rR2?gMWbT#`qd3fezWOKdk%d>VoF6=VW+Vl<9?AInxVM(+B%G_7e8M?4ueG6 z`sL77mK1X5&okHW$DZBtD;{1z%xC)lxFI#QET2zyJ);K%pBw;ere)}{ zB0-|^smI?6;t2LcyCm=G z=e6C|wkv)~{nw8r&3%EeG-+ujZ=#8I?AYDEiW_x-V1p6PrMAiJ4rwJNx!qa5YP2TN zmu}A<&4iA*&_Xk|KRuq^<>nRPmisBBx_YC_HbO8Y6h_kosEZoEjI`OEXV@=y_a(wR zMZnEYwNnFWp_GslOSF#IvtnXWk1ststIzG*F0rPRX8`jUd8R!e=4ZuLKXGSB?Z__) z9&+#r`2620uivH6ObW0fdLW^k(JnuSk(pxSQj{O(Z^B!&_6;Bi2TsnI5oXn01Pq*h zU{E6@DHNQKsiiryFShLLJ+6BwkBI(O;!K>!7@O;rmYL^eWt!KbV2v@O6BV%XxC#z~ur&q$eMR;9dDlAtfi6}!a|5$ES#Mv|WGiDa#KQmx6<--di}p_BpKF`v zdfs3|)*1uf-Jr4K56!B(ONQYMQIn2A_7( z16p)1oj)$!)tg*DxNqC2+(%Xl+FE=kadC8inSWjmi32AiNa0Ou4esrB*FHE%8-B|* z>J=d)`^7B4anDEG%n!L#GvVJ4$0{Ibav${sB=|31w{O87cUF66fr=YL<~G~1~WxRZ8H4D zm|Jk`RApV#ucl{c%1ItCFE)K5fLF(%<{q81l0K0RluqFs-XhBxO^FhJ+03(_Y!t!!B zOrzxDaO7QZm>ZxGTke^G1VGq5ve=s54MVa=Y)^}THL2(*5oI4CP*fO9F@ic0EHY3- zz+s&@V}>>p3)^>xq?p)3n9&lfon?p^!GtiEim0WTZ#pXf1h+s5A;7usek!`a}y5MyiGHgO3jj1@+^7pG<~RQMf?lT6_+ zf8j3*59cUk!Opu9N0E|*=9MFh>0j>X2|}~K8Tw?qW&e%3KW8~8O!-+rvVJU)dA>O^5va!jM0rc$oor9+#zm0Eh3Pra0XAEq4b z-4TGqD{H4hB`fPX(scIsj?SI&>Cy!NFC}8Rj?%z;6rt$?pmNh`=tN&-^gPPwN*E}d z@V&=uwhX|l@PsabhDAHIKtH0Cnzzo@`PJ`#&4dtRk<3UX@==$%Drq#GO3&XoGiQD8 zCb13H7aK84M?(d}odxJ4#@V$!3+33?Mljbhxqf7nN!mAiTItHm2JCoAN3yc77 zeAH*l=z`yKNYQ^Wj`Ogwu(dCjuCCVYpA8eqaX9s_6C?EBdPcwhW)qjK1C8Wm zY6$*k>H^MLM+3zvY$)#h9+@6y@HDYRZJx>mpv#>7=|E#*f4&yB(+i@92o(%3`8hwk zGek)HwVgQ09{s`B1-fW=h|AM_8b1Rc z7(UyY{RcG2=hLy!5)%#aWa=5*?7)rYtP;a!4g%SNdptedo-CWtsBAV6Q&BuG8rFO| zcqUWGEw4G?CJ6sf*nGbrE+_g1EE*uv6t7^1 z+Y}rB2B`f~6=iDSgH&tB(MhHAW57J_4h+W(+;R7^_`u;x53Oi(XjG?uvN)AWwv%rW*B>}tdWJPgKwl1u6-}1OssKk z7n~HCL|t|@pU%gStOi9P->^xe18$qdFpBHKA2Jw!;8__`7fb^>B$cqFX|z@#UWZ7$ zil#i!6vbmk#}{y=S$H$OK*!#nadpdoVlx#jL;XAb{Or?z^<($s6z&F{^DUGKrd6{*7J^Q<3CTZm#WoBPGeax4GI!9{C)Ce|qUwvd})^O>QZ9Y2ITP$dVvIwono;5TTjhJ+@< z(l>0BfUUDWoISN(K*~56ei=UY!=4Y5Q6tFQ50Q3Ea)al*-Y}0!f8QAgL};yqn(!dd zyKEH)CmkF=0pg#yRl(|Inlfg~4Xd9HF*B}~WZgx@=u21X4_3RxE5 zb9d?f$fRVCEvTZnXm;u!r#7ik1N;h}ijEe4sHxey%+TpZoSskLa)-zcq!*t2xsgUe zn%>OKtyzAKk1%>+Xu zPnCwMu$@k{t6G~KzTVB5bWgXunPWo3=-Pt~^#k9gxzexGi@4y(D3N^8xAG-6L_a{d z`vLvwS!{yb$s1|uMx{j2cwwkfg9zQ*rp0FPks7HH@jHX#qNE9;-SO`YB?^7dS7V~9 zWmlAFHKfR-o(<*Ylm=Amms9Yy}?*F?n=trU(cc!Z@ zvG)*2B|m=H@I-w9sS}3bGX^Q_SH$a#wY}G!&Bu$()z#YxYI6RA zM?CeF=4h86)hA(YxD8Gt-tHUOjgyPSRLBt11f>p0#%NL`WR#$huh=h*`%n#4>726;6@Ag5b@OGx*!4PoJS)*y1u)du{jO( ztJ(4;1y&jRD;cTu7;xnolH{tYAc8r(Vk|ry^>e56L+6IfJtImO6yelYPWA-|&OjX+axmeshc4bB%7%iM4(EN(m$K(OJbIXgdrJuTA#4zlEH%IzZLc+md z(fSwbXj&v3vjsYAAW5l%eRJ6AZc}!$C-+E&0Uz+pRbMV0|Cj=^vFUQeOJ8h}*2sFF}O1 z{ikdF_2HHe3Q4X0RQ74FZw~EOnd%)Uha5V5*5qfh^zc*b2J%M?Ufp3YX5%t)fJx=A zR%U!8yWy?m_bY5qvJ>tAD-RBSPKaKPbady%cO!avd#0?gZXD5d8yIO`_^x`zm!a$W zTK_I(&+*nQI|&Y~9Xet0EqMMKy=?*hKIdMyG!_Ai&=>H24*;F3O)+q<^Z#A{>-;Y( z=CJX22b;A?;XW1#SKXrhFkI_4RL=D|mRR&R^%o@i(NU2MV3gJ}UCG{G)ykVO?8mh- z?#DJ{w3trk+D_-PK)rw)ahHT7MVPDj$P9IWv>^~JM&V+XyyT_7M8fi5egXu*(AuOi6D`~f9UVqfdW3!M@{QVqMEcBGAFrXZPK5p z0d3WpOc<=I6P~=3Wq%%J=Uwr`5pc7TFbW|+NG#{F!{&jK8VI2zBfl?yS8BNa&jAAZ z;v;L90R9+>=c1ND5sVEXSi7)8D46pv$?p<-9@JB$1=`&8zVF`Q2&Y!3Hls zH#g6F>tbO=GA_bfF^woblTg1Yt5ZM_V6vC1gd`%!P}FZ(`bCTdeE8|E=EtJ7|b< zuo)hML?uO26jkHT(+zn;N+!y4DD_w8&*vpW8B-B6KoKKBQ@amZh%Y3uvUBJd_e4J~ zE|gkq3`iy$KOg^fGyzP4Xd&bov7^TgM|zOUM)$c;T}lpjXK>?AbO57h*db+7FROXy zp-16uG-2_BD9%wU&@EB%-GuvZ2Ca0;26ulu7gZn{%Vb)?Z7f2hLoCFVOEr_YJZ3X(4lG zw@R<;*i+znYGtZpht8LUspFfsd^HcZzNhohTZiY!%OvU8B(;5Tbd?~?a`1Gb9Kl$e z7cl6LqO`;jMaSM%+a=Ll9`~XD(~ACUWDS67ARvi{`TL}=$y+d0G1O`vs3-f|Iw~s2 zu>RK4#N}S=zVWd_U#3V!QOW55@DVQG=XHDM_2nm2fSar+Ydjpe%*llV9laQvH;jl( z@!Rb8OBtfbwN%Ucrf++D%k$Of{P22B3(X=HmA_U1(-7de0}rk|WRBgEALHaK1L>@{ zsrnq~VUk}fJ7b9wg4m)A6==|^(MTVK3VI7D&XL{xi7;tC!W{p%*VHsUhzsd2CB&S4 zE_4CIUog{eKAkKl#tj=Eg#7OQ}rf*#YRo zzbOInFJZ7RY>V9_4tK)Q8v{QBC8NW{XxlZ{FPqtT_S4%jU>pM#Huj*`PrT%~#F-oJUuj!G?-2VdFF1q?d(JQ6SkZLZ(+2XUVUAD)w7RYBB z#>c~aNiw3t-B6_}Th*%1VtRZ5P?2aHGoX^eov@**DgLy^S3fIkZ^O zaUgdF3ce}E;n*eTy??J1T=YEdB$f`uqJi#j13au2yUDzOuYSxhbdQm3Y!If)f|inY%@bFh z=X;0BPaR!eX(G%S4OUI^s|+?t5q`JLT1+X@Wb0OQhKmb5&f1cfst?&XTPcIIAxKqh z>eywShn|yNu220_q_WZnVWID?=NFfQGUk%2;e^@SfkI*;NA4VU$Jiha=4rS2srSyk zx_Y|E!Oc^}r7%f>bOj0KFzaR#p)Y?U!O7?nDXWm&@^M+*dv$einZd~ku&qNk-OcXP z=<&7j@vmlOJmGJk;7*+%6=p{}KW5CR(J3VR@Bw3E@I7Q5POFI;Cal!l(0qIk$85Yu zY{>UFJ2y6@MY)ghAM5#h+bwsS`p)jx-5r3qZ&KgTXI@kH&Vm8^h~}&U#VZd`y@&s) zcT0W?c*BeV&W1C{$RN-~b6PPzL6`WK*%Kb3{N-OW@7NxoPr;SN0OXOdNj|F?dGTvf zxBy~s6u-$NU#)AixtZGeS|I=^GkE7>Vaq3n0Qs+-d&2fZlS=_84m&*?0lXNCu?MKk z$E1I7`;$?Dw|Nx0uppFqj>1qSP@;S<;wR~eI$zODt#PkfZ+jrfxwU4O0vdgsaFZ#p zZ^bE=J1i`77;%T`^Zk^ZMgpa|%Raw&&B&$Sw$>cL1h5}?(wqKpBA(#)V4qlV#C2h% zgQr%|>Hvl))ACO;;Va6Q5zS<;@qTrYL?|l>;q-M|6X1V2Cq^|@LcNOoI9VBJ1i+;0Y{ow zCnZguG!MwVt^2q7jryFd zSPnsvpu1NB$H0@b^gyrY;%o78fAR|maJb%D+u0c|h^UAY7iJ&~9Wtae0|`A-38}X! zw9I8&2!q>_9+iNaO@Yuf3~pRLYD?6I zBO6JKZM%XAjq6jP z-}uz2;~_$6emP=Zh1w5fFvs~CL5>5*%xLL?Ls^4rCTf3(V(pT z?Q<0xAa>5o`^EI=7iazp5D`oCf`x@Od~l=Ae9yf~{?3x}HJ|{wZDz#}LD)X!!j%UR z0BT2Osu%^rQV&%7{C{efQBVQiVO8JS2rNt`Oa_%;$d zgBqEfiql2U$Mv$`I9RQ9%q{DP1W%F8$Xt+pqCL#*)H;x&)>g zK54w(Vn6lnE*60Ax2ct{MAK7ihB&yq_*4kh-4zPff_@mGwfy`D&iLMkmTyRq_A;IB z!0EJad_Fmw%N!%^?0WD8A)mq4TK#fyqtf#?|2lRyE-eB6Z0t$y_z(hVs+i29P9tpb z7sXA>T*MQ|_)}s?i+W(kh7htpVOb9{0;+$DQyeV3YA-8iYhwe!SK+Jv25);GY7N$N z(Q!`b6=?$7n$^8bo{o6(nN5xt#PczWg{4EhxobyZ1(+|+#w6bfF*!ayX8r!o3YaZ& zU4}~=Xw9qdO1^OCh>WYg%*E0-^n6d7K7M`mfi^%y&axGU)NdZJym)Ze^KG0ip1O{uwHvK(4T?I*o1A zDi5d#ig4ncS13~kf5rL!V>7}jZdAn38B!ybB#rX-M`5TX0&$Vq1}(hp^b;?VpS1K) zv1FRsf>Bzaj6eGtr34c?*ok=T0q${6hlGTS{b!<2+=F7hllI=W=e_GIj*0L4j=4YC zH0OA~9TNOsiamAenwohf2OgwR;e(ZFEMR!9L5G04bW6+VS@Fr6`xNFsLFB1*;A|8E zi>Q51Kua6eva`QmzfRq3&*!9*-UOcOr9XjyrXCi4crb0TxoNaOY$a!bUuS{$?w02Z zr*3&o4THkU`V$vM?6(eeTBGDkZ-)nAR{!q_gE}D}DvtNDE)-w@-Kz%t=GL9bpaZdw z)4|D9QU*}kBmYTzUIo}!pR->IW&fa#hLz~!_;4&h zmnDf@1K3p|?WbhL@41Bl}6ZXbOFmhg(TRQQa zTSR2I46VDTt;fq!oz=v`;wJzswz1qQ|9pSHR)Nr)DzX6+b9HsCgPq+F&JFA32jOkx zH!Sa%|2`V3?we&}xdmLIl-LiHho3N5 zF{4omK8?lKXuyzg_a=2|s{hxW)tQ{TmzS5DTN@Da6?<5I<436inBbiNL2?b!gpXGp zb%MxO*(r6!4TB;?)C5sJ9QN^0Y*EmTI_TJB|hgy5q zE9marZ$r#uGpO9l)}6MO_A>#YRnSPAof-A;1QaPcvKI@D?m60>Xb0 zLr4pfMcc%Z3IYHtax?e6WKoo`AjK|#th_t|BDwQdhqCHj0p=ppza0g!WF!1S`v$Ud zvkbjqm@tQSJy33Yd-K4RM3kSP`4Xf53#8Og->tINT7Hl+Lv6hirVK}(3fru-$^k;T zl?zJKX_6`F>FNL8do8m%=unT5Nd-#}p*EFrI(kxo1P`t>pv>Yi(QdysX8ySgK!DTZ z3^Y)asXuSSZ!*_ybaTrQMX=kM>6iK730gDj??M0cD-#ey30XTy)qMl%x%WRk>nSWN zVqd+UK5L7|gdj|)_A=d0O~fk2eu3|2OerAS--JVG&e%gNVvB8So^QJ8_{2N(*hj`* z!}RP+E$2S=p771T^HFajb`lq=c!a8OFjSqJ4>{xvQenrtd^NsMiv;G(2ZbI< zn(i>(IGP)C%S;!96d?8l)4UJixgvhHMM5%(kDldD1;lhKr=N;NhqJW5`Lh{NN|MfE z5LV)BIq7Mw&~DxF8LY5srI%1n?fBR#tUJolSZbrCDE!@H#nq=U0j4z#kDDVKhRP08 z?lLGzv*{UpHv*B+FB7Ym1Xqp`DBw`UGn_}fS9qtM&oUBNsGe_ZS#p$FN}N_g*I z{Q22gC8bczXenEbS{8NpD|G&&CD%~FfzhbGU&JmzuHu^d8fFG27N&kfZSRqVmJddt z*iE`<6lf8pv=lheT#o~YEP_%g?_ntN3r?$c{~iQWX0TBO-SpJccyxJH{4yZ8{HQY` z!namlWY?ZB|qEcAB z`cg{0$D9=l6}09W8CE>OPk~IaFsRAUgPKnk#Vk#D^YaD0{Rr|`bTuk!4-Wio@2dZ7 zp6|mifJms+$i%dUgIMse{7K>J_QpGq15&XQ{t(tF;HUm8F&RKK8hbxGTX%d+zUG9k zRnCMJ&G^KZ07sdhnT#GzvfOE=g@=c?(bSZ+0i?J_pwdcC+xG^F^H9L_6LUNaT%*VYMXC5%LeEHkL@3vJLn5A_(XFmSV4U2l8EJgo7e<@I(?Z&0XiOkV1SVP_M zYski_XMJGpN0k6{H>b$*aA-JC$6fzd#~Q%rp%U`0%ifi{jTKnX<{dE!LVpe*>K3a~ zK+|&^D>T#4I24@>Gc|d4W5>nCU5C0*QYOjpj}PZge%`c)xw(aV6$@zXQ6b(xgf%>z z%#qi5g#n?rP= z-A0j-%*uE?)_{cb$DeR;dG-nbp*xkPShz4S%lWyvFr^8~BV9&$suJz96mjro5k^q4 z1K7}}SQGkAQ=6`R$0O;Vk;3bS~0$g?;pMzhBVasg; zMs&guKTPAqLV5MHtFP3M68c4u9zr#Bb;%&`>=s_3yxq{QIJ9GLDRhk5QfELI~U)c!xNW z`SrOZ{Uanf5c}M0JMCoNxeElWQ)g#yOQ3R1f&MfXqf{;ijq~JQg=Kk}!Jsw}vvX^s z&i}2qrR&j%*tMK(NoS#~0f*Zi zGXIO^-Obv`^Gh0mXex%m?E^Hac1}73r3@%d=b)!!@kRa=V8Y9w+0N%>Fgl%tuGg{7sr8D1d- zo56q=I+SKKdEjWxnhm*FmwujZ#?HR?^`&2_dYgV$fBxhixIBU9PO#M^>r$hyp|;|b zTQhq2^n|6R#wfn>@59~ZY|*6Q=>0n^7R%iT>uF7H4MrJxtop)P7-d*J;?2)>9+91m z1ok!9N>fuTcapExnuDfes!VGvOWYL$#O!GMJlB|ahCk%$r$VF&F7^q&r?NPTvJz1$ z9B5ywcZD?<`&edXxV-C`9%3L$NYeN4&Ekt5Yh%n4iEW`5N$gM~lv zFi==)%P!%@Xv8yLB9d?%#uq@NgpO)#%8WCnnN1Pv#6M+7`eOe62!`RMU$M7h)U zCw#G_Zx;I*24$Oeop{NYq17bW*z(Fs6eZ*zASbcoNy9Uu5PsMZAFor$?2DJRS05fd zG+DUN7{9^@`!9nT*7aVS9ULX_(9&CT>AQAByt4GWeEO<3;(}X1|C39Pj)`?8#}%Il zw|xyUz{x#{;JR(#-S2>YlC@*nMUe0Wp33OA3n>tz2o!Y5e}dL=S^D2?*?u3n6+%&l z=a*+zRli&A?JWN)QQeV<-%XLF&X$IGW_vp}@j)_8j-CQ4{SYQ4R zg@^h+CZvw$9RoSrH99EZEmFLnJqSy@F`Pa;|3G% z<3A;%6NH4<4j-Sj&4h$&0a5pQ)}p$mFV-?w8^-Bj!u`f%J()*J#ZQ^!Kd%PpZyy1n4tuOCC^@4Y}FylMX`UT z!0gWm(h=0M9^Pj4VmCC=w$m7~+?fZXil22XFXw46#Ecr3DQ8_y@&-x{4U^2UBgkEA z#!vemK3OKblv@R@!AQxHnT0ZvLjvO?u!;-M z>27p5Vm<583(!e$yhD`^S8euiut}m5vE#SS-Q^s~@}z&UMk+Cr2)(ou9y3Z1jJMO} zIH@lGOW$G1POFQf{>xS4f|$Yw##87Xo4#n9`DSq(7LQ_)v)u=A;w70bt&yRTT|PPs zv^7W=B(!-S0STPGn!9@e8S1H(K)5(u?}9alLc9VZKY^f>8^Lp4gZVD0`wH)E5<^V(H=6PaP>w zWUT>=fhGy24}@5vFDlKiG81L`FOJN!-QO?*px;Zm-B_#V%5xUNs>x_}Z=8KLdK;h~lXzrm!^K&;?_ zm_hg{bBv#ysvuF><$tt%fefKE-i2+;Yy|?IAC7}UlLmXVefhkVxBB$-W3CHXmjJwY zB9amCi_ti?%U%EpXHJXNsZN?4$lGRIW}a-&qRfP3amZeUYKeLF&o4+AKk6IzA=+I_ zi|E>4(*&-ekp;*UT^ zQEH_;#me;FuMqQ#@sI2%(PSiC|D$6JdKzmAuCmIpI1t)(j5>H8SFfsiO&X5@-+o0nM*@=@t5eP_pgZQGId9Um zCnIAcuJ*)><0+;Ep0-~JGZplxR+Soqjs_4sWJs)}4D!2Tgvn2o8MaK6ntP8(N8QQ7 zqr*01fJa~=IeozUGaS2yhhF`Wq}r@Hl;S8R#e-qM_mYs80P`*!xz*s4QrLCJVZ05i zfS<=Di6lQae{594$4BtM3%6={|v zB3Y0alA|;Ajbu96SO<7}vLNTWtr4nEL9G-B?akiFBM9i>*#k6_2O@XZC7k?{iI4kO zzWK7x3j;BNlfc{e2h~I{`Y~wy4%7Rma10}}Aj7wv9sGwXpa>MeU-pfaSMoClJp9C% zotDXeAWvJQPu*n#2rbqu{-fP5V4AA2+lK+K8{;j)fDNe(^vKlI{Od>cGt)76O7a23<3wdHv{03u2@RaSyC>n)9EgL zIIwP-%JC8M_n?d|<~SS$t%>p{$v+1RbnBy+z1QROj>UiIVRtE?)r_5M_s!veBjmyj zaXn!mPM3d|1@9LLop2S!qGxvzc698OP};KRn5B!Z)v4P!G(=1B1B7F_ld84b80h<- zy!(7-78ehOhJ1#yq#rZx?^Uact|N@r&s=3qQ`Pau?|HY{o$wSPDN>^Bw9F;$qxT|6!CDBx7BwQ|cD^du4WXOS4QBI!hkfD8G!r9x~ zzn2#@!sNw?f!^-kuGetqZa$V8K`V7B;TYy$=p-94mq!g&+bw(Lk99V@b?!o8RtU>NB}%ZA~yn}uJ?XtwAA)=sk~iL zRr`R3c#LdqIzZJtRw(hsGI2nRJCw zP+w&3a

c`Zg4TC(G#oW3EHHrr#+RmCt3HVu_9cbF5w5z~Mzoc#SK!}ah-svx`Q z>+V&(QI-!T%&q=yXrh`sQ#5I;RKx$afO(+P80sA0qxTdPB;t?a#ua$-{0A6bV&m-2 zv#@=3f3&nZq(KXK>tFY7U2e9UC<;@74)zP&5sY`=gvYO)yGzt(|w@BWnu(T<;|Sn{PboISEJ8} z7(Q5mTd{8AXwb)cj-k!P2`{pA!K|Fy^0>x}8}8H|dO40cdGzMXll~#>JA(=AY=1d4FF;5jII}CTi zXNW~En?7WZIQJeOH_)j=3tb?M;0d+LUOrQ`B(ssC0^8<6K}2SMxlY8HDP+94=eG`2Rpft%q>joaaI;uu29gBAvaW>j_u0bMgTq6c zKr7N}fnkB?X^2V<}tOF~8FfnLz4<9g^Hx?DknRimW!*hmhVuyq<(n5=tn-5g!7=OA`-k~8e&>%F?N3W^$P}h*wY8afI zAurQ&_XnX%FBWKM%c3n$#_vZi@uN%3#lA6)H5|9d7mICSUAN#QfCRE789Lwm_uV5| zj=I{4+m8K2CNj-dyN8E>8a0MloNbx`Rrj$Mu+;<1^d1Whk))I>%hz7*iOniY#qG97 z&;PDm0jS9?|Hu%Z1E=-!heU!mVm zX>a$JJI{XEe&}A^WSB8hxO(N^`tt$vV4Q7-y$|_iS=bFz}c5=J1)FT{3unJA@%*vH3vsxS=8Eo4StmIEyS`6Dkge zf4tta<#dIJOsPpZq~Jg4KRYw$KRXv|r~$zYbuX^5)`D0Y5Jn!fT#~ib1aZ{1vvJ^hTAi$SbpN|xR%`K z&6#zZ@5yaZ?-8l(zew4YrATR~WyYy@l9)PNbua4tJow}x5v|!tZ)Pa7p_tKS&yd$) zjcI+&m$268>Of#$-~R^n;-3S9u1bymb(xuf*V!!Oik(X0q>6wS7zM)rPhOTN3Hn!( zLcDeCDJPXk?cLn$mKS)Mf?ok?+n5mcl>IhUnKq(-(~fIDa>6*3uSg{|Efyj-kKr#( z3$l=s&o~)WDM%_XdHGzZFc6~K@HEcqi_YfnJCp0%loOVRFh~4|?RKj%LPC7SLE(kw zjbK0bkJs5BMI|T9aV%>*Voz*l1a>>#j`ki?K0O8UxPAKbSMDd52MS|X`d;6={`aj# zaCyc+P%2}r=6S7Mw)j|c@}y~>KJbK)ef{ZB0CP~H-kaVZFDvmN`mIyu%wb^54NS>S zi%CzCM3Di|>%QOI@JCj(X7rmj86&$BW^2ggMjjbV2GhVQ&-=((WOz8`Nig59KhTf@Ka3> zAcOzR)A8#k36yw>7EpozZ<*Qde=&UR1RM@w>ULCmG2#)CtPn)e`!taQpdWgP`*5hf zBH-Lsd5WNqc3R2Foc#0+J7Z7?ij|^7RZ*8bTPOF&T{J&OK_DN$!4}B8n?>ZG=9OMG zC{Mf7aC8T8kf}uA#Zg43N})rW)Oyf6%;7u8#r%?NhCO}^*en$2+Q%jCT5S_AzAmAO z7dgK*Cc>FGfNEs{cLDh0=p{SC3Yx;J0c>)y~hOm&61T_Zupz~nYaEt zy!b{i((O+RP;`cRMb_Hb(UAv~a)5+Cv=S!llbLj=KmTO(EAP%wrIaI0NG4M#6Tdnn zeIE7!Q*a5RKTkUzxJMb?)^1UWD5_ZHgIIB+G9;A=Pjr`6*B;Yn0)-LLaMM6THmZ(bNP4BC_tjjz(l1oD4YvHkzPg<1;#dtOY(CyiR zsgWZy;HOoC9mW~#rdOv{R`Nc0QjrSVNx_g<(Qo;c>88<57>FxrY}m2Z+pL<#{;5*c)Z}`uaDGwiG|>BEC}tg0U)obrj%3JP zJBNc7HmmflB#Dr1+lv1cN`gI7MAUc_q9hPVjgNp!bVY+Fs+ka|g>lo~TPQ*V*`AsV z2%}t;DnuBW0CA>(fjT&JU#4+Gt~- z2}|B0|A1;zhyUT7@y;)h`$=QKe<D@Ws#(McB&jqn+Byt;Hnz5M>SR-AJg22Ltg0s@*j%?y+t}2+3fo&) z%s17Ag`JGAXnQ>`udaq?N%neu_G{A4%nQ7~UGDF{AH2Q6{aU}8+ntm`K&AR6Rq-1+ zBP_LiGPzxg_D|K6)S}%NXRg+E=7gMf`sF+R%x^wyqhZ1n%E`2#&YP~2O?C}>QUV45 zYI=%4^Oo&|$}+z!k$VkM5BBe_&VQ|EqP4 zX$3SP>^-lGi;%k3Fid168##!@5Q=S9!bcE`S7@&Dv`ooEqC(V!I4ngGNzI8Tu7teX ztqo-wDg*#b_zjP(`E$-|KFgj%I=4j_&Ld==*Q@6&)^8W(VL)8Q@def22C$!pToG8O zo2dd=)`B0GFYZ`v3}}`gZ`7+Nn^g#wTCCq+;7c;O<;m9sZT7D2umFk zg4~ngwzfE_nB33hFiBMwo*aG~F5%=~|5ob>AX<{&|4~k@W`u3nC|jATEZHaTo+%8EZ4fcFv!7k8TvgjJ5Ql^`;QzX5>8l}aSprR9 zn-(3=#RdU$x4n3OD9>L$p$wGCog zWebzs35hGTR|u&Hr(+nJwqB*wPSTiPa0YPuMfpur{?XjV(ll;jwS0TKfOt<=5MIS( zubSj-I;C-9=9gw`6|@ZYbK8$G=#49p&TOq(cdtb?0B(ta6noG6NfSu4{8{9WSl!2FBAiM&Fz zo!6^I%xT-9Go4T{qlyHFcC76;)qcoc=<*ySoe2bjdxqJq-pCxn5O8d9~4L(Q7vI)!p(*<8?9_j4x5H zZP^0OL&xR(WJTwSEG3-GF*8;l7K4FM`{B#!@L!7S*1}W4+_1@F*_EY3<0{oJB6>z3 zE9=OfM7G@yfuCPo1ZxHUi7+!EsjoD1fTQlUg(V3i>qCV#*}nWu{Ap{gloU_9gg z+Hu*R0V8D08}tK;;v-=1a&iZFLjkAx?_BslES0B=A5Mg=R)S!vqEx|Xh0X`+PC;nG zy`rxP#E(-BAkm^oy!1(ea+^!Zu=wLW=WTt{wFIXuVf=++#;NOb-tJFZ4nOzc@1IQE zPq8m(c1bdKnx9tpBrJJ^n|j_ZL~j~|FZy>0`JTG}8g0(A1u9#|jv|rlE{cQ;(dGoy zwWTVKd43JMFrrj`;z4{;wXjb&A10|vl}K|QM+JF@IU`z`i~Ig5RBlM)ngkfdMW4ap)m{JXStT^lrUm?Y|QhO=E2o7ZPK8@pVKNZIwk zXNL$2NM?3+c7FaUx4+}He??1YYwyd`PEVJH%Z~l?%tniXxw-vLe_5Kk)3%;opU;Us z@`HZACrUWUocGOXQT*e`NZ6W-%UZo|o)_=^!^X0Djoa_7w-bc62`hY0O7mDlFJ{Ud zPtDP`g@9f!%xG=Uz~In-7QMbReb73;QPx#&?ezC*c|1?-6zQB2nXT`ugXbUs{6$!X zT(r?BO`P0-M1vUYt6A@dUj0Sps`xY(ajT9{>-ZLY(*(t69^nmOtgv2gKx#KZ^iSJP zdza@zPkKl0eQ@pYJ1!@GV^>#Kvo^KAvelu;M240{99qV5PhQ6|N5A4|<%HUS(RW_it7X_9NC6yN%l;k2pwkj? zhCY1-DmL`!Hc$N|#ZN{{_Rh%aeuETdkVp|Dh+s5QIpwla^KqfV!qKp^P!r0xT!i6o-=z{%o=S(47EfbBvD zA~VFG{mpuAN?1;gQB3J}wrczrr+TIUk4bQx-)a5nfrs`Cc#`kKPgmW`{TW~A$Ag)+ z4Wn-jVA&A;cf?2mxd`a_I6l2*HfWnmsntpl5{dz!#MRN4>h^<8AI;7}j>jC1Lin6X zp{Zh|FbJ)3xtoMOyu&Sdu0qaYIq1>98Ju}d;`Z+PIIiQ=Sn0`xIlDk_9Np<1^KH2> z(byjp%;IWPHk>WhnaQy6!jopr4ROIZk;0H~Ap?}<2mhk) zM zcS*89pwT+&3hfYcwk=jybJx>^)vDL9a@_yDleLPODBUtGZK*!;L>GVu@XZq-Vq=)>tE~!wIiK zPNOVUuAU6t*n$FU|o9DQyujlvlG=QZP`de$1Hhr(?me22xYTE#IbW6aF%UO!x&s-KF0i2}+QzYxD^>LGsCA?C6QPQYD=cdbl3$QB zf`89tJ(N-cM4FOT7TA(~htCK+s+1>9Wdj^?B1qJvmiUp#2*YA?Rd64l%aj+LwEAwD z;6MBPE4EO=<5{CcjHC~Yl^JK}SAWOceFzT>$aMH)!j7VuMVxqr1noetv%i2WkD%RH zb%r>8@U-TU`YiLfphltKK@0B_aPr`r;5q^p)tkQSUN-^wRCLu?VwNhSSgU=3OpQYp z{EnB*1B`xN-JVo?dl;E_fsnill~C3A<5@He=FX7QtmKRC?m>13-ZQMTXo=3|*ziz3 z@g>UD=iTM!gVMg4#*Cv%|KOLgiF_@|iXuCFXI_;KpA$S$mP>?s-BTkQQH0K(o)AxX zS87x6(U1Zl<;vkd72Mto423^Fz@k&@j13^3&4HyN{ND-lKZ^!--t?6_*1EoxOc9$P zWK)ze8j;`g_=H1}fe7imI1&6J1lm!^0jV*A;B`jd+{ZRFHg}(w z^*RT8s=i&x|ui2Wt>SkZ$>wAZJ*lwG%5pJZJZkBz+hM*S#W%5*c&IH3amiruhKuE%mPG~7qaUb*M>=ob?(Ee@c z`35pKPea6tz#Ob94`&vnObv@}5{}Fz5^nS_8#GBQ$ym6Eh_$c~KxYDG+H_WFNFWVH z3pms)x7)%Ta38f%tW)=JcWLrC9G^FiaxKyXb5m2p5EDWcMHZ;6PO?;2Ht)$p zY^gOQo5O~S7|v1P2=Zy!2%WJ2adBxmkQ7Y!oQ0}Rx$PR~D@Wk029@IG=jD89mgroy zK4)dT{}`1yJ&C1ak?wMJzj?e5DI*&fRSVhc$HG#M2?kkHEeyW-+R@qNU*>-FWTu-L zGX@TjJhy?|f~1${rYA=`n{(hgaIq?J>c#c-!0vASn)O6o1khlD2IdBH<OP~FiI=jkM*)MWrg0R>>s^}{zDWUmjbO0M1f&;K2cCNz*$prD&y9j~o z%NXK^Ad!|EQ8r)TBdy*~2(9(C%O2))y`^+sC+U+SBJr-e839*A$7xHHsDeeII#4hr z2GqJ0(IElQB2ChLY7J^Sb?HSOt@QM|WYT5LJWVNjTCt*NJM0d)YQv)U_f3JNfuA?G zMiRfAc-O)Fvx;cKdr;)d@$YN65VWrt#RZQ2ZF%(%r^JpQPONH{)6Gzk12P>4>BtmK zaXS~es4@tG+r0hEytq>2LuP{re*R{(t*<`^J{vKW;gEgI*tV?MhYAQrnH0*Ey~JR` zgdfF^#It3Qh}kUR@L-!u^5+_DnrT&}KZMqSZ~Gy~>r!um?dw1Ik3^pPS9;DyEUUJx z)oIkdwFoS?5>Bj~KD6Zz-Jb%#PX?lTmQS#D`Kr$bcl`H()nxczHEk*XkI|h6+%nHe zB$W~pMn*n@JH?tP`y=p2%0G_i209TM!&gzCR(c9GQBV+-5wH1q*3&)1uv1DnHdT$V zGWas1)j_C5# zmFueg-Woz7!U5M4{oGZf`J&^^$=BEPWa8pF>*B}tvheY-cdrMYa&&ZR@iZ|ESQh3M z%4g^%%$e*d@@dl0;yar9`d3vN#2n&T=bq>1=QcLiLK7%^!s{SxAr@lbzoX)G4+_l~ zu|z>JWKt(-vpXe42M_xdsM3TDQ$fhK2`;d}T1MLCD2roJVcsb*n*>O0ITs5g`LSmm z{C4hmzk_26wHx_hSchu?uUG-PTaMHcg;R#XFa7wz5Mk)pkQu^=NTWCddyell#h6+y znW7=2xhRX*vlA!xVZuTT*FEX+D%2;L<(ZXoE*bOU+!f{dzvXRy{u~zx(NgRymk#&x z_I%;Hv!LW*=VlLL0z2g&cS5eWEKafu9>A%9v&3I_`v!8upY(L!scW?SJbmDoRz1 z9zEpOC&Iq+*VM}{7h-`%afD>ST`|RVlMcZhjv-H(TaS-R7SUg4!;FlBvFRw{ zFG%PXf9BIrFuWe+2t#3+kKkIVQ_D+Xq^{=V0ymW@1e@rTG|1 zq#WH{ZJw^BPchr+&Jln?nsB3TaA*W3mR)=U=!<^cF+x6h9e%qSt@;>Sv4Un@4fF8B zkxi!)NMLkj?C8`gq-b+q=uEx91%!IPT)Q)n@|e+4j+g;zjPs!5?)qz!=0rGpv}F17 zFyVfE54_!?6R+rEtXvM&anh#yIXxbIB2NJUcQG^{gaaFYJ-IsIN@Ceb)+>)n0H;gv3we8X@S^= zymdJ%+AD5&O&5)p#{aT}srbv4R_0clyLi17MD|L@KP*HRbMo@cNK%$W8J~>p`;|BR z`WhR1dvm4B^yzwMOl9|;KL$lm9CP1p8u>Ul2AZ2u8K6$H{cSa{|eWQ@o}%~0fz1uOus&>1Lc35xEZF|_wh5~HwGf{g_9 z35aab$ASf|pjZZ{J1Q9E3#^){Ew8S+TK1wFSZRrHlo&olZX}x|FX3&WKL7gb0Sl~m z!0^2yBN|F9i-}kM2_6(XU~?{Z+RGWNx3ec5<$2v=mKjULX# zf)-j?O#FB|l63u>@$h6n6uoXQAI2DD{IgeTV)Ya`rT46f7S4ba-d9Sl?{|XD7^>dY zRo!^x2Waj@DWrZm|1hw8{$IT8|MBMTX60?@V42GN5GKJz=*N!hO?>$!gH{X^#c-#> z_5tD-h&&A59|)k#U@b%UHu5-WKHAtxPd6r6LS;IzS<2eUa{0SGPrC?(P-a!h2Op|o zV7kL=KhY9k<}HGdh}C^}3tWCtyhL%sVN`|%KeNmJBVCA>bCC<*M%Y6UFf5jpYAknT z2&1y>Ho{dAOiV=naU@smFi%}(N>;P7tRO>#B|!Toq)4A3FC8ItS*gnJ|76TAz}3;) zeCOxKRlw#ZOlFZCPB8xW%7h_9N9VKn9XeTNnVFP|k)ntE`!OdN;y{kZ)JSLM%dAhX zQj~YAiDp!!SWKRx<;yM)`OqsL+4$|%^%VMec&F(D&BJq|5MBRiKNMB%y0!Va6Z(%i zS(yE!AIEgbpDV8%yG%4k9ocEE28Ij3|CMO%4R#omG>IjD_eC%z)r5@E0 z?Sv`5^@4U?^_6?PN3de^vx~#y{nGMeuF1w$cbkjr)7=XEX&5qTYQ3MH_zD4zYE}Jp zL1R|ebGuzzrGtzdXExJc^X)JXxKZUM{RU_u;;=utVI(1Hlswd^V7xy~mCaOX>3_}s z4PG+1;CD1EhJ9H5!(ddO%nxy`$4P0bPDxo=aSnl&cc|$>XWy&%+`Lhn;zZ9uXGjdO z%tU*zzOxWf{K8341&x?)kuBP(UBfhI#1dYfma48e_3Ss@oc!rDkWgkj=}WiN2u8iK zVW9FDr10^CM2IsRj|mIuzDh}CD+P5|8R#@Xq9&6x4RViLeijEmKR*yh#&KEH)O34v zcw^d&zmSJcpK*-d^(IU_8YqPlI85D0P2L-05W9dTwT`k5)~_3zf_7`ogznXspH zz4`SE6TjI)kt#}9lKIpp(}@J9pa#`TA+Oj< zWRf2^CNRVxSb`}pQH?2$(uY5Kp1CJRU1{S{Us@4v2zm8K#llz*2sD@#keykuy^_C?$tx^=R1@Mu^& z=i^$((cXuyKj+e$maGXAW-6F3$Om2^>C>jm(wraH6grkqPh#W>kBgE2G*`SD-;zqg;mMHaNg)xwlDVS{s*Sl1mkFm12a^Ckf#Wbv-j zltYxHAVRq*uJ%Jb*TnNDyu2>>dq{>&a83X7|_9^LnjE(E7n*J#>G{3_H~_SDhEA7tGP zjrK$YAZ zZWk-Wz3&yEHhhl7v=79OCTb-`Qp*4f0{y>&`2T|(Hl}SoI_S`;L)GPqenXSt){Oxw z13&}H-r#(hnfh@pWABK|uu=tYl%vD0%*-u#d+ah~Vzes_;rG~kE`gz@d$}&={Z+wV zU=YGD`%WaB%uj)lAJqv$bC0qFj}oG}tepUUWhAWFMxehG|Br4KvCS2;=?WUI#vdFak9#9~oRiy94o~9QjFDFkEx;GbC&+L4=Z{=_> zIME0AB#~s*)m${uHWp1a5@r=8=mSs(ctlSm6vRwd+ptdpIxQN~+J-Xn!4xOX6vqtK z(o^o_*EMaHl+3>V8Dv~L9oGWIF;mt#>T6>7*U6{k;h&)BzNREgtQYH?R zOQ1UK%1O?NiiP|^d$QaGV*A3D>s}u;A#YKQ&?%6ZxRRk+I9+J42(1i0LJ2UN6+W%R zgw({X(`(y0Ch#O=uyrdn=WGGr3+>Td_Gm?8Buth^luQ1#>^riBJ`l!~+6o~G85-$? z$Q!;k!IlTZ9zfIK)p0RI@VVTq%mJE@C=_)*ygeapqdSs$a^#u#^_*>952`p0jB!yS z=vd-RjI-zbh{!{*4!hK&$B7Z;X+_c%E8S7XSuJ2FhumTaG1XGcvmh^i}NIQI~rC^WD!N0OuB7@$=x!ne2b~#KiEAbcNxqCPu4PSyg2n z;&#as?U~Ew7uQJo((wkCx89h@WBC-^H_?5eHt)Q@sS^w>g7y3R|LWs^8qN>y5v?m) z7DOdhU*simn~XZ|IOckh4@L;k!bv%4Xs#(Bb8U+o&T_BC+7c=I+U_V5uh} z2c9PcKkI0@#%^mzc@evVbF%OB@MQ`mX>Hkwu<_|5`AM_CGiE9ge_Gc)y8fgmpa^EM zT2%*#x99~CFWCKDYtE#Wnw#MK3R-lTW|q}TEoiV(S0Y8ef|4Sl6kCpIFEU%b_QS=g z^FG_PYh6FRC*K$H+}zr#)Km}s%RJiibk{Xp((;MFSMK}F3l z9>Ij1R{ai}8|^R`R46v~Zc&345|}SzdCdotGqdmxa}Fx9aIQ@bnx zHVm`I?x^zmEonvVeWXDunlEN43S`Lc0i{tzQgP-O1fh~(jPfgSYw|G71mI}cx~jWp)vo*V%7K%!*Y#Jvd18ZW)nfV2CbAy)y5?_HE!6aa z5LB_uDB@3Te+w@fo_lI5=|)yS0ZxcmnPy;=>GW|9tGcuJ0?@zvhZHfq(Mq|Fmx3$# zrcjdyAWppKc34iQEhKc2n&_5Xoh-`AW!rGluZk&%?i^24Qho4iE|E)SRz zCOGD9;O_!tzWf1Nc}mHdc=@c;o0J6v!zBL}e3_$Ky_uQ0m;o2UuYzwV(hGBE{f_n= zvTf4?9@7$y^2$`tF+qwoLLIRwglTWQ(4~R}7$40+$PgWt>7^`o{F#|AjiR(-w3D~l z$O$C``wV5t$c!O$cXI=YvkkvEBNP;76REklxml-?5KvV(PzD`{!HlN8ogE+RX2eWp zF#=>bU#I30(?hpy=EHSYJp>weXBRVAUlD%&QSKJvud_f3mXaM&QnC5Kvv-Z1Xo3z> zCGUp=`u)P?Q`!o;)WzPeGuKXZ!kDtt)0)$zO106JG}|-23kUk+j*GU7#u(JuDt1ED znP(0%q*YROisFhCPam(>gF#m!ZXsC&XHpB;_~$D;T^l=F_5#=@Z31$+lH@u1)bj;Y zh>N^DgR{%tpxjW*Ks@}>>!qk~%eRzRutN4vyH{-skY)MkuW29B)ifcREsKQdR$8TI z>wWPZ`g8utR-(jnH6YpmPSbHch@DwS?ZLJ=px7{_`>rlf1b#HYZN%a!Elx{uxv6?W zf)+9$f%MHMpE??eiuvO4)#w#-<)kAQ%_Lfg14RU((}73mn3H7jieO1Omt<(Clp@gUHI5$8cR%sHO0?WWV}Y#mF?DK|KU=;b4riU{ zA<|fSau7rM9`xZCQxLv~heLoXhbjS$MdFYWK-TOBrZWZ1FV%x%PbOPe+V{i94-JOf zAK;$X%9uBNCVCzPLu~Lecya&VK!!;$2nZ)9%mjPaP?GXEHIiRdy?O%u+D%ezQbJYi zANm|kxEf&sa3yyC={u=H+<7p}1XMUJ1E<4CZvElQRJYrVZp>fBV!}SO?xl8i#fZg7 z8&zQw)enfW&Q@ydbLe8r}NpB|>q?=g}ZGP{h5pUz~$f&71bq$_}MSQ+E0rIy#T zNXdAM(ueql$xBw>r4f5VY9$H!D|1g43_BJ#LOr~dDyD8}qMxIkoCle?d3d%zuh^xi zVsawWizzv9Lt^x2ecxy9&mhfc&3Pjki`+NotWOU+PTS~}eR%EBDwQaI$K~Y^6>D48X-{Zph?rht6{P=6!WY9I7ukeK<~J{nuevRG%=3 z3<_Wwbtp2l%0#912Eb)ouTb?|TI&W8w#5cT1YDkWQ2d4=g8Elqryl?wDz1~2+wa!@ z>E@Q^2R`&POQ&`!n@8mIY#mxWm1IK+W~@*5FVJ_NRjk-`S`us75$OVB!7U`3EfH@xzGBS zeXVjMTtxCXZ^n&Ru0|x@YU*s>DC~k#(t*OQW#x*A=>zZV@8Msp-|(CFDOWzLfB9s- zczowg+c&}8rYIRR2n_C99|01A^>V2F|5~a4rx(nd4WI`H&+zw$Xyn!=rt9YZ!-b>(2?z*$|6VaR z(W2H&vi|5TrY6?M6(hA_z$l?)bAE1>Ij;ib&C6;2wYlbd-Vw3Ai-sRua~jXnQwz>S zEKzp@l&p;LWqE<0>lPFg{(nzLAM?_-*a>~>SFG>Q;siVyCLP(cLeNVantNJaX6i{K z2~nz?nDj>-{xoa`6gw{}s(nWpoS#nsGYJIub)pL{8Q_m3X!*ICL)3ZxX1WI&+aDO63E zj=6WND7VyROiP0m)j~Ax)lU?4&Ksqf<^0fS1Ba>FHJ zY-|encw0E&CiU>}L5bPS>=C&xBEx>bNB=nqi+F=DR4e_uN;Mo&*1c&22dgTh*(gdh zm$FHXAwkBEIC9s+Zkn%OM@C4U4`js_V>_Lp)~tL1g;Ztnf3n$^^MB+AH%ZZGq1cL4 z{Ndrhwl}+vYPNlsVM#g({C&u-OU;tv1;@98dCq=$sp*OVGiQ&$bA+;w3KP^5ar>8a zVtm-rWi-MXqp`TTPznJX(duP-mrOsV5TOvUb>q?J7)g5@w=DQ-NrSq^*Ab@<|4yI+*kEY=1g?b4azg^a+{y6sd#n_uvO!?*F-MHU6i)^Wga|nZ44_ zQk*^qkDKCX;Uy%gJ62IB5ZtSwhMShl*%Y=VSUC}ZH?LYK=T054!|4D%=3?cD5o|>< z7|XHpnjU_*@v&`Bot=qeeZb(u+@sTT@8+tL9*0m? z5_sD_xM8hR!71@*8@0H4k~*1OQg2o_OI~f!W0+a;Jy&z%=TX(u)z;V5T-n&LVJD0j z*(H5!;}ca2CJL=c9~ok>CL!bVQJ>IBa(>MM+wN9A;tunoe!1DZbMo2ZM>^4d7lQ(# z_^w-;v$hL=n5}c&BYJ>1erl;ad-LP@q;-wJ*th-~Pf1x$3V{l{0cUpVhfRao45gNR zuvUSkW^A6~3Akm8H(jL3!<{YMqMC0Ke@OWMh&Z6%=Xo=y*>6IXNdbaXaYPb})lZw$ z*Wt~Dm4*uuj-ZHHvJrEaZ9zno!Y9szQOaX9E$}%i{w$il>{!0|Ea7mo5rsW$ngGE$ zO~y104UMvMc(9ZQ2AlZSy6I6iFbvkSe^(p(H!?n6Z>AOV0=d68uY_CBlOjGdW%^YW z_LSQOADhBvoh@a;jbWFi*@B?@$v*VSh#b!NHCQ4bZ1hgcZ7yOAy=!njgnme?YxgN6 z)J%%QSu8b-m>Aj^9#XlPA^Y@}DOGYAF(#q0oMHVZMY(6ol!Syf7CMkKRDdk@fX*Y3mh2n7B+1AxatV=E9it#y6TXOc+wT zviY6k=Q8&u8b!dVEAMQl%|iO)gy=h8OC8Ts5__@t-`Y=2@WO1D ztQYg%S=XoGX*}X_Iy`%h4VQ-&L1h2asEl@0#GM&$osXV1kFesfwB zS365D^PE38^X9Sx!3}zGrN7Ss6_Ke%|5l@^r9$llqixq`4jW!y)zm0UZRslypL5BP z#^>KAkz7OQWl^iu=}`iC+|u6tkNCw~$xn-b(fa^88H}e8;eO^Ra)cj087d+(C(W%F zGbtyNS;}!IAJx$a<><-E?vl;4GMY}>x6Ce2i2dcj`O)Z?TWb%p7~;`NQc6cZj$RG` z(n4nD97vvtzr-<7iwr+rgaILG=lAV>zGS+FB{x2KBl(C|CFzq`=#+11lLxwtWqJ#M zgS$eYJz^0;u>Z(Z%WbF;28OmcdYV2S0ws3WF4elKBW zEw5&Ex|IB4nTFua0QFczPB(k=_jk|6U5m`ZEH1Af4`GciUiA&iqQ3qxnC=3Tdyl}W z(-*61?P?x__3AG*(PyoXbJu^E_(5XY6}k!4=s}iAJUTP&(9w8CN66vE76vjcC%_Y1hGUW zziqy^vU9|(FT0f6U`lsnQG2|E4TlO5p(NTxeOU;`f`dXw6Z9Q8znNh?#5M)|V4qM7 zC)^0r(u8YHIARlr(hcudiQO0ERam(#u0Dh9o(WsuWC1b`M6ua?l#wi39zA1EAp4mF zNJxRR)}TrLE06y%qvx$^fWuBV`7MgDlw@NfgsAY*3rSUZC;Ee{=Gi{J>xcUVM&vFU zUL}y9!v?bO3o`#nRo1q!bZbTK9_<86x^TrS7LI^|Q%^8KJ zA`vt^ zD*@_34T!uI(qi2Xr@qUpbwDI6v#g8*WY-k@;FF4zhxBzw&D7!gY)bej>kwU6r5#U8 zy{|)|(h&H&!!0)ROjgR0ij>U8n(U-;U$Lcx*9=I%a`sc?D*~fqx`~Lp$|@@<>8pmD zr<7?rv*oC1cCY-No+{`Gqk;!BORu}?5_Pnmx|!M7lB7!v&$E_)hJ}*8W#$EWi7fq1 z(Phk$ii_(Nu*!RY9BDsgsD3({v=Lqe5jmMNKF|w+vu93ATsW6b4;H5$i%Zp;{{7%| z)mBO_Vt;<3#6dzV1WE^3E&3P85o7fOL@d8e&B`c4Os2B~MLEea$-hswIO|RRXaxVP zAfYi>W;9pYx(A{4G2bH+onEJaU?56|W~c`@tK)&TANaAicThF_hw}0kER?FBEn}t` zD^X*0cs?iA8`%eLEI2XdU8kg$X>u#*>hy60Ye4s}2dvyTdzZ$?RfZ1Vdf#qF0ADC* z_+y)tr4y23K%pdbiQrgQT=l&HcR9CWlul zNR<+IiwDt!#7<66gRW-Y-{9{2dN}yqk1h^Nxwu&7_18MNn3;Ls>I(mbL*VM@Un_#3 zn+I5X#{VA8&mZN2o&AqVqjC8;5ThVH=p}XzxhT!t)`Nx@hMdqIv*i!PFh!GiDvJ}{ zwiI=GE_CMNjoxp_iN-;`q1W2XNK{N*>qFLJ|Gt|c{JcLTKW&owF8CV!NPS9{d6KV# z0$RQOEo64yM~WRAAop#TNpjSw!;Jz}0bD4k{}sxAPXuQ-nNHi4RA6#d{WrNqQLHcX z>45FOqc4WuYiKOhLh1~rf^cmTuYzI{JYy|V&XFJ7bs#PN)NHF(_ZH39sOtLUe>O5^u;i3(N1GB!w~ zoQwwI8D0E?{S4Blr&u5lWmv6*#q*9~)kX(9G1D zU4@5?`YtJTfLau?iXmQ87RelYn&q!MB`&HIPo=ajMsg0Y!w}Z^hv#qO%YXkeEt58e za0^YJ=BDVw0UzFXAaHUcruZ4dSo|f)%Icw~^z=Syf#OBJ3_8oj-u;O=CpHYW--0r9 zX#ZMNxLVyslaG^ASIeV=Iq44_;T`Gl&yvg+y#=aUwwQde=J;jc2->=KbJ4mM%8Vfnd`>Pd^e-%w+OufRq7TfVO*Xip7xGD_0HdM z!tX8{Gi}ja1U#N|dwW7eJ#|r!+$I4R2Gq@eh4H^16E)qjBklJS{vezfjlQ zDcrTr^Q26~<-;@T(wER80Oyin{)|!d$L^2zaJwoi5@|y@7F0eN*AmZ~nD>%gMwh;c z#LtKCJw()eIBg3S>Bx7bXjB>y${oE9Oy+IqS-KLX)*$lulH(l7Z&A8N*Bb!Ln0*+b&PrRk5OH3EOfcq10FaP`uHtd;)z;?7g-9u8N<1lKFCWz*+*iGJ_)-V-3``+`8ci&z`pkT_p zl%^dFzN9!`V6-Y`s?sC`EzR)L7_5_GP~N5IecXLa%p4aJUT7anVcgb4z^Hmf6D%wV@^Y`pJ!+rnYk8?T1>5Z*_h=y!+_--f^>o&0s=@TC zlfCz7BpPY>`>Lab#dlw;tbDoi^cgANY^6bzD*KJ$TA~b>V3LQe#)1WhV||REs&BJhaBdus3l)JC#1%UdTb2^c03NjIV7D zCy-E_@+y=GZyu$EFArWfS>>N1g%`<08##Bz9lCV@EbEBFSj-SW?2NWIK5Q^TJR_9S z_#k{xiRwK_)vW8Ql4D>3p%@3dP}-&~3jAKq13pJK!@~*<@dw%FqT88I#`eUPCN}t3 zi2OgRUt?1lTM7ppLX(>@B}tPp#2}2faU(35>IH0GqVs{&_over+>SU!*nkYwDJdy& zJJlvCtZUXTQ4M*^+J62yD{G3%++ieiH}I1+iLLB4`{LuJcotD?v=4J&w0Rqf*L{zw zk}Z3~vO8oYZ0cDw=ytYiuV)IrYroEycWSZ@a2JR!5Z3VKc0Jf=?`S{6H%pZsEVsuH z_Sfj<>z5H2{vp4C7~KnKhmEg&_*_j-11EDf-)+~&e>7^8m5PoCCdtxtZrU{~Ls1g1 zv!hbwkX{n-(J@Z|aYYY=Rn@mtXzo!8%(KG1f-x>ACiX<*NhTAiBe0emIhHIKv6$a7_>bufxWSZs4Zp zqt5ILyzh>4pSz8Xjh!7kX;jdg27j-|CqJ>z`-mtd3kOfuxM?~tv$P#NB6<{sf4tKa zkT(^8ezR~~ZmR{x_0?u%WX!wp;YDq?`Nk+3SzBA%+UAh8@hQm4%Y*5&1J5n>Jqfc% z@L5Ys9H4K$w}(H^UD-0aECADf`n_7(+H33UK}!b*2c2#g?1V02YKmdtm~Hr80r$Hr zrENS;Elo{uuPSY_pUdO);oEWVtrdLc4j?-(4_~bGGy?ny7u0ohfb+0t{LYUMmtFGs zec%RaR~bxX&*;xNh)9%i@EPb-dz|Xc`d*I@=iuAUr~3!7aU7grKb}7=0;zz5 zoht4y2$g0G^ZQ!$62dRY!!g@vn^9Cxdwb*)G%fLOa1k*Pj?|9NH%tdN{4nG3Maj|! z0}rt^WxO-jQp$T}_g6beAi=-$zWLWODfznnv9NQKTF2DgWe7*a9e+nQQ#`shJv6pC4Ubq(Qu1WguC6 zZ(7*$=~gsHWeOK)aS&atsrYGCAAeh zD_F$ul4=+UYxdhP0EqRDpY|nLR&6fBl?#MSwB%- zD&)X3x8=&dsS=I1Pr0{z2rdB9H#o%nP&nzUyJOswCQ4USR}gL;kUO+L;ZVGmd_(3i z#(R-z@btSxZJWo2<>gd&EXDxf(`}lEx_`B>%52@Go4pUV&v2c6%E!;^gEiXz519gL ztXY6DduNxPH`-mcYnGugVMpcJ$liW>y!zym*>%8{g*`9&p56T%6}4M_$0l&Mq}|fnBd4jFavJzvtAX*VxKSZ71ADVkCC0SWk-K%G z2u1)q6O;Yl!!m<6%og44?TGji5)u@hk>LAS^Sp(3ro4hIHR;C-M$67rwa#sX>2KER z_14}=Mka%I8_$Dr=?g71*Pq@#`#%m#OBY8+1=ha(ob}@&LxJ(@dR%a=aGvSNV5|0RBZ|@3XwffHNFmg*`#bDGh{*yAtXb2cm8!UEwkOkXp8Q!pP{b6tZf|3PyQKkN zMwsgvs@~ZzQ6sCW)D2+76J?9Vs61=+mrqNq_8sZ=+M30%h<2*u^hiZkmqIPOE& z8vLmcAY>H=s7T|cXMBB)IK^{oNK_NBTR|VR!5xcbm%jy&$4-I!WN*y;lp#ZB|ME(z z&vWTe);vms9yFS@qb3~Xs?<^@;3@bi<3a~_!I?Re2Yu~d z6Yqx%31(Ut#M^eH5m^x4h4U8~wQMM{kb$_puP3>80ybHNb@;NV<0>sdTs`7hJkdnE zuqj8J%Pub`A_zgHiqjNk{VD*)gpy2)T#Rl)IfrUq5)mQ5CpNEq~&XeAkC+KiSfp9kkv6*RSJ$_4|Jw zTdO(U^T;81@!^D(FhMcbS{@JvpsT{`z;I0Wet{um-a>SKLTtYvacmz7LPo4Uo)CbQaRNJjIGw2WR=gX=^ zpd+jL9KK7TbFh65PPj!ATNnRh+fFqt|1s95%77C!{O6Zv` zNj>p35I(`8NcLcIGi~AI?#~}p0|SGfKbchF#1>`Q6uuxG?5_?Dt!aB&o}4<^)qx#9 zf5#<3Skp(h9a|W29N!}7i>IfRy?tG8?>1;U*6Ap5TwbcMvM@R(cAAMnu%FPE z_m{ONCvgBYS*$p<)W2@u{q=wUz}Eb}KEcmv{*21pBNu09-L7PtIgz-~(4)gce{XMZ zhFl9o!Boj6T0AFWuj5_lIZH=JM~Tf30Z5;J`=biUzf~1x11A|KVOCjadS)k@*>)x; z>E~dXSyUYwNSEicEoSiuUAvkvSNat{ zUUInM$Y3Tz_HZ!l@o3h--<)s5xl{%I+G+J{v1&Ox5c(?=g0_w}j#`LALj3CLs@u

Mo(&*|DFOSHQ3ixn@6=v0rTt^FQCU;93?jga0dKDkYy0ORZ$*VL z@Qv045UaA{gd_>)zWiuJMr`tTAZFqgB=<%1S9udH{`OnQkkH#B>UpbWtMhv6)_FVv z&!tHp`kL@TMP~3~n35WOt;hBjS(whmZbWQ2bbZd;-nbuRC1%k_b+05iwF+A7zdP+D zc(4R8Yqw>YSel#~DJIi@Bv!!2NqUzbi?8rePkQ%P$RQZ42I{wZ;GLT|tsQdQH4gP%f#t z3oFEwa`Q~We1AF3!v+v4pLK|3g9AGWjkX&c$VozjCQ3}l+iEY;eW zo|P@rUH<55HecIHsp2rzYFSIAmb%>jmLxA?s93dF3b>wmmnftTFcw{icJy$fs*?6z z|0Rx{hVgYW61+A0U77%Kv_IQkj7~}}n=C~ai65?$$};gnDb&;^I(j;DqDHap;5D*h z3YGFQGSo~n%m~03?H;XYI%iV`aTD&W?RL*w_9wK+Lg2sGj-JP1pk3=!CVOt1>uC); zUV!#AD?{mZ)X^*`S6VmyuO@qELY7V&dn6~gQ_JHR-R zmDQbEzgQblcax^d=;Gu_G3FvQqQQ%EASR26#h!T7eWcbAe9_QYj`Vs(C*|WUknVke z^qDKz-@N>|&V7CF9bY9F$2->2U!i6mwarm9*0T61Z`KdP_iN%tuLOP@BP=r(?l4L`D`+YeY060Hxd~g z??u?-wCMwTijcY0xoQ}aZ`qz~U#~;ro)NRLv6x3_O=K|uN0=tb1K4hTz_>EqZH(RG z^%Uxp>8fQTz|)7Q8g6hx4N-~X7lSb|qbBf3BA?H^1-oPWukhje{o_ol6b8)woE*KL z?uFLZK8_KBv!vN0gAP&((Pfut&XCFo<|77#K=GngyJm(eRUgd|rEqjC z2Mmna$3mbpaoM8PeTPqQx)EW9tokBo`IdWh^j)7Ul`2{cGZGzd@7TCpoyD@OD}-pY zET*md*EP6xVx*~C58RJEO1WPU1qLC6rob9&qSGpPvO(YF+;!|i zi_DWlCG0I&5lYh`%k;^k$`q^4&Cvaq7VuSCOSa4+eI)U32jf^AeOnu`saEK=IWqv( z2;xW3NIxZ|X`v>^Aox`lHQgIP$v z#GiN$1xPI8Qd&{T9kb$5!i#K*b(k@#a`_x5&WeAWT3-LPS$nnx{q%l2lFhf>`2hdw zI2CJbdq&1>@9(DnSCp4$#$M>aznQ?SH||bwrJ(%3m4eNJ(c;$a#%}3kvsPI?ha}7u zsjX;$BrMrQe%;qAdL?7=Iskpi+azUC^TX-vpn3W%wDhDzIYHh3#nQ~9sdhi-sA&XT60b6&Qmu zXwke@t=_21SQWW;`AA^STwX!AG66sy#7G@wNTrTok;iddxsV-h(b?F;TZYt1rRboq zQm6*c?cp%cI`xEoS#|M(>hoBdQD@&WZDcnWHsrm02+idHps1=fqwHVYKrhTu{BvP* zVp7pii(!lXy-{MhHd6J7M3FBnfi>~n5WqT!N`?WNNPIJPLdG(y)L}pXC1nM4aW^z- zGEDb;7;48K)E&Xgj6h0a3Fn7+cfPo9HvGE7Ftu&zZ@cm~K)_jWui^dqvs(s>M9J_R zs!~~6h2H_=X?BUj2pm)_n=EE-xV{Q3q)KA+sr^J}#=E?@Kzj+A7(^<%E?8f5)`R<} z$-vo$1*fhxWp%&i+gy2?X_T%$5}Y>t=o1{W?&4*qkosk?K~uJBk#GZ{%QKtpN|W}0 zfIEUF+WuzuuI9_J|IvU~@>KEuQ)Kp__KJr(DMhqD@ zY|DT|7)C~%TY7r82kU$JDk}Nk^H!~>B20Lx0b4;o2J=NQpZeH?nK6(i*}xPA@i^p= zF}qf4;T@)LwtmlnLm(fn3d=(9Tu(R-p^};kg}4y3E_@x*;;^Q&5>DHpas{;!Gx{V( zO}al5q_f^*7sZebIG?v!0425y3InFUyw;kK0e+T?kpkOsw0V>EDC5`T$nB_PxxBgY zSkM_=$SMKl=N1Et*01gIB|pTy;(h^0o9f_Np7)L+aFc!IzblyznA8Y}adKFiTw`Ti zWEb@iyz(D8Cwcn($t-sYqOObti%}D6AUP|ZdM^28WtX68lP2M{ip-VRTc6SG=~!D? zu;eran(ds>B>4e&H(&c8m)VuTTXe=YrY@^b|NJxMQsX7Eu3PCxpr4~NvGFu5mED;N zP?i=r9=TT3(V}A%O)U{j9cP#f-jUvvzj^8*g9%WtF0C0O3IC zT-1>(>IWN^C_mqU`f`odQcdaWXcf47TASNbhU)REOqYjKCCY%~B>B7BM;~0mJNF+E7D}3oNV_b)}9MpCR$QKv9msjF7aTnYxg9%XeM8DBN*GFM_oC-Y8-@V9;|iPJzCHCr%0 zy;*)fy^asxLXD9(Lk@XovL;N#+`G((mF<^MhQxpad@x2blC5iy%tfgoNa7^s#<3gT?NZ|_OVS5vTFd25RSJSMwXwZcnXhuecI~=^D23a( zbAM`iSQssdZbSCSQexCJis0K*<8A=8E8Wgg|1-aDz_Y^M^(e3j~A&VGQLA;L;Da+|gFH z?O&zQ;i{z!_JaC(6|`%_ygEdRGc4v!>`j6y|eT;a8I*V<*71stAI z%O$I3>ha~BtlQhD!9glv$7u%eyxWrb5#8JnH$sr>D+eB1DI!&ly!q=X`#uVjaKZZd z#l^X2F1$JmN|2MC7F%!^h==NoGnOc3M^H>3({1Q@Og~rpF-E4upvn5S zt84mlm1@pfsqOR(`(xIuFZ7*{!2*aG?nt%-M-HShUI8bMvhYWdO++ZK@Q0$R#Z)0y z@EG-%CSAIqsC3Kxh0C>82IQr=I?W;|mv5~QR+XxBS2}&-aB|uk8Bu3QZ=p|#P|J|z z`|WX?*^>RdQBjwI0K49}-`!t#3u5Xg_a=W21#j7fJ)ITw7)N?5Tlhg}QAb9?5Z^6< z7jNHx8?+u6BZRZb!}GdWJ2aGBZE4LMFZmZ!wl2K4AKtI3>zE!Lra%h$OUsIQL4LF(t( z>fDo+TcV)gA!P)|-lE)rXH&v>F2ws&u!aaTBf5WVo+!SDhEh*dLKqyZCQ~tH8Tn?2 z{$TjHVN3z2C)>Qp*e_O2o%r*k(Q@4t<1W#N5{zVC%+AWADrAmsadTbT`o%J$sup8% z;!$I%Jp`C3<&1Su#$*`^5pwr-R;^YyH#fib^z>A(T}(|)6J@w?5A4=wiY)Z(X57~gUfoN-ICvMc# z_Oy3zb@2Bub?OnfNW3pCOEO;WaR7JQN#X(dmt$C?EfVhQi_q>$!l^4=#6oYemL{a>FC@vr#gB&&|tCfz9pO+I83d z+;IU~{>I;NZKWBhC6&DM$@Q`{F$Q*a{3wC0WsN%9n=32v3yh`^4l}pUye&kUM5VA0 zatn10P-cD4C1qw>E4u9r4EQhwcIoMcKuTxhKeyief4wbhPH9R;5(y|oxKo53Cs~yO zf~L2aigz#Tgfhkh;@fRX8*Z>ZBpvPNF1+7eo!^{*J_i4)t_hcOQzL7)x~G4z3flQt z`q`0suhr;Nxki2RxtSHEzR1tifBvm|Lye!;65JSBE&{J*xBu4ix+541-E8wrc(m69 zQaH$<4QPG)#819Sh3xU4!RTyXNoBC)awJ5MGeiQ}nrHe*QlHnj&RR8VI~{3ZbD?=z zk&%X4n48wmqrH~tBImFNb^kJeX<2oPJ~ykczS`oLX}X6$I*C2#T|e^+|KQ}yuK%uU zd_E+6hsK@v!#{d)&#_ei^><_ zv?)u@Hhw^p@P>iA8UCRaN02nP@BS>QrFw=QKE7L0D!)W91B5pUfkTIiVc?)le-RXL z)@S-@U_r zUIRu4h;Ry=aSZDE8QsvJ!9OdHbDYr*d7Z7Su9Ybx?M8mv`<&anv!CbVc*=%;CE@T9 zMuC#2;soEaN}Du`Q|ep$IkP#&t}1oEMg0`#84G=Na2RMTH z7@``3mvM5jsu4RTJ6`ViR(cF1*H?L}EqyJ5rIMT@&OvJab&%o_`j;TdvIBqKS1A;j z&e!!T)+`Ah92T$6P0rZ0)99{3m$z>WYfI!ssA!~!>8>*)_&@UlcW}f$?q57d-(&C! z(0~i2CnuH*YGotzbKX-xu z9O}!iOK6CwDL^D*EWtqilaLLW^|`~(hZU1a-10x=Sd#I@fz+H!25a-ftg>?!rCjdf!u(EYy9&M}L9|*o@;ot?U9pcDhK1-K4zl!d3U+W@#i`hg zbEX&zIBY($6;fFiQ}D1;-n`!IQK?C?EJ2ZCn# zL`hl*5`|@?PaVu9JUtb}7DH*{K6k}{i_6Qetn5tDLuReV1DGpe*ppg|LR*IZ_U1R( z+-6FV4#tq2JM}t>aT-JW9lhVCT=Dm&U3j;hGGw!v;u^C$*|=HrO|j}5Q>_III$Y1` z1G$^M1T%}X&(Y${-X0q;9Ot(KmPk3GbdSU52@i3khxc2ver*;F>Knv})G%P?y$|0Z zT1{3C$;U_u=8Li#3a)&l6v%>%7>Qzs*OEpUY7N>f>eK-~(MavsEE;?SYUNt$yh`R6vQ zU;UnaLqZsbalwn%=l|}X;Bh&O`?D7;6-9S{qzWu6wS2O9rb`Wf)m*w}H8O-?jM3Oj zuk(870BQ{7KdO?`lJ)BQ?b%whxjAh!(VFI)fhbK6)K!z*yK|eqYwXiLq}JxLrGT>> zJFPDBoi$4YV^Gqu(xf?*Tv~9R@`THCp52Oc`H?cCaF*SiFu7IzbdSEWHguUwJ?N)7 zKEn~7{Hd3<%z}c|vY!=uLqg1(!T_LgMBS{pv773Y&=mWrCw`#CX8+ZfcvM`f`>~~l zPB9(>>Ww&b*PWL!QdlH;;`bCf_m#4CXAQE%%&H+Xv-oHc=8>+nS+oNmde3K)UlrvtdH*y?pN|sIC@7XoP^?n^d-^z)ChqLv*7R|fasvn3SupzSN639PXGKZ z@3GR4TDOc6leEqe%_o|1K#KA9Tc3G!Xb{mxlm{Mj;XKf@vD<_L=7RG$m|DsqV^Nq_ zF=^^08xc6Dv+-{pN z&%-Tu7!Cbe%#rVSe2-d$5}Etx-z~0CPaYg}`#MU-yTqw)OQJj(&yI7w|{l#AS#1DYU2yPkmc#BtXO>YaU?OtI8UZS{a@^= z?8s2Pkr|uFLEZsBU_Gfzf5D*|Q-+kzx0Ym-8Vna30s|6Wx8TSi^oys*>p#HJ%;nP-pm z|9^P;28T+3uJ5#AtL>)E*3I0!*|u%lwr$&Owq2WTyEfNmefN3ZXTSLqX3m*8bIuP+ zQQ_hAq;Y0{`-DErhcO9+3ui^d+-g;#%B~4h=IUuLbdL8{S1+NrF?nP|f9iwhn-(4JFfP+R zx{ZQB`MUR%9F&_MJ1v^DBTdMt@nHd0X@FMvz*}da7OuokCkj~W`8O?{@ngqwC6wUh zuFe2bOjP0c8*2*AVL~Tae*vQdYOc}^m}OY)S-fwd9dJzNNi=1tzWwq-2UVovw}z;~ z;f!C&lLVB#^nHQCw%Lo6C`iQ$RVV^-rff<12*yB2)Tp|GitX-d>y#}e%l5!>GrAgrF-<>t@diC@3BU8I0YC9Qv>*i$a_$Z|4zUgegZTVZXxXe5W0 z=`}ny?ajIIf4aJxxLl^tj90@yt{e@&+|DI7>yI&DC$03qi_WV34RYl5zHPx8{xF|^ zJuuXc{EWY8*iWE2bl@;kRaVrrrj8e*LN1;)(`bh4LOg(a$yGRU1UV=6J2gvjWsk1J zAO`keVDLfIuhvm7J4BhiigICd-~8nulrU9DrIY*_G-y%P(A1o~(4AJH+JUXWDragZW7nfWeat9GpJFt>*N~=n(nncjzaj#B47cXf5PzzNC%s(^KA8O zSFf`Y@>)kKqGwDcb7A##iJXKTzxLwb3 z3?hAIF*6@$*$RR823dlU7oJV@w9WK@cXP0{;KTiVgd?AgS1J`;_me4|w^3Za#}xbk z-g4Jag8=~WJFZh!*XvQPFQQA9*Wn*9!&xSG zFG*HdzK56HxY2-m8?btL_&D;)(g{Z3iF~Mk57JsQU95QzA!Wxo} zGpT-q**i0e%7t%9sEL|-2>-&#)znUjQf}JpT71SZ2oOZD$0BTNOBy3mCYTP_*!-o+ zoY+=(Gch$qj~Pr8g^WKgLsX+(u7VoA@N|Gc%DC$RTeo`>5EWNiSk>2J(k1ssdMYBJhLfUUV=4^j z3&R~AV^}1Q>7SZ;O^BH~765|>^vf`biAHCgq+-)l-fP_$esbkX6bs8k@vEcdw;q|~ zHd>80(g+o8IN=*2JY%^mIF~b~1Y_%`EB~2GikFVY2Gtm@SFZrJUh{h=&sWiW2Kb>( zCh7Av57MGjk`aoLLkBFIU|@m}6C9DA%H){1F?p^luIJgS%7Dd+%RZGPpZWI2hD+Ab zU9s`BqwP8gA$rdv5(p(18zZ5eV~>R};P(FKaHDV}qr@LvRAn20>aAN!`0*?SsD6YIn7h96+@$7LDH^W{aLOp^ci%=}j#;C^CdDzH@C zDwHLl5uWdmtSR_Qh0<7wm7H(mAKk{x`g4eI=|yrre3lqN+-pk@lXEZ>cs?O(j5dX= zn{3bNF6IYZ0%fc^dtsv3OgD(5GP_Iq-otx)?d$b)aX1mI$y$*15J&7jJFEcjHAwRe zbjk#&yL%F0G-5V?ZlS2}M}O;Uc~HY6Phlb!o*W!ZoIM)iM+!+vaufRm=~C!%PoUv5 z3E^y&cn-{S5Rx4x(zF7}AmU1ITBX;9kRszN(NrbMi2Gp4q8OR9gf%#h#16PmS$-5T zB$G9T`H}Z3Ko!6mq4|-16&y6fmgMATSA-kjQ@ocFQT`!;rAJ2(V~^WcZt3%%q85EDD!wUhoZxw%ZLMDqrGfwOH748l1Bu%AhYyY=wNED zi?+5}hW-XFTU}KZs*fA;#2J(<@kQ0{8}Q`TLJzZHNC26%xeRExma=Nq#MHh8b38IT zcN=l`zyL;{GHxt~%flR@SK$Ui?07p?ULhiMSYU=2qff6NkDhOXBqM6GRBfBFqf_*0 z4TzFWjcK47k-j^7{+y?gk&@z!F;w0V(6_OfGHY4OVdJaZxn69FmKiy9>42x#StFBN zR(h5usy>^VPQ_FlAmskZMY&40&WaOF4$KbNqtw>Wa5=AEcdmxmZvGWj0>NN>#%TVz zy=2pJ*7UNs7jWe|5fBf@_1u|0YFfESg@%UDn{zG1le?&XyzJU_jcbsMmLA5?RQAk}3GWd(LHZbyo^%duU(Mawx zHxG^elUz~%o+(L198tiQ`h_A2oe>@(rh2tN>)5D&k%Ocby2HV+?T)C!P5{zy>sbAM zMA(=DDL-15O2{I0?UlAKa|3Lx;tKQ_#l1uW^E~tB`@NY74;ctg7RDD;DFAzs{-DEB zVE&5TCL_(mdth0z)jy>Qv^l&SGqM3&9TG(o7Ee%82H~vJ7o4RN(aDHV4%j1zb1a$x zv+hf)0?5r@C;A)7q+n`YF++S+%Ui3dBjC8701%`}k|AJ0AUDuy3MhkARponW7y+{oj6d`HjNsZjMe*Oj?ZWz(B%0bk^m^ zpW`laoYgP`l1Se#w{vBSozzhj+nI7lrzSV&6DeUGDrXlg>VvrTx{iX--c3{iW8KnCu9H1JUVlYT}gfnR!Gr21eY9F>^UM?u&URIF$b zpktd>!*eXnX!FIwS<`aOHdu=jdc6$ zRVY6)YMzr;<#IM1IM=YbxogLQiE#TYdJ@W-E#u0Wtx@%1;QP6g$C54uu*k3Va9fEp zhLZ-{@O`dVqaikD=xA*%GY9qAW|gWo&2ip89v)oUv_dAC$2HW|{iSi2Q;eNGHxnoAQVWE&s(uNB00(fSTjFAZvU#rN$~C%h0L|W z4$dI`HEO@T+ z4~Wa4015;j7t2DT#BJ~a%zuk~VG$-XN?&}pmJMm1L8}v2b`*&?zq#>E5$D!rA^TAR z6mrKm+;gm6gVZ{*B72nm08eygE&(J=KB*~}S74WzGb~FdkVX^`B0%!O761&%#4#UD zg5s5+Arow5Y#Db0C=G+;szuB5&$O~Phck@%TlcMS;+ceC;U(u2HnWG4W?LnRy;>nj z1aima6WSQ7MU1lhso`npgHaN!`R!@M>jf0pX34N{>*QopP+|#0Td_tqASHqGcUhgs zPanUX|7y`4A4xRtpSIJzf}?L~eh>O!k1`lwFj7XNWs*upaZ;ambKGa&eFl_#MLiwo z&L5~pYbz+pL$WI^0Bpqv>HCedOhS>7iHC(^24QmFST@uK)1LP*;ZlJ5{UG~UExJ(o zFp^3Ib?e;b%t>;U=@(Pbc%VeTT7{}G6KBL;Nt%m?2mf2B+UDk_wx;Ht7F&${(&>;v zJ}6K%Xld~9epFml4hi%zRn4B5n46n(X0u=;w%sIKgC-U41MSBi`!_2t=LzaUaAN3^ zAjXqUjUhUgjkVHA{-3*_a3wQEfm!Uh#V|mB`grHHcW_wXue)gLJblU;ce)_AT%A^%VvN zW>rar2=0=t84Cd##NYI>X&mhB!8GJ!AFucE7J#5v)Ig^ZFDJL9#*WvcEVBaZZJpG^1*w$+HrHk)^m3eeH1p**ygRw91E!3@c4=dJVSIPhu83z^a1de_# zE@`Q%NW7!Rb;Q=Bxfol*gD+6LhkP^J{cg+a%Gt-Ocq~dULcj#ivxV_TVowTj8~Ixj zNXRt9PyZys`j|#`o+f4=cqBHTWUmXMJNy)gc7x?>92Ke@R#6dk7*Z|SK!q>m12#)? zM3DfqI~k9tk{qT^E;6>$Q>qwsv_&j+Lq;ogG?E)sCiE?Vu~nWWT%nd?ZtCmTjWGv5 zWaV2GBdFbI8$zT)wJDW?VvQ<|a`q7ZcYay@49zO#%f<1MDtYUPH72|T2lf*ZkVAFG zF&3x1={nP_p_cK;Dxpuxp?QLdJM=@6MR7v4In~irJpv>UyYqL!Mu2-tv6%`k4jc@B zQutEtlk9 z#OwB_rf}AqXTnKjI3-YVx38{z*}0Qi!j0A0$J#duKDjw!Tspe$4I<}I+@AUM(o3#j z40CL^?N^$AVj|4!v&VRWPfbnfuwvha^l?a0X8)SFytDxse=I(Rp3FLXYhkh5*!GBU zNY4u~izkeaOS1ANeiG=-zWAK5KfJF6s+{dUM*4W%ptCsxf^r@mjg8CKFPzpGQ@mT| zqbqHu?|8heV(x!OHSE-b^wr>%F|Gi_@@N9F=GehOJ1=4+;%EZ6dbUI15Yl>S(8W|X zZqkcRKsK5x_QC!sbd(pKK?u&^vYkp~(mh~-!m)frAINSjqCh>2-(T;AWqjxBAxTTm z7~~q&9y}1bYkkEmJJ*+kDxCD?Xq!(5c*bO0;T#H z?M5>Cu~;cSLP=|=tnx|#D)KueO9}C0BC)4HX$;Hyy?X-A2h_$Kf1i!nCea2&9arW$ zY!8^d#vB+p%A_VtrAguh)TI!tc2 z^l&x=cJ8`75fd0(Xsd8!NsQ@r2dykeuiYS-=!=yY!`0@qRzh$-fPmXKLZLs?M(Q~^ zIRc-Ah%e#PVU+o3j*|Vo%P$LdV(ut@J|>sbM8R7D7=3jN(EFIrz2QNOq%?>^ZG`uZ zA?gJ$;%HP8yDCMp*+Rw0aIbRjH}h7xa1_G&sHo;8z%HGR`!kl@@l!<(vLF266Ig&h zfw8+%{;yjLH?uwoAbwF&i8-kD0qNfznozm~Dx@oHACubQ$_;xHt`MwW=EoKQTS=Pn zRu$Au!h>k$^H{PJWS~hW&Re_Pm+Wyv*UM`I^Yrh3rI9xXHY}fk5R@^S4d}K0!Vi>uTc>SU|O*n97l_m6W5M-VZQWeqM zs1caS+^^kxa8Lw-UAUEw{8(?k78@GCMmiAblBe^1dNX#tn6#9Zq@|%-{Np@c-|Ki6 z4C7X7L5Ut~qCMTbPOi8zDt-^L$(10hRuFi$|K<&cLdlT-6D+s-{@!`o5igV)xS%&a zjlUk#)7A7^t2FWFk(JFACEUo|Jb(2Z_Z%U z%fOa9{U<%~Y9zYk`9yrQZZp=?6G#;>A->T#f2vi-EGim0DZ-q&SSPh$mow57UBEPb z-@d7H@fR&RWwA<$s`}V~(m_E43(_CzmK&+18MouDJ4>ciRYm3c9;DW*93%#^Dn+}s zv|Wy>U}R&9m6uITO|P)=UhAjJeheNmuy?*+oS2A`GJeZ9cIG3}_<^uqA95%f;YM%> z2K?2E!sVM86o6iVLTro)XA$NtNJb53kDa=lZ*(DB_Z7_@BYm)%asBhP$8N-Vd;3H? z@ddAjrPr2-z8|4hj^q|JL3#RLTBMBIfYKu5Cv)@JVDz76`Jtw3SfMiFS_^eFa2!4P z8|Yrg*?N9&@QQk(0t@~!F=_Q?u`dV1F^TMKy2D4g_VhpjbY*^lxWd77tlYa?M-#Nk zQYs1!kJ~d|v=>+GXT-h(3QLNWSWhvaaeK@(EV+2XpgpdLJ}!t(fiwstdXi2iJyfmH zniIpmi|b93Ko6#%+)|X-h2VuUerC)|5<|Q>6o+7AXQm`~xDg5hk|uu>kdxpe5fA29 zoFYu_g`EFI`b-+7Po+bt&H#1z)=LC3G(`S!m*ibkPa*)PF{r4RE=9I6bKUVs@bJ)W zIaS+1~y6aM|`X=ImFEEm~w^ z#uQyn&&;JuKpsJeJsn0(x6V*8ZV*VzD&>cdyGOecRkCdgKXOSrB+c%n>LA{vpX|(0 z7OFXf1{xSj6-QIDDz#dR^=mCIlMQ+XEdk}5%ShESIK(?4sr~^wV$CjBHP@-k!JSFR zMPX6Ow)JziOsVD7egs9<$fOB8>C7c`myX{04~D>HGveTdDX~KaR3eZ}Q9TXX!Q#*B ziQcJ|2OsASP7q~SLJoYkj4F_jbFISW;{5#5XY1nrWqnZ==M2ZOp{3A=Ksx`2_Okng zzl3F_Ek-Uqy2xbk2>fD|b=dm zpIe(C8f5!%zU3x^8`>sSDx*(bW19UY*i%{wmhfyC-2?-Io{9^nA01p&f=aBNdP3O@ zVS0jAs-%PmjSo9!kQF6R4w2%(9g%M{Z@}JORD3$S0@Z4vBVLnSog~Q#0HcKgZWAx zlEAbQ@dq~-$VCOw!@VcHPv%uCmuYJ@q~lU53;^(JTiCX;o38TU-K$oGO&rN-7;;I` z`@j}|p>Iih_%KBA!Fk{eL=oym@Zp0403*bx@(Z(*V7ee!Lt>M!-vdhl{)E^CW5Us9 zB1Qfyac5~@k+2+kR5Ycns#du;+Aj(vi@BG~YVPzl+C8jUqpdp3*N{?pBCBm-$SlBvp_DdR5(XRW(q)X zoH&V(sYgbHNHu#XB6E6g%#>2osmDrE-LfIYu$CA^fFP;gVDw?m{8MWe^<%O_@tVETNiWwp zc3O6qtET~kK1oOO!@-S0xzZm77&VXfB$?8ysR`I-aK3{XXG3G-=b<~(nEeUfG*zh1 zzQQ5l&cyOj$_mB+1TnLDTa#rK0y-MPz!eY`$oH~#){hr5-iXP3a6i}8#cO;0z0up! z3%50$LE0#j`J-IPLeH$MR=c+H^w}I@ z|GP%@wRols8XzihLM+nS>x$#@EOB{jN@aP7{O*W^YKT_WstJg0uiwrStu;$ad9e!F zYPtbIfUs-j$4V|tQa{+RBE?=P7=BD)#^blXcDihcfO6NpETVwig`Ai|QiMVdX6dY{ z1?7qJ@BP7gL>|0_3tsp2t5y=e^&vOAefi$A7mu$Ec>eQ_YZuMO?my;}ctpQ~_{a07 z>@kW~7Tyh@3U+JDr*L+LC0hPrcmFjp(G`T>Q{DC0>N3eF`xY=8du1AXzcUnr{jJ-p zo1HE9LWK(b^jE|!Y+s??V1m7}R%WbRzt;8*e-mAe;R{j_^D$Zokughz;q>DVWkuyL zCUO$RoZ8C`ToN6>W4B`*47^H*)h2%YX6P_3?`K#d3TU<-vFBDbCwi@3{ov~8Flgw+ z{9LRZzk^>Z2B+d>i--mVLCwD)u$1j*Knw9)o2u?rA~ow2CLxe|I=Wi=%=7(1Hay;G zV`XURc@Bmi8bG>b@bF8${$cZU{XtMyrW=nG>SKgdS9tc^baFopyYvLiPd=rXN)_ie z$8GH@@t$X9TKS*@HX!GUmj%b!nD6)D$hu7mSxns0y`5q_STS01TL;J0BXhA*i>E&H ztAGwE+5fGcXzHM@j7-bS(|zaIFb_peDH_`9vLw0Rww9rZ>}{!wo5{m6CGr&V03j_m zd)yv0#xRXapA4OCQTTdjKeXPhk1Vccb89OGF-7UyD5G1_xD1Af=-KA?rT&)Y7ED7k zKaMPUv!(|bnHUP=oMWsiq}Z5q4-Qj})5^;60BB^c?D?rvEJLrRRoDR_EadttHxG&6 z_gc8IO82Vwz%Oz!c3&I`PgWU{N#XV~IhUk_$6kgx<Cdd&`%pKCUAyI&@5EXl@dfbGe@ABxIy%6J=VlRiE5>bJ zh>&3v<1Eq++i~I3aG4-1LSnw*zWM3e-LMhD)G^2+1Lr0blhsw<}V3G}| zz5h7doSCwbiwXtvVM>ThZ@#9c;-^D@%-A&B>CDTdro{he-PGi5J5{MTUS`ZS3)5MYsO83Mk8NOwK(uH>fUnZ#FClFdm07a;%3nBZhif`XBnBxwXYWBRdHQVx4zeOtbkd|UkEC6)TxrKManwj!OYb%1 zus#0D^ZV`ca-SQ^`Qs~&f&xZS63dK+qLc-Hof@gIs4a+VGEnak^2Dt6H$4Fx~_-;t?E zTY?ZvoAEAWL-F3VmbH#%C!$i~GGw0wx^sY*wq(9DY_0Ovx=i+j4596g`Q!swLFtTU zO4te*l!gXo+wCb_7vL(?#>u;*7>`@)>+Ezn;fKtr2i1}8=;KONC3jHosL_kDuPuYy zu=xno;r^?kNn<-#4VoN?zxO&-Y^_O90AxjYKey^s(>g4_CP=9iiN^k6u~0@c$MS{H z9G9V@)&xFYjw<(72-`2nv7qdBlLEFkjT{Q8rba2*A%{330R%B34F|8M(2)mgFoMX7 zqoL1DXUNTFXsAaNmRJ5Ejk?LO2VCQ2KjA**8%D*_^uP|?u6dtMIc&4(+rD~y)VXBZ zOak#vtCFYyHa2fIEwsuf?ZX_h3BQ|5a>-S4z&m7Jb9yk%uu;Vl*p(>f(~erFPK=bo zI6NGUFf~I%YYG|aFHTQ8=KFiTfn5jg?Cm+Q<4TYq2r4Td-948G7$Em(yb0ag!4hdL zK93K-(O7n?iuCIe^i}62H8cyAH^vCJMd?Y|I z9xWpHU`)o-AUcxzLTVFJ&89+8Mtvl_}r{!*9ZE|?z1Z#i!eT&-MqPqh<2JP zW4%eLXSP-cSE+BhgXK8IRqHHk+jOadU|rikCBlWl<&n2wlS9o{`={;$9klU!Td(tqWv6*?{_z*e zLH#>Pw5H&=a0Sh)Gn}htBjV{b2Y-k!U(tYaJM5T-@@VdTQ41*fjwQ2O{F1}838L8A z6iFz^s8pWhp+fSBj;ZU-#--*jf`iW5+RLcn+!;ee680E+VtJwaz*uk-a5=P1|hHs+{Bh=Kg@-Sa)w>#}0x2lwolTikCm?W+wS3aBhh-BY~x9vZ-x? zyd(X_s73h^{3;J@09y9t@1}42$bu4nvH@o#mxefFF<{}l8EhA!dsVe3b$ z4T}ZWtfjR>xIU#XV3j&L>K-596G0#{S@?tHVI-;|Z2sb5QPNMTMl+USrBu~KHac+u zZr+Oew%ZD{Z<-!vT0o1cdYp(sa*EQ+?T+yd?dXcM9fjxphEiFS@WH2N$If{oA;b)k zNXPMrvkbZ*N!Z{DK!1t3Lx=Srk6wgE>#Yl?0RNeRk=XCLG$0!~;M>yq`P-Wo4Qm9W zQu%~dW_L#Gt)9L;S*m6ecss_9Lr?7-urX<|Ih(T2NHP zuN!yd%W>8^OyIMK4<`68Ie7-mqNG0=B}^`)0{GAe(*u7^$c;&HGrDuYn0KhMM~|9s zlPxw4clx4|Nt_Tx^`s1!(z#lW^N3sN61{U}OjQ+YURgM#cxP(=0(%;`F7GMl#BuRa zJ^OXD1$TQ2rE|eJ`=ODFT*cTx@g?*xzP4r8(CG?Gz1pbcX6~>QaQ+z{cR@=Esq5&YUUv>Cp8*|K8apI?BFYv>mgYwm`VDo#$*A zg8gJM94#+!bf1#aW24U45J(iiycufH{P}m=MeiHb2zgLe4y*Ne^<`3|?5#MhKjpC@ zfj%yJkjuImt7defNsXz3#HaHR(f=*Q85DcL6PuKtbIKM5xa*{`N@kZ^I;iQN8nF{4dmkJ*#vsv^gPvj{9oss& z{^*p%>{>8=KN7l$n8RO4qg;ZMuVwp7sS!r;q%8F2|BIYV9@(uS?aJolT)l0luGL(} zfZ*&bxD4p?;pAeRg-U8`ql_J$*lpflSFwoaEp6*<{>|#n{o+3J{rzI>p<_T$boC?0*7d*03r;HMWJBWTzf5`~5B~+SO4J{BJ^7?(Y+i6Yf z8_Vyf7Idax*v|3;&U4I;Ce%N6-@rmt7=`f>I~hRnMEAdVO3{v;19c9$E*cw)DTTYg zuWF~lOLc0XbgJFxx*hZ0ukq^b1&gG@(p=K%7E7AvPc$;)N5n-(bgT-I)yZbCGXFfD z0O@`24fX%r3GmxP>iM~WzAwXxMJmB+*8Xe^z@e2FBu$K3b) zu(HN|M^tiqfbxgI;{Hf_UU5>+(br(mH_{?oQJ|)}IyWmzDR%5a*4y{eG9#uAR{^Am zcN+`=r5B~&AP;NWiv{=R{>A<5j{g)y^*UNrzuGGR_1{;KuVo6tSd^LPL|84KKLqCP zXYGQ7ZjN_^YyDhsRj9DWA;2plpa=3x%sV1Hx1svtM8^>3wPhQ0ek zlZG>9E6BK;RBnf^M0$%|&l|aIc7iiYsE*&O9CyD~;qx~0oisuUR{^9v!XTy&N?kWJ$`_Tr!f=8~oLm+iE zz|K7dMSUQyH?Nwx#kYJHa3to z10FeR@mLq==y0tdHmjDuFwsV~PY9Kcs0Y>;oWxyf$77RW!kPZ2<^`#Gv?^8}Rmkp2 z_&c5SH#++^XFR|?Y;a+CI&JxI~AkCjU~NbjK)85!S@lkIhUa{ zQAcRT*YM-Qa*|Mzsi?HIz8B6Wf(8O!PEJpka;h0VUAC?y=nAQ_I2V%-Jl&tyFBh2# zmX;T+s6?j1?YO=l2Xyoj^Klx*1IP3_>J92V*)n(BpIx15?{6=b>T@|fyYqpjY*Bwo z@Cs3;TF21NW}?d_2P>ytWa{RvE{;*M;lIZ(aXW0aNUo^r@s0qz5O&9~T~T${&z%DK zUB9!+^!>nJV7pAA?8=_pbl*~Fa~=p)JwcN1hSUo?YJmk^5a9nV2+99wv5c6yyoY77 zP=*V-i+MpQl~Ys$x7)SYRrY>=35Ty*2rG(~-Wb%mGE8%3SL(C?3JW~Bs=1rG;^)*I z_<~&!f>~Kwk6(ExHf$Yvw5(kwu6wLjIJ_L~4$prg{)o0)xG((g+SetHD7?FCU@NT| zApDi>b^AAcutF!d+snRdRRC8I%?C)ATqy7R=EctG^?6B~&&|ongBcBo&(QV7gbIA$ z-RrjvN)muQ&T{_ducku;p&1qzy+Bw58=zN;&0g~Zy3nYG_oBzVgt8=x z)3M=zeE&(xS9rhpMuRUi!1s_)#AK|j>Z~nUt8k*>kERC}07$_9E!NNx$A}Sk{9H)N zxCFHRW6;1mG+83|wN*-b)#z7YS?cN!j1ns6Y+Y;Wi-aK6w~>& zljk8XO&fW=!JIC946G*&JlEcYp^!d31`xoUozvYJMEPHrDx#5GQU>-1jyj1w?C&|e z5M~!qntuKvhtMztKXiLp=`#Q+p`H%Rl1|n~#loI+a3)uU;B57x-pB)Nfb7J)WG&-6 zZUZ$!G7`M1JY`9Hi!JhtOB&sgAK1^k0m}ina&}^WM@M}jxrH=U7H$427b76uW0>XB zo>FwUAYaD4(SK=MM)+&o#|tc5XZbnRSuYjp&LCNKp)^9$J(4pZf<4b>e9f)Hf>Y4RVJ3e1N&M>Gm!4cduNB+ zi2t3avm_ExfBZ9J^sOo@lis-)R!{%NRr6I)P5%GZ4KF|3{afB+(MVW4`-#(|cZnzg zFCoarfEY^MG9HgaYuo*eCKX)p*{IuX^J?0pVXuNzS}}@7m|T+%kBwniFDjaK2Rw?A zXgC02fwqruK!URBM=_KYT(Mop&YR0I-?J{iuy{FoDpN5Ur8bQkW}y@jTJG|?hkDR; z(FFZ>_?~-0Q)vNpVyGcF|JXcsety3)VJ*V?s7-5~%IEImV)dL70qo(^>h>_vt1Tan z7qpx_lQVrl?d9rghbwkpRR*BnSv&qH_c(>tRCG6U*DlSNqv(&j4cZOuws_DQg%M}A zK(sz)OiV1-1)fx%7-BHj1QFD@7FAU}4d~j(L4a;r``);tOAaxMW!P0ZZ5SUlEpv7u zTD9atya&Q^Ws?8>PJFq!4IdC_lMu8&Z&Em#HsEel^DwU)UI6RRjk{sYv-EL}gg!~W zLZ#+3?u=n*xq~Igj`~N+!+95^UXu9>_BhpF}T$qs>V(2(V=O>3eev z*n*z;8SzC5psihKiK3m%+iAV@4&BO=k66-PQJHzZ#0Gm!N<-z7palw#f943P{~beS zhmN>V@5L?Af^6q9zlMK_Js%@DC{;Ix)DKLcLYA*&1*iDt-Wq`#i#Hu;pCO#D7VRD$ z94nG?ne93C^I=oVk`Dr`k37zNb@GI_W=drG_lDS8M}h9&1T0sM@oV*iDnNB2gS82V z!@=)(644mkPdq|_W^38()2F?{=2rx64;0#Tn=N<@zZ1W^q7ZnvCgR~Q#9u-PVa=XT z#4fl7cICzvw@Ang5s1XRZI7nS29Y5!4ToDfD+U?Dk^-2&5wbW-52OJQ1+p;XP{2$Kqn*=Y%B^4wNR<}+%*gnj;h!gim;vDh z_~XT+v_kpf)GdH;HG3;tm#(ObJYr;iAoAhP@lMn7>r^-M*+5$UdVz1}K+Cr~Hmj9Z zr+W&QW}S|GTsGB<;m>B}AvRHawo1e(<~T4idIv$gGSMd}B-5d|R(02C=;vG;Fq0|JZRMUilH23Xt^#G*)| z#X6(3rz<%g2kdxqr}-f8P4d~Yh2l`fG+4o~3Ag-$x?5>B+=eZSAxCL`VN%Em7Zt5yt{jqBFiwp7L3%lc8@LI)xv z$8#}yeC{5uPxUJoCFYQvkXAEe^c-#`T33KTJhG9g1Q8H3jy zC>!`aWgsk3eE|@O;Hm*n)&)}ohYxo7_(eh&WKP#T`%>B%0@Ly&gS1n;mkaLGSdsF7 zOP3#4csQ*nbAs$%FqZL19$th|!4xtQK=xZrD2)$F;1da&Pz+KnD%C#%-rmc>qDr|9 zCBU)@s}Os=paQelFQ2Beo<^IDC=I?`sjn?-dqPs#=+25M2h`^#3E8#SPa%*2un84*p@dgTVfqGszZ1G% zcdYY*^Z@DMr_+liNhwDe|BEvJ%h#Bd@_i+D7{ZRsO}_s1(gAZwa52TRzSD^AKt?729CyEr=21es)I7J>LkR#>*cP@4Mq3aWOd2+2R(O@zxa1dePsp_=`)JWNJC- ze+rKYS*l}imKR}o;VP1B2mc9%0 zV+_5K_*{J8KYTuqr5?7b`{%;4lr`sw%SC*?jZ$`8lNXRzC@qa`wZ zTLaK@E&lHSC2c|CaSw)Fnb)ua;!0!bIciNxV!h$`r?x`xFmEUxenn7mV|6nnWXc7X z&9B#MM-8fQ;t_eu2@w*{-(r5IV|flYa@#knmmV;q=0Lg-(@O)O*Ge8u#C$9b zkQ2Z|1Dut>!*}NOvN~*|xhLQ$3)WWyE^b-o>K3^mVW5&Y{q$ z<4jQ&gp+?QY+8dVT*n$IJ%l1jQ#UAGpkv$Vb#E|3080cieTg)HXmco2sWgY4A|+gx zAOlkkG-t#%;Jy@3hu@{HBHWD%RNn=+3g@tDs>>SVn69TOgQ}2A)6^U(h`M7D-`Rdv zN_oagBUq?mtoz0>U0if|4?*}C6slYfR>5`{x%2B+z-*EnZb^}i*!gcDK18fznKwZ8pi~o=HCQ?3@SAs>ewYZ$Pnl_xf3O z(M{csdrG0+3@m`?QXyqy-Fw-JMfv-&keRBap{lI>P|%!w=nr)?lV6sYKh*5N+ngP~ z56R^J6)&PGX{X$eGXbeuZl3IM6Om$Z{79ABV|RHe0iubV4qFx-c{p3|_oq5Iyv@_J zqGut$`w+N)3y3&&e`+7!NT{PO9H1^R+^i+}%8b@A>Xd}~r^gr9ewQvTOVadNRh9?! z<4iM+#3bs@;>c0#h~D~MAEuZM`WzHg{~Agv|NSCtrDt~uF$_TqnCILY$PkG!rYM=*Bl>mRDkqK=9!T0n9l4NVjF8m z2gCU-v;Vw8&F<-w9a4&{gVf*Gm&aEaGh{l4r+oP=43-a~DPcl?1C_2NeMH>B$t~$3 ziO~myKU!M)UVsYazciOOiw)(9XR{e>$Lni-b#?Liwm805Q&rPr_A^#Swj*@YcAJZx zn}$fp@y>pK37Xx`Ze|k60ipZ&r`O+|#qlLQhLgt_UZ0oxgG5TXJU;*60*xxx%*-oS z7lz=ocG7+JhoBM6$bv9ZFn}gDq=uyf5srbRc@ZNtzrz$Q99IUecqK|OeuqHJ(3NZ2Gu@p>hR)g%Rp z7An69d;|s?T~7_lukfrScENeh4Yf(W?#99057B-rr%qd)-j5!h9V(Te@u?)euzwp7 zEpTI_mA1H`GVdAb&AZ;C(1Tc_g8=j&Q>IJBiRQ|(fj(ZYu7OT&B1DiZjteo2wG6c8uB)Xp*mU)w+F!8cn0`de;|BMfdBMDq_^Jk7*?9 zqy+Om5)lhkCwywQJLo-$``>k>`rkSDWfNYMzMn7Htgimw<9$;pv~EKAKsYb3cpA_> zaz$gi4hVz7v#2)}cWwK5@l)GzS%pa?3Vhw)`-5PZd!j|ad+|B14;6)WO>yFl50{Qi zU*WqzGk+OLaidD&Xy#cPUmo#LF{ucrz_jb@wD({#CMoW>P}gjb)1?DZ;LiJAClMca z*WVw4C1BwmU82kPOI|1`jad*db`n#=gJ408Xa-dpkUQiW8p*rMIQM6j;|&ply;%-e zG7qBv`H<|BmZ?w&l{GzZ(_bJ>B$Amlq?h+bE&V`O=paw0=ZlmzH!S?@?{LCaq%@9V zK#0y}P|R8Zuk^-Fsnc8S%{ubLCuX(HK-#n+rWx^t;;VF~u7ZHPY^SrspCle<5(URn zocJn986lhrJ3xpgV6lC*(E=0LNB?!&9(Q67nqMy_rf~Lmvo$5z@y0=u3J7hO9?Xgn zA7E?sqc2`33XVL-4aU$5iGEm>Wn&1;mC+9akq2z6sA%RLD|E9t zDKA{4UVfflnk#$4#=5F)?e zmd3qx|Egi3KvfkK=YK^~Yg|7_Y#HXpi_QCUn*A6}r4U(LSGzejW@P@ zvI%89tY|?XaQcUZhRz>wIm^kubtAJHD^2^ey|?qfMcGwMv9I{YC%+mk7s})Z;1WpV z1=`Qnm6a&bU4s(JqQQ>R;e)m5G$q?1A=i(8S#jWn9Zm{ZScuqm?7C=-A~Jx6m-Cm> zt{&E(k?~yHic6z@yxzzTrVFMUq3_1H*mWAaH+*z9JzeLPf zu?{e>kk-~U_J@4Y(5559y^8AU15RIhG` zHg4rnRw{FByKcGA$k1f{j3d^ctR;OBGeDflzWtV}&8-6&`Lrs!%g?%IJy$C|tzi4t zIiip}3#~1!I3yQe_0M9OiT3V39`&xcUbQEF=zVvljE8|#oEg2*`Yq#NXJ{hS(4*qv zs(EE;vet0)@u*MXqDDlCDs9W1#}9fVFmW*r1vz!lQdFOhoRXOf;Ib)UbsmFGKjLuYQ+w)#O`c(d$@*$yJ!X2&mqKlAM^lu90seZ*kZf%coy* z+Hkfl2Q#-m(9B8W#VzuE%Z`ZM#my_DYQumbOIlmLwh{R=&z;oevBJD1bO~=LhW#1S z-DGTN`&9IeV9Ok;a>v?|Xo;he?{%&Y>XehXp$ixMsrvM^(+XD0Zxm- zLDJxWk^UdpY{3B=wh=L+Z*2%Y=PkYXV9jWtSXqz($y>Pr-328VV@qt7807Zcq#%4D zl;2%hMPVRz(fz$w^t+*KehIC0|K>ViC$a7-e-qPrdxiHOuG$m+-7tEt#Q-}9W5Es>=1b%nuoxSAJ4rNsbw{Sud^s?tcPTRMmn)6?7D5>T^#v;aGh<@jcH z&bweC2KRNASXJkGw~xUn$xkzl4-n0Zy5~z`7jD{B*TCK3oQ^>l72i3WTFFLm6awJ# zkwPwCc>j!x<|#hf0sGg_QhZ6oLgdUZQ!|RLFyWy+q~5$=F9RhN(@(7(g=F_Bai-QT zHf`B+6142tb2#`G{El`1z{CtUwlF_GD^9)dzrbo*+H_gbUHF0HMfC4pl(7ZZKqeE# z#26%Tw5>u|2Z*{q;$DbIb%|?B_*lO9<||T#6X(fc|AgAFJ(@J@tyjG!+_|L3yHq_L zbdsYAm59C+<#Ni6q8gtghZ%`L10~8DX#F&mG5(s2yKNpvrbBHQ#Uu^-DL26?6U^Wh zr0y>1&h3*V=D_QH?xrp5+0q*Z{yhvZB8NTxrG^?xpO)V|Gar0QFXtnBHIU;c((C1! z5#)!P1(_C`-^18f=gMm>CcY~dbmvGej z35o&!z4q%4Lz)o(Z`9+)J{vMU-Hk&{U3wW3QK)#M&aDO;q}-p&eKGp)Il1!49}lTH zKaT4jquD~a;$ER?4Sl(7yT2!aLuLH$EXv9BGXkeFVnB38&Bwg*iuUjD7#(NCkMO*J zckttXnmaV%Y@z>hiSeM=`M5F`w^=CKkcv$1hZwuYS~ z`0M7+z1-o9ZEzv(AkGLQ`C!MglPN=GOcITXR#i<;Wh^{G`ODV!!gOBqN;U|+ZE;rl z7Zhr5;X&0HkU`7Z2X=YC4Q(GMz7P<+ z!!+<&zSzijchvu2g;1mx7{Pn?mJIiVSyhUlcoQd|;kN_gE_$;~lz}xbo@-JmL9ECk zN1>>wAE?0n9yIPOdazUdJ~80dw8vQG3bMutE0`K-Wpg@!!x!wHJ zD_?!WfO(|dkM{!1({pErDX?;%g%fVKe73~?OXzSz-xT8cn1)^x z9_Tbz^~0P9`z}^2=$CFEINbkdv?ikvD2Q&la-f8S3EuV~Xdut#eI&ZwLF2eGlI_qa zm58W3sAUMXm9`{qYye&LxEZ=WWGvH9pe~rhEyiw7ur`==;yS0(^skCkSawlZ4djoC zmk)o3A9k=FhJ)^7B+${Dh#!Cf4qvT%VTpYcsYH~J&I|rbD=hno6tvX;raQz;l@v>` zsU(d8Asl8?@Q_}S6b~T(?SGQ~d%Hu;clZ8q%n2aqa7d*dqrkB5t_9LXn~H|6UcoE% zn>kwEwSQCsJ$0#D6O+)Ib#3STobK9_O2UQ-ZL(n+3W^PiKmIYqweDm4h1+?BN@w{X z(>Tv+^c}7_{8@K0Lb)lm6!8GvV%(c=pd$#qrl$_S{O8hc z*JGsw{Zz0fO*TOkhxK)DoLdQz(Jm~Q_PIT?mR7EwSAYw#?`B?aT5QmqwU4Yo3)Wep zM6n)yCf7!3;riJpb4S=a+IW)YGal)T@}N@V-cRpp|6fOEBC9if*xk_rGWbJVtp17M zk{dGM-~9?c1mMP}8%I%T6S1BwMp+o4s3`gs?Yl9<-e3ZbZ$P46q)MJvx%j+rJI}uL z9C`2(`4Z`E>`~3>@`QErM8+th3?li~69rT=FTtgCAFU|=@UGK&@^Hm8%y4pAL1I3q zRg!eUs&%t|Vt`}og2xH>lyOC+Au!jE1W{yS^;;5FCZ9`o+D>llCuB0p^{qlxn8&l9 zq*+n-^z$!R<5zlTxoSo_lvI2*Z5R4PIg`gWW})j6chnGS>U72PUgn)sw@u%xvvN+W z)W@Vz$qWh(^fou-^cRym9UR*98%0O!AXa_GJ3G1tBj-AEbBW0sAiky-QGq77Sfyx& z%!9E1a)oGRO0~ZI{PT-@*LwynYyww;JzWB(El|qonGkeo4GRm)wdX+yfea@yX8Skt zyB^X=3Cu%6)|l9(i9fTRvPZGANPR-p^IP`AS-j)pw*~U9IKs#S${8F>m>A39KWM*+ z$c)p)zJJw^fS2v;(*6~IL9zDZ6(W^*MDAh4#~Pds&wp3atTb2+_)M;@ac-$r4vR?T zQs|Xd=#^c_8~xU5fy2a(U+!>@{2`t71h~0@7m#_n76U-X0ThWzcEZi0*1#oN8LwRxm@_!->dk>0g4Vq`grj2Ry#x#&bR+p=0l?w?Z z%-h&TLb$ETafZ?6+R5E+=ZsE>r5c1a`xGvf9yy%zd2M#L_u!Z~Ak!(?3J?6QOsE%& zz~+I+Xk7x10ARiqrqYzUkuf5t#x^5?2{@w8_Kmaq^CTE6=wvg%3&#g<;;Cay+iO)B$;0evz|47 z^skrxs$-uqmn+@LG%e6-xVXY!(Q;u~LE@D;nDq$6UV1Bpf3q40$ub8p&`~uE` z^8cL)r$A!#5Lf|a0AB;k8R+Aq8)UXGA?Vs(9!_4GmaIg9lN}h?b{f!kVwKF88iavI zl&m$8BMQ|+w>=wn!VPM`n&URBMERS6iJNfoOM(dktR!Dsn$iCN$vfwWE=*mC9{cR+ zH|!%M4H@Q)jJHzHXo~ig#f}J}MIBaSoj0jIF6!<=KgUDKId)-K>*CH@LsM-CSd%p8 zu}p%P*GN6Sud6`~+B$&cBTf53sh6nbVH79%13LDh!A}pmwAQ2b#12v3hC1r)c%>z9 zID~Vv&3nl%zyXj^rc?Zubl!9kOVs1lZSXTr@;3tKQCXYxXqY5BFAhkM2~5tWk>u&v zem#YRY}@4sT0lczYdQ!CO>pt{m)+NN@YFOUJ7$B2KQqiCInm%iDTmuTUWiZPQ{TJ& zV4ucsJ?)-{!`5@lEJw3L7?*y7s1+ILTrHE`2S@k+gqFvp2N%;GsU z*jTWlQ4lkAg0m#3?MtSUTvgd$aj8GH#0Hats`lwhJKH(uqpXu5Pd|y~hgOvFdG?u4 zx3kWQxser{J||-GvoELXO8)pOpaY%h#=S{PLY~-+U1WCDPwCOtF8zBDO^40$m4Opg zUtc#n?HXXB1jLXQr6eaG62tn0T-%qz(HYqP$>adMLB4K9!;(Nq0;DqO=9C3S>;uWb zQm^CdM+N&gzhq{f$w3wF^Bmrv0e4k3mSGD&0a$*hfe-75r!$!8QmUdJJy2=R3Blp~ zqkYSY;63YiY^`CS$=f@a7Hh(98K}TklVF~UHddjvF3AbM>_X%H8o2NKToMV(Z3eM&E|DF`J|51G3O540^VsefA(c6ol>{UXox_dEC^haNP*=Ts!4mw zrG4r0*E#<40I$p=oKC!Pq4$~=>q77eMyPzTu8%z*++B!{?)nrrOa0l=te8LjHOmnr zQ42WZvdPqEt)^(o9!b$IXAjkh{ z#kBuJcKc5sOe#;n6P(# z>QBSR#|Dg)IsuzI>qngmdF;_0_+-*jUunp`0tA0MiBbCMvQd1GAWjNcN-5bz;`ixL zMHiD!ZX9Q0!%hnd`hF9wFeRPMrZB@PKPr_2nY_(0_!PX+H^q-5hF-G+_d9ssvRYc# zy%!obu_T$&Fc|T36RtGPxw4~+$si@_eP&h7im6YopX{ec=s5h2*N=&|^^-~4O9~s2 zJf2sBS*m&*Y}8iw+bTQmEY$KpyeVa$HNx)>JgT9(n5M*SKOh8sW?x;|V*cC0(f#+O z`kyVF`>CogJpKTjzJfSOD4RGulB&+!>@hp@UFi?achS6jjv({JMCh*vammmDB~qe$ z0Z2w%?L@(@8L+Zp_A1tyCu;KNr0S4U~sv6FJLK!J9#!RuWH**(^b02=DIk;%dq!Vy%3ebsYEe)5Pp<EHiMODTGeFe0O7=P%DH)K;|A+}`)kU+Gn zZQZ%QS#{2u_o!6c-2N2;D5);8qKL^g{dDo{B+}>48S|&B1$s}aji0ZEhDxN#f~|_? zJA%W4YMd9XzjRmrsY6qfKY{7LdEyge;XF!7!BH2O)?Jn>zEf_!ZP6%HDO)1=Se&fy81uI7LFWRxF0Bl z`C0LgTF_0`K*|x zIr$2{#HJB3?&l*tGHvVH!6?{EpfRoE$0*Q7g#;$_9Ys?T(bzT&5xNb?GQM->=O2$i z{>{c+5?2JHff!2%OD0THpz?aRF5O&pqO_9WqwwdU5j_p3+2G*D`?lfwW8*H!82ko- zlK=O@oBn^Kh@WRM0}Zqxn74<6-;t7Xxv)AYDc#XwJ_IqWg|3MI3Mq(F37dB!B0SBK z-x+`=$zPmYvl%jg#!*Yj?BTJ~h8{dGrbm+#UfWp*Yrc@?cwF;8V|AwQv+AK`%?Y+2 zUII6DwA-_%@r&~IH2w&SW0)+QJ;y9_Y~ct%Tx)MLBKru`F)*@@5DAkf{%P}9;4&^a z%k@*X#S@(Q>Ot9!ld^%+V{s|yS8a=UQmySU3}X3+1L8-ii>LGB+pa1_3z zIKj_k0VQ6zge%)pHa9m}Ev7>qaLO0&H)zp0dp)0e(30(+US1MkZnzHfUH1hC!>%`J zd+D=t2#70l!@op12IEr|K2~W|b8yR3WK61+vrT!_x2jXyQ28C&o@qNRBkc7m%M)zy zjMpg_O+mN;jUaI0jQ3|;vYTK6Dd}2>AeZlmn20`cft>HwEb|mw8l2MrvR{JFQ>%EQ zvMfOa(jM~PGn}e&4}*ki^q)wbzq#Fslb4KS z??j4XDAt;<%Ov`tC!aj?HSUs|N&^iM@+Sdf=)DuiCfK0Jn^Xu>V(L^oyofK`G8pur z^w$cew0%xOimLBB#i$=i1@zzUejNyKr*uU{iFo~CFB*}mhIMfyUox7?n`e$RP9jfTNLnw!2e1S9KTgEvLjaShC!YFb@kfsv9(t#G99NsrBT|7>iKcV!jVym0KNIYt7 zOs@Apm}E}dln<|g{FcapbQVeXBO7GFeNiB0NCU!^U>y3^Zy_fCBO!)DlVvl^|uf);oHKX}R*6@~nGcNS2?pHpn1R%FmIrIA= z;mW{(Vf*)x;)wxoo^63AemJG(Re51S?yScpiZBA7NR+apLwMdHRH5=oTQeV)m(?Pzm?xM3nA;X3U-OKDwS}qxEt$s- z&1StQV8uo-_y_7B5O{6@EXb} zEi0cP_Z#+8h~Oc9W~fl=uMlc;SYug4TrmvgL?>t$dBCkykU>x`#htEzn|O{|xd|}j z#N$pYN-?%>&np`}6++1q+u6~SWxUR{lp6pAs+Eb&=&?jns>5P9)zj#xHyEU-Pt?P0 z$u`#nVCsre%YlN+c`yB-QCED;b;ZI>=1b`cMY)FH(E1hg(=$w$9{)fbKSh~NR;&8a zxAXBJ(#42BxriB+5C%k_Z#3HA$3WsAxD9gjaaTSu(5-1hYA3909d^R`Lb@kX+UGz& z)q(-^ZycvKX}k76-lTU5Sg5%TNq>R^)+BF-NH7@sBCeP#pW%M@fKrr8`!Ew>R1FeV z^w!(gYniHK044IYdB4y|_E)pIH`8L23hBaZdP)4Co(sa>Ro^TE845L4Hdwrq_ekF2 zvRI^ZzTym+nvF6YFt%q*+g=cc*T?1rp&K#3A;j=`apEM5I;T`MG<;dtMCc`|4l%qn z<`svM8kHEJzi;D$`ptlx$EgFr&pY#)sPjXqL98y5Zrh|k+Nh%)c0g>ApQ3O7t_@EK%vtFgD@8l6qH9c^N zcln6d(PvE5Rq^HgX@XU|QVkgLD_^iKQpo3u(+5}N`Rsm}A%~yHBP+A!6L_0&*%|bn z4R^b4-r%f1ZCl_sr*%dk*WG2sy2ZMth>wP5D-NT`lzkGj=HVOEY+s;-iYO&!_K;)U$Yknk3TA|09pn7rq!?|a5kCG{s;ZZ4xY85i$C znHu6y#~X#Sr8A?j%e@(b=!&3(XdY`!c)p(F?}TKetYG zU9c-5R%6z{Xnt*J<-MO`P9L-io`Nyv9O>4I4B0&cN3Cx?vmy`r=kg!}Vz?*~BOZ2+ zspN)&^ttLhDL$L{L+*$Esk_WQv44B0S6W*qbGrZIPLA*T_2o$KKL*( zG0~`T2Of=~B=~yoZ5@x#V$zyqEoUqE_!%`FRVQOAxgC&fUty4XeYSHtan&EIfyh(a z1Vq)<0+QcxLktJlrlu=IAz_GarBx!>^;e2y=29MdK5}g0e5Zc3Nc2TUBbTZM776o*dX-2#SDtj?+s5iI~YMs zd86!_!q`T!Z!)xhi230H{AkC^)XIVTs{WDV2S1oeD>*Rh6!A7;&`B1~T#tDvj{E$K z16TD+RS;n{FPxc@xjnV#`G=wzq?M(p8eKMP!^_GNMi(BS$6dXKAR;_E-?l6}kKc|r zqAD4SO}80stL=yb!Vo9w8Shz;p&<_<^)50aDG-xC$0#W5Xy>zMOmdD3VXm5x)X;kV zWJ475Ho+v#O*1*Ti9dRZB$JvmXT?((s-sOw!gSExeppRU0g{NK!^CvP1U>EJdOT%f z4j&jXjD41yw``PA^>=4(>Gm=|;S1$7MCXh|SEk*e#zTf)b+ryM=+v`g#cTIC^U$LY z6~Q~d_cp7bYviM$c;U4bU=(XTBn>)tzuv57En}JD+>cen8oc9OauMRKT4|arMqRR7 z&7=I~oek+7xht0a7m64+mDy?P_1y@lkvM6HOLDX(v zeD)0r+UcaItJxV`RYUgvOR(I3!?;b|T*mrBrC*F`gOG8Mq)XAiW~5#8XVTG-=}@@|C(;M?lDEv< zeG*?KI*PMMfBU)Zka^`E8Bb>~jX{zbKKdgc{c8`~P`EHB*a|(WN}`6%9@uozMo%60 zn8>u=#K2JHtSe1ImYI)!jQew9`|PFt)q;bQ`SjOjh|lH&@5kZ2At&#$Hg$naNot{T zVLoNog+lQ>D0Q_ z^g@C8Dm$|3B4=NwQ!piPE;S^3x}UMGLLL~Ba~C`{LZ2eDSX+x`Lh5_J;5)P$|9SeE+zZhpK*J`ZNvfkT%ayS_5;f~K&?e<~ z{J6um4-!RSA39Wjw)@!e@Y}@9@{`a6q$}P7r2S7h)ERQ)wO*2n@^!{NWrOrK*R+{6 zxzddIrorYW2RLA5)U0q=TN$MJ1K2FcE*kYrA=#{sl3$+1w5H2{i?A@cRuMe3FZa

tb8Q_kZ~^i5I!MqT{IzXd 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

Q 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

vi3Aw43eg?IV@5MYa}oY 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

twPoebX;wd_0&f)> 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μ7%wR5=DVo&#yY} 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 BLd*aF literal 0 HcmV?d00001 diff --git a/bsp/renesas/rzn2l_etherkit/project.ewd b/bsp/renesas/rzn2l_etherkit/project.ewd new file mode 100644 index 00000000000..85627bb5dd4 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/project.ewd @@ -0,0 +1,3276 @@ + + + 4 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 33 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + E2_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + GPLINK_ID + 2 + + 0 + 1 + 1 + + + + + + + IJET_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\Azure\AzureArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9a.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 33 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + E2_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + GPLINK_ID + 2 + + 0 + 1 + 0 + + + + + + + IJET_ID + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 0 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\Azure\AzureArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9a.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/renesas/rzn2l_etherkit/project.ewp b/bsp/renesas/rzn2l_etherkit/project.ewp new file mode 100644 index 00000000000..6e4621de427 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/project.ewp @@ -0,0 +1,2901 @@ + + 4 + + Debug + + ARM + + 1 + + General + 3 + + 36 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 38 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 12 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 1 + inputOutputBased + + + + ILINK + 0 + + 27 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BUILDACTION + 2 + + + + + Release + + ARM + + 0 + + General + 3 + + 36 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 38 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 12 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + ILINK + 0 + + 27 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BUILDACTION + 2 + + + + cmd /c ""$RASC_EXE_PATH$" -nosplash --launcher.suppressErrors --generate --compiler IAR --devicefamily rzn "$PROJ_DIR$\configuration.xml" 2> "%TEMP%\rasc_stderr.out"" + $PROJ_DIR$ + preCompile + + + $BUILD_FILES_DIR$/.prebuild + + + + + cmd /c ""$RASC_EXE_PATH$" -nosplash --launcher.suppressErrors --gensmartbundle --compiler IAR --devicefamily rzn "$PROJ_DIR$\configuration.xml" "$TARGET_PATH$" 2> "%TEMP%\rasc_stderr.out"" && echo > "$BUILD_FILES_DIR$/.postbuild" + $PROJ_DIR$ + postLink + + + $BUILD_FILES_DIR$/.postbuild + + + + + + + + + Flex Software + + Build Configuration + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\board_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_mcu_device_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_mcu_device_memory_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_mcu_device_pn_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_mcu_family_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_memory_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_pin_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\r_cmt_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\r_ether_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\r_ether_phy_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\r_ether_selector_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\r_ether_switch_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\r_ioport_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\r_sci_uart_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\rm_ethercat_ssc_port_cfg.h + + + + Components + + $PROJ_DIR$\rzn\board\rzn2l_rsk\board.h + + + $PROJ_DIR$\rzn\board\rzn2l_rsk\board_ethernet_phy.h + + + $PROJ_DIR$\rzn\board\rzn2l_rsk\board_init.c + + + $PROJ_DIR$\rzn\board\rzn2l_rsk\board_init.h + + + $PROJ_DIR$\rzn\board\rzn2l_rsk\board_leds.c + + + $PROJ_DIR$\rzn\board\rzn2l_rsk\board_leds.h + + + $PROJ_DIR$\rzn\fsp\inc\api\bsp_api.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_cache.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_cache.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\cr\bsp_cache_core.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\cr\bsp_cache_core.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_clocks.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_clocks.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_common.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_common.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_compiler_support.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_delay.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_delay.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\cr\bsp_delay_core.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\cr\bsp_delay_core.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\rzn2l\bsp_elc.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_exceptions.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\rzn2l\bsp_feature.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_io.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_io.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_irq.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_irq.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\cr\bsp_irq_core.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\cr\bsp_irq_core.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\rzn2l\bsp_irq_sense.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\rzn2l\bsp_loader_param.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_mcu_api.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\rzn2l\bsp_mcu_info.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_module_stop.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\rzn2l\bsp_override.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_register_protection.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_register_protection.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_reset.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_reset.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_sbrk.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_tfu.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\CMSIS\Core_R\Include\cmsis_compiler.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\CMSIS\Core_R\Include\cmsis_cp15.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\CMSIS\Core_R\Include\cmsis_gcc.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\CMSIS\Core_R\Include\cmsis_iccarm.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\CMSIS\Core_R\Include\cmsis_version.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\CMSIS\Core_R\Include\core_cr52.h + + + $PROJ_DIR$\rzn\fsp\inc\fsp_common_api.h + + + $PROJ_DIR$\rzn\fsp\inc\fsp_features.h + + + $PROJ_DIR$\rzn\fsp\inc\fsp_version.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\LICENSE.txt + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Include\R9A07G084.h + + + $PROJ_DIR$\rzn\fsp\src\r_cmt\r_cmt.c + + + $PROJ_DIR$\rzn\fsp\inc\instances\r_cmt.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_ether_api.h + + + $PROJ_DIR$\rzn\fsp\src\r_ether_phy\r_ether_phy.c + + + $PROJ_DIR$\rzn\fsp\inc\instances\r_ether_phy.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_ether_phy_api.h + + + $PROJ_DIR$\rzn\fsp\src\r_ether_selector\r_ether_selector.c + + + $PROJ_DIR$\rzn\fsp\inc\instances\r_ether_selector.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_ether_selector_api.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_ether_switch_api.h + + + $PROJ_DIR$\rzn\fsp\src\r_ethsw\r_ethsw.c + + + $PROJ_DIR$\rzn\fsp\inc\instances\r_ethsw.h + + + $PROJ_DIR$\rzn\fsp\src\r_gmac\r_gmac.c + + + $PROJ_DIR$\rzn\fsp\inc\instances\r_gmac.h + + + $PROJ_DIR$\rzn\fsp\src\r_ioport\r_ioport.c + + + $PROJ_DIR$\rzn\fsp\inc\instances\r_ioport.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_ioport_api.h + + + $PROJ_DIR$\rzn\fsp\src\r_sci_uart\r_sci_uart.c + + + $PROJ_DIR$\rzn\fsp\inc\instances\r_sci_uart.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_timer_api.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_transfer_api.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_uart_api.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Include\renesas.h + + + $PROJ_DIR$\rzn\fsp\src\rm_ethercat_ssc_port\renesashw.h + + + $PROJ_DIR$\rzn\fsp\src\rm_ethercat_ssc_port\rm_ethercat_ssc_port.c + + + $PROJ_DIR$\rzn\fsp\inc\instances\rm_ethercat_ssc_port.h + + + $PROJ_DIR$\rzn\fsp\inc\api\rm_ethercat_ssc_port_api.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Source\startup.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Source\cr\startup_core.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Source\system.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Include\system.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Source\cr\system_core.c + + + + Generated Data + + $PROJ_DIR$\rzn_gen\bsp_clock_cfg.h + + + $PROJ_DIR$\rzn_gen\common_data.c + + + $PROJ_DIR$\rzn_gen\common_data.h + + + $PROJ_DIR$\rzn_gen\hal_data.c + + + $PROJ_DIR$\rzn_gen\hal_data.h + + + $PROJ_DIR$\rzn_gen\main.c + + + $PROJ_DIR$\rzn_gen\pin_data.c + + + $PROJ_DIR$\rzn_gen\vector_data.c + + + $PROJ_DIR$\rzn_gen\vector_data.h + + + + Program Entry + + $PROJ_DIR$\src\hal_entry.c + + + + + $PROJ_DIR$\buildinfo.ipcf + IAR.ControlFile + + + + + + Compiler + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cctype.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstdlib.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstring.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\ctime.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cunistd.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cwchar.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscalls.c + + + + CPU + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-r52\backtrace.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-r52\context_iar.S + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-r52\stack.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-r52\cpuport.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-r52\interrupt.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-r52\start_iar.S + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-r52\trap.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-r52\gicv3.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-r52\vector_iar.S + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\components\drivers\core\device.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_comm.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_up.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\condvar.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\workqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\pin\dev_pin.c + + + $PROJ_DIR$\..\..\..\components\drivers\serial\dev_serial_v2.c + + + + Drivers + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_common.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_usart_v2.c + + + + Finsh + + $PROJ_DIR$\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh_parse.c + + + $PROJ_DIR$\..\..\..\components\finsh\shell.c + + + $PROJ_DIR$\..\..\..\components\finsh\cmd.c + + + + Kernel + + $PROJ_DIR$\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\src\cpu_up.c + + + $PROJ_DIR$\..\..\..\src\defunct.c + + + $PROJ_DIR$\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\src\scheduler_comm.c + + + $PROJ_DIR$\..\..\..\src\scheduler_up.c + + + $PROJ_DIR$\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\src\timer.c + + + + klibc + + $PROJ_DIR$\..\..\..\src\klibc\kstdio.c + + + $PROJ_DIR$\..\..\..\src\klibc\rt_vsnprintf_tiny.c + + + $PROJ_DIR$\..\..\..\src\klibc\kstring.c + + + $PROJ_DIR$\..\..\..\src\klibc\kerrno.c + + + $PROJ_DIR$\..\..\..\src\klibc\rt_vsscanf.c + + + + libcpu + + $PROJ_DIR$\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\showmem.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\atomic_arm.c + + + + POSIX + + + smp + + + utestcases + + diff --git a/bsp/renesas/rzn2l_etherkit/project.ewt b/bsp/renesas/rzn2l_etherkit/project.ewt new file mode 100644 index 00000000000..46ef6e63451 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/project.ewt @@ -0,0 +1,3433 @@ + + + 4 + + Debug + + ARM + + 1 + + C-STAT + 518 + + 518 + + 0 + + 1 + 600 + 1 + 3 + 0 + 1 + 100 + Debug/C-STAT + + + 2.6.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RuntimeChecking + 0 + + 2 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + Release + + ARM + + 0 + + C-STAT + 518 + + 518 + + 0 + + 1 + 600 + 1 + 3 + 0 + 1 + 100 + Release/C-STAT + + + 2.6.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RuntimeChecking + 0 + + 2 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + Compiler + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cctype.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstdlib.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cstring.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\ctime.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cunistd.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\common\cwchar.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\..\components\libc\compilers\dlib\syscalls.c + + + + CPU + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-r52\backtrace.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-r52\context_iar.S + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-r52\cpuport.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-r52\gicv3.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-r52\interrupt.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-r52\stack.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-r52\start_iar.S + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-r52\trap.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\cortex-r52\vector_iar.S + + + + DeviceDrivers + + $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_comm.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\completion_up.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\condvar.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\dataqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\pin\dev_pin.c + + + $PROJ_DIR$\..\..\..\components\drivers\serial\dev_serial_v2.c + + + $PROJ_DIR$\..\..\..\components\drivers\core\device.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\pipe.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\ringblk_buf.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\ringbuffer.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\waitqueue.c + + + $PROJ_DIR$\..\..\..\components\drivers\ipc\workqueue.c + + + + Drivers + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_common.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_gpio.c + + + $PROJ_DIR$\..\libraries\HAL_Drivers\drv_usart_v2.c + + + + Finsh + + $PROJ_DIR$\..\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\..\components\finsh\msh_parse.c + + + $PROJ_DIR$\..\..\..\components\finsh\shell.c + + + + Flex Software + + Build Configuration + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\board_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_mcu_device_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_mcu_device_memory_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_mcu_device_pn_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_mcu_family_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_memory_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_pin_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\r_ioport_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\r_sci_uart_cfg.h + + + $PROJ_DIR$\rzn_cfg\SConscript + + + + Components + + $PROJ_DIR$\rzn\board\rzn2l_rsk\board.h + + + $PROJ_DIR$\rzn\board\rzn2l_rsk\board_ethernet_phy.h + + + $PROJ_DIR$\rzn\board\rzn2l_rsk\board_init.c + + + $PROJ_DIR$\rzn\board\rzn2l_rsk\board_init.h + + + $PROJ_DIR$\rzn\board\rzn2l_rsk\board_leds.c + + + $PROJ_DIR$\rzn\board\rzn2l_rsk\board_leds.h + + + $PROJ_DIR$\rzn\fsp\inc\api\bsp_api.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_cache.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_cache.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\cr\bsp_cache_core.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\cr\bsp_cache_core.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_clocks.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_clocks.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_common.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_common.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_compiler_support.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_delay.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_delay.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\cr\bsp_delay_core.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\cr\bsp_delay_core.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\rzn2l\bsp_elc.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_exceptions.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\rzn2l\bsp_feature.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_io.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_io.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_irq.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_irq.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\cr\bsp_irq_core.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\cr\bsp_irq_core.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\rzn2l\bsp_irq_sense.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\rzn2l\bsp_loader_param.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_mcu_api.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\rzn2l\bsp_mcu_info.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_module_stop.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\rzn2l\bsp_override.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_register_protection.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_register_protection.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_reset.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_reset.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_sbrk.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_tfu.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\CMSIS\Core_R\Include\cmsis_compiler.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\CMSIS\Core_R\Include\cmsis_cp15.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\CMSIS\Core_R\Include\cmsis_gcc.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\CMSIS\Core_R\Include\cmsis_iccarm.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\CMSIS\Core_R\Include\cmsis_version.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\CMSIS\Core_R\Include\core_cr52.h + + + $PROJ_DIR$\rzn\fsp\inc\fsp_common_api.h + + + $PROJ_DIR$\rzn\fsp\inc\fsp_features.h + + + $PROJ_DIR$\rzn\fsp\inc\fsp_version.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\LICENSE.txt + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Include\R9A07G084.h + + + $PROJ_DIR$\rzn\fsp\src\r_ioport\r_ioport.c + + + $PROJ_DIR$\rzn\fsp\inc\instances\r_ioport.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_ioport_api.h + + + $PROJ_DIR$\rzn\fsp\src\r_sci_uart\r_sci_uart.c + + + $PROJ_DIR$\rzn\fsp\inc\instances\r_sci_uart.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_transfer_api.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_uart_api.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Include\renesas.h + + + $PROJ_DIR$\rzn\SConscript + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Source\startup.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Source\cr\startup_core.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Source\system.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Include\system.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Source\cr\system_core.c + + + + Generated Data + + $PROJ_DIR$\rzn_gen\bsp_clock_cfg.h + + + $PROJ_DIR$\rzn_gen\common_data.c + + + $PROJ_DIR$\rzn_gen\common_data.h + + + $PROJ_DIR$\rzn_gen\hal_data.c + + + $PROJ_DIR$\rzn_gen\hal_data.h + + + $PROJ_DIR$\rzn_gen\main.c + + + $PROJ_DIR$\rzn_gen\pin_data.c + + + $PROJ_DIR$\rzn_gen\SConscript + + + $PROJ_DIR$\rzn_gen\vector_data.c + + + $PROJ_DIR$\rzn_gen\vector_data.h + + + + Program Entry + + $PROJ_DIR$\src\hal_entry.c + + + + + Kernel + + $PROJ_DIR$\..\..\..\src\clock.c + + + $PROJ_DIR$\..\..\..\src\components.c + + + $PROJ_DIR$\..\..\..\src\cpu_up.c + + + $PROJ_DIR$\..\..\..\src\defunct.c + + + $PROJ_DIR$\..\..\..\src\idle.c + + + $PROJ_DIR$\..\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\..\src\irq.c + + + $PROJ_DIR$\..\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\..\src\mem.c + + + $PROJ_DIR$\..\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\..\src\object.c + + + $PROJ_DIR$\..\..\..\src\scheduler_comm.c + + + $PROJ_DIR$\..\..\..\src\scheduler_up.c + + + $PROJ_DIR$\..\..\..\src\thread.c + + + $PROJ_DIR$\..\..\..\src\timer.c + + + + klibc + + $PROJ_DIR$\..\..\..\src\klibc\kerrno.c + + + $PROJ_DIR$\..\..\..\src\klibc\kstdio.c + + + $PROJ_DIR$\..\..\..\src\klibc\kstring.c + + + $PROJ_DIR$\..\..\..\src\klibc\rt_vsnprintf_tiny.c + + + $PROJ_DIR$\..\..\..\src\klibc\rt_vsscanf.c + + + + libcpu + + $PROJ_DIR$\..\..\..\libcpu\arm\common\atomic_arm.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\..\libcpu\arm\common\showmem.c + + + + POSIX + + + smp + + + utestcases + + + $PROJ_DIR$\buildinfo.ipcf + + diff --git a/bsp/renesas/rzn2l_etherkit/project.eww b/bsp/renesas/rzn2l_etherkit/project.eww new file mode 100644 index 00000000000..c2cb02eb1e8 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/project.eww @@ -0,0 +1,10 @@ + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/renesas/rzn2l_etherkit/rtconfig.h b/bsp/renesas/rzn2l_etherkit/rtconfig.h new file mode 100644 index 00000000000..2cd61acd4fb --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rtconfig.h @@ -0,0 +1,394 @@ +#ifndef RT_CONFIG_H__ +#define RT_CONFIG_H__ + +/* RT-Thread Kernel */ + +/* klibc options */ + +/* rt_vsnprintf options */ + +/* end of rt_vsnprintf options */ + +/* rt_vsscanf options */ + +/* end of rt_vsscanf options */ + +/* rt_memset options */ + +/* end of rt_memset options */ + +/* rt_memcpy options */ + +/* end of rt_memcpy options */ + +/* rt_memmove options */ + +/* end of rt_memmove options */ + +/* rt_memcmp options */ + +/* end of rt_memcmp options */ + +/* rt_strstr options */ + +/* end of rt_strstr options */ + +/* rt_strcasecmp options */ + +/* end of rt_strcasecmp options */ + +/* rt_strncpy options */ + +/* end of rt_strncpy options */ + +/* rt_strcpy options */ + +/* end of rt_strcpy options */ + +/* rt_strncmp options */ + +/* end of rt_strncmp options */ + +/* rt_strcmp options */ + +/* end of rt_strcmp options */ + +/* rt_strlen options */ + +/* end of rt_strlen options */ + +/* rt_strnlen options */ + +/* end of rt_strnlen options */ +/* end of klibc options */ +#define RT_NAME_MAX 16 +#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 1024 + +/* kservice options */ + +/* end of kservice options */ +#define RT_USING_DEBUG +#define RT_DEBUGING_ASSERT +#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 +/* end of Inter-Thread communication */ + +/* Memory Management */ + +#define RT_USING_MEMPOOL +#define RT_USING_SMALL_MEM +#define RT_USING_SMALL_MEM_AS_HEAP +#define RT_USING_HEAP +/* end of Memory Management */ +#define RT_USING_DEVICE +#define RT_USING_CONSOLE +#define RT_CONSOLEBUF_SIZE 512 +#define RT_CONSOLE_DEVICE_NAME "uart0" +#define RT_VER_NUM 0x50200 +#define RT_BACKTRACE_LEVEL_MAX_NR 32 +/* end of RT-Thread Kernel */ +#define RT_USING_HW_ATOMIC +#define ARCH_ARM +#define ARCH_ARM_CORTEX_R +#define ARCH_ARM_CORTEX_R52 + +/* 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 */ + +/* end of DFS: device virtual file system */ + +/* Device Drivers */ + +#define RT_USING_DEVICE_IPC +#define RT_UNAMED_PIPE_NUMBER 64 +#define RT_USING_SYSTEM_WORKQUEUE +#define RT_SYSTEM_WORKQUEUE_STACKSIZE 2048 +#define RT_SYSTEM_WORKQUEUE_PRIORITY 23 +#define RT_USING_SERIAL +#define RT_USING_SERIAL_V2 +#define RT_SERIAL_USING_DMA +#define RT_USING_PIN +/* end of Device Drivers */ + +/* C/C++ and POSIX layer */ + +/* ISO-ANSI C layer */ + +/* Timezone and Daylight Saving Time */ + +/* end of Timezone and Daylight Saving Time */ +/* end of ISO-ANSI C layer */ + +/* POSIX (Portable Operating System Interface) layer */ + + +/* Interprocess Communication (IPC) */ + + +/* Socket is in the 'Network' category */ + +/* end of Interprocess Communication (IPC) */ +/* end of POSIX (Portable Operating System Interface) layer */ +/* end of C/C++ and POSIX layer */ + +/* Network */ + +/* end of Network */ + +/* Memory protection */ + +/* end of Memory protection */ + +/* Utilities */ + +/* end of Utilities */ + +/* Using USB legacy version */ + +/* end of Using USB legacy version */ +/* end of RT-Thread Components */ + +/* RT-Thread Utestcases */ + +/* end of RT-Thread Utestcases */ + +/* RT-Thread online packages */ + +/* IoT - internet of things */ + + +/* Wi-Fi */ + +/* Marvell WiFi */ + +/* end of Marvell WiFi */ + +/* Wiced WiFi */ + +/* end of Wiced WiFi */ + +/* CYW43012 WiFi */ + +/* end of CYW43012 WiFi */ + +/* BL808 WiFi */ + +/* end of BL808 WiFi */ + +/* CYW43439 WiFi */ + +/* end of CYW43439 WiFi */ +/* end of Wi-Fi */ + +/* IoT Cloud */ + +/* end of IoT Cloud */ +/* end of IoT - internet of things */ + +/* security packages */ + +/* end of security packages */ + +/* language packages */ + +/* JSON: JavaScript Object Notation, a lightweight data-interchange format */ + +/* end of JSON: JavaScript Object Notation, a lightweight data-interchange format */ + +/* XML: Extensible Markup Language */ + +/* end of XML: Extensible Markup Language */ +/* end of language packages */ + +/* multimedia packages */ + +/* LVGL: powerful and easy-to-use embedded GUI library */ + +/* end of LVGL: powerful and easy-to-use embedded GUI library */ + +/* u8g2: a monochrome graphic library */ + +/* end of u8g2: a monochrome graphic library */ +/* end of multimedia packages */ + +/* tools packages */ + +/* end of tools packages */ + +/* system packages */ + +/* enhanced kernel services */ + +/* end of enhanced kernel services */ + +/* acceleration: Assembly language or algorithmic acceleration packages */ + +/* end of acceleration: Assembly language or algorithmic acceleration packages */ + +/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */ + +/* end of CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */ + +/* Micrium: Micrium software products porting for RT-Thread */ + +/* end of Micrium: Micrium software products porting for RT-Thread */ +/* end of system packages */ + +/* peripheral libraries and drivers */ + +/* HAL & SDK Drivers */ + +/* STM32 HAL & SDK Drivers */ + +/* end of STM32 HAL & SDK Drivers */ + +/* Infineon HAL Packages */ + +/* end of Infineon HAL Packages */ + +/* Kendryte SDK */ + +/* end of Kendryte SDK */ +/* end of HAL & SDK Drivers */ + +/* sensors drivers */ + +/* end of sensors drivers */ + +/* touch drivers */ + +/* end of touch drivers */ +/* end of peripheral libraries and drivers */ + +/* AI packages */ + +/* end of AI packages */ + +/* Signal Processing and Control Algorithm Packages */ + +/* end of Signal Processing and Control Algorithm Packages */ + +/* miscellaneous packages */ + +/* project laboratory */ + +/* end of project laboratory */ + +/* samples: kernel and components samples */ + +/* end of samples: kernel and components samples */ + +/* entertainment: terminal games and other interesting software packages */ + +/* end of entertainment: terminal games and other interesting software packages */ +/* end of miscellaneous packages */ + +/* Arduino libraries */ + + +/* Projects and Demos */ + +/* end of Projects and Demos */ + +/* Sensors */ + +/* end of Sensors */ + +/* Display */ + +/* end of Display */ + +/* Timing */ + +/* end of Timing */ + +/* Data Processing */ + +/* end of Data Processing */ + +/* Data Storage */ + +/* Communication */ + +/* end of Communication */ + +/* Device Control */ + +/* end of Device Control */ + +/* Other */ + +/* end of Other */ + +/* Signal IO */ + +/* end of Signal IO */ + +/* Uncategorized */ + +/* end of Arduino libraries */ +/* end of RT-Thread online packages */ +#define SOC_FAMILY_RENESAS_RZ +#define SOC_SERIES_R9A07G0 + +/* Hardware Drivers Config */ + +#define SOC_R9A07G084 + +/* Onboard Peripheral Drivers */ + +/* end of Onboard Peripheral Drivers */ + +/* On-chip Peripheral Drivers */ + +#define BSP_USING_GPIO +#define BSP_USING_UART +#define BSP_USING_UART0 +#define BSP_UART0_RX_BUFSIZE 256 +#define BSP_UART0_TX_BUFSIZE 0 +/* end of On-chip Peripheral Drivers */ + +/* Board extended module Drivers */ + +/* end of Board extended module Drivers */ +/* end of Hardware Drivers Config */ + +#endif diff --git a/bsp/renesas/rzn2l_etherkit/rtconfig.py b/bsp/renesas/rzn2l_etherkit/rtconfig.py new file mode 100644 index 00000000000..a9ca0c68044 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rtconfig.py @@ -0,0 +1,121 @@ +import os +import sys + +# toolchains options +ARCH='arm' +CPU='cortex-r52' +CROSS_TOOL='gcc' + +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'D:/IAR Systems/Embedded Workbench 9.2' + +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 = ' -mcpu=cortex-r52 -marm -mfloat-abi=hard -mfpu=neon-fp-armv8 -fdiagnostics-parseable-fixits -Og -fmessage-length=0 -fsigned-char -fdata-sections -funwind-tables -ffunction-sections -fno-strict-aliasing -g -gdwarf-4' + CFLAGS = DEVICE + ' -Dgcc' + AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp' + LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,system_init -lgcc -lrdimon -T script/fsp_xspi0_boot_scons.ld -L script/' + CPATH = '' + LPATH = '' + + if BUILD == 'debug': + CFLAGS += ' -Og' + 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 == 'iccarm': + # toolchains + CC = 'iccarm' + CXX = 'iccarm' + AS = 'iasmarm' + AR = 'iarchive' + LINK = 'ilinkarm' + TARGET_EXT = 'out' + + DEVICE = '-Dewarm' + + CFLAGS = DEVICE + CFLAGS += ' --diag_suppress Pa050' + CFLAGS += ' --no_cse' + CFLAGS += ' --no_unroll' + CFLAGS += ' --no_inline' + CFLAGS += ' --no_code_motion' + CFLAGS += ' --no_tbaa' + CFLAGS += ' --no_clustering' + CFLAGS += ' --no_scheduling' + CFLAGS += ' --endian=little' + CFLAGS += ' --cpu=Cortex-R52' + CFLAGS += ' -e' + CFLAGS += ' --arm' + CFLAGS += ' --float-abi=hard' + CFLAGS += ' --fpu=neon-fp-armv8' + CFLAGS += ' --dlib_config "' + EXEC_PATH + '/arm/INC/c/DLib_Config_Normal.h"' + CFLAGS += ' --silent' + + AFLAGS = DEVICE + AFLAGS += ' -s+' + AFLAGS += ' -w+' + AFLAGS += ' -r' + AFLAGS += ' --cpu Cortex-R52' + AFLAGS += ' --arm' + AFLAGS += ' --float-abi hard' + AFLAGS += ' --fpu neon-fp-armv8' + # AFLAGS += ' --unaligned-access' + AFLAGS += ' -S' + + if BUILD == 'debug': + CFLAGS += ' --debug' + CFLAGS += ' -On' + else: + CFLAGS += ' -Oh' + + LFLAGS = ' --config "script/fsp_xspi0_boot.icf"' + LFLAGS += ' --entry Reset_Handler' + + CXXFLAGS = CFLAGS + + EXEC_PATH = EXEC_PATH + '/arm/bin/' + POST_ACTION = 'ielftool --bin $TARGET rtthread.bin' + +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/rzn2l_etherkit/rzn/SConscript b/bsp/renesas/rzn2l_etherkit/rzn/SConscript new file mode 100644 index 00000000000..4ff6ec8599e --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/SConscript @@ -0,0 +1,27 @@ +Import('RTT_ROOT') +Import('rtconfig') +from building import * +from gcc import * + +cwd = GetCurrentDir() +src = [] +group = [] +CPPPATH = [] + +if rtconfig.PLATFORM in ['iccarm']: + Return('group') +elif rtconfig.PLATFORM in GetGCCLikePLATFORM(): + if GetOption('target') != 'mdk5': + src += Glob('./fsp/src/bsp/mcu/all/*.c') + src += Glob('./fsp/src/bsp/mcu/all/cr/*.c') + src += Glob('./fsp/src/bsp/mcu/r*/*.c') + src += Glob('./fsp/src/bsp/cmsis/Device/RENESAS/Source/*.c') + src += Glob('./fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/*.c') + src += Glob('./fsp/src/r_*/*.c') + CPPPATH = [ cwd + '/arm/CMSIS_5/CMSIS/Core_R/Include', + cwd + '/fsp/inc', + cwd + '/fsp/inc/api', + cwd + '/fsp/inc/instances',] + +group = DefineGroup('rzn', src, depend = [''], CPPPATH = CPPPATH) +Return('group') diff --git a/bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_compiler.h b/bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_compiler.h new file mode 100644 index 00000000000..e1e68604b26 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_compiler.h @@ -0,0 +1,290 @@ +/**************************************************************************//** + * @file cmsis_compiler.h + * @brief CMSIS compiler generic header file + * @date 31. August 2021 + ******************************************************************************/ +/* + * Copyright [2020-2021] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This file is based on the "\CMSIS\Core\Include\cmsis_compliler.h" + * + * Changes: + * - No Changes. + */ +/* + * 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/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_cp15.h b/bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_cp15.h new file mode 100644 index 00000000000..174b5b8e561 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_cp15.h @@ -0,0 +1,783 @@ +/**************************************************************************//** + * @file cmsis_cp15.h + * @brief CMSIS compiler specific macros, functions, instructions + * @date 02. February 2024 + ******************************************************************************/ +/* + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This file is based on the "CMSIS\Core_A\Include\cmsis_cp15.h" + * + * Changes: + * Renesas Electronics Corporation on 2021-08-31 + * - Changed to be related to Cortex-R52 by + * Renesas Electronics Corporation on 2024-02-02 + * - Functions are sorted according to the Arm technical reference. + * - Added some functions to convert BSP into C language. + */ +/* + * Copyright (c) 2009-2017 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_CP15_H +#define __CMSIS_CP15_H + +/** \brief Get CTR + \return Cache Type Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CTR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 0, 0, 1); + return result; +} + +/** \brief Get MPIDR + + This function returns the value of the Multiprocessor Affinity Register. + + \return Multiprocessor Affinity Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MPIDR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 0, 0, 5); + return result; +} + +/** \brief Get CCSIDR + \return CCSIDR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CCSIDR(void) +{ + uint32_t result; + __get_CP(15, 1, result, 0, 0, 0); + return result; +} + +/** \brief Get CLIDR + \return CLIDR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CLIDR(void) +{ + uint32_t result; + __get_CP(15, 1, result, 0, 0, 1); + return result; +} + +/** \brief Get CSSELR + \return CSSELR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CSSELR(void) +{ + uint32_t result; + __get_CP(15, 2, result, 0, 0, 0); + return result; +} + +/** \brief Set CSSELR + */ +__STATIC_FORCEINLINE void __set_CSSELR(uint32_t value) +{ + __set_CP(15, 2, value, 0, 0, 0); +} + +/** \brief Get SCTLR + + This function assigns the given value to the System Control Register. + + \return System Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_SCTLR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 1, 0, 0); + return result; +} + +/** \brief Set SCTLR + \param [in] value System Control Register value to set + */ +__STATIC_FORCEINLINE void __set_SCTLR(uint32_t value) +{ + __set_CP(15, 0, value, 1, 0, 0); +} + + +/** \brief Get ACTLR + \return Auxiliary Control register value + */ +__STATIC_FORCEINLINE uint32_t __get_ACTLR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 1, 0, 1); + return(result); +} + +/** \brief Set ACTLR + \param [in] value Auxiliary Control value to set + */ +__STATIC_FORCEINLINE void __set_ACTLR(uint32_t value) +{ + __set_CP(15, 0, value, 1, 0, 1); +} + +/** \brief Get CPACR + \return Coprocessor Access Control register value + */ +__STATIC_FORCEINLINE uint32_t __get_CPACR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 1, 0, 2); + return result; +} + +/** \brief Set CPACR + \param [in] value Coprocessor Access Control value to set + */ +__STATIC_FORCEINLINE void __set_CPACR(uint32_t value) +{ + __set_CP(15, 0, value, 1, 0, 2); +} + +/** \brief Get TTBR0 + + This function returns the value of the Translation Table Base Register 0. + + \return Translation Table Base Register 0 value + */ +__STATIC_FORCEINLINE uint32_t __get_TTBR0(void) +{ + uint32_t result; + __get_CP(15, 0, result, 2, 0, 0); + return result; +} + +/** \brief Set TTBR0 + + This function assigns the given value to the Translation Table Base Register 0. + + \param [in] value Translation Table Base Register 0 value to set + */ +__STATIC_FORCEINLINE void __set_TTBR0(uint32_t value) +{ + __set_CP(15, 0, value, 2, 0, 0); +} + +/** \brief Get DACR + + This function returns the value of the Domain Access Control Register. + + \return Domain Access Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_DACR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 3, 0, 0); + return result; +} + +/** \brief Set DACR + + This function assigns the given value to the Domain Access Control Register. + + \param [in] value Domain Access Control Register value to set + */ +__STATIC_FORCEINLINE void __set_DACR(uint32_t value) +{ + __set_CP(15, 0, value, 3, 0, 0); +} + +/** \brief Get ICC_PMR + */ +__STATIC_FORCEINLINE uint32_t __get_ICC_PMR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 4, 6, 0); + return result; +} + +/** \brief Set ICC_PMR + */ +__STATIC_FORCEINLINE void __set_ICC_PMR(uint32_t value) +{ + __set_CP(15, 0, value, 4, 6, 0); +} + +/** \brief Get DFSR + \return Data Fault Status Register value + */ +__STATIC_FORCEINLINE uint32_t __get_DFSR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 5, 0, 0); + return result; +} + +/** \brief Set DFSR + \param [in] value Data Fault Status value to set + */ +__STATIC_FORCEINLINE void __set_DFSR(uint32_t value) +{ + __set_CP(15, 0, value, 5, 0, 0); +} + +/** \brief Get IFSR + \return Instruction Fault Status Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IFSR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 5, 0, 1); + return result; +} + +/** \brief Set IFSR + \param [in] value Instruction Fault Status value to set + */ +__STATIC_FORCEINLINE void __set_IFSR(uint32_t value) +{ + __set_CP(15, 0, value, 5, 0, 1); +} + +/** \brief Set PRSELR + + This function assigns the given value to the Protection Region Selection Register. + + \param [in] value Protection Region Selection Register to set + */ +__STATIC_FORCEINLINE void __set_PRSELR(uint32_t value) +{ + __set_CP(15, 0, value, 6, 2, 1); +} + +/** \brief Get PRBAR + + This function returns the value of the Protection Region Base Address Register. + + \return Protection Region Base Address Register + */ +__STATIC_FORCEINLINE uint32_t __get_PRBAR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 6, 3, 0); + return result; +} + +/** \brief Set PRBAR + + This function assigns the given value to the Protection Region Base Address Register. + + \param [in] value Protection Region Base Address Register to set + */ +__STATIC_FORCEINLINE void __set_PRBAR(uint32_t value) +{ + __set_CP(15, 0, value, 6, 3, 0); +} + +/** \brief Get PRLAR + + This function returns the value of the Protection Region Limit Address Register. + + \return Protection Region Limit Address Register + */ +__STATIC_FORCEINLINE uint32_t __get_PRLAR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 6, 3, 1); + return result; +} + +/** \brief Set PRLAR + + This function assigns the given value to the Protection Region Limit Address Register. + + \param [in] value Protection Region Limit Address Register to set + */ +__STATIC_FORCEINLINE void __set_PRLAR(uint32_t value) +{ + __set_CP(15, 0, value, 6, 3, 1); +} + +/** \brief Set ICIALLU + + Instruction Cache Invalidate All + */ +__STATIC_FORCEINLINE void __set_ICIALLU(uint32_t value) +{ + __set_CP(15, 0, value, 7, 5, 0); +} + +/** \brief Set ICIVAU + */ +__STATIC_FORCEINLINE void __set_ICIVAU(uint32_t value) +{ + __set_CP(15, 0, value, 7, 5, 1); +} + +/** \brief Set BPIALL. + + Branch Predictor Invalidate All + */ +__STATIC_FORCEINLINE void __set_BPIALL(uint32_t value) +{ + __set_CP(15, 0, value, 7, 5, 6); +} + +/** \brief Set DCIMVAC + + Data cache invalidate + */ +__STATIC_FORCEINLINE void __set_DCIMVAC(uint32_t value) +{ + __set_CP(15, 0, value, 7, 6, 1); +} + +/** \brief Set DCIVAC + */ +__STATIC_FORCEINLINE void __set_DCIVAC(uint32_t value) +{ + __set_CP(15, 0, value, 7, 6, 1); +} + +/** \brief Set DCISW + */ +__STATIC_FORCEINLINE void __set_DCISW(uint32_t value) +{ + __set_CP(15, 0, value, 7, 6, 2); +} + +/** \brief Set DCCMVAC + + Data cache clean + */ +__STATIC_FORCEINLINE void __set_DCCMVAC(uint32_t value) +{ + __set_CP(15, 0, value, 7, 10, 1); +} + +/** \brief Set DCCVAC + */ +__STATIC_FORCEINLINE void __set_DCCVAC(uint32_t value) +{ + __set_CP(15, 0, value, 7, 10, 1); +} + +/** \brief Set DCCSW + */ +__STATIC_FORCEINLINE void __set_DCCSW(uint32_t value) +{ + __set_CP(15, 0, value, 7, 10, 2); +} + +/** \brief Set DCCIMVAC + + Data cache clean and invalidate + */ +__STATIC_FORCEINLINE void __set_DCCIMVAC(uint32_t value) +{ + __set_CP(15, 0, value, 7, 14, 1); +} + +/** \brief Set DCCIVAC + */ +__STATIC_FORCEINLINE void __set_DCCIVAC(uint32_t value) +{ + __set_CP(15, 0, value, 7, 14, 1); +} + +/** \brief Set DCCISW + */ +__STATIC_FORCEINLINE void __set_DCCISW(uint32_t value) +{ + __set_CP(15, 0, value, 7, 14, 2); +} + +/** \brief Set TLBIALL + + TLB Invalidate All + */ +__STATIC_FORCEINLINE void __set_TLBIALL(uint32_t value) +{ + __set_CP(15, 0, value, 8, 7, 0); +} + +/** \brief Set MAIR0 + + This function assigns the given value to the Memory Attribute Indirection Registers 0. + + \param [in] value Memory Attribute Indirection Registers 0 to set + */ +__STATIC_FORCEINLINE void __set_MAIR0(uint32_t value) +{ + __set_CP(15, 0, value, 10, 2, 0); +} + +/** \brief Set MAIR1 + + This function assigns the given value to the Memory Attribute Indirection Registers 1. + + \param [in] value Memory Attribute Indirection Registers 1 to set + */ +__STATIC_FORCEINLINE void __set_MAIR1(uint32_t value) +{ + __set_CP(15, 0, value, 10, 2, 1); +} + +/** \brief Get IMP_SLAVEPCTLR + + This function returns the value of the Slave Port Control Register. + + \return Slave Port Control Register + */ +__STATIC_FORCEINLINE uint32_t __get_IMP_SLAVEPCTLR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 11, 0, 0); + return result; +} + +/** \brief Set IMP_SLAVEPCTLR + + This function assigns the given value to the Slave Port Control Register. + + \param [in] value Slave Port Control Register value to set + */ +__STATIC_FORCEINLINE void __set_IMP_SLAVEPCTLR(uint32_t value) +{ + __set_CP(15, 0, value, 11, 0, 0); +} + +/** \brief Get VBAR + + This function returns the value of the Vector Base Address Register. + + \return Vector Base Address Register + */ +__STATIC_FORCEINLINE uint32_t __get_VBAR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 12, 0, 0); + return result; +} + +/** \brief Set VBAR + + This function assigns the given value to the Vector Base Address Register. + + \param [in] value Vector Base Address Register value to set + */ +__STATIC_FORCEINLINE void __set_VBAR(uint32_t value) +{ + __set_CP(15, 0, value, 12, 0, 0); +} + +/** \brief Get MVBAR + + This function returns the value of the Monitor Vector Base Address Register. + + \return Monitor Vector Base Address Register + */ +__STATIC_FORCEINLINE uint32_t __get_MVBAR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 12, 0, 1); + return result; +} + +/** \brief Set MVBAR + + This function assigns the given value to the Monitor Vector Base Address Register. + + \param [in] value Monitor Vector Base Address Register value to set + */ +__STATIC_FORCEINLINE void __set_MVBAR(uint32_t value) +{ + __set_CP(15, 0, value, 12, 0, 1); +} + +/** \brief Get ISR + \return Interrupt Status Register value + */ +__STATIC_FORCEINLINE uint32_t __get_ISR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 12, 1, 0); + return result; +} + +/** \brief Get ICC_RPR + */ +__STATIC_FORCEINLINE uint32_t __get_ICC_RPR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 12, 11, 3); + return result; +} + +/** \brief Get ICC_IAR1 + */ +__STATIC_FORCEINLINE uint32_t __get_ICC_IAR1(void) +{ + uint32_t result; + __get_CP(15, 0, result, 12, 12, 0); + return result; +} + +/** \brief Set ICC_EOIR1 + */ +__STATIC_FORCEINLINE void __set_ICC_EOIR1(uint32_t value) +{ + __set_CP(15, 0, value, 12, 12, 0); +} + +/** \brief Get ICC_HPPIR1 + */ +__STATIC_FORCEINLINE uint32_t __get_ICC_HPPIR1(void) +{ + uint32_t result; + __get_CP(15, 0, result, 12, 12, 2); + return result; +} + +/** \brief Get ICC_BPR1 + */ +__STATIC_FORCEINLINE uint32_t __get_ICC_BPR1(void) +{ + uint32_t result; + __get_CP(15, 0, result, 12, 12, 3); + return result; +} + +/** \brief Set ICC_BPR1 + */ +__STATIC_FORCEINLINE void __set_ICC_BPR1(uint32_t value) +{ + __set_CP(15, 0, value, 12, 12, 3); +} + +/** \brief Get ICC_CTLR + */ +__STATIC_FORCEINLINE uint32_t __get_ICC_CTLR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 12, 12, 4); + return result; +} + +/** \brief Set ICC_CTLR + */ +__STATIC_FORCEINLINE void __set_ICC_CTLR(uint32_t value) +{ + __set_CP(15, 0, value, 12, 12, 4); +} + +/** \brief Set ICC_IGRPEN1 + */ +__STATIC_FORCEINLINE void __set_ICC_IGRPEN1(uint32_t value) +{ + __set_CP(15, 0, value, 12, 12, 7); +} + +/** \brief Set CNTFRQ + + This function assigns the given value to PL1 Physical Timer Counter Frequency Register (CNTFRQ). + + \param [in] value CNTFRQ Register value to set +*/ +__STATIC_FORCEINLINE void __set_CNTFRQ(uint32_t value) +{ + __set_CP(15, 0, value, 14, 0, 0); +} + +/** \brief Get CNTFRQ + + This function returns the value of the PL1 Physical Timer Counter Frequency Register (CNTFRQ). + + \return CNTFRQ Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CNTFRQ(void) +{ + uint32_t result; + __get_CP(15, 0, result, 14, 0, 0); + return result; +} + +/** \brief Set CNTKCTL + + This function assigns the given value to Counter-timer Kernel Control Register (CNTKCTL). + + \param [in] value CNTKCTL Register value to set +*/ +__STATIC_FORCEINLINE void __set_CNTKCTL(uint32_t value) +{ + __set_CP(15, 0, value, 14, 1, 0); +} + +/** \brief Get CNTKCTL + + This function returns the value of the Counter-timer kernel Control Register (CNTKCTL). + + \return CNTFRQ Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CNTKCTL(void) +{ + uint32_t result; + __get_CP(15, 0, result, 14, 1, 0); + return result; +} + +/** \brief Set CNTP_TVAL + + This function assigns the given value to PL1 Physical Timer Value Register (CNTP_TVAL). + + \param [in] value CNTP_TVAL Register value to set +*/ +__STATIC_FORCEINLINE void __set_CNTP_TVAL(uint32_t value) +{ + __set_CP(15, 0, value, 14, 2, 0); +} + +/** \brief Get CNTP_TVAL + + This function returns the value of the PL1 Physical Timer Value Register (CNTP_TVAL). + + \return CNTP_TVAL Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CNTP_TVAL(void) +{ + uint32_t result; + __get_CP(15, 0, result, 14, 2, 0); + return result; +} + +/** \brief Set CNTP_CTL + + This function assigns the given value to PL1 Physical Timer Control Register (CNTP_CTL). + + \param [in] value CNTP_CTL Register value to set +*/ +__STATIC_FORCEINLINE void __set_CNTP_CTL(uint32_t value) +{ + __set_CP(15, 0, value, 14, 2, 1); +} + +/** \brief Get CNTP_CTL register + \return CNTP_CTL Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CNTP_CTL(void) +{ + uint32_t result; + __get_CP(15, 0, result, 14, 2, 1); + return result; +} + +/** \brief Set CNTV_CTL + + This function assigns the given value to PL1 Virtual Timer Control Register (CNTV_CTL). + + \param [in] value CNTV_CTL Register value to set +*/ +__STATIC_FORCEINLINE void __set_CNTV_CTL(uint32_t value) +{ + __set_CP(15, 0, value, 14, 3, 1); +} + +/** \brief Get CNTV_CTL register + \return CNTV_CTL Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CNTV_CTL(void) +{ + uint32_t result; + __get_CP(15, 0, result, 14, 3, 1); + return result; +} + +/** \brief Get CBAR + \return Configuration Base Address register value + */ +__STATIC_FORCEINLINE uint32_t __get_CBAR(void) +{ + uint32_t result; + __get_CP(15, 4, result, 15, 0, 0); + return result; +} + +/** \brief Get CNTPCT + + This function returns the value of the 64 bits PL1 Physical Count Register (CNTPCT). + + \return CNTPCT Register value + */ +__STATIC_FORCEINLINE uint64_t __get_CNTPCT(void) +{ + uint64_t result; + __get_CP64(15, 0, result, 14); + return result; +} + +/** \brief Set ICC_SGI1R + */ +__STATIC_FORCEINLINE void __set_ICC_SGI1R(uint64_t value) +{ + __set_CP64(15, 0, value, 12); +} + +/** \brief Get CNTVCT + + This function returns the value of the 64 bits PL1 Virtual Count Register (CNTVCT). + + \return CNTVCT Register value + */ +__STATIC_FORCEINLINE uint64_t __get_CNTVCT(void) +{ + uint64_t result; + __get_CP64(15, 1, result, 14); + return result; +} + +/** \brief Set CNTP_CVAL + + This function assigns the given value to 64bits PL1 Physical Timer CompareValue Register (CNTP_CVAL). + + \param [in] value CNTP_CVAL Register value to set +*/ +__STATIC_FORCEINLINE void __set_CNTP_CVAL(uint64_t value) +{ + __set_CP64(15, 2, value, 14); +} + +/** \brief Get CNTP_CVAL + + This function returns the value of the 64 bits PL1 Physical Timer CompareValue Register (CNTP_CVAL). + + \return CNTP_CVAL Register value + */ +__STATIC_FORCEINLINE uint64_t __get_CNTP_CVAL(void) +{ + uint64_t result; + __get_CP64(15, 2, result, 14); + return result; +} + +#endif diff --git a/bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_gcc.h b/bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_gcc.h new file mode 100644 index 00000000000..1e6e8bddcb3 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_gcc.h @@ -0,0 +1,2233 @@ +/**************************************************************************//** + * @file cmsis_gcc.h + * @brief CMSIS compiler GCC header file + * @date 02. February 2024 + ******************************************************************************/ +/* + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This file is based on the "\CMSIS\Core\Include\cmsis_gcc.h" + * + * Changes: + * Renesas Electronics Corporation on 2021-08-31 + * - Add CP15 descriptions by + * Renesas Electronics Corporation on 2024-02-02 + * - Added functions related to FPEXC registers. + */ +/* + * 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. + */ + +#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 + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__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"); +} + + +#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"); +} +#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 the F-bit in the CPSR. + 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 the F-bit in the CPSR. + 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 +} + +/** + * \brief Get FPEXC + * \details Returns the current value of the Floating Point Exception Control register. + * \return Floating Point Exception Control register value + */ +__STATIC_FORCEINLINE uint32_t __get_FPEXC (void) +{ +#if ((defined(__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined(__FPU_USED) && (__FPU_USED == 1U))) + + uint32_t result; + + __ASM volatile ("VMRS %0, fpexc" : "=r" (result)); + + return result; +#else + + return 0U; +#endif +} + +/** + * \brief Set FPEXC + * \details Assigns the given value to the Floating Point Exception Control register. + * \param [in] fpexc Floating Point Exception Control value to set + */ +__STATIC_FORCEINLINE void __set_FPEXC (uint32_t fpexc) +{ +#if ((defined(__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined(__FPU_USED) && (__FPU_USED == 1U))) + + __ASM volatile ("VMSR fpexc, %0" : : "r" (fpexc) : "memory"); +#else + (void) fpexc; +#endif +} + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constraint "l" + * Otherwise, use general registers, specified by constraint "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_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 */ + + +/* ################### 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) \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM volatile ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \ + __RES; \ + }) + +#define __USAT16(ARG1, ARG2) \ +({ \ + 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; + + __ASM ("sxtb16 %0, %1, ROR %2" : "=r" (result) : "r" (op1), "i" (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 __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); +} + +#if 0 +#define __PKHBT(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +#define __PKHTB(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + if (ARG3 == 0) \ + __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ + else \ + __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) +#endif + +#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) ) + +__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 */ + +/* + * Include common core functions to access Coprocessor 15 registers + */ + +#define __get_CP(cp, op1, Rt, CRn, CRm, op2) __ASM volatile("MRC p" # cp ", " # op1 ", %0, c" # CRn ", c" # CRm ", " # op2 : "=r" (Rt) : : "memory" ) +#define __set_CP(cp, op1, Rt, CRn, CRm, op2) __ASM volatile("MCR p" # cp ", " # op1 ", %0, c" # CRn ", c" # CRm ", " # op2 : : "r" (Rt) : "memory" ) +#define __get_CP64(cp, op1, Rt, CRm) __ASM volatile("MRRC p" # cp ", " # op1 ", %Q0, %R0, c" # CRm : "=r" (Rt) : : "memory" ) +#define __set_CP64(cp, op1, Rt, CRm) __ASM volatile("MCRR p" # cp ", " # op1 ", %Q0, %R0, c" # CRm : : "r" (Rt) : "memory" ) + +#include "cmsis_cp15.h" + +#pragma GCC diagnostic pop + +#endif /* __CMSIS_GCC_H */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_iccarm.h b/bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_iccarm.h new file mode 100644 index 00000000000..a6882cfe80b --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_iccarm.h @@ -0,0 +1,958 @@ +/**************************************************************************//** + * @file cmsis_iccarm.h + * @brief CMSIS compiler ICCARM (IAR Compiler for Arm) header file + * @date 02. February 2024 + ******************************************************************************/ +// ------------------------------------------------------------------------------ +// +// Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. +// +// This file is based on the "\CMSIS\Core\Include\cmsis_iccarm.h" +// +// Changes: +// Renesas Electronics Corporation on 2021-08-31 +// - Changed to be related to Cortex-R52 by +// Renesas Electronics Corporation on 2024-02-02 +// - Added functions related to FPEXC registers. +// - Moved the process of defining compiler macros for CPU architectures to renesas.h. +// +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ +// +// Copyright (c) 2017-2019 IAR Systems +// Copyright (c) 2017-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. +// +//------------------------------------------------------------------------------ + +#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 + +#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 + +#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 + +#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))) + + #define __get_FPEXC() (__arm_rsr("FPEXC")) + #define __set_FPEXC(VALUE) (__arm_wsr("FPEXC", (VALUE))) + #else + #define __get_FPSCR() (0) + #define __set_FPSCR(VALUE) ((void) VALUE) + + #define __get_FPEXC() (0) + #define __set_FPEXC(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))) + #define __set_CONTROL(VALUE) (__arm_wsr("CONTROL", (VALUE))) + #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")) + #define __TZ_set_CONTROL_NS(VALUE) (__arm_wsr("CONTROL_NS", (VALUE))) + #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 __get_CP(cp, op1, RT, CRn, CRm, op2) \ + ((RT) = __arm_rsr("p" # cp ":" # op1 ":c" # CRn ":c" # CRm ":" # op2)) + + #define __set_CP(cp, op1, RT, CRn, CRm, op2) \ + (__arm_wsr("p" # cp ":" # op1 ":c" # CRn ":c" # CRm ":" # op2, (RT))) + + #define __get_CP64(cp, op1, Rt, CRm) \ + __ASM volatile("MRRC p" # cp ", " # op1 ", %Q0, %R0, c" # CRm : "=r" (Rt) : : "memory" ) + + #define __set_CP64(cp, op1, Rt, CRm) \ + __ASM volatile("MCRR p" # cp ", " # op1 ", %Q0, %R0, c" # CRm : : "r" (Rt) : "memory" ) + + #include "cmsis_cp15.h" + + #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) + + #define __get_FPEXC() (0) + #define __set_FPEXC(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_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)) + +#endif /* __CMSIS_ICCARM_H__ */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_version.h b/bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_version.h new file mode 100644 index 00000000000..fa9f84c16f7 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/cmsis_version.h @@ -0,0 +1,46 @@ +/**************************************************************************//** + * @file cmsis_version.h + * @brief CMSIS Core(M) Version definitions + * @date 31. August 2021 + ******************************************************************************/ +/* + * Copyright [2020-2021] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This file is based on the "\CMSIS\Core\Include\cmsis_version.h" + * + * Changes: + * - No Changes. + */ +/* + * 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 __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 ( 4U) /*!< [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/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/core_cr52.h b/bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/core_cr52.h new file mode 100644 index 00000000000..615ae49a34d --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/CMSIS/Core_R/Include/core_cr52.h @@ -0,0 +1,312 @@ +/**************************************************************************//** + * @file core_cr52.h + * @brief CMSIS Cortex-R52 Core Peripheral Access Layer Header File + * @date 31. August 2021 + ******************************************************************************/ +/* + * Copyright [2020-2021] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This file is based on the "\CMSIS\Core\Include\core_armv8mml.h" + * + * Changes: + * Renesas Electronics Corporation on 2021-08-31 + * - Changed to be related to Cortex-R52 by + */ +/* + * 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 */ +#endif + +#ifndef __CORE_CR52_H_GENERIC +#define __CORE_CR52_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_R52 + @{ + */ + +#if defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #define __FPU_D32 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 + #ifndef __ARMVFP_D16__ + #define __FPU_D32 1U + #endif + #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_version.h" + +/* CMSIS CR52 definitions */ +#define __CR52_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CR52_CMSIS_VERSION_SUB ( __CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CR52_CMSIS_VERSION ((__CR52_CMSIS_VERSION_MAIN << 16U) | \ + __CR52_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_R (52U) /*!< Cortex-R Core */ + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CR52_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CR52_H_DEPENDANT +#define __CORE_CR52_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#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_R52 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core 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. + @{ + */ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_GIC Generic Interrupt Controller (GIC) + \brief Type definitions for the GIC Registers + @{ +*/ + + /** + \brief Structure type to access the Generic Interrupt Controller (GIC) for GICD. + */ +typedef struct +{ + __IOM uint32_t GICD_CTLR; /*!< Offset: 0x0000 (R/W) Distributor Control Register */ + __IM uint32_t GICD_TYPER; /*!< Offset: 0x0004 (R/ ) Interrupt Controller Type Register */ + __IM uint32_t GICD_IIDR; /*!< Offset: 0x0008 (R/ ) Distributor Implementer Identification Register */ + uint32_t RESERVED0[30U]; + __IOM uint32_t GICD_IGROUPR[30U]; /*!< Offset: 0x0084 (R/W) Interrupt Group Registers 1 - 30 */ + uint32_t RESERVED1[2U]; + __IOM uint32_t GICD_ISENABLER[30U]; /*!< Offset: 0x0104 (R/W) Interrupt Set-Enable Registers 1 - 30 */ + uint32_t RESERVED2[2U]; + __IOM uint32_t GICD_ICENABLER[30U]; /*!< Offset: 0x0184 (R/W) Interrupt Clear-Enable Registers 1 - 30 */ + uint32_t RESERVED3[2U]; + __IOM uint32_t GICD_ISPENDR[30U]; /*!< Offset: 0x0204 (R/W) Interrupt Set-Pending Registers 1 - 30 */ + uint32_t RESERVED4[2U]; + __IOM uint32_t GICD_ICPENDR[30U]; /*!< Offset: 0x0284 (R/W) Interrupt Clear-Pending Registers 1 - 30 */ + uint32_t RESERVED5[2U]; + __IOM uint32_t GICD_ISACTIVER[30U]; /*!< Offset: 0x0304 (R/W) Interrupt Set-Active Registers 1 - 30 */ + uint32_t RESERVED6[2U]; + __IOM uint32_t GICD_ICACTIVER[30U]; /*!< Offset: 0x0384 (R/W) Interrupt Clear-Active Registers 1 - 30 */ + uint32_t RESERVED7[9U]; + __IOM uint32_t GICD_IPRIORITYR[240U]; /*!< Offset: 0x0420 (R/W) Interrupt Priority Registers 8 - 247 */ + uint32_t RESERVED8[266U]; + __IOM uint32_t GICD_ICFGR[60U]; /*!< Offset: 0x0C08 (R/W) Interrupt Configuration Registers 2 - 61 */ +} GICD_Type; + + /** + \brief Structure type to access the Generic Interrupt Controller (GIC) for GICR for Control target. + */ +typedef struct +{ + __IM uint32_t GICR_CTLR; /*!< Offset: 0x0000 (R/ ) Redistributor Control Register */ + __IM uint32_t GICR_IIDR; /*!< Offset: 0x0004 (R/ ) Redistributor Implementer Identification Register */ + __IM uint32_t GICR_TYPER[2]; /*!< Offset: 0x0008 (R/ ) Redistributor Type Register */ + uint32_t RESERVED0; + __IOM uint32_t GICR_WAKER; /*!< Offset: 0x0014 (R/W) Redistributor Wake Register */ +} GICR_CONTROL_TARGET_Type; + + /** + \brief Structure type to access the Generic Interrupt Controller (GIC) for GICR for SGI and PPI. + */ +typedef struct +{ + uint32_t RESERVED0[32]; + __IOM uint32_t GICR_IGROUPR0; /*!< Offset: 0x0080 (R/W) Interrupt Group Register 0 */ + uint32_t RESERVED1[31]; + __IOM uint32_t GICR_ISENABLER0; /*!< Offset: 0x0100 (R/W) Interrupt Set-Enable Register 0 */ + uint32_t RESERVED2[31]; + __IOM uint32_t GICR_ICENABLER0; /*!< Offset: 0x0180 (R/W) Interrupt Clear-Enable Register 0 */ + uint32_t RESERVED3[31]; + __IOM uint32_t GICR_ISPENDR0; /*!< Offset: 0x0200 (R/W) Interrupt Set-Pending Register 0 */ + uint32_t RESERVED4[31]; + __IOM uint32_t GICR_ICPENDR0; /*!< Offset: 0x0280 (R/W) Interrupt Clear-Pending Register 0 */ + uint32_t RESERVED5[31]; + __IOM uint32_t GICR_ISACTIVER0; /*!< Offset: 0x0300 (R/W) Interrupt Set-Active Register 0 */ + uint32_t RESERVED6[31]; + __IOM uint32_t GICR_ICACTIVER0; /*!< Offset: 0x0380 (R/W) Interrupt Clear-Active Register 0 */ + uint32_t RESERVED7[31]; + __IOM uint32_t GICR_IPRIORITYR[8]; /*!< Offset: 0x0400 (R/W) Interrupt Priority Registers 0 - 7 */ + uint32_t RESERVED8[504]; + __IM uint32_t GICR_ICFGR0; /*!< Offset: 0x0C00 (R/ ) Interrupt Configuration Register 0 */ + __IOM uint32_t GICR_ICFGR1; /*!< Offset: 0x0C04 (R/W) Interrupt Configuration Register 1 */ +} GICR_SGI_PPI_Type; + +/*@} end of group CMSIS_GIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define GIC0_BASE (0x94000000UL) /*!< GIC0 Base Address */ +#define GIC1_BASE (0x9C000000UL) /*!< GIC1 Base Address */ +#define GICR_TARGET0_BASE (0x00100000UL) /*!< GICR Base Address (for Control target 0) */ +#define GICR_TARGET0_SGI_PPI_BASE (0x00110000UL) /*!< GICR Base Address (for SGI and PPI target 0) */ + +#define GICD0 ((GICD_Type *) GIC0_BASE ) /*!< GICD configuration struct */ +#define GICD1 ((GICD_Type *) GIC1_BASE ) /*!< GICD configuration struct */ +#define GICR0_TARGET0_IFREG ((GICR_CONTROL_TARGET_Type *) (GIC0_BASE + GICR_TARGET0_BASE) ) /*!< GICR configuration struct for Control target 0 */ +#define GICR1_TARGET0_IFREG ((GICR_CONTROL_TARGET_Type *) (GIC1_BASE + GICR_TARGET0_BASE) ) /*!< GICR configuration struct for Control target 0 */ +#define GICR0_TARGET0_INTREG ((GICR_SGI_PPI_Type *) (GIC0_BASE + GICR_TARGET0_SGI_PPI_BASE) ) /*!< GICR configuration struct for SGI and PPI target 0 */ +#define GICR1_TARGET0_INTREG ((GICR_SGI_PPI_Type *) (GIC1_BASE + GICR_TARGET0_SGI_PPI_BASE) ) /*!< GICR configuration struct for SGI and PPI target 0 */ + +/*@} */ + + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + + +#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ +/* ARM armcc specific functions */ + +#if (__ARMCC_VERSION < 400677) + #error "Please use ARM Compiler Toolchain V4.0.677 or later!" +#endif + + +/** \brief Get CPSR Register + + This function returns the content of the CPSR Register. + + \return CPSR Register value + */ +__STATIC_INLINE uint32_t __get_CPSR(void) +{ + register uint32_t __regCPSR __ASM("cpsr"); + return(__regCPSR); +} + + +#elif (defined (__ICCARM__)) /*---------------- ICC Compiler ---------------------*/ + + +#include + + +#endif + + +#ifdef __cplusplus +} +#endif + + +#endif /* __CORE_CR52_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/LICENSE.txt b/bsp/renesas/rzn2l_etherkit/rzn/arm/CMSIS_5/LICENSE.txt new file mode 100644 index 00000000000..8dada3edaf5 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/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/rzn2l_etherkit/rzn/board/rzn2l_rsk/board.h b/bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board.h new file mode 100644 index 00000000000..0cf82a0faf3 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board.h @@ -0,0 +1,67 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * File Name : board.h + * Description : Includes and API function available for this board. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup BOARDS + * @defgroup BOARD_RZN2L_RSK + * @brief BSP for the RZN2L_RSK Board + * + * The RZN2L_RSK is a development kit for the Renesas RZN2L microcontroller. + * + * @{ + **********************************************************************************************************************/ + +#ifndef BOARD_H +#define BOARD_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/* BSP Board Specific Includes. */ +#include "board_init.h" +#include "board_leds.h" +#include "board_ethernet_phy.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define BOARD_RZN2L_RSK + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/** @} (end defgroup BSP_CONFIG_RZN2L) */ + +#endif diff --git a/bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_ethernet_phy.h b/bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_ethernet_phy.h new file mode 100644 index 00000000000..fb4f299cc81 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_ethernet_phy.h @@ -0,0 +1,60 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_RZN2_RSK + * @defgroup BOARD_RZN2_RSK_ETHERNET_PHY Board Ethernet Phy + * @brief Ethernet Phy information for this board. + * + * This is code specific to the RZN2_RSK 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_VSC8541_ENABLE (1) +#define ETHER_PHY_LSI_TYPE_KIT_COMPONENT ETHER_PHY_LSI_TYPE_VSC8541 + +/*********************************************************************************************************************** + * 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_RZN2_RSK_ETHERNET_PHY) */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_init.c b/bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_init.c new file mode 100644 index 00000000000..f3a4c789b93 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_init.c @@ -0,0 +1,67 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * File Name : board_init.c + * Description : This module calls any initialization code specific to this BSP. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BOARD_RZN2L_RSK_INIT + * + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#include "bsp_api.h" + +#if defined(BOARD_RZN2L_RSK) + +/*********************************************************************************************************************** + * 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_RZN2L_RSK_INIT) */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_init.h b/bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_init.h new file mode 100644 index 00000000000..7c57fe415ca --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_init.h @@ -0,0 +1,64 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * File Name : board_init.h + * Description : This module calls any initialization code specific to this BSP. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup BOARD_RZN2L_RSK + * @defgroup BOARD_RZN2L_RSK_INIT + * @brief Board specific code for the RZN2L_RSK Board + * + * This include file is specific to the RZN2L_RSK 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 defgroup BOARD_RZN2L_RSK_INIT) */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_leds.c b/bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_leds.c new file mode 100644 index 00000000000..32ac2a0da32 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_leds.c @@ -0,0 +1,77 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * File Name : board_leds.c + * Description : This module has information about the LEDs on this board. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BOARD_RZN2L_RSK_LEDS + * + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include "bsp_api.h" +#if defined(BOARD_RZN2L_RSK) + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/** Array of LED IOPORT pins. */ +static const uint32_t g_bsp_prv_leds[][2] = +{ + {(uint32_t) BSP_IO_PORT_18_PIN_2, (uint32_t) BSP_IO_REGION_SAFE}, ///< RLED0 + {(uint32_t) BSP_IO_PORT_22_PIN_3, (uint32_t) BSP_IO_REGION_SAFE}, ///< RLED1 + {(uint32_t) BSP_IO_PORT_04_PIN_1, (uint32_t) BSP_IO_REGION_SAFE}, ///< RLED2 + {(uint32_t) BSP_IO_PORT_17_PIN_3, (uint32_t) BSP_IO_REGION_SAFE} ///< RLED3 +}; + +/*********************************************************************************************************************** + * 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 +}; + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +#endif + +/** @} (end addtogroup BOARD_RZN2L_RSK_LEDS) */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_leds.h b/bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_leds.h new file mode 100644 index 00000000000..fdae49f91d8 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/board/rzn2l_rsk/board_leds.h @@ -0,0 +1,81 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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. + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * File Name : board_leds.h + * Description : This module has information about the LEDs on this board. + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @ingroup BOARD_RZN2L_RSK + * @defgroup BOARD_RZN2L_RSK_LEDS Board LEDs + * @brief LED information for this board. + * + * This is code specific to the RZN2L_RSK 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 + uint32_t const (*p_leds)[2]; ///< 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_RLED0 = 0, ///< Green + BSP_LED_RLED1 = 1, ///< Yellow + BSP_LED_RLED2 = 2, ///< Red + BSP_LED_RLED3 = 3, ///< Red +} 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_RZN2L_RSK_LEDS) */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/api/bsp_api.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/api/bsp_api.h new file mode 100644 index 00000000000..b2c951b125b --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/api/bsp_api.h @@ -0,0 +1,111 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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/rzn2l_etherkit/rzn/fsp/inc/api/r_ioport_api.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/api/r_ioport_api.h new file mode 100644 index 00000000000..d6b3049b844 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/api/r_ioport_api.h @@ -0,0 +1,206 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_SYSTEM_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/rzn2l_etherkit/rzn/fsp/inc/api/r_transfer_api.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/api/r_transfer_api.h new file mode 100644 index 00000000000..530c88dc9de --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/api/r_transfer_api.h @@ -0,0 +1,402 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_TRANSFER_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 + +#ifndef BSP_OVERRIDE_TRANSFER_CALLBACK_ARGS_T + +/** Callback function parameter data. */ +typedef struct st_transfer_callback_args_t +{ + void const * p_context; ///< Placeholder for user data. Set in @ref transfer_api_t::open function in ::transfer_cfg_t. +} transfer_callback_args_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); + + /** Specify callback function and optional context pointer and working memory pointer. + * + * @param[in] p_ctrl Control block set in @ref transfer_api_t::open call for this transfer. + * @param[in] p_callback Callback function to register + * @param[in] p_context Pointer to send to callback function + * @param[in] p_callback_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)(transfer_ctrl_t * const p_ctrl, void (* p_callback)(transfer_callback_args_t *), + void const * const p_context, transfer_callback_args_t * const p_callback_memory); +} 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/rzn2l_etherkit/rzn/fsp/inc/api/r_uart_api.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/api/r_uart_api.h new file mode 100644 index 00000000000..23585bd3903 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/api/r_uart_api.h @@ -0,0 +1,268 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_CONNECTIVITY_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_ZERO = 1U, ///< Zero 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/rzn2l_etherkit/rzn/fsp/inc/fsp_common_api.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/fsp_common_api.h new file mode 100644 index 00000000000..6bc678d533a --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/fsp_common_api.h @@ -0,0 +1,394 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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 Crypto RSIP specific (0x10100) */ + FSP_ERR_CRYPTO_RSIP_RESOURCE_CONFLICT = 0x10100, ///< Hardware resource is busy + FSP_ERR_CRYPTO_RSIP_FATAL = 0x10101, ///< Hardware fatal error or unexpected return + FSP_ERR_CRYPTO_RSIP_FAIL = 0x10102, ///< Internal error + FSP_ERR_CRYPTO_RSIP_KEY_SET_FAIL = 0x10103, ///< Input key type is illegal + FSP_ERR_CRYPTO_RSIP_AUTHENTICATION = 0x10104, ///< Authentication failed + + /* 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/rzn2l_etherkit/rzn/fsp/inc/fsp_features.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/fsp_features.h new file mode 100644 index 00000000000..5313968fc24 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/fsp_features.h @@ -0,0 +1,562 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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 + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** Available modules. */ +typedef enum e_fsp_ip +{ + FSP_IP_CGC = 1, ///< Clock Generation Circuit + FSP_IP_CLMA = 2, ///< Clock Monitor Circuit + FSP_IP_MSTP = 3, ///< Module Stop + FSP_IP_ICU = 4, ///< Interrupt Control Unit + FSP_IP_BSC = 5, ///< Bus State Contoller + FSP_IP_CKIO = 6, ///< CKIO + FSP_IP_DMAC = 7, ///< DMA Controller + FSP_IP_ELC = 8, ///< Event Link Controller + FSP_IP_IOPORT = 9, ///< I/O Ports + FSP_IP_MTU3 = 10, ///< Multi-Function Timer Pulse Unit + FSP_IP_POE3 = 11, ///< Port Output Enable for MTU3 + FSP_IP_GPT = 12, ///< General PWM Timer + FSP_IP_POEG = 13, ///< Port Output Enable for GPT + FSP_IP_TFU = 14, ///< Arithmetic Unit for Trigonometric Functions + FSP_IP_CMT = 15, ///< Compare Match Timer + FSP_IP_CMTW = 16, ///< Compare Match Timer W + FSP_IP_WDT = 17, ///< Watch Dog Timer + FSP_IP_RTC = 18, ///< Real Time Clock + FSP_IP_ETHSS = 19, ///< Ethernet Subsystem + FSP_IP_GMAC = 20, ///< Ethernet MAC + FSP_IP_ETHSW = 21, ///< Ethernet Switch + FSP_IP_ESC = 22, ///< EtherCAT Slave Controller + FSP_IP_USBHS = 23, ///< USB High Speed + FSP_IP_SCI = 24, ///< Serial Communications Interface + FSP_IP_IIC = 25, ///< I2C Bus Interface + FSP_IP_CANFD = 26, ///< Controller Area Network with Flexible Data Rate + FSP_IP_SPI = 27, ///< Serial Peripheral Interface + FSP_IP_XSPI = 28, ///< expanded Serial Peripheral Interface + FSP_IP_CRC = 29, ///< Cyclic Redundancy Check Calculator + FSP_IP_BSCAN = 30, ///< Boundary Scan + FSP_IP_DSMIF = 31, ///< Delta Sigma Interface + FSP_IP_ADC12 = 32, ///< 12-Bit A/D Converter + FSP_IP_TSU = 33, ///< Temperature Sensor + FSP_IP_DOC = 34, ///< Data Operation Circuit + FSP_IP_SYSRAM = 35, ///< System SRAM + FSP_IP_ENCIF = 36, ///< Encoder Interface + FSP_IP_SHOSTIF = 37, ///< Serial Host Interface + FSP_IP_PHOSTIF = 38, ///< Parallel Host Interface +} fsp_ip_t; + +/** Signals that can be mapped to an interrupt. */ +typedef enum e_fsp_signal +{ + FSP_SIGNAL_INTCPU0 = (0), ///< Software interrupt 0 + FSP_SIGNAL_INTCPU1 = (1), ///< Software interrupt 1 + FSP_SIGNAL_INTCPU2 = (2), ///< Software interrupt 2 + FSP_SIGNAL_INTCPU3 = (3), ///< Software interrupt 3 + FSP_SIGNAL_INTCPU4 = (4), ///< Software interrupt 4 + FSP_SIGNAL_INTCPU5 = (5), ///< Software interrupt 5 + FSP_SIGNAL_IRQ0 = (6), ///< External pin interrupt 0 + FSP_SIGNAL_IRQ1 = (7), ///< External pin interrupt 1 + FSP_SIGNAL_IRQ2 = (8), ///< External pin interrupt 2 + FSP_SIGNAL_IRQ3 = (9), ///< External pin interrupt 3 + FSP_SIGNAL_IRQ4 = (10), ///< External pin interrupt 4 + FSP_SIGNAL_IRQ5 = (11), ///< External pin interrupt 5 + FSP_SIGNAL_IRQ6 = (12), ///< External pin interrupt 6 + FSP_SIGNAL_IRQ7 = (13), ///< External pin interrupt 7 + FSP_SIGNAL_IRQ8 = (14), ///< External pin interrupt 8 + FSP_SIGNAL_IRQ9 = (15), ///< External pin interrupt 9 + FSP_SIGNAL_IRQ10 = (16), ///< External pin interrupt 10 + FSP_SIGNAL_IRQ11 = (17), ///< External pin interrupt 11 + FSP_SIGNAL_IRQ12 = (18), ///< External pin interrupt 12 + FSP_SIGNAL_IRQ13 = (19), ///< External pin interrupt 13 + FSP_SIGNAL_BSC_CMI = (20), ///< Refresh compare match interrupt + FSP_SIGNAL_DMAC0_INT0 = (21), ///< DMAC0 transfer completion 0 + FSP_SIGNAL_DMAC0_INT1 = (22), ///< DMAC0 transfer completion 1 + FSP_SIGNAL_DMAC0_INT2 = (23), ///< DMAC0 transfer completion 2 + FSP_SIGNAL_DMAC0_INT3 = (24), ///< DMAC0 transfer completion 3 + FSP_SIGNAL_DMAC0_INT4 = (25), ///< DMAC0 transfer completion 4 + FSP_SIGNAL_DMAC0_INT5 = (26), ///< DMAC0 transfer completion 5 + FSP_SIGNAL_DMAC0_INT6 = (27), ///< DMAC0 transfer completion 6 + FSP_SIGNAL_DMAC0_INT7 = (28), ///< DMAC0 transfer completion 7 + FSP_SIGNAL_DMAC1_INT0 = (37), ///< DMAC1 transfer completion 0 + FSP_SIGNAL_DMAC1_INT1 = (38), ///< DMAC1 transfer completion 1 + FSP_SIGNAL_DMAC1_INT2 = (39), ///< DMAC1 transfer completion 2 + FSP_SIGNAL_DMAC1_INT3 = (40), ///< DMAC1 transfer completion 3 + FSP_SIGNAL_DMAC1_INT4 = (41), ///< DMAC1 transfer completion 4 + FSP_SIGNAL_DMAC1_INT5 = (42), ///< DMAC1 transfer completion 5 + FSP_SIGNAL_DMAC1_INT6 = (43), ///< DMAC1 transfer completion 6 + FSP_SIGNAL_DMAC1_INT7 = (44), ///< DMAC1 transfer completion 7 + FSP_SIGNAL_CMT0_CMI = (53), ///< CMT0 Compare match + FSP_SIGNAL_CMT1_CMI = (54), ///< CMT1 Compare match + FSP_SIGNAL_CMT2_CMI = (55), ///< CMT2 Compare match + FSP_SIGNAL_CMT3_CMI = (56), ///< CMT3 Compare match + FSP_SIGNAL_CMT4_CMI = (57), ///< CMT4 Compare match + FSP_SIGNAL_CMT5_CMI = (58), ///< CMT5 Compare match + FSP_SIGNAL_CMTW0_CMWI = (59), ///< CMTW0 Compare match + FSP_SIGNAL_CMTW0_IC0I = (60), ///< CMTW0 Input capture of register 0 + FSP_SIGNAL_CMTW0_IC1I = (61), ///< CMTW0 Input capture of register 1 + FSP_SIGNAL_CMTW0_OC0I = (62), ///< CMTW0 Output compare of register 0 + FSP_SIGNAL_CMTW0_OC1I = (63), ///< CMTW0 Output compare of register 1 + FSP_SIGNAL_CMTW1_CMWI = (64), ///< CMTW1 Compare match + FSP_SIGNAL_CMTW1_IC0I = (65), ///< CMTW1 Input capture of register 0 + FSP_SIGNAL_CMTW1_IC1I = (66), ///< CMTW1 Input capture of register 1 + FSP_SIGNAL_CMTW1_OC0I = (67), ///< CMTW1 Output compare of register 0 + FSP_SIGNAL_CMTW1_OC1I = (68), ///< CMTW1 Output compare of register 1 + FSP_SIGNAL_TGIA0 = (69), ///< MTU0.TGRA input capture/compare match + FSP_SIGNAL_TGIB0 = (70), ///< MTU0.TGRB input capture/compare match + FSP_SIGNAL_TGIC0 = (71), ///< MTU0.TGRC input capture/compare match + FSP_SIGNAL_TGID0 = (72), ///< MTU0.TGRD input capture/compare match + FSP_SIGNAL_TCIV0 = (73), ///< MTU0.TCNT overflow + FSP_SIGNAL_TGIE0 = (74), ///< MTU0.TGRE compare match + FSP_SIGNAL_TGIF0 = (75), ///< MTU0.TGRF compare match + FSP_SIGNAL_TGIA1 = (76), ///< MTU1.TGRA input capture/compare match + FSP_SIGNAL_TGIB1 = (77), ///< MTU1.TGRB input capture/compare match + FSP_SIGNAL_TCIV1 = (78), ///< MTU1.TCNT overflow + FSP_SIGNAL_TCIU1 = (79), ///< MTU1.TCNT underflow + FSP_SIGNAL_TGIA2 = (80), ///< MTU2.TGRA input capture/compare match + FSP_SIGNAL_TGIB2 = (81), ///< MTU2.TGRB input capture/compare match + FSP_SIGNAL_TCIV2 = (82), ///< MTU2.TCNT overflow + FSP_SIGNAL_TCIU2 = (83), ///< MTU2.TCNT underflow + FSP_SIGNAL_TGIA3 = (84), ///< MTU3.TGRA input capture/compare match + FSP_SIGNAL_TGIB3 = (85), ///< MTU3.TGRB input capture/compare match + FSP_SIGNAL_TGIC3 = (86), ///< MTU3.TGRC input capture/compare match + FSP_SIGNAL_TGID3 = (87), ///< MTU3.TGRD input capture/compare match + FSP_SIGNAL_TCIV3 = (88), ///< MTU3.TCNT overflow + FSP_SIGNAL_TGIA4 = (89), ///< MTU4.TGRA input capture/compare match + FSP_SIGNAL_TGIB4 = (90), ///< MTU4.TGRB input capture/compare match + FSP_SIGNAL_TGIC4 = (91), ///< MTU4.TGRC input capture/compare match + FSP_SIGNAL_TGID4 = (92), ///< MTU4.TGRD input capture/compare match + FSP_SIGNAL_TCIV4 = (93), ///< MTU4.TCNT overflow/underflow + FSP_SIGNAL_TGIU5 = (94), ///< MTU5.TGRU input capture/compare match + FSP_SIGNAL_TGIV5 = (95), ///< MTU5.TGRV input capture/compare match + FSP_SIGNAL_TGIW5 = (96), ///< MTU5.TGRW input capture/compare match + FSP_SIGNAL_TGIA6 = (97), ///< MTU6.TGRA input capture/compare match + FSP_SIGNAL_TGIB6 = (98), ///< MTU6.TGRB input capture/compare match + FSP_SIGNAL_TGIC6 = (99), ///< MTU6.TGRC input capture/compare match + FSP_SIGNAL_TGID6 = (100), ///< MTU6.TGRD input capture/compare match + FSP_SIGNAL_TCIV6 = (101), ///< MTU6.TCNT overflow + FSP_SIGNAL_TGIA7 = (102), ///< MTU7.TGRA input capture/compare match + FSP_SIGNAL_TGIB7 = (103), ///< MTU7.TGRB input capture/compare match + FSP_SIGNAL_TGIC7 = (104), ///< MTU7.TGRC input capture/compare match + FSP_SIGNAL_TGID7 = (105), ///< MTU7.TGRD input capture/compare match + FSP_SIGNAL_TCIV7 = (106), ///< MTU7.TCNT overflow/underflow + FSP_SIGNAL_TGIA8 = (107), ///< MTU8.TGRA input capture/compare match + FSP_SIGNAL_TGIB8 = (108), ///< MTU8.TGRB input capture/compare match + FSP_SIGNAL_TGIC8 = (109), ///< MTU8.TGRC input capture/compare match + FSP_SIGNAL_TGID8 = (110), ///< MTU8.TGRD input capture/compare match + FSP_SIGNAL_TCIV8 = (111), ///< MTU8.TCNT overflow + FSP_SIGNAL_OEI1 = (112), ///< Output enable interrupt 1 + FSP_SIGNAL_OEI2 = (113), ///< Output enable interrupt 2 + FSP_SIGNAL_OEI3 = (114), ///< Output enable interrupt 3 + FSP_SIGNAL_OEI4 = (115), ///< Output enable interrupt 4 + FSP_SIGNAL_GPT0_CCMPA = (116), ///< GPT0 GTCCRA input capture/compare match + FSP_SIGNAL_GPT0_CCMPB = (117), ///< GPT0 GTCCRB input capture/compare match + FSP_SIGNAL_GPT0_CMPC = (118), ///< GPT0 GTCCRC compare match + FSP_SIGNAL_GPT0_CMPD = (119), ///< GPT0 GTCCRD compare match + FSP_SIGNAL_GPT0_CMPE = (120), ///< GPT0 GTCCRE compare match + FSP_SIGNAL_GPT0_CMPF = (121), ///< GPT0 GTCCRF compare match + FSP_SIGNAL_GPT0_OVF = (122), ///< GPT0 GTCNT overflow (GTPR compare match) + FSP_SIGNAL_GPT0_UDF = (123), ///< GPT0 GTCNT underflow + FSP_SIGNAL_GPT0_DTE = (124), ///< GPT0 Dead time error + FSP_SIGNAL_GPT1_CCMPA = (125), ///< GPT1 GTCCRA input capture/compare match + FSP_SIGNAL_GPT1_CCMPB = (126), ///< GPT1 GTCCRB input capture/compare match + FSP_SIGNAL_GPT1_CMPC = (127), ///< GPT1 GTCCRC compare match + FSP_SIGNAL_GPT1_CMPD = (128), ///< GPT1 GTCCRD compare match + FSP_SIGNAL_GPT1_CMPE = (129), ///< GPT1 GTCCRE compare match + FSP_SIGNAL_GPT1_CMPF = (130), ///< GPT1 GTCCRF compare match + FSP_SIGNAL_GPT1_OVF = (131), ///< GPT1 GTCNT overflow (GTPR compare match) + FSP_SIGNAL_GPT1_UDF = (132), ///< GPT1 GTCNT underflow + FSP_SIGNAL_GPT1_DTE = (133), ///< GPT1 Dead time error + FSP_SIGNAL_GPT2_CCMPA = (134), ///< GPT2 GTCCRA input capture/compare match + FSP_SIGNAL_GPT2_CCMPB = (135), ///< GPT2 GTCCRB input capture/compare match + FSP_SIGNAL_GPT2_CMPC = (136), ///< GPT2 GTCCRC compare match + FSP_SIGNAL_GPT2_CMPD = (137), ///< GPT2 GTCCRD compare match + FSP_SIGNAL_GPT2_CMPE = (138), ///< GPT2 GTCCRE compare match + FSP_SIGNAL_GPT2_CMPF = (139), ///< GPT2 GTCCRF compare match + FSP_SIGNAL_GPT2_OVF = (140), ///< GPT2 GTCNT overflow (GTPR compare match) + FSP_SIGNAL_GPT2_UDF = (141), ///< GPT2 GTCNT underflow + FSP_SIGNAL_GPT2_DTE = (142), ///< GPT2 Dead time error + FSP_SIGNAL_GPT3_CCMPA = (143), ///< GPT3 GTCCRA input capture/compare match + FSP_SIGNAL_GPT3_CCMPB = (144), ///< GPT3 GTCCRB input capture/compare match + FSP_SIGNAL_GPT3_CMPC = (145), ///< GPT3 GTCCRC compare match + FSP_SIGNAL_GPT3_CMPD = (146), ///< GPT3 GTCCRD compare match + FSP_SIGNAL_GPT3_CMPE = (147), ///< GPT3 GTCCRE compare match + FSP_SIGNAL_GPT3_CMPF = (148), ///< GPT3 GTCCRF compare match + FSP_SIGNAL_GPT3_OVF = (149), ///< GPT3 GTCNT overflow (GTPR compare match) + FSP_SIGNAL_GPT3_UDF = (150), ///< GPT3 GTCNT underflow + FSP_SIGNAL_GPT3_DTE = (151), ///< GPT3 Dead time error + FSP_SIGNAL_GPT4_CCMPA = (152), ///< GPT4 GTCCRA input capture/compare match + FSP_SIGNAL_GPT4_CCMPB = (153), ///< GPT4 GTCCRB input capture/compare match + FSP_SIGNAL_GPT4_CMPC = (154), ///< GPT4 GTCCRC compare match + FSP_SIGNAL_GPT4_CMPD = (155), ///< GPT4 GTCCRD compare match + FSP_SIGNAL_GPT4_CMPE = (156), ///< GPT4 GTCCRE compare match + FSP_SIGNAL_GPT4_CMPF = (157), ///< GPT4 GTCCRF compare match + FSP_SIGNAL_GPT4_OVF = (158), ///< GPT4 GTCNT overflow (GTPR compare match) + FSP_SIGNAL_GPT4_UDF = (159), ///< GPT4 GTCNT underflow + FSP_SIGNAL_GPT4_DTE = (160), ///< GPT4 Dead time error + FSP_SIGNAL_GPT5_CCMPA = (161), ///< GPT5 GTCCRA input capture/compare match + FSP_SIGNAL_GPT5_CCMPB = (162), ///< GPT5 GTCCRB input capture/compare match + FSP_SIGNAL_GPT5_CMPC = (163), ///< GPT5 GTCCRC compare match + FSP_SIGNAL_GPT5_CMPD = (164), ///< GPT5 GTCCRD compare match + FSP_SIGNAL_GPT5_CMPE = (165), ///< GPT5 GTCCRE compare match + FSP_SIGNAL_GPT5_CMPF = (166), ///< GPT5 GTCCRF compare match + FSP_SIGNAL_GPT5_OVF = (167), ///< GPT5 GTCNT overflow (GTPR compare match) + FSP_SIGNAL_GPT5_UDF = (168), ///< GPT5 GTCNT underflow + FSP_SIGNAL_GPT5_DTE = (169), ///< GPT5 Dead time error + FSP_SIGNAL_GPT6_CCMPA = (170), ///< GPT6 GTCCRA input capture/compare match + FSP_SIGNAL_GPT6_CCMPB = (171), ///< GPT6 GTCCRB input capture/compare match + FSP_SIGNAL_GPT6_CMPC = (172), ///< GPT6 GTCCRC compare match + FSP_SIGNAL_GPT6_CMPD = (173), ///< GPT6 GTCCRD compare match + FSP_SIGNAL_GPT6_CMPE = (174), ///< GPT6 GTCCRE compare match + FSP_SIGNAL_GPT6_CMPF = (175), ///< GPT6 GTCCRF compare match + FSP_SIGNAL_GPT6_OVF = (176), ///< GPT6 GTCNT overflow (GTPR compare match) + FSP_SIGNAL_GPT6_UDF = (177), ///< GPT6 GTCNT underflow + FSP_SIGNAL_GPT6_DTE = (178), ///< GPT6 Dead time error + FSP_SIGNAL_GPT7_CCMPA = (179), ///< GPT7 GTCCRA input capture/compare match + FSP_SIGNAL_GPT7_CCMPB = (180), ///< GPT7 GTCCRB input capture/compare match + FSP_SIGNAL_GPT7_CMPC = (181), ///< GPT7 GTCCRC compare match + FSP_SIGNAL_GPT7_CMPD = (182), ///< GPT7 GTCCRD compare match + FSP_SIGNAL_GPT7_CMPE = (183), ///< GPT7 GTCCRE compare match + FSP_SIGNAL_GPT7_CMPF = (184), ///< GPT7 GTCCRF compare match + FSP_SIGNAL_GPT7_OVF = (185), ///< GPT7 GTCNT overflow (GTPR compare match) + FSP_SIGNAL_GPT7_UDF = (186), ///< GPT7 GTCNT underflow + FSP_SIGNAL_GPT7_DTE = (187), ///< GPT7 Dead time error + FSP_SIGNAL_GPT8_CCMPA = (188), ///< GPT8 GTCCRA input capture/compare match + FSP_SIGNAL_GPT8_CCMPB = (189), ///< GPT8 GTCCRB input capture/compare match + FSP_SIGNAL_GPT8_CMPC = (190), ///< GPT8 GTCCRC compare match + FSP_SIGNAL_GPT8_CMPD = (191), ///< GPT8 GTCCRD compare match + FSP_SIGNAL_GPT8_CMPE = (192), ///< GPT8 GTCCRE compare match + FSP_SIGNAL_GPT8_CMPF = (193), ///< GPT8 GTCCRF compare match + FSP_SIGNAL_GPT8_OVF = (194), ///< GPT8 GTCNT overflow (GTPR compare match) + FSP_SIGNAL_GPT8_UDF = (195), ///< GPT8 GTCNT underflow + FSP_SIGNAL_GPT8_DTE = (196), ///< GPT8 Dead time error + FSP_SIGNAL_GPT9_CCMPA = (197), ///< GPT9 GTCCRA input capture/compare match + FSP_SIGNAL_GPT9_CCMPB = (198), ///< GPT9 GTCCRB input capture/compare match + FSP_SIGNAL_GPT9_CMPC = (199), ///< GPT9 GTCCRC compare match + FSP_SIGNAL_GPT9_CMPD = (200), ///< GPT9 GTCCRD compare match + FSP_SIGNAL_GPT9_CMPE = (201), ///< GPT9 GTCCRE compare match + FSP_SIGNAL_GPT9_CMPF = (202), ///< GPT9 GTCCRF compare match + FSP_SIGNAL_GPT9_OVF = (203), ///< GPT9 GTCNT overflow (GTPR compare match) + FSP_SIGNAL_GPT9_UDF = (204), ///< GPT9 GTCNT underflow + FSP_SIGNAL_GPT9_DTE = (205), ///< GPT9 Dead time error + FSP_SIGNAL_GPT10_CCMPA = (206), ///< GPT10 GTCCRA input capture/compare match + FSP_SIGNAL_GPT10_CCMPB = (207), ///< GPT10 GTCCRB input capture/compare match + FSP_SIGNAL_GPT10_CMPC = (208), ///< GPT10 GTCCRC compare match + FSP_SIGNAL_GPT10_CMPD = (209), ///< GPT10 GTCCRD compare match + FSP_SIGNAL_GPT10_CMPE = (210), ///< GPT10 GTCCRE compare match + FSP_SIGNAL_GPT10_CMPF = (211), ///< GPT10 GTCCRF compare match + FSP_SIGNAL_GPT10_OVF = (212), ///< GPT10 GTCNT overflow (GTPR compare match) + FSP_SIGNAL_GPT10_UDF = (213), ///< GPT10 GTCNT underflow + FSP_SIGNAL_GPT10_DTE = (214), ///< GPT10 Dead time error + FSP_SIGNAL_GPT11_CCMPA = (215), ///< GPT11 GTCCRA input capture/compare match + FSP_SIGNAL_GPT11_CCMPB = (216), ///< GPT11 GTCCRB input capture/compare match + FSP_SIGNAL_GPT11_CMPC = (217), ///< GPT11 GTCCRC compare match + FSP_SIGNAL_GPT11_CMPD = (218), ///< GPT11 GTCCRD compare match + FSP_SIGNAL_GPT11_CMPE = (219), ///< GPT11 GTCCRE compare match + FSP_SIGNAL_GPT11_CMPF = (220), ///< GPT11 GTCCRF compare match + FSP_SIGNAL_GPT11_OVF = (221), ///< GPT11 GTCNT overflow (GTPR compare match) + FSP_SIGNAL_GPT11_UDF = (222), ///< GPT11 GTCNT underflow + FSP_SIGNAL_GPT11_DTE = (223), ///< GPT11 Dead time error + FSP_SIGNAL_GPT12_CCMPA = (224), ///< GPT12 GTCCRA input capture/compare match + FSP_SIGNAL_GPT12_CCMPB = (225), ///< GPT12 GTCCRB input capture/compare match + FSP_SIGNAL_GPT12_CMPC = (226), ///< GPT12 GTCCRC compare match + FSP_SIGNAL_GPT12_CMPD = (227), ///< GPT12 GTCCRD compare match + FSP_SIGNAL_GPT12_CMPE = (228), ///< GPT12 GTCCRE compare match + FSP_SIGNAL_GPT12_CMPF = (229), ///< GPT12 GTCCRF compare match + FSP_SIGNAL_GPT12_OVF = (230), ///< GPT12 GTCNT overflow (GTPR compare match) + FSP_SIGNAL_GPT12_UDF = (231), ///< GPT12 GTCNT underflow + FSP_SIGNAL_GPT12_DTE = (232), ///< GPT12 Dead time error + FSP_SIGNAL_GPT13_CCMPA = (233), ///< GPT13 GTCCRA input capture/compare match + FSP_SIGNAL_GPT13_CCMPB = (234), ///< GPT13 GTCCRB input capture/compare match + FSP_SIGNAL_GPT13_CMPC = (235), ///< GPT13 GTCCRC compare match + FSP_SIGNAL_GPT13_CMPD = (236), ///< GPT13 GTCCRD compare match + FSP_SIGNAL_GPT13_CMPE = (237), ///< GPT13 GTCCRE compare match + FSP_SIGNAL_GPT13_CMPF = (238), ///< GPT13 GTCCRF compare match + FSP_SIGNAL_GPT13_OVF = (239), ///< GPT13 GTCNT overflow (GTPR compare match) + FSP_SIGNAL_GPT13_UDF = (240), ///< GPT13 GTCNT underflow + FSP_SIGNAL_GPT13_DTE = (241), ///< GPT13 Dead time error + FSP_SIGNAL_POEG0_GROUP0 = (242), ///< POEG group A interrupt for channels in LLPP + FSP_SIGNAL_POEG0_GROUP1 = (243), ///< POEG group B interrupt for channels in LLPP + FSP_SIGNAL_POEG0_GROUP2 = (244), ///< POEG group C interrupt for channels in LLPP + FSP_SIGNAL_POEG0_GROUP3 = (245), ///< POEG group D interrupt for channels in LLPP + FSP_SIGNAL_POEG1_GROUP0 = (246), ///< POEG group A interrupt for channels in NONSAFETY + FSP_SIGNAL_POEG1_GROUP1 = (247), ///< POEG group B interrupt for channels in NONSAFETY + FSP_SIGNAL_POEG1_GROUP2 = (248), ///< POEG group C interrupt for channels in NONSAFETY + FSP_SIGNAL_POEG1_GROUP3 = (249), ///< POEG group D interrupt for channels in NONSAFETY + FSP_SIGNAL_GMAC_LPI = (250), ///< GMAC1 energy efficient + FSP_SIGNAL_GMAC_PMT = (251), ///< GMAC1 power management + FSP_SIGNAL_GMAC_SBD = (252), ///< GMAC1 general interrupt + FSP_SIGNAL_ETHSW_INTR = (253), ///< Ethernet Switch interrupt + FSP_SIGNAL_ETHSW_DLR = (254), ///< Ethernet Switch DLR interrupt + FSP_SIGNAL_ETHSW_PRP = (255), ///< Ethernet Switch PRP interrupt + FSP_SIGNAL_ETHSW_IHUB = (256), ///< Ethernet Switch Integrated Hub interrupt + FSP_SIGNAL_ETHSW_PTRN0 = (257), ///< Ethernet Switch RX Pattern Matcher interrupt 0 + FSP_SIGNAL_ETHSW_PTRN1 = (258), ///< Ethernet Switch RX Pattern Matcher interrupt 1 + FSP_SIGNAL_ETHSW_PTRN2 = (259), ///< Ethernet Switch RX Pattern Matcher interrupt 2 + FSP_SIGNAL_ETHSW_PTRN3 = (260), ///< Ethernet Switch RX Pattern Matcher interrupt 3 + FSP_SIGNAL_ETHSW_PTRN4 = (261), ///< Ethernet Switch RX Pattern Matcher interrupt 4 + FSP_SIGNAL_ETHSW_PTRN5 = (262), ///< Ethernet Switch RX Pattern Matcher interrupt 5 + FSP_SIGNAL_ETHSW_PTRN6 = (263), ///< Ethernet Switch RX Pattern Matcher interrupt 6 + FSP_SIGNAL_ETHSW_PTRN7 = (264), ///< Ethernet Switch RX Pattern Matcher interrupt 7 + FSP_SIGNAL_ETHSW_PTRN8 = (265), ///< Ethernet Switch RX Pattern Matcher interrupt 8 + FSP_SIGNAL_ETHSW_PTRN9 = (266), ///< Ethernet Switch RX Pattern Matcher interrupt 9 + FSP_SIGNAL_ETHSW_PTRN10 = (267), ///< Ethernet Switch RX Pattern Matcher interrupt 10 + FSP_SIGNAL_ETHSW_PTRN11 = (268), ///< Ethernet Switch RX Pattern Matcher interrupt 11 + FSP_SIGNAL_ETHSW_PTPOUT0 = (269), ///< Ethernet switch timer pulse output 0 + FSP_SIGNAL_ETHSW_PTPOUT1 = (270), ///< Ethernet switch timer pulse output 1 + FSP_SIGNAL_ETHSW_PTPOUT2 = (271), ///< Ethernet switch timer pulse output 2 + FSP_SIGNAL_ETHSW_PTPOUT3 = (272), ///< Ethernet switch timer pulse output 3 + FSP_SIGNAL_ETHSW_TDMAOUT0 = (273), ///< Ethernet Switch TDMA timer output 0 + FSP_SIGNAL_ETHSW_TDMAOUT1 = (274), ///< Ethernet Switch TDMA timer output 1 + FSP_SIGNAL_ETHSW_TDMAOUT2 = (275), ///< Ethernet Switch TDMA timer output 2 + FSP_SIGNAL_ETHSW_TDMAOUT3 = (276), ///< Ethernet Switch TDMA timer output 3 + FSP_SIGNAL_ESC_SYNC0 = (277), ///< EtherCAT Sync0 interrupt + FSP_SIGNAL_ESC_SYNC1 = (278), ///< EtherCAT Sync1 interrupt + FSP_SIGNAL_ESC_CAT = (279), ///< EtherCAT interrupt + FSP_SIGNAL_ESC_SOF = (280), ///< EtherCAT SOF interrupt + FSP_SIGNAL_ESC_EOF = (281), ///< EtherCAT EOF interrupt + FSP_SIGNAL_ESC_WDT = (282), ///< EtherCAT WDT interrupt + FSP_SIGNAL_ESC_RST = (283), ///< EtherCAT RESET interrupt + FSP_SIGNAL_USB_HI = (284), ///< USB (Host) interrupt + FSP_SIGNAL_USB_FI = (285), ///< USB (Function) interrupt + FSP_SIGNAL_USB_FDMA0 = (286), ///< USB (Function) DMA 0 transmit completion + FSP_SIGNAL_USB_FDMA1 = (287), ///< USB (Function) DMA 1 transmit completion + FSP_SIGNAL_SCI0_ERI = (288), ///< SCI0 Receive error + FSP_SIGNAL_SCI0_RXI = (289), ///< SCI0 Receive data full + FSP_SIGNAL_SCI0_TXI = (290), ///< SCI0 Transmit data empty + FSP_SIGNAL_SCI0_TEI = (291), ///< SCI0 Transmit end + FSP_SIGNAL_SCI1_ERI = (292), ///< SCI1 Receive error + FSP_SIGNAL_SCI1_RXI = (293), ///< SCI1 Receive data full + FSP_SIGNAL_SCI1_TXI = (294), ///< SCI1 Transmit data empty + FSP_SIGNAL_SCI1_TEI = (295), ///< SCI1 Transmit end + FSP_SIGNAL_SCI2_ERI = (296), ///< SCI2 Receive error + FSP_SIGNAL_SCI2_RXI = (297), ///< SCI2 Receive data full + FSP_SIGNAL_SCI2_TXI = (298), ///< SCI2 Transmit data empty + FSP_SIGNAL_SCI2_TEI = (299), ///< SCI2 Transmit end + FSP_SIGNAL_SCI3_ERI = (300), ///< SCI3 Receive error + FSP_SIGNAL_SCI3_RXI = (301), ///< SCI3 Receive data full + FSP_SIGNAL_SCI3_TXI = (302), ///< SCI3 Transmit data empty + FSP_SIGNAL_SCI3_TEI = (303), ///< SCI3 Transmit end + FSP_SIGNAL_SCI4_ERI = (304), ///< SCI4 Receive error + FSP_SIGNAL_SCI4_RXI = (305), ///< SCI4 Receive data full + FSP_SIGNAL_SCI4_TXI = (306), ///< SCI4 Transmit data empty + FSP_SIGNAL_SCI4_TEI = (307), ///< SCI4 Transmit end + FSP_SIGNAL_IIC0_EEI = (308), ///< IIC0 Transfer error or event generation + FSP_SIGNAL_IIC0_RXI = (309), ///< IIC0 Receive data full + FSP_SIGNAL_IIC0_TXI = (310), ///< IIC0 Transmit data empty + FSP_SIGNAL_IIC0_TEI = (311), ///< IIC0 Transmit end + FSP_SIGNAL_IIC1_EEI = (312), ///< IIC1 Transfer error or event generation + FSP_SIGNAL_IIC1_RXI = (313), ///< IIC1 Receive data full + FSP_SIGNAL_IIC1_TXI = (314), ///< IIC1 Transmit data empty + FSP_SIGNAL_IIC1_TEI = (315), ///< IIC1 Transmit end + FSP_SIGNAL_CAN_RXF = (316), ///< CANFD RX FIFO interrupt + FSP_SIGNAL_CAN_GLERR = (317), ///< CANFD Global error interrupt + FSP_SIGNAL_CAN0_TX = (318), ///< CAFND0 Channel TX interrupt + FSP_SIGNAL_CAN0_CHERR = (319), ///< CAFND0 Channel CAN error interrupt + FSP_SIGNAL_CAN0_COMFRX = (320), ///< CAFND0 Common RX FIFO or TXQ interrupt + FSP_SIGNAL_CAN1_TX = (321), ///< CAFND1 Channel TX interrupt + FSP_SIGNAL_CAN1_CHERR = (322), ///< CAFND1 Channel CAN error interrupt + FSP_SIGNAL_CAN1_COMFRX = (323), ///< CAFND1 Common RX FIFO or TXQ interrupt + FSP_SIGNAL_SPI0_SPRI = (324), ///< SPI0 Reception buffer full + FSP_SIGNAL_SPI0_SPTI = (325), ///< SPI0 Transmit buffer empty + FSP_SIGNAL_SPI0_SPII = (326), ///< SPI0 SPI idle + FSP_SIGNAL_SPI0_SPEI = (327), ///< SPI0 errors + FSP_SIGNAL_SPI0_SPCEND = (328), ///< SPI0 Communication complete + FSP_SIGNAL_SPI1_SPRI = (329), ///< SPI1 Reception buffer full + FSP_SIGNAL_SPI1_SPTI = (330), ///< SPI1 Transmit buffer empty + FSP_SIGNAL_SPI1_SPII = (331), ///< SPI1 SPI idle + FSP_SIGNAL_SPI1_SPEI = (332), ///< SPI1 errors + FSP_SIGNAL_SPI1_SPCEND = (333), ///< SPI1 Communication complete + FSP_SIGNAL_SPI2_SPRI = (334), ///< SPI2 Reception buffer full + FSP_SIGNAL_SPI2_SPTI = (335), ///< SPI2 Transmit buffer empty + FSP_SIGNAL_SPI2_SPII = (336), ///< SPI2 SPI idle + FSP_SIGNAL_SPI2_SPEI = (337), ///< SPI2 errors + FSP_SIGNAL_SPI2_SPCEND = (338), ///< SPI2 Communication complete + FSP_SIGNAL_XSPI0_INT = (339), ///< xSPI0 Interrupt + FSP_SIGNAL_XSPI0_INTERR = (340), ///< xSPI0 Error interrupt + FSP_SIGNAL_XSPI1_INT = (341), ///< xSPI1 Interrupt + FSP_SIGNAL_XSPI1_INTERR = (342), ///< xSPI1 Error interrupt + FSP_SIGNAL_DSMIF0_CDRUI = (343), ///< DSMIF0 current data register update (ORed ch0 to ch2) + FSP_SIGNAL_DSMIF1_CDRUI = (344), ///< DSMIF1 current data register update (ORed ch3 to ch5) + FSP_SIGNAL_ADC0_ADI = (345), ///< ADC0 A/D scan end interrupt + FSP_SIGNAL_ADC0_GBADI = (346), ///< ADC0 A/D scan end interrupt for Group B + FSP_SIGNAL_ADC0_GCADI = (347), ///< ADC0 A/D scan end interrupt for Group C + FSP_SIGNAL_ADC0_CMPAI = (348), ///< ADC0 Window A compare match + FSP_SIGNAL_ADC0_CMPBI = (349), ///< ADC0 Window B compare match + FSP_SIGNAL_ADC1_ADI = (350), ///< ADC1 A/D scan end interrupt + FSP_SIGNAL_ADC1_GBADI = (351), ///< ADC1 A/D scan end interrupt for Group B + FSP_SIGNAL_ADC1_GCADI = (352), ///< ADC1 A/D scan end interrupt for Group C + FSP_SIGNAL_ADC1_CMPAI = (353), ///< ADC1 Window A compare match + FSP_SIGNAL_ADC1_CMPBI = (354), ///< ADC1 Window B compare match + FSP_SIGNAL_MBX_INT0 = (372), ///< Mailbox (Host CPU to Cortex-R52) interrupt 0 + FSP_SIGNAL_MBX_INT1 = (373), ///< Mailbox (Host CPU to Cortex-R52) interrupt 1 + FSP_SIGNAL_MBX_INT2 = (374), ///< Mailbox (Host CPU to Cortex-R52) interrupt 2 + FSP_SIGNAL_MBX_INT3 = (375), ///< Mailbox (Host CPU to Cortex-R52) interrupt 3 + FSP_SIGNAL_CPU0_ERR0 = (384), ///< Cortex-R52 CPU0 error event 0 + FSP_SIGNAL_CPU0_ERR1 = (385), ///< Cortex-R52 CPU0 error event 1 + FSP_SIGNAL_PERI_ERR0 = (388), ///< Peripherals error event 0 + FSP_SIGNAL_PERI_ERR1 = (389), ///< Peripherals error event 1 + FSP_SIGNAL_SHOST_INT = (390), ///< SHOSTIF interrupt + FSP_SIGNAL_PHOST_INT = (391), ///< PHOSTIF interrupt + FSP_SIGNAL_INTCPU6 = (392), ///< Software interrupt 6 + FSP_SIGNAL_INTCPU7 = (393), ///< Software interrupt 7 + FSP_SIGNAL_IRQ14 = (394), ///< External pin interrupt 14 + FSP_SIGNAL_IRQ15 = (395), ///< External pin interrupt 15 + FSP_SIGNAL_GPT14_CCMPA = (396), ///< GPT14 GTCCRA input capture/compare match + FSP_SIGNAL_GPT14_CCMPB = (397), ///< GPT14 GTCCRB input capture/compare match + FSP_SIGNAL_GPT14_CMPC = (398), ///< GPT14 GTCCRC compare match + FSP_SIGNAL_GPT14_CMPD = (399), ///< GPT14 GTCCRD compare match + FSP_SIGNAL_GPT14_CMPE = (400), ///< GPT14 GTCCRE compare match + FSP_SIGNAL_GPT14_CMPF = (401), ///< GPT14 GTCCRF compare match + FSP_SIGNAL_GPT14_OVF = (402), ///< GPT14 GTCNT overflow (GTPR compare match) + FSP_SIGNAL_GPT14_UDF = (403), ///< GPT14 GTCNT underflow + FSP_SIGNAL_GPT15_CCMPA = (404), ///< GPT15 GTCCRA input capture/compare match + FSP_SIGNAL_GPT15_CCMPB = (405), ///< GPT15 GTCCRB input capture/compare match + FSP_SIGNAL_GPT15_CMPC = (406), ///< GPT15 GTCCRC compare match + FSP_SIGNAL_GPT15_CMPD = (407), ///< GPT15 GTCCRD compare match + FSP_SIGNAL_GPT15_CMPE = (408), ///< GPT15 GTCCRE compare match + FSP_SIGNAL_GPT15_CMPF = (409), ///< GPT15 GTCCRF compare match + FSP_SIGNAL_GPT15_OVF = (410), ///< GPT15 GTCNT overflow (GTPR compare match) + FSP_SIGNAL_GPT15_UDF = (411), ///< GPT15 GTCNT underflow + FSP_SIGNAL_GPT16_CCMPA = (412), ///< GPT16 GTCCRA input capture/compare match + FSP_SIGNAL_GPT16_CCMPB = (413), ///< GPT16 GTCCRB input capture/compare match + FSP_SIGNAL_GPT16_CMPC = (414), ///< GPT16 GTCCRC compare match + FSP_SIGNAL_GPT16_CMPD = (415), ///< GPT16 GTCCRD compare match + FSP_SIGNAL_GPT16_CMPE = (416), ///< GPT16 GTCCRE compare match + FSP_SIGNAL_GPT16_CMPF = (417), ///< GPT16 GTCCRF compare match + FSP_SIGNAL_GPT16_OVF = (418), ///< GPT16 GTCNT overflow (GTPR compare match) + FSP_SIGNAL_GPT16_UDF = (419), ///< GPT16 GTCNT underflow + FSP_SIGNAL_GPT17_CCMPA = (420), ///< GPT17 GTCCRA input capture/compare match + FSP_SIGNAL_GPT17_CCMPB = (421), ///< GPT17 GTCCRB input capture/compare match + FSP_SIGNAL_GPT17_CMPC = (422), ///< GPT17 GTCCRC compare match + FSP_SIGNAL_GPT17_CMPD = (423), ///< GPT17 GTCCRD compare match + FSP_SIGNAL_GPT17_CMPE = (424), ///< GPT17 GTCCRE compare match + FSP_SIGNAL_GPT17_CMPF = (425), ///< GPT17 GTCCRF compare match + FSP_SIGNAL_GPT17_OVF = (426), ///< GPT17 GTCNT overflow (GTPR compare match) + FSP_SIGNAL_GPT17_UDF = (427), ///< GPT17 GTCNT underflow + FSP_SIGNAL_POEG2_GROUP0 = (428), ///< POEG group A interrupt for channels in SAFETY + FSP_SIGNAL_POEG2_GROUP1 = (429), ///< POEG group B interrupt for channels in SAFETY + FSP_SIGNAL_POEG2_GROUP2 = (430), ///< POEG group C interrupt for channels in SAFETY + FSP_SIGNAL_POEG2_GROUP3 = (431), ///< POEG group D interrupt for channels in SAFETY + FSP_SIGNAL_RTC_ALM = (432), ///< Alarm interrupt + FSP_SIGNAL_RTC_1S = (433), ///< 1 second interrupt + FSP_SIGNAL_RTC_PRD = (434), ///< Fixed interval interrupt + FSP_SIGNAL_SCI5_ERI = (435), ///< SCI5 Receive error + FSP_SIGNAL_SCI5_RXI = (436), ///< SCI5 Receive data full + FSP_SIGNAL_SCI5_TXI = (437), ///< SCI5 Transmit data empty + FSP_SIGNAL_SCI5_TEI = (438), ///< SCI5 Transmit end + FSP_SIGNAL_IIC2_EEI = (439), ///< IIC2 Transfer error or event generation + FSP_SIGNAL_IIC2_RXI = (440), ///< IIC2 Receive data full + FSP_SIGNAL_IIC2_TXI = (441), ///< IIC2 Transmit data empty + FSP_SIGNAL_IIC2_TEI = (442), ///< IIC2 Transmit end + FSP_SIGNAL_SPI3_SPRI = (443), ///< SPI3 Reception buffer full + FSP_SIGNAL_SPI3_SPTI = (444), ///< SPI3 Transmit buffer empty + FSP_SIGNAL_SPI3_SPII = (445), ///< SPI3 SPI idle + FSP_SIGNAL_SPI3_SPEI = (446), ///< SPI3 errors + FSP_SIGNAL_SPI3_SPCEND = (447), ///< SPI3 Communication complete + FSP_SIGNAL_DREQ = (448), ///< External DMA request + FSP_SIGNAL_CAN_RF_DMAREQ0 = (449), ///< CAFND RX FIFO 0 DMA request + FSP_SIGNAL_CAN_RF_DMAREQ1 = (450), ///< CAFND RX FIFO 1 DMA request + FSP_SIGNAL_CAN_RF_DMAREQ2 = (451), ///< CAFND RX FIFO 2 DMA request + FSP_SIGNAL_CAN_RF_DMAREQ3 = (452), ///< CAFND RX FIFO 3 DMA request + FSP_SIGNAL_CAN_RF_DMAREQ4 = (453), ///< CAFND RX FIFO 4 DMA request + FSP_SIGNAL_CAN_RF_DMAREQ5 = (454), ///< CAFND RX FIFO 5 DMA request + FSP_SIGNAL_CAN_RF_DMAREQ6 = (455), ///< CAFND RX FIFO 6 DMA request + FSP_SIGNAL_CAN_RF_DMAREQ7 = (456), ///< CAFND RX FIFO 7 DMA request + FSP_SIGNAL_CAN0_CF_DMAREQ = (457), ///< CAFND0 First common FIFO DMA request + FSP_SIGNAL_CAN1_CF_DMAREQ = (458), ///< CAFND1 First common FIFO DMA request + FSP_SIGNAL_ADC0_WCMPM = (459), ///< ADC0 compare match + FSP_SIGNAL_ADC0_WCMPUM = (460), ///< ADC0 compare mismatch + FSP_SIGNAL_ADC1_WCMPM = (461), ///< ADC1 compare match + FSP_SIGNAL_ADC1_WCMPUM = (462), ///< ADC1 compare mismatch + FSP_SIGNAL_TCIV4_OF = (463), ///< MTU4.TCNT overflow + FSP_SIGNAL_TCIV4_UF = (464), ///< MTU4.TCNT underflow + FSP_SIGNAL_TCIV7_OF = (465), ///< MTU7.TCNT overflow + FSP_SIGNAL_TCIV7_UF = (466), ///< MTU7.TCNT underflow + FSP_SIGNAL_IOPORT_GROUP1 = (467), ///< Input edge detection of input port group 1 + FSP_SIGNAL_IOPORT_GROUP2 = (468), ///< Input edge detection of input port group 2 + FSP_SIGNAL_IOPORT_SINGLE0 = (469), ///< Input edge detection of single input port 0 + FSP_SIGNAL_IOPORT_SINGLE1 = (470), ///< Input edge detection of single input port 1 + FSP_SIGNAL_IOPORT_SINGLE2 = (471), ///< Input edge detection of single input port 2 + FSP_SIGNAL_IOPORT_SINGLE3 = (472), ///< Input edge detection of single input port 3 + FSP_SIGNAL_GPT0_ADTRGA = (473), ///< GPT0 GTADTRA compare match + FSP_SIGNAL_GPT0_ADTRGB = (474), ///< GPT0 GTADTRB compare match + FSP_SIGNAL_GPT1_ADTRGA = (475), ///< GPT1 GTADTRA compare match + FSP_SIGNAL_GPT1_ADTRGB = (476), ///< GPT1 GTADTRB compare match + FSP_SIGNAL_GPT2_ADTRGA = (477), ///< GPT2 GTADTRA compare match + FSP_SIGNAL_GPT2_ADTRGB = (478), ///< GPT2 GTADTRB compare match + FSP_SIGNAL_GPT3_ADTRGA = (479), ///< GPT3 GTADTRA compare match + FSP_SIGNAL_GPT3_ADTRGB = (480), ///< GPT3 GTADTRB compare match + FSP_SIGNAL_GPT4_ADTRGA = (481), ///< GPT4 GTADTRA compare match + FSP_SIGNAL_GPT4_ADTRGB = (482), ///< GPT4 GTADTRB compare match + FSP_SIGNAL_GPT5_ADTRGA = (483), ///< GPT5 GTADTRA compare match + FSP_SIGNAL_GPT5_ADTRGB = (484), ///< GPT5 GTADTRB compare match + FSP_SIGNAL_GPT6_ADTRGA = (485), ///< GPT6 GTADTRA compare match + FSP_SIGNAL_GPT6_ADTRGB = (486), ///< GPT6 GTADTRB compare match + FSP_SIGNAL_GPT7_ADTRGA = (487), ///< GPT7 GTADTRA compare match + FSP_SIGNAL_GPT7_ADTRGB = (488), ///< GPT7 GTADTRB compare match + FSP_SIGNAL_GPT8_ADTRGA = (489), ///< GPT8 GTADTRA compare match + FSP_SIGNAL_GPT8_ADTRGB = (490), ///< GPT8 GTADTRB compare match + FSP_SIGNAL_GPT9_ADTRGA = (491), ///< GPT9 GTADTRA compare match + FSP_SIGNAL_GPT9_ADTRGB = (492), ///< GPT9 GTADTRB compare match + FSP_SIGNAL_GPT10_ADTRGA = (493), ///< GPT10 GTADTRA compare match + FSP_SIGNAL_GPT10_ADTRGB = (494), ///< GPT10 GTADTRB compare match + FSP_SIGNAL_GPT11_ADTRGA = (495), ///< GPT11 GTADTRA compare match + FSP_SIGNAL_GPT11_ADTRGB = (496), ///< GPT11 GTADTRB compare match + FSP_SIGNAL_GPT12_ADTRGA = (497), ///< GPT12 GTADTRA compare match + FSP_SIGNAL_GPT12_ADTRGB = (498), ///< GPT12 GTADTRB compare match + FSP_SIGNAL_GPT13_ADTRGA = (499), ///< GPT13 GTADTRA compare match + FSP_SIGNAL_GPT13_ADTRGB = (500), ///< GPT13 GTADTRB compare match + FSP_SIGNAL_NONE +} fsp_signal_t; + +typedef void (* fsp_vector_t)(void); + +/** @} (end addtogroup BSP_MCU) */ + +#endif diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/fsp_version.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/fsp_version.h new file mode 100644 index 00000000000..274f97a19cf --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/fsp_version.h @@ -0,0 +1,80 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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 + * @{ + **********************************************************************************************************************/ + +/********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/** FSP pack major version. */ +#define FSP_VERSION_MAJOR (2U) + +/** FSP pack minor version. */ +#define FSP_VERSION_MINOR (0U) + +/** 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 ("2.0.0") + +/** Unique FSP version ID. */ +#define FSP_VERSION_BUILD_STRING ("Built with RZ/N Flexible Software Package version 2.0.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; + +/** @} */ + +#endif diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/instances/r_ioport.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/instances/r_ioport.h new file mode 100644 index 00000000000..b9f4e1b93e3 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/instances/r_ioport.h @@ -0,0 +1,212 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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" +#include "r_ioport_cfg.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define IOPORT_SINGLE_PORT_NUM (4) +#define IOPORT_PORT_GROUP_NUM (2) +#define IOPORT_PORT_GROUP_1 (0) +#define IOPORT_PORT_GROUP_2 (1) +#define IOPORT_SINGLE_PORT_0 (0) +#define IOPORT_SINGLE_PORT_1 (1) +#define IOPORT_SINGLE_PORT_2 (2) +#define IOPORT_SINGLE_PORT_3 (3) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/** Pin selection for port group + * @note Event link must be configured by the ELC + */ +typedef enum e_ioport_event_pin_selection +{ + IOPORT_EVENT_PIN_SELECTION_NONE = 0x00, ///< No pin selection for port group + IOPORT_EVENT_PIN_SELECTION_PIN_0 = 0x01, ///< Select pin 0 to port group + IOPORT_EVENT_PIN_SELECTION_PIN_1 = 0x02, ///< Select pin 1 to port group + IOPORT_EVENT_PIN_SELECTION_PIN_2 = 0x04, ///< Select pin 2 to port group + IOPORT_EVENT_PIN_SELECTION_PIN_3 = 0x08, ///< Select pin 3 to port group + IOPORT_EVENT_PIN_SELECTION_PIN_4 = 0x10, ///< Select pin 4 to port group + IOPORT_EVENT_PIN_SELECTION_PIN_5 = 0x20, ///< Select pin 5 to port group + IOPORT_EVENT_PIN_SELECTION_PIN_6 = 0x40, ///< Select pin 6 to port group + IOPORT_EVENT_PIN_SELECTION_PIN_7 = 0x80, ///< Select pin 7 to port group +} ioport_event_pin_selection_t; + +/** Port group operation + * @note Event link must be configured by the ELC + */ +typedef enum e_ioport_event_output_operation +{ + IOPORT_EVENT_OUTPUT_OPERATION_LOW = 0x0, ///< Set Low output to output operation + IOPORT_EVENT_OUTPUT_OPERATION_HIGH = 0x1, ///< Set High output to output operation + IOPORT_EVENT_OUTPUT_OPERATION_TOGGLE = 0x2, ///< Set toggle output to output operation + IOPORT_EVENT_OUTPUT_OPERATION_BUFFER = 0x3, ///< Set buffer value output to output operation +} ioport_event_output_operation_t; + +/** Input port group event control + * @note Event link must be configured by the ELC + */ +typedef enum e_ioport_event_control +{ + IOPORT_EVENT_CONTROL_DISABLE = 0x0, ///< Disable function related with event link + IOPORT_EVENT_CONTROL_ENABLE = 0x1, ///< Enable function related with event link +} ioport_event_control_t; + +/** Single port event direction + * @note Event link must be configured by the ELC + */ +typedef enum e_ioport_event_direction +{ + IOPORT_EVENT_DIRECTION_OUTPUT = 0x0, ///< Set output direction to single port + IOPORT_EVENT_DIRECTION_INPUT = 0x1, ///< Set input direction to single port +} ioport_event_direction_t; + +/** Input event edge detection + * @note Event link must be configured by the ELC + */ +typedef enum e_ioport_event_detection +{ + IOPORT_EVENT_DETECTION_RISING_EDGE = 0x0, ///< Set rising edge to event detection for input event + IOPORT_EVENT_DETECTION_FALLING_EDGE = 0x1, ///< Set falling edge to event detection for input event + IOPORT_EVENT_DETECTION_BOTH_EGDE = 0x2, ///< Set both edges to event detection for input event +} ioport_event_detection_t; + +/** Initial value for buffer register + * @note Event link must be configured by the ELC + */ +typedef enum e_ioport_event_initial_buffer_value +{ + IOPORT_EVENT_INITIAL_BUFFER_VALUE_LOW = 0U, ///< Set low input to initial value of buffer register for input port group + IOPORT_EVENT_INITIAL_BUFFER_VALUE_HIGH = 1U, ///< Set high input to initial value of buffer register for input port group +} ioport_event_initial_buffer_value_t; + +/** Single port configuration + * @note Event link must be configured by the ELC + */ +typedef struct st_ioport_event_single +{ + ioport_event_control_t event_control; ///< Event link control for single port + ioport_event_direction_t direction; ///< Event direction for single port + uint16_t port_num; ///< Port number specified to single port + ioport_event_output_operation_t operation; ///< Single port operation select + ioport_event_detection_t edge_detection; ///< Edge detection select +} ioport_event_single_t; + +/** Output port group configuration + * @note Event link must be configured by the ELC + */ +typedef struct st_ioport_event_group_output +{ + uint8_t pin_select; ///< Port number specified to output port group + ioport_event_output_operation_t operation; ///< Port group operation select +} ioport_event_group_output_t; + +/** Input port group configuration + * @note Event link must be configured by the ELC + */ +typedef struct st_ioport_event_group_input +{ + ioport_event_control_t event_control; ///< Event link control for input port group + ioport_event_detection_t edge_detection; ///< Edge detection select + ioport_event_control_t overwrite_control; ///< Buffer register overwrite control + uint8_t pin_select; ///< Port number specified to input port group + uint8_t buffer_init_value; ///< Buffer register initial value +} ioport_event_group_input_t; + +/** IOPORT extended configuration for event link function + * @note Event link must be configured by the ELC + */ +typedef struct st_ioport_extend_cfg +{ + ioport_event_group_output_t port_group_output_cfg[IOPORT_PORT_GROUP_NUM]; ///< Output port group configuration + ioport_event_group_input_t port_group_input_cfg[IOPORT_PORT_GROUP_NUM]; ///< Input port group configuration + ioport_event_single_t single_port_cfg[IOPORT_SINGLE_PORT_NUM]; ///< Single input port configuration +} ioport_extend_cfg_t; + +/** IOPORT private control block. DO NOT MODIFY. Initialization occurs when R_IOPORT_Open() is called. */ +typedef struct st_ioport_instance_ctrl +{ + uint32_t open; // Whether or not ioport is open + void const * p_context; // Pointer to context to be passed into callback + ioport_cfg_t const * p_cfg; // Pointer to the configuration block +} ioport_instance_ctrl_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 * p_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/rzn2l_etherkit/rzn/fsp/inc/instances/r_sci_uart.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/instances/r_sci_uart.h new file mode 100644 index 00000000000..fd403941112 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/inc/instances/r_sci_uart.h @@ -0,0 +1,246 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_UART_H +#define R_SCI_UART_H + +/*******************************************************************************************************************//** + * @addtogroup SCI_UART + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Includes + **********************************************************************************************************************/ +#include "bsp_api.h" +#include "r_uart_api.h" +#include "r_sci_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_uart_clock +{ + SCI_UART_CLOCK_INT, ///< Use internal clock for baud generation + SCI_UART_CLOCK_INT_WITH_BAUDRATE_OUTPUT, ///< Use internal clock for baud generation and output on SCK + SCI_UART_CLOCK_EXT8X, ///< Use external clock 8x baud rate + SCI_UART_CLOCK_EXT16X ///< Use external clock 16x baud rate +} sci_uart_clock_t; + +/** UART flow control mode definition */ +typedef enum e_sci_uart_flow_control +{ + SCI_UART_FLOW_CONTROL_RTS = 0U, ///< Use CTSn_RTSn pin for RTS + SCI_UART_FLOW_CONTROL_CTS = 1U, ///< Use CTSn_RTSn pin for CTS + SCI_UART_FLOW_CONTROL_HARDWARE_CTSRTS = 3U, ///< Use CTSn pin for CTS, CTSn_RTSn pin for RTS + SCI_UART_FLOW_CONTROL_CTSRTS = 5U, ///< Use SCI pin for CTS, external pin for RTS +} sci_uart_flow_control_t; + +/** UART instance control block. */ +typedef struct st_sci_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_SCI0_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_uart_instance_ctrl_t; + +/** Receive FIFO trigger configuration. */ +typedef enum e_sci_uart_rx_fifo_trigger +{ + SCI_UART_RX_FIFO_TRIGGER_1 = 0x1, ///< Callback after each byte is received without buffering + SCI_UART_RX_FIFO_TRIGGER_MAX = 0xF, ///< Callback when FIFO is full or after 15 bit times with no data (fewer interrupts) +} sci_uart_rx_fifo_trigger_t; + +/** Asynchronous Start Bit Edge Detection configuration. */ +typedef enum e_sci_uart_start_bit +{ + SCI_UART_START_BIT_LOW_LEVEL = 0x0, ///< Detect low level on RXDn pin as start bit + SCI_UART_START_BIT_FALLING_EDGE = 0x1, ///< Detect falling level on RXDn pin as start bit +} sci_uart_start_bit_t; + +/** Noise cancellation configuration. */ +typedef enum e_sci_uart_noise_cancellation +{ + SCI_UART_NOISE_CANCELLATION_DISABLE = 0x0, ///< Disable noise cancellation + SCI_UART_NOISE_CANCELLATION_ENABLE = 0x1, ///< Enable noise cancellation, The base clock signal divided by 1 + SCI_UART_NOISE_CANCELLATION_ENABLE_FILTER_CKS_DIV_1 = 0x2, ///< Enable noise cancellation, The on-chip baud rate generator source clock divided by 1 + SCI_UART_NOISE_CANCELLATION_ENABLE_FILTER_CKS_DIV_2 = 0x3, ///< Enable noise cancellation, The on-chip baud rate generator source clock divided by 2 + SCI_UART_NOISE_CANCELLATION_ENABLE_FILTER_CKS_DIV_4 = 0x4, ///< Enable noise cancellation, The on-chip baud rate generator source clock divided by 4 + SCI_UART_NOISE_CANCELLATION_ENABLE_FILTER_CKS_DIV_8 = 0x5, ///< Enable noise cancellation, The on-chip baud rate generator source clock divided by 8 +} sci_uart_noise_cancellation_t; + +/** RS-485 Enable/Disable. */ +typedef enum e_sci_uart_rs485_enable +{ + SCI_UART_RS485_DISABLE = 0, ///< RS-485 disabled. + SCI_UART_RS485_ENABLE = 1, ///< RS-485 enabled. +} sci_uart_rs485_enable_t; + +/** The polarity of the RS-485 DE signal. */ +typedef enum e_sci_uart_rs485_de_polarity +{ + SCI_UART_RS485_DE_POLARITY_HIGH = 0, ///< The DE signal is high when a write transfer is in progress. + SCI_UART_RS485_DE_POLARITY_LOW = 1, ///< The DE signal is low when a write transfer is in progress. +} sci_uart_rs485_de_polarity_t; + +/** Source clock selection options for SCI. */ +typedef enum e_sci_uart_clock_source +{ + SCI_UART_CLOCK_SOURCE_SCI0ASYNCCLK = 0, + SCI_UART_CLOCK_SOURCE_SCI1ASYNCCLK = 1, + SCI_UART_CLOCK_SOURCE_SCI2ASYNCCLK = 2, + SCI_UART_CLOCK_SOURCE_SCI3ASYNCCLK = 3, + SCI_UART_CLOCK_SOURCE_SCI4ASYNCCLK = 4, + SCI_UART_CLOCK_SOURCE_SCI5ASYNCCLK = 5, + SCI_UART_CLOCK_SOURCE_PCLKM = 6, +} sci_uart_clock_source_t; + +/** Baudrate calculation configuration. */ +typedef struct st_sci_uart_baud_calculation +{ + uint32_t baudrate; ///< Target baudrate + bool bitrate_modulation; ///< Whether bitrate modulation use or not + uint32_t baud_rate_error_x_1000; ///< Max baudrate percent error +} sci_uart_baud_calculation_t; + +/** Register settings to achieve a desired baud rate and modulation duty. */ +typedef struct st_sci_baud_setting_t +{ + union + { + uint32_t baudrate_bits; + + struct + { + uint32_t : 4; + 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_baud_setting_t; + +/** Configuration settings for controlling the DE signal for RS-485. */ +typedef struct st_sci_uart_rs485_setting +{ + sci_uart_rs485_enable_t enable; ///< Enable the DE signal. + sci_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_uart_rs485_setting_t; + +/** UART on SCI device Configuration */ +typedef struct st_sci_uart_extended_cfg +{ + sci_uart_clock_t clock; ///< The source clock for the baud-rate generator. If internal optionally output baud rate on SCK + sci_uart_start_bit_t rx_edge_start; ///< Start reception on falling edge + sci_uart_noise_cancellation_t noise_cancel; ///< Noise cancellation setting + + sci_baud_setting_t * p_baud_setting; ///< Register settings for a desired baud rate. + + sci_uart_rx_fifo_trigger_t rx_fifo_trigger; ///< Receive FIFO trigger level, unused if channel has no FIFO or if DMAC is used. + + bsp_io_port_pin_t flow_control_pin; ///< UART Driver Enable pin + sci_uart_flow_control_t flow_control; ///< CTS/RTS function + sci_uart_rs485_setting_t rs485_setting; ///< RS-485 settings. + + /** Clock source to generate SCK can either be selected as PCLKM or SCInASYNCCLK. */ + sci_uart_clock_source_t clock_source; +} sci_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; + +/** @endcond */ + +fsp_err_t R_SCI_UART_Open(uart_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg); +fsp_err_t R_SCI_UART_Read(uart_ctrl_t * const p_ctrl, uint8_t * const p_dest, uint32_t const bytes); +fsp_err_t R_SCI_UART_Write(uart_ctrl_t * const p_ctrl, uint8_t const * const p_src, uint32_t const bytes); +fsp_err_t R_SCI_UART_BaudSet(uart_ctrl_t * const p_ctrl, void const * const p_baud_setting); +fsp_err_t R_SCI_UART_InfoGet(uart_ctrl_t * const p_ctrl, uart_info_t * const p_info); +fsp_err_t R_SCI_UART_Close(uart_ctrl_t * const p_ctrl); +fsp_err_t R_SCI_UART_Abort(uart_ctrl_t * const p_ctrl, uart_dir_t communication_to_abort); +fsp_err_t R_SCI_UART_BaudCalculate(sci_uart_baud_calculation_t const * const p_baud_target, + sci_uart_clock_source_t clock_source, + sci_baud_setting_t * const p_baud_setting); +fsp_err_t R_SCI_UART_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); +fsp_err_t R_SCI_UART_ReadStop(uart_ctrl_t * const p_ctrl, uint32_t * remaining_bytes); + +/*******************************************************************************************************************//** + * @} (end addtogroup SCI_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/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/R9A07G084.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/R9A07G084.h new file mode 100644 index 00000000000..ae4df5d449c --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/R9A07G084.h @@ -0,0 +1,46278 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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 Renesas Electronics Corporation + * @{ + */ + +/** @addtogroup R9A07G084 + * @{ + */ + +#ifndef R9A07G084_H + #define R9A07G084_H + + #ifdef __cplusplus +extern "C" { + #endif + +/** @addtogroup Configuration_of_CMSIS + * @{ + */ + +/* =========================================================================================================================== */ +/* ================ Interrupt Number Definition ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ Processor and Core Peripheral Section ================ */ +/* =========================================================================================================================== */ + +/* ----------------Configuration of the Cortex-M Processor and Core Peripherals---------------- */ + #ifdef RENESAS_CORTEX_M4 + #define __MPU_PRESENT 1 /*!< MPU present or not */ + #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 __FPU_PRESENT 1 /*!< FPU present or not */ + #include "core_cm4.h" /*!< Cortex-M4 processor and core peripherals */ + #elif defined(RENESAS_CORTEX_M0PLUS) + #define __MPU_PRESENT 1 /*!< MPU present or not */ + #define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ + #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ + #define __FPU_PRESENT 0 /*!< FPU present or not */ + #define __VTOR_PRESENT 1 /*!< Vector table VTOR register available or not */ + #include "core_cm0plus.h" /*!< Cortex-M0 processor and core peripherals */ + #elif defined(RENESAS_CORTEX_M23) + #define __MPU_PRESENT 1 /*!< MPU present or not */ + #define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ + #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ + #define __FPU_PRESENT 0 /*!< FPU present or not */ + #define __VTOR_PRESENT 1 /*!< Vector table VTOR register available or not */ + #include "core_cm23.h" /*!< Cortex-M23 processor and core peripherals */ + #elif defined(RENESAS_CORTEX_M33) + #define __MPU_PRESENT 1 /*!< MPU present or not */ + #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 __FPU_PRESENT 1 /*!< FPU present or not */ + #define __VTOR_PRESENT 1 /*!< Vector table VTOR register available or not */ + #define __DSP_PRESENT 1 /*!< DSP present or not */ + #include "core_cm33.h" /*!< Cortex-M33 processor and core peripherals */ + #elif defined(RENESAS_CORTEX_R52) + #define __FPU_PRESENT 1 /*!< FPU present or not */ + #include "core_cr52.h" /*!< Cortex-R52 processor and core peripherals */ + #endif + + #include "system.h" /*!< 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_CANFD_CFDC [CFDC] (CANFD Channel [0..1] Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t NCFG; /*!< (@ 0x00000000) Channel n Nominal Bit Rate Configuration Register */ + + struct + { + __IOM uint32_t NBRP : 10; /*!< [9..0] Nominal Bit Rate Prescaler */ + __IOM uint32_t NSJW : 7; /*!< [16..10] Nominal Bit Rate Resynchronization Jump Width Control */ + __IOM uint32_t NTSEG1 : 8; /*!< [24..17] Nominal Bit Rate Time Segment 1 Control */ + __IOM uint32_t NTSEG2 : 7; /*!< [31..25] Nominal Bit Rate Time Segment 2 Control */ + } NCFG_b; + }; + + union + { + __IOM uint32_t CTR; /*!< (@ 0x00000004) Channel n Control Register */ + + struct + { + __IOM uint32_t CHMDC : 2; /*!< [1..0] Mode Select */ + __IOM uint32_t CSLPR : 1; /*!< [2..2] Channel Stop Mode */ + __IOM uint32_t RTBO : 1; /*!< [3..3] Forcible 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] Bus-Off Recovery Mode Select */ + __IOM uint32_t ERRD : 1; /*!< [23..23] Error Display Mode Select */ + __IOM uint32_t CTME : 1; /*!< [24..24] Communication Test Mode Enable */ + __IOM uint32_t CTMS : 2; /*!< [26..25] Communication Test Mode Select */ + uint32_t : 3; + __IOM uint32_t CRCT : 1; /*!< [30..30] CRC Error Test Enable */ + __IOM uint32_t ROM : 1; /*!< [31..31] Restricted Operation Mode Enable */ + } CTR_b; + }; + + union + { + __IOM uint32_t STS; /*!< (@ 0x00000008) Channel n Status Register */ + + struct + { + __IM uint32_t CRSTSTS : 1; /*!< [0..0] Channel Reset Status Flag */ + __IM uint32_t CHLTSTS : 1; /*!< [1..1] Channel Halt Status Flag */ + __IM uint32_t CSLPSTS : 1; /*!< [2..2] Channel Stop Status Flag */ + __IM uint32_t EPSTS : 1; /*!< [3..3] Error Passive Status Flag */ + __IM uint32_t BOSTS : 1; /*!< [4..4] Bus-Off Status Flag */ + __IM uint32_t TRMSTS : 1; /*!< [5..5] Transmit Status Flag */ + __IM uint32_t RECSTS : 1; /*!< [6..6] Receive Status Flag */ + __IM uint32_t COMSTS : 1; /*!< [7..7] Communication Status Flag */ + __IOM uint32_t ESIF : 1; /*!< [8..8] Error State Indication Flag */ + uint32_t : 7; + __IM uint32_t REC : 8; /*!< [23..16] Reception Error Count */ + __IM uint32_t TEC : 8; /*!< [31..24] Transmission Error Count */ + } STS_b; + }; + + union + { + __IOM uint32_t ERFL; /*!< (@ 0x0000000C) Channel n Error Flag Register */ + + 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 Flag */ + __IOM uint32_t FERR : 1; /*!< [9..9] Form Error Flag */ + __IOM uint32_t AERR : 1; /*!< [10..10] Acknowledge Error Flag */ + __IOM uint32_t CERR : 1; /*!< [11..11] CRC Error Flag */ + __IOM uint32_t B1ERR : 1; /*!< [12..12] Recessive Bit Error Flag */ + __IOM uint32_t B0ERR : 1; /*!< [13..13] Dominant Bit Error Flag */ + __IOM uint32_t ADERR : 1; /*!< [14..14] Acknowledge Delimiter Error Flag */ + uint32_t : 1; + __IM uint32_t CRCREG : 15; /*!< [30..16] CRC Calculation Data (CRC length: 15 bits) */ + 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 Bit Rate Configuration Register */ + + struct + { + __IOM uint32_t DBRP : 8; /*!< [7..0] Data Bit Rate Prescaler Division Ratio Setting */ + __IOM uint32_t DTSEG1 : 5; /*!< [12..8] Data Bit Rate Time Segment 1 Control */ + uint32_t : 3; + __IOM uint32_t DTSEG2 : 4; /*!< [19..16] Data Bit Rate Time Segment 2 Control */ + uint32_t : 4; + __IOM uint32_t DSJW : 4; /*!< [27..24] Data Bit Rate Resynchronization Jump Width Control */ + uint32_t : 4; + } DCFG_b; + }; + + union + { + __IOM uint32_t FDCFG; /*!< (@ 0x00000004) Channel n 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] Transmitter 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 */ + __IOM uint32_t GWEN : 1; /*!< [24..24] CAN2.0, CAN-FD Multi Gateway Enable */ + __IOM uint32_t GWFDF : 1; /*!< [25..25] Gateway FDF Configuration Bit */ + __IOM uint32_t GWBRS : 1; /*!< [26..26] Gateway BRS Configuration Bit */ + uint32_t : 1; + __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 */ + __IOM uint32_t CFDTE : 1; /*!< [31..31] CAN-FD Frame Distinction Enable */ + } FDCFG_b; + }; + + union + { + __IOM uint32_t FDCTR; /*!< (@ 0x00000008) Channel n 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 n 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 Flag */ + __IOM uint32_t SOCO : 1; /*!< [9..9] Successful Occurrence Counter Overflow Flag */ + 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 */ + __IM uint32_t SOC : 8; /*!< [31..24] Successful Occurrence Counter */ + } FDSTS_b; + }; + + union + { + __IM uint32_t FDCRC; /*!< (@ 0x00000010) Channel n CAN-FD CRC Register */ + + struct + { + __IM uint32_t CRCREG : 21; /*!< [20..0] CRC Register Value */ + uint32_t : 4; + __IM uint32_t SCNT : 4; /*!< [28..25] Stuff Bit Count */ + uint32_t : 3; + } FDCRC_b; + }; + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t BLCT; /*!< (@ 0x00000018) Channel n Bus Load Control Register */ + + struct + { + __IOM uint32_t BLCE : 1; /*!< [0..0] Bus Load Counter Enable */ + uint32_t : 7; + __OM uint32_t BLCLD : 1; /*!< [8..8] Bus Load Counter Load */ + uint32_t : 23; + } BLCT_b; + }; + + union + { + __IM uint32_t BLSTS; /*!< (@ 0x0000001C) Channel n Bus Load Status Register */ + + struct + { + uint32_t : 3; + __IM uint32_t BLC : 29; /*!< [31..3] Bus Load Counter Status */ + } BLSTS_b; + }; +} 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 Register n */ + + 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 Register n */ + + 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 Register + * n */ + + struct + { + __IOM uint32_t GAFLDLC : 4; /*!< [3..0] Global Acceptance Filter List DLC Field */ + __IOM uint32_t GAFLSRD0 : 1; /*!< [4..4] Global Acceptance Filter List Select Routing Destination + * 0 */ + __IOM uint32_t GAFLSRD1 : 1; /*!< [5..5] Global Acceptance Filter List Select Routing Destination + * 1 */ + __IOM uint32_t GAFLSRD2 : 1; /*!< [6..6] Global Acceptance Filter List Select Routing Destination + * 2 */ + __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 */ + } P0_b; + }; + + union + { + __IOM uint32_t P1; /*!< (@ 0x0000000C) Global Acceptance Filter List Pointer 1 Register + * n */ + + struct + { + __IOM uint32_t GAFLFDP : 14; /*!< [13..0] Global Acceptance Filter List FIFO Direction Pointer */ + uint32_t : 18; + } P1_b; + }; +} R_CANFD_CFDGAFL_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_CANFD_CFDRM [CFDRM] (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 Bit */ + __IM uint32_t RMIDE : 1; /*!< [31..31] RX Message Buffer IDE Bit */ + } ID_b; + }; + + union + { + __IOM uint32_t PTR; /*!< (@ 0x00000004) RX Message Buffer Pointer Register */ + + struct + { + __IOM uint32_t RMTS : 16; /*!< [15..0] RX Message Buffer Timestamp Field */ + uint32_t : 12; + __IOM uint32_t RMDLC : 4; /*!< [31..28] RX Message Buffer DLC Field */ + } PTR_b; + }; + + union + { + __IOM uint32_t FDSTS; /*!< (@ 0x00000008) RX Message Buffer CAN-FD Status Register */ + + struct + { + __IOM uint32_t RMESI : 1; /*!< [0..0] Error State Indicator bit */ + __IOM uint32_t RMBRS : 1; /*!< [1..1] Bit Rate Switch bit */ + __IOM uint32_t RMFDF : 1; /*!< [2..2] CAN FD Format bit */ + uint32_t : 5; + __IOM uint32_t RMIFL : 2; /*!< [9..8] RX Message Buffer Information Label Field */ + uint32_t : 6; + __IOM uint32_t RMPTR : 16; /*!< [31..16] RX Message Buffer Pointer Field */ + } FDSTS_b; + }; + + union + { + union + { + __IM uint32_t DF_WD[16]; /*!< (@ 0x0000000C) RX Message Buffer Data Field p Register n (p + * = 0 to 15, n = 0 to 31) */ + + struct + { + __IM uint32_t RMDB_LL : 8; /*!< [7..0] RX Message Buffer Data Byte (4 * p) */ + __IM uint32_t RMDB_LH : 8; /*!< [15..8] RX Message Buffer Data Byte (4 * p + 1) */ + __IM uint32_t RMDB_HL : 8; /*!< [23..16] RX Message Buffer Data Byte (4 * p + 2) */ + __IM uint32_t RMDB_HH : 8; /*!< [31..24] RX Message Buffer Data Byte (4 * p + 3) */ + } DF_WD_b[16]; + }; + + union + { + __IM uint8_t DF[64]; /*!< (@ 0x0000000C) RX Message Buffer Data Field p Register n (p + * = 0 to 63, n = 0 to 31) */ + + struct + { + __IM uint8_t RMDB : 8; /*!< [7..0] RX Message Buffer Data Byte */ + } DF_b[64]; + }; + }; + __IM uint32_t RESERVED[13]; +} R_CANFD_CFDRM_Type; /*!< Size = 128 (0x80) */ + +/** + * @brief R_CANFD_CFDRF [CFDRF] (RX FIFO Access Registers) + */ +typedef struct +{ + union + { + __IM uint32_t ID; /*!< (@ 0x00000000) RX FIFO Access ID Register n */ + + 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 bit */ + __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 n */ + + struct + { + __IM uint32_t RFTS : 16; /*!< [15..0] RX FIFO Timestamp Value */ + 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 n */ + + 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 CFDRFPTR : 16; /*!< [31..16] RX FIFO Buffer Pointer Field */ + } FDSTS_b; + }; + + union + { + union + { + __IM uint32_t DF_WD[16]; /*!< (@ 0x0000000C) RX FIFO Access Data Field p Register n (p = 0 + * to 15, n = 0 to 7) */ + + struct + { + __IM uint32_t RFDB_LL : 8; /*!< [7..0] RX FIFO Buffer Data Byte (4 * p) */ + __IM uint32_t RFDB_LH : 8; /*!< [15..8] RX FIFO Buffer Data Byte (4 * p + 1) */ + __IM uint32_t RFDB_HL : 8; /*!< [23..16] RX FIFO Buffer Data Byte (4 * p + 2) */ + __IM uint32_t RFDB_HH : 8; /*!< [31..24] RX FIFO Buffer Data Byte (4 * p + 3) */ + } DF_WD_b[16]; + }; + + union + { + __IM uint8_t DF[64]; /*!< (@ 0x0000000C) RX FIFO Access Data Field p Register n (p = 0 + * to 63, n = 0 to 7) */ + + struct + { + __IM uint8_t RFDB : 8; /*!< [7..0] RX FIFO Buffer Data Byte */ + } DF_b[64]; + }; + }; + __IM uint32_t RESERVED[13]; +} R_CANFD_CFDRF_Type; /*!< Size = 128 (0x80) */ + +/** + * @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 */ + __IOM uint32_t THLEN : 1; /*!< [29..29] THL Entry Enable */ + __IOM uint32_t CFRTR : 1; /*!< [30..30] Common FIFO Buffer RTR bit */ + __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 n */ + + struct + { + __IOM uint32_t CFTS : 16; /*!< [15..0] Common FIFO Timestamp Value */ + uint32_t : 12; + __IOM uint32_t CFDLC : 4; /*!< [31..28] Common FIFO Buffer DLC Field */ + } PTR_b; + }; + + union + { + __IOM uint32_t FDCSTS; /*!< (@ 0x00000008) Common FIFO Access CAN-FD Control/Status Register + * n */ + + 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 */ + } FDCSTS_b; + }; + + union + { + union + { + __IOM uint32_t DF_WD[16]; /*!< (@ 0x0000000C) Common FIFO Access Data Field p Register n (p + * = 0 to 15, n = 0 to 5) */ + + struct + { + __IOM uint32_t CFDB_LL : 8; /*!< [7..0] Common FIFO Buffer Data Bytes (4 * p) */ + __IOM uint32_t CFDB_LH : 8; /*!< [15..8] Common FIFO Buffer Data Bytes (4 * p + 1) */ + __IOM uint32_t CFDB_HL : 8; /*!< [23..16] Common FIFO Buffer Data Bytes (4 * p + 2) */ + __IOM uint32_t CFDB_HH : 8; /*!< [31..24] Common FIFO Buffer Data Bytes (4 * p + 3) */ + } DF_WD_b[16]; + }; + + union + { + __IOM uint8_t DF[64]; /*!< (@ 0x0000000C) Common FIFO Access Data Field p Register n (p + * = 0 to 63, n = 0 to 5) */ + + struct + { + __IOM uint8_t CFDB : 8; /*!< [7..0] Common FIFO Buffer Data Bytes */ + } DF_b[64]; + }; + }; + __IM uint32_t RESERVED[13]; +} R_CANFD_CFDCF_Type; /*!< Size = 128 (0x80) */ + +/** + * @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 Number */ + uint32_t : 5; + __IM uint32_t TGW : 1; /*!< [15..15] Transmit Gateway Buffer Indication */ + __IM uint32_t TMTS : 16; /*!< [31..16] Transmit Timestamp */ + } ACC0_b; + }; + + union + { + __IM 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_CFDTM [CFDTM] (TX Message Buffer Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t ID; /*!< (@ 0x00000000) TX Message Buffer ID Register n (n = 0 to 127) */ + + struct + { + __IOM uint32_t TMID : 29; /*!< [28..0] TX Message Buffer ID Field */ + __IOM uint32_t THLEN : 1; /*!< [29..29] Tx History List Entry */ + __IOM uint32_t TMRTR : 1; /*!< [30..30] TX Message Buffer RTR bit */ + __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 n (n = 0 to + * 127) */ + + struct + { + uint32_t : 28; + __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 n (n + * = 0 to 127) */ + + 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 + { + union + { + __IOM uint32_t DF_WD[16]; /*!< (@ 0x0000000C) TX Message Buffer Data Field p Register n (p + * = 0 to 15, n = 0 to 127) */ + + struct + { + __IOM uint32_t TMDB_LL : 8; /*!< [7..0] TX Message Buffer Data Byte (4 * p) */ + __IOM uint32_t TMDB_LH : 8; /*!< [15..8] TX Message Buffer Data Byte (4 * p + 1) */ + __IOM uint32_t TMDB_HL : 8; /*!< [23..16] TX Message Buffer Data Byte (4 * p + 2) */ + __IOM uint32_t TMDB_HH : 8; /*!< [31..24] TX Message Buffer Data Byte (4 * p + 3) */ + } DF_WD_b[16]; + }; + + union + { + __IOM uint8_t DF[64]; /*!< (@ 0x0000000C) TX Message Buffer Data Field p Register n (p + * = 0 to 63, n = 0 to 5) */ + + struct + { + __IOM uint8_t TMDB : 8; /*!< [7..0] TX Message Buffer Data Bytes */ + } DF_b[64]; + }; + }; + __IM uint32_t RESERVED[13]; +} R_CANFD_CFDTM_Type; /*!< Size = 128 (0x80) */ + +/** + * @brief R_CMT_UNT_CM [CM] (2 Timer Start Register Pairs) + */ +typedef struct +{ + union + { + __IOM uint16_t CR; /*!< (@ 0x00000000) Compare Match Timer Control Register */ + + struct + { + __IOM uint16_t CKS : 2; /*!< [1..0] Clock Select */ + uint16_t : 4; + __IOM uint16_t CMIE : 1; /*!< [6..6] Compare Match Interrupt Enable */ + uint16_t : 9; + } CR_b; + }; + __IOM uint16_t CNT; /*!< (@ 0x00000002) Compare Match Timer Counter Register */ + __IOM uint16_t COR; /*!< (@ 0x00000004) Compare Match Timer Constant Register */ +} R_CMT_UNT_CM_Type; /*!< Size = 6 (0x6) */ + +/** + * @brief R_CMT_UNT [UNT] (3 Timer Start Register Units) + */ +typedef struct +{ + union + { + __IOM uint16_t CMSTR0; /*!< (@ 0x00000000) Compare Match Timer Start Register */ + + struct + { + __IOM uint16_t STR0 : 1; /*!< [0..0] CMT Channel n Count Start */ + __IOM uint16_t STR1 : 1; /*!< [1..1] CMT Channel n+1 Count Start */ + uint16_t : 14; + } CMSTR0_b; + }; + __IOM R_CMT_UNT_CM_Type CM[2]; /*!< (@ 0x00000002) 2 Timer Start Register Pairs */ + __IM uint16_t RESERVED[505]; +} R_CMT_UNT_Type; /*!< Size = 1024 (0x400) */ + +/** + * @brief R_IIC0_SAR [SAR] (Slave Address Registers) + */ +typedef struct +{ + union + { + __IOM uint8_t L; /*!< (@ 0x00000000) Slave Address Register L y (y = 0 to 2) */ + + struct + { + __IOM uint8_t SVA0 : 1; /*!< [0..0] 10-bit Address LSB */ + __IOM uint8_t SVA : 7; /*!< [7..1] 7-bit Address/10-bit Address Lower Bits */ + } L_b; + }; + + union + { + __IOM uint8_t U; /*!< (@ 0x00000001) Slave Address Register U y (y = 0 to 2) */ + + struct + { + __IOM uint8_t FS : 1; /*!< [0..0] 7-bit/10-bit Address Format Select */ + __IOM uint8_t SVA : 2; /*!< [2..1] 10-bit Address Upper Bits */ + uint8_t : 5; + } U_b; + }; +} R_IIC0_SAR_Type; /*!< Size = 2 (0x2) */ + +/** + * @brief R_DMAC0_GRP_CH_N [N] (DMAC Address Registers [0..1]) + */ +typedef struct +{ + __IOM uint32_t SA; /*!< (@ 0x00000000) Nextm0 Source Address Register n (m = 0, 1) (n + * = 0 to 7) */ + __IOM uint32_t DA; /*!< (@ 0x00000004) Nextm0 Destination Address Register n (m = 0, + * 1) (n = 0 to 7) */ + __IOM uint32_t TB; /*!< (@ 0x00000008) Nextm0 Transaction Byte Register n (m = 0, 1) + * (n = 0 to 7) */ +} R_DMAC0_GRP_CH_N_Type; /*!< Size = 12 (0xc) */ + +/** + * @brief R_DMAC0_GRP_CH [CH] (DMAC channel Control Register [0..7]) + */ +typedef struct +{ + __IOM R_DMAC0_GRP_CH_N_Type N[2]; /*!< (@ 0x00000000) DMAC Address Registers [0..1] */ + __IM uint32_t CRSA; /*!< (@ 0x00000018) Current Source Address Register n (n = 0 to 7) */ + __IM uint32_t CRDA; /*!< (@ 0x0000001C) Current Destination Address Register n (n = 0 + * to 7) */ + __IM uint32_t CRTB; /*!< (@ 0x00000020) Current Transaction Byte Register n (n = 0 to + * 7) */ + + union + { + __IM uint32_t CHSTAT; /*!< (@ 0x00000024) Channel Status Register n (n = 0 to 7) */ + + struct + { + __IM uint32_t EN : 1; /*!< [0..0] DMA Activation Enable */ + __IM uint32_t RQST : 1; /*!< [1..1] DMA Transfer Request */ + __IM uint32_t TACT : 1; /*!< [2..2] DMAC Operating Status */ + __IM uint32_t SUS : 1; /*!< [3..3] Suspend */ + __IM uint32_t ER : 1; /*!< [4..4] DMA Error */ + __IM uint32_t END : 1; /*!< [5..5] DMA Transfer Completion Interrupt */ + __IM uint32_t TC : 1; /*!< [6..6] DMA Transfer Completion (total number of data bytes for + * transaction) */ + __IM uint32_t SR : 1; /*!< [7..7] Next Register Select */ + __IM uint32_t DL : 1; /*!< [8..8] Descriptor Load */ + __IM uint32_t DW : 1; /*!< [9..9] Descriptor Write Back */ + __IM uint32_t DER : 1; /*!< [10..10] Descriptor Error */ + __IM uint32_t MODE : 1; /*!< [11..11] DMA Mode */ + uint32_t : 4; + __IM uint32_t INTM : 1; /*!< [16..16] DMA Transfer Completion Interrupt Request Mask */ + uint32_t : 15; + } CHSTAT_b; + }; + + union + { + __IOM uint32_t CHCTRL; /*!< (@ 0x00000028) Channel Control Register n (n = 0 to 7) */ + + struct + { + __IOM uint32_t SETEN : 1; /*!< [0..0] DMA Activation Enable */ + __IOM uint32_t CLREN : 1; /*!< [1..1] DMA Activation Enable Clear */ + __IOM uint32_t STG : 1; /*!< [2..2] Software Trigger */ + __IOM uint32_t SWRST : 1; /*!< [3..3] Software Reset */ + __IOM uint32_t CLRRQ : 1; /*!< [4..4] DMA Transfer Request Clear */ + __IOM uint32_t CLREND : 1; /*!< [5..5] END Clear */ + __IOM uint32_t CLRTC : 1; /*!< [6..6] TC Clear */ + uint32_t : 1; + __IOM uint32_t SETSUS : 1; /*!< [8..8] Suspend Request */ + __IOM uint32_t CLRSUS : 1; /*!< [9..9] Suspend Clear */ + uint32_t : 6; + __IOM uint32_t SETINTM : 1; /*!< [16..16] DMA Transfer Completion Interrupt Request Mask */ + __IOM uint32_t CLRINTM : 1; /*!< [17..17] DMA Transfer Completion Interrupt Request Mask Clear */ + uint32_t : 14; + } CHCTRL_b; + }; + + union + { + __IOM uint32_t CHCFG; /*!< (@ 0x0000002C) Channel Configuration Register n (n = 0 to 7) */ + + struct + { + __IOM uint32_t SEL : 3; /*!< [2..0] Pin Select */ + __IOM uint32_t REQD : 1; /*!< [3..3] DMA Activation Request Source Select */ + __IOM uint32_t LOEN : 1; /*!< [4..4] L Detection Enable */ + __IOM uint32_t HIEN : 1; /*!< [5..5] H Detection Enable */ + __IOM uint32_t LVL : 1; /*!< [6..6] Level Detection Enable */ + uint32_t : 1; + __IOM uint32_t AM : 3; /*!< [10..8] ACK Mode */ + uint32_t : 1; + __IOM uint32_t SDS : 4; /*!< [15..12] Source Data Size */ + __IOM uint32_t DDS : 4; /*!< [19..16] Destination Data Size */ + __IOM uint32_t SAD : 1; /*!< [20..20] Source Address Count Direction */ + __IOM uint32_t DAD : 1; /*!< [21..21] Destination Address Count Direction */ + __IOM uint32_t TM : 1; /*!< [22..22] Transfer Mode */ + uint32_t : 1; + __IOM uint32_t DEM : 1; /*!< [24..24] DMA Transfer Completion Interrupt Mask */ + __IOM uint32_t TCM : 1; /*!< [25..25] TEND Mask */ + uint32_t : 1; + __IOM uint32_t SBE : 1; /*!< [27..27] Buffer Flush Enable */ + __IOM uint32_t RSEL : 1; /*!< [28..28] Next Register Select */ + __IOM uint32_t RSW : 1; /*!< [29..29] RSEL Reverse */ + __IOM uint32_t REN : 1; /*!< [30..30] Register Set Enable */ + __IOM uint32_t DMS : 1; /*!< [31..31] DMA Mode Select */ + } CHCFG_b; + }; + + union + { + __IOM uint32_t CHITVL; /*!< (@ 0x00000030) Channel Interval Register n (n = 0 to 7) */ + + struct + { + __IOM uint32_t ITVL : 16; /*!< [15..0] Interval */ + uint32_t : 16; + } CHITVL_b; + }; + + union + { + __IOM uint32_t CHEXT; /*!< (@ 0x00000034) Channel Extension Register n (n = 0 to 7) */ + + struct + { + __IOM uint32_t SPR : 3; /*!< [2..0] Source PROT */ + uint32_t : 1; + __IOM uint32_t SCA : 4; /*!< [7..4] Source CACHE */ + __IOM uint32_t DPR : 3; /*!< [10..8] Destination PROT */ + uint32_t : 1; + __IOM uint32_t DCA : 4; /*!< [15..12] Destination CACHE */ + uint32_t : 16; + } CHEXT_b; + }; + __IOM uint32_t NXLA; /*!< (@ 0x00000038) Next Link Address Register n (n = 0 to 7) */ + __IM uint32_t CRLA; /*!< (@ 0x0000003C) Current Link Address Register n (n = 0 to 7) */ +} R_DMAC0_GRP_CH_Type; /*!< Size = 64 (0x40) */ + +/** + * @brief R_DMAC0_GRP [GRP] (8 channel Registers) + */ +typedef struct +{ + __IOM R_DMAC0_GRP_CH_Type CH[8]; /*!< (@ 0x00000000) DMAC channel Control Register [0..7] */ + __IM uint32_t RESERVED[64]; + + union + { + __IOM uint32_t DCTRL; /*!< (@ 0x00000300) DMA Control Register A */ + + struct + { + __IOM uint32_t PR : 1; /*!< [0..0] Priority Control Select */ + __IOM uint32_t LVINT : 1; /*!< [1..1] Sets the interrupt output mode. */ + uint32_t : 30; + } DCTRL_b; + }; + __IM uint32_t RESERVED1[3]; + + union + { + __IM uint32_t DSTAT_EN; /*!< (@ 0x00000310) DMA Status EN Register A */ + + struct + { + __IM uint32_t EN00 : 1; /*!< [0..0] Channel 0 EN */ + __IM uint32_t EN01 : 1; /*!< [1..1] Channel 1 EN */ + __IM uint32_t EN02 : 1; /*!< [2..2] Channel 2 EN */ + __IM uint32_t EN03 : 1; /*!< [3..3] Channel 3 EN */ + __IM uint32_t EN04 : 1; /*!< [4..4] Channel 4 EN */ + __IM uint32_t EN05 : 1; /*!< [5..5] Channel 5 EN */ + __IM uint32_t EN06 : 1; /*!< [6..6] Channel 6 EN */ + __IM uint32_t EN07 : 1; /*!< [7..7] Channel 7 EN */ + uint32_t : 24; + } DSTAT_EN_b; + }; + + union + { + __IM uint32_t DSTAT_ER; /*!< (@ 0x00000314) DMA Status ER Register A */ + + struct + { + __IM uint32_t ER00 : 1; /*!< [0..0] Channel 0 ER */ + __IM uint32_t ER01 : 1; /*!< [1..1] Channel 1 ER */ + __IM uint32_t ER02 : 1; /*!< [2..2] Channel 2 ER */ + __IM uint32_t ER03 : 1; /*!< [3..3] Channel 3 ER */ + __IM uint32_t ER04 : 1; /*!< [4..4] Channel 4 ER */ + __IM uint32_t ER05 : 1; /*!< [5..5] Channel 5 ER */ + __IM uint32_t ER06 : 1; /*!< [6..6] Channel 6 ER */ + __IM uint32_t ER07 : 1; /*!< [7..7] Channel 7 ER */ + uint32_t : 24; + } DSTAT_ER_b; + }; + + union + { + __IM uint32_t DSTAT_END; /*!< (@ 0x00000318) DMA Status END Register A */ + + struct + { + __IM uint32_t END00 : 1; /*!< [0..0] Channel 0 END */ + __IM uint32_t END01 : 1; /*!< [1..1] Channel 1 END */ + __IM uint32_t END02 : 1; /*!< [2..2] Channel 2 END */ + __IM uint32_t END03 : 1; /*!< [3..3] Channel 3 END */ + __IM uint32_t END04 : 1; /*!< [4..4] Channel 4 END */ + __IM uint32_t END05 : 1; /*!< [5..5] Channel 5 END */ + __IM uint32_t END06 : 1; /*!< [6..6] Channel 6 END */ + __IM uint32_t END07 : 1; /*!< [7..7] Channel 7 END */ + uint32_t : 24; + } DSTAT_END_b; + }; + __IM uint32_t RESERVED2; + + union + { + __IM uint32_t DSTAT_SUS; /*!< (@ 0x00000320) DMA Status SUS Register A */ + + struct + { + __IM uint32_t SUS00 : 1; /*!< [0..0] Channel 0 SUS */ + __IM uint32_t SUS01 : 1; /*!< [1..1] Channel 1 SUS */ + __IM uint32_t SUS02 : 1; /*!< [2..2] Channel 2 SUS */ + __IM uint32_t SUS03 : 1; /*!< [3..3] Channel 3 SUS */ + __IM uint32_t SUS04 : 1; /*!< [4..4] Channel 4 SUS */ + __IM uint32_t SUS05 : 1; /*!< [5..5] Channel 5 SUS */ + __IM uint32_t SUS06 : 1; /*!< [6..6] Channel 6 SUS */ + __IM uint32_t SUS07 : 1; /*!< [7..7] Channel 7 SUS */ + uint32_t : 24; + } DSTAT_SUS_b; + }; +} R_DMAC0_GRP_Type; /*!< Size = 804 (0x324) */ + +/** + * @brief R_PORT_DRCTL [DRCTL] (I/O Buffer [0..24] Function Switching Register) + */ +typedef struct +{ + union + { + __IOM uint32_t L; /*!< (@ 0x00000000) I/O Buffer m Function Switching Register 0-3 */ + + struct + { + __IOM uint32_t DRV0 : 2; /*!< [1..0] Pm_0 Driving Ability Control */ + __IOM uint32_t PUD0 : 2; /*!< [3..2] Pm_0 Pull-Up/Down Control */ + __IOM uint32_t SMT0 : 1; /*!< [4..4] Pm_0 Schmitt Trigger Control */ + __IOM uint32_t SR0 : 1; /*!< [5..5] Pm_0 Slew Rate Control */ + uint32_t : 2; + __IOM uint32_t DRV1 : 2; /*!< [9..8] Pm_1 Driving Ability Control */ + __IOM uint32_t PUD1 : 2; /*!< [11..10] Pm_1 Pull-Up/Down Control */ + __IOM uint32_t SMT1 : 1; /*!< [12..12] Pm_1 Schmitt Trigger Control */ + __IOM uint32_t SR1 : 1; /*!< [13..13] Pm_1 Slew Rate Control */ + uint32_t : 2; + __IOM uint32_t DRV2 : 2; /*!< [17..16] Pm_2 Driving Ability Control */ + __IOM uint32_t PUD2 : 2; /*!< [19..18] Pm_2 Pull-Up/Down Control */ + __IOM uint32_t SMT2 : 1; /*!< [20..20] Pm_2 Schmitt Trigger Control */ + __IOM uint32_t SR2 : 1; /*!< [21..21] Pm_2 Slew Rate Control */ + uint32_t : 2; + __IOM uint32_t DRV3 : 2; /*!< [25..24] Pm_3 Driving Ability Control */ + __IOM uint32_t PUD3 : 2; /*!< [27..26] Pm_3 Pull-Up/Down Control */ + __IOM uint32_t SMT3 : 1; /*!< [28..28] Pm_3 Schmitt Trigger Control */ + __IOM uint32_t SR3 : 1; /*!< [29..29] Pm_3 Slew Rate Control */ + uint32_t : 2; + } L_b; + }; + + union + { + __IOM uint32_t H; /*!< (@ 0x00000004) I/O Buffer m Function Switching Register 4-7 */ + + struct + { + __IOM uint32_t DRV4 : 2; /*!< [1..0] Pm_4 Driving Ability Control */ + __IOM uint32_t PUD4 : 2; /*!< [3..2] Pm_4 Pull-Up/Down Control */ + __IOM uint32_t SMT4 : 1; /*!< [4..4] Pm_4 Schmitt Trigger Control */ + __IOM uint32_t SR4 : 1; /*!< [5..5] Pm_4 Slew Rate Control */ + uint32_t : 2; + __IOM uint32_t DRV5 : 2; /*!< [9..8] Pm_5 Driving Ability Control */ + __IOM uint32_t PUD5 : 2; /*!< [11..10] Pm_5 Pull-Up/Down Control */ + __IOM uint32_t SMT5 : 1; /*!< [12..12] Pm_5 Schmitt Trigger Control */ + __IOM uint32_t SR5 : 1; /*!< [13..13] Pm_5 Slew Rate Control */ + uint32_t : 2; + __IOM uint32_t DRV6 : 2; /*!< [17..16] Pm_6 Driving Ability Control */ + __IOM uint32_t PUD6 : 2; /*!< [19..18] Pm_6 Pull-Up/Down Control */ + __IOM uint32_t SMT6 : 1; /*!< [20..20] Pm_6 Schmitt Trigger Control */ + __IOM uint32_t SR6 : 1; /*!< [21..21] Pm_6 Slew Rate Control */ + uint32_t : 2; + __IOM uint32_t DRV7 : 2; /*!< [25..24] Pm_7 Driving Ability Control */ + __IOM uint32_t PUD7 : 2; /*!< [27..26] Pm_7 Pull-Up/Down Control */ + __IOM uint32_t SMT7 : 1; /*!< [28..28] Pm_7 Schmitt Trigger Control */ + __IOM uint32_t SR7 : 1; /*!< [29..29] Pm_7 Slew Rate Control */ + uint32_t : 2; + } H_b; + }; +} R_PORT_DRCTL_Type; /*!< Size = 8 (0x8) */ + +/** + * @brief R_PORT_NSR_ELC_PDBF [ELC_PDBF] (ELC Port Buffer Register [0..1]) + */ +typedef struct +{ + union + { + __IOM uint8_t BY; /*!< (@ 0x00000000) ELC Port Buffer Register n */ + + struct + { + __IOM uint8_t PB0 : 1; /*!< [0..0] Port Buffer 0 */ + __IOM uint8_t PB1 : 1; /*!< [1..1] Port Buffer 1 */ + __IOM uint8_t PB2 : 1; /*!< [2..2] Port Buffer 2 */ + __IOM uint8_t PB3 : 1; /*!< [3..3] Port Buffer 3 */ + __IOM uint8_t PB4 : 1; /*!< [4..4] Port Buffer 4 */ + __IOM uint8_t PB5 : 1; /*!< [5..5] Port Buffer 5 */ + __IOM uint8_t PB6 : 1; /*!< [6..6] Port Buffer 6 */ + __IOM uint8_t PB7 : 1; /*!< [7..7] Port Buffer 7 */ + } BY_b; + }; + __IM uint8_t RESERVED[3]; +} R_PORT_NSR_ELC_PDBF_Type; /*!< Size = 4 (0x4) */ + +/** + * @brief R_ETHSW_PTP_SWTM [SWTM] (Ethernet Switch Timer output pins 0-3 Registers) + */ +typedef struct +{ + union + { + __IOM uint32_t EN; /*!< (@ 0x00000000) PTP Timer Pulse Output Enable n Register */ + + struct + { + __IOM uint32_t OUTEN : 1; /*!< [0..0] Enable ETHSW_PTPOUTn Signal Output */ + uint32_t : 31; + } EN_b; + }; + + union + { + __IOM uint32_t STSEC; /*!< (@ 0x00000004) PTP Timer Pulse Start Second n Register */ + + struct + { + __IOM uint32_t STSEC : 32; /*!< [31..0] STSEC */ + } STSEC_b; + }; + + union + { + __IOM uint32_t STNS; /*!< (@ 0x00000008) PTP Timer Pulse Start Nanosecond n Register */ + + struct + { + __IOM uint32_t STNS : 32; /*!< [31..0] Start Time by Nanosecond */ + } STNS_b; + }; + + union + { + __IOM uint32_t PSEC; /*!< (@ 0x0000000C) PTP Timer Pulse Period Second n Register */ + + struct + { + __IOM uint32_t PSEC : 32; /*!< [31..0] PSEC */ + } PSEC_b; + }; + + union + { + __IOM uint32_t PNS; /*!< (@ 0x00000010) PTP Timer Pulse Period Nanosecond n Register */ + + struct + { + __IOM uint32_t PNS : 32; /*!< [31..0] Period by Nanosecond */ + } PNS_b; + }; + + union + { + __IOM uint32_t WTH; /*!< (@ 0x00000014) PTP Timer Pulse Width n Register */ + + struct + { + __IOM uint32_t WIDTH : 16; /*!< [15..0] Set the Pulse Width of ETHSW_PTPOUTn in the cycle number + * of ts_clk (8 ns). */ + uint32_t : 16; + } WTH_b; + }; + + union + { + __IOM uint32_t MAXP; /*!< (@ 0x00000018) PTP Timer Pulse Max Second n Register */ + + struct + { + __IOM uint32_t MAXP : 32; /*!< [31..0] Sets the boundary value in nanoseconds to carry from + * the nanosecond field to the second field. The same value + * as ATIME_EVT_PERIOD register must be set. */ + } MAXP_b; + }; + + union + { + __IOM uint32_t LATSEC; /*!< (@ 0x0000001C) PTP Timer Pulse Latch Second n Register */ + + struct + { + __IOM uint32_t LATSEC : 32; /*!< [31..0] LATSEC */ + } LATSEC_b; + }; + + union + { + __IOM uint32_t LATNS; /*!< (@ 0x00000020) PTP Timer Pulse Latch Nanosecond n Register */ + + struct + { + __IOM uint32_t LATNS : 32; /*!< [31..0] LATNS */ + } LATNS_b; + }; + __IM uint32_t RESERVED[55]; +} R_ETHSW_PTP_SWTM_Type; /*!< Size = 256 (0x100) */ + +/** + * @brief R_ETHSW_MGMT_ADDR [MGMT_ADDR] (MAC Address [0..3] for Bridge Protocol Frame Register) + */ +typedef struct +{ + union + { + __IOM uint32_t lo; /*!< (@ 0x00000000) Lower MAC Address */ + + struct + { + __IOM uint32_t BPDU_DST : 32; /*!< [31..0] Additional MAC address defining a Bridge Protocol Frame + * (BPDU) in addition to the commonly-known addresses */ + } lo_b; + }; + + union + { + __IOM uint32_t hi; /*!< (@ 0x00000004) Higher MAC Address */ + + struct + { + __IOM uint32_t BPDU_DST : 16; /*!< [15..0] Bits [7:0] is 5th byte, bits [15:8] is 6th (last) byte */ + __IOM uint32_t MASK : 8; /*!< [23..16] 8-bit mask for comparing the last byte of the MAC address. */ + uint32_t : 8; + } hi_b; + }; +} R_ETHSW_MGMT_ADDR_Type; /*!< Size = 8 (0x8) */ + +/** + * @brief R_ESC_FMMU [FMMU] (FMMU [0..7] Registers (n = 0 to 7)) + */ +typedef struct +{ + union + { + __IM uint32_t L_START_ADR; /*!< (@ 0x00000000) FMMU Logical Start Address n Register (n = 0 + * to 7) */ + + struct + { + __IM uint32_t LSTAADR : 32; /*!< [31..0] Logical Start Address Setting */ + } L_START_ADR_b; + }; + + union + { + __IM uint16_t LEN; /*!< (@ 0x00000004) FMMU Length n Register (n = 0 to 7) */ + + struct + { + __IM uint16_t FMMULEN : 16; /*!< [15..0] Area Size Specification */ + } LEN_b; + }; + + union + { + __IM uint8_t L_START_BIT; /*!< (@ 0x00000006) FMMU Logical Start Bit n Register (n = 0 to 7) */ + + struct + { + __IM uint8_t LSTABIT : 3; /*!< [2..0] Start Bit Setting */ + uint8_t : 5; + } L_START_BIT_b; + }; + + union + { + __IM uint8_t L_STOP_BIT; /*!< (@ 0x00000007) FMMU Logical Stop Bit n Register (n = 0 to 7) */ + + struct + { + __IM uint8_t LSTPBIT : 3; /*!< [2..0] Last Bit Setting */ + uint8_t : 5; + } L_STOP_BIT_b; + }; + + union + { + __IM uint16_t P_START_ADR; /*!< (@ 0x00000008) FMMU Physical Start Address n Register (n = 0 + * to 7) */ + + struct + { + __IM uint16_t PHYSTAADR : 16; /*!< [15..0] Physical Start Address Setting */ + } P_START_ADR_b; + }; + + union + { + __IM uint8_t P_START_BIT; /*!< (@ 0x0000000A) FMMU Physical Start Bit n Register (n = 0 to + * 7) */ + + struct + { + __IM uint8_t PHYSTABIT : 3; /*!< [2..0] Physical Start Bit Setting */ + uint8_t : 5; + } P_START_BIT_b; + }; + + union + { + __IM uint8_t TYPE; /*!< (@ 0x0000000B) FMMU Type n Register (n = 0 to 7) */ + + struct + { + __IM uint8_t READ : 1; /*!< [0..0] Read Access Mapping Setting */ + __IM uint8_t WRITE : 1; /*!< [1..1] Write Access Mapping Setting */ + uint8_t : 6; + } TYPE_b; + }; + + union + { + __IM uint8_t ACT; /*!< (@ 0x0000000C) FMMU Activate n Register (n = 0 to 7) */ + + struct + { + __IM uint8_t ACTIVATE : 1; /*!< [0..0] FMMU Enable/Disable */ + uint8_t : 7; + } ACT_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; +} R_ESC_FMMU_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_ESC_SM [SM] (SyncManager [0..7] Registers (n = 0 to 7)) + */ +typedef struct +{ + union + { + __IM uint16_t P_START_ADR; /*!< (@ 0x00000000) SyncManager Physical Start Address n Register + * (n = 0 to 7) */ + + struct + { + __IM uint16_t SMSTAADDR : 16; /*!< [15..0] Physical Start Address Setting */ + } P_START_ADR_b; + }; + + union + { + __IM uint16_t LEN; /*!< (@ 0x00000002) SyncManager Length n Register (n = 0 to 7) */ + + struct + { + __IM uint16_t SMLEN : 16; /*!< [15..0] Area Size Setting */ + } LEN_b; + }; + + union + { + __IM uint8_t CONTROL; /*!< (@ 0x00000004) SyncManager Control n Register (n = 0 to 7) */ + + struct + { + __IM uint8_t OPEMODE : 2; /*!< [1..0] Operating Mode Setting */ + __IM uint8_t DIR : 2; /*!< [3..2] Transfer Direction Setting */ + __IM uint8_t IRQECAT : 1; /*!< [4..4] ECAT Event Interrupt Setting */ + __IM uint8_t IRQPDI : 1; /*!< [5..5] AL Event Interrupt Setting */ + __IM uint8_t WDTRGEN : 1; /*!< [6..6] Watchdog Trigger Setting */ + uint8_t : 1; + } CONTROL_b; + }; + + union + { + __IM uint8_t STATUS; /*!< (@ 0x00000005) SyncManager Status n Register (n = 0 to 7) */ + + struct + { + __IM uint8_t INTWR : 1; /*!< [0..0] Write Complete Interrupt State Indication */ + __IM uint8_t INTRD : 1; /*!< [1..1] Read Complete Interrupt State Indication */ + uint8_t : 1; + __IM uint8_t MAILBOX : 1; /*!< [3..3] Mailbox Status Indication */ + __IM uint8_t BUFFERED : 2; /*!< [5..4] Buffer Status Indication */ + __IM uint8_t RDBUF : 1; /*!< [6..6] Read State Indication */ + __IM uint8_t WRBUF : 1; /*!< [7..7] Write State Indication */ + } STATUS_b; + }; + + union + { + __IM uint8_t ACT; /*!< (@ 0x00000006) SyncManager Activate n Register (n = 0 to 7) */ + + struct + { + __IM uint8_t SMEN : 1; /*!< [0..0] SyncManager Enable/Disable */ + __IM uint8_t REPEATREQ : 1; /*!< [1..1] Repeat Request */ + uint8_t : 4; + __IM uint8_t LATCHECAT : 1; /*!< [6..6] ECAT Latch Event Specification */ + __IM uint8_t LATCHPDI : 1; /*!< [7..7] PDI Latch Event Specification */ + } ACT_b; + }; + + union + { + __IOM uint8_t PDI_CONT; /*!< (@ 0x00000007) SyncManager PDI Control n Register (n = 0 to + * 7) */ + + struct + { + __IOM uint8_t DEACTIVE : 1; /*!< [0..0] SyncManager Operation Indication/Setting */ + __IOM uint8_t REPEATACK : 1; /*!< [1..1] Repeat Acknowledge */ + uint8_t : 6; + } PDI_CONT_b; + }; +} R_ESC_SM_Type; /*!< Size = 8 (0x8) */ + +/** + * @brief R_USBF_PIPE_TR [PIPE_TR] (PIPEn Transaction Counter Registers (n=1-5)) + */ +typedef struct +{ + union + { + __IOM uint16_t E; /*!< (@ 0x00000000) PIPEn 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) PIPEn Transaction Counter Register */ + + struct + { + __IOM uint16_t TRNCNT : 16; /*!< [15..0] Transaction Counter */ + } N_b; + }; +} R_USBF_PIPE_TR_Type; /*!< Size = 4 (0x4) */ + +/** + * @brief R_USBF_CHa_N [N] (Address Registers n (n=0-1)) + */ +typedef struct +{ + union + { + __IOM uint32_t SA; /*!< (@ 0x00000000) Next Source Address Register */ + + struct + { + __IOM uint32_t SAWD : 32; /*!< [31..0] Source Address or Write Data */ + } SA_b; + }; + + union + { + __IOM uint32_t DA; /*!< (@ 0x00000004) Next Destination Address Register */ + + struct + { + __IOM uint32_t DA : 32; /*!< [31..0] Destination Address */ + } DA_b; + }; + + union + { + __IOM uint32_t TB; /*!< (@ 0x00000008) Next Transaction Byte Register */ + + struct + { + __IOM uint32_t TB : 32; /*!< [31..0] Transaction Byte */ + } TB_b; + }; +} R_USBF_CHa_N_Type; /*!< Size = 12 (0xc) */ + +/** + * @brief R_USBF_CHa [CHa] (Next Register Set) + */ +typedef struct +{ + __IOM R_USBF_CHa_N_Type N[2]; /*!< (@ 0x00000000) Address Registers n (n=0-1) */ + + union + { + __IM uint32_t CRSA; /*!< (@ 0x00000018) Current Source Address Register */ + + struct + { + __IM uint32_t CRSA : 32; /*!< [31..0] Source Address */ + } CRSA_b; + }; + + union + { + __IM uint32_t CRDA; /*!< (@ 0x0000001C) Current Destination Address Register */ + + struct + { + __IM uint32_t CRDA : 32; /*!< [31..0] Destination Address */ + } CRDA_b; + }; + + union + { + __IM uint32_t CRTB; /*!< (@ 0x00000020) Current Transaction Byte Register */ + + struct + { + __IM uint32_t CRTB : 32; /*!< [31..0] Transaction Byte */ + } CRTB_b; + }; + + union + { + __IM uint32_t CHSTAT; /*!< (@ 0x00000024) Channel Status Register */ + + struct + { + __IM uint32_t EN : 1; /*!< [0..0] Enable */ + __IM uint32_t RQST : 1; /*!< [1..1] Request */ + __IM uint32_t TACT : 1; /*!< [2..2] Transaction Active */ + __IM uint32_t SUS : 1; /*!< [3..3] Suspend */ + __IM uint32_t ER : 1; /*!< [4..4] Error */ + __IM uint32_t END : 1; /*!< [5..5] USB_FDMAn Interrupted */ + __IM uint32_t TC : 1; /*!< [6..6] Terminal Count */ + __IM uint32_t SR : 1; /*!< [7..7] Selected Register Set */ + __IM uint32_t DL : 1; /*!< [8..8] Descriptor Load */ + __IM uint32_t DW : 1; /*!< [9..9] Descriptor WriteBack */ + __IM uint32_t DER : 1; /*!< [10..10] Descriptor Error */ + __IM uint32_t MODE : 1; /*!< [11..11] DMA Mode */ + uint32_t : 4; + __IM uint32_t INTM : 1; /*!< [16..16] Interrupt Mask */ + __IM uint32_t DMARQM : 1; /*!< [17..17] DMAREQ Mask */ + __IM uint32_t SWPRQ : 1; /*!< [18..18] Sweep Request */ + uint32_t : 5; + __IM uint32_t DNUM : 8; /*!< [31..24] Data Number */ + } CHSTAT_b; + }; + + union + { + __OM uint32_t CHCTRL; /*!< (@ 0x00000028) Channel Control Register */ + + struct + { + __OM uint32_t SETEN : 1; /*!< [0..0] Set Enable */ + __OM uint32_t CLREN : 1; /*!< [1..1] Clear Enable */ + __OM uint32_t STG : 1; /*!< [2..2] Software Trigger */ + __OM uint32_t SWRST : 1; /*!< [3..3] Software Reset */ + __OM uint32_t CLRRQ : 1; /*!< [4..4] Clear Request */ + __OM uint32_t CLREND : 1; /*!< [5..5] Clear End */ + __OM uint32_t CLRTC : 1; /*!< [6..6] Clear TC */ + __OM uint32_t CLRDER : 1; /*!< [7..7] Clear DER */ + __OM uint32_t SETSUS : 1; /*!< [8..8] Set Suspend */ + __OM uint32_t CLRSUS : 1; /*!< [9..9] Clear Suspend */ + uint32_t : 2; + __OM uint32_t SETREN : 1; /*!< [12..12] Set Register Set Enable */ + uint32_t : 1; + __OM uint32_t SETSSWPRQ : 1; /*!< [14..14] Set Software Sweep Request */ + uint32_t : 1; + __OM uint32_t SETINTM : 1; /*!< [16..16] Set Interrupt Mask */ + __OM uint32_t CLRINTM : 1; /*!< [17..17] Clear Interrupt Mask */ + __OM uint32_t SETDMARQM : 1; /*!< [18..18] SET DMAREQ Mask */ + __OM uint32_t CLRDMARQM : 1; /*!< [19..19] Clear DMAREQ Mask */ + uint32_t : 12; + } CHCTRL_b; + }; + + union + { + __IOM uint32_t CHCFG; /*!< (@ 0x0000002C) Channel Configuration Register */ + + struct + { + __IOM uint32_t SEL : 1; /*!< [0..0] Terminal Select */ + uint32_t : 2; + __IOM uint32_t REQD : 1; /*!< [3..3] Request Direction */ + __IOM uint32_t LOEN : 1; /*!< [4..4] Sets the transfer request signal between the USB control + * and the DMAC. */ + __IOM uint32_t HIEN : 1; /*!< [5..5] Sets the transfer request signal between the USB control + * and the DMAC. */ + __IOM uint32_t LVL : 1; /*!< [6..6] Sets the transfer request signal between the USB control + * and the DMAC. */ + uint32_t : 1; + __IOM uint32_t AM : 3; /*!< [10..8] These bits set the transfer request signal between the + * USB control and the DMAC. */ + __IOM uint32_t DRRP : 1; /*!< [11..11] Descriptor Read Repeat */ + __IOM uint32_t SDS : 4; /*!< [15..12] Source Data Size */ + __IOM uint32_t DDS : 4; /*!< [19..16] Destination Data Size */ + __IOM uint32_t SAD : 1; /*!< [20..20] Source Address Direction */ + __IOM uint32_t DAD : 1; /*!< [21..21] Destination Address Direction */ + __IOM uint32_t TM : 1; /*!< [22..22] Sets the transfer request signal between the USB control + * and the DMAC. */ + __IOM uint32_t WONLY : 1; /*!< [23..23] Write Only Mode */ + __IOM uint32_t DEM : 1; /*!< [24..24] USB_FDMAn Mask */ + uint32_t : 1; + __IOM uint32_t DIM : 1; /*!< [26..26] Descriptor Interrupt Mask */ + __IOM uint32_t SBE : 1; /*!< [27..27] Sweep Buffer Enable */ + __IOM uint32_t RSEL : 1; /*!< [28..28] Register Set Select */ + __IOM uint32_t RSW : 1; /*!< [29..29] Register Select Switch */ + __IOM uint32_t REN : 1; /*!< [30..30] Register Set Enable */ + __IOM uint32_t DMS : 1; /*!< [31..31] DMA Mode Select */ + } CHCFG_b; + }; + + union + { + __IOM uint32_t CHITVL; /*!< (@ 0x00000030) Channel Interval Register */ + + struct + { + __IOM uint32_t ITVL : 16; /*!< [15..0] Interval */ + uint32_t : 16; + } CHITVL_b; + }; + + union + { + __IOM uint32_t CHEXT; /*!< (@ 0x00000034) Channel Extension Register */ + + struct + { + __IOM uint32_t SPR : 4; /*!< [3..0] Source PROT */ + uint32_t : 4; + __IOM uint32_t DPR : 4; /*!< [11..8] Destination PROT */ + uint32_t : 20; + } CHEXT_b; + }; + + union + { + __IOM uint32_t NXLA; /*!< (@ 0x00000038) Next Link Address Register */ + + struct + { + __IOM uint32_t NXLA : 32; /*!< [31..0] Next Link Address */ + } NXLA_b; + }; + + union + { + __IM uint32_t CRLA; /*!< (@ 0x0000003C) Current Link Address Register */ + + struct + { + __IM uint32_t CRLA : 32; /*!< [31..0] Current Link Address */ + } CRLA_b; + }; +} R_USBF_CHa_Type; /*!< Size = 64 (0x40) */ + +/** + * @brief R_USBF_CHb [CHb] (Skip Register Set) + */ +typedef struct +{ + union + { + __IOM uint32_t SCNT; /*!< (@ 0x00000000) Source Continuous Register */ + + struct + { + __IOM uint32_t SCNT : 32; /*!< [31..0] Source Continuous */ + } SCNT_b; + }; + + union + { + __IOM uint32_t SSKP; /*!< (@ 0x00000004) Source Skip Register */ + + struct + { + __IOM uint32_t SSKP : 32; /*!< [31..0] Source Skip */ + } SSKP_b; + }; + + union + { + __IOM uint32_t DCNT; /*!< (@ 0x00000008) Destination Continuous Register */ + + struct + { + __IOM uint32_t DCNT : 32; /*!< [31..0] Destination Continuous */ + } DCNT_b; + }; + + union + { + __IOM uint32_t DSKP; /*!< (@ 0x0000000C) Destination Skip Register */ + + struct + { + __IOM uint32_t DSKP : 32; /*!< [31..0] Destination Skip */ + } DSKP_b; + }; + __IM uint32_t RESERVED[4]; +} R_USBF_CHb_Type; /*!< Size = 32 (0x20) */ + +/** + * @brief R_XSPI0_CSa [CSa] (xSPI Command Map Configuration Register [0..1]) + */ +typedef struct +{ + union + { + __IOM uint32_t CMCFG0; /*!< (@ 0x00000000) xSPI Command Map Configuration Register 0 CSn */ + + struct + { + __IOM uint32_t FFMT : 2; /*!< [1..0] Frame format */ + __IOM uint32_t ADDSIZE : 2; /*!< [3..2] Address size */ + uint32_t : 12; + __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 CSn */ + + 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 CSn */ + + 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_XSPI0_CSa_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_XSPI0_BUF [BUF] (xSPI Command Manual Buf [0..3]) + */ +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-2 bytes) */ + } 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_XSPI0_BUF_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_XSPI0_CSb [CSb] (xSPI Command Calibration Control register [0..1]) + */ +typedef struct +{ + union + { + __IOM uint32_t CCCTL0; /*!< (@ 0x00000000) xSPI Command Calibration Control Register 0 CSn */ + + 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 CSn */ + + 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 CSn */ + + 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 CSn */ + + 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 CSn */ + + 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 CSn */ + + 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 CSn */ + + 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 CSn */ + + struct + { + __IOM uint32_t CADATA : 32; /*!< [31..0] Calibration pattern data */ + } CCCTL7_b; + }; +} R_XSPI0_CSb_Type; /*!< Size = 32 (0x20) */ + +/** + * @brief R_SYSRAM0_W [W] (System SRAM Wn Registers (n = 0 to 3)) + */ +typedef struct +{ + union + { + __IOM uint32_t EC710CTL; /*!< (@ 0x00000000) ECC Control Register */ + + struct + { + __IM uint32_t ECEMF : 1; /*!< [0..0] ECC Error Indicate Flag */ + __IM uint32_t ECER1F : 1; /*!< [1..1] 1-Bit ECC Error Detection/Correction Flag */ + __IM uint32_t ECER2F : 1; /*!< [2..2] 2-Bit ECC Error Detection Flag */ + __IOM uint32_t EC1EDIC : 1; /*!< [3..3] 1-Bit ECC Error Detection Interrupt Control */ + __IOM uint32_t EC2EDIC : 1; /*!< [4..4] 2-Bit ECC Error Detection Interrupt Control */ + __IOM uint32_t EC1ECP : 1; /*!< [5..5] 1-Bit ECC Error Correction Enable */ + __IOM uint32_t ECERVF : 1; /*!< [6..6] ECC Error Determination Enable */ + __IOM uint32_t ECTHM : 1; /*!< [7..7] ECC Function Through Mode Enable */ + uint32_t : 1; + __IOM uint32_t ECER1C : 1; /*!< [9..9] 1-Bit ECC Error Detection Clear */ + __IOM uint32_t ECER2C : 1; /*!< [10..10] 2-Bit ECC Error Detection Clear */ + __IM uint32_t ECOVFF : 1; /*!< [11..11] ECC Error Address Capture Overflow Flag */ + uint32_t : 2; + __IOM uint32_t EMCA : 2; /*!< [15..14] Access Control to ECC Mode Selection */ + __IM uint32_t ECEDF0 : 2; /*!< [17..16] ECC Error Address Capture Flag m (m = 0) */ + __IM uint32_t ECEDF1 : 2; /*!< [19..18] ECC Error Address Capture Flag m (m = 1) */ + __IM uint32_t ECEDF2 : 2; /*!< [21..20] ECC Error Address Capture Flag m (m = 2) */ + __IM uint32_t ECEDF3 : 2; /*!< [23..22] ECC Error Address Capture Flag m (m = 3) */ + __IM uint32_t ECEDF4 : 2; /*!< [25..24] ECC Error Address Capture Flag m (m = 4) */ + __IM uint32_t ECEDF5 : 2; /*!< [27..26] ECC Error Address Capture Flag m (m = 5) */ + __IM uint32_t ECEDF6 : 2; /*!< [29..28] ECC Error Address Capture Flag m (m = 6) */ + __IM uint32_t ECEDF7 : 2; /*!< [31..30] ECC Error Address Capture Flag m (m = 7) */ + } EC710CTL_b; + }; + + union + { + __IOM uint32_t EC710TMC; /*!< (@ 0x00000004) ECC Test Mode Control Register */ + + struct + { + __IOM uint32_t ECREIS : 1; /*!< [0..0] ECC Redundancy Bit Input Data Select */ + __IOM uint32_t ECDCS : 1; /*!< [1..1] ECC Decode Input Select */ + __IOM uint32_t ECENS : 1; /*!< [2..2] ECC Encode Input Select */ + __IOM uint32_t ECREOS : 1; /*!< [3..3] ECC Redundancy Bit Output Data Select */ + __IOM uint32_t ECTRRS : 1; /*!< [4..4] RAM Read Test Mode Select */ + uint32_t : 2; + __IOM uint32_t ECTMCE : 1; /*!< [7..7] Test Mode Enable */ + uint32_t : 6; + __IOM uint32_t ETMA : 2; /*!< [15..14] ECTMCE Write Enable */ + uint32_t : 16; + } EC710TMC_b; + }; + + union + { + __IOM uint32_t EC710TRC; /*!< (@ 0x00000008) ECC Redundancy Bit Data Control Test Register */ + + struct + { + __IOM uint32_t ECERDB : 7; /*!< [6..0] ECC Redundancy Bit Input/Output Substitute Buffer Register */ + uint32_t : 1; + __IM uint32_t ECECRD : 7; /*!< [14..8] ECC Encode Test Register */ + uint32_t : 1; + __IM uint32_t ECHORD : 7; /*!< [22..16] ECC 7-Redundancy-Bit Data Retain Test Register */ + uint32_t : 1; + __IM uint32_t ECSYND : 7; /*!< [30..24] ECC Decode Syndrome Register */ + uint32_t : 1; + } EC710TRC_b; + }; + + union + { + __IOM uint32_t EC710TED; /*!< (@ 0x0000000C) ECC Encode/Decode Input/Output Switchover Test + * Register */ + + struct + { + __IOM uint32_t ECEDB : 32; /*!< [31..0] 32-Bit Data Test Register for ECC Encode/Decode */ + } EC710TED_b; + }; + + union + { + __IM uint32_t EC710EAD[8]; /*!< (@ 0x00000010) ECC Error Address [0..7] Register 0 */ + + struct + { + __IM uint32_t ECEAD : 15; /*!< [14..0] Bit Error Address */ + uint32_t : 17; + } EC710EAD_b[8]; + }; + __IM uint32_t RESERVED[4]; +} R_SYSRAM0_W_Type; /*!< Size = 64 (0x40) */ + +/** + * @brief R_MPU0_RGN [RGN] (Master MPU Safety Region Start Address Register [0..7]) + */ +typedef struct +{ + union + { + __IOM uint32_t STADD; /*!< (@ 0x00000000) Master MPU Safety Region Start Address Register */ + + struct + { + __IOM uint32_t RDPR : 1; /*!< [0..0] Enable read protection for region m of master MPU */ + __IOM uint32_t WRPR : 1; /*!< [1..1] Enable write protection for region m of master MPU */ + uint32_t : 8; + __IOM uint32_t STADDR : 22; /*!< [31..10] Start address for MPU region */ + } STADD_b; + }; + + union + { + __IOM uint32_t ENDADD; /*!< (@ 0x00000004) Master MPU Safety Region End Address Register */ + + struct + { + uint32_t : 10; + __IOM uint32_t ENDADDR : 22; /*!< [31..10] End address for MPU region */ + } ENDADD_b; + }; + __IM uint32_t RESERVED[2]; +} R_MPU0_RGN_Type; /*!< Size = 16 (0x10) */ + +/** + * @brief R_DSMIF0_CH [CH] (Channel Registers [0..2]) + */ +typedef struct +{ + union + { + __IOM uint32_t DSICR; /*!< (@ 0x00000000) Interrupt Control Register */ + + struct + { + __IOM uint32_t IOEL : 1; /*!< [0..0] Overcurrent lower limit detection interrupt enable */ + __IOM uint32_t IOEH : 1; /*!< [1..1] Overcurrent upper limit exceeded output interrupt enable */ + __IOM uint32_t ISE : 1; /*!< [2..2] Short circuit detection error interrupt enable */ + __IOM uint32_t IUE : 1; /*!< [3..3] Current data register update interrupt enable */ + uint32_t : 28; + } DSICR_b; + }; + + union + { + __IOM uint32_t DSCMCCR; /*!< (@ 0x00000004) Current Measurement Clock Control Register */ + + struct + { + __IOM uint32_t CKDIR : 1; /*!< [0..0] A/D conversion clock master/slave switching */ + uint32_t : 6; + __IOM uint32_t SEDGE : 1; /*!< [7..7] Sampling edge selection */ + __IOM uint32_t CKDIV : 6; /*!< [13..8] A/D conversion clock division ratio */ + uint32_t : 18; + } DSCMCCR_b; + }; + + union + { + __IOM uint32_t DSCMFCR; /*!< (@ 0x00000008) Current Measurement Filter Control Register */ + + struct + { + __IOM uint32_t CMSINC : 2; /*!< [1..0] Current measurement filter order setting */ + uint32_t : 6; + __IOM uint32_t CMDEC : 8; /*!< [15..8] Decimation ratio selection for current measurement */ + __IOM uint32_t CMSH : 5; /*!< [20..16] Data shift setting for current measurement */ + uint32_t : 11; + } DSCMFCR_b; + }; + + union + { + __IOM uint32_t DSCMCTCR; /*!< (@ 0x0000000C) Current Measurement Capture Trigger Control Register */ + + struct + { + __IOM uint32_t CTSELA : 3; /*!< [2..0] Current capture trigger A selection bit */ + uint32_t : 5; + __IOM uint32_t CTSELB : 3; /*!< [10..8] Current capture trigger B selection bit */ + uint32_t : 5; + __IOM uint32_t DITSEL : 2; /*!< [17..16] Current measurement filter initialization trigger selection + * bit for frequency division counter for decimation. */ + uint32_t : 5; + __IOM uint32_t DEDGE : 1; /*!< [23..23] Current measurement filter initialization trigger for + * division counter for decimation edge selection bit. The + * trigger from ELC is usually used positive edge. Change + * from the initial value if necessary. */ + uint32_t : 8; + } DSCMCTCR_b; + }; + + union + { + __IOM uint32_t DSEDCR; /*!< (@ 0x00000010) Error Detect Control Register */ + + struct + { + __IOM uint32_t SDE : 1; /*!< [0..0] Short circuit detection enable bit */ + uint32_t : 31; + } DSEDCR_b; + }; + + union + { + __IOM uint32_t DSOCFCR; /*!< (@ 0x00000014) Overcurrent Detect Filter Control Register */ + + struct + { + __IOM uint32_t OCSINC : 2; /*!< [1..0] Overcurrent detection filter order setting */ + uint32_t : 6; + __IOM uint32_t OCDEC : 8; /*!< [15..8] Decimation ratio selection for overcurrent detection */ + __IOM uint32_t OCSH : 5; /*!< [20..16] Data shift setting for overcurrent detection */ + uint32_t : 11; + } DSOCFCR_b; + }; + + union + { + __IOM uint32_t DSOCLTR; /*!< (@ 0x00000018) Overcurrent Low Threshold Register */ + + struct + { + __IOM uint32_t OCMPTBL : 16; /*!< [15..0] Overcurrent detection lower limit */ + uint32_t : 16; + } DSOCLTR_b; + }; + + union + { + __IOM uint32_t DSOCHTR; /*!< (@ 0x0000001C) Overcurrent High Threshold Register */ + + struct + { + __IOM uint32_t OCMPTBH : 16; /*!< [15..0] Overcurrent detection upper limit */ + uint32_t : 16; + } DSOCHTR_b; + }; + + union + { + __IOM uint32_t DSSCTSR; /*!< (@ 0x00000020) Short Circuit Threshold Setting Register */ + + struct + { + __IOM uint32_t SCNTL : 13; /*!< [12..0] Short circuit detection low continuous detection count */ + uint32_t : 3; + __IOM uint32_t SCNTH : 13; /*!< [28..16] Short circuit detection high continuous detection count */ + uint32_t : 3; + } DSSCTSR_b; + }; + + union + { + __IOM uint32_t DSODCR; /*!< (@ 0x00000024) Overcurrent Detect Control Register */ + + struct + { + __IOM uint32_t ODEL : 1; /*!< [0..0] Overcurrent lower limit detection enable bit */ + __IOM uint32_t ODEH : 1; /*!< [1..1] Overcurrent upper limit exceeded detection enable bit */ + uint32_t : 30; + } DSODCR_b; + }; + __IM uint32_t RESERVED[6]; + + union + { + __IOM uint32_t DSCSTRTR; /*!< (@ 0x00000040) Software Start Trigger Register */ + + struct + { + __IOM uint32_t STRTRG : 1; /*!< [0..0] Channel start trigger */ + uint32_t : 31; + } DSCSTRTR_b; + }; + + union + { + __IOM uint32_t DSCSTPTR; /*!< (@ 0x00000044) Software Stop Trigger Register */ + + struct + { + __IOM uint32_t STPTRG : 1; /*!< [0..0] Channel stop trigger */ + uint32_t : 31; + } DSCSTPTR_b; + }; + __IM uint32_t RESERVED1[2]; + + union + { + __IM uint32_t DSCDR; /*!< (@ 0x00000050) Current Data Register */ + + struct + { + __IM uint32_t ADDR : 16; /*!< [15..0] Current data */ + uint32_t : 16; + } DSCDR_b; + }; + + union + { + __IM uint32_t DSCCDRA; /*!< (@ 0x00000054) Capture Current Data Register A */ + + struct + { + __IM uint32_t CDRA : 16; /*!< [15..0] Capture current data A */ + uint32_t : 16; + } DSCCDRA_b; + }; + + union + { + __IM uint32_t DSCCDRB; /*!< (@ 0x00000058) Capture Current Data Register B */ + + struct + { + __IM uint32_t CDRB : 16; /*!< [15..0] Capture current data B */ + uint32_t : 16; + } DSCCDRB_b; + }; + + union + { + __IM uint32_t DSOCDR; /*!< (@ 0x0000005C) Overcurrent Data Register */ + + struct + { + __IM uint32_t ODR : 16; /*!< [15..0] Overcurrent data */ + uint32_t : 16; + } DSOCDR_b; + }; + + union + { + __IM uint32_t DSCOCDR; /*!< (@ 0x00000060) Capture Overcurrent Data Register */ + + struct + { + __IM uint32_t CODR : 16; /*!< [15..0] Capture Overcurrent data when overcurrent detected */ + uint32_t : 16; + } DSCOCDR_b; + }; + __IM uint32_t RESERVED2[7]; + + union + { + __IM uint32_t DSCSR; /*!< (@ 0x00000080) Status Register */ + + struct + { + __IM uint32_t DUF : 1; /*!< [0..0] Channel n data update flag */ + __IM uint32_t OCFL : 1; /*!< [1..1] Channel n overcurrent lower limit detection flag */ + __IM uint32_t OCFH : 1; /*!< [2..2] Channel n overcurrent upper limit exceeded flag */ + __IM uint32_t SCF : 1; /*!< [3..3] Channel n short circuit detection flag */ + uint32_t : 12; + __IM uint32_t CHSTATE : 1; /*!< [16..16] Channel n state */ + uint32_t : 15; + } DSCSR_b; + }; + + union + { + __IOM uint32_t DSCSCR; /*!< (@ 0x00000084) Status Clear Register */ + + struct + { + __IOM uint32_t CLRDUF : 1; /*!< [0..0] Channel n data update flag clear */ + __IOM uint32_t CLROCFL : 1; /*!< [1..1] Channel n overcurrent lower limit detection flag clear */ + __IOM uint32_t CLROCFH : 1; /*!< [2..2] Channel n overcurrent upper limit exceeded flag clear */ + __IOM uint32_t CLRSCF : 1; /*!< [3..3] Channel n short circuit detection flag clear */ + uint32_t : 28; + } DSCSCR_b; + }; + __IM uint32_t RESERVED3[2]; +} R_DSMIF0_CH_Type; /*!< Size = 144 (0x90) */ + +/** @} */ /* End of group Device_Peripheral_clusters */ + +/* =========================================================================================================================== */ +/* ================ Device Specific Peripheral Section ================ */ +/* =========================================================================================================================== */ + +/** @addtogroup Device_Peripheral_peripherals + * @{ + */ + +/* =========================================================================================================================== */ +/* ================ R_GPT7 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief General PWM Timer 7 (R_GPT7) + */ + +typedef struct /*!< (@ 0x80000000) R_GPT7 Structure */ +{ + union + { + __IOM uint32_t GTWP; /*!< (@ 0x00000000) General PWM Timer Write-Protection Register */ + + struct + { + __IOM uint32_t WP : 1; /*!< [0..0] Register Write Disabled */ + __IOM uint32_t STRWP : 1; /*!< [1..1] GTSTR.CSTRT Bit Write Disabled */ + __IOM uint32_t STPWP : 1; /*!< [2..2] GTSTP.CSTOP Bit Write Disabled */ + __IOM uint32_t CLRWP : 1; /*!< [3..3] GTCLR.CCLR Bit Write Disabled */ + __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 0 Count Start */ + __IOM uint32_t CSTRT1 : 1; /*!< [1..1] Channel 1 Count Start */ + __IOM uint32_t CSTRT2 : 1; /*!< [2..2] Channel 2 Count Start */ + __IOM uint32_t CSTRT3 : 1; /*!< [3..3] Channel 3 Count Start */ + __IOM uint32_t CSTRT4 : 1; /*!< [4..4] Channel 4 Count Start */ + __IOM uint32_t CSTRT5 : 1; /*!< [5..5] Channel 5 Count Start */ + __IOM uint32_t CSTRT6 : 1; /*!< [6..6] Channel 6 Count Start */ + uint32_t : 25; + } GTSTR_b; + }; + + union + { + __IOM uint32_t GTSTP; /*!< (@ 0x00000008) General PWM Timer Software Stop Register */ + + struct + { + __IOM uint32_t CSTOP0 : 1; /*!< [0..0] Channel 0 Count Stop */ + __IOM uint32_t CSTOP1 : 1; /*!< [1..1] Channel 1 Count Stop */ + __IOM uint32_t CSTOP2 : 1; /*!< [2..2] Channel 2 Count Stop */ + __IOM uint32_t CSTOP3 : 1; /*!< [3..3] Channel 3 Count Stop */ + __IOM uint32_t CSTOP4 : 1; /*!< [4..4] Channel 4 Count Stop */ + __IOM uint32_t CSTOP5 : 1; /*!< [5..5] Channel 5 Count Stop */ + __IOM uint32_t CSTOP6 : 1; /*!< [6..6] Channel 6 Count Stop */ + uint32_t : 25; + } GTSTP_b; + }; + + union + { + __OM uint32_t GTCLR; /*!< (@ 0x0000000C) General PWM Timer Software Clear Register */ + + struct + { + __OM uint32_t CCLR0 : 1; /*!< [0..0] Channel 0 Count Clear */ + __OM uint32_t CCLR1 : 1; /*!< [1..1] Channel 1 Count Clear */ + __OM uint32_t CCLR2 : 1; /*!< [2..2] Channel 2 Count Clear */ + __OM uint32_t CCLR3 : 1; /*!< [3..3] Channel 3 Count Clear */ + __OM uint32_t CCLR4 : 1; /*!< [4..4] Channel 4 Count Clear */ + __OM uint32_t CCLR5 : 1; /*!< [5..5] Channel 5 Count Clear */ + __OM uint32_t CCLR6 : 1; /*!< [6..6] Channel 6 Count Clear */ + uint32_t : 25; + } GTCLR_b; + }; + + union + { + __IOM uint32_t GTSSR; /*!< (@ 0x00000010) General PWM Timer Start Source Select Register */ + + struct + { + __IOM uint32_t SSGTRGAFR : 2; /*!< [1..0] SSGTRGAFR */ + __IOM uint32_t SSGTRGBFR : 2; /*!< [3..2] SSGTRGBFR */ + __IOM uint32_t SSGTRGCFR : 2; /*!< [5..4] SSGTRGCFR */ + __IOM uint32_t SSGTRGDFR : 2; /*!< [7..6] SSGTRGDFR */ + __IOM uint32_t SSCARBHL : 2; /*!< [9..8] SSCARBHL */ + __IOM uint32_t SSCAFBHL : 2; /*!< [11..10] SSCAFBHL */ + __IOM uint32_t SSCBRAHL : 2; /*!< [13..12] SSCBRAHL */ + __IOM uint32_t SSCBFAHL : 2; /*!< [15..14] SSCBFAHL */ + __IOM uint32_t SSELCA : 1; /*!< [16..16] SSELCA */ + __IOM uint32_t SSELCB : 1; /*!< [17..17] SSELCB */ + __IOM uint32_t SSELCC : 1; /*!< [18..18] SSELCC */ + __IOM uint32_t SSELCD : 1; /*!< [19..19] SSELCD */ + __IOM uint32_t SSELCE : 1; /*!< [20..20] SSELCE */ + __IOM uint32_t SSELCF : 1; /*!< [21..21] SSELCF */ + __IOM uint32_t SSELCG : 1; /*!< [22..22] SSELCG */ + __IOM uint32_t SSELCH : 1; /*!< [23..23] SSELCH */ + uint32_t : 7; + __IOM uint32_t CSTRT : 1; /*!< [31..31] Software Source Count Start Enable */ + } GTSSR_b; + }; + + union + { + __IOM uint32_t GTPSR; /*!< (@ 0x00000014) General PWM Timer Stop Source Select Register */ + + struct + { + __IOM uint32_t PSGTRGAFR : 2; /*!< [1..0] PSGTRGAFR */ + __IOM uint32_t PSGTRGBFR : 2; /*!< [3..2] PSGTRGBFR */ + __IOM uint32_t PSGTRGCFR : 2; /*!< [5..4] PSGTRGCFR */ + __IOM uint32_t PSGTRGDFR : 2; /*!< [7..6] PSGTRGDFR */ + __IOM uint32_t PSCARBHL : 2; /*!< [9..8] PSCARBHL */ + __IOM uint32_t PSCAFBHL : 2; /*!< [11..10] PSCAFBHL */ + __IOM uint32_t PSCBRAHL : 2; /*!< [13..12] PSCBRAHL */ + __IOM uint32_t PSCBFAHL : 2; /*!< [15..14] PSCBFAHL */ + __IOM uint32_t PSELCA : 1; /*!< [16..16] PSELCA */ + __IOM uint32_t PSELCB : 1; /*!< [17..17] PSELCB */ + __IOM uint32_t PSELCC : 1; /*!< [18..18] PSELCC */ + __IOM uint32_t PSELCD : 1; /*!< [19..19] PSELCD */ + __IOM uint32_t PSELCE : 1; /*!< [20..20] PSELCE */ + __IOM uint32_t PSELCF : 1; /*!< [21..21] PSELCF */ + __IOM uint32_t PSELCG : 1; /*!< [22..22] PSELCG */ + __IOM uint32_t PSELCH : 1; /*!< [23..23] PSELCH */ + uint32_t : 7; + __IOM uint32_t CSTOP : 1; /*!< [31..31] CSTOP */ + } GTPSR_b; + }; + + union + { + __IOM uint32_t GTCSR; /*!< (@ 0x00000018) General PWM Timer Clear Source Select Register */ + + struct + { + __IOM uint32_t CSGTRGAFR : 2; /*!< [1..0] CSGTRGAFR */ + __IOM uint32_t CSGTRGBFR : 2; /*!< [3..2] CSGTRGBFR */ + __IOM uint32_t CSGTRGCFR : 2; /*!< [5..4] CSGTRGCFR */ + __IOM uint32_t CSGTRGDFR : 2; /*!< [7..6] CSGTRGDFR */ + __IOM uint32_t CSCARBHL : 2; /*!< [9..8] CSCARBHL */ + __IOM uint32_t CSCAFBHL : 2; /*!< [11..10] CSCAFBHL */ + __IOM uint32_t CSCBRAHL : 2; /*!< [13..12] CSCBRAHL */ + __IOM uint32_t CSCBFAHL : 2; /*!< [15..14] CSCBFAHL */ + __IOM uint32_t CSELCA : 1; /*!< [16..16] CSELCA */ + __IOM uint32_t CSELCB : 1; /*!< [17..17] CSELCB */ + __IOM uint32_t CSELCC : 1; /*!< [18..18] CSELCC */ + __IOM uint32_t CSELCD : 1; /*!< [19..19] CSELCD */ + __IOM uint32_t CSELCE : 1; /*!< [20..20] CSELCE */ + __IOM uint32_t CSELCF : 1; /*!< [21..21] CSELCF */ + __IOM uint32_t CSELCG : 1; /*!< [22..22] CSELCG */ + __IOM uint32_t CSELCH : 1; /*!< [23..23] CSELCH */ + uint32_t : 7; + __IOM uint32_t CCLR : 1; /*!< [31..31] CCLR */ + } GTCSR_b; + }; + + union + { + __IOM uint32_t GTUPSR; /*!< (@ 0x0000001C) General PWM Timer Count-Up Source Select Register */ + + struct + { + __IOM uint32_t USGTRGAFR : 2; /*!< [1..0] USGTRGAFR */ + __IOM uint32_t USGTRGBFR : 2; /*!< [3..2] USGTRGBFR */ + __IOM uint32_t USGTRGCFR : 2; /*!< [5..4] USGTRGCFR */ + __IOM uint32_t USGTRGDFR : 2; /*!< [7..6] USGTRGDFR */ + __IOM uint32_t USCARBHL : 2; /*!< [9..8] USCARBHL */ + __IOM uint32_t USCAFBHL : 2; /*!< [11..10] USCAFBHL */ + __IOM uint32_t USCBRAHL : 2; /*!< [13..12] USCBRAHL */ + __IOM uint32_t USCBFAHL : 2; /*!< [15..14] USCBFAHL */ + __IOM uint32_t USELCA : 1; /*!< [16..16] USELCA */ + __IOM uint32_t USELCB : 1; /*!< [17..17] USELCB */ + __IOM uint32_t USELCC : 1; /*!< [18..18] USELCC */ + __IOM uint32_t USELCD : 1; /*!< [19..19] USELCD */ + __IOM uint32_t USELCE : 1; /*!< [20..20] USELCE */ + __IOM uint32_t USELCF : 1; /*!< [21..21] USELCF */ + __IOM uint32_t USELCG : 1; /*!< [22..22] USELCG */ + __IOM uint32_t USELCH : 1; /*!< [23..23] USELCH */ + uint32_t : 8; + } GTUPSR_b; + }; + + union + { + __IOM uint32_t GTDNSR; /*!< (@ 0x00000020) General PWM Timer Count-Down Source Select Register */ + + struct + { + __IOM uint32_t DSGTRGAFR : 2; /*!< [1..0] DSGTRGAFR */ + __IOM uint32_t DSGTRGBFR : 2; /*!< [3..2] DSGTRGBFR */ + __IOM uint32_t DSGTRGCFR : 2; /*!< [5..4] DSGTRGCFR */ + __IOM uint32_t DSGTRGDFR : 2; /*!< [7..6] DSGTRGDFR */ + __IOM uint32_t DSCARBHL : 2; /*!< [9..8] DSCARBHL */ + __IOM uint32_t DSCAFBHL : 2; /*!< [11..10] DSCAFBHL */ + __IOM uint32_t DSCBRAHL : 2; /*!< [13..12] DSCBRAHL */ + __IOM uint32_t DSCBFAHL : 2; /*!< [15..14] DSCBFAHL */ + __IOM uint32_t DSELCA : 1; /*!< [16..16] DSELCA */ + __IOM uint32_t DSELCB : 1; /*!< [17..17] DSELCB */ + __IOM uint32_t DSELCC : 1; /*!< [18..18] DSELCC */ + __IOM uint32_t DSELCD : 1; /*!< [19..19] DSELCD */ + __IOM uint32_t DSELCE : 1; /*!< [20..20] DSELCE */ + __IOM uint32_t DSELCF : 1; /*!< [21..21] DSELCF */ + __IOM uint32_t DSELCG : 1; /*!< [22..22] DSELCG */ + __IOM uint32_t DSELCH : 1; /*!< [23..23] DSELCH */ + uint32_t : 8; + } GTDNSR_b; + }; + + union + { + __IOM uint32_t GTICASR; /*!< (@ 0x00000024) General PWM Timer Input Capture Source Select + * Register A */ + + struct + { + __IOM uint32_t ASGTRGAFR : 2; /*!< [1..0] ASGTRGAFR */ + __IOM uint32_t ASGTRGBFR : 2; /*!< [3..2] ASGTRGBFR */ + __IOM uint32_t ASGTRGCFR : 2; /*!< [5..4] ASGTRGCFR */ + __IOM uint32_t ASGTRGDFR : 2; /*!< [7..6] ASGTRGDFR */ + __IOM uint32_t ASCARBHL : 2; /*!< [9..8] ASCARBHL */ + __IOM uint32_t ASCAFBHL : 2; /*!< [11..10] ASCAFBHL */ + __IOM uint32_t ASCBRAHL : 2; /*!< [13..12] ASCBRAHL */ + __IOM uint32_t ASCBFAHL : 2; /*!< [15..14] ASCBFAHL */ + __IOM uint32_t ASELCA : 1; /*!< [16..16] ASELCA */ + __IOM uint32_t ASELCB : 1; /*!< [17..17] ASELCB */ + __IOM uint32_t ASELCC : 1; /*!< [18..18] ASELCC */ + __IOM uint32_t ASELCD : 1; /*!< [19..19] ASELCD */ + __IOM uint32_t ASELCE : 1; /*!< [20..20] ASELCE */ + __IOM uint32_t ASELCF : 1; /*!< [21..21] ASELCF */ + __IOM uint32_t ASELCG : 1; /*!< [22..22] ASELCG */ + __IOM uint32_t ASELCH : 1; /*!< [23..23] ASELCH */ + uint32_t : 8; + } GTICASR_b; + }; + + union + { + __IOM uint32_t GTICBSR; /*!< (@ 0x00000028) General PWM Timer Input Capture Source Select + * Register B */ + + struct + { + __IOM uint32_t BSGTRGAFR : 2; /*!< [1..0] BSGTRGAFR */ + __IOM uint32_t BSGTRGBFR : 2; /*!< [3..2] BSGTRGBFR */ + __IOM uint32_t BSGTRGCFR : 2; /*!< [5..4] BSGTRGCFR */ + __IOM uint32_t BSGTRGDFR : 2; /*!< [7..6] BSGTRGDFR */ + __IOM uint32_t BSCARBHL : 2; /*!< [9..8] BSCARBHL */ + __IOM uint32_t BSCAFBHL : 2; /*!< [11..10] BSCAFBHL */ + __IOM uint32_t BSCBRAHL : 2; /*!< [13..12] BSCBRAHL */ + __IOM uint32_t BSCBFAHL : 2; /*!< [15..14] BSCBFAHL */ + __IOM uint32_t BSELCA : 1; /*!< [16..16] BSELCA */ + __IOM uint32_t BSELCB : 1; /*!< [17..17] BSELCB */ + __IOM uint32_t BSELCC : 1; /*!< [18..18] BSELCC */ + __IOM uint32_t BSELCD : 1; /*!< [19..19] BSELCD */ + __IOM uint32_t BSELCE : 1; /*!< [20..20] BSELCE */ + __IOM uint32_t BSELCF : 1; /*!< [21..21] BSELCF */ + __IOM uint32_t BSELCG : 1; /*!< [22..22] BSELCG */ + __IOM uint32_t BSELCH : 1; /*!< [23..23] BSELCH */ + 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 at Count Stop */ + uint32_t : 7; + __IOM uint32_t MD : 3; /*!< [18..16] Mode Select */ + uint32_t : 4; + __IOM uint32_t TPCS : 4; /*!< [26..23] Timer Prescaler Select */ + uint32_t : 2; + __IOM uint32_t SWMD : 3; /*!< [31..29] Switch Mode Select */ + } 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] GTIOCnA Pin Output Duty Setting */ + __IOM uint32_t OADTYF : 1; /*!< [18..18] GTIOCnA Pin Output Duty Forced Setting */ + __IOM uint32_t OADTYR : 1; /*!< [19..19] Output after Release of GTIOCnA Pin Output 0%/100% + * Duty Cycle Settings */ + uint32_t : 4; + __IOM uint32_t OBDTY : 2; /*!< [25..24] GTIOCnB Pin Output Duty Setting */ + __IOM uint32_t OBDTYF : 1; /*!< [26..26] GTIOCnB Pin Output Duty Forced Setting */ + __IOM uint32_t OBDTYR : 1; /*!< [27..27] Output after Release of GTIOCnB Pin Output 0%/100% + * Duty Cycle Settings */ + 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] GTIOCnA Pin Function Select */ + uint32_t : 1; + __IOM uint32_t OADFLT : 1; /*!< [6..6] GTIOCnA Pin Output Value Setting at the Count Stop */ + __IOM uint32_t OAHLD : 1; /*!< [7..7] GTIOCnA Pin Output Retention at the Start/Stop Count */ + __IOM uint32_t OAE : 1; /*!< [8..8] GTIOCnA Pin Output Enable */ + __IOM uint32_t OADF : 2; /*!< [10..9] GTIOCnA Pin Negate Value Setting */ + uint32_t : 2; + __IOM uint32_t NFAEN : 1; /*!< [13..13] GTIOCnA Pin Input Noise Filter Enable */ + __IOM uint32_t NFCSA : 2; /*!< [15..14] GTIOCnA Pin Input Noise Filter Sampling Clock Select */ + __IOM uint32_t GTIOB : 5; /*!< [20..16] GTIOCnB Pin Function Select */ + uint32_t : 1; + __IOM uint32_t OBDFLT : 1; /*!< [22..22] GTIOCnB Pin Output Value Setting at the Count Stop */ + __IOM uint32_t OBHLD : 1; /*!< [23..23] GTIOCnB Pin Output Retention at the Start/Stop Count */ + __IOM uint32_t OBE : 1; /*!< [24..24] GTIOCnB Pin Output Enable */ + __IOM uint32_t OBDF : 2; /*!< [26..25] GTIOCnB Pin Negate Value Setting */ + uint32_t : 2; + __IOM uint32_t NFBEN : 1; /*!< [29..29] GTIOCnB Pin Input Noise Filter Enable */ + __IOM uint32_t NFCSB : 2; /*!< [31..30] GTIOCnB Pin Input Noise Filter Sampling Clock Select */ + } GTIOR_b; + }; + + union + { + __IOM uint32_t GTINTAD; /*!< (@ 0x00000038) General PWM Timer Interrupt Output Setting Register */ + + struct + { + __IOM uint32_t GTINTA : 1; /*!< [0..0] GTINTA */ + __IOM uint32_t GTINTB : 1; /*!< [1..1] GTINTB */ + __IOM uint32_t GTINTC : 1; /*!< [2..2] GTINTC */ + __IOM uint32_t GTINTD : 1; /*!< [3..3] GTINTD */ + __IOM uint32_t GTINTE : 1; /*!< [4..4] GTINTE */ + __IOM uint32_t GTINTF : 1; /*!< [5..5] GTINTF */ + __IOM uint32_t GTINTPR : 2; /*!< [7..6] GTINTPR */ + uint32_t : 8; + __IOM uint32_t ADTRAUEN : 1; /*!< [16..16] ADTRAUEN */ + __IOM uint32_t ADTRADEN : 1; /*!< [17..17] ADTRADEN */ + __IOM uint32_t ADTRBUEN : 1; /*!< [18..18] ADTRBUEN */ + __IOM uint32_t ADTRBDEN : 1; /*!< [19..19] ADTRBDEN */ + uint32_t : 4; + __IOM uint32_t GRP : 2; /*!< [25..24] Select the group to detect disabling of output (dead-time + * error or simultaneous driving of outputs to the high or + * low level) to POEG and to request of disabling of output + * from POEG. */ + uint32_t : 2; + __IOM uint32_t GRPDTE : 1; /*!< [28..28] GRPDTE */ + __IOM uint32_t GRPABH : 1; /*!< [29..29] (GTIOCnA pin and GTIOCnB output) */ + __IOM uint32_t GRPABL : 1; /*!< [30..30] (GTIOCnA pin and GTIOCnB output) */ + uint32_t : 1; + } GTINTAD_b; + }; + + union + { + __IOM uint32_t GTST; /*!< (@ 0x0000003C) General PWM Timer Status Register */ + + struct + { + uint32_t : 8; + __IM uint32_t ITCNT : 3; /*!< [10..8] GPTn_OVF/GPTn_UDF Interrupt Skipping Count Counter */ + uint32_t : 4; + __IM uint32_t TUCF : 1; /*!< [15..15] Count Direction Flag */ + __IOM uint32_t ADTRAUF : 1; /*!< [16..16] GTADTRA Register Compare Match (Up-Counting) A/D Converter + * Start Request Flag */ + __IOM uint32_t ADTRADF : 1; /*!< [17..17] GTADTRA Register Compare Match (Down-Counting) A/D + * Converter Start Request Flag */ + __IOM uint32_t ADTRBUF : 1; /*!< [18..18] GTADTRB Register Compare Match (Up-Counting) A/D Converter + * Start Request Flag */ + __IOM uint32_t ADTRBDF : 1; /*!< [19..19] GTADTRB Register Compare Match (Down-Counting) A/D + * Converter Start Request Flag */ + uint32_t : 4; + __IM uint32_t ODF : 1; /*!< [24..24] Output Stop Request Flag */ + uint32_t : 3; + __IM uint32_t DTEF : 1; /*!< [28..28] Dead Time Error Flag */ + __IM uint32_t OABHF : 1; /*!< [29..29] Simultaneous High Output Flag */ + __IM uint32_t OABLF : 1; /*!< [30..30] Simultaneous Low Output Flag */ + uint32_t : 1; + } GTST_b; + }; + + union + { + __IOM uint32_t GTBER; /*!< (@ 0x00000040) General PWM Timer Buffer Enable Register */ + + struct + { + __IOM uint32_t BD0 : 1; /*!< [0..0] GTCCRA/GTCCRB Registers Buffer Operation Disable */ + __IOM uint32_t BD1 : 1; /*!< [1..1] GTPR Register Buffer Operation Disable */ + __IOM uint32_t BD2 : 1; /*!< [2..2] GTADTRA/GTADTRB Registers Buffer Operation Disable */ + __IOM uint32_t BD3 : 1; /*!< [3..3] GTDVU/GTDVD Registers Buffer Operation Disable */ + uint32_t : 4; + __IOM uint32_t DBRTECA : 1; /*!< [8..8] GTCCRA Register Double Buffer Repeat Operation Enable */ + uint32_t : 1; + __IOM uint32_t DBRTECB : 1; /*!< [10..10] GTCCRB Register Double Buffer Repeat Operation Enable */ + uint32_t : 5; + __IOM uint32_t CCRA : 2; /*!< [17..16] GTCCRA Register Buffer Operation */ + __IOM uint32_t CCRB : 2; /*!< [19..18] GTCCRB Register Buffer Operation */ + __IOM uint32_t PR : 2; /*!< [21..20] GTPR Register Buffer Operation */ + __IOM uint32_t CCRSWT : 1; /*!< [22..22] GTCCRA and GTCCRB Registers Forcible Buffer Operation */ + uint32_t : 1; + __IOM uint32_t ADTTA : 2; /*!< [25..24] GTADTRA Register Buffer Transfer Timing Select */ + __IOM uint32_t ADTDA : 1; /*!< [26..26] GTADTRA Register Double Buffer Operation */ + uint32_t : 1; + __IOM uint32_t ADTTB : 2; /*!< [29..28] GTADTRB Register Buffer Transfer Timing Select */ + __IOM uint32_t ADTDB : 1; /*!< [30..30] GTADTRB Register 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] ITLA */ + __IOM uint32_t ITLB : 1; /*!< [1..1] ITLB */ + __IOM uint32_t ITLC : 1; /*!< [2..2] ITLC */ + __IOM uint32_t ITLD : 1; /*!< [3..3] ITLD */ + __IOM uint32_t ITLE : 1; /*!< [4..4] ITLE */ + __IOM uint32_t ITLF : 1; /*!< [5..5] ITLF */ + __IOM uint32_t IVTC : 2; /*!< [7..6] IVTC */ + __IOM uint32_t IVTT : 3; /*!< [10..8] IVTT */ + uint32_t : 1; + __IOM uint32_t ADTAL : 1; /*!< [12..12] ADTAL */ + uint32_t : 1; + __IOM uint32_t ADTBL : 1; /*!< [14..14] ADTBL */ + uint32_t : 17; + } GTITC_b; + }; + __IOM uint32_t GTCNT; /*!< (@ 0x00000048) General PWM Timer Counter */ + __IOM uint32_t GTCCR[6]; /*!< (@ 0x0000004C) General PWM Timer Compare Capture Register m + * (m = A to F) */ + __IOM uint32_t GTPR; /*!< (@ 0x00000064) General PWM Timer Cycle Setting Register */ + __IOM uint32_t GTPBR; /*!< (@ 0x00000068) General PWM Timer Cycle Setting Buffer Register */ + __IOM uint32_t GTPDBR; /*!< (@ 0x0000006C) General PWM Timer Cycle Setting Double-Buffer + * Register */ + __IOM uint32_t GTADTRA; /*!< (@ 0x00000070) A/D Converter Start Request Timing Register A + * (m = A, B) */ + __IOM uint32_t GTADTBRA; /*!< (@ 0x00000074) A/D Converter Start Request Timing Buffer Register + * A (m = A, B) */ + __IOM uint32_t GTADTDBRA; /*!< (@ 0x00000078) A/D Converter Start Request Timing Double-Buffer + * Register A */ + __IOM uint32_t GTADTRB; /*!< (@ 0x0000007C) A/D Converter Start Request Timing Register B + * (m = A, B) */ + __IOM uint32_t GTADTBRB; /*!< (@ 0x00000080) A/D Converter Start Request Timing Buffer Register + * B (m = A, B) */ + __IOM uint32_t GTADTDBRB; /*!< (@ 0x00000084) A/D Converter Start Request Timing Double-Buffer + * Register 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 Register Buffer Operation Enable */ + __IOM uint32_t TDBDE : 1; /*!< [5..5] GTDVD Register Buffer Operation Enable */ + uint32_t : 2; + __IOM uint32_t TDFER : 1; /*!< [8..8] GTDVD Register Setting */ + uint32_t : 23; + } GTDTCR_b; + }; + __IOM uint32_t GTDVU; /*!< (@ 0x0000008C) General PWM Timer Dead Time Value Register U + * (m = U, D) */ + __IOM uint32_t GTDVD; /*!< (@ 0x00000090) General PWM Timer Dead Time Value Register D + * (m = U, D) */ + __IOM uint32_t GTDBU; /*!< (@ 0x00000094) General PWM Timer Dead Time Value Buffer Register + * U (m = U, D) */ + __IOM uint32_t GTDBD; /*!< (@ 0x00000098) General PWM Timer Dead Time Value Buffer Register + * D (m = U, D) */ + + 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 / Input Capture Interrupt + * Extended Skipping Function Select */ + uint32_t : 1; + __IOM uint32_t EITLD : 3; /*!< [14..12] GTCCRD Register Compare Match / Input Capture Interrupt + * Extended Skipping Function Select */ + uint32_t : 1; + __IOM uint32_t EITLE : 3; /*!< [18..16] GTCCRE Register Compare Match / Input Capture Interrupt + * Extended Skipping Function Select */ + uint32_t : 1; + __IOM uint32_t EITLF : 3; /*!< [22..20] GTCCRF Register Compare Match / Input Capture 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 A/D Converter Start Request Extended Skipping + * Function Select */ + uint32_t : 1; + __IOM uint32_t EADTBL : 3; /*!< [6..4] GTADTRB A/D Converter 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; + }; + __IM uint32_t RESERVED[6]; + + 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 */ + uint32_t : 25; + } 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 : 20; + } GTSECR_b; + }; + + union + { + __IOM uint32_t GTSWSR; /*!< (@ 0x000000D8) General PWM Timer Switch Source Select Register */ + + struct + { + __IOM uint32_t WSGTRGA : 2; /*!< [1..0] GTETRGA Signal Edge Select to Switch Counter (GTETRGSA + * Signal for SAFTY) */ + __IOM uint32_t WSGTRGB : 2; /*!< [3..2] GTETRGB Signal Edge Select to Switch Counter (GTETRGSB + * Signal for SAFTY) */ + __IOM uint32_t WSGTRGC : 2; /*!< [5..4] GTETRGC Signal Edge Select to Switch Counter (GTETRGSC + * Signal for SAFTY) */ + __IOM uint32_t WSGTRGD : 2; /*!< [7..6] GTETRGD Signal Edge Select to Switch Counter (GTETRGSD + * Signal for SAFTY) */ + uint32_t : 8; + __IOM uint32_t WSELCA : 1; /*!< [16..16] Event Source Counter Switch Enable */ + __IOM uint32_t WSELCB : 1; /*!< [17..17] Event Source Counter Switch Enable */ + __IOM uint32_t WSELCC : 1; /*!< [18..18] Event Source Counter Switch Enable */ + __IOM uint32_t WSELCD : 1; /*!< [19..19] Event Source Counter Switch Enable */ + __IOM uint32_t WSELCE : 1; /*!< [20..20] Event Source Counter Switch Enable */ + __IOM uint32_t WSELCF : 1; /*!< [21..21] Event Source Counter Switch Enable */ + __IOM uint32_t WSELCG : 1; /*!< [22..22] Event Source Counter Switch Enable */ + __IOM uint32_t CSELCH : 1; /*!< [23..23] Event Source Counter Switch Enable */ + uint32_t : 8; + } GTSWSR_b; + }; + __IOM uint32_t GTSWOS; /*!< (@ 0x000000DC) General PWM Timer Switch Offset Setting Register */ +} R_GPT0_Type; /*!< Size = 224 (0xe0) */ + +/* =========================================================================================================================== */ +/* ================ R_SCI0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Serial Communication Interface 0 (R_SCI0) + */ + +typedef struct /*!< (@ 0x80001000) R_SCI0 Structure */ +{ + 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 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 : 22; + } TDR_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] BRME */ + 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 : 6; + __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; + }; + __IM uint32_t RESERVED; + + 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] IICINTM */ + __IOM uint32_t IICCSC : 1; /*!< [9..9] IICCSC */ + uint32_t : 3; + __IOM uint32_t IICACKT : 1; /*!< [13..13] IICACKT */ + uint32_t : 2; + __IOM uint32_t IICSTAREQ : 1; /*!< [16..16] IICSTAREQ */ + __IOM uint32_t IICRSTAREQ : 1; /*!< [17..17] IICRSTAREQ */ + __IOM uint32_t IICSTPREQ : 1; /*!< [18..18] IICSTPREQ */ + uint32_t : 1; + __IOM uint32_t IICSDAS : 2; /*!< [21..20] IICSDAS */ + __IOM uint32_t IICSCLS : 2; /*!< [23..22] IICSCLS */ + 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 */ + 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 RESERVED1[2]; + + 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; + }; + __IM uint32_t RESERVED2[5]; + + 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 */ + __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] ORER */ + uint32_t : 1; + __IM uint32_t MFF : 1; /*!< [26..26] Mode Fault Error Flag */ + __IM uint32_t PER : 1; /*!< [27..27] PER */ + __IM uint32_t FER : 1; /*!< [28..28] FER */ + __IM uint32_t TDRE : 1; /*!< [29..29] Transmit Data Empty Flag */ + __IM uint32_t TEND : 1; /*!< [30..30] TEND */ + __IM uint32_t RDRF : 1; /*!< [31..31] RDRF */ + } 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] DR */ + 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; + }; + __IM uint32_t RESERVED3[4]; + + union + { + __OM uint32_t CFCLR; /*!< (@ 0x00000068) Common Flag Clear Register */ + + struct + { + uint32_t : 4; + __OM uint32_t ERSC : 1; /*!< [4..4] ERSC */ + uint32_t : 11; + __OM uint32_t DCMFC : 1; /*!< [16..16] DCMFC */ + __OM uint32_t DPERC : 1; /*!< [17..17] DPERC */ + __OM uint32_t DFERC : 1; /*!< [18..18] DFERC */ + uint32_t : 5; + __OM uint32_t ORERC : 1; /*!< [24..24] ORERC */ + uint32_t : 1; + __OM uint32_t MFFC : 1; /*!< [26..26] MFFC */ + __OM uint32_t PERC : 1; /*!< [27..27] PERC */ + __OM uint32_t FERC : 1; /*!< [28..28] FERC */ + __OM uint32_t TDREC : 1; /*!< [29..29] TDREC */ + uint32_t : 1; + __OM uint32_t RDRFC : 1; /*!< [31..31] RDRFC */ + } CFCLR_b; + }; + + union + { + __OM uint32_t ICFCLR; /*!< (@ 0x0000006C) Simple I2C Flag Clear Register */ + + struct + { + uint32_t : 3; + __OM uint32_t IICSTIFC : 1; /*!< [3..3] IICSTIFC */ + uint32_t : 28; + } ICFCLR_b; + }; + + union + { + __OM uint32_t FFCLR; /*!< (@ 0x00000070) FIFO Flag Clear Register */ + + struct + { + __OM uint32_t DRC : 1; /*!< [0..0] DRC */ + uint32_t : 31; + } FFCLR_b; + }; +} R_SCI0_Type; /*!< Size = 116 (0x74) */ + +/* =========================================================================================================================== */ +/* ================ R_SPI0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Serial Peripheral Interface 0 (R_SPI0) + */ + +typedef struct /*!< (@ 0x80003000) R_SPI0 Structure */ +{ + union + { + union + { + __IOM uint32_t SPDR; /*!< (@ 0x00000000) SPI Data Register */ + + struct + { + __IOM uint32_t SPD : 32; /*!< [31..0] The SPI data register (SPDR) is used to store SPI's + * transmit data and receive data. Transmit buffers and receive + * buffers independently function. */ + } SPDR_b; + }; + __IOM uint16_t SPDR_HA; /*!< (@ 0x00000000) SPI Data Register */ + __IOM uint8_t SPDR_BY; /*!< (@ 0x00000000) SPI Data Register */ + }; + + union + { + __IOM uint8_t SPCKD; /*!< (@ 0x00000004) 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; /*!< (@ 0x00000005) SPI Slave Select Negation Delay Register */ + + struct + { + __IOM uint8_t SLNDL : 3; /*!< [2..0] SSL Negation Delay Bits */ + uint8_t : 5; + } SSLND_b; + }; + + union + { + __IOM uint8_t SPND; /*!< (@ 0x00000006) SPI Next-Access Delay Register */ + + struct + { + __IOM uint8_t SPNDL : 3; /*!< [2..0] SPI Next-Access Delay Bits */ + uint8_t : 5; + } SPND_b; + }; + + union + { + __IOM uint8_t MRCKD; /*!< (@ 0x00000007) SPI ClocK Digital control Register for Master + * Receive */ + + struct + { + __IOM uint8_t ARST : 3; /*!< [2..0] Receive Sampling Timing Adjustment Bits */ + uint8_t : 5; + } MRCKD_b; + }; + + union + { + __IOM uint32_t SPCR; /*!< (@ 0x00000008) SPI Control Register */ + + struct + { + __IOM uint32_t SPE : 1; /*!< [0..0] SPI Function Enable */ + uint32_t : 6; + __IOM uint32_t SPSCKSEL : 1; /*!< [7..7] SPI 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] SPI Error Interrupt Enable */ + __IOM uint32_t SPRIE : 1; /*!< [17..17] SPI Receive Buffer Full Interrupt Enable */ + __IOM uint32_t SPIIE : 1; /*!< [18..18] SPI Idle Interrupt Enable */ + __IOM uint32_t SPDRES : 1; /*!< [19..19] SPI Receive Data Ready Error Select */ + __IOM uint32_t SPTIE : 1; /*!< [20..20] SPI Transmit Buffer Empty Interrupt Enable */ + __IOM uint32_t CENDIE : 1; /*!< [21..21] SPI Communication End Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t SPMS : 1; /*!< [24..24] SPI Function Enable */ + __IOM uint32_t SPFRF : 1; /*!< [25..25] SPI Frame Format Select */ + uint32_t : 2; + __IOM uint32_t TXMD : 2; /*!< [29..28] Communication Mode Select */ + __IOM uint32_t MSTR : 1; /*!< [30..30] SPI Master/Slave Mode Select */ + __IOM uint32_t BPEN : 1; /*!< [31..31] Synchronization Circuit Bypass Enable */ + } SPCR_b; + }; + + union + { + __IOM uint8_t SPCRRM; /*!< (@ 0x0000000C) SPI Control Register for Master Receive only */ + + struct + { + __IOM uint8_t RMFM : 5; /*!< [4..0] Frame processing count setting in Master Receive only */ + uint8_t : 1; + __OM uint8_t RMEDTG : 1; /*!< [6..6] Reading value is always 0. */ + __OM uint8_t RMSTTG : 1; /*!< [7..7] Reading value is always 0. */ + } SPCRRM_b; + }; + + union + { + __IOM uint8_t SPDRCR; /*!< (@ 0x0000000D) SPI Control Register for Received Data Ready + * Detection */ + + struct + { + __IOM uint8_t SPDRC : 8; /*!< [7..0] SPDRC */ + } SPDRCR_b; + }; + + union + { + __IOM uint8_t SPPCR; /*!< (@ 0x0000000E) SPI Pin Control Register */ + + struct + { + __IOM uint8_t SPLP : 1; /*!< [0..0] SPI Loopback */ + __IOM uint8_t SPLP2 : 1; /*!< [1..1] SPI Loopback 2 */ + __IOM uint8_t SPOM : 1; /*!< [2..2] SPI Output Pin Mode */ + uint8_t : 1; + __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 SPCR2; /*!< (@ 0x0000000F) SPI Control Register 2 */ + + struct + { + __IOM uint8_t SPSCKDL : 3; /*!< [2..0] SPI Master Receive Clock Analog Delay */ + uint8_t : 5; + } SPCR2_b; + }; + + union + { + __IOM uint8_t SSLP; /*!< (@ 0x00000010) 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 */ + uint8_t : 4; + } SSLP_b; + }; + + union + { + __IOM uint8_t SPBR; /*!< (@ 0x00000011) SPI Bit Rate Register */ + + struct + { + __IOM uint8_t SPR : 8; /*!< [7..0] The SPBR register is used to set the bit rate in master + * mode. If SPBR is modified while SPCR.MSTR = 1 and SPCR.SPE + * = 1, subsequent operation is not guaranteed. */ + } SPBR_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint8_t SPSCR; /*!< (@ 0x00000013) SPI Sequence Control Register */ + + struct + { + __IOM uint8_t SPSLN : 3; /*!< [2..0] SPI Sequence Length Specification */ + uint8_t : 5; + } SPSCR_b; + }; + + union + { + __IOM uint32_t SPCMD[8]; /*!< (@ 0x00000014) SPI Command Register [0..7] (m = 0 to 7) */ + + 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] SPI LSB First */ + __IOM uint32_t SPNDEN : 1; /*!< [13..13] SPI 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] SPI Data Length */ + uint32_t : 3; + __IOM uint32_t SSLA : 2; /*!< [25..24] SSL Signal Assertion */ + uint32_t : 6; + } SPCMD_b[8]; + }; + __IM uint32_t RESERVED1[3]; + + union + { + __IOM uint16_t SPDCR; /*!< (@ 0x00000040) SPI Data Control Register */ + + struct + { + __IOM uint16_t BYSW : 1; /*!< [0..0] Byte Swap Operating Mode Select */ + __IOM uint16_t SLSEL : 2; /*!< [2..1] SSL Pin Output Select */ + __IOM uint16_t SPRDTD : 1; /*!< [3..3] SPI Receive Data or Transmit Data Selection */ + __IOM uint16_t SINV : 1; /*!< [4..4] Serial data invert */ + uint16_t : 3; + __IOM uint16_t SPFC : 2; /*!< [9..8] Frame Count */ + uint16_t : 6; + } SPDCR_b; + }; + __IM uint16_t RESERVED2; + + union + { + __IOM uint16_t SPDCR2; /*!< (@ 0x00000044) SPI Data Control Register 2 */ + + struct + { + __IOM uint16_t RTRG : 2; /*!< [1..0] Receive FIFO threshold setting */ + uint16_t : 6; + __IOM uint16_t TTRG : 2; /*!< [9..8] Transmission FIFO threshold setting */ + uint16_t : 6; + } SPDCR2_b; + }; + __IM uint16_t RESERVED3; + __IM uint32_t RESERVED4[2]; + __IM uint8_t RESERVED5; + + union + { + __IM uint8_t SPSSR; /*!< (@ 0x00000051) SPI Sequence Status Register */ + + struct + { + __IM uint8_t SPCP : 3; /*!< [2..0] SPI Command Pointer */ + uint8_t : 1; + __IM uint8_t SPECM : 3; /*!< [6..4] SPI Error Command */ + uint8_t : 1; + } SPSSR_b; + }; + + union + { + __IM uint16_t SPSR; /*!< (@ 0x00000052) SPI Status Register */ + + struct + { + uint16_t : 7; + __IM uint16_t SPDRF : 1; /*!< [7..7] SPI Receive Data Ready Flag */ + __IM uint16_t OVRF : 1; /*!< [8..8] Overrun Error Flag */ + __IM uint16_t IDLNF : 1; /*!< [9..9] SPI Idle Flag */ + __IM uint16_t MODF : 1; /*!< [10..10] Mode Fault Error Flag */ + __IM uint16_t PERF : 1; /*!< [11..11] Parity Error Flag */ + __IM uint16_t UDRF : 1; /*!< [12..12] Underrun Error Flag */ + __IM uint16_t SPTEF : 1; /*!< [13..13] SPI Transmit Buffer Empty Flag */ + __IM uint16_t CENDF : 1; /*!< [14..14] Communication End Flag */ + __IM uint16_t SPRF : 1; /*!< [15..15] SPI Receive Buffer Full Flag */ + } SPSR_b; + }; + __IM uint32_t RESERVED6; + + union + { + __IM uint8_t SPTFSR; /*!< (@ 0x00000058) SPI Transfer FIFO Status Register */ + + struct + { + __IM uint8_t TFDN : 3; /*!< [2..0] Transmit FIFO data empty stage number */ + uint8_t : 5; + } SPTFSR_b; + }; + __IM uint8_t RESERVED7; + __IM uint16_t RESERVED8; + + union + { + __IM uint8_t SPRFSR; /*!< (@ 0x0000005C) SPI Receive FIFO Status Register */ + + struct + { + __IM uint8_t RFDN : 3; /*!< [2..0] Receive FIFO data store stage number */ + uint8_t : 5; + } SPRFSR_b; + }; + __IM uint8_t RESERVED9; + __IM uint16_t RESERVED10; + + union + { + __IM uint32_t SPPSR; /*!< (@ 0x00000060) SPI Poling Register */ + + struct + { + __IM uint32_t SPEPS : 1; /*!< [0..0] SPI Polling Status */ + uint32_t : 31; + } SPPSR_b; + }; + __IM uint32_t RESERVED11; + __IM uint16_t RESERVED12; + + union + { + __IOM uint16_t SPSRC; /*!< (@ 0x0000006A) SPI Status Clear Register */ + + struct + { + uint16_t : 7; + __OM uint16_t SPDRFC : 1; /*!< [7..7] SPI Receive Data Ready Flag Clear */ + __OM uint16_t OVRFC : 1; /*!< [8..8] Overrun Error Flag Clear */ + uint16_t : 1; + __OM uint16_t MODFC : 1; /*!< [10..10] Mode Fault Error Flag Clear */ + __OM uint16_t PERFC : 1; /*!< [11..11] Parity Error Flag Clear */ + __OM uint16_t UDRFC : 1; /*!< [12..12] Underrun Error Flag Clear */ + __OM uint16_t SPTEFC : 1; /*!< [13..13] SPI Transmit Buffer Empty Flag Clear */ + __OM uint16_t CENDFC : 1; /*!< [14..14] Communication End Flag Clear */ + __OM uint16_t SPRFC : 1; /*!< [15..15] SPI Receive Buffer Full Flag Clear */ + } SPSRC_b; + }; + + union + { + __OM uint8_t SPFCR; /*!< (@ 0x0000006C) SPI FIFO Clear Register */ + + struct + { + __OM uint8_t SPFRST : 1; /*!< [0..0] SPI FIFO clear */ + uint8_t : 7; + } SPFCR_b; + }; + __IM uint8_t RESERVED13; + __IM uint16_t RESERVED14; +} R_SPI0_Type; /*!< Size = 112 (0x70) */ + +/* =========================================================================================================================== */ +/* ================ R_CRC0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief CRC Unit 0 (R_CRC0) + */ + +typedef struct /*!< (@ 0x80004000) R_CRC0 Structure */ +{ + union + { + __IOM uint8_t CRCCR0; /*!< (@ 0x00000000) CRC Control Register 0 */ + + 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; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + + union + { + __IOM uint32_t CRCDIR; /*!< (@ 0x00000004) CRC Data Input Register */ + __IOM uint8_t CRCDIR_BY; /*!< (@ 0x00000004) CRC Data Input Register */ + }; + + union + { + __IOM uint32_t CRCDOR; /*!< (@ 0x00000008) CRC Data Output Register */ + __IOM uint16_t CRCDOR_HA; /*!< (@ 0x00000008) CRC Data Output Register */ + __IOM uint8_t CRCDOR_BY; /*!< (@ 0x00000008) CRC Data Output Register */ + }; +} R_CRC0_Type; /*!< Size = 12 (0xc) */ + +/* =========================================================================================================================== */ +/* ================ R_CANFD ================ */ +/* =========================================================================================================================== */ + +/** + * @brief CAN-FD (R_CANFD) + */ + +typedef struct /*!< (@ 0x80020000) R_CANFD Structure */ +{ + __IOM R_CANFD_CFDC_Type CFDC[2]; /*!< (@ 0x00000000) CANFD Channel [0..1] Registers */ + __IM uint32_t RESERVED[24]; + + union + { + __IM uint32_t CFDGIPV; /*!< (@ 0x00000080) Global IP Version Register */ + + struct + { + __IM uint32_t IPV : 8; /*!< [7..0] IP Version */ + __IM uint32_t IPT : 2; /*!< [9..8] IP Type */ + uint32_t : 6; + __IM uint32_t PSI : 14; /*!< [29..16] Parameter Status Information */ + uint32_t : 2; + } CFDGIPV_b; + }; + + union + { + __IOM uint32_t CFDGCFG; /*!< (@ 0x00000084) 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 */ + __IOM uint32_t TSBTCS : 3; /*!< [15..13] Timestamp Bit Time Channel Select */ + __IOM uint32_t ITRCP : 16; /*!< [31..16] Interval Timer Reference Clock Prescaler */ + } CFDGCFG_b; + }; + + union + { + __IOM uint32_t CFDGCTR; /*!< (@ 0x00000088) 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 */ + __IOM uint32_t QOWEIE : 1; /*!< [12..12] TXQ Message Overwrite Error Interrupt Enable */ + uint32_t : 1; + __IOM uint32_t QMEIE : 1; /*!< [14..14] TXQ Message Lost Error Interrupt Enable */ + __IOM uint32_t MOWEIE : 1; /*!< [15..15] Message Lost Error Interrupt Enable */ + __IOM uint32_t TSRST : 1; /*!< [16..16] Timestamp Reset */ + uint32_t : 15; + } CFDGCTR_b; + }; + + union + { + __IM uint32_t CFDGSTS; /*!< (@ 0x0000008C) 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 Initialization */ + uint32_t : 28; + } CFDGSTS_b; + }; + + union + { + __IOM uint32_t CFDGERFL; /*!< (@ 0x00000090) 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 */ + __IM uint32_t QOWES : 1; /*!< [4..4] TXQ Message Overwrite Error Status */ + uint32_t : 1; + __IM uint32_t QMES : 1; /*!< [6..6] TXQ Message Lost Error Status */ + __IM uint32_t MOWES : 1; /*!< [7..7] Message Overwrite Error Status */ + uint32_t : 8; + __IOM uint32_t EEF0 : 1; /*!< [16..16] ECC Error Flag for Channel 0 */ + __IOM uint32_t EEF1 : 1; /*!< [17..17] ECC Error Flag for Channel 1 */ + uint32_t : 14; + } CFDGERFL_b; + }; + + union + { + __IM uint32_t CFDGTSC; /*!< (@ 0x00000094) Global Timestamp Counter Register */ + + struct + { + __IM uint32_t TS : 16; /*!< [15..0] Timestamp value */ + uint32_t : 16; + } CFDGTSC_b; + }; + + union + { + __IOM uint32_t CFDGAFLECTR; /*!< (@ 0x00000098) 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; /*!< (@ 0x0000009C) 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; + }; + __IM uint32_t RESERVED1[3]; + + union + { + __IOM uint32_t CFDRMNB; /*!< (@ 0x000000AC) 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; /*!< (@ 0x000000B0) RX Message Buffer New Data Register 0 */ + + struct + { + __IOM uint32_t RMNS : 32; /*!< [31..0] RX Message Buffer New Data Status */ + } CFDRMND0_b; + }; + __IM uint32_t RESERVED2[3]; + + union + { + __IOM uint32_t CFDRFCC[8]; /*!< (@ 0x000000C0) RX FIFO Configuration/Control Register [0..7] */ + + 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 */ + __IOM uint32_t RFFIE : 1; /*!< [16..16] RX FIFO Full Interrupt Enable */ + uint32_t : 15; + } CFDRFCC_b[8]; + }; + + union + { + __IOM uint32_t CFDRFSTS[8]; /*!< (@ 0x000000E0) RX FIFO Status Register [0..7] */ + + 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 */ + __IOM uint32_t RFFIF : 1; /*!< [16..16] RX FIFO Full Interrupt Flag */ + uint32_t : 15; + } CFDRFSTS_b[8]; + }; + + union + { + __IOM uint32_t CFDRFPCTR[8]; /*!< (@ 0x00000100) RX FIFO Pointer Control Register [0..7] */ + + struct + { + __IOM uint32_t RFPC : 8; /*!< [7..0] RX FIFO Pointer Control */ + uint32_t : 24; + } CFDRFPCTR_b[8]; + }; + + union + { + __IOM uint32_t CFDCFCC[6]; /*!< (@ 0x00000120) Common FIFO Configuration/Control Register [0..5] */ + + 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[6]; + }; + __IM uint32_t RESERVED3[18]; + + union + { + __IOM uint32_t CFDCFCCE[6]; /*!< (@ 0x00000180) Common FIFO Configuration/Control Enhancement + * Register [0..5] */ + + struct + { + __IOM uint32_t CFFIE : 1; /*!< [0..0] Common FIFO Full Interrupt Enable */ + __IOM uint32_t CFOFRXIE : 1; /*!< [1..1] Common FIFO One Frame Reception Interrupt Enable */ + __IOM uint32_t CFOFTXIE : 1; /*!< [2..2] Common FIFO One Frame Transmission Interrupt Enable */ + uint32_t : 5; + __IOM uint32_t CFMOWM : 1; /*!< [8..8] Common FIFO Message Overwrite Mode */ + uint32_t : 7; + __IOM uint32_t CFBME : 1; /*!< [16..16] Common FIFO Buffering Mode Enable */ + uint32_t : 15; + } CFDCFCCE_b[6]; + }; + __IM uint32_t RESERVED4[18]; + + union + { + __IOM uint32_t CFDCFSTS[6]; /*!< (@ 0x000001E0) Common FIFO Status Register [0..5] */ + + 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 */ + __IOM uint32_t CFFIF : 1; /*!< [16..16] Common FIFO Full Interrupt Flag */ + __IOM uint32_t CFOFRXIF : 1; /*!< [17..17] Common FIFO One Frame Reception Interrupt Flag */ + __IOM uint32_t CFOFTXIF : 1; /*!< [18..18] Common FIFO One Frame Transmission Interrupt Flag */ + uint32_t : 5; + __IOM uint32_t CFMOW : 1; /*!< [24..24] Common FIFO Message Overwrite */ + uint32_t : 7; + } CFDCFSTS_b[6]; + }; + __IM uint32_t RESERVED5[18]; + + union + { + __OM uint32_t CFDCFPCTR[6]; /*!< (@ 0x00000240) Common FIFO Pointer Control Register [0..5] */ + + struct + { + __OM uint32_t CFPC : 8; /*!< [7..0] Common FIFO Pointer Control */ + uint32_t : 24; + } CFDCFPCTR_b[6]; + }; + __IM uint32_t RESERVED6[18]; + + union + { + __IM uint32_t CFDFESTS; /*!< (@ 0x000002A0) FIFO Empty Status Register */ + + struct + { + __IM uint32_t RFXEMP : 8; /*!< [7..0] RX FIFO Empty Status */ + __IM uint32_t CFXEMP : 6; /*!< [13..8] Common FIFO Empty Status */ + uint32_t : 18; + } CFDFESTS_b; + }; + + union + { + __IM uint32_t CFDFFSTS; /*!< (@ 0x000002A4) FIFO Full Status Register */ + + struct + { + __IM uint32_t RFXFLL : 8; /*!< [7..0] RX FIFO Full Status */ + __IM uint32_t CFXFLL : 6; /*!< [13..8] Common FIFO Full Status */ + uint32_t : 18; + } CFDFFSTS_b; + }; + + union + { + __IM uint32_t CFDFMSTS; /*!< (@ 0x000002A8) FIFO Message Lost Status Register */ + + struct + { + __IM uint32_t RFXMLT : 8; /*!< [7..0] RX FIFO Message Lost Status */ + __IM uint32_t CFXMLT : 6; /*!< [13..8] Common FIFO Message Lost Status */ + uint32_t : 18; + } CFDFMSTS_b; + }; + + union + { + __IM uint32_t CFDRFISTS; /*!< (@ 0x000002AC) RX FIFO Interrupt Flag Status Register */ + + struct + { + __IM uint32_t RFXIF : 8; /*!< [7..0] RX FIFO[x] Interrupt Flag Status */ + uint32_t : 8; + __IM uint32_t RFXFFLL : 8; /*!< [23..16] RX FIFO[x] Interrupt Full Flag Status */ + uint32_t : 8; + } CFDRFISTS_b; + }; + + union + { + __IM uint32_t CFDCFRISTS; /*!< (@ 0x000002B0) Common FIFO RX Interrupt Flag Status Register */ + + struct + { + __IM uint32_t CFXRXIF : 6; /*!< [5..0] Common FIFO RX Interrupt Flag Status */ + uint32_t : 26; + } CFDCFRISTS_b; + }; + + union + { + __IM uint32_t CFDCFTISTS; /*!< (@ 0x000002B4) Common FIFO TX Interrupt Flag Status Register */ + + struct + { + __IM uint32_t CFXTXIF : 6; /*!< [5..0] Common FIFO TX Interrupt Flag Status */ + uint32_t : 26; + } CFDCFTISTS_b; + }; + + union + { + __IM uint32_t CFDCFOFRISTS; /*!< (@ 0x000002B8) Common FIFO One Frame RX Interrupt Flag Status + * Register */ + + struct + { + __IM uint32_t CFXOFRXIF : 6; /*!< [5..0] Common FIFO One Frame RX Interrupt Flag Status */ + uint32_t : 26; + } CFDCFOFRISTS_b; + }; + + union + { + __IM uint32_t CFDCFOFTISTS; /*!< (@ 0x000002BC) Common FIFO One Frame TX Interrupt Flag Status + * Register */ + + struct + { + __IM uint32_t CFXOFTXIF : 6; /*!< [5..0] Common FIFO One Frame TX Interrupt Flag Status */ + uint32_t : 26; + } CFDCFOFTISTS_b; + }; + + union + { + __IM uint32_t CFDCFMOWSTS; /*!< (@ 0x000002C0) Common FIFO Message Overwrite Status Register */ + + struct + { + __IM uint32_t CFXMOW : 6; /*!< [5..0] Common FIFO Massage Overwrite Status */ + uint32_t : 26; + } CFDCFMOWSTS_b; + }; + + union + { + __IM uint32_t CFDFFFSTS; /*!< (@ 0x000002C4) FIFO FDC Full Status Register */ + + struct + { + __IM uint32_t RFXFFLL : 8; /*!< [7..0] RX FIFO FDC Level Full Status */ + __IM uint32_t CFXFFLL : 6; /*!< [13..8] COMMON FIFO FDC Level Full Status */ + uint32_t : 18; + } CFDFFFSTS_b; + }; + __IM uint32_t RESERVED7[2]; + + union + { + __IOM uint8_t CFDTMC[128]; /*!< (@ 0x000002D0) TX Message Buffer Control Register [0..127] */ + + 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[128]; + }; + __IM uint32_t RESERVED8[288]; + + union + { + __IOM uint8_t CFDTMSTS[128]; /*!< (@ 0x000007D0) TX Message Buffer Status Register [0..127] */ + + 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[128]; + }; + __IM uint32_t RESERVED9[288]; + + union + { + __IM uint32_t CFDTMTRSTS[4]; /*!< (@ 0x00000CD0) TX Message Buffer Transmission Request Status + * Register [0..3] */ + + struct + { + __IM uint32_t TMTRSTS : 16; /*!< [15..0] TX Message Buffer Transmission Request Status */ + uint32_t : 16; + } CFDTMTRSTS_b[4]; + }; + __IM uint32_t RESERVED10[36]; + + union + { + __IM uint32_t CFDTMTARSTS[4]; /*!< (@ 0x00000D70) TX Message Buffer Transmission Abort Request + * Status Register [0..3] */ + + struct + { + __IM uint32_t TMTARSTS : 16; /*!< [15..0] TX Message Buffer Transmission Abort Request Status */ + uint32_t : 16; + } CFDTMTARSTS_b[4]; + }; + __IM uint32_t RESERVED11[36]; + + union + { + __IM uint32_t CFDTMTCSTS[4]; /*!< (@ 0x00000E10) TX Message Buffer Transmission Completion Status + * Register [0..3] */ + + struct + { + __IM uint32_t TMTCSTS : 16; /*!< [15..0] TX Message Buffer Transmission Completion Status */ + uint32_t : 16; + } CFDTMTCSTS_b[4]; + }; + __IM uint32_t RESERVED12[36]; + + union + { + __IM uint32_t CFDTMTASTS[4]; /*!< (@ 0x00000EB0) TX Message Buffer Transmission Abort Status Register + * [0..3] */ + + struct + { + __IM uint32_t TMTASTS : 16; /*!< [15..0] TX Message Buffer Transmission Abort Status */ + uint32_t : 16; + } CFDTMTASTS_b[4]; + }; + __IM uint32_t RESERVED13[36]; + + union + { + __IOM uint32_t CFDTMIEC[4]; /*!< (@ 0x00000F50) TX Message Buffer Transmission Interrupt Enable + * Register [0..3] */ + + struct + { + __IOM uint32_t TMIE : 16; /*!< [15..0] TX Message Buffer Interrupt Enable */ + uint32_t : 16; + } CFDTMIEC_b[4]; + }; + __IM uint32_t RESERVED14[40]; + + union + { + __IOM uint32_t CFDTXQCC0[2]; /*!< (@ 0x00001000) TX Queue Configuration/Control Register 0[0..1] */ + + struct + { + __IOM uint32_t TXQE : 1; /*!< [0..0] TX Queue Enable */ + __IOM uint32_t TXQGWE : 1; /*!< [1..1] TX Queue Gateway Mode Enable */ + __IOM uint32_t TXQOWE : 1; /*!< [2..2] TX Queue Overwrite Mode Enable */ + uint32_t : 2; + __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 : 5; /*!< [12..8] TX Queue Depth Configuration */ + uint32_t : 3; + __IOM uint32_t TXQFIE : 1; /*!< [16..16] TXQ Full Interrupt Enable */ + __IOM uint32_t TXQOFRXIE : 1; /*!< [17..17] TXQ One Frame Reception Interrupt Enable */ + __IOM uint32_t TXQOFTXIE : 1; /*!< [18..18] TXQ One Frame Transmission Interrupt Enable */ + uint32_t : 13; + } CFDTXQCC0_b[2]; + }; + __IM uint32_t RESERVED15[6]; + + union + { + __IOM uint32_t CFDTXQSTS0[2]; /*!< (@ 0x00001020) TX Queue Status Register 0[0..1] */ + + 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 : 2; + __IOM uint32_t TXQFIF : 1; /*!< [16..16] TXQ Full Interrupt Flag */ + __IOM uint32_t TXQOFRXIF : 1; /*!< [17..17] TXQ One Frame Reception Interrupt Flag */ + __IOM uint32_t TXQOFTXIF : 1; /*!< [18..18] TXQ One Frame Transmission Interrupt Flag */ + __IOM uint32_t TXQMLT : 1; /*!< [19..19] TXQ Message Lost */ + __IOM uint32_t TXQMOW : 1; /*!< [20..20] TXQ Message Overwrite */ + uint32_t : 11; + } CFDTXQSTS0_b[2]; + }; + __IM uint32_t RESERVED16[6]; + + union + { + __OM uint32_t CFDTXQPCTR0[2]; /*!< (@ 0x00001040) TX Queue Pointer Control Register 0[0..1] */ + + struct + { + __OM uint32_t TXQPC : 8; /*!< [7..0] TX Queue Pointer Control */ + uint32_t : 24; + } CFDTXQPCTR0_b[2]; + }; + __IM uint32_t RESERVED17[6]; + + union + { + __IOM uint32_t CFDTXQCC1[2]; /*!< (@ 0x00001060) TX Queue Configuration/Control Register 1[0..1] */ + + struct + { + __IOM uint32_t TXQE : 1; /*!< [0..0] TX Queue Enable */ + __IOM uint32_t TXQGWE : 1; /*!< [1..1] TX Queue Gateway Mode Enable */ + __IOM uint32_t TXQOWE : 1; /*!< [2..2] TX Queue Overwrite Mode Enable */ + uint32_t : 2; + __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 : 5; /*!< [12..8] TX Queue Depth Configuration */ + uint32_t : 3; + __IOM uint32_t TXQFIE : 1; /*!< [16..16] TXQ Full Interrupt Enable */ + __IOM uint32_t TXQOFRXIE : 1; /*!< [17..17] TXQ One Frame Reception Interrupt Enable */ + __IOM uint32_t TXQOFTXIE : 1; /*!< [18..18] TXQ One Frame Transmission Interrupt Enable */ + uint32_t : 13; + } CFDTXQCC1_b[2]; + }; + __IM uint32_t RESERVED18[6]; + + union + { + __IOM uint32_t CFDTXQSTS1[2]; /*!< (@ 0x00001080) TX Queue Status Register 1[0..1] */ + + 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 : 2; + __IOM uint32_t TXQFIF : 1; /*!< [16..16] TXQ Full Interrupt Flag */ + __IOM uint32_t TXQOFRXIF : 1; /*!< [17..17] TXQ One Frame Reception Interrupt Flag */ + __IOM uint32_t TXQOFTXIF : 1; /*!< [18..18] TXQ One Frame Transmission Interrupt Flag */ + __IOM uint32_t TXQMLT : 1; /*!< [19..19] TXQ Message Lost */ + __IOM uint32_t TXQMOW : 1; /*!< [20..20] TXQ Message Overwrite */ + uint32_t : 11; + } CFDTXQSTS1_b[2]; + }; + __IM uint32_t RESERVED19[6]; + + union + { + __OM uint32_t CFDTXQPCTR1[2]; /*!< (@ 0x000010A0) TX Queue Pointer Control Register 1[0..1] */ + + struct + { + __OM uint32_t TXQPC : 8; /*!< [7..0] TX Queue Pointer Control */ + uint32_t : 24; + } CFDTXQPCTR1_b[2]; + }; + __IM uint32_t RESERVED20[6]; + + union + { + __IOM uint32_t CFDTXQCC2[2]; /*!< (@ 0x000010C0) TX Queue Configuration/Control Register 2[0..1] */ + + struct + { + __IOM uint32_t TXQE : 1; /*!< [0..0] TX Queue Enable */ + __IOM uint32_t TXQGWE : 1; /*!< [1..1] TX Queue Gateway Mode Enable */ + __IOM uint32_t TXQOWE : 1; /*!< [2..2] TX Queue Overwrite Mode Enable */ + uint32_t : 2; + __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 : 5; /*!< [12..8] TX Queue Depth Configuration */ + uint32_t : 3; + __IOM uint32_t TXQFIE : 1; /*!< [16..16] TXQ Full Interrupt Enable */ + __IOM uint32_t TXQOFRXIE : 1; /*!< [17..17] TXQ One Frame Reception Interrupt Enable */ + __IOM uint32_t TXQOFTXIE : 1; /*!< [18..18] TXQ One Frame Transmission Interrupt Enable */ + uint32_t : 13; + } CFDTXQCC2_b[2]; + }; + __IM uint32_t RESERVED21[6]; + + union + { + __IOM uint32_t CFDTXQSTS2[2]; /*!< (@ 0x000010E0) TX Queue Status Register 2[0..1] */ + + 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 : 2; + __IOM uint32_t TXQFIF : 1; /*!< [16..16] TXQ Full Interrupt Flag */ + __IOM uint32_t TXQOFRXIF : 1; /*!< [17..17] TXQ One Frame Reception Interrupt Flag */ + __IOM uint32_t TXQOFTXIF : 1; /*!< [18..18] TXQ One Frame Transmission Interrupt Flag */ + __IOM uint32_t TXQMLT : 1; /*!< [19..19] TXQ Message Lost */ + __IOM uint32_t TXQMOW : 1; /*!< [20..20] TXQ Message Overwrite */ + uint32_t : 11; + } CFDTXQSTS2_b[2]; + }; + __IM uint32_t RESERVED22[6]; + + union + { + __OM uint32_t CFDTXQPCTR2[2]; /*!< (@ 0x00001100) TX Queue Pointer Control Register 2[0..1] */ + + struct + { + __OM uint32_t TXQPC : 8; /*!< [7..0] TX Queue Pointer Control */ + uint32_t : 24; + } CFDTXQPCTR2_b[2]; + }; + __IM uint32_t RESERVED23[6]; + + union + { + __IOM uint32_t CFDTXQCC3[2]; /*!< (@ 0x00001120) TX Queue Configuration/Control Register 3[0..1] */ + + struct + { + __IOM uint32_t TXQE : 1; /*!< [0..0] TX Queue Enable */ + uint32_t : 1; + __IOM uint32_t TXQOWE : 1; /*!< [2..2] TX Queue Overwrite Mode Enable */ + uint32_t : 2; + __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 : 5; /*!< [12..8] TX Queue Depth Configuration */ + uint32_t : 5; + __IOM uint32_t TXQOFTXIE : 1; /*!< [18..18] TXQ One Frame Transmission Interrupt Enable */ + uint32_t : 13; + } CFDTXQCC3_b[2]; + }; + __IM uint32_t RESERVED24[6]; + + union + { + __IOM uint32_t CFDTXQSTS3[2]; /*!< (@ 0x00001140) TX Queue Status Register 3[0..1] */ + + 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 : 4; + __IOM uint32_t TXQOFTXIF : 1; /*!< [18..18] TXQ One Frame Transmission Interrupt Flag */ + uint32_t : 1; + __IOM uint32_t TXQMOW : 1; /*!< [20..20] TXQ Message Overwrite */ + uint32_t : 11; + } CFDTXQSTS3_b[2]; + }; + __IM uint32_t RESERVED25[6]; + + union + { + __OM uint32_t CFDTXQPCTR3[2]; /*!< (@ 0x00001160) TX Queue Pointer Control Register 3[0..1] */ + + struct + { + __OM uint32_t TXQPC : 8; /*!< [7..0] TX Queue Pointer Control */ + uint32_t : 24; + } CFDTXQPCTR3_b[2]; + }; + __IM uint32_t RESERVED26[6]; + + union + { + __IM uint32_t CFDTXQESTS; /*!< (@ 0x00001180) TX Queue Empty Status Register */ + + struct + { + __IM uint32_t TXQxEMP : 8; /*!< [7..0] TXQ Empty Status */ + uint32_t : 24; + } CFDTXQESTS_b; + }; + + union + { + __IM uint32_t CFDTXQFISTS; /*!< (@ 0x00001184) TX Queue Full Interrupt Status Register */ + + struct + { + __IM uint32_t TXQ0FULL : 3; /*!< [2..0] TXQ Full Interrupt Status Flag for Channel 0 */ + uint32_t : 1; + __IM uint32_t TXQ1FULL : 3; /*!< [6..4] TXQ Full Interrupt Status Flag for Channel 1 */ + uint32_t : 25; + } CFDTXQFISTS_b; + }; + + union + { + __IM uint32_t CFDTXQMSTS; /*!< (@ 0x00001188) TX Queue Message Lost Status Register */ + + struct + { + __IM uint32_t TXQ0ML : 3; /*!< [2..0] TXQ Message Lost Status Flag for Channel 0 */ + uint32_t : 1; + __IM uint32_t TXQ1ML : 3; /*!< [6..4] TXQ Message Lost Status Flag for Channel 1 */ + uint32_t : 25; + } CFDTXQMSTS_b; + }; + __IM uint32_t RESERVED27; + + union + { + __IM uint32_t CFDTXQISTS; /*!< (@ 0x00001190) TX Queue Interrupt Status Register */ + + struct + { + __IM uint32_t TXQ0ISF : 4; /*!< [3..0] TXQ Interrupt Status Flag for Channel 0 */ + __IM uint32_t TXQ1ISF : 4; /*!< [7..4] TXQ Interrupt Status Flag for Channel 1 */ + uint32_t : 24; + } CFDTXQISTS_b; + }; + + union + { + __IM uint32_t CFDTXQOFTISTS; /*!< (@ 0x00001194) TX Queue One Frame TX Interrupt Status Register */ + + struct + { + __IM uint32_t TXQ0OFTISF : 4; /*!< [3..0] TXQ One Frame TX Interrupt Status Flag for Channel 0 */ + __IM uint32_t TXQ1OFTISF : 4; /*!< [7..4] TXQ One Frame TX Interrupt Status Flag for Channel 1 */ + uint32_t : 24; + } CFDTXQOFTISTS_b; + }; + + union + { + __IM uint32_t CFDTXQOFRISTS; /*!< (@ 0x00001198) TX Queue One Frame RX Interrupt Status Register */ + + struct + { + __IM uint32_t TXQ0OFRISF : 3; /*!< [2..0] TXQ One Frame RX Interrupt Status Flag for Channel 0 */ + uint32_t : 1; + __IM uint32_t TXQ1OFRISF : 3; /*!< [6..4] TXQ One Frame RX Interrupt Status Flag for Channel 1 */ + uint32_t : 25; + } CFDTXQOFRISTS_b; + }; + + union + { + __IM uint32_t CFDTXQFSTS; /*!< (@ 0x0000119C) TX Queue Full Status Register */ + + struct + { + __IM uint32_t TXQ0FSF : 4; /*!< [3..0] TXQ Full Status Flag for Channel 0 */ + __IM uint32_t TXQ1FSF : 4; /*!< [7..4] TXQ Full Status Flag for Channel 1 */ + uint32_t : 24; + } CFDTXQFSTS_b; + }; + __IM uint32_t RESERVED28[24]; + + union + { + __IOM uint32_t CFDTHLCC[2]; /*!< (@ 0x00001200) TX History List Configuration/Control Register + * [0..1] */ + + 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 */ + __IOM uint32_t THLDGE : 1; /*!< [11..11] TX History List Dedicated Gateway Enable */ + uint32_t : 20; + } CFDTHLCC_b[2]; + }; + __IM uint32_t RESERVED29[6]; + + union + { + __IOM uint32_t CFDTHLSTS[2]; /*!< (@ 0x00001220) TX History List Status Register [0..1] */ + + 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[2]; + }; + __IM uint32_t RESERVED30[6]; + + union + { + __OM uint32_t CFDTHLPCTR[2]; /*!< (@ 0x00001240) TX History List Pointer Control Register [0..1] */ + + struct + { + __OM uint32_t THLPC : 8; /*!< [7..0] TX History List Pointer Control */ + uint32_t : 24; + } CFDTHLPCTR_b[2]; + }; + __IM uint32_t RESERVED31[46]; + + union + { + __IM uint32_t CFDGTINTSTS0; /*!< (@ 0x00001300) 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 */ + __IM uint32_t TQOFIF0 : 1; /*!< [5..5] TX Queue One Frame Transmission Interrupt Flag Channel + * 0 */ + __IM uint32_t CFOTIF0 : 1; /*!< [6..6] COM FIFO One Frame Transmission Interrupt Flag Channel + * 0 */ + uint32_t : 1; + __IM uint32_t TSIF1 : 1; /*!< [8..8] TX Successful Interrupt Flag Channel 1 */ + __IM uint32_t TAIF1 : 1; /*!< [9..9] TX Abort Interrupt Flag Channel 1 */ + __IM uint32_t TQIF1 : 1; /*!< [10..10] TX Queue Interrupt Flag Channel 1 */ + __IM uint32_t CFTIF1 : 1; /*!< [11..11] COM FIFO TX/GW Mode Interrupt Flag Channel 1 */ + __IM uint32_t THIF1 : 1; /*!< [12..12] TX History List Interrupt Channel 1 */ + __IM uint32_t TQOFIF1 : 1; /*!< [13..13] TX Queue One Frame Transmission Interrupt Flag Channel + * 1 */ + __IM uint32_t CFOTIF1 : 1; /*!< [14..14] COM FIFO One Frame Transmission Interrupt Flag Channel + * 1 */ + uint32_t : 17; + } CFDGTINTSTS0_b; + }; + __IM uint32_t RESERVED32; + + union + { + __IOM uint32_t CFDGTSTCFG; /*!< (@ 0x00001308) Global Test Configuration Register */ + + struct + { + __IOM uint32_t C0ICBCE : 1; /*!< [0..0] Channel 0 Internal CAN Bus Communication Test Mode Enable */ + __IOM uint32_t C1ICBCE : 1; /*!< [1..1] Channel 1 Internal CAN Bus Communication Test Mode Enable */ + uint32_t : 14; + __IOM uint32_t RTMPS : 10; /*!< [25..16] RAM Test Mode Page Select */ + uint32_t : 6; + } CFDGTSTCFG_b; + }; + + union + { + __IOM uint32_t CFDGTSTCTR; /*!< (@ 0x0000130C) Global Test Control Register */ + + struct + { + __IOM uint32_t ICBCTME : 1; /*!< [0..0] Internal CAN Bus Communication Test Mode Enable */ + uint32_t : 1; + __IOM uint32_t RTME : 1; /*!< [2..2] RAM Test Mode Enable */ + uint32_t : 29; + } CFDGTSTCTR_b; + }; + __IM uint32_t RESERVED33; + + union + { + __IOM uint32_t CFDGFDCFG; /*!< (@ 0x00001314) 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 RESERVED34; + + union + { + __OM uint32_t CFDGLOCKK; /*!< (@ 0x0000131C) Global Lock Key Register */ + + struct + { + __OM uint32_t LOCK : 16; /*!< [15..0] Lock Key */ + uint32_t : 16; + } CFDGLOCKK_b; + }; + __IM uint32_t RESERVED35[4]; + + union + { + __IOM uint32_t CFDCDTCT; /*!< (@ 0x00001330) DMA Transfer Control Register */ + + struct + { + __IOM uint32_t RFDMAE0 : 1; /*!< [0..0] DMA Transfer Enable for RX FIFO 0 */ + __IOM uint32_t RFDMAE1 : 1; /*!< [1..1] DMA Transfer Enable for RX FIFO 1 */ + __IOM uint32_t RFDMAE2 : 1; /*!< [2..2] DMA Transfer Enable for RX FIFO 2 */ + __IOM uint32_t RFDMAE3 : 1; /*!< [3..3] DMA Transfer Enable for RX FIFO 3 */ + __IOM uint32_t RFDMAE4 : 1; /*!< [4..4] DMA Transfer Enable for RX FIFO 4 */ + __IOM uint32_t RFDMAE5 : 1; /*!< [5..5] DMA Transfer Enable for RX FIFO 5 */ + __IOM uint32_t RFDMAE6 : 1; /*!< [6..6] DMA Transfer Enable for RX FIFO 6 */ + __IOM uint32_t RFDMAE7 : 1; /*!< [7..7] DMA Transfer Enable for RX FIFO 7 */ + __IOM uint32_t CFDMAE0 : 1; /*!< [8..8] DMA Transfer Enable for Common FIFO 0 of Channel 0 */ + __IOM uint32_t CFDMAE1 : 1; /*!< [9..9] DMA Transfer Enable for Common FIFO 0 of Channel 1 */ + uint32_t : 22; + } CFDCDTCT_b; + }; + + union + { + __IM uint32_t CFDCDTSTS; /*!< (@ 0x00001334) 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 */ + __IM uint32_t RFDMASTS2 : 1; /*!< [2..2] DMA Transfer Status for RX FIFO 2 */ + __IM uint32_t RFDMASTS3 : 1; /*!< [3..3] DMA Transfer Status for RX FIFO 3 */ + __IM uint32_t RFDMASTS4 : 1; /*!< [4..4] DMA Transfer Status for RX FIFO 4 */ + __IM uint32_t RFDMASTS5 : 1; /*!< [5..5] DMA Transfer Status for RX FIFO 5 */ + __IM uint32_t RFDMASTS6 : 1; /*!< [6..6] DMA Transfer Status for RX FIFO 6 */ + __IM uint32_t RFDMASTS7 : 1; /*!< [7..7] DMA Transfer Status for RX FIFO 7 */ + __IM uint32_t CFDMASTS0 : 1; /*!< [8..8] DMA Transfer Status only for Common FIFO 0 of Channel + * 0 */ + __IM uint32_t CFDMASTS1 : 1; /*!< [9..9] DMA Transfer Status only for Common FIFO 0 of Channel + * 1 */ + uint32_t : 22; + } CFDCDTSTS_b; + }; + __IM uint32_t RESERVED36[2]; + + union + { + __IOM uint32_t CFDCDTTCT; /*!< (@ 0x00001340) DMA TX Transfer Control Register */ + + struct + { + __IOM uint32_t TQ0DMAE0 : 1; /*!< [0..0] DMA TX Transfer Enable for TXQ 0 of Channel 0 */ + __IOM uint32_t TQ0DMAE1 : 1; /*!< [1..1] DMA TX Transfer Enable for TXQ 0 of Channel 1 */ + uint32_t : 6; + __IOM uint32_t TQ3DMAE0 : 1; /*!< [8..8] DMA TX Transfer Enable for TXQ 3 of Channel 0 */ + __IOM uint32_t TQ3DMAE1 : 1; /*!< [9..9] DMA TX Transfer Enable for TXQ 3 of Channel 1 */ + uint32_t : 6; + __IOM uint32_t CFDMAE0 : 1; /*!< [16..16] DMA TX Transfer Enable for Common FIFO 2 of Channel + * 0 */ + __IOM uint32_t CFDMAE1 : 1; /*!< [17..17] DMA TX Transfer Enable for Common FIFO 2 of Channel + * 1 */ + uint32_t : 14; + } CFDCDTTCT_b; + }; + + union + { + __IM uint32_t CFDCDTTSTS; /*!< (@ 0x00001344) DMA TX Transfer Status Register */ + + struct + { + __IM uint32_t TQ0DMASTS0 : 1; /*!< [0..0] DMA TX Transfer Status for TXQ0 of Channel 0 */ + __IM uint32_t TQ0DMASTS1 : 1; /*!< [1..1] DMA TX Transfer Status for TXQ0 of Channel 1 */ + uint32_t : 6; + __IM uint32_t TQ3DMASTS0 : 1; /*!< [8..8] DMA TX Transfer Status for TXQ3 of Channel 0 */ + __IM uint32_t TQ3DMASTS1 : 1; /*!< [9..9] DMA TX Transfer Status for TXQ3 of Channel 1 */ + uint32_t : 6; + __IM uint32_t CFDMASTS0 : 1; /*!< [16..16] DMA TX Transfer Status for Common FIFO 2 of Channel + * 0 */ + __IM uint32_t CFDMASTS1 : 1; /*!< [17..17] DMA TX Transfer Status for Common FIFO 2 of Channel + * 1 */ + uint32_t : 14; + } CFDCDTTSTS_b; + }; + __IM uint32_t RESERVED37[2]; + + union + { + __IM uint32_t CFDGRINTSTS[2]; /*!< (@ 0x00001350) Global RX Interrupt Status Register [0..1] */ + + struct + { + __IM uint32_t QFIF : 3; /*!< [2..0] TXQ Full Interrupt Flag Channel n (n = 0, 1) */ + uint32_t : 1; + __IM uint32_t BQFIF : 2; /*!< [5..4] Borrowed TXQ Full Interrupt Flag Channel n (n = 0, 1) */ + uint32_t : 2; + __IM uint32_t QOFRIF : 3; /*!< [10..8] TXQ One Frame RX Interrupt Flag Channel n (n = 0, 1) */ + uint32_t : 1; + __IM uint32_t BQOFRIF : 2; /*!< [13..12] Borrowed TXQ One Frame RX Interrupt Flag Channel n + * (n = 0, 1) */ + uint32_t : 2; + __IM uint32_t CFRIF : 3; /*!< [18..16] Common FIFO RX Interrupt Flag Channel n (n = 0, 1) */ + uint32_t : 5; + __IM uint32_t CFRFIF : 3; /*!< [26..24] Common FIFO FDC Level Full Interrupt Flag Channel n + * (n = 0, 1) */ + uint32_t : 1; + __IM uint32_t CFOFRIF : 3; /*!< [30..28] Common FIFO One Frame RX Interrupt Flag Channel n (n + * = 0, 1) */ + uint32_t : 1; + } CFDGRINTSTS_b[2]; + }; + __IM uint32_t RESERVED38[10]; + + union + { + __IOM uint32_t CFDGRSTC; /*!< (@ 0x00001380) Global Reset Control Register */ + + struct + { + __IOM uint32_t SRST : 1; /*!< [0..0] Software Reset */ + uint32_t : 7; + __OM uint32_t KEY : 8; /*!< [15..8] Key Code */ + uint32_t : 16; + } CFDGRSTC_b; + }; + + union + { + __IOM uint32_t CFDGFCMC; /*!< (@ 0x00001384) Global Flexible CAN Mode Configuration Register */ + + struct + { + __IOM uint32_t FLXC0 : 1; /*!< [0..0] Flexible CAN Mode between Channel 0 and Channel 1 */ + uint32_t : 31; + } CFDGFCMC_b; + }; + __IM uint32_t RESERVED39; + + union + { + __IOM uint32_t CFDGFTBAC; /*!< (@ 0x0000138C) Global Flexible Transmission Buffer Assignment + * Configuration Register */ + + struct + { + __IOM uint32_t FLXMB0 : 4; /*!< [3..0] Flexible Transmission Buffer Assignment between Channel + * 0 and Channel 1 */ + uint32_t : 28; + } CFDGFTBAC_b; + }; + __IM uint32_t RESERVED40[28]; + __IOM R_CANFD_CFDC2_Type CFDC2[2]; /*!< (@ 0x00001400) Channel Configuration Registers */ + __IM uint32_t RESERVED41[240]; + __IOM R_CANFD_CFDGAFL_Type CFDGAFL[16]; /*!< (@ 0x00001800) Global Acceptance Filter List Registers */ + __IM uint32_t RESERVED42[448]; + __IOM R_CANFD_CFDRM_Type CFDRM[32]; /*!< (@ 0x00002000) RX Message Buffer Access Registers */ + __IM uint32_t RESERVED43[3072]; + __IOM R_CANFD_CFDRF_Type CFDRF[8]; /*!< (@ 0x00006000) RX FIFO Access Registers */ + __IOM R_CANFD_CFDCF_Type CFDCF[6]; /*!< (@ 0x00006400) Common FIFO Access Registers */ + __IM uint32_t RESERVED44[1600]; + __IOM R_CANFD_CFDTHL_Type CFDTHL[2]; /*!< (@ 0x00008000) Channel TX History List */ + __IM uint32_t RESERVED45[252]; + + union + { + __IOM uint32_t CFDRPGACC[64]; /*!< (@ 0x00008400) RAM Test Page Access Register [0..63] */ + + struct + { + __IOM uint32_t RDTA : 32; /*!< [31..0] RAM Data Test Access */ + } CFDRPGACC_b[64]; + }; + __IM uint32_t RESERVED46[7872]; + __IOM R_CANFD_CFDTM_Type CFDTM[128]; /*!< (@ 0x00010000) TX Message Buffer Registers */ +} R_CANFD_Type; /*!< Size = 81920 (0x14000) */ + +/* =========================================================================================================================== */ +/* ================ R_CMT ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Compare Match Timer Control (R_CMT) + */ + +typedef struct /*!< (@ 0x80040000) R_CMT Structure */ +{ + __IOM R_CMT_UNT_Type UNT[3]; /*!< (@ 0x00000000) 3 Timer Start Register Units */ +} R_CMT_Type; /*!< Size = 3072 (0xc00) */ + +/* =========================================================================================================================== */ +/* ================ R_CMTW0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Compare Match Timer W (R_CMTW0) + */ + +typedef struct /*!< (@ 0x80041000) R_CMTW0 Structure */ +{ + union + { + __IOM uint16_t CMWSTR; /*!< (@ 0x00000000) Timer Start Register */ + + struct + { + __IOM uint16_t STR : 1; /*!< [0..0] Counter Start */ + uint16_t : 15; + } CMWSTR_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t CMWCR; /*!< (@ 0x00000004) Timer Control Register */ + + struct + { + __IOM uint16_t CKS : 2; /*!< [1..0] Clock Select */ + uint16_t : 1; + __IOM uint16_t CMWIE : 1; /*!< [3..3] Compare Match Interrupt Enable */ + __IOM uint16_t IC0IE : 1; /*!< [4..4] Input Capture 0 Interrupt Enable */ + __IOM uint16_t IC1IE : 1; /*!< [5..5] Input Capture 1 Interrupt Enable */ + __IOM uint16_t OC0IE : 1; /*!< [6..6] Output Compare 0 Interrupt Enable */ + __IOM uint16_t OC1IE : 1; /*!< [7..7] Output Compare 1 Interrupt Enable */ + uint16_t : 1; + __IOM uint16_t CMS : 1; /*!< [9..9] Timer Counter Size */ + uint16_t : 3; + __IOM uint16_t CCLR : 3; /*!< [15..13] Counter Clear */ + } CMWCR_b; + }; + __IM uint16_t RESERVED1; + + union + { + __IOM uint16_t CMWIOR; /*!< (@ 0x00000008) Timer I/O Control Register */ + + struct + { + __IOM uint16_t IC0 : 2; /*!< [1..0] Input Capture Control 0 */ + __IOM uint16_t IC1 : 2; /*!< [3..2] Input Capture Control 1 */ + __IOM uint16_t IC0E : 1; /*!< [4..4] Input Capture Enable 0 */ + __IOM uint16_t IC1E : 1; /*!< [5..5] Input Capture Enable 1 */ + uint16_t : 2; + __IOM uint16_t OC0 : 2; /*!< [9..8] Output Compare Control 0 */ + __IOM uint16_t OC1 : 2; /*!< [11..10] Output Compare Control 1 */ + __IOM uint16_t OC0E : 1; /*!< [12..12] Compare Match Enable 0 */ + __IOM uint16_t OC1E : 1; /*!< [13..13] Compare Match Enable 1 */ + uint16_t : 1; + __IOM uint16_t CMWE : 1; /*!< [15..15] Compare Match Enable */ + } CMWIOR_b; + }; + __IM uint16_t RESERVED2; + __IM uint32_t RESERVED3; + __IOM uint32_t CMWCNT; /*!< (@ 0x00000010) Timer Counter */ + __IOM uint32_t CMWCOR; /*!< (@ 0x00000014) Compare Match Constant Register */ + __IM uint32_t CMWICR0; /*!< (@ 0x00000018) Input Capture Registers */ + __IM uint32_t CMWICR1; /*!< (@ 0x0000001C) Input Capture Registers */ + __IOM uint32_t CMWOCR0; /*!< (@ 0x00000020) Output Compare Registers */ + __IOM uint32_t CMWOCR1; /*!< (@ 0x00000024) Output Compare Registers */ +} R_CMTW0_Type; /*!< Size = 40 (0x28) */ + +/* =========================================================================================================================== */ +/* ================ R_WDT0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Watchdog Timer 0 (R_WDT0) + */ + +typedef struct /*!< (@ 0x80042000) R_WDT0 Structure */ +{ + __IOM uint8_t WDTRR; /*!< (@ 0x00000000) WDT Refresh Register */ + __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; + __IM uint16_t RESERVED2; +} R_WDT0_Type; /*!< Size = 10 (0xa) */ + +/* =========================================================================================================================== */ +/* ================ R_IIC0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief I2C Bus Interface 0 (R_IIC0) + */ + +typedef struct /*!< (@ 0x80043000) 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 */ + __OM 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] IIC-Bus Interface Internal Reset */ + __IOM uint8_t ICE : 1; /*!< [7..7] IIC-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 Request */ + __IOM uint8_t RS : 1; /*!< [2..2] Restart Condition Issuance Request */ + __IOM uint8_t SP : 1; /*!< [3..3] Stop Condition Issuance Request */ + 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 */ + __IOM uint8_t CKS : 3; /*!< [6..4] Internal Reference Clock Select */ + __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 Select */ + __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 Select */ + __IOM uint8_t WAIT : 1; /*!< [6..6] WAIT */ + __IOM uint8_t SMBS : 1; /*!< [7..7] SMBus/IIC-Bus Select */ + } 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 */ + uint8_t : 1; + } 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 */ + 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 */ + uint8_t : 3; + } ICBRH_b; + }; + __IOM uint8_t ICDRT; /*!< (@ 0x00000012) I2C Bus Transmit Data Register */ + __IM uint8_t ICDRR; /*!< (@ 0x00000013) I2C Bus Receive Data Register */ +} R_IIC0_Type; /*!< Size = 20 (0x14) */ + +/* =========================================================================================================================== */ +/* ================ R_DOC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Data Operation Circuit (R_DOC) + */ + +typedef struct /*!< (@ 0x80044000) 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 : 1; + __IOM uint8_t DOPCIE : 1; /*!< [4..4] Data Operation Circuit Interrupt Enable */ + __IM uint8_t DOPCF : 1; /*!< [5..5] Data Operation Circuit Flag */ + __OM uint8_t DOPCFCL : 1; /*!< [6..6] DOPCF Flag Clear */ + uint8_t : 1; + } DOCR_b; + }; + __IM uint8_t RESERVED; + __IOM uint16_t DODIR; /*!< (@ 0x00000002) DOC Data Input Register */ + __IOM uint16_t DODSR; /*!< (@ 0x00000004) DOC Data Setting Register */ +} R_DOC_Type; /*!< Size = 6 (0x6) */ + +/* =========================================================================================================================== */ +/* ================ R_ADC121 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief 12-Bit A/D converter (R_ADC121) + */ + +typedef struct /*!< (@ 0x80045000) R_ADC121 Structure */ +{ + union + { + __IOM uint16_t ADCSR; /*!< (@ 0x00000000) A/D Control Register */ + + struct + { + __IOM uint16_t DBLANS : 5; /*!< [4..0] Double Trigger Channel Select */ + 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 */ + uint16_t : 2; + __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; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t ADANSA0; /*!< (@ 0x00000004) A/D Channel Select Register A0 */ + + struct + { + __IOM uint16_t ANSA0 : 8; /*!< [7..0] A/D conversion Analog input Channel Select */ + uint16_t : 8; + } ADANSA0_b; + }; + __IM uint16_t RESERVED1; + + union + { + __IOM uint16_t ADADS0; /*!< (@ 0x00000008) A/D-Converted Value Addition/Average Function + * Channel Select Register 0 */ + + struct + { + __IOM uint16_t ADS0 : 8; /*!< [7..0] A/D-Converted Value Addition/Average Channel Select */ + uint16_t : 8; + } ADADS0_b; + }; + __IM uint16_t RESERVED2; + + union + { + __IOM uint8_t ADADC; /*!< (@ 0x0000000C) A/D-Converted Value Addition/Average Count Select + * Register */ + + struct + { + __IOM uint8_t ADC : 3; /*!< [2..0] Addition Count Select */ + uint8_t : 4; + __IOM uint8_t AVEE : 1; /*!< [7..7] Average Mode Enable */ + } ADADC_b; + }; + __IM uint8_t RESERVED3; + + 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 : 2; + __IOM uint16_t ACE : 1; /*!< [5..5] A/D Data Register Automatic Clearing Enable */ + uint16_t : 9; + __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 B */ + uint16_t : 2; + __IOM uint16_t TRSA : 6; /*!< [13..8] A/D Conversion Start Trigger Select */ + uint16_t : 2; + } ADSTRGR_b; + }; + __IM uint16_t RESERVED4; + + union + { + __IOM uint16_t ADANSB0; /*!< (@ 0x00000014) A/D Channel Select Register B0 */ + + struct + { + __IOM uint16_t ANSB0 : 8; /*!< [7..0] A/D Conversion Analog Input Channel Select */ + uint16_t : 8; + } ADANSB0_b; + }; + __IM uint16_t RESERVED5; + + union + { + __IM uint16_t ADDBLDR; /*!< (@ 0x00000018) A/D Data Duplication Register */ + + struct + { + __IM uint16_t DBLDR : 16; /*!< [15..0] The result of A/D conversion in response to the second + * trigger in double trigger mode. */ + } ADDBLDR_b; + }; + __IM uint16_t RESERVED6[3]; + + union + { + __IM uint16_t ADDR[8]; /*!< (@ 0x00000020) A/D Data Register n (n = 0 to 3 for unit 0, n + * = 0 to 7 for unit1) */ + + struct + { + __IM uint16_t DR : 16; /*!< [15..0] The result of A/D conversion (n: Number of channel) */ + } ADDR_b[8]; + }; + __IM uint16_t RESERVED7[27]; + + union + { + __IOM uint16_t ADSHCR; /*!< (@ 0x00000066) A/D Sample and Hold Control Register */ + + struct + { + __IOM uint16_t SSTSH : 8; /*!< [7..0] Sample and hold period setting */ + __IOM uint16_t SHANS : 3; /*!< [10..8] Sample and hold use or bypass select for ch0-2 */ + uint16_t : 5; + } ADSHCR_b; + }; + __IM uint16_t RESERVED8[10]; + __IM uint8_t RESERVED9; + + union + { + __IOM uint8_t ADELCCR; /*!< (@ 0x0000007D) A/D Event Link Control Register */ + + struct + { + __IOM uint8_t ELCC : 2; /*!< [1..0] Event link control bits */ + __IOM uint8_t GCELC : 1; /*!< [2..2] Event control bit for Group C */ + uint8_t : 5; + } ADELCCR_b; + }; + __IM uint16_t RESERVED10; + + union + { + __IOM uint16_t ADGSPCR; /*!< (@ 0x00000080) A/D Group Scan Priority Control Register */ + + struct + { + __IOM uint16_t PGS : 1; /*!< [0..0] Group Priority Control Setting */ + __IOM uint16_t GBRSCN : 1; /*!< [1..1] Group B Restart Setting */ + uint16_t : 12; + __IOM uint16_t LGRRS : 1; /*!< [14..14] Restart Channel Select */ + __IOM uint16_t GBRP : 1; /*!< [15..15] Group B Single Scan Continuous Start */ + } ADGSPCR_b; + }; + __IM uint16_t RESERVED11; + + union + { + __IM uint16_t ADDBLDRA; /*!< (@ 0x00000084) A/D Data Duplication Register A */ + + struct + { + __IM uint16_t DBLDRA : 16; /*!< [15..0] The result of A/D conversion during extended operation + * in double trigger mode */ + } ADDBLDRA_b; + }; + + union + { + __IM uint16_t ADDBLDRB; /*!< (@ 0x00000086) A/D Data Duplication Register B */ + + struct + { + __IM uint16_t DBLDRB : 16; /*!< [15..0] The result of A/D conversion during extended operation + * in double trigger mode */ + } ADDBLDRB_b; + }; + __IM uint16_t RESERVED12[2]; + + union + { + __IM uint8_t ADWINMON; /*!< (@ 0x0000008C) A/D Compare Function Window A/B Status Monitoring + * Register */ + + struct + { + __IM uint8_t MONCOMB : 1; /*!< [0..0] Combination result monitor */ + uint8_t : 3; + __IM uint8_t MONCMPA : 1; /*!< [4..4] Comparing result monitor for window A */ + __IM uint8_t MONCMPB : 1; /*!< [5..5] Comparing result monitor for window B */ + uint8_t : 2; + } ADWINMON_b; + }; + __IM uint8_t RESERVED13; + __IM uint16_t RESERVED14; + + union + { + __IOM uint16_t ADCMPCR; /*!< (@ 0x00000090) A/D Compare Function Control Register */ + + struct + { + __IOM uint16_t CMPAB : 2; /*!< [1..0] Window A/B combination condition setting */ + uint16_t : 7; + __IOM uint16_t CMPBE : 1; /*!< [9..9] Window B operation permission */ + uint16_t : 1; + __IOM uint16_t CMPAE : 1; /*!< [11..11] Window A operation permission */ + uint16_t : 1; + __IOM uint16_t CMPBIE : 1; /*!< [13..13] Compare window B Interrupt Enable */ + __IOM uint16_t WCMPE : 1; /*!< [14..14] Window Function enable */ + __IOM uint16_t CMPAIE : 1; /*!< [15..15] Compare window A Interrupt Enable */ + } ADCMPCR_b; + }; + __IM uint16_t RESERVED15; + + union + { + __IOM uint16_t ADCMPANSR0; /*!< (@ 0x00000094) A/D Compare Function Window A Channel Select + * Register 0 */ + + struct + { + __IOM uint16_t CMPCHA0 : 8; /*!< [7..0] Window A Channel Select */ + uint16_t : 8; + } ADCMPANSR0_b; + }; + __IM uint16_t RESERVED16; + + union + { + __IOM uint16_t ADCMPLR0; /*!< (@ 0x00000098) A/D Compare Function Window A Comparison Condition + * Setting Register 0 */ + + struct + { + __IOM uint16_t CMPLCHA0 : 8; /*!< [7..0] Window A comparison condition for target channel (ch0-7) + * setting */ + uint16_t : 8; + } ADCMPLR0_b; + }; + __IM uint16_t RESERVED17; + + union + { + __IOM uint16_t ADCMPDR0; /*!< (@ 0x0000009C) A/D Comparison Function Window A Lower Level + * Setting Register */ + + struct + { + __IOM uint16_t CMPLLA : 16; /*!< [15..0] Reference data setting when using the compare function + * window A */ + } ADCMPDR0_b; + }; + + union + { + __IOM uint16_t ADCMPDR1; /*!< (@ 0x0000009E) AD Comparison Function Window A Upper Level Setting + * Register */ + + struct + { + __IOM uint16_t CMPULA : 16; /*!< [15..0] Reference data setting when using the compare function + * window A */ + } ADCMPDR1_b; + }; + + union + { + __IOM uint16_t ADCMPSR0; /*!< (@ 0x000000A0) A/D Comparison Function Window A Channel Status + * Register 0 */ + + struct + { + __IOM uint16_t CMPSTCHA0 : 8; /*!< [7..0] Window A Status Flag */ + uint16_t : 8; + } ADCMPSR0_b; + }; + __IM uint16_t RESERVED18[2]; + + union + { + __IOM uint8_t ADCMPBNSR; /*!< (@ 0x000000A6) A/D Compare Function Window B Channel Select + * Register */ + + struct + { + __IOM uint8_t CMPCHB : 6; /*!< [5..0] Window B Channel Select */ + uint8_t : 1; + __IOM uint8_t CMPLB : 1; /*!< [7..7] Window B Comparison Condition Setting */ + } ADCMPBNSR_b; + }; + __IM uint8_t RESERVED19; + + union + { + __IOM uint16_t ADWINLLB; /*!< (@ 0x000000A8) A/D Compare Function Window B Lower-Side Level + * Setting Register */ + + struct + { + __IOM uint16_t CMPLLB : 16; /*!< [15..0] Reference lower data setting when using the compare + * function 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 CMPULB : 16; /*!< [15..0] Reference upper data setting when using the compare + * function 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] Window B Flag */ + uint8_t : 7; + } ADCMPBSR_b; + }; + __IM uint8_t RESERVED20; + __IM uint16_t RESERVED21[19]; + + union + { + __IOM uint16_t ADANSC0; /*!< (@ 0x000000D4) A/D Channel Select Register C0 */ + + struct + { + __IOM uint16_t ANSC0 : 8; /*!< [7..0] A/D-Converted Channel Select for Group C in Group Scan + * Mode */ + uint16_t : 8; + } ADANSC0_b; + }; + __IM uint16_t RESERVED22; + __IM uint8_t RESERVED23; + + union + { + __IOM uint8_t ADGCTRGR; /*!< (@ 0x000000D9) A/D Group C Trigger Select Register */ + + struct + { + __IOM uint8_t TRSC : 6; /*!< [5..0] Group C A/D Conversion Start Trigger Select */ + __IOM uint8_t GCADIE : 1; /*!< [6..6] Group C Scan Completion Interrupt Enable */ + __IOM uint8_t GRCE : 1; /*!< [7..7] Group C A/D Conversion Enable */ + } ADGCTRGR_b; + }; + __IM uint16_t RESERVED24[3]; + + union + { + __IOM uint8_t ADSSTR[8]; /*!< (@ 0x000000E0) A/D Sampling State Register n (n = 0 to 3 for + * unit 0, n = 0 to 7 for unit1) */ + + struct + { + __IOM uint8_t SST : 8; /*!< [7..0] Sampling Time Setting */ + } ADSSTR_b[8]; + }; +} R_ADC121_Type; /*!< Size = 232 (0xe8) */ + +/* =========================================================================================================================== */ +/* ================ R_TSU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Temperature Sensor Unit (R_TSU) + */ + +typedef struct /*!< (@ 0x80046000) R_TSU Structure */ +{ + union + { + __IOM uint32_t TSUSM; /*!< (@ 0x00000000) Sensor Mode Register */ + + struct + { + __IOM uint32_t TSEN : 1; /*!< [0..0] Temperature Sensor Enable */ + __IOM uint32_t ADCEN : 1; /*!< [1..1] ADC Enable */ + uint32_t : 30; + } TSUSM_b; + }; + + union + { + __IOM uint32_t TSUST; /*!< (@ 0x00000004) Sensor Trigger Register */ + + struct + { + __IOM uint32_t START : 1; /*!< [0..0] A/D Conversion Control */ + uint32_t : 31; + } TSUST_b; + }; + + union + { + __IOM uint32_t TSUSCS; /*!< (@ 0x00000008) Sensor Configuration Setting Register */ + + struct + { + uint32_t : 3; + __IOM uint32_t CKDIV : 1; /*!< [3..3] Divider Value for PCLKL */ + uint32_t : 28; + } TSUSCS_b; + }; + + union + { + __IM uint32_t TSUSAD; /*!< (@ 0x0000000C) Sensor ADC Data Register */ + + struct + { + __IM uint32_t DOUT : 12; /*!< [11..0] Temperature Sensor Data Output */ + uint32_t : 20; + } TSUSAD_b; + }; + + union + { + __IM uint32_t TSUSS; /*!< (@ 0x00000010) Sensor Status Register */ + + struct + { + __IM uint32_t CONV : 1; /*!< [0..0] A/D Conversion Status */ + uint32_t : 31; + } TSUSS_b; + }; +} R_TSU_Type; /*!< Size = 20 (0x14) */ + +/* =========================================================================================================================== */ +/* ================ R_POEG1 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief GPT Port Output Enable 1 (R_POEG1) + */ + +typedef struct /*!< (@ 0x80047000) R_POEG1 Structure */ +{ + union + { + __IOM uint32_t POEG1GA; /*!< (@ 0x00000000) POEG1 Group A Setting Register */ + + struct + { + __IOM uint32_t PIDF : 1; /*!< [0..0] Port Input Detection Flag */ + __IOM uint32_t IOCF : 1; /*!< [1..1] GPT Output Stop Request 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 */ + __IOM uint32_t IOCE : 1; /*!< [5..5] GPT Output Stop Request Enable */ + __IOM uint32_t OSTPE : 1; /*!< [6..6] Enable Stopping Output on Stopping of Oscillation */ + uint32_t : 9; + __IM uint32_t ST : 1; /*!< [16..16] GTETRGn Input Status Flag */ + uint32_t : 11; + __IOM uint32_t INV : 1; /*!< [28..28] GTETRGn Input Inverting */ + __IOM uint32_t NFEN : 1; /*!< [29..29] Noise filter Enable */ + __IOM uint32_t NFCS : 2; /*!< [31..30] Noise filter Clock Select */ + } POEG1GA_b; + }; + __IM uint32_t RESERVED[255]; + + union + { + __IOM uint32_t POEG1GB; /*!< (@ 0x00000400) POEG1 Group B Setting Register */ + + struct + { + __IOM uint32_t PIDF : 1; /*!< [0..0] Port Input Detection Flag */ + __IOM uint32_t IOCF : 1; /*!< [1..1] GPT Output Stop Request 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 */ + __IOM uint32_t IOCE : 1; /*!< [5..5] GPT Output Stop Request Enable */ + __IOM uint32_t OSTPE : 1; /*!< [6..6] Enable Stopping Output on Stopping of Oscillation */ + uint32_t : 9; + __IM uint32_t ST : 1; /*!< [16..16] GTETRGn Input Status Flag */ + uint32_t : 11; + __IOM uint32_t INV : 1; /*!< [28..28] GTETRGn Input Inverting */ + __IOM uint32_t NFEN : 1; /*!< [29..29] Noise filter Enable */ + __IOM uint32_t NFCS : 2; /*!< [31..30] Noise filter Clock Select */ + } POEG1GB_b; + }; + __IM uint32_t RESERVED1[255]; + + union + { + __IOM uint32_t POEG1GC; /*!< (@ 0x00000800) POEG1 Group C Setting Register */ + + struct + { + __IOM uint32_t PIDF : 1; /*!< [0..0] Port Input Detection Flag */ + __IOM uint32_t IOCF : 1; /*!< [1..1] GPT Output Stop Request 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 */ + __IOM uint32_t IOCE : 1; /*!< [5..5] GPT Output Stop Request Enable */ + __IOM uint32_t OSTPE : 1; /*!< [6..6] Enable Stopping Output on Stopping of Oscillation */ + uint32_t : 9; + __IM uint32_t ST : 1; /*!< [16..16] GTETRGn Input Status Flag */ + uint32_t : 11; + __IOM uint32_t INV : 1; /*!< [28..28] GTETRGn Input Inverting */ + __IOM uint32_t NFEN : 1; /*!< [29..29] Noise filter Enable */ + __IOM uint32_t NFCS : 2; /*!< [31..30] Noise filter Clock Select */ + } POEG1GC_b; + }; + __IM uint32_t RESERVED2[255]; + + union + { + __IOM uint32_t POEG1GD; /*!< (@ 0x00000C00) POEG1 Group D Setting Register */ + + struct + { + __IOM uint32_t PIDF : 1; /*!< [0..0] Port Input Detection Flag */ + __IOM uint32_t IOCF : 1; /*!< [1..1] GPT Output Stop Request 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 */ + __IOM uint32_t IOCE : 1; /*!< [5..5] GPT Output Stop Request Enable */ + __IOM uint32_t OSTPE : 1; /*!< [6..6] Enable Stopping Output on Stopping of Oscillation */ + uint32_t : 9; + __IM uint32_t ST : 1; /*!< [16..16] GTETRGn Input Status Flag */ + uint32_t : 11; + __IOM uint32_t INV : 1; /*!< [28..28] GTETRGn Input Inverting */ + __IOM uint32_t NFEN : 1; /*!< [29..29] Noise filter Enable */ + __IOM uint32_t NFCS : 2; /*!< [31..30] Noise filter Clock Select */ + } POEG1GD_b; + }; +} R_POEG1_Type; /*!< Size = 3076 (0xc04) */ + +/* =========================================================================================================================== */ +/* ================ R_DMAC0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief DMA Controller 0 (R_DMAC0) + */ + +typedef struct /*!< (@ 0x80080000) R_DMAC0 Structure */ +{ + __IOM R_DMAC0_GRP_Type GRP[1]; /*!< (@ 0x00000000) 8 channel Registers */ +} R_DMAC0_Type; /*!< Size = 804 (0x324) */ + +/* =========================================================================================================================== */ +/* ================ R_ICU_NS ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Interrupt Controller in Non Safety Domain (R_ICU_NS) + */ + +typedef struct /*!< (@ 0x80090000) R_ICU_NS Structure */ +{ + union + { + __OM uint32_t NS_SWINT; /*!< (@ 0x00000000) Software Interrupt Register */ + + struct + { + __OM uint32_t IC0 : 1; /*!< [0..0] Software Interrupt register */ + __OM uint32_t IC1 : 1; /*!< [1..1] Software Interrupt register */ + __OM uint32_t IC2 : 1; /*!< [2..2] Software Interrupt register */ + __OM uint32_t IC3 : 1; /*!< [3..3] Software Interrupt register */ + __OM uint32_t IC4 : 1; /*!< [4..4] Software Interrupt register */ + __OM uint32_t IC5 : 1; /*!< [5..5] Software Interrupt register */ + uint32_t : 26; + } NS_SWINT_b; + }; + + union + { + __IOM uint32_t NS_PORTNF_FLTSEL; /*!< (@ 0x00000004) Interrupt Noise Filter Enable Register */ + + struct + { + __IOM uint32_t FLT0 : 1; /*!< [0..0] Noise filter enable for IRQ0 */ + __IOM uint32_t FLT1 : 1; /*!< [1..1] Noise filter enable for IRQ1 */ + __IOM uint32_t FLT2 : 1; /*!< [2..2] Noise filter enable for IRQ2 */ + __IOM uint32_t FLT3 : 1; /*!< [3..3] Noise filter enable for IRQ3 */ + __IOM uint32_t FLT4 : 1; /*!< [4..4] Noise filter enable for IRQ4 */ + __IOM uint32_t FLT5 : 1; /*!< [5..5] Noise filter enable for IRQ5 */ + __IOM uint32_t FLT6 : 1; /*!< [6..6] Noise filter enable for IRQ6 */ + __IOM uint32_t FLT7 : 1; /*!< [7..7] Noise filter enable for IRQ7 */ + __IOM uint32_t FLT8 : 1; /*!< [8..8] Noise filter enable for IRQ8 */ + __IOM uint32_t FLT9 : 1; /*!< [9..9] Noise filter enable for IRQ9 */ + __IOM uint32_t FLT10 : 1; /*!< [10..10] Noise filter enable for IRQ10 */ + __IOM uint32_t FLT11 : 1; /*!< [11..11] Noise filter enable for IRQ11 */ + __IOM uint32_t FLT12 : 1; /*!< [12..12] Noise filter enable for IRQ12 */ + __IOM uint32_t FLT13 : 1; /*!< [13..13] Noise filter enable for IRQ13 */ + __IOM uint32_t FLTDRQ : 1; /*!< [14..14] Noise filter enable for External DMA request (DREQ) */ + uint32_t : 17; + } NS_PORTNF_FLTSEL_b; + }; + + union + { + __IOM uint32_t NS_PORTNF_CLKSEL; /*!< (@ 0x00000008) Interrupt Noise Filter Setting Register */ + + struct + { + __IOM uint32_t CKSEL0 : 2; /*!< [1..0] Noise filter sampling clock selector */ + __IOM uint32_t CKSEL1 : 2; /*!< [3..2] Noise filter sampling clock selector */ + __IOM uint32_t CKSEL2 : 2; /*!< [5..4] Noise filter sampling clock selector */ + __IOM uint32_t CKSEL3 : 2; /*!< [7..6] Noise filter sampling clock selector */ + __IOM uint32_t CKSEL4 : 2; /*!< [9..8] Noise filter sampling clock selector */ + __IOM uint32_t CKSEL5 : 2; /*!< [11..10] Noise filter sampling clock selector */ + __IOM uint32_t CKSEL6 : 2; /*!< [13..12] Noise filter sampling clock selector */ + __IOM uint32_t CKSEL7 : 2; /*!< [15..14] Noise filter sampling clock selector */ + __IOM uint32_t CKSEL8 : 2; /*!< [17..16] Noise filter sampling clock selector */ + __IOM uint32_t CKSEL9 : 2; /*!< [19..18] Noise filter sampling clock selector */ + __IOM uint32_t CKSEL10 : 2; /*!< [21..20] Noise filter sampling clock selector */ + __IOM uint32_t CKSEL11 : 2; /*!< [23..22] Noise filter sampling clock selector */ + __IOM uint32_t CKSEL12 : 2; /*!< [25..24] Noise filter sampling clock selector */ + __IOM uint32_t CKSEL13 : 2; /*!< [27..26] Noise filter sampling clock selector */ + __IOM uint32_t CKSELDREQ : 2; /*!< [29..28] Noise filter sampling clock selector */ + uint32_t : 2; + } NS_PORTNF_CLKSEL_b; + }; + + union + { + __IOM uint32_t NS_PORTNF_MD; /*!< (@ 0x0000000C) Interrupt Edge Detection Setting Register */ + + struct + { + __IOM uint32_t MD0 : 2; /*!< [1..0] Select detection mode for IRQ0 */ + __IOM uint32_t MD1 : 2; /*!< [3..2] Select detection mode for IRQ1 */ + __IOM uint32_t MD2 : 2; /*!< [5..4] Select detection mode for IRQ2 */ + __IOM uint32_t MD3 : 2; /*!< [7..6] Select detection mode for IRQ3 */ + __IOM uint32_t MD4 : 2; /*!< [9..8] Select detection mode for IRQ4 */ + __IOM uint32_t MD5 : 2; /*!< [11..10] Select detection mode for IRQ5 */ + __IOM uint32_t MD6 : 2; /*!< [13..12] Select detection mode for IRQ6 */ + __IOM uint32_t MD7 : 2; /*!< [15..14] Select detection mode for IRQ7 */ + __IOM uint32_t MD8 : 2; /*!< [17..16] Select detection mode for IRQ8 */ + __IOM uint32_t MD9 : 2; /*!< [19..18] Select detection mode for IRQ9 */ + __IOM uint32_t MD10 : 2; /*!< [21..20] Select detection mode for IRQ10 */ + __IOM uint32_t MD11 : 2; /*!< [23..22] Select detection mode for IRQ11 */ + __IOM uint32_t MD12 : 2; /*!< [25..24] Select detection mode for IRQ12 */ + __IOM uint32_t MD13 : 2; /*!< [27..26] Select detection mode for IRQ13 */ + __IOM uint32_t MDDRQ : 2; /*!< [29..28] Select detection mode for DREQ of DMAC */ + uint32_t : 2; + } NS_PORTNF_MD_b; + }; +} R_ICU_NS_Type; /*!< Size = 16 (0x10) */ + +/* =========================================================================================================================== */ +/* ================ R_ELC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Evnet Link Controller (R_ELC) + */ + +typedef struct /*!< (@ 0x80090010) R_ELC Structure */ +{ + union + { + __IOM uint32_t ELC_SSEL[19]; /*!< (@ 0x00000000) ELC Event Source Select Register [0..18] */ + + struct + { + __IOM uint32_t ELC_SEL0 : 10; /*!< [9..0] Set the number for ELC event source to be linked to the + * ELC destination. */ + __IOM uint32_t ELC_SEL1 : 10; /*!< [19..10] Set the number for ELC event source to be linked to + * the ELC destination. */ + __IOM uint32_t ELC_SEL2 : 10; /*!< [29..20] Set the number for ELC event source to be linked to + * the ELC destination. */ + uint32_t : 2; + } ELC_SSEL_b[19]; + }; +} R_ELC_Type; /*!< Size = 76 (0x4c) */ + +/* =========================================================================================================================== */ +/* ================ R_DMA ================ */ +/* =========================================================================================================================== */ + +/** + * @brief DMAC Configuration (R_DMA) + */ + +typedef struct /*!< (@ 0x80090060) R_DMA Structure */ +{ + __IM uint32_t RESERVED[3]; + + union + { + __IOM uint32_t DMAC0_RSSEL[3]; /*!< (@ 0x0000000C) DMAC Unit 0 Resource Select Register [0..2] */ + + struct + { + __IOM uint32_t REQ_SELA : 9; /*!< [8..0] DMA Resource Select for Channel n */ + uint32_t : 1; + __IOM uint32_t REQ_SELB : 9; /*!< [18..10] DMA Resource Select for Channel n + 1 */ + uint32_t : 1; + __IOM uint32_t REQ_SELC : 9; /*!< [28..20] DMA Resource Select for Channel n + 2 */ + uint32_t : 3; + } DMAC0_RSSEL_b[3]; + }; + __IM uint32_t RESERVED1[3]; + + union + { + __IOM uint32_t DMAC1_RSSEL[3]; /*!< (@ 0x00000024) DMAC Unit 1 Resource Select Register [0..2] */ + + struct + { + __IOM uint32_t REQ_SELA : 9; /*!< [8..0] DMA Resource Select for Channel n */ + uint32_t : 1; + __IOM uint32_t REQ_SELB : 9; /*!< [18..10] DMA Resource Select for Channel n + 1 */ + uint32_t : 1; + __IOM uint32_t REQ_SELC : 9; /*!< [28..20] DMA Resource Select for Channel n + 2 */ + uint32_t : 3; + } DMAC1_RSSEL_b[3]; + }; +} R_DMA_Type; /*!< Size = 48 (0x30) */ + +/* =========================================================================================================================== */ +/* ================ R_PORT_NSR ================ */ +/* =========================================================================================================================== */ + +/** + * @brief I/O Ports (Non safety region) (R_PORT_NSR) + */ + +typedef struct /*!< (@ 0x800A0000) R_PORT_NSR Structure */ +{ + union + { + __IOM uint8_t P[25]; /*!< (@ 0x00000000) Port [0..24] Register */ + + struct + { + __IOM uint8_t POUT_0 : 1; /*!< [0..0] Pm_n Output Data Store (n: bit position) */ + __IOM uint8_t POUT_1 : 1; /*!< [1..1] Pm_n Output Data Store (n: bit position) */ + __IOM uint8_t POUT_2 : 1; /*!< [2..2] Pm_n Output Data Store (n: bit position) */ + __IOM uint8_t POUT_3 : 1; /*!< [3..3] Pm_n Output Data Store (n: bit position) */ + __IOM uint8_t POUT_4 : 1; /*!< [4..4] Pm_n Output Data Store (n: bit position) */ + __IOM uint8_t POUT_5 : 1; /*!< [5..5] Pm_n Output Data Store (n: bit position) */ + __IOM uint8_t POUT_6 : 1; /*!< [6..6] Pm_n Output Data Store (n: bit position) */ + __IOM uint8_t POUT_7 : 1; /*!< [7..7] Pm_n Output Data Store (n: bit position) */ + } P_b[25]; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2[121]; + + union + { + __IOM uint16_t PM[25]; /*!< (@ 0x00000200) Port 0 Mode Register */ + + struct + { + __IOM uint16_t PM0 : 2; /*!< [1..0] Pm_0 I/O Select */ + __IOM uint16_t PM1 : 2; /*!< [3..2] Pm_1 I/O Select */ + __IOM uint16_t PM2 : 2; /*!< [5..4] Pm_2 I/O Select */ + __IOM uint16_t PM3 : 2; /*!< [7..6] Pm_3 I/O Select */ + __IOM uint16_t PM4 : 2; /*!< [9..8] Pm_4 I/O Select */ + __IOM uint16_t PM5 : 2; /*!< [11..10] Pm_5 I/O Select */ + __IOM uint16_t PM6 : 2; /*!< [13..12] Pm_6 I/O Select */ + __IOM uint16_t PM7 : 2; /*!< [15..14] Pm_7 I/O Select */ + } PM_b[25]; + }; + __IM uint16_t RESERVED3; + __IM uint32_t RESERVED4[115]; + + union + { + __IOM uint8_t PMC[25]; /*!< (@ 0x00000400) Port [0..24] Mode Control Register */ + + struct + { + __IOM uint8_t PMC0 : 1; /*!< [0..0] Pm_n Pin Mode Control (n: bit position) */ + __IOM uint8_t PMC1 : 1; /*!< [1..1] Pm_n Pin Mode Control (n: bit position) */ + __IOM uint8_t PMC2 : 1; /*!< [2..2] Pm_n Pin Mode Control (n: bit position) */ + __IOM uint8_t PMC3 : 1; /*!< [3..3] Pm_n Pin Mode Control (n: bit position) */ + __IOM uint8_t PMC4 : 1; /*!< [4..4] Pm_n Pin Mode Control (n: bit position) */ + __IOM uint8_t PMC5 : 1; /*!< [5..5] Pm_n Pin Mode Control (n: bit position) */ + __IOM uint8_t PMC6 : 1; /*!< [6..6] Pm_n Pin Mode Control (n: bit position) */ + __IOM uint8_t PMC7 : 1; /*!< [7..7] Pm_n Pin Mode Control (n: bit position) */ + } PMC_b[25]; + }; + __IM uint8_t RESERVED5; + __IM uint16_t RESERVED6; + __IM uint32_t RESERVED7[121]; + + union + { + __IOM uint32_t PFC[25]; /*!< (@ 0x00000600) Port [0..24] Function Control Register */ + + struct + { + __IOM uint32_t PFC0 : 4; /*!< [3..0] Pm_0 Pin function Select */ + __IOM uint32_t PFC1 : 4; /*!< [7..4] Pm_1 Pin function Select */ + __IOM uint32_t PFC2 : 4; /*!< [11..8] Pm_2 Pin function Select */ + __IOM uint32_t PFC3 : 4; /*!< [15..12] Pm_3 Pin function Select */ + __IOM uint32_t PFC4 : 4; /*!< [19..16] Pm_4 Pin function Select */ + __IOM uint32_t PFC5 : 4; /*!< [23..20] Pm_5 Pin function Select */ + __IOM uint32_t PFC6 : 4; /*!< [27..24] Pm_6 Pin function Select */ + __IOM uint32_t PFC7 : 4; /*!< [31..28] Pm_7 Pin function Select */ + } PFC_b[25]; + }; + __IM uint32_t RESERVED8[103]; + + union + { + __IM uint8_t PIN[25]; /*!< (@ 0x00000800) Port [0..24] Input Register */ + + struct + { + __IM uint8_t PIN0 : 1; /*!< [0..0] Pm_n Pin Input (n: bit position) */ + __IM uint8_t PIN1 : 1; /*!< [1..1] Pm_n Pin Input (n: bit position) */ + __IM uint8_t PIN2 : 1; /*!< [2..2] Pm_n Pin Input (n: bit position) */ + __IM uint8_t PIN3 : 1; /*!< [3..3] Pm_n Pin Input (n: bit position) */ + __IM uint8_t PIN4 : 1; /*!< [4..4] Pm_n Pin Input (n: bit position) */ + __IM uint8_t PIN5 : 1; /*!< [5..5] Pm_n Pin Input (n: bit position) */ + __IM uint8_t PIN6 : 1; /*!< [6..6] Pm_n Pin Input (n: bit position) */ + __IM uint8_t PIN7 : 1; /*!< [7..7] Pm_n Pin Input (n: bit position) */ + } PIN_b[25]; + }; + __IM uint8_t RESERVED9; + __IM uint16_t RESERVED10; + __IM uint32_t RESERVED11[121]; + __IOM R_PORT_DRCTL_Type DRCTL[25]; /*!< (@ 0x00000A00) I/O Buffer [0..24] Function Switching Register */ + __IM uint32_t RESERVED12[206]; + + union + { + __IOM uint8_t ELC_PGR[2]; /*!< (@ 0x00000E00) ELC Port Group Setting Register [0..1] */ + + struct + { + __IOM uint8_t PG0 : 1; /*!< [0..0] Port Group Setting */ + __IOM uint8_t PG1 : 1; /*!< [1..1] Port Group Setting */ + __IOM uint8_t PG2 : 1; /*!< [2..2] Port Group Setting */ + __IOM uint8_t PG3 : 1; /*!< [3..3] Port Group Setting */ + __IOM uint8_t PG4 : 1; /*!< [4..4] Port Group Setting */ + __IOM uint8_t PG5 : 1; /*!< [5..5] Port Group Setting */ + __IOM uint8_t PG6 : 1; /*!< [6..6] Port Group Setting */ + __IOM uint8_t PG7 : 1; /*!< [7..7] Port Group Setting */ + } ELC_PGR_b[2]; + }; + + union + { + __IOM uint8_t ELC_PGC[2]; /*!< (@ 0x00000E02) ELC Port Group Control Register [0..1] */ + + struct + { + __IOM uint8_t PGCI : 2; /*!< [1..0] Event Output Edge Select */ + __IOM uint8_t PGCOVE : 1; /*!< [2..2] PDBF Overwrite */ + uint8_t : 1; + __IOM uint8_t PGCO : 3; /*!< [6..4] Port Group Operation Select */ + uint8_t : 1; + } ELC_PGC_b[2]; + }; + __IOM R_PORT_NSR_ELC_PDBF_Type ELC_PDBF[2]; /*!< (@ 0x00000E04) ELC Port Buffer Register [0..1] */ + + union + { + __IOM uint8_t ELC_PEL[4]; /*!< (@ 0x00000E0C) ELC Port Setting Register [0..3] */ + + struct + { + __IOM uint8_t PSB : 3; /*!< [2..0] Bit Number Specification */ + __IOM uint8_t PSP : 2; /*!< [4..3] Port Number Specification */ + __IOM uint8_t PSM : 2; /*!< [6..5] Event Link Specification */ + uint8_t : 1; + } ELC_PEL_b[4]; + }; + + union + { + __IOM uint8_t ELC_DPTC; /*!< (@ 0x00000E10) ELC Edge Detection Control Register */ + + struct + { + __IOM uint8_t PTC0 : 1; /*!< [0..0] Single Input Port n Edge Detection */ + __IOM uint8_t PTC1 : 1; /*!< [1..1] Single Input Port n Edge Detection */ + __IOM uint8_t PTC2 : 1; /*!< [2..2] Single Input Port n Edge Detection */ + __IOM uint8_t PTC3 : 1; /*!< [3..3] Single Input Port n Edge Detection */ + uint8_t : 4; + } ELC_DPTC_b; + }; + + union + { + __IOM uint8_t ELC_ELSR2; /*!< (@ 0x00000E11) ELC Port Event Control Register */ + + struct + { + uint8_t : 2; + __IOM uint8_t PEG1 : 1; /*!< [2..2] ELC Port Buffer Register (ELC_PDBFn) write access control. + * When set to 1, writing to the ELC_PDBFn register via Internal + * peripheral bus is disabled, preventing overwriting. */ + __IOM uint8_t PEG2 : 1; /*!< [3..3] ELC Port Buffer Register (ELC_PDBFn) write access control. + * When set to 1, writing to the ELC_PDBFn register via Internal + * peripheral bus is disabled, preventing overwriting. */ + __IOM uint8_t PES0 : 1; /*!< [4..4] Single Port n Event Link Function Enable */ + __IOM uint8_t PES1 : 1; /*!< [5..5] Single Port n Event Link Function Enable */ + __IOM uint8_t PES2 : 1; /*!< [6..6] Single Port n Event Link Function Enable */ + __IOM uint8_t PES3 : 1; /*!< [7..7] Single Port n Event Link Function Enable */ + } ELC_ELSR2_b; + }; + __IM uint16_t RESERVED13; +} R_PORT_COMMON_Type; /*!< Size = 3604 (0xe14) */ + +/* =========================================================================================================================== */ +/* ================ R_GMAC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Ethernet MAC (R_GMAC) + */ + +typedef struct /*!< (@ 0x80100000) R_GMAC Structure */ +{ + union + { + __IOM uint32_t MAC_Configuration; /*!< (@ 0x00000000) MAC Configuration Register */ + + struct + { + __IOM uint32_t PRELEN : 2; /*!< [1..0] Preamble Length for Transmit Frames */ + __IOM uint32_t RE : 1; /*!< [2..2] Receiver Enable */ + __IOM uint32_t TE : 1; /*!< [3..3] Transmitter Enable */ + __IOM uint32_t DC : 1; /*!< [4..4] Deferral Check */ + __IOM uint32_t BL : 2; /*!< [6..5] Back-Off Limit */ + __IOM uint32_t ACS : 1; /*!< [7..7] Automatic Pad or CRC Stripping */ + uint32_t : 1; + __IOM uint32_t DR : 1; /*!< [9..9] Disable Retry */ + __IOM uint32_t IPC : 1; /*!< [10..10] Checksum Offload */ + __IOM uint32_t DM : 1; /*!< [11..11] Duplex Mode */ + __IOM uint32_t LM : 1; /*!< [12..12] Loopback Mode */ + __IOM uint32_t DO : 1; /*!< [13..13] Disable Receive Own */ + __IOM uint32_t FES : 1; /*!< [14..14] Speed */ + __IOM uint32_t PS : 1; /*!< [15..15] Port Select */ + __IOM uint32_t DCRS : 1; /*!< [16..16] Disable Carrier Sense During Transmission */ + __IOM uint32_t IFG : 3; /*!< [19..17] Inter-Frame Gap */ + __IOM uint32_t JE : 1; /*!< [20..20] Jumbo Frame Enable */ + __IOM uint32_t BE : 1; /*!< [21..21] Frame Burst Enable */ + __IOM uint32_t JD : 1; /*!< [22..22] Jabber Disable */ + __IOM uint32_t WD : 1; /*!< [23..23] Watchdog Disable */ + uint32_t : 1; + __IOM uint32_t CST : 1; /*!< [25..25] CRC Stripping for Type Frames */ + uint32_t : 1; + __IOM uint32_t TWOKPE : 1; /*!< [27..27] IEEE 802.3 as Support for 2 K Packets */ + uint32_t : 4; + } MAC_Configuration_b; + }; + + union + { + __IOM uint32_t MAC_Frame_Filter; /*!< (@ 0x00000004) MAC Frame Filter Register */ + + struct + { + __IOM uint32_t PR : 1; /*!< [0..0] Promiscuous Mode */ + __IOM uint32_t HUC : 1; /*!< [1..1] Hash Unicast */ + __IOM uint32_t HMC : 1; /*!< [2..2] Hash Multicast */ + __IOM uint32_t DAIF : 1; /*!< [3..3] DA Inverse Filtering */ + __IOM uint32_t PM : 1; /*!< [4..4] Pass All Multicast */ + __IOM uint32_t DBF : 1; /*!< [5..5] Disable Broadcast Frames */ + __IOM uint32_t PCF : 2; /*!< [7..6] Pass Control Frames */ + __IOM uint32_t SAIF : 1; /*!< [8..8] SA Inverse Filtering */ + __IOM uint32_t SAF : 1; /*!< [9..9] Source Address Filter Enable */ + __IOM uint32_t HPF : 1; /*!< [10..10] Hash or Perfect Filter */ + uint32_t : 5; + __IOM uint32_t VTFE : 1; /*!< [16..16] VLAN Tag Filter Enable */ + uint32_t : 14; + __IOM uint32_t RA : 1; /*!< [31..31] Receive All */ + } MAC_Frame_Filter_b; + }; + __IM uint32_t RESERVED[2]; + + union + { + __IOM uint32_t GMII_Address; /*!< (@ 0x00000010) GMII Address Register */ + + struct + { + __IOM uint32_t GB : 1; /*!< [0..0] GMII Busy */ + __IOM uint32_t GW : 1; /*!< [1..1] GMII Write */ + __IOM uint32_t CR : 4; /*!< [5..2] CSR Clock Range */ + __IOM uint32_t GR : 5; /*!< [10..6] GMII Register */ + __IOM uint32_t PA : 5; /*!< [15..11] Physical Layer Address */ + uint32_t : 16; + } GMII_Address_b; + }; + + union + { + __IOM uint32_t GMII_Data; /*!< (@ 0x00000014) GMII Data Register */ + + struct + { + __IOM uint32_t GD : 16; /*!< [15..0] GMII Data */ + uint32_t : 16; + } GMII_Data_b; + }; + + union + { + __IOM uint32_t Flow_Control; /*!< (@ 0x00000018) Flow Control Register */ + + struct + { + __IOM uint32_t FCA_BPA : 1; /*!< [0..0] Flow Control Busy or Backpressure Activate */ + __IOM uint32_t TFE : 1; /*!< [1..1] Transmit Flow Control Enable */ + __IOM uint32_t RFE : 1; /*!< [2..2] Receive Flow Control Enable */ + __IOM uint32_t UP : 1; /*!< [3..3] Unicast Pause Frame Detect */ + __IOM uint32_t PLT : 2; /*!< [5..4] Pause Low Threshold */ + uint32_t : 1; + __IOM uint32_t DZPQ : 1; /*!< [7..7] Disable Zero-Quanta Pause */ + uint32_t : 8; + __IOM uint32_t PT : 16; /*!< [31..16] Pause Time */ + } Flow_Control_b; + }; + + union + { + __IOM uint32_t VLAN_Tag; /*!< (@ 0x0000001C) VLAN Tag Register */ + + struct + { + __IOM uint32_t VL : 16; /*!< [15..0] VLAN Tag Identifier for Receive Frames */ + __IOM uint32_t ETV : 1; /*!< [16..16] Enable 12-Bit VLAN Tag Comparison */ + __IOM uint32_t VTIM : 1; /*!< [17..17] VLAN Tag Inverse Match Enable */ + __IOM uint32_t ESVL : 1; /*!< [18..18] Enable S-VLAN */ + __IOM uint32_t VTHM : 1; /*!< [19..19] VLAN Tag Hash Table Match Enable */ + uint32_t : 12; + } VLAN_Tag_b; + }; + + union + { + __IM uint32_t Version; /*!< (@ 0x00000020) Version Register */ + + struct + { + __IM uint32_t VER : 16; /*!< [15..0] Version (GMAC: 0x3037) */ + uint32_t : 16; + } Version_b; + }; + + union + { + __IM uint32_t Debug; /*!< (@ 0x00000024) Debug Register */ + + struct + { + __IM uint32_t RPESTS : 1; /*!< [0..0] GMAC GMII or MII Receive Protocol Engine Status */ + __IM uint32_t RFCFCSTS : 2; /*!< [2..1] GMAC Receive Frame Controller FIFO Status */ + uint32_t : 1; + __IM uint32_t RWCSTS : 1; /*!< [4..4] MTL RX FIFO Write Controller Active Status */ + __IM uint32_t RRCSTS : 2; /*!< [6..5] MTL RX FIFO Read Controller State */ + uint32_t : 1; + __IM uint32_t RXFSTS : 2; /*!< [9..8] MTL RX FIFO Fill-level Status */ + uint32_t : 6; + __IM uint32_t TPESTS : 1; /*!< [16..16] GMAC GMII or MII Transmit Protocol Engine Status */ + __IM uint32_t TFCSTS : 2; /*!< [18..17] GMAC Transmit Frame Controller Status */ + __IM uint32_t TXPAUSED : 1; /*!< [19..19] GMAC transmitter in PAUSE */ + __IM uint32_t TRCSTS : 2; /*!< [21..20] MTL TX FIFO Read Controller Status */ + __IM uint32_t TWCSTS : 1; /*!< [22..22] MTL TX FIFO Write Controller Active Status */ + uint32_t : 1; + __IM uint32_t TXFSTS : 1; /*!< [24..24] MTL TX FIFO Not Empty Status */ + __IM uint32_t TXSTSFSTS : 1; /*!< [25..25] MTL TX Status FIFO Full Status */ + uint32_t : 6; + } Debug_b; + }; + + union + { + __IOM uint32_t Remote_Wake_Up_Frame_Filter; /*!< (@ 0x00000028) Remote Wake-Up Frame Filter Register */ + + struct + { + __IOM uint32_t WKUPFRMFTR : 32; /*!< [31..0] Remote Wake-Up Frame Filter */ + } Remote_Wake_Up_Frame_Filter_b; + }; + + union + { + __IOM uint32_t PMT_Control_Status; /*!< (@ 0x0000002C) PMT Control and Status Register */ + + struct + { + __IOM uint32_t PWRDWN : 1; /*!< [0..0] Power Down */ + __IOM uint32_t MGKPKTEN : 1; /*!< [1..1] Magic Packet Enable */ + __IOM uint32_t RWKPKTEN : 1; /*!< [2..2] Wake-Up Frame Enable */ + uint32_t : 2; + __IM uint32_t MGKPRCVD : 1; /*!< [5..5] Magic Packet Received */ + __IM uint32_t RWKPRCVD : 1; /*!< [6..6] Wake-Up Frame Received */ + uint32_t : 2; + __IOM uint32_t GLBLUCAST : 1; /*!< [9..9] Global Unicast */ + uint32_t : 14; + __IM uint32_t RWKPTR : 3; /*!< [26..24] Remote Wake-Up FIFO Pointer */ + uint32_t : 4; + __IOM uint32_t RWKFILTRST : 1; /*!< [31..31] Wake-Up Frame Filter Register Pointer Reset */ + } PMT_Control_Status_b; + }; + + union + { + __IOM uint32_t LPI_Control_Status; /*!< (@ 0x00000030) LPI Control and Status Register */ + + struct + { + __IM uint32_t TLPIEN : 1; /*!< [0..0] Transmit LPI Entry */ + __IM uint32_t TLPIEX : 1; /*!< [1..1] Transmit LPI Exit */ + __IM uint32_t RLPIEN : 1; /*!< [2..2] Receive LPI Entry */ + __IM uint32_t RLPIEX : 1; /*!< [3..3] Receive LPI Exit */ + uint32_t : 4; + __IM uint32_t TLPIST : 1; /*!< [8..8] Transmit LPI State */ + __IM uint32_t RLPIST : 1; /*!< [9..9] Receive LPI State */ + uint32_t : 6; + __IOM uint32_t LPIEN : 1; /*!< [16..16] LPI Enable */ + __IOM uint32_t PLS : 1; /*!< [17..17] PHY Link Status */ + uint32_t : 1; + __IOM uint32_t LPITXA : 1; /*!< [19..19] LPI TX Automate */ + uint32_t : 12; + } LPI_Control_Status_b; + }; + + union + { + __IOM uint32_t LPI_Timers_Control; /*!< (@ 0x00000034) LPI Timers Control Register */ + + struct + { + __IOM uint32_t TWT : 16; /*!< [15..0] LPI TW Timer */ + __IOM uint32_t LST : 10; /*!< [25..16] LPI LS Timer */ + uint32_t : 6; + } LPI_Timers_Control_b; + }; + + union + { + __IM uint32_t Interrupt_Status; /*!< (@ 0x00000038) Interrupt Status Register */ + + struct + { + uint32_t : 3; + __IM uint32_t PMTIS : 1; /*!< [3..3] PMT Interrupt Status */ + __IM uint32_t MMCIS : 1; /*!< [4..4] MMC Interrupt Status */ + __IM uint32_t MMCRXIS : 1; /*!< [5..5] MMC Receive Interrupt Status */ + __IM uint32_t MMCTXIS : 1; /*!< [6..6] MMC Transmit Interrupt Status */ + __IM uint32_t MMCRXIPIS : 1; /*!< [7..7] MMC Receive Checksum Offload Interrupt Status */ + uint32_t : 1; + __IM uint32_t TSIS : 1; /*!< [9..9] Timestamp Interrupt Status */ + __IM uint32_t LPIIS : 1; /*!< [10..10] LPI Interrupt Status */ + uint32_t : 21; + } Interrupt_Status_b; + }; + + union + { + __IOM uint32_t Interrupt_Mask; /*!< (@ 0x0000003C) Interrupt Mask Register */ + + struct + { + uint32_t : 3; + __IOM uint32_t PMTIM : 1; /*!< [3..3] PMT Interrupt Mask */ + uint32_t : 5; + __IOM uint32_t TSIM : 1; /*!< [9..9] Timestamp Interrupt Mask */ + __IOM uint32_t LPIIM : 1; /*!< [10..10] LPI Interrupt Mask */ + uint32_t : 21; + } Interrupt_Mask_b; + }; + + union + { + __IOM uint32_t MAR0_H; /*!< (@ 0x00000040) MAC Address 0 High Register */ + + struct + { + __IOM uint32_t ADDRHI : 16; /*!< [15..0] MAC Address0[47:32] */ + uint32_t : 15; + __IM uint32_t AE : 1; /*!< [31..31] Address Enable */ + } MAR0_H_b; + }; + + union + { + __IOM uint32_t MAR0_L; /*!< (@ 0x00000044) MAC Address 0 Low Register */ + + struct + { + __IOM uint32_t ADDRLO : 32; /*!< [31..0] MAC Address0[31:0] */ + } MAR0_L_b; + }; + + union + { + __IOM uint32_t MAR1_H; /*!< (@ 0x00000048) MAC ADDRESS High Register */ + + struct + { + __IOM uint32_t ADDRHI : 16; /*!< [15..0] MAC Address n[47:32] */ + uint32_t : 8; + __IOM uint32_t MBC : 6; /*!< [29..24] Mask Byte Control */ + __IOM uint32_t SA : 1; /*!< [30..30] Source Address */ + __IOM uint32_t AE : 1; /*!< [31..31] Address Enable */ + } MAR1_H_b; + }; + + union + { + __IOM uint32_t MAR1_L; /*!< (@ 0x0000004C) MAC ADDRESS Low Register */ + + struct + { + __IOM uint32_t ADDRLO : 32; /*!< [31..0] MAC Address n[31:0] */ + } MAR1_L_b; + }; + + union + { + __IOM uint32_t MAR2_H; /*!< (@ 0x00000050) MAC ADDRESS High Register */ + + struct + { + __IOM uint32_t ADDRHI : 16; /*!< [15..0] MAC Address n[47:32] */ + uint32_t : 8; + __IOM uint32_t MBC : 6; /*!< [29..24] Mask Byte Control */ + __IOM uint32_t SA : 1; /*!< [30..30] Source Address */ + __IOM uint32_t AE : 1; /*!< [31..31] Address Enable */ + } MAR2_H_b; + }; + + union + { + __IOM uint32_t MAR2_L; /*!< (@ 0x00000054) MAC ADDRESS Low Register */ + + struct + { + __IOM uint32_t ADDRLO : 32; /*!< [31..0] MAC Address n[31:0] */ + } MAR2_L_b; + }; + + union + { + __IOM uint32_t MAR3_H; /*!< (@ 0x00000058) MAC ADDRESS High Register */ + + struct + { + __IOM uint32_t ADDRHI : 16; /*!< [15..0] MAC Address n[47:32] */ + uint32_t : 8; + __IOM uint32_t MBC : 6; /*!< [29..24] Mask Byte Control */ + __IOM uint32_t SA : 1; /*!< [30..30] Source Address */ + __IOM uint32_t AE : 1; /*!< [31..31] Address Enable */ + } MAR3_H_b; + }; + + union + { + __IOM uint32_t MAR3_L; /*!< (@ 0x0000005C) MAC ADDRESS Low Register */ + + struct + { + __IOM uint32_t ADDRLO : 32; /*!< [31..0] MAC Address n[31:0] */ + } MAR3_L_b; + }; + + union + { + __IOM uint32_t MAR4_H; /*!< (@ 0x00000060) MAC ADDRESS High Register */ + + struct + { + __IOM uint32_t ADDRHI : 16; /*!< [15..0] MAC Address n[47:32] */ + uint32_t : 8; + __IOM uint32_t MBC : 6; /*!< [29..24] Mask Byte Control */ + __IOM uint32_t SA : 1; /*!< [30..30] Source Address */ + __IOM uint32_t AE : 1; /*!< [31..31] Address Enable */ + } MAR4_H_b; + }; + + union + { + __IOM uint32_t MAR4_L; /*!< (@ 0x00000064) MAC ADDRESS Low Register */ + + struct + { + __IOM uint32_t ADDRLO : 32; /*!< [31..0] MAC Address n[31:0] */ + } MAR4_L_b; + }; + + union + { + __IOM uint32_t MAR5_H; /*!< (@ 0x00000068) MAC ADDRESS High Register */ + + struct + { + __IOM uint32_t ADDRHI : 16; /*!< [15..0] MAC Address n[47:32] */ + uint32_t : 8; + __IOM uint32_t MBC : 6; /*!< [29..24] Mask Byte Control */ + __IOM uint32_t SA : 1; /*!< [30..30] Source Address */ + __IOM uint32_t AE : 1; /*!< [31..31] Address Enable */ + } MAR5_H_b; + }; + + union + { + __IOM uint32_t MAR5_L; /*!< (@ 0x0000006C) MAC ADDRESS Low Register */ + + struct + { + __IOM uint32_t ADDRLO : 32; /*!< [31..0] MAC Address n[31:0] */ + } MAR5_L_b; + }; + + union + { + __IOM uint32_t MAR6_H; /*!< (@ 0x00000070) MAC ADDRESS High Register */ + + struct + { + __IOM uint32_t ADDRHI : 16; /*!< [15..0] MAC Address n[47:32] */ + uint32_t : 8; + __IOM uint32_t MBC : 6; /*!< [29..24] Mask Byte Control */ + __IOM uint32_t SA : 1; /*!< [30..30] Source Address */ + __IOM uint32_t AE : 1; /*!< [31..31] Address Enable */ + } MAR6_H_b; + }; + + union + { + __IOM uint32_t MAR6_L; /*!< (@ 0x00000074) MAC ADDRESS Low Register */ + + struct + { + __IOM uint32_t ADDRLO : 32; /*!< [31..0] MAC Address n[31:0] */ + } MAR6_L_b; + }; + + union + { + __IOM uint32_t MAR7_H; /*!< (@ 0x00000078) MAC ADDRESS High Register */ + + struct + { + __IOM uint32_t ADDRHI : 16; /*!< [15..0] MAC Address n[47:32] */ + uint32_t : 8; + __IOM uint32_t MBC : 6; /*!< [29..24] Mask Byte Control */ + __IOM uint32_t SA : 1; /*!< [30..30] Source Address */ + __IOM uint32_t AE : 1; /*!< [31..31] Address Enable */ + } MAR7_H_b; + }; + + union + { + __IOM uint32_t MAR7_L; /*!< (@ 0x0000007C) MAC ADDRESS Low Register */ + + struct + { + __IOM uint32_t ADDRLO : 32; /*!< [31..0] MAC Address n[31:0] */ + } MAR7_L_b; + }; + + union + { + __IOM uint32_t MAR8_H; /*!< (@ 0x00000080) MAC ADDRESS High Register */ + + struct + { + __IOM uint32_t ADDRHI : 16; /*!< [15..0] MAC Address n[47:32] */ + uint32_t : 8; + __IOM uint32_t MBC : 6; /*!< [29..24] Mask Byte Control */ + __IOM uint32_t SA : 1; /*!< [30..30] Source Address */ + __IOM uint32_t AE : 1; /*!< [31..31] Address Enable */ + } MAR8_H_b; + }; + + union + { + __IOM uint32_t MAR8_L; /*!< (@ 0x00000084) MAC ADDRESS Low Register */ + + struct + { + __IOM uint32_t ADDRLO : 32; /*!< [31..0] MAC Address n[31:0] */ + } MAR8_L_b; + }; + + union + { + __IOM uint32_t MAR9_H; /*!< (@ 0x00000088) MAC ADDRESS High Register */ + + struct + { + __IOM uint32_t ADDRHI : 16; /*!< [15..0] MAC Address n[47:32] */ + uint32_t : 8; + __IOM uint32_t MBC : 6; /*!< [29..24] Mask Byte Control */ + __IOM uint32_t SA : 1; /*!< [30..30] Source Address */ + __IOM uint32_t AE : 1; /*!< [31..31] Address Enable */ + } MAR9_H_b; + }; + + union + { + __IOM uint32_t MAR9_L; /*!< (@ 0x0000008C) MAC ADDRESS Low Register */ + + struct + { + __IOM uint32_t ADDRLO : 32; /*!< [31..0] MAC Address n[31:0] */ + } MAR9_L_b; + }; + + union + { + __IOM uint32_t MAR10_H; /*!< (@ 0x00000090) MAC ADDRESS High Register */ + + struct + { + __IOM uint32_t ADDRHI : 16; /*!< [15..0] MAC Address n[47:32] */ + uint32_t : 8; + __IOM uint32_t MBC : 6; /*!< [29..24] Mask Byte Control */ + __IOM uint32_t SA : 1; /*!< [30..30] Source Address */ + __IOM uint32_t AE : 1; /*!< [31..31] Address Enable */ + } MAR10_H_b; + }; + + union + { + __IOM uint32_t MAR10_L; /*!< (@ 0x00000094) MAC ADDRESS Low Register */ + + struct + { + __IOM uint32_t ADDRLO : 32; /*!< [31..0] MAC Address n[31:0] */ + } MAR10_L_b; + }; + + union + { + __IOM uint32_t MAR11_H; /*!< (@ 0x00000098) MAC ADDRESS High Register */ + + struct + { + __IOM uint32_t ADDRHI : 16; /*!< [15..0] MAC Address n[47:32] */ + uint32_t : 8; + __IOM uint32_t MBC : 6; /*!< [29..24] Mask Byte Control */ + __IOM uint32_t SA : 1; /*!< [30..30] Source Address */ + __IOM uint32_t AE : 1; /*!< [31..31] Address Enable */ + } MAR11_H_b; + }; + + union + { + __IOM uint32_t MAR11_L; /*!< (@ 0x0000009C) MAC ADDRESS Low Register */ + + struct + { + __IOM uint32_t ADDRLO : 32; /*!< [31..0] MAC Address n[31:0] */ + } MAR11_L_b; + }; + + union + { + __IOM uint32_t MAR12_H; /*!< (@ 0x000000A0) MAC ADDRESS High Register */ + + struct + { + __IOM uint32_t ADDRHI : 16; /*!< [15..0] MAC Address n[47:32] */ + uint32_t : 8; + __IOM uint32_t MBC : 6; /*!< [29..24] Mask Byte Control */ + __IOM uint32_t SA : 1; /*!< [30..30] Source Address */ + __IOM uint32_t AE : 1; /*!< [31..31] Address Enable */ + } MAR12_H_b; + }; + + union + { + __IOM uint32_t MAR12_L; /*!< (@ 0x000000A4) MAC ADDRESS Low Register */ + + struct + { + __IOM uint32_t ADDRLO : 32; /*!< [31..0] MAC Address n[31:0] */ + } MAR12_L_b; + }; + + union + { + __IOM uint32_t MAR13_H; /*!< (@ 0x000000A8) MAC ADDRESS High Register */ + + struct + { + __IOM uint32_t ADDRHI : 16; /*!< [15..0] MAC Address n[47:32] */ + uint32_t : 8; + __IOM uint32_t MBC : 6; /*!< [29..24] Mask Byte Control */ + __IOM uint32_t SA : 1; /*!< [30..30] Source Address */ + __IOM uint32_t AE : 1; /*!< [31..31] Address Enable */ + } MAR13_H_b; + }; + + union + { + __IOM uint32_t MAR13_L; /*!< (@ 0x000000AC) MAC ADDRESS Low Register */ + + struct + { + __IOM uint32_t ADDRLO : 32; /*!< [31..0] MAC Address n[31:0] */ + } MAR13_L_b; + }; + + union + { + __IOM uint32_t MAR14_H; /*!< (@ 0x000000B0) MAC ADDRESS High Register */ + + struct + { + __IOM uint32_t ADDRHI : 16; /*!< [15..0] MAC Address n[47:32] */ + uint32_t : 8; + __IOM uint32_t MBC : 6; /*!< [29..24] Mask Byte Control */ + __IOM uint32_t SA : 1; /*!< [30..30] Source Address */ + __IOM uint32_t AE : 1; /*!< [31..31] Address Enable */ + } MAR14_H_b; + }; + + union + { + __IOM uint32_t MAR14_L; /*!< (@ 0x000000B4) MAC ADDRESS Low Register */ + + struct + { + __IOM uint32_t ADDRLO : 32; /*!< [31..0] MAC Address n[31:0] */ + } MAR14_L_b; + }; + + union + { + __IOM uint32_t MAR15_H; /*!< (@ 0x000000B8) MAC ADDRESS High Register */ + + struct + { + __IOM uint32_t ADDRHI : 16; /*!< [15..0] MAC Address n[47:32] */ + uint32_t : 8; + __IOM uint32_t MBC : 6; /*!< [29..24] Mask Byte Control */ + __IOM uint32_t SA : 1; /*!< [30..30] Source Address */ + __IOM uint32_t AE : 1; /*!< [31..31] Address Enable */ + } MAR15_H_b; + }; + + union + { + __IOM uint32_t MAR15_L; /*!< (@ 0x000000BC) MAC ADDRESS Low Register */ + + struct + { + __IOM uint32_t ADDRLO : 32; /*!< [31..0] MAC Address n[31:0] */ + } MAR15_L_b; + }; + __IM uint32_t RESERVED1[7]; + + union + { + __IOM uint32_t WDog_Timeout; /*!< (@ 0x000000DC) Watchdog Timeout Register */ + + struct + { + __IOM uint32_t WTO : 14; /*!< [13..0] Watchdog Timeout */ + uint32_t : 2; + __IOM uint32_t PWE : 1; /*!< [16..16] Programmable Watchdog Enable */ + uint32_t : 15; + } WDog_Timeout_b; + }; + __IM uint32_t RESERVED2[8]; + + union + { + __IOM uint32_t MMC_Control; /*!< (@ 0x00000100) MMC Control Register */ + + struct + { + __IOM uint32_t CNTRST : 1; /*!< [0..0] Counters Reset */ + __IOM uint32_t CNTSTOPRO : 1; /*!< [1..1] Counters Stop Rollover */ + __IOM uint32_t RSTONRD : 1; /*!< [2..2] Reset on Read */ + __IOM uint32_t CNTFREEZ : 1; /*!< [3..3] MMC Counter Freeze */ + __IOM uint32_t CNTPRST : 1; /*!< [4..4] Counters Preset */ + __IOM uint32_t CNTPRSTLVL : 1; /*!< [5..5] Full-Half Preset */ + uint32_t : 2; + __IOM uint32_t UCDBC : 1; /*!< [8..8] Update MMC Counters for Dropped Broadcast Frames */ + uint32_t : 23; + } MMC_Control_b; + }; + + union + { + __IM uint32_t MMC_Receive_Interrupt; /*!< (@ 0x00000104) MMC Receive Interrupt Register */ + + struct + { + __IM uint32_t RXGBFRMIS : 1; /*!< [0..0] MMC Receive Good Bad Frame Counter Interrupt Status */ + __IM uint32_t RXGBOCTIS : 1; /*!< [1..1] MMC Receive Good Bad Octet Counter Interrupt Status */ + __IM uint32_t RXGOCTIS : 1; /*!< [2..2] MMC Receive Good Octet Counter Interrupt Status */ + __IM uint32_t RXBCGFIS : 1; /*!< [3..3] MMC Receive Broadcast Good Frame Counter Interrupt Status */ + __IM uint32_t RXMCGFIS : 1; /*!< [4..4] MMC Receive Multicast Good Frame Counter Interrupt Status */ + __IM uint32_t RXCRCERFIS : 1; /*!< [5..5] MMC Receive CRC Error Frame Counter Interrupt Status */ + __IM uint32_t RXALGNERFIS : 1; /*!< [6..6] MMC Receive Alignment Error Frame Counter Interrupt Status */ + __IM uint32_t RXRUNTFIS : 1; /*!< [7..7] MMC Receive Runt Frame Counter Interrupt Status */ + __IM uint32_t RXJABERFIS : 1; /*!< [8..8] MMC Receive Jabber Error Frame Counter Interrupt Status */ + __IM uint32_t RXUSIZEGFIS : 1; /*!< [9..9] MMC Receive Undersize Good Frame Counter Interrupt Status */ + __IM uint32_t RXOSIZEGFIS : 1; /*!< [10..10] MMC Receive Oversize Good Frame Counter Interrupt Status */ + __IM uint32_t RX64OCTGBFIS : 1; /*!< [11..11] MMC Receive 64 Octet Good Bad Frame Counter Interrupt + * Status */ + __IM uint32_t RX65T127OCTGBFIS : 1; /*!< [12..12] MMC Receive 65 to 127 Octet Good Bad Frame Counter + * Interrupt Status */ + __IM uint32_t RX128T255OCTGBFIS : 1; /*!< [13..13] MMC Receive 128 to 255 Octet Good Bad Frame Counter + * Interrupt Status */ + __IM uint32_t RX256T511OCTGBFIS : 1; /*!< [14..14] MMC Receive 256 to 511 Octet Good Bad Frame Counter + * Interrupt Status */ + __IM uint32_t RX512T1023OCTGBFIS : 1; /*!< [15..15] MMC Receive 512 to 1023 Octet Good Bad Frame Counter + * Interrupt Status */ + __IM uint32_t RX1024TMAXOCTGBFIS : 1; /*!< [16..16] MMC Receive 1024 to Maximum Octet Good Bad Frame Counter + * Interrupt Status */ + __IM uint32_t RXUCGFIS : 1; /*!< [17..17] MMC Receive Unicast Good Frame Counter Interrupt Status */ + __IM uint32_t RXLENERFIS : 1; /*!< [18..18] MMC Receive Length Error Frame Counter Interrupt Status */ + __IM uint32_t RXORANGEFIS : 1; /*!< [19..19] MMC Receive Out Of Range Error Frame Counter Interrupt + * Status */ + __IM uint32_t RXPAUSFIS : 1; /*!< [20..20] MMC Receive Pause Frame Counter Interrupt Status */ + __IM uint32_t RXFOVFIS : 1; /*!< [21..21] MMC Receive FIFO Overflow Frame Counter Interrupt Status */ + __IM uint32_t RXVLANGBFIS : 1; /*!< [22..22] MMC Receive VLAN Good Bad Frame Counter Interrupt Status */ + __IM uint32_t RXWDOGFIS : 1; /*!< [23..23] MMC Receive Watchdog Error Frame Counter Interrupt + * Status */ + __IM uint32_t RXRCVERRFIS : 1; /*!< [24..24] MMC Receive Error Frame Counter Interrupt Status */ + __IM uint32_t RXCTRLFIS : 1; /*!< [25..25] MMC Receive Control Frame Counter Interrupt Status */ + uint32_t : 6; + } MMC_Receive_Interrupt_b; + }; + + union + { + __IM uint32_t MMC_Transmit_Interrupt; /*!< (@ 0x00000108) MMC Transmit Interrupt Register */ + + struct + { + __IM uint32_t TXGBOCTIS : 1; /*!< [0..0] MMC Transmit Good Bad Octet Counter Interrupt Status */ + __IM uint32_t TXGBFRMIS : 1; /*!< [1..1] MMC Transmit Good Bad Frame Counter Interrupt Status */ + __IM uint32_t TXBCGFIS : 1; /*!< [2..2] MMC Transmit Broadcast Good Frame Counter Interrupt Status */ + __IM uint32_t TXMCGFIS : 1; /*!< [3..3] MMC Transmit Multicast Good Frame Counter Interrupt Status */ + __IM uint32_t TX64OCTGBFIS : 1; /*!< [4..4] MMC Transmit 64 Octet Good Bad Frame Counter Interrupt + * Status */ + __IM uint32_t TX65T127OCTGBFIS : 1; /*!< [5..5] MMC Transmit 65 to 127 Octet Good Bad Frame Counter Interrupt + * Status */ + __IM uint32_t TX128T255OCTGBFIS : 1; /*!< [6..6] MMC Transmit 128 to 255 Octet Good Bad Frame Counter + * Interrupt Status */ + __IM uint32_t TX256T511OCTGBFIS : 1; /*!< [7..7] MMC Transmit 256 to 511 Octet Good Bad Frame Counter + * Interrupt Status */ + __IM uint32_t TX512T1023OCTGBFIS : 1; /*!< [8..8] MMC Transmit 512 to 1023 Octet Good Bad Frame Counter + * Interrupt Status */ + __IM uint32_t TX1024TMAXOCTGBFIS : 1; /*!< [9..9] MMC Transmit 1024 to Maximum Octet Good Bad Frame Counter + * Interrupt Status */ + __IM uint32_t TXUCGBFIS : 1; /*!< [10..10] MMC Transmit Unicast Good Bad Frame Counter Interrupt + * Status */ + __IM uint32_t TXMCGBFIS : 1; /*!< [11..11] MMC Transmit Multicast Good Bad Frame Counter Interrupt + * Status */ + __IM uint32_t TXBCGBFIS : 1; /*!< [12..12] MMC Transmit Broadcast Good Bad Frame Counter Interrupt + * Status */ + __IM uint32_t TXUFLOWERFIS : 1; /*!< [13..13] MMC Transmit Underflow Error Frame Counter Interrupt + * Status */ + __IM uint32_t TXSCOLGFIS : 1; /*!< [14..14] MMC Transmit Single Collision Good Frame Counter Interrupt + * Status */ + __IM uint32_t TXMCOLGFIS : 1; /*!< [15..15] MMC Transmit Multiple Collision Good Frame Counter + * Interrupt Status */ + __IM uint32_t TXDEFFIS : 1; /*!< [16..16] MMC Transmit Deferred Frame Counter Interrupt Status */ + __IM uint32_t TXLATCOLFIS : 1; /*!< [17..17] MMC Transmit Late Collision Frame Counter Interrupt + * Status */ + __IM uint32_t TXEXCOLFIS : 1; /*!< [18..18] MMC Transmit Excessive Collision Frame Counter Interrupt + * Status */ + __IM uint32_t TXCARERFIS : 1; /*!< [19..19] MMC Transmit Carrier Error Frame Counter Interrupt + * Status */ + __IM uint32_t TXGOCTIS : 1; /*!< [20..20] MMC Transmit Good Octet Counter Interrupt Status */ + __IM uint32_t TXGFRMIS : 1; /*!< [21..21] MMC Transmit Good Frame Counter Interrupt Status */ + __IM uint32_t TXEXDEFFIS : 1; /*!< [22..22] MMC Transmit Excessive Deferral Frame Counter Interrupt + * Status */ + __IM uint32_t TXPAUSFIS : 1; /*!< [23..23] MMC Transmit Pause Frame Counter Interrupt Status */ + __IM uint32_t TXVLANGFIS : 1; /*!< [24..24] MMC Transmit VLAN Good Frame Counter Interrupt Status */ + __IM uint32_t TXOSIZEGFIS : 1; /*!< [25..25] MMC Transmit Oversize Good Frame Counter Interrupt + * Status */ + uint32_t : 6; + } MMC_Transmit_Interrupt_b; + }; + + union + { + __IOM uint32_t MMC_Receive_Interrupt_Mask; /*!< (@ 0x0000010C) MMC Receive Interrupt Mask Register */ + + struct + { + __IOM uint32_t RXGBFRMIM : 1; /*!< [0..0] MMC Receive Good Bad Frame Counter Interrupt Mask */ + __IOM uint32_t RXGBOCTIM : 1; /*!< [1..1] MMC Receive Good Bad Octet Counter Interrupt Mask */ + __IOM uint32_t RXGOCTIM : 1; /*!< [2..2] MMC Receive Good Octet Counter Interrupt Mask */ + __IOM uint32_t RXBCGFIM : 1; /*!< [3..3] MMC Receive Broadcast Good Frame Counter Interrupt Mask */ + __IOM uint32_t RXMCGFIM : 1; /*!< [4..4] MMC Receive Multicast Good Frame Counter Interrupt Mask */ + __IOM uint32_t RXCRCERFIM : 1; /*!< [5..5] MMC Receive CRC Error Frame Counter Interrupt Mask */ + __IOM uint32_t RXALGNERFIM : 1; /*!< [6..6] MMC Receive Alignment Error Frame Counter Interrupt Mask */ + __IOM uint32_t RXRUNTFIM : 1; /*!< [7..7] MMC Receive Runt Frame Counter Interrupt Mask */ + __IOM uint32_t RXJABERFIM : 1; /*!< [8..8] MMC Receive Jabber Error Frame Counter Interrupt Mask */ + __IOM uint32_t RXUSIZEGFIM : 1; /*!< [9..9] MMC Receive Undersize Good Frame Counter Interrupt Mask */ + __IOM uint32_t RXOSIZEGFIM : 1; /*!< [10..10] MMC Receive Oversize Good Frame Counter Interrupt Mask */ + __IOM uint32_t RX64OCTGBFIM : 1; /*!< [11..11] MMC Receive 64 Octet Good Bad Frame Counter Interrupt + * Mask */ + __IOM uint32_t RX65T127OCTGBFIM : 1; /*!< [12..12] MMC Receive 65 to 127 Octet Good Bad Frame Counter + * Interrupt Mask */ + __IOM uint32_t RX128T255OCTGBFIM : 1; /*!< [13..13] MMC Receive 128 to 255 Octet Good Bad Frame Counter + * Interrupt Mask */ + __IOM uint32_t RX256T511OCTGBFIM : 1; /*!< [14..14] MMC Receive 256 to 511 Octet Good Bad Frame Counter + * Interrupt Mask */ + __IOM uint32_t RX512T1023OCTGBFIM : 1; /*!< [15..15] MMC Receive 512 to 1023 Octet Good Bad Frame Counter + * Interrupt Mask */ + __IOM uint32_t RX1024TMAXOCTGBFIM : 1; /*!< [16..16] MMC Receive 1024 to Maximum Octet Good Bad Frame Counter + * Interrupt Mask */ + __IOM uint32_t RXUCGFIM : 1; /*!< [17..17] MMC Receive Unicast Good Frame Counter Interrupt Mask */ + __IOM uint32_t RXLENERFIM : 1; /*!< [18..18] MMC Receive Length Error Frame Counter Interrupt Mask */ + __IOM uint32_t RXORANGEFIM : 1; /*!< [19..19] MMC Receive Out Of Range Error Frame Counter Interrupt + * Mask */ + __IOM uint32_t RXPAUSFIM : 1; /*!< [20..20] MMC Receive Pause Frame Counter Interrupt Mask */ + __IOM uint32_t RXFOVFIM : 1; /*!< [21..21] MMC Receive FIFO Overflow Frame Counter Interrupt Mask */ + __IOM uint32_t RXVLANGBFIM : 1; /*!< [22..22] MMC Receive VLAN Good Bad Frame Counter Interrupt Mask */ + __IOM uint32_t RXWDOGFIM : 1; /*!< [23..23] MMC Receive Watchdog Error Frame Counter Interrupt + * Mask */ + __IOM uint32_t RXRCVERRFIM : 1; /*!< [24..24] MMC Receive Error Frame Counter Interrupt Mask */ + __IOM uint32_t RXCTRLFIM : 1; /*!< [25..25] MMC Receive Control Frame Counter Interrupt Mask */ + uint32_t : 6; + } MMC_Receive_Interrupt_Mask_b; + }; + + union + { + __IOM uint32_t MMC_Transmit_Interrupt_Mask; /*!< (@ 0x00000110) MMC Transmit Interrupt Mask Register */ + + struct + { + __IOM uint32_t TXGBOCTIM : 1; /*!< [0..0] MMC Transmit Good Bad Octet Counter Interrupt Mask */ + __IOM uint32_t TXGBFRMIM : 1; /*!< [1..1] MMC Transmit Good Bad Frame Counter Interrupt Mask */ + __IOM uint32_t TXBCGFIM : 1; /*!< [2..2] MMC Transmit Broadcast Good Frame Counter Interrupt Mask */ + __IOM uint32_t TXMCGFIM : 1; /*!< [3..3] MMC Transmit Multicast Good Frame Counter Interrupt Mask */ + __IOM uint32_t TX64OCTGBFIM : 1; /*!< [4..4] MMC Transmit 64 Octet Good Bad Frame Counter Interrupt + * Mask */ + __IOM uint32_t TX65T127OCTGBFIM : 1; /*!< [5..5] MMC Transmit 65 to 127 Octet Good Bad Frame Counter Interrupt + * Mask */ + __IOM uint32_t TX128T255OCTGBFIM : 1; /*!< [6..6] MMC Transmit 128 to 255 Octet Good Bad Frame Counter + * Interrupt Mask */ + __IOM uint32_t TX256T511OCTGBFIM : 1; /*!< [7..7] MMC Transmit 256 to 511 Octet Good Bad Frame Counter + * Interrupt Mask */ + __IOM uint32_t TX512T1023OCTGBFIM : 1; /*!< [8..8] MMC Transmit 512 to 1023 Octet Good Bad Frame Counter + * Interrupt Mask */ + __IOM uint32_t TX1024TMAXOCTGBFIM : 1; /*!< [9..9] MMC Transmit 1024 to Maximum Octet Good Bad Frame Counter + * Interrupt Mask */ + __IOM uint32_t TXUCGBFIM : 1; /*!< [10..10] MMC Transmit Unicast Good Bad Frame Counter Interrupt + * Mask */ + __IOM uint32_t TXMCGBFIM : 1; /*!< [11..11] MMC Transmit Multicast Good Bad Frame Counter Interrupt + * Mask */ + __IOM uint32_t TXBCGBFIM : 1; /*!< [12..12] MMC Transmit Broadcast Good Bad Frame Counter Interrupt + * Mask */ + __IOM uint32_t TXUFLOWERFIM : 1; /*!< [13..13] MMC Transmit Underflow Error Frame Counter Interrupt + * Mask */ + __IOM uint32_t TXSCOLGFIM : 1; /*!< [14..14] MMC Transmit Single Collision Good Frame Counter Interrupt + * Mask */ + __IOM uint32_t TXMCOLGFIM : 1; /*!< [15..15] MMC Transmit Multiple Collision Good Frame Counter + * Interrupt Mask */ + __IOM uint32_t TXDEFFIM : 1; /*!< [16..16] MMC Transmit Deferred Frame Counter Interrupt Mask */ + __IOM uint32_t TXLATCOLFIM : 1; /*!< [17..17] MMC Transmit Late Collision Frame Counter Interrupt + * Mask */ + __IOM uint32_t TXEXCOLFIM : 1; /*!< [18..18] MMC Transmit Excessive Collision Frame Counter Interrupt + * Mask */ + __IOM uint32_t TXCARERFIM : 1; /*!< [19..19] MMC Transmit Carrier Error Frame Counter Interrupt + * Mask */ + __IOM uint32_t TXGOCTIM : 1; /*!< [20..20] MMC Transmit Good Octet Counter Interrupt Mask */ + __IOM uint32_t TXGFRMIM : 1; /*!< [21..21] MMC Transmit Good Frame Counter Interrupt Mask */ + __IOM uint32_t TXEXDEFFIM : 1; /*!< [22..22] MMC Transmit Excessive Deferral Frame Counter Interrupt + * Mask */ + __IOM uint32_t TXPAUSFIM : 1; /*!< [23..23] MMC Transmit Pause Frame Counter Interrupt Mask */ + __IOM uint32_t TXVLANGFIM : 1; /*!< [24..24] MMC Transmit VLAN Good Frame Counter Interrupt Mask */ + __IOM uint32_t TXOSIZEGFIM : 1; /*!< [25..25] MMC Transmit Oversize Good Frame Counter Interrupt + * Mask */ + uint32_t : 6; + } MMC_Transmit_Interrupt_Mask_b; + }; + + union + { + __IM uint32_t Tx_Octet_Count_Good_Bad; /*!< (@ 0x00000114) Transmit Octet Count for Good and Bad Frames */ + + struct + { + __IM uint32_t TXOCTGB : 32; /*!< [31..0] This field indicates the number of bytes transmitted + * in good and bad frames exclusive of preamble and retried + * bytes. */ + } Tx_Octet_Count_Good_Bad_b; + }; + + union + { + __IM uint32_t Tx_Frame_Count_Good_Bad; /*!< (@ 0x00000118) Transmit Frame Count for Good and Bad Frames */ + + struct + { + __IM uint32_t TXFRMGB : 32; /*!< [31..0] This field indicates the number of good and bad frames + * transmitted, exclusive of retried frames. */ + } Tx_Frame_Count_Good_Bad_b; + }; + + union + { + __IM uint32_t Tx_Broadcast_Frames_Good; /*!< (@ 0x0000011C) Transmit Frame Count for Good Broadcast Frames */ + + struct + { + __IM uint32_t TXBCASTG : 32; /*!< [31..0] This field indicates the number of transmitted good + * broadcast frames. */ + } Tx_Broadcast_Frames_Good_b; + }; + + union + { + __IM uint32_t Tx_Multicast_Frames_Good; /*!< (@ 0x00000120) Transmit Frame Count for Good Multicast Frames */ + + struct + { + __IM uint32_t TXMCASTG : 32; /*!< [31..0] This field indicates the number of transmitted good + * multicast frames. */ + } Tx_Multicast_Frames_Good_b; + }; + + union + { + __IM uint32_t Tx_64Octets_Frames_Good_Bad; /*!< (@ 0x00000124) Transmit Octet Count for Good and Bad 64 Byte + * Frames */ + + struct + { + __IM uint32_t TX64OCTGB : 32; /*!< [31..0] This field indicates the number of transmitted good + * and bad frames with length of 64 bytes, exclusive of preamble + * and retried frames. */ + } Tx_64Octets_Frames_Good_Bad_b; + }; + + union + { + __IM uint32_t Tx_65To127Octets_Frames_Good_Bad; /*!< (@ 0x00000128) Transmit Octet Count for Good and Bad 65 to 127 + * Bytes Frames */ + + struct + { + __IM uint32_t TX65_127OCTGB : 32; /*!< [31..0] This field indicates the number of transmitted good + * and bad frames with length between 65 and 127 (inclusive) + * bytes, exclusive of preamble and retried frames. */ + } Tx_65To127Octets_Frames_Good_Bad_b; + }; + + union + { + __IM uint32_t Tx_128To255Octets_Frames_Good_Bad; /*!< (@ 0x0000012C) Transmit Octet Count for Good and Bad 128 to + * 255 Bytes Frames */ + + struct + { + __IM uint32_t TX128_255OCTGB : 32; /*!< [31..0] This field indicates the number of transmitted good + * and bad frames with length between 128 and 255 (inclusive) + * bytes, exclusive of preamble and retried frames. */ + } Tx_128To255Octets_Frames_Good_Bad_b; + }; + + union + { + __IM uint32_t Tx_256To511Octets_Frames_Good_Bad; /*!< (@ 0x00000130) Transmit Octet Count for Good and Bad 256 to + * 511 Bytes Frames */ + + struct + { + __IM uint32_t TX256_511OCTGB : 32; /*!< [31..0] This field indicates the number of transmitted good + * and bad frames with length between 256 and 511 (inclusive) + * bytes, exclusive of preamble and retried frames. */ + } Tx_256To511Octets_Frames_Good_Bad_b; + }; + + union + { + __IM uint32_t Tx_512To1023Octets_Frames_Good_Bad; /*!< (@ 0x00000134) Transmit Octet Count for Good and Bad 512 to + * 1023 Bytes Frames */ + + struct + { + __IM uint32_t TX512_1023OCTGB : 32; /*!< [31..0] This field indicates the number of transmitted good + * and bad frames with length between 512 and 1,023 (inclusive) + * bytes, exclusive of preamble and retried frames. */ + } Tx_512To1023Octets_Frames_Good_Bad_b; + }; + + union + { + __IM uint32_t Tx_1024ToMaxOctets_Frames_Good_Bad; /*!< (@ 0x00000138) Transmit Octet Count for Good and Bad 1024 to + * Maxsize Bytes Frames */ + + struct + { + __IM uint32_t TX1024_MAXOCTGB : 32; /*!< [31..0] This field indicates the number of good and bad frames + * transmitted with length between 1,024 and maxsize (inclusive) + * bytes, exclusive of preamble and retried frames. */ + } Tx_1024ToMaxOctets_Frames_Good_Bad_b; + }; + + union + { + __IM uint32_t Tx_Unicast_Frames_Good_Bad; /*!< (@ 0x0000013C) Transmit Frame Count for Good and Bad Unicast + * Frames */ + + struct + { + __IM uint32_t TXUCASTGB : 32; /*!< [31..0] This field indicates the number of transmitted good + * and bad unicast frames. */ + } Tx_Unicast_Frames_Good_Bad_b; + }; + + union + { + __IM uint32_t Tx_Multicast_Frames_Good_Bad; /*!< (@ 0x00000140) Transmit Frame Count for Good and Bad Multicast + * Frames */ + + struct + { + __IM uint32_t TXMCASTGB : 32; /*!< [31..0] This field indicates the number of transmitted good + * and bad multicast frames. */ + } Tx_Multicast_Frames_Good_Bad_b; + }; + + union + { + __IM uint32_t Tx_Broadcast_Frames_Good_Bad; /*!< (@ 0x00000144) Transmit Frame Count for Good and Bad Broadcast + * Frames */ + + struct + { + __IM uint32_t TXBCASTGB : 32; /*!< [31..0] This field indicates the number of transmitted good + * and bad broadcast frames. */ + } Tx_Broadcast_Frames_Good_Bad_b; + }; + + union + { + __IM uint32_t Tx_Underflow_Error_Frames; /*!< (@ 0x00000148) Transmit Frame Count for Underflow Error Frames */ + + struct + { + __IM uint32_t TXUNDRFLW : 16; /*!< [15..0] This field indicates the number of frames aborted because + * of frame underflow error. */ + uint32_t : 16; + } Tx_Underflow_Error_Frames_b; + }; + + union + { + __IM uint32_t Tx_Single_Collision_Good_Frames; /*!< (@ 0x0000014C) Transmit Frame Count for Frames Transmitted after + * Single Collision */ + + struct + { + __IM uint32_t TXSNGLCOLG : 16; /*!< [15..0] This field indicates the number of successfully transmitted + * frames after a single collision in the half-duplex mode. */ + uint32_t : 16; + } Tx_Single_Collision_Good_Frames_b; + }; + + union + { + __IM uint32_t Tx_Multiple_Collision_Good_Frames; /*!< (@ 0x00000150) Transmit Frame Count for Frames Transmitted after + * Multiple Collision */ + + struct + { + __IM uint32_t TXMULTCOLG : 16; /*!< [15..0] This field indicates the number of successfully transmitted + * frames after multiple collisions in the half-duplex mode. */ + uint32_t : 16; + } Tx_Multiple_Collision_Good_Frames_b; + }; + + union + { + __IM uint32_t Tx_Deferred_Frames; /*!< (@ 0x00000154) Transmit Frame Count for Deferred Frames */ + + struct + { + __IM uint32_t TXDEFRD : 16; /*!< [15..0] This field indicates the number of successfully transmitted + * frames after a deferral in the half-duplex mode. */ + uint32_t : 16; + } Tx_Deferred_Frames_b; + }; + + union + { + __IM uint32_t Tx_Late_Collision_Frames; /*!< (@ 0x00000158) Transmit Frame Count for Late Collision Error + * Frames */ + + struct + { + __IM uint32_t TXLATECOL : 16; /*!< [15..0] This field indicates the number of frames aborted because + * of late collision error. */ + uint32_t : 16; + } Tx_Late_Collision_Frames_b; + }; + + union + { + __IM uint32_t Tx_Excessive_Collision_Frames; /*!< (@ 0x0000015C) Transmit Frame Count for Excessive Collision + * Error Frames */ + + struct + { + __IM uint32_t TXEXSCOL : 16; /*!< [15..0] This field indicates the number of frames aborted because + * of excessive (16) collision error. */ + uint32_t : 16; + } Tx_Excessive_Collision_Frames_b; + }; + + union + { + __IM uint32_t Tx_Carrier_Error_Frames; /*!< (@ 0x00000160) Transmit Frame Count for Carrier Sense Error + * Frames */ + + struct + { + __IM uint32_t TXCARR : 16; /*!< [15..0] This field indicates the number of frames aborted because + * of carrier sense error (no carrier or loss of carrier). */ + uint32_t : 16; + } Tx_Carrier_Error_Frames_b; + }; + + union + { + __IM uint32_t Tx_Octet_Count_Good; /*!< (@ 0x00000164) Transmit Octet Count for Good Frames */ + + struct + { + __IM uint32_t TXOCTG : 32; /*!< [31..0] TXOCTG */ + } Tx_Octet_Count_Good_b; + }; + + union + { + __IM uint32_t Tx_Frame_Count_Good; /*!< (@ 0x00000168) Transmit Frame Count for Good Frames */ + + struct + { + __IM uint32_t TXFRMG : 32; /*!< [31..0] This field indicates the number of transmitted good + * frames, exclusive of preamble. */ + } Tx_Frame_Count_Good_b; + }; + + union + { + __IM uint32_t Tx_Excessive_Deferral_Error; /*!< (@ 0x0000016C) Transmit Frame Count for Excessive Deferral Error + * Frames */ + + struct + { + __IM uint32_t TXEXSDEF : 16; /*!< [15..0] This field indicates the number of frames aborted because + * of excessive deferral error, that is, frames deferred for + * more than two max sized frame times. */ + uint32_t : 16; + } Tx_Excessive_Deferral_Error_b; + }; + + union + { + __IM uint32_t Tx_Pause_Frames; /*!< (@ 0x00000170) Transmit Frame Count for Good PAUSE Frames */ + + struct + { + __IM uint32_t TXPAUSE : 16; /*!< [15..0] This field indicates the number of transmitted good + * PAUSE frames. */ + uint32_t : 16; + } Tx_Pause_Frames_b; + }; + + union + { + __IM uint32_t Tx_VLAN_Frames_Good; /*!< (@ 0x00000174) Transmit Frame Count for Good VLAN Frames */ + + struct + { + __IM uint32_t TXVLANG : 32; /*!< [31..0] This register maintains the number of transmitted good + * VLAN frames, exclusive of retried frames. */ + } Tx_VLAN_Frames_Good_b; + }; + + union + { + __IM uint32_t Tx_OSize_Frames_Good; /*!< (@ 0x00000178) Transmit Frame Count for Good Oversize Frames */ + + struct + { + __IM uint32_t TXOSIZG : 16; /*!< [15..0] This field indicates the number of frames transmitted + * without errors and with length greater than the maxsize + * (1,518 or 1,522 bytes for VLAN tagged frames; 2000 bytes + * if enabled in bit [27] of MAC Configuration Register (MAC_Configuration)) + */ + uint32_t : 16; + } Tx_OSize_Frames_Good_b; + }; + __IM uint32_t RESERVED3; + + union + { + __IM uint32_t Rx_Frames_Count_Good_Bad; /*!< (@ 0x00000180) Receive Frame Count for Good and Bad Frames */ + + struct + { + __IM uint32_t RXFRMGB : 32; /*!< [31..0] This field indicates the number of received good and + * bad frames. */ + } Rx_Frames_Count_Good_Bad_b; + }; + + union + { + __IM uint32_t Rx_Octet_Count_Good_Bad; /*!< (@ 0x00000184) Receive Octet Count for Good and Bad Frames */ + + struct + { + __IM uint32_t RXOCTGB : 32; /*!< [31..0] This field indicates the number of bytes received, exclusive + * of preamble, in good and bad frames. */ + } Rx_Octet_Count_Good_Bad_b; + }; + + union + { + __IM uint32_t Rx_Octet_Count_Good; /*!< (@ 0x00000188) Receive Octet Count for Good Frames */ + + struct + { + __IM uint32_t RXOCTG : 32; /*!< [31..0] This field indicates the number of bytes received, exclusive + * of preamble, only in good frames. */ + } Rx_Octet_Count_Good_b; + }; + + union + { + __IM uint32_t Rx_Broadcast_Frames_Good; /*!< (@ 0x0000018C) Receive Frame Count for Good Broadcast Frames */ + + struct + { + __IM uint32_t RXBCASTG : 32; /*!< [31..0] This field indicates the number of received good broadcast + * frames. */ + } Rx_Broadcast_Frames_Good_b; + }; + + union + { + __IM uint32_t Rx_Multicast_Frames_Good; /*!< (@ 0x00000190) Receive Frame Count for Good Multicast Frames */ + + struct + { + __IM uint32_t RXMCASTG : 32; /*!< [31..0] This field indicates the number of received good multicast + * frames. */ + } Rx_Multicast_Frames_Good_b; + }; + + union + { + __IM uint32_t Rx_CRC_Error_Frames; /*!< (@ 0x00000194) Receive Frame Count for CRC Error Frames */ + + struct + { + __IM uint32_t RXCRCERR : 16; /*!< [15..0] This field indicates the number of frames received with + * CRC error. */ + uint32_t : 16; + } Rx_CRC_Error_Frames_b; + }; + + union + { + __IM uint32_t Rx_Alignment_Error_Frames; /*!< (@ 0x00000198) Receive Frame Count for Alignment Error Frames */ + + struct + { + __IM uint32_t RXALGNERR : 16; /*!< [15..0] This field indicates the number of frames received with + * alignment (dribble) error. This field is valid only in + * the 10 or 100 Mbps mode. */ + uint32_t : 16; + } Rx_Alignment_Error_Frames_b; + }; + + union + { + __IM uint32_t Rx_Runt_Error_Frames; /*!< (@ 0x0000019C) Receive Frame Count for Runt Error Frames */ + + struct + { + __IM uint32_t RXRUNTERR : 16; /*!< [15..0] This field indicates the number of frames received with + * runt error (< 64 bytes and CRC error). */ + uint32_t : 16; + } Rx_Runt_Error_Frames_b; + }; + + union + { + __IM uint32_t Rx_Jabber_Error_Frames; /*!< (@ 0x000001A0) Receive Frame Count for Jabber Error Frames */ + + struct + { + __IM uint32_t RXJABERR : 16; /*!< [15..0] This field indicates the number of giant frames received + * with length (including CRC) greater than 1,518 bytes (1,522 + * bytes for VLAN tagged) and with CRC error. If Jumbo Frame + * mode is enabled, then frames of length greater than 9,018 + * bytes (9,022 for VLAN tagged) are considered as giant frames. */ + uint32_t : 16; + } Rx_Jabber_Error_Frames_b; + }; + + union + { + __IM uint32_t Rx_Undersize_Frames_Good; /*!< (@ 0x000001A4) Receive Frame Count for Undersize Frames */ + + struct + { + __IM uint32_t RXUNDERSZG : 16; /*!< [15..0] This field indicates the number of frames received with + * length less than 64 bytes and without errors. */ + uint32_t : 16; + } Rx_Undersize_Frames_Good_b; + }; + + union + { + __IM uint32_t Rx_Oversize_Frames_Good; /*!< (@ 0x000001A8) Receive Frame Count for Oversize Frames */ + + struct + { + __IM uint32_t RXOVERSZG : 16; /*!< [15..0] This field indicates the number of frames received without + * errors, with length greater than the maxsize (1,518 or + * 1,522 for VLAN tagged frames; 2,000 bytes if enabled in + * bit [27] of MAC Configuration Register (MAC_Configuration)). */ + uint32_t : 16; + } Rx_Oversize_Frames_Good_b; + }; + + union + { + __IM uint32_t Rx_64Octets_Frames_Good_Bad; /*!< (@ 0x000001AC) Receive Frame Count for Good and Bad 64 Byte + * Frames */ + + struct + { + __IM uint32_t RX64OCTGB : 32; /*!< [31..0] This field indicates the number of received good and + * bad frames with length 64 bytes, exclusive of preamble. */ + } Rx_64Octets_Frames_Good_Bad_b; + }; + + union + { + __IM uint32_t Rx_65To127Octets_Frames_Good_Bad; /*!< (@ 0x000001B0) Receive Frame Count for Good and Bad 65 to 127 + * Bytes Frames */ + + struct + { + __IM uint32_t RX65_127OCTGB : 32; /*!< [31..0] This field indicates the number of received good and + * bad frames received with length between 65 and 127 (inclusive) + * bytes, exclusive of preamble. */ + } Rx_65To127Octets_Frames_Good_Bad_b; + }; + + union + { + __IM uint32_t Rx_128To255Octets_Frames_Good_Bad; /*!< (@ 0x000001B4) Receive Frame Count for Good and Bad 128 to 255 + * Bytes Frames */ + + struct + { + __IM uint32_t RX128_255OCTGB : 32; /*!< [31..0] This field indicates the number of received good and + * bad frames with length between 128 and 255 (inclusive) + * bytes, exclusive of preamble. */ + } Rx_128To255Octets_Frames_Good_Bad_b; + }; + + union + { + __IM uint32_t Rx_256To511Octets_Frames_Good_Bad; /*!< (@ 0x000001B8) Receive Frame Count for Good and Bad 256 to 511 + * Bytes Frames */ + + struct + { + __IM uint32_t RX256_511OCTGB : 32; /*!< [31..0] This field indicates the number of received good and + * bad frames with length between 256 and 511 (inclusive) + * bytes, exclusive of preamble. */ + } Rx_256To511Octets_Frames_Good_Bad_b; + }; + + union + { + __IM uint32_t Rx_512To1023Octets_Frames_Good_Bad; /*!< (@ 0x000001BC) Receive Frame Count for Good and Bad 512 to 1,023 + * Bytes Frames */ + + struct + { + __IM uint32_t RX512_1023OCTGB : 32; /*!< [31..0] This field indicates the number of received good and + * bad frames with length between 512 and 1,023 (inclusive) + * bytes, exclusive of preamble. */ + } Rx_512To1023Octets_Frames_Good_Bad_b; + }; + + union + { + __IM uint32_t Rx_1024ToMaxOctets_Frames_Good_Bad; /*!< (@ 0x000001C0) Receive Frame Count for Good and Bad 1,024 to + * Maxsize Bytes Frames */ + + struct + { + __IM uint32_t RX1024_MAXOCTGB : 32; /*!< [31..0] This field indicates the number of received good and + * bad frames with length between 1,024 and maxsize (inclusive) + * bytes, exclusive of preamble and retried frames. */ + } Rx_1024ToMaxOctets_Frames_Good_Bad_b; + }; + + union + { + __IM uint32_t Rx_Unicast_Frames_Good; /*!< (@ 0x000001C4) Receive Frame Count for Good Unicast Frames */ + + struct + { + __IM uint32_t RXUCASTG : 32; /*!< [31..0] This field indicates the number of received good unicast + * frames. */ + } Rx_Unicast_Frames_Good_b; + }; + + union + { + __IM uint32_t Rx_Length_Error_Frames; /*!< (@ 0x000001C8) Receive Frame Count for Length Error Frames */ + + struct + { + __IM uint32_t RXLENERR : 16; /*!< [15..0] RXLENERR */ + uint32_t : 16; + } Rx_Length_Error_Frames_b; + }; + + union + { + __IM uint32_t Rx_Out_Of_Range_Type_Frames; /*!< (@ 0x000001CC) Receive Frame Count for Out of Range Frames */ + + struct + { + __IM uint32_t RXOUTOFRNG : 16; /*!< [15..0] This field indicates the number of received frames with + * length field not equal to the valid frame size (greater + * than 1,500 but less than 1,536). */ + uint32_t : 16; + } Rx_Out_Of_Range_Type_Frames_b; + }; + + union + { + __IM uint32_t Rx_Pause_Frames; /*!< (@ 0x000001D0) Receive Frame Count for PAUSE Frames */ + + struct + { + __IM uint32_t RXPAUSEFRM : 16; /*!< [15..0] This field indicates the number of received good and + * valid PAUSE frames. */ + uint32_t : 16; + } Rx_Pause_Frames_b; + }; + + union + { + __IM uint32_t Rx_FIFO_Overflow_Frames; /*!< (@ 0x000001D4) Receive Frame Count for FIFO Overflow Frames */ + + struct + { + __IM uint32_t RXFIFOOVFL : 16; /*!< [15..0] This field indicates the number of received frames missed + * because of FIFO overflow. */ + uint32_t : 16; + } Rx_FIFO_Overflow_Frames_b; + }; + + union + { + __IM uint32_t Rx_VLAN_Frames_Good_Bad; /*!< (@ 0x000001D8) Receive Frame Count for Good and Bad VLAN Frames */ + + struct + { + __IM uint32_t RXVLANFRGB : 32; /*!< [31..0] This field indicates the number of received good and + * bad VLAN frames. */ + } Rx_VLAN_Frames_Good_Bad_b; + }; + + union + { + __IM uint32_t Rx_Watchdog_Error_Frames; /*!< (@ 0x000001DC) Receive Frame Count for Watchdog Error Frames */ + + struct + { + __IM uint32_t RXWDGERR : 16; /*!< [15..0] This field indicates the number of frames received with + * error because of the watchdog timeout error (frames with + * more than 2,048 bytes or value programmed in Watchdog Timeout + * Register (WDog_Timeout)). */ + uint32_t : 16; + } Rx_Watchdog_Error_Frames_b; + }; + + union + { + __IM uint32_t Rx_Receive_Error_Frames; /*!< (@ 0x000001E0) Receive Frame Count for Receive Error Frames */ + + struct + { + __IM uint32_t RXRCVERR : 16; /*!< [15..0] This field indicates the number of frames received with + * error because of the GMII/MII RXER error or Frame Extension + * error on GMII. */ + uint32_t : 16; + } Rx_Receive_Error_Frames_b; + }; + + union + { + __IM uint32_t Rx_Control_Frames_Good; /*!< (@ 0x000001E4) Receive Frame Count for Good Control Frames */ + + struct + { + __IM uint32_t RXCTRLG : 32; /*!< [31..0] This field indicates the number of good control frames + * received. */ + } Rx_Control_Frames_Good_b; + }; + __IM uint32_t RESERVED4[134]; + + union + { + __IOM uint32_t GMACTRGSEL; /*!< (@ 0x00000400) GMAC PTP Trigger Select Register */ + + struct + { + __IOM uint32_t TRGSEL : 2; /*!< [1..0] Select PTP Timestamp Trigger for GMAC IP */ + uint32_t : 30; + } GMACTRGSEL_b; + }; + __IM uint32_t RESERVED5[63]; + + union + { + __IOM uint32_t HASH_TABLE_REG[8]; /*!< (@ 0x00000500) Hash Table Register [0..7] (n = 0 to 7) */ + + struct + { + __IOM uint32_t HT : 32; /*!< [31..0] This field contains the nth 32 bits [31:0] of the Hash + * table. */ + } HASH_TABLE_REG_b[8]; + }; + __IM uint32_t RESERVED6[26]; + + union + { + __IOM uint32_t VLAN_Hash_Table_Reg; /*!< (@ 0x00000588) VLAN Hash Table Register */ + + struct + { + __IOM uint32_t VLHT : 16; /*!< [15..0] VLAN Hash Table */ + uint32_t : 16; + } VLAN_Hash_Table_Reg_b; + }; + __IM uint32_t RESERVED7[93]; + + union + { + __IOM uint32_t Timestamp_Control; /*!< (@ 0x00000700) Timestamp Control Register */ + + struct + { + __IOM uint32_t TSENA : 1; /*!< [0..0] Timestamp Enable */ + uint32_t : 7; + __IOM uint32_t TSENALL : 1; /*!< [8..8] Enable Timestamp for all Frames */ + __IOM uint32_t TSCTRLSSR : 1; /*!< [9..9] Timestamp Digital or Binary Rollover Control */ + __IOM uint32_t TSVER2ENA : 1; /*!< [10..10] Enable PTP packet Processing for Version 2 Format */ + __IOM uint32_t TSIPENA : 1; /*!< [11..11] Enable Processing of PTP over Ethernet Frames */ + __IOM uint32_t TSIPV6ENA : 1; /*!< [12..12] Enable Processing of PTP Frames Sent Over IPv6 UDP */ + __IOM uint32_t TSIPV4ENA : 1; /*!< [13..13] Enable Processing of PTP Frames Sent over IPv4 UDP */ + __IOM uint32_t TSEVNTENA : 1; /*!< [14..14] Enable Timestamp Snapshot for Event Messages */ + __IOM uint32_t TSMSTRENA : 1; /*!< [15..15] Enable Snapshot for Messages Relevant to Master */ + __IOM uint32_t SNAPTYPSEL : 2; /*!< [17..16] Select PTP packets for Taking Snapshots */ + __IOM uint32_t TSENMACADDR : 1; /*!< [18..18] Enable MAC address for PTP Frame Filtering */ + uint32_t : 5; + __IOM uint32_t ATSFC : 1; /*!< [24..24] Auxiliary Snapshot FIFO Clear */ + __IOM uint32_t ATSEN0 : 1; /*!< [25..25] Auxiliary Snapshot 0 Enable */ + __IOM uint32_t ATSEN1 : 1; /*!< [26..26] Auxiliary Snapshot 1 Enable */ + uint32_t : 5; + } Timestamp_Control_b; + }; + __IM uint32_t RESERVED8[9]; + + union + { + __IM uint32_t Timestamp_Status; /*!< (@ 0x00000728) Timestamp Status Register */ + + struct + { + uint32_t : 2; + __IM uint32_t AUXTSTRIG : 1; /*!< [2..2] Auxiliary Timestamp Trigger Snapshot */ + uint32_t : 13; + __IM uint32_t ATSSTN : 4; /*!< [19..16] Auxiliary Timestamp Snapshot Trigger Identifier */ + uint32_t : 4; + __IM uint32_t ATSSTM : 1; /*!< [24..24] Auxiliary Timestamp Snapshot Trigger Missed */ + __IM uint32_t ATSNS : 5; /*!< [29..25] Number of Auxiliary Timestamp Snapshots */ + uint32_t : 2; + } Timestamp_Status_b; + }; + __IM uint32_t RESERVED9; + + union + { + __IM uint32_t Auxiliary_Timestamp_Nanoseconds; /*!< (@ 0x00000730) Auxiliary Timestamp - Nanoseconds Register */ + + struct + { + __IM uint32_t AUXTSLO : 31; /*!< [30..0] Contains the lower 32 bits (nanoseconds field) of the + * auxiliary timestamp. */ + uint32_t : 1; + } Auxiliary_Timestamp_Nanoseconds_b; + }; + + union + { + __IM uint32_t Auxiliary_Timestamp_Seconds; /*!< (@ 0x00000734) Auxiliary Timestamp - Seconds Register */ + + struct + { + __IM uint32_t AUXTSHI : 32; /*!< [31..0] Contains the upper 32 bits (Seconds field) of the auxiliary + * timestamp. */ + } Auxiliary_Timestamp_Seconds_b; + }; + __IM uint32_t RESERVED10[50]; + + union + { + __IOM uint32_t MAR16_H; /*!< (@ 0x00000800) MAC ADDRESS High Register */ + + struct + { + __IOM uint32_t ADDRHI : 16; /*!< [15..0] MAC Address n[47:32] */ + uint32_t : 8; + __IOM uint32_t MBC : 6; /*!< [29..24] Mask Byte Control */ + __IOM uint32_t SA : 1; /*!< [30..30] Source Address */ + __IOM uint32_t AE : 1; /*!< [31..31] Address Enable */ + } MAR16_H_b; + }; + + union + { + __IOM uint32_t MAR16_L; /*!< (@ 0x00000804) MAC ADDRESS Low Register */ + + struct + { + __IOM uint32_t ADDRLO : 32; /*!< [31..0] MAC Address n[31:0] */ + } MAR16_L_b; + }; + + union + { + __IOM uint32_t MAR17_H; /*!< (@ 0x00000808) MAC ADDRESS High Register */ + + struct + { + __IOM uint32_t ADDRHI : 16; /*!< [15..0] MAC Address n[47:32] */ + uint32_t : 8; + __IOM uint32_t MBC : 6; /*!< [29..24] Mask Byte Control */ + __IOM uint32_t SA : 1; /*!< [30..30] Source Address */ + __IOM uint32_t AE : 1; /*!< [31..31] Address Enable */ + } MAR17_H_b; + }; + + union + { + __IOM uint32_t MAR17_L; /*!< (@ 0x0000080C) MAC ADDRESS Low Register */ + + struct + { + __IOM uint32_t ADDRLO : 32; /*!< [31..0] MAC Address n[31:0] */ + } MAR17_L_b; + }; + __IM uint32_t RESERVED11[508]; + + union + { + __IOM uint32_t Bus_Mode; /*!< (@ 0x00001000) Bus Mode Register */ + + struct + { + __IOM uint32_t SWR : 1; /*!< [0..0] Software Reset */ + __IM uint32_t DA : 1; /*!< [1..1] DMA Arbitration Scheme */ + __IOM uint32_t DSL : 5; /*!< [6..2] Descriptor Skip Length */ + __IOM uint32_t ATDS : 1; /*!< [7..7] Enhanced Descriptor Size */ + __IOM uint32_t PBL : 6; /*!< [13..8] Programmable Burst Length */ + __IM uint32_t PR : 2; /*!< [15..14] Priority Ratio */ + __IOM uint32_t FB : 1; /*!< [16..16] Fixed Burst */ + __IOM uint32_t RPBL : 6; /*!< [22..17] RX DMA PBL */ + __IOM uint32_t USP : 1; /*!< [23..23] Use Separate PBL */ + __IOM uint32_t PBLx8 : 1; /*!< [24..24] PBLx8 Mode */ + __IOM uint32_t AAL : 1; /*!< [25..25] Address Aligned Beats */ + __IM uint32_t MB : 1; /*!< [26..26] Mixed Burst */ + __IM uint32_t TXPR : 1; /*!< [27..27] Transmit Priority */ + __IM uint32_t PRWG : 2; /*!< [29..28] Channel Priority Weights */ + uint32_t : 1; + __IM uint32_t RIB : 1; /*!< [31..31] Rebuild INCRx Burst */ + } Bus_Mode_b; + }; + + union + { + __IOM uint32_t Transmit_Poll_Demand; /*!< (@ 0x00001004) Transmit Poll Demand Register */ + + struct + { + __IOM uint32_t TPD : 32; /*!< [31..0] Transmit Poll Demand */ + } Transmit_Poll_Demand_b; + }; + + union + { + __IOM uint32_t Receive_Poll_Demand; /*!< (@ 0x00001008) Receive Poll Demand Register */ + + struct + { + __IOM uint32_t RPD : 32; /*!< [31..0] Receive Poll Demand */ + } Receive_Poll_Demand_b; + }; + + union + { + __IOM uint32_t Receive_Descriptor_List_Address; /*!< (@ 0x0000100C) Receive Descriptor List Address Register */ + + struct + { + uint32_t : 2; + __IOM uint32_t RDESLA_32bit : 30; /*!< [31..2] Start of Receive List */ + } Receive_Descriptor_List_Address_b; + }; + + union + { + __IOM uint32_t Transmit_Descriptor_List_Address; /*!< (@ 0x00001010) Transmit Descriptor List Address Register */ + + struct + { + uint32_t : 2; + __IOM uint32_t TDESLA_32bit : 30; /*!< [31..2] Start of Transmit List */ + } Transmit_Descriptor_List_Address_b; + }; + + union + { + __IOM uint32_t Status; /*!< (@ 0x00001014) Status Register */ + + struct + { + __IOM uint32_t TI : 1; /*!< [0..0] Transmit Interrupt */ + __IOM uint32_t TPS : 1; /*!< [1..1] Transmit Process Stopped */ + __IOM uint32_t TU : 1; /*!< [2..2] Transmit Buffer Unavailable */ + __IOM uint32_t TJT : 1; /*!< [3..3] Transmit Jabber Timeout */ + __IOM uint32_t OVF : 1; /*!< [4..4] Receive Overflow */ + __IOM uint32_t UNF : 1; /*!< [5..5] Transmit Underflow */ + __IOM uint32_t RI : 1; /*!< [6..6] Receive Interrupt */ + __IOM uint32_t RU : 1; /*!< [7..7] Receive Buffer Unavailable */ + __IOM uint32_t RPS : 1; /*!< [8..8] Receive Process Stopped */ + __IOM uint32_t RWT : 1; /*!< [9..9] Receive Watchdog Timeout */ + __IOM uint32_t ETI : 1; /*!< [10..10] Early Transmit Interrupt */ + uint32_t : 2; + __IOM uint32_t FBI : 1; /*!< [13..13] Fatal Bus Error Interrupt */ + __IOM uint32_t ERI : 1; /*!< [14..14] Early Receive Interrupt */ + __IOM uint32_t AIS : 1; /*!< [15..15] Abnormal Interrupt Summary */ + __IOM uint32_t NIS : 1; /*!< [16..16] Normal Interrupt Summary */ + __IM uint32_t RS : 3; /*!< [19..17] Received Process State */ + __IM uint32_t TS : 3; /*!< [22..20] Transmit Process State */ + __IM uint32_t EB : 3; /*!< [25..23] Error Bits */ + uint32_t : 1; + __IM uint32_t GMI : 1; /*!< [27..27] GMAC MMC Interrupt */ + __IM uint32_t GPI : 1; /*!< [28..28] GMAC PMT Interrupt */ + __IM uint32_t TTI : 1; /*!< [29..29] Timestamp Trigger Interrupt */ + __IM uint32_t GLPII : 1; /*!< [30..30] GMAC LPI Interrupt */ + uint32_t : 1; + } Status_b; + }; + + union + { + __IOM uint32_t Operation_Mode; /*!< (@ 0x00001018) Operation Mode Register */ + + struct + { + uint32_t : 1; + __IOM uint32_t SR : 1; /*!< [1..1] Start or Stop Receive */ + __IOM uint32_t OSF : 1; /*!< [2..2] Operate on Second Frame */ + __IOM uint32_t RTC : 2; /*!< [4..3] Receive Threshold Control */ + __IOM uint32_t DGF : 1; /*!< [5..5] Drop Giant Frames */ + __IOM uint32_t FUF : 1; /*!< [6..6] Forward Undersized Good Frames */ + __IOM uint32_t FEF : 1; /*!< [7..7] Forward Error Frames */ + __IOM uint32_t EFC : 1; /*!< [8..8] Enable HW Flow Control */ + __IOM uint32_t RFA : 2; /*!< [10..9] Threshold for Activating Flow Control (in half-duplex + * and full-duplex) */ + __IOM uint32_t RFD : 2; /*!< [12..11] Threshold for Deactivating Flow Control (in half-duplex + * and full-duplex) */ + __IOM uint32_t ST : 1; /*!< [13..13] Start or Stop Transmission Command */ + __IOM uint32_t TTC : 3; /*!< [16..14] Transmit Threshold Control */ + uint32_t : 3; + __IOM uint32_t FTF : 1; /*!< [20..20] Flush Transmit FIFO */ + __IOM uint32_t TSF : 1; /*!< [21..21] Transmit Store and Forward */ + uint32_t : 3; + __IOM uint32_t RSF : 1; /*!< [25..25] Receive Store and Forward */ + __IOM uint32_t DT : 1; /*!< [26..26] Disable Dropping of TCP/IP Checksum Error Frames */ + uint32_t : 5; + } Operation_Mode_b; + }; + + union + { + __IOM uint32_t Interrupt_Enable; /*!< (@ 0x0000101C) Interrupt Enable Register */ + + struct + { + __IOM uint32_t TIE : 1; /*!< [0..0] Transmit Interrupt Enable */ + __IOM uint32_t TSE : 1; /*!< [1..1] Transmit Stopped Enable */ + __IOM uint32_t TUE : 1; /*!< [2..2] Transmit Buffer Unavailable Enable */ + __IOM uint32_t TJE : 1; /*!< [3..3] Transmit Jabber Timeout Enable */ + __IOM uint32_t OVE : 1; /*!< [4..4] Overflow Interrupt Enable */ + __IOM uint32_t UNE : 1; /*!< [5..5] Underflow Interrupt Enable */ + __IOM uint32_t RIE : 1; /*!< [6..6] Receive Interrupt Enable */ + __IOM uint32_t RUE : 1; /*!< [7..7] Receive Buffer Unavailable Enable */ + __IOM uint32_t RSE : 1; /*!< [8..8] Receive Stopped Enable */ + __IOM uint32_t RWE : 1; /*!< [9..9] Receive Watchdog Timeout Enable */ + __IOM uint32_t ETE : 1; /*!< [10..10] Early Transmit Interrupt Enable */ + uint32_t : 2; + __IOM uint32_t FBE : 1; /*!< [13..13] Fatal Bus Error Enable */ + __IOM uint32_t ERE : 1; /*!< [14..14] Early Receive Interrupt Enable */ + __IOM uint32_t AIE : 1; /*!< [15..15] Abnormal Interrupt Summary Enable */ + __IOM uint32_t NIE : 1; /*!< [16..16] Normal Interrupt Summary Enable */ + uint32_t : 15; + } Interrupt_Enable_b; + }; + + union + { + __IM uint32_t Missed_Frame_And_Buffer_Overflow_Counter; /*!< (@ 0x00001020) Missed Frame and Buffer Overflow Counter Register */ + + struct + { + __IM uint32_t MISFRMCNT : 16; /*!< [15..0] Missed Frame Counter */ + __IM uint32_t MISCNTOVF : 1; /*!< [16..16] Overflow Bit for Missed Frame Counter */ + __IM uint32_t OVFFRMCNT : 11; /*!< [27..17] Overflow Frame Counter */ + __IM uint32_t OVFCNTOVF : 1; /*!< [28..28] Overflow Bit for FIFO Overflow Counter */ + uint32_t : 3; + } Missed_Frame_And_Buffer_Overflow_Counter_b; + }; + + union + { + __IOM uint32_t Receive_Interrupt_Watchdog_Timer; /*!< (@ 0x00001024) Receive Interrupt Watchdog Timer Register */ + + struct + { + __IOM uint32_t RIWT : 8; /*!< [7..0] RI Watchdog Timer Count */ + uint32_t : 24; + } Receive_Interrupt_Watchdog_Timer_b; + }; + + union + { + __IOM uint32_t AXI_Bus_Mode; /*!< (@ 0x00001028) AXI Bus Mode Register */ + + struct + { + __IM uint32_t UNDEF : 1; /*!< [0..0] AXI Undefined Burst Length */ + __IOM uint32_t BLEN4 : 1; /*!< [1..1] AXI Burst Length 4 */ + __IOM uint32_t BLEN8 : 1; /*!< [2..2] AXI Burst Length 8 */ + __IOM uint32_t BLEN16 : 1; /*!< [3..3] AXI Burst Length 16 */ + uint32_t : 8; + __IM uint32_t AXI_AAL : 1; /*!< [12..12] Address-Aligned Beats */ + __IOM uint32_t ONEKBBE : 1; /*!< [13..13] 1 KB Boundary Crossing Enable for the GMAC-AXI Master */ + uint32_t : 2; + __IOM uint32_t RD_OSR_LMT : 2; /*!< [17..16] AXI Maximum Read OutStanding Request Limit */ + uint32_t : 2; + __IOM uint32_t WR_OSR_LMT : 2; /*!< [21..20] AXI Maximum Write OutStanding Request Limit */ + uint32_t : 8; + __IOM uint32_t LPI_XIT_FRM : 1; /*!< [30..30] Unlock on Magic Packet or Remote Wake-Up Frame */ + __IOM uint32_t EN_LPI : 1; /*!< [31..31] Enable Low Power Interface (LPI) */ + } AXI_Bus_Mode_b; + }; + + union + { + __IM uint32_t AXI_Status; /*!< (@ 0x0000102C) AXI Status Register */ + + struct + { + __IM uint32_t AXWHSTS : 1; /*!< [0..0] AXI Master Write Channel */ + __IM uint32_t AXIRDSTS : 1; /*!< [1..1] AXI Master Read Channel Status */ + uint32_t : 30; + } AXI_Status_b; + }; + __IM uint32_t RESERVED12[6]; + + union + { + __IM uint32_t Current_Host_Transmit_Descriptor; /*!< (@ 0x00001048) Current Host Transmit Descriptor Register */ + + struct + { + __IM uint32_t CURTDESAPTR : 32; /*!< [31..0] Host Transmit Descriptor Address Pointer */ + } Current_Host_Transmit_Descriptor_b; + }; + + union + { + __IM uint32_t Current_Host_Receive_Descriptor; /*!< (@ 0x0000104C) Current Host Receive Descriptor Register */ + + struct + { + __IM uint32_t CURRDESAPTR : 32; /*!< [31..0] Host Receive Descriptor Address Pointer */ + } Current_Host_Receive_Descriptor_b; + }; + + union + { + __IM uint32_t Current_Host_Transmit_Buffer_Address; /*!< (@ 0x00001050) Current Host Transmit Buffer Address Register */ + + struct + { + __IM uint32_t CURTBUFAPTR : 32; /*!< [31..0] Host Transmit Buffer Address Pointer */ + } Current_Host_Transmit_Buffer_Address_b; + }; + + union + { + __IM uint32_t Current_Host_Receive_Buffer_Address; /*!< (@ 0x00001054) Current Host Receive Buffer Address Register */ + + struct + { + __IM uint32_t CURRBUFAPTR : 32; /*!< [31..0] Host Receive Buffer Address Pointer */ + } Current_Host_Receive_Buffer_Address_b; + }; + + union + { + __IM uint32_t HW_Feature; /*!< (@ 0x00001058) HW Feature Register */ + + struct + { + __IM uint32_t MIISEL : 1; /*!< [0..0] 10 or 100 Mbps support */ + __IM uint32_t GMIISEL : 1; /*!< [1..1] 1000 Mbps support */ + __IM uint32_t HDSEL : 1; /*!< [2..2] Half-Duplex support */ + __IM uint32_t EXTHASHEN : 1; /*!< [3..3] Expanded DA Hash Filter */ + __IM uint32_t HASHSEL : 1; /*!< [4..4] HASH Filter */ + __IM uint32_t ADDMACADRSEL : 1; /*!< [5..5] Multiple MAC Address Registers */ + uint32_t : 1; + __IM uint32_t L3L4FLTREN : 1; /*!< [7..7] Layer 3 and Layer 4 Filter Feature */ + __IM uint32_t SMASEL : 1; /*!< [8..8] SMA (MDIO) Interface */ + __IM uint32_t RWKSEL : 1; /*!< [9..9] PMT Remote wakeup */ + __IM uint32_t MGKSEL : 1; /*!< [10..10] PMT Magic Packet */ + __IM uint32_t MMCSEL : 1; /*!< [11..11] RMON Module */ + __IM uint32_t TSVER1SEL : 1; /*!< [12..12] Only IEEE 1588-2002 Timestamp */ + __IM uint32_t TSVER2SEL : 1; /*!< [13..13] IEEE 1588-2008 Advanced Timestamp */ + __IM uint32_t EEESEL : 1; /*!< [14..14] Energy Efficient Ethernet */ + __IM uint32_t AVSEL : 1; /*!< [15..15] AV Feature */ + __IM uint32_t TXCOESEL : 1; /*!< [16..16] Checksum Offload in TX */ + __IM uint32_t RXTYP1COE : 1; /*!< [17..17] IP Checksum Offload (Type 1) in RX */ + __IM uint32_t RXTYP2COE : 1; /*!< [18..18] IP Checksum Offload (Type 2) in RX */ + __IM uint32_t RXFIFOSIZE : 1; /*!< [19..19] RX FIFO > 2,048 Bytes */ + __IM uint32_t RXCHCNT : 2; /*!< [21..20] Number of additional RX channels */ + __IM uint32_t TXCHCNT : 2; /*!< [23..22] Number of additional TX channels */ + __IM uint32_t ENHDESSEL : 1; /*!< [24..24] Enhanced Descriptor */ + __IM uint32_t INTTSEN : 1; /*!< [25..25] Timestamping with Internal System Time */ + __IM uint32_t FLEXIPPSEN : 1; /*!< [26..26] Flexible Pulse-Per-Second Output (GMAC: 0) */ + __IM uint32_t SAVLANINS : 1; /*!< [27..27] Source Address or VLAN Insertion */ + __IM uint32_t ACTPHYIF : 3; /*!< [30..28] Active or Selected PHY interface */ + uint32_t : 1; + } HW_Feature_b; + }; +} R_GMAC_Type; /*!< Size = 4188 (0x105c) */ + +/* =========================================================================================================================== */ +/* ================ R_ETHSS ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Ethernet Subsystem (R_ETHSS) + */ + +typedef struct /*!< (@ 0x80110000) R_ETHSS Structure */ +{ + __IOM uint32_t PRCMD; /*!< (@ 0x00000000) Ethernet Protect Register */ + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t MODCTRL; /*!< (@ 0x00000008) Mode Control Register */ + + struct + { + __IOM uint32_t SW_MODE : 3; /*!< [2..0] Media I/F connectionSW_MODE[2:0]Media I/FPort 0Port 1Port + * 2000bETHSW Port 0ETHSW Port 1ETHSW Port 2001bESC Port 0ESC + * Port 1GMAC Port010bESC Port 0ESC Port 1ETHSW Port 2011bESC + * Port 0ESC Port 1ESC Port 2100bETHSW Port 0ESC Port 1ESC + * Port 2101bETHSW Port 0ESC Port 1ETHSW Port 2110b-ETHSW + * Port 1ETHSW Port 0111b-ESC Port 1ESC Port 0 */ + uint32_t : 29; + } MODCTRL_b; + }; + + union + { + __IOM uint32_t PTPMCTRL; /*!< (@ 0x0000000C) PTP Mode Control Register */ + + struct + { + __IOM uint32_t PTP_MODE : 1; /*!< [0..0] Select the unit number of PTP Timer for GMAC and Pulse + * Generator (unit 0 - 3) */ + uint32_t : 15; + __IOM uint32_t PTP_PLS_RSTn : 1; /*!< [16..16] Reset control for Pulse Generator (unit 0 - 3) */ + uint32_t : 15; + } PTPMCTRL_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IOM uint32_t PHYLNK; /*!< (@ 0x00000014) Ethernet PHY Link Mode Register */ + + struct + { + __IOM uint32_t SWLINK : 3; /*!< [2..0] Specify the active level of the ETHSW_PHYLINKn signal + * using the Ethernet switch interface */ + uint32_t : 1; + __IOM uint32_t CATLNK : 3; /*!< [6..4] Specify the active level of the ESC_PHYLINKn signal using + * the EtherCAT interface */ + uint32_t : 25; + } PHYLNK_b; + }; + __IM uint32_t RESERVED2[58]; + + union + { + __IOM uint32_t CONVCTRL[3]; /*!< (@ 0x00000100) RGMII/RMII Converter [0..2] Control Register */ + + struct + { + __IOM uint32_t CONV_MODE : 5; /*!< [4..0] Converter operation mode */ + uint32_t : 3; + __IOM uint32_t FULLD : 1; /*!< [8..8] FULLD */ + __IOM uint32_t RMII_RX_ER_EN : 1; /*!< [9..9] RMII_RX_ER_EN */ + __IOM uint32_t RMII_CRS_MODE : 1; /*!< [10..10] RMII_CRS_MODE */ + uint32_t : 1; + __IM uint32_t RGMII_LINK : 1; /*!< [12..12] RGMII_LINK */ + __IM uint32_t RGMII_DUPLEX : 1; /*!< [13..13] RGMII_DUPLEX */ + __IM uint32_t RGMII_SPEED : 2; /*!< [15..14] RGMII_SPEED */ + uint32_t : 16; + } CONVCTRL_b[3]; + }; + __IM uint32_t RESERVED3[2]; + + union + { + __IOM uint32_t CONVRST; /*!< (@ 0x00000114) RGMII/RMII Converter Reset Control Register */ + + struct + { + __IOM uint32_t PHYIR : 3; /*!< [2..0] PHYIR */ + uint32_t : 29; + } CONVRST_b; + }; + __IM uint32_t RESERVED4[123]; + + union + { + __IOM uint32_t SWCTRL; /*!< (@ 0x00000304) Switch Core Control Register */ + + struct + { + __IOM uint32_t SET10 : 3; /*!< [2..0] Port control to select use of 10 Mbps. Bit 0 = port 0, + * bit 1 = port 1, bit 2 = port 2. */ + uint32_t : 1; + __IOM uint32_t SET1000 : 3; /*!< [6..4] Port control to select use of 1000 Mbps. Bit 0 = port + * 0, bit 1 = port 1, bit 2 = port 2. */ + uint32_t : 9; + __IOM uint32_t STRAP_SX_ENB : 1; /*!< [16..16] Initialize switch after reset (set during module reset + * of ETHSW) */ + __IOM uint32_t STRAP_HUB_ENB : 1; /*!< [17..17] Initialize switch port 0 and 1 (set during module reset + * of ETHSW) */ + uint32_t : 14; + } SWCTRL_b; + }; + + union + { + __IOM uint32_t SWDUPC; /*!< (@ 0x00000308) Switch Core Duplex Mode Register */ + + struct + { + __IOM uint32_t PHY_DUPLEX : 3; /*!< [2..0] Configure the MAC of each port for full-duplex or half-duplex + * operation. Bit 0 = port 0, bit 1 = port 1, bit 2 = port + * 2. */ + uint32_t : 29; + } SWDUPC_b; + }; + __IM uint32_t RESERVED5[573]; + + union + { + __IOM uint32_t CDCR; /*!< (@ 0x00000C00) RGMII Clock Delay Control Register */ + + struct + { + __IOM uint32_t RXDLYEN : 1; /*!< [0..0] Enable delay for ETH2_RXCLK */ + __IOM uint32_t TXDLYEN : 1; /*!< [1..1] Enable delay for ETH2_TXCLK */ + __IOM uint32_t OSCCLKEN : 1; /*!< [2..2] Enable Oscillation mode for calibration */ + __IOM uint32_t CLKINEN : 1; /*!< [3..3] Enable Phase shift mode for normal operation */ + uint32_t : 28; + } CDCR_b; + }; + __IM uint32_t RESERVED6[3]; + + union + { + __IM uint32_t RXFCNT; /*!< (@ 0x00000C10) RGMII RX OSC Frequency Measurement Counter Register */ + + struct + { + __IM uint32_t RXFCNT : 16; /*!< [15..0] Oscillation frequency measurement counter for ETH2_RXCLK + * delay */ + uint32_t : 16; + } RXFCNT_b; + }; + + union + { + __IM uint32_t TXFCNT; /*!< (@ 0x00000C14) RGMII TX OSC Frequency Measurement Counter Register */ + + struct + { + __IM uint32_t TXFCNT : 16; /*!< [15..0] Oscillation frequency measurement counter for ETH2_TXCLK + * delay */ + uint32_t : 16; + } TXFCNT_b; + }; + + union + { + __IOM uint32_t RXTAPSEL; /*!< (@ 0x00000C18) RGMII RX TAP Selection Register */ + + struct + { + __IOM uint32_t RXTAPSEL : 7; /*!< [6..0] TAP selection for ETH2_RXCLK delay (number of taps for + * 90 degree phase shift) */ + uint32_t : 25; + } RXTAPSEL_b; + }; + + union + { + __IOM uint32_t TXTAPSEL; /*!< (@ 0x00000C1C) RGMII TX TAP Selection Register */ + + struct + { + __IOM uint32_t TXTAPSEL : 7; /*!< [6..0] TAP selection for ETH2_TXCLK delay (Number of taps for + * 90 degree phase shift) */ + uint32_t : 25; + } TXTAPSEL_b; + }; + + union + { + __IOM uint32_t MIIMCR; /*!< (@ 0x00000C20) MII Mode Control Register */ + + struct + { + __IOM uint32_t MIIM2MEN : 1; /*!< [0..0] Enable MAC-to-MAC MII Mode */ + uint32_t : 31; + } MIIMCR_b; + }; +} R_ETHSS_Type; /*!< Size = 3108 (0xc24) */ + +/* =========================================================================================================================== */ +/* ================ R_ESC_INI ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Initial Configuration 1 for EtherCAT Slave Controller (R_ESC_INI) + */ + +typedef struct /*!< (@ 0x80110200) R_ESC_INI Structure */ +{ + union + { + __IOM uint32_t ECATOFFADR; /*!< (@ 0x00000000) EtherCAT PHY Offset Address Setting Register */ + + struct + { + __IOM uint32_t OADD : 5; /*!< [4..0] PHY Offset Address Setting */ + uint32_t : 27; + } ECATOFFADR_b; + }; + + union + { + __IOM uint32_t ECATOPMOD; /*!< (@ 0x00000004) EtherCAT Operation Mode Register */ + + struct + { + __IOM uint32_t EEPROMSIZE : 1; /*!< [0..0] EEPROM Memory Size Specification */ + uint32_t : 31; + } ECATOPMOD_b; + }; + + union + { + __IOM uint32_t ECATDBGC; /*!< (@ 0x00000008) EtherCAT Debug Control Register */ + + struct + { + __IOM uint32_t TXSFT0 : 2; /*!< [1..0] Set the delay time for ETH0_TXEN and ETH0_TXDn of the + * EtherCAT */ + __IOM uint32_t TXSFT1 : 2; /*!< [3..2] Set the delay time for ETH1_TXEN and ETH1_TXDn of the + * EtherCAT */ + __IOM uint32_t TXSFT2 : 2; /*!< [5..4] Set the delay time for ETH2_TXEN and ETH2_TXDn of the + * EtherCAT */ + uint32_t : 26; + } ECATDBGC_b; + }; + + union + { + __IOM uint32_t ECATTRGSEL; /*!< (@ 0x0000000C) EtherCAT DC Latch Trigger Select Register */ + + struct + { + __IOM uint32_t TRGSEL0 : 1; /*!< [0..0] Select DC Latch Trigger 0 for ESC */ + __IOM uint32_t TRGSEL1 : 1; /*!< [1..1] Select DC Latch Trigger 1 for ESC */ + uint32_t : 30; + } ECATTRGSEL_b; + }; +} R_ESC_INI_Type; /*!< Size = 16 (0x10) */ + +/* =========================================================================================================================== */ +/* ================ R_ETHSW_PTP ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Ethernet Switch for PTP (R_ETHSW_PTP) + */ + +typedef struct /*!< (@ 0x80110400) R_ETHSW_PTP Structure */ +{ + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t SWPTPOUTSEL; /*!< (@ 0x00000004) ETHSW_PTPOUT Select Register */ + + struct + { + __IOM uint32_t IOSEL0 : 1; /*!< [0..0] Select the source of the ETHSW_PTPOUT0 output signal */ + __IOM uint32_t IOSEL1 : 1; /*!< [1..1] Select the source of the ETHSW_PTPOUT1 output signal */ + __IOM uint32_t IOSEL2 : 1; /*!< [2..2] Select the source of the ETHSW_PTPOUT2 output signal */ + __IOM uint32_t IOSEL3 : 1; /*!< [3..3] Select the source of the ETHSW_PTPOUT3 output signal */ + __IOM uint32_t EVTSEL0 : 1; /*!< [4..4] Select the source of the ETHSW_PTPOUT0 event for GIC, + * DMAC, and ELC */ + __IOM uint32_t EVTSEL1 : 1; /*!< [5..5] Select the source of the ETHSW_PTPOUT1 event for GIC, + * DMAC, and ELC */ + __IOM uint32_t EVTSEL2 : 1; /*!< [6..6] Select the source of the ETHSW_PTPOUT2 event for GIC, + * DMAC, and ELC */ + __IOM uint32_t EVTSEL3 : 1; /*!< [7..7] Select the source of the ETHSW_PTPOUT3 event for GIC, + * DMAC, and ELC */ + uint32_t : 24; + } SWPTPOUTSEL_b; + }; + __IM uint32_t RESERVED1[254]; + __IOM R_ETHSW_PTP_SWTM_Type SWTM[4]; /*!< (@ 0x00000400) Ethernet Switch Timer output pins 0-3 Registers */ +} R_ETHSW_PTP_Type; /*!< Size = 2048 (0x800) */ + +/* =========================================================================================================================== */ +/* ================ R_ETHSW ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Ethernet Switch (R_ETHSW) + */ + +typedef struct /*!< (@ 0x80120000) R_ETHSW Structure */ +{ + union + { + __IM uint32_t REVISION; /*!< (@ 0x00000000) Switch Core Version Register */ + + struct + { + __IM uint32_t REV : 32; /*!< [31..0] Revision */ + } REVISION_b; + }; + + union + { + __IOM uint32_t SCRATCH; /*!< (@ 0x00000004) Scratch Register */ + + struct + { + __IOM uint32_t SCRATCH : 32; /*!< [31..0] The Scratch Register provides a memory location to test + * the register access. */ + } SCRATCH_b; + }; + + union + { + __IOM uint32_t PORT_ENA; /*!< (@ 0x00000008) Port Enable Register */ + + struct + { + __IOM uint32_t TXENA : 4; /*!< [3..0] Transmit Enable Mask */ + uint32_t : 12; + __IOM uint32_t RXENA : 4; /*!< [19..16] Receive Enable Mask */ + uint32_t : 12; + } PORT_ENA_b; + }; + + union + { + __IOM uint32_t UCAST_DEFAULT_MASK0; /*!< (@ 0x0000000C) Unicast Default Mask Register 0 */ + + struct + { + __IOM uint32_t UCASTDM : 4; /*!< [3..0] Default Unicast Resolution */ + uint32_t : 28; + } UCAST_DEFAULT_MASK0_b; + }; + + union + { + __IOM uint32_t VLAN_VERIFY; /*!< (@ 0x00000010) Verify VLAN Domain Register */ + + struct + { + __IOM uint32_t VLANVERI : 4; /*!< [3..0] Verify VLAN Domain */ + uint32_t : 12; + __IOM uint32_t VLANDISC : 4; /*!< [19..16] Discard Unknown */ + uint32_t : 12; + } VLAN_VERIFY_b; + }; + + union + { + __IOM uint32_t BCAST_DEFAULT_MASK0; /*!< (@ 0x00000014) Broadcast Default Mask Register 0 */ + + struct + { + __IOM uint32_t BCASTDM : 4; /*!< [3..0] Default Broadcast Resolution */ + uint32_t : 28; + } BCAST_DEFAULT_MASK0_b; + }; + + union + { + __IOM uint32_t MCAST_DEFAULT_MASK0; /*!< (@ 0x00000018) Multicast Default Mask Register 0 */ + + struct + { + __IOM uint32_t MCASTDM : 4; /*!< [3..0] Default Multicast Resolution */ + uint32_t : 28; + } MCAST_DEFAULT_MASK0_b; + }; + + union + { + __IOM uint32_t INPUT_LEARN_BLOCK; /*!< (@ 0x0000001C) Input Learning Block Register */ + + struct + { + __IOM uint32_t BLOCKEN : 4; /*!< [3..0] Blocking Enable */ + uint32_t : 12; + __IOM uint32_t LEARNDIS : 4; /*!< [19..16] Learning Disable */ + uint32_t : 12; + } INPUT_LEARN_BLOCK_b; + }; + + union + { + __IOM uint32_t MGMT_CONFIG; /*!< (@ 0x00000020) Management Configuration Register */ + + struct + { + __IOM uint32_t PORT : 4; /*!< [3..0] The Port number of the port that should act as a management + * port. Keep the initial value. */ + uint32_t : 1; + __IOM uint32_t MSG_TRANS : 1; /*!< [5..5] Set (latched) when a BPDU message is transmitted from + * the management port to any output port. This bit can be + * used for handshaking to indicate that the port mask bits + * are used and can now be changed again by setting it to + * 0. */ + __IOM uint32_t ENABLE : 1; /*!< [6..6] If set, all Bridge Protocol Frames (BPDU) are forwarded + * exclusively to the management port specified in bits [3:0]. */ + __IOM uint32_t DISCARD : 1; /*!< [7..7] If set, BPDU frames are discarded always. */ + __IOM uint32_t MGMT_EN : 1; /*!< [8..8] If set, BPDU frames received at the management port are + * forwarded to the ports given in the portmask given in this + * register, bypassing the normal forwarding decisions (except + * forced forwarding). */ + __IOM uint32_t MGMT_DISC : 1; /*!< [9..9] This bit is the same as DISCARD (bit 7) but for the management + * port. */ + uint32_t : 3; + __IOM uint32_t PRIORITY : 3; /*!< [15..13] Priority to use for transmitted BPDU frames if non-zero. */ + __IOM uint32_t PORTMASK : 4; /*!< [19..16] Portmask for transmission of management frames. When + * the management port transmits a frame to the switch, it + * is forwarded to all ports in this portmask (bit 16 = port + * 0, bit 17 = port 1, ..., bit 19 = port 3). */ + uint32_t : 12; + } MGMT_CONFIG_b; + }; + + union + { + __IOM uint32_t MODE_CONFIG; /*!< (@ 0x00000024) Mode Configuration Register */ + + struct + { + uint32_t : 8; + __IOM uint32_t CUT_THRU_EN : 4; /*!< [11..8] Port Cut through Support Enable */ + uint32_t : 19; + __IOM uint32_t STATSRESET : 1; /*!< [31..31] Reset Statistics Counters Command. */ + } MODE_CONFIG_b; + }; + + union + { + __IOM uint32_t VLAN_IN_MODE; /*!< (@ 0x00000028) VLAN Input Manipulation Mode Register */ + + struct + { + __IOM uint32_t P0VLANINMD : 2; /*!< [1..0] Port 0 Define Behavior of VLAN Input Manipulation Function */ + __IOM uint32_t P1VLANINMD : 2; /*!< [3..2] Port 1 Define Behavior of VLAN Input Manipulation Function */ + __IOM uint32_t P2VLANINMD : 2; /*!< [5..4] Port 2 Define Behavior of VLAN Input Manipulation Function */ + __IOM uint32_t P3VLANINMD : 2; /*!< [7..6] Port3 Define Behavior of VLAN Input Manipulation Function */ + uint32_t : 24; + } VLAN_IN_MODE_b; + }; + + union + { + __IOM uint32_t VLAN_OUT_MODE; /*!< (@ 0x0000002C) VLAN Output Manipulation Mode Register */ + + struct + { + __IOM uint32_t P0VLANOUTMD : 2; /*!< [1..0] Port 0 Define Behavior of VLAN Output Manipulation Function */ + __IOM uint32_t P1VLANOUTMD : 2; /*!< [3..2] Port 1 Define Behavior of VLAN Output Manipulation Function */ + __IOM uint32_t P2VLANOUTMD : 2; /*!< [5..4] Port 2 Define Behavior of VLAN Output Manipulation Function */ + __IOM uint32_t P3VLANOUTMD : 2; /*!< [7..6] Port 3 Define Behavior of VLAN Output Manipulation Function */ + uint32_t : 24; + } VLAN_OUT_MODE_b; + }; + + union + { + __IOM uint32_t VLAN_IN_MODE_ENA; /*!< (@ 0x00000030) VLAN Input Mode Enable Register */ + + struct + { + __IOM uint32_t VLANINMDEN : 4; /*!< [3..0] Enable the input processing according to the VLAN_IN_MODE + * for a port (1 bit per port). */ + uint32_t : 28; + } VLAN_IN_MODE_ENA_b; + }; + + union + { + __IOM uint32_t VLAN_TAG_ID; /*!< (@ 0x00000034) VLAN Tag ID Register */ + + struct + { + __IOM uint32_t VLANTAGID : 16; /*!< [15..0] The VLAN type field (TPID) value to expect to identify + * a VLAN tagged frame. */ + uint32_t : 16; + } VLAN_TAG_ID_b; + }; + + union + { + __IOM uint32_t BCAST_STORM_LIMIT; /*!< (@ 0x00000038) Broadcast Storm Protection Register */ + + struct + { + __IOM uint32_t TMOUT : 16; /*!< [15..0] Timeout in steps of 65535 switch operating clock cycles. */ + __IOM uint32_t BCASTLIMIT : 16; /*!< [31..16] Number of broadcast frames (-1) that can be accepted + * on a port during a timeout period. If more are received, + * they are discarded. The counter is implemented per port + * independently. However, the limit is used for all ports. */ + } BCAST_STORM_LIMIT_b; + }; + + union + { + __IOM uint32_t MCAST_STORM_LIMIT; /*!< (@ 0x0000003C) Multicast Storm Protection Register */ + + struct + { + uint32_t : 16; + __IOM uint32_t MCASTLIMIT : 16; /*!< [31..16] Number of multicast frames (-1) that can be accepted + * on a port during a timeout period. If more are received, + * they are discarded. The counter is implemented per port + * independently. However, the limit is used for all ports. */ + } MCAST_STORM_LIMIT_b; + }; + + union + { + __IOM uint32_t MIRROR_CONTROL; /*!< (@ 0x00000040) Port Mirroring Configuration Register */ + + struct + { + __IOM uint32_t PORT : 2; /*!< [1..0] The port number of the port that acts as the mirror port + * and receives all mirrored frames. Valid setting range is + * 0 to 3. */ + uint32_t : 2; + __IOM uint32_t MIRROR_EN : 1; /*!< [4..4] MIRROR_EN */ + __IOM uint32_t ING_MAP_EN : 1; /*!< [5..5] If set, the ingress map is enabled (MIRROR_ING_MAP). */ + __IOM uint32_t EG_MAP_EN : 1; /*!< [6..6] If set, the egress map is enabled (MIRROR_EG_MAP). */ + __IOM uint32_t ING_SA_MATCH : 1; /*!< [7..7] If set, only frames received on an ingress port with + * a source address matching the value programmed in MIRROR_ISRC + * registers are mirrored. Other frames are not mirrored. */ + __IOM uint32_t ING_DA_MATCH : 1; /*!< [8..8] If set, only frames received on an ingress port with + * a destination address matching the value programmed in + * MIRROR_IDST registers are mirrored. Other frames are not + * mirrored. */ + __IOM uint32_t EG_SA_MATCH : 1; /*!< [9..9] If set, only frames transmitted on an egress port with + * a source address matching the value programmed in MIRROR_ESRC + * registers are mirrored. Other frames are not mirrored. */ + __IOM uint32_t EG_DA_MATCH : 1; /*!< [10..10] If set, only frames transmitted on an egress port with + * a destination address matching the value programmed in + * MIRROR_EDST registers are mirrored. Other frames are not + * mirrored. */ + uint32_t : 21; + } MIRROR_CONTROL_b; + }; + + union + { + __IOM uint32_t MIRROR_EG_MAP; /*!< (@ 0x00000044) Port Mirroring Egress Port Definition Register */ + + struct + { + __IOM uint32_t EMAP : 4; /*!< [3..0] Port Mirroring Egress Port Definitions */ + uint32_t : 28; + } MIRROR_EG_MAP_b; + }; + + union + { + __IOM uint32_t MIRROR_ING_MAP; /*!< (@ 0x00000048) Port Mirroring Ingress Port Definition Register */ + + struct + { + __IOM uint32_t IMAP : 4; /*!< [3..0] Port Mirroring Ingress Port Definitions */ + uint32_t : 28; + } MIRROR_ING_MAP_b; + }; + + union + { + __IOM uint32_t MIRROR_ISRC_0; /*!< (@ 0x0000004C) Ingress Source MAC Address for Mirror Filtering + * Register 0 */ + + struct + { + __IOM uint32_t ISRC : 32; /*!< [31..0] Ingress Source MAC Address for Mirror Filtering */ + } MIRROR_ISRC_0_b; + }; + + union + { + __IOM uint32_t MIRROR_ISRC_1; /*!< (@ 0x00000050) Ingress Source MAC Address for Mirror Filtering + * Register 1 */ + + struct + { + __IOM uint32_t ISRC : 16; /*!< [15..0] Ingress Source MAC Address for Mirror Filtering */ + uint32_t : 16; + } MIRROR_ISRC_1_b; + }; + + union + { + __IOM uint32_t MIRROR_IDST_0; /*!< (@ 0x00000054) Ingress Destination MAC Address for Mirror Filtering + * Register 0 */ + + struct + { + __IOM uint32_t IDST : 32; /*!< [31..0] Ingress Destination MAC Address for Mirror Filtering */ + } MIRROR_IDST_0_b; + }; + + union + { + __IOM uint32_t MIRROR_IDST_1; /*!< (@ 0x00000058) Ingress Destination MAC Address for Mirror Filtering + * Register 1 */ + + struct + { + __IOM uint32_t IDST : 16; /*!< [15..0] Ingress Destination MAC Address for Mirror Filtering */ + uint32_t : 16; + } MIRROR_IDST_1_b; + }; + + union + { + __IOM uint32_t MIRROR_ESRC_0; /*!< (@ 0x0000005C) Egress Source MAC Address for Mirror Filtering + * Register 0 */ + + struct + { + __IOM uint32_t ESRC : 32; /*!< [31..0] Egress Source MAC Address for Mirror Filtering */ + } MIRROR_ESRC_0_b; + }; + + union + { + __IOM uint32_t MIRROR_ESRC_1; /*!< (@ 0x00000060) Egress Source MAC Address for Mirror Filtering + * Register 1 */ + + struct + { + __IOM uint32_t ESRC : 16; /*!< [15..0] Egress Source MAC Address for Mirror Filtering */ + uint32_t : 16; + } MIRROR_ESRC_1_b; + }; + + union + { + __IOM uint32_t MIRROR_EDST_0; /*!< (@ 0x00000064) Egress Destination MAC Address for Mirror Filtering + * Register 0 */ + + struct + { + __IOM uint32_t EDST : 32; /*!< [31..0] Egress Destination MAC Address for Mirror Filtering */ + } MIRROR_EDST_0_b; + }; + + union + { + __IOM uint32_t MIRROR_EDST_1; /*!< (@ 0x00000068) Egress Destination MAC Address for Mirror Filtering + * Register 1 */ + + struct + { + __IOM uint32_t EDST : 16; /*!< [15..0] Egress Destination MAC Address for Mirror Filtering */ + uint32_t : 16; + } MIRROR_EDST_1_b; + }; + + union + { + __IOM uint32_t MIRROR_CNT; /*!< (@ 0x0000006C) Mirror Filtering Count Value Register */ + + struct + { + __IOM uint32_t CNT : 8; /*!< [7..0] Count Value for Mirror Filtering */ + uint32_t : 24; + } MIRROR_CNT_b; + }; + + union + { + __IOM uint32_t UCAST_DEFAULT_MASK1; /*!< (@ 0x00000070) Unicast Default Mask Register 1 */ + + struct + { + __IOM uint32_t UCASTDM1 : 4; /*!< [3..0] Default Unicast Resolution Mask 1 */ + uint32_t : 28; + } UCAST_DEFAULT_MASK1_b; + }; + + union + { + __IOM uint32_t BCAST_DEFAULT_MASK1; /*!< (@ 0x00000074) Broadcast Default Mask Register 1 */ + + struct + { + __IOM uint32_t BCASTDM1 : 4; /*!< [3..0] Default Broadcast Resolution Mask 1 */ + uint32_t : 28; + } BCAST_DEFAULT_MASK1_b; + }; + + union + { + __IOM uint32_t MCAST_DEFAULT_MASK1; /*!< (@ 0x00000078) Multicast Default Mask Register 1 */ + + struct + { + __IOM uint32_t MCASTDM1 : 4; /*!< [3..0] Default Multicast Resolution Mask 1 */ + uint32_t : 28; + } MCAST_DEFAULT_MASK1_b; + }; + + union + { + __IOM uint32_t PORT_XCAST_MASK_SEL; /*!< (@ 0x0000007C) Port Mask Select Register */ + + struct + { + __IOM uint32_t MSEL : 4; /*!< [3..0] Mask Select */ + uint32_t : 28; + } PORT_XCAST_MASK_SEL_b; + }; + __IM uint32_t RESERVED[2]; + + union + { + __IOM uint32_t QMGR_ST_MINCELLS; /*!< (@ 0x00000088) Minimum Memory Cell Statistics Register */ + + struct + { + __IOM uint32_t STMINCELLS : 11; /*!< [10..0] Minimum Free Cell Indication */ + uint32_t : 21; + } QMGR_ST_MINCELLS_b; + }; + __IM uint32_t RESERVED1[2]; + + union + { + __IOM uint32_t QMGR_RED_MIN4; /*!< (@ 0x00000094) RED Minimum Threshold Register */ + + struct + { + __IOM uint32_t CFGRED_MINTH4 : 32; /*!< [31..0] Random Early Detection (RED) Minimum Threshold for Queues + * 0 to 3 */ + } QMGR_RED_MIN4_b; + }; + + union + { + __IOM uint32_t QMGR_RED_MAX4; /*!< (@ 0x00000098) RED Maximum Threshold Register */ + + struct + { + __IOM uint32_t CFGRED_MAXTH4 : 32; /*!< [31..0] Random Early Detection (RED) Maximum Threshold for Queues + * 0 to 3 */ + } QMGR_RED_MAX4_b; + }; + + union + { + __IOM uint32_t QMGR_RED_CONFIG; /*!< (@ 0x0000009C) RED Configuration Register */ + + struct + { + __IOM uint32_t QUEUE_RED_EN : 4; /*!< [3..0] Enable Random Early Detection (RED) (when this bit is + * 1) or Tail Drop (when this bit is 0) congestion management + * for a queue. */ + uint32_t : 4; + __IOM uint32_t GACTIVITY_EN : 1; /*!< [8..8] Enable Averaging on Global Switch Activity (when this + * bit is 1) or on port local activity (when this bit is 0) + * only. */ + uint32_t : 23; + } QMGR_RED_CONFIG_b; + }; + + union + { + __IM uint32_t IMC_STATUS; /*!< (@ 0x000000A0) Input Memory Controller Status Register */ + + struct + { + __IM uint32_t CELLS_AVAILABLE : 24; /*!< [23..0] Total number of memory cells (128-byte units) available + * in the shared memory (real time). */ + __IM uint32_t CF_ERR : 1; /*!< [24..24] Cell Factory Empty Error */ + __IM uint32_t DE_ERR : 1; /*!< [25..25] Deallocation Error */ + __IM uint32_t DE_INIT : 1; /*!< [26..26] Asserts during Memory Initialization (deallocation + * module) */ + __IM uint32_t MEM_FULL : 1; /*!< [27..27] Latched Indication that Memory is or was Full */ + uint32_t : 4; + } IMC_STATUS_b; + }; + + union + { + __IM uint32_t IMC_ERR_FULL; /*!< (@ 0x000000A4) Input Port Memory Full and Truncation Indicator + * Register */ + + struct + { + __IM uint32_t IPC_ERR_FULL : 4; /*!< [3..0] Memory was full at start of a frame reception. */ + uint32_t : 12; + __IM uint32_t IPC_ERR_TRUNC : 4; /*!< [19..16] Memory became full while a frame was received and was + * partly written into memory. */ + uint32_t : 12; + } IMC_ERR_FULL_b; + }; + + union + { + __IM uint32_t IMC_ERR_IFACE; /*!< (@ 0x000000A8) Input Port Memory Error Indicator Register */ + + struct + { + __IM uint32_t IPC_ERR_IFACE : 4; /*!< [3..0] Error indication on memory input (receive from MAC) that + * a frame has been truncated and discarded. */ + uint32_t : 12; + __IM uint32_t WBUF_OVF : 4; /*!< [19..16] Error indicating an overflow in the input write buffer + * to the memory controller (a small decoupling FIFO at every + * MAC RX). */ + uint32_t : 12; + } IMC_ERR_IFACE_b; + }; + + union + { + __IM uint32_t IMC_ERR_QOFLOW; /*!< (@ 0x000000AC) Output Port Queue Overflow Indicator Register */ + + struct + { + __IM uint32_t OP_ERR : 4; /*!< [3..0] A frame cannot be stored in an output queue of the port + * as the queue FIFO overflowed (write occurred into full + * fifo). The frame is ignored but stays stored in memory. + * This should not occur during normal operation. This is + * a fatal error as the memory allocated by that frame is + * not freed, and resulting in memory leakage. */ + uint32_t : 28; + } IMC_ERR_QOFLOW_b; + }; + + union + { + __IOM uint32_t IMC_CONFIG; /*!< (@ 0x000000B0) Input Memory Controller Configuration Register */ + + struct + { + __IOM uint32_t WFQ_EN : 1; /*!< [0..0] Enable weighted fair queuing (when this bit is 1) or + * strict priority (when this bit is 0, default) output queue + * scheduling. */ + __IOM uint32_t RSV_ENA : 1; /*!< [1..1] Enable Memory Reservations to Operate */ + __IOM uint32_t SPEED_HIPRI_THR : 3; /*!< [4..2] High-Priority Speed Threshold */ + __IOM uint32_t CTFL_EMPTY_MD : 1; /*!< [5..5] When this bit is set to 0, a frame received in Cut-Through + * mode that cannot allocate an entry in the CTFL is forwarded + * as store and forward. */ + uint32_t : 26; + } IMC_CONFIG_b; + }; + + union + { + __IM uint32_t IMC_ERR_ALLOC; /*!< (@ 0x000000B4) Input Port Error Indicator Register */ + + struct + { + __IM uint32_t DISC_FULL : 4; /*!< [3..0] Per port discard indication due to memory pool going + * empty. Per port indication that one of the queues was full + * and a frame was discarded. */ + uint32_t : 12; + __IM uint32_t DISC_LATE : 4; /*!< [19..16] Per port discard indication due to lateness in the + * priority resolution. The priority resolution can be delayed + * by the pattern matchers. If it arrives too late (after + * approximately 100 bytes into the frame), the frame is discarded. */ + uint32_t : 12; + } IMC_ERR_ALLOC_b; + }; + __IM uint32_t RESERVED2[2]; + + union + { + __IOM uint32_t GPARSER0; /*!< (@ 0x000000C0) [n + 1]th Parser of 1st Block */ + + struct + { + __IOM uint32_t MASK_VAL2 : 8; /*!< [7..0] Mask for single byte compares or 2nd compare value (if + * bit 30 = 1) or least significant bits of a 16-bit compare + * value (if bit 28 = 1). When used as a mask (bit 28, 30 + * = 0, 0), the data from the frame is ANDed with this mask, + * then compared to the compare value. All bits having a 1 + * in the mask will be compared with the data in the frame. + * All bits having a 0 will be 0 for the compare, however + * this requires the compare value to have those bits also + * set to 0. */ + __IOM uint32_t COMPARE_VAL : 8; /*!< [15..8] The value to compare the frame data with at the given + * offset. */ + __IOM uint32_t OFFSET : 6; /*!< [21..16] An offset in bytes where to find the data for comparison + * within the frame. The offset value starts at 0 to indicate + * the very first byte after offset start. The offset start + * can be either the type/length field of the frame, that + * is, 0 = first byte of type/length field) or the payload + * following an IP header (see IPDATA). Valid values range + * from 0 to 60. */ + uint32_t : 1; + __IOM uint32_t OFFSET_DA : 1; /*!< [23..23] When set, the offset starts counting from the first + * byte of the MAC destination address. */ + __IOM uint32_t VALID : 1; /*!< [24..24] Indicate that this entry is valid (when this bit is + * 1) and should be used. When this bit is 0, the parser result + * always indicates "no match" and none of the other bits + * are relevant. */ + __IOM uint32_t SKIPVLAN : 1; /*!< [25..25] When set, any optional VLAN tags found in the frame + * are skipped and the parser starts operating at the first + * byte following any VLAN tags. When cleared, the parser + * starts with the first byte following the source MAC address. */ + __IOM uint32_t IPDATA : 1; /*!< [26..26] When set, the offset starts with the first byte following + * an IP header if an IP frame is processed. The following + * fields are skipped: */ + __IOM uint32_t IPPROTOCOL : 1; /*!< [27..27] When set, the compare value is compared with the protocol + * field found within the IP header for both IPv4 and IPv6 + * frames. It implicitly acts as SKIPVLAN = 1 skipping any + * VLAN tags if present. The offset setting has no meaning + * and is ignored. */ + __IOM uint32_t CMP16 : 1; /*!< [28..28] When set, MASK_VAL2[7:0] is used as a value to perform + * a 16-bit compare. COMPARE_VAL[7:0] represent the byte at + * the given offset and MASK_VAL2[7:0] represent the byte + * following at offset + 1 which matches the network byte + * order for 16-bit fields. For example, setting a compare + * value of 0x0800 and offset 0 matches IP frames. No mask + * is available in this mode. */ + __IOM uint32_t OFFSET_PLUS2 : 1; /*!< [29..29] Repeats the comparison at offset + 2, if the comparison + * at offset failed. */ + __IOM uint32_t CMP_MASK_OR : 1; /*!< [30..30] Use the MASK_VAL2[7:0] bits as a 2nd compare value. + * When set, the parser reports a match if the byte at given + * offset matches COMPARE_VAL[7:0] or MASK_VAL2[7:0]. */ + uint32_t : 1; + } GPARSER0_b; + }; + + union + { + __IOM uint32_t GPARSER1; /*!< (@ 0x000000C4) [n + 1]th Parser of 1st Block */ + + struct + { + __IOM uint32_t MASK_VAL2 : 8; /*!< [7..0] Mask for single byte compares or 2nd compare value (if + * bit 30 = 1) or least significant bits of a 16-bit compare + * value (if bit 28 = 1). When used as a mask (bit 28, 30 + * = 0, 0), the data from the frame is ANDed with this mask, + * then compared to the compare value. All bits having a 1 + * in the mask will be compared with the data in the frame. + * All bits having a 0 will be 0 for the compare, however + * this requires the compare value to have those bits also + * set to 0. */ + __IOM uint32_t COMPARE_VAL : 8; /*!< [15..8] The value to compare the frame data with at the given + * offset. */ + __IOM uint32_t OFFSET : 6; /*!< [21..16] An offset in bytes where to find the data for comparison + * within the frame. The offset value starts at 0 to indicate + * the very first byte after offset start. The offset start + * can be either the type/length field of the frame, that + * is, 0 = first byte of type/length field) or the payload + * following an IP header (see IPDATA). Valid values range + * from 0 to 60. */ + uint32_t : 1; + __IOM uint32_t OFFSET_DA : 1; /*!< [23..23] When set, the offset starts counting from the first + * byte of the MAC destination address. */ + __IOM uint32_t VALID : 1; /*!< [24..24] Indicate that this entry is valid (when this bit is + * 1) and should be used. When this bit is 0, the parser result + * always indicates "no match" and none of the other bits + * are relevant. */ + __IOM uint32_t SKIPVLAN : 1; /*!< [25..25] When set, any optional VLAN tags found in the frame + * are skipped and the parser starts operating at the first + * byte following any VLAN tags. When cleared, the parser + * starts with the first byte following the source MAC address. */ + __IOM uint32_t IPDATA : 1; /*!< [26..26] When set, the offset starts with the first byte following + * an IP header if an IP frame is processed. The following + * fields are skipped: */ + __IOM uint32_t IPPROTOCOL : 1; /*!< [27..27] When set, the compare value is compared with the protocol + * field found within the IP header for both IPv4 and IPv6 + * frames. It implicitly acts as SKIPVLAN = 1 skipping any + * VLAN tags if present. The offset setting has no meaning + * and is ignored. */ + __IOM uint32_t CMP16 : 1; /*!< [28..28] When set, MASK_VAL2[7:0] is used as a value to perform + * a 16-bit compare. COMPARE_VAL[7:0] represent the byte at + * the given offset and MASK_VAL2[7:0] represent the byte + * following at offset + 1 which matches the network byte + * order for 16-bit fields. For example, setting a compare + * value of 0x0800 and offset 0 matches IP frames. No mask + * is available in this mode. */ + __IOM uint32_t OFFSET_PLUS2 : 1; /*!< [29..29] Repeats the comparison at offset + 2, if the comparison + * at offset failed. */ + __IOM uint32_t CMP_MASK_OR : 1; /*!< [30..30] Use the MASK_VAL2[7:0] bits as a 2nd compare value. + * When set, the parser reports a match if the byte at given + * offset matches COMPARE_VAL[7:0] or MASK_VAL2[7:0]. */ + uint32_t : 1; + } GPARSER1_b; + }; + + union + { + __IOM uint32_t GPARSER2; /*!< (@ 0x000000C8) [n + 1]th Parser of 1st Block */ + + struct + { + __IOM uint32_t MASK_VAL2 : 8; /*!< [7..0] Mask for single byte compares or 2nd compare value (if + * bit 30 = 1) or least significant bits of a 16-bit compare + * value (if bit 28 = 1). When used as a mask (bit 28, 30 + * = 0, 0), the data from the frame is ANDed with this mask, + * then compared to the compare value. All bits having a 1 + * in the mask will be compared with the data in the frame. + * All bits having a 0 will be 0 for the compare, however + * this requires the compare value to have those bits also + * set to 0. */ + __IOM uint32_t COMPARE_VAL : 8; /*!< [15..8] The value to compare the frame data with at the given + * offset. */ + __IOM uint32_t OFFSET : 6; /*!< [21..16] An offset in bytes where to find the data for comparison + * within the frame. The offset value starts at 0 to indicate + * the very first byte after offset start. The offset start + * can be either the type/length field of the frame, that + * is, 0 = first byte of type/length field) or the payload + * following an IP header (see IPDATA). Valid values range + * from 0 to 60. */ + uint32_t : 1; + __IOM uint32_t OFFSET_DA : 1; /*!< [23..23] When set, the offset starts counting from the first + * byte of the MAC destination address. */ + __IOM uint32_t VALID : 1; /*!< [24..24] Indicate that this entry is valid (when this bit is + * 1) and should be used. When this bit is 0, the parser result + * always indicates "no match" and none of the other bits + * are relevant. */ + __IOM uint32_t SKIPVLAN : 1; /*!< [25..25] When set, any optional VLAN tags found in the frame + * are skipped and the parser starts operating at the first + * byte following any VLAN tags. When cleared, the parser + * starts with the first byte following the source MAC address. */ + __IOM uint32_t IPDATA : 1; /*!< [26..26] When set, the offset starts with the first byte following + * an IP header if an IP frame is processed. The following + * fields are skipped: */ + __IOM uint32_t IPPROTOCOL : 1; /*!< [27..27] When set, the compare value is compared with the protocol + * field found within the IP header for both IPv4 and IPv6 + * frames. It implicitly acts as SKIPVLAN = 1 skipping any + * VLAN tags if present. The offset setting has no meaning + * and is ignored. */ + __IOM uint32_t CMP16 : 1; /*!< [28..28] When set, MASK_VAL2[7:0] is used as a value to perform + * a 16-bit compare. COMPARE_VAL[7:0] represent the byte at + * the given offset and MASK_VAL2[7:0] represent the byte + * following at offset + 1 which matches the network byte + * order for 16-bit fields. For example, setting a compare + * value of 0x0800 and offset 0 matches IP frames. No mask + * is available in this mode. */ + __IOM uint32_t OFFSET_PLUS2 : 1; /*!< [29..29] Repeats the comparison at offset + 2, if the comparison + * at offset failed. */ + __IOM uint32_t CMP_MASK_OR : 1; /*!< [30..30] Use the MASK_VAL2[7:0] bits as a 2nd compare value. + * When set, the parser reports a match if the byte at given + * offset matches COMPARE_VAL[7:0] or MASK_VAL2[7:0]. */ + uint32_t : 1; + } GPARSER2_b; + }; + + union + { + __IOM uint32_t GPARSER3; /*!< (@ 0x000000CC) [n + 1]th Parser of 1st Block */ + + struct + { + __IOM uint32_t MASK_VAL2 : 8; /*!< [7..0] Mask for single byte compares or 2nd compare value (if + * bit 30 = 1) or least significant bits of a 16-bit compare + * value (if bit 28 = 1). When used as a mask (bit 28, 30 + * = 0, 0), the data from the frame is ANDed with this mask, + * then compared to the compare value. All bits having a 1 + * in the mask will be compared with the data in the frame. + * All bits having a 0 will be 0 for the compare, however + * this requires the compare value to have those bits also + * set to 0. */ + __IOM uint32_t COMPARE_VAL : 8; /*!< [15..8] The value to compare the frame data with at the given + * offset. */ + __IOM uint32_t OFFSET : 6; /*!< [21..16] An offset in bytes where to find the data for comparison + * within the frame. The offset value starts at 0 to indicate + * the very first byte after offset start. The offset start + * can be either the type/length field of the frame, that + * is, 0 = first byte of type/length field) or the payload + * following an IP header (see IPDATA). Valid values range + * from 0 to 60. */ + uint32_t : 1; + __IOM uint32_t OFFSET_DA : 1; /*!< [23..23] When set, the offset starts counting from the first + * byte of the MAC destination address. */ + __IOM uint32_t VALID : 1; /*!< [24..24] Indicate that this entry is valid (when this bit is + * 1) and should be used. When this bit is 0, the parser result + * always indicates "no match" and none of the other bits + * are relevant. */ + __IOM uint32_t SKIPVLAN : 1; /*!< [25..25] When set, any optional VLAN tags found in the frame + * are skipped and the parser starts operating at the first + * byte following any VLAN tags. When cleared, the parser + * starts with the first byte following the source MAC address. */ + __IOM uint32_t IPDATA : 1; /*!< [26..26] When set, the offset starts with the first byte following + * an IP header if an IP frame is processed. The following + * fields are skipped: */ + __IOM uint32_t IPPROTOCOL : 1; /*!< [27..27] When set, the compare value is compared with the protocol + * field found within the IP header for both IPv4 and IPv6 + * frames. It implicitly acts as SKIPVLAN = 1 skipping any + * VLAN tags if present. The offset setting has no meaning + * and is ignored. */ + __IOM uint32_t CMP16 : 1; /*!< [28..28] When set, MASK_VAL2[7:0] is used as a value to perform + * a 16-bit compare. COMPARE_VAL[7:0] represent the byte at + * the given offset and MASK_VAL2[7:0] represent the byte + * following at offset + 1 which matches the network byte + * order for 16-bit fields. For example, setting a compare + * value of 0x0800 and offset 0 matches IP frames. No mask + * is available in this mode. */ + __IOM uint32_t OFFSET_PLUS2 : 1; /*!< [29..29] Repeats the comparison at offset + 2, if the comparison + * at offset failed. */ + __IOM uint32_t CMP_MASK_OR : 1; /*!< [30..30] Use the MASK_VAL2[7:0] bits as a 2nd compare value. + * When set, the parser reports a match if the byte at given + * offset matches COMPARE_VAL[7:0] or MASK_VAL2[7:0]. */ + uint32_t : 1; + } GPARSER3_b; + }; + + union + { + __IOM uint32_t GARITH0; /*!< (@ 0x000000D0) Snoop Configuration for Arithmetic [n + 1]th + * Stage of 1st Block */ + + struct + { + __IOM uint32_t NOT_INP : 4; /*!< [3..0] Not Input */ + uint32_t : 4; + __IOM uint32_t SEL_MATCH : 4; /*!< [11..8] Select Match */ + __IOM uint32_t SEL_ARITH0 : 1; /*!< [12..12] Select Arithmetic Stage 0 */ + __IOM uint32_t SEL_ARITH1 : 1; /*!< [13..13] Select Arithmetic Stage 1 */ + __IOM uint32_t SEL_ARITH2 : 1; /*!< [14..14] Select Arithmetic Stage 2 */ + uint32_t : 1; + __IOM uint32_t OP : 1; /*!< [16..16] Operation */ + __IOM uint32_t RESULT_INV : 1; /*!< [17..17] Result Invert */ + uint32_t : 2; + __IOM uint32_t SNP_MD : 2; /*!< [21..20] Snoop Mode */ + uint32_t : 10; + } GARITH0_b; + }; + + union + { + __IOM uint32_t GARITH1; /*!< (@ 0x000000D4) Snoop Configuration for Arithmetic [n + 1]th + * Stage of 1st Block */ + + struct + { + __IOM uint32_t NOT_INP : 4; /*!< [3..0] Not Input */ + uint32_t : 4; + __IOM uint32_t SEL_MATCH : 4; /*!< [11..8] Select Match */ + __IOM uint32_t SEL_ARITH0 : 1; /*!< [12..12] Select Arithmetic Stage 0 */ + __IOM uint32_t SEL_ARITH1 : 1; /*!< [13..13] Select Arithmetic Stage 1 */ + __IOM uint32_t SEL_ARITH2 : 1; /*!< [14..14] Select Arithmetic Stage 2 */ + uint32_t : 1; + __IOM uint32_t OP : 1; /*!< [16..16] Operation */ + __IOM uint32_t RESULT_INV : 1; /*!< [17..17] Result Invert */ + uint32_t : 2; + __IOM uint32_t SNP_MD : 2; /*!< [21..20] Snoop Mode */ + uint32_t : 10; + } GARITH1_b; + }; + + union + { + __IOM uint32_t GARITH2; /*!< (@ 0x000000D8) Snoop Configuration for Arithmetic [n + 1]th + * Stage of 1st Block */ + + struct + { + __IOM uint32_t NOT_INP : 4; /*!< [3..0] Not Input */ + uint32_t : 4; + __IOM uint32_t SEL_MATCH : 4; /*!< [11..8] Select Match */ + __IOM uint32_t SEL_ARITH0 : 1; /*!< [12..12] Select Arithmetic Stage 0 */ + __IOM uint32_t SEL_ARITH1 : 1; /*!< [13..13] Select Arithmetic Stage 1 */ + __IOM uint32_t SEL_ARITH2 : 1; /*!< [14..14] Select Arithmetic Stage 2 */ + uint32_t : 1; + __IOM uint32_t OP : 1; /*!< [16..16] Operation */ + __IOM uint32_t RESULT_INV : 1; /*!< [17..17] Result Invert */ + uint32_t : 2; + __IOM uint32_t SNP_MD : 2; /*!< [21..20] Snoop Mode */ + uint32_t : 10; + } GARITH2_b; + }; + + union + { + __IOM uint32_t GARITH3; /*!< (@ 0x000000DC) Snoop Configuration for Arithmetic [n + 1]th + * Stage of 1st Block */ + + struct + { + __IOM uint32_t NOT_INP : 4; /*!< [3..0] Not Input */ + uint32_t : 4; + __IOM uint32_t SEL_MATCH : 4; /*!< [11..8] Select Match */ + __IOM uint32_t SEL_ARITH0 : 1; /*!< [12..12] Select Arithmetic Stage 0 */ + __IOM uint32_t SEL_ARITH1 : 1; /*!< [13..13] Select Arithmetic Stage 1 */ + __IOM uint32_t SEL_ARITH2 : 1; /*!< [14..14] Select Arithmetic Stage 2 */ + uint32_t : 1; + __IOM uint32_t OP : 1; /*!< [16..16] Operation */ + __IOM uint32_t RESULT_INV : 1; /*!< [17..17] Result Invert */ + uint32_t : 2; + __IOM uint32_t SNP_MD : 2; /*!< [21..20] Snoop Mode */ + uint32_t : 10; + } GARITH3_b; + }; + + union + { + __IOM uint32_t GPARSER4; /*!< (@ 0x000000E0) [n - 3]th Parser of 2nd Block */ + + struct + { + __IOM uint32_t MASK_VAL2 : 8; /*!< [7..0] Mask for single byte compares or 2nd compare value (if + * bit 30 = 1) or least significant bits of a 16-bit compare + * value (if bit 28 = 1). When used as a mask (bit 28, 30 + * = 0, 0), the data from the frame is ANDed with this mask, + * then compared to the compare value. All bits having a 1 + * in the mask are compared with the data in the frame. All + * bits having a 0 will be 0 for the compare, however this + * requires the compare value to have those bits also set + * to 0. */ + __IOM uint32_t COMPARE_VAL : 8; /*!< [15..8] The value to compare the frame data with at the given + * offset. */ + __IOM uint32_t OFFSET : 6; /*!< [21..16] An offset in bytes to locate the data for comparison + * within the frame. The offset value starts at 0 to indicate + * the very first byte after offset start. The offset start + * can be either the type or length field of the frame, for + * example 0 = first byte of type/length field) or the payload + * following an IP header (see bit 26). Valid values range + * from 0 to 60. */ + uint32_t : 1; + __IOM uint32_t OFFSET_DA : 1; /*!< [23..23] When set, the offset starts counting from the first + * byte of the MAC destination address. */ + __IOM uint32_t VALID : 1; /*!< [24..24] Indicates that this entry is valid (when this bit is + * 1) and should be used. When this bit is 0, the parser result + * always indicates "no match" and none of the other bits + * are relevant. */ + __IOM uint32_t SKIPVLAN : 1; /*!< [25..25] When set, any optional VLAN tags found in the frame + * are skipped and the parser starts operating at the first + * byte following any VLAN tags. When cleared, the parser + * starts with the first byte following the source MAC address. */ + __IOM uint32_t IPDATA : 1; /*!< [26..26] When set, the offset starts with the first byte following + * an IP header if an IP frame is processed. The following + * fields are skipped: */ + __IOM uint32_t IPPROTOCOL : 1; /*!< [27..27] When set, the compare value is compared with the protocol + * field located within the IP header for both IPv4 and IPv6 + * frames. It implicitly acts as SKIPVLAN = 1 skipping any + * VLAN tags if present. The offset setting has no meaning + * and is ignored. If the bit is set, but the frame is not + * an IPv4/v6 frame the parser reports a no match and does + * not continue to inspect the frame. When cleared, the offset + * is used normally on all frames. */ + __IOM uint32_t CMP16 : 1; /*!< [28..28] When set, MASK_VAL2[7:0] is used as a value to perform + * a 16-bit compare. COMPARE_VAL[7:0] represents the byte + * at the given offset and MASK_VAL2[7:0] represents the byte + * following at offset + 1 which matches the network byte + * order for 16-bit fields, (for example setting a compare + * value of 0x0800 and offset 0 matches IP frames). No mask + * is available in this mode. */ + __IOM uint32_t OFFSET_PLUS2 : 1; /*!< [29..29] Repeats the comparison at offset + 2, if the comparison + * at offset failed. */ + __IOM uint32_t CMP_MASK_OR : 1; /*!< [30..30] Use MASK_VAL2[7:0] as a second compare value. When + * set, the parser reports a match if the byte at given offset + * matches COMPARE_VAL[7:0] or MASK_VAL2[7:0]. */ + uint32_t : 1; + } GPARSER4_b; + }; + + union + { + __IOM uint32_t GPARSER5; /*!< (@ 0x000000E4) [n - 3]th Parser of 2nd Block */ + + struct + { + __IOM uint32_t MASK_VAL2 : 8; /*!< [7..0] Mask for single byte compares or 2nd compare value (if + * bit 30 = 1) or least significant bits of a 16-bit compare + * value (if bit 28 = 1). When used as a mask (bit 28, 30 + * = 0, 0), the data from the frame is ANDed with this mask, + * then compared to the compare value. All bits having a 1 + * in the mask are compared with the data in the frame. All + * bits having a 0 will be 0 for the compare, however this + * requires the compare value to have those bits also set + * to 0. */ + __IOM uint32_t COMPARE_VAL : 8; /*!< [15..8] The value to compare the frame data with at the given + * offset. */ + __IOM uint32_t OFFSET : 6; /*!< [21..16] An offset in bytes to locate the data for comparison + * within the frame. The offset value starts at 0 to indicate + * the very first byte after offset start. The offset start + * can be either the type or length field of the frame, for + * example 0 = first byte of type/length field) or the payload + * following an IP header (see bit 26). Valid values range + * from 0 to 60. */ + uint32_t : 1; + __IOM uint32_t OFFSET_DA : 1; /*!< [23..23] When set, the offset starts counting from the first + * byte of the MAC destination address. */ + __IOM uint32_t VALID : 1; /*!< [24..24] Indicates that this entry is valid (when this bit is + * 1) and should be used. When this bit is 0, the parser result + * always indicates "no match" and none of the other bits + * are relevant. */ + __IOM uint32_t SKIPVLAN : 1; /*!< [25..25] When set, any optional VLAN tags found in the frame + * are skipped and the parser starts operating at the first + * byte following any VLAN tags. When cleared, the parser + * starts with the first byte following the source MAC address. */ + __IOM uint32_t IPDATA : 1; /*!< [26..26] When set, the offset starts with the first byte following + * an IP header if an IP frame is processed. The following + * fields are skipped: */ + __IOM uint32_t IPPROTOCOL : 1; /*!< [27..27] When set, the compare value is compared with the protocol + * field located within the IP header for both IPv4 and IPv6 + * frames. It implicitly acts as SKIPVLAN = 1 skipping any + * VLAN tags if present. The offset setting has no meaning + * and is ignored. If the bit is set, but the frame is not + * an IPv4/v6 frame the parser reports a no match and does + * not continue to inspect the frame. When cleared, the offset + * is used normally on all frames. */ + __IOM uint32_t CMP16 : 1; /*!< [28..28] When set, MASK_VAL2[7:0] is used as a value to perform + * a 16-bit compare. COMPARE_VAL[7:0] represents the byte + * at the given offset and MASK_VAL2[7:0] represents the byte + * following at offset + 1 which matches the network byte + * order for 16-bit fields, (for example setting a compare + * value of 0x0800 and offset 0 matches IP frames). No mask + * is available in this mode. */ + __IOM uint32_t OFFSET_PLUS2 : 1; /*!< [29..29] Repeats the comparison at offset + 2, if the comparison + * at offset failed. */ + __IOM uint32_t CMP_MASK_OR : 1; /*!< [30..30] Use MASK_VAL2[7:0] as a second compare value. When + * set, the parser reports a match if the byte at given offset + * matches COMPARE_VAL[7:0] or MASK_VAL2[7:0]. */ + uint32_t : 1; + } GPARSER5_b; + }; + + union + { + __IOM uint32_t GPARSER6; /*!< (@ 0x000000E8) [n - 3]th Parser of 2nd Block */ + + struct + { + __IOM uint32_t MASK_VAL2 : 8; /*!< [7..0] Mask for single byte compares or 2nd compare value (if + * bit 30 = 1) or least significant bits of a 16-bit compare + * value (if bit 28 = 1). When used as a mask (bit 28, 30 + * = 0, 0), the data from the frame is ANDed with this mask, + * then compared to the compare value. All bits having a 1 + * in the mask are compared with the data in the frame. All + * bits having a 0 will be 0 for the compare, however this + * requires the compare value to have those bits also set + * to 0. */ + __IOM uint32_t COMPARE_VAL : 8; /*!< [15..8] The value to compare the frame data with at the given + * offset. */ + __IOM uint32_t OFFSET : 6; /*!< [21..16] An offset in bytes to locate the data for comparison + * within the frame. The offset value starts at 0 to indicate + * the very first byte after offset start. The offset start + * can be either the type or length field of the frame, for + * example 0 = first byte of type/length field) or the payload + * following an IP header (see bit 26). Valid values range + * from 0 to 60. */ + uint32_t : 1; + __IOM uint32_t OFFSET_DA : 1; /*!< [23..23] When set, the offset starts counting from the first + * byte of the MAC destination address. */ + __IOM uint32_t VALID : 1; /*!< [24..24] Indicates that this entry is valid (when this bit is + * 1) and should be used. When this bit is 0, the parser result + * always indicates "no match" and none of the other bits + * are relevant. */ + __IOM uint32_t SKIPVLAN : 1; /*!< [25..25] When set, any optional VLAN tags found in the frame + * are skipped and the parser starts operating at the first + * byte following any VLAN tags. When cleared, the parser + * starts with the first byte following the source MAC address. */ + __IOM uint32_t IPDATA : 1; /*!< [26..26] When set, the offset starts with the first byte following + * an IP header if an IP frame is processed. The following + * fields are skipped: */ + __IOM uint32_t IPPROTOCOL : 1; /*!< [27..27] When set, the compare value is compared with the protocol + * field located within the IP header for both IPv4 and IPv6 + * frames. It implicitly acts as SKIPVLAN = 1 skipping any + * VLAN tags if present. The offset setting has no meaning + * and is ignored. If the bit is set, but the frame is not + * an IPv4/v6 frame the parser reports a no match and does + * not continue to inspect the frame. When cleared, the offset + * is used normally on all frames. */ + __IOM uint32_t CMP16 : 1; /*!< [28..28] When set, MASK_VAL2[7:0] is used as a value to perform + * a 16-bit compare. COMPARE_VAL[7:0] represents the byte + * at the given offset and MASK_VAL2[7:0] represents the byte + * following at offset + 1 which matches the network byte + * order for 16-bit fields, (for example setting a compare + * value of 0x0800 and offset 0 matches IP frames). No mask + * is available in this mode. */ + __IOM uint32_t OFFSET_PLUS2 : 1; /*!< [29..29] Repeats the comparison at offset + 2, if the comparison + * at offset failed. */ + __IOM uint32_t CMP_MASK_OR : 1; /*!< [30..30] Use MASK_VAL2[7:0] as a second compare value. When + * set, the parser reports a match if the byte at given offset + * matches COMPARE_VAL[7:0] or MASK_VAL2[7:0]. */ + uint32_t : 1; + } GPARSER6_b; + }; + + union + { + __IOM uint32_t GPARSER7; /*!< (@ 0x000000EC) [n - 3]th Parser of 2nd Block */ + + struct + { + __IOM uint32_t MASK_VAL2 : 8; /*!< [7..0] Mask for single byte compares or 2nd compare value (if + * bit 30 = 1) or least significant bits of a 16-bit compare + * value (if bit 28 = 1). When used as a mask (bit 28, 30 + * = 0, 0), the data from the frame is ANDed with this mask, + * then compared to the compare value. All bits having a 1 + * in the mask are compared with the data in the frame. All + * bits having a 0 will be 0 for the compare, however this + * requires the compare value to have those bits also set + * to 0. */ + __IOM uint32_t COMPARE_VAL : 8; /*!< [15..8] The value to compare the frame data with at the given + * offset. */ + __IOM uint32_t OFFSET : 6; /*!< [21..16] An offset in bytes to locate the data for comparison + * within the frame. The offset value starts at 0 to indicate + * the very first byte after offset start. The offset start + * can be either the type or length field of the frame, for + * example 0 = first byte of type/length field) or the payload + * following an IP header (see bit 26). Valid values range + * from 0 to 60. */ + uint32_t : 1; + __IOM uint32_t OFFSET_DA : 1; /*!< [23..23] When set, the offset starts counting from the first + * byte of the MAC destination address. */ + __IOM uint32_t VALID : 1; /*!< [24..24] Indicates that this entry is valid (when this bit is + * 1) and should be used. When this bit is 0, the parser result + * always indicates "no match" and none of the other bits + * are relevant. */ + __IOM uint32_t SKIPVLAN : 1; /*!< [25..25] When set, any optional VLAN tags found in the frame + * are skipped and the parser starts operating at the first + * byte following any VLAN tags. When cleared, the parser + * starts with the first byte following the source MAC address. */ + __IOM uint32_t IPDATA : 1; /*!< [26..26] When set, the offset starts with the first byte following + * an IP header if an IP frame is processed. The following + * fields are skipped: */ + __IOM uint32_t IPPROTOCOL : 1; /*!< [27..27] When set, the compare value is compared with the protocol + * field located within the IP header for both IPv4 and IPv6 + * frames. It implicitly acts as SKIPVLAN = 1 skipping any + * VLAN tags if present. The offset setting has no meaning + * and is ignored. If the bit is set, but the frame is not + * an IPv4/v6 frame the parser reports a no match and does + * not continue to inspect the frame. When cleared, the offset + * is used normally on all frames. */ + __IOM uint32_t CMP16 : 1; /*!< [28..28] When set, MASK_VAL2[7:0] is used as a value to perform + * a 16-bit compare. COMPARE_VAL[7:0] represents the byte + * at the given offset and MASK_VAL2[7:0] represents the byte + * following at offset + 1 which matches the network byte + * order for 16-bit fields, (for example setting a compare + * value of 0x0800 and offset 0 matches IP frames). No mask + * is available in this mode. */ + __IOM uint32_t OFFSET_PLUS2 : 1; /*!< [29..29] Repeats the comparison at offset + 2, if the comparison + * at offset failed. */ + __IOM uint32_t CMP_MASK_OR : 1; /*!< [30..30] Use MASK_VAL2[7:0] as a second compare value. When + * set, the parser reports a match if the byte at given offset + * matches COMPARE_VAL[7:0] or MASK_VAL2[7:0]. */ + uint32_t : 1; + } GPARSER7_b; + }; + + union + { + __IOM uint32_t GARITH4; /*!< (@ 0x000000F0) Snoop Configuration for Arithmetic [n - 3]th + * Stage of 2nd Block */ + + struct + { + __IOM uint32_t NOT_INP : 4; /*!< [3..0] Not Input */ + uint32_t : 4; + __IOM uint32_t SEL_MATCH : 4; /*!< [11..8] Select Match */ + __IOM uint32_t SEL_ARITH0 : 1; /*!< [12..12] Select Arithmetic Stage 0 */ + __IOM uint32_t SEL_ARITH1 : 1; /*!< [13..13] Select Arithmetic Stage 1 */ + __IOM uint32_t SEL_ARITH2 : 1; /*!< [14..14] Select Arithmetic Stage 2 */ + uint32_t : 1; + __IOM uint32_t OP : 1; /*!< [16..16] Operation */ + __IOM uint32_t RESULT_INV : 1; /*!< [17..17] Result Invert */ + uint32_t : 2; + __IOM uint32_t SNP_MD : 2; /*!< [21..20] Snoop Mode */ + uint32_t : 10; + } GARITH4_b; + }; + + union + { + __IOM uint32_t GARITH5; /*!< (@ 0x000000F4) Snoop Configuration for Arithmetic [n - 3]th + * Stage of 2nd Block */ + + struct + { + __IOM uint32_t NOT_INP : 4; /*!< [3..0] Not Input */ + uint32_t : 4; + __IOM uint32_t SEL_MATCH : 4; /*!< [11..8] Select Match */ + __IOM uint32_t SEL_ARITH0 : 1; /*!< [12..12] Select Arithmetic Stage 0 */ + __IOM uint32_t SEL_ARITH1 : 1; /*!< [13..13] Select Arithmetic Stage 1 */ + __IOM uint32_t SEL_ARITH2 : 1; /*!< [14..14] Select Arithmetic Stage 2 */ + uint32_t : 1; + __IOM uint32_t OP : 1; /*!< [16..16] Operation */ + __IOM uint32_t RESULT_INV : 1; /*!< [17..17] Result Invert */ + uint32_t : 2; + __IOM uint32_t SNP_MD : 2; /*!< [21..20] Snoop Mode */ + uint32_t : 10; + } GARITH5_b; + }; + + union + { + __IOM uint32_t GARITH6; /*!< (@ 0x000000F8) Snoop Configuration for Arithmetic [n - 3]th + * Stage of 2nd Block */ + + struct + { + __IOM uint32_t NOT_INP : 4; /*!< [3..0] Not Input */ + uint32_t : 4; + __IOM uint32_t SEL_MATCH : 4; /*!< [11..8] Select Match */ + __IOM uint32_t SEL_ARITH0 : 1; /*!< [12..12] Select Arithmetic Stage 0 */ + __IOM uint32_t SEL_ARITH1 : 1; /*!< [13..13] Select Arithmetic Stage 1 */ + __IOM uint32_t SEL_ARITH2 : 1; /*!< [14..14] Select Arithmetic Stage 2 */ + uint32_t : 1; + __IOM uint32_t OP : 1; /*!< [16..16] Operation */ + __IOM uint32_t RESULT_INV : 1; /*!< [17..17] Result Invert */ + uint32_t : 2; + __IOM uint32_t SNP_MD : 2; /*!< [21..20] Snoop Mode */ + uint32_t : 10; + } GARITH6_b; + }; + + union + { + __IOM uint32_t GARITH7; /*!< (@ 0x000000FC) Snoop Configuration for Arithmetic [n - 3]th + * Stage of 2nd Block */ + + struct + { + __IOM uint32_t NOT_INP : 4; /*!< [3..0] Not Input */ + uint32_t : 4; + __IOM uint32_t SEL_MATCH : 4; /*!< [11..8] Select Match */ + __IOM uint32_t SEL_ARITH0 : 1; /*!< [12..12] Select Arithmetic Stage 0 */ + __IOM uint32_t SEL_ARITH1 : 1; /*!< [13..13] Select Arithmetic Stage 1 */ + __IOM uint32_t SEL_ARITH2 : 1; /*!< [14..14] Select Arithmetic Stage 2 */ + uint32_t : 1; + __IOM uint32_t OP : 1; /*!< [16..16] Operation */ + __IOM uint32_t RESULT_INV : 1; /*!< [17..17] Result Invert */ + uint32_t : 2; + __IOM uint32_t SNP_MD : 2; /*!< [21..20] Snoop Mode */ + uint32_t : 10; + } GARITH7_b; + }; + + union + { + __IOM uint32_t VLAN_PRIORITY[4]; /*!< (@ 0x00000100) VLAN Priority Register [0..3] */ + + struct + { + __IOM uint32_t PRIORITY0 : 3; /*!< [2..0] Priority 0 Setting */ + __IOM uint32_t PRIORITY1 : 3; /*!< [5..3] Priority 1 Setting */ + __IOM uint32_t PRIORITY2 : 3; /*!< [8..6] Priority 2 Setting */ + __IOM uint32_t PRIORITY3 : 3; /*!< [11..9] Priority 3 Setting */ + __IOM uint32_t PRIORITY4 : 3; /*!< [14..12] Priority 4 Setting */ + __IOM uint32_t PRIORITY5 : 3; /*!< [17..15] Priority 5 Setting */ + __IOM uint32_t PRIORITY6 : 3; /*!< [20..18] Priority 6 Setting */ + __IOM uint32_t PRIORITY7 : 3; /*!< [23..21] Priority 7 Setting */ + uint32_t : 8; + } VLAN_PRIORITY_b[4]; + }; + __IM uint32_t RESERVED3[12]; + + union + { + __IOM uint32_t IP_PRIORITY[4]; /*!< (@ 0x00000140) IP Priority Register [0..3] */ + + struct + { + __IOM uint32_t ADDRESS : 8; /*!< [7..0] COS Table Address Specifying */ + __IOM uint32_t IPV6SELECT : 1; /*!< [8..8] IPv6 COS Table Selection */ + __IOM uint32_t PRIORITY : 3; /*!< [11..9] COS Table Priority */ + uint32_t : 19; + __IOM uint32_t READ : 1; /*!< [31..31] COS Table Operation Switching */ + } IP_PRIORITY_b[4]; + }; + __IM uint32_t RESERVED4[12]; + + union + { + __IOM uint32_t PRIORITY_CFG[4]; /*!< (@ 0x00000180) Priority Configuration Register [0..3] */ + + struct + { + __IOM uint32_t VLANEN : 1; /*!< [0..0] VLAN Priority Enable */ + __IOM uint32_t IPEN : 1; /*!< [1..1] IP Priority Enable */ + __IOM uint32_t MACEN : 1; /*!< [2..2] MAC Based Priority Enable */ + __IOM uint32_t TYPE_EN : 1; /*!< [3..3] TYPE Based Priority Enable */ + __IOM uint32_t DEFAULTPRI : 3; /*!< [6..4] Default Priority Enable Setting */ + __IOM uint32_t PCP_REMAP_DIS : 1; /*!< [7..7] Disables PCP remapping when set to 1. */ + __IOM uint32_t PCP_REMAP : 24; /*!< [31..8] PCP Remapping function */ + } PRIORITY_CFG_b[4]; + }; + __IM uint32_t RESERVED5[10]; + + union + { + __IOM uint32_t PRIORITY_TYPE1; /*!< (@ 0x000001B8) Priority Type Register 1 */ + + struct + { + __IOM uint32_t TYPEVAL : 16; /*!< [15..0] Type Priority */ + __IOM uint32_t VALID : 1; /*!< [16..16] If set indicates, this register contains valid data. */ + __IOM uint32_t PRIORITY : 3; /*!< [19..17] The priority value to use if a match occurs. */ + uint32_t : 12; + } PRIORITY_TYPE1_b; + }; + + union + { + __IOM uint32_t PRIORITY_TYPE2; /*!< (@ 0x000001BC) Priority Type Register 2 */ + + struct + { + __IOM uint32_t TYPEVAL : 16; /*!< [15..0] Type Priority */ + __IOM uint32_t VALID : 1; /*!< [16..16] If set indicates, this register contains valid data. */ + __IOM uint32_t PRIORITY : 3; /*!< [19..17] The priority value to use if a match occurs. */ + uint32_t : 12; + } PRIORITY_TYPE2_b; + }; + __IOM R_ETHSW_MGMT_ADDR_Type MGMT_ADDR[4]; /*!< (@ 0x000001C0) MAC Address [0..3] for Bridge Protocol Frame + * Register */ + + union + { + __IOM uint32_t SRCFLT_ENA; /*!< (@ 0x000001E0) MAC Source Address Filtering Enable Register */ + + struct + { + __IOM uint32_t SRCENA : 3; /*!< [2..0] Per-Source Port Enable */ + uint32_t : 13; + __IOM uint32_t DSTENA : 4; /*!< [19..16] Per-Destination Port Enable */ + uint32_t : 12; + } SRCFLT_ENA_b; + }; + + union + { + __IOM uint32_t SRCFLT_CONTROL; /*!< (@ 0x000001E4) MAC Source Address Filtering Control Register */ + + struct + { + __IOM uint32_t MGMT_FWD : 1; /*!< [0..0] Management Forward Enable */ + __IOM uint32_t WATCHDOG_ENA : 1; /*!< [1..1] When set to 1, a watchdog is enabled. */ + uint32_t : 14; + __IOM uint32_t WATCHDOG_TIME : 16; /*!< [31..16] Defines the watchdog expire time in milliseconds. The + * default is 2000 milliseconds. */ + } SRCFLT_CONTROL_b; + }; + + union + { + __IOM uint32_t SRCFLT_MACADDR_LO; /*!< (@ 0x000001E8) Lower MAC Filtering Address Register */ + + struct + { + __IOM uint32_t SRCFLT_MACADDR : 32; /*!< [31..0] MAC address to use in source filtering */ + } SRCFLT_MACADDR_LO_b; + }; + + union + { + __IOM uint32_t SRCFLT_MACADDR_HI; /*!< (@ 0x000001EC) Higher MAC Filtering Address Register */ + + struct + { + __IOM uint32_t SRCFLT_MACADDR : 16; /*!< [15..0] MAC address to use in source filtering */ + __IOM uint32_t MASK : 16; /*!< [31..16] The mask to apply to the last 16 bits of the MAC address */ + } SRCFLT_MACADDR_HI_b; + }; + __IM uint32_t RESERVED6[3]; + + union + { + __IOM uint32_t PHY_FILTER_CFG; /*!< (@ 0x000001FC) Debounce Filter Configuration Register */ + + struct + { + __IOM uint32_t FILTER_DURATION : 9; /*!< [8..0] This is the amount of time to wait after the last phy_link + * (ETHSW_PHYLINKn: n = port) transition from 0 to 1 to acknowledge + * the link-up condition. */ + uint32_t : 7; + __IOM uint32_t FLT_EN : 3; /*!< [18..16] Per-port Enable Mask */ + uint32_t : 13; + } PHY_FILTER_CFG_b; + }; + + union + { + __IOM uint32_t SYSTEM_TAGINFO[4]; /*!< (@ 0x00000200) One VLAN ID Field [0..3] for VLAN Input Manipulation */ + + struct + { + __IOM uint32_t SYSVLANINFO : 16; /*!< [15..0] System VLAN Info (prio/cfi/vid) for Port n */ + uint32_t : 16; + } SYSTEM_TAGINFO_b[4]; + }; + __IM uint32_t RESERVED7[12]; + + union + { + __IOM uint32_t AUTH_PORT[4]; /*!< (@ 0x00000240) Port [0..3] Authentication Control and Configuration */ + + struct + { + __IOM uint32_t AUTH : 1; /*!< [0..0] Authorized */ + __IOM uint32_t CTRL_BOTH : 1; /*!< [1..1] Controlled Both */ + __IOM uint32_t EAPOL_EN : 1; /*!< [2..2] EAPOL Enable */ + __IOM uint32_t GUEST_EN : 1; /*!< [3..3] Guest Enable */ + __IOM uint32_t BPDU_EN : 1; /*!< [4..4] BPDU Enable */ + __IOM uint32_t EAPOL_UC_EN : 1; /*!< [5..5] EAPOL Unicast Enable */ + uint32_t : 5; + __IOM uint32_t ACHG_UNAUTH : 1; /*!< [11..11] Automatic Port Change to Unauthorized */ + __IOM uint32_t EAPOL_PNUM : 4; /*!< [15..12] EAPOL Port Number */ + __IOM uint32_t GUEST_MASK : 4; /*!< [19..16] Destination port mask with all ports that are allowed + * to receive non-EAPOL frames from this port while it is + * unauthorized and guest (GUEST_EN) is enabled. */ + uint32_t : 12; + } AUTH_PORT_b[4]; + }; + __IM uint32_t RESERVED8[12]; + + union + { + __IOM uint32_t VLAN_RES_TABLE[32]; /*!< (@ 0x00000280) 32 VLAN Domain Entries */ + + struct + { + __IOM uint32_t PORTMASK : 4; /*!< [3..0] When this bit is set to 1, it defines a port as a member + * of the VLAN. When bit [28] or bit [29] is set, the tagged + * bit mask is read/written instead of port mask. */ + __IOM uint32_t VLANID : 12; /*!< [15..4] The 12-bit VLAN identifier (VLAN ID) of the entry. */ + uint32_t : 12; + __IOM uint32_t RD_TAGMSK : 1; /*!< [28..28] Read TAG Mask */ + __IOM uint32_t WT_TAGMSK : 1; /*!< [29..29] Write TAG Mask */ + __IOM uint32_t WT_PRTMSK : 1; /*!< [30..30] Write Port Mask */ + uint32_t : 1; + } VLAN_RES_TABLE_b[32]; + }; + + union + { + __IM uint32_t TOTAL_DISC; /*!< (@ 0x00000300) Discarded Frame Total Number Register */ + + struct + { + __IM uint32_t TOTAL_DISC : 32; /*!< [31..0] Total number of incoming frames accepted by MAC RX but + * discarded in the switch */ + } TOTAL_DISC_b; + }; + + union + { + __IM uint32_t TOTAL_BYT_DISC; /*!< (@ 0x00000304) Discarded Frame Total Bytes Register */ + + struct + { + __IM uint32_t TOTAL_BYT_DISC : 32; /*!< [31..0] Sum of bytes of frames counted in TOTAL_DISC */ + } TOTAL_BYT_DISC_b; + }; + + union + { + __IM uint32_t TOTAL_FRM; /*!< (@ 0x00000308) Processed Frame Total Number Register */ + + struct + { + __IM uint32_t TOTAL_FRM : 32; /*!< [31..0] Total number of incoming frames processed by the switch */ + } TOTAL_FRM_b; + }; + + union + { + __IM uint32_t TOTAL_BYT_FRM; /*!< (@ 0x0000030C) Processed Frame Total Bytes Register */ + + struct + { + __IM uint32_t TOTAL_BYT_FRM : 32; /*!< [31..0] Sum of bytes of frames counted in TOTAL_FRM */ + } TOTAL_BYT_FRM_b; + }; + __IM uint32_t RESERVED9[12]; + + union + { + __IOM uint32_t IALK_CONTROL; /*!< (@ 0x00000340) IA Lookup Function Enable Register */ + + struct + { + __IOM uint32_t IA_LKUP_ENA : 4; /*!< [3..0] Per-port Enable to the IA Lookup Table */ + uint32_t : 12; + __IOM uint32_t CT_ENA : 4; /*!< [19..16] Per-port Cut-Through Mode Enable */ + uint32_t : 12; + } IALK_CONTROL_b; + }; + + union + { + __IOM uint32_t IALK_OUI; /*!< (@ 0x00000344) IA Frames MAC Address OUI Register */ + + struct + { + __IOM uint32_t IALK_OUI : 24; /*!< [23..0] IA Frames MAC Address OUI */ + uint32_t : 8; + } IALK_OUI_b; + }; + + union + { + __IOM uint32_t IALK_ID_MIN; /*!< (@ 0x00000348) Minimum Value ID MAC Address Register */ + + struct + { + __IOM uint32_t IALK_ID_MIN : 24; /*!< [23..0] Minimum value for the 24-bit ID in the MAC address */ + uint32_t : 8; + } IALK_ID_MIN_b; + }; + + union + { + __IOM uint32_t IALK_ID_MAX; /*!< (@ 0x0000034C) Maximum Value ID MAC Address Register */ + + struct + { + __IOM uint32_t IALK_ID_MAX : 24; /*!< [23..0] Maximum value for the 24-bit ID in the MAC address */ + uint32_t : 8; + } IALK_ID_MAX_b; + }; + + union + { + __IOM uint32_t IALK_ID_SUB; /*!< (@ 0x00000350) Offset Value ID MAC Address Register */ + + struct + { + __IOM uint32_t IALK_ID_SUB : 24; /*!< [23..0] Offset value to subtract from the 24-bit ID in the MAC + * address */ + uint32_t : 8; + } IALK_ID_SUB_b; + }; + + union + { + __IOM uint32_t IALK_ID_CONFIG; /*!< (@ 0x00000354) Configures Lookup Response Unknown IDs Register */ + + struct + { + __IOM uint32_t INVLD_ID_FLOOD : 1; /*!< [0..0] Setting this bit to 1 causes the IA table to return a + * found response for frames whose ID lies outside the ID + * range defined by [IA_LK_MAX:IA_LK_MIN] using INVLD_ID_FLOOD_MASK[3:0] + * bits. */ + __IOM uint32_t INVLD_ID_LRN_ENA : 1; /*!< [1..1] Setting this bit to 1 allows automatic learning into + * the L2 FDB for frames with unknown IDs. When 0, learning + * is inhibited. This bit is only valid when INVLD_ID_FLOOD + * bit is set to 1. */ + uint32_t : 2; + __IOM uint32_t INVLD_ID_PRIO : 3; /*!< [6..4] Priority to use for found responses of an invalid ID. + * This bit is only valid when INVLD_ID_FLOOD bit is set to + * 1. */ + __IOM uint32_t INVLD_ID_PRIO_VLD : 1; /*!< [7..7] Indicates if the priority in INVLD_ID_PRIO is valid. + * This bit is valid only when INVLD_ID_FLOOD bit is set to + * 1. */ + uint32_t : 8; + __IOM uint32_t INVLD_ID_FLOOD_MASK : 4; /*!< [19..16] Forwarding mask used for frames whose ID is invalid. + * This bit is only valid when INVLD_ID_FLOOD bit is set to + * 1. Setting this mask to 0 causes the frame to be dropped. */ + uint32_t : 12; + } IALK_ID_CONFIG_b; + }; + + union + { + __IOM uint32_t IALK_VLAN_CONFIG; /*!< (@ 0x00000358) Configure Lookup Response Unknown VLAN Register */ + + struct + { + __IOM uint32_t UNKWN_VLAN_FLOOD : 1; /*!< [0..0] When this bit is set to 1, a frame matching the OUI and + * with a valid ID but having a VLAN ID not matching any of + * the enabled values in IALK_VLANIDn causes the IA table + * to return a found response using the forwarding mask in + * UNKWN_VLAN_FLOOD_MASK[3:0]. */ + __IOM uint32_t UNKWN_VLAN_LRN_ENA : 1; /*!< [1..1] Setting this bit to 1 allows automatic learning into + * the L2 FDB for frames with unknown VLANs. When 0, learning + * is inhibited. This bit is only valid when UNKWN_VLAN_FLOOD + * bit is set to 1. */ + uint32_t : 2; + __IOM uint32_t UNKWN_VLAN_PRIO : 3; /*!< [6..4] Priority to use for found responses for an unknown VLAN. + * This bit is only valid when UNKWN_VLAN_FLOOD bit is set + * to 1. */ + __IOM uint32_t UNKWN_VLAN_PRIO_VLD : 1; /*!< [7..7] Indicates if the priority in UNKWN_VLAN_PRIO[2:0] is + * valid. This bit is only valid when UNKWN_VLAN_FLOOD bit + * is set to 1. */ + __IOM uint32_t VLANS_ENABLED : 3; /*!< [10..8] Configures the logical geometry of the IA table by specifying + * the number of distinct VLAN IDs enabled. When set to 0, + * no VLANs are supported and the VLAN ID for the frames is + * ignored. */ + uint32_t : 5; + __IOM uint32_t UNKWN_VLAN_FLOOD_MASK : 4; /*!< [19..16] Forwarding mask used for frames with an unknown VLAN + * ID. */ + uint32_t : 12; + } IALK_VLAN_CONFIG_b; + }; + + union + { + __IOM uint32_t IALK_TBL_ADDR; /*!< (@ 0x0000035C) IA Lookup Database Address Register */ + + struct + { + __IOM uint32_t ADDR : 13; /*!< [12..0] Defines the address to write to or read from the IA + * Lookup table */ + uint32_t : 15; + __IOM uint32_t AINC : 4; /*!< [31..28] Auto-Increment Control */ + } IALK_TBL_ADDR_b; + }; + + union + { + __IOM uint32_t IALK_TBL_DATA; /*!< (@ 0x00000360) IA Lookup Database Data Register */ + + struct + { + __IOM uint32_t VALID : 1; /*!< [0..0] Indicates whether the entry indicated by ADDR is valid + * or not. */ + __IOM uint32_t FWD_MASK : 4; /*!< [4..1] Forwarding mask used for lookups that hit the entry and + * when VALID is set to 1. */ + uint32_t : 27; + } IALK_TBL_DATA_b; + }; + __IM uint32_t RESERVED10[7]; + + union + { + __IOM uint32_t IALK_VLANID[4]; /*!< (@ 0x00000380) IA Lookup VLANIDn Register */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] Configure the VLAN ID to be used for VLAN n (n: IALK_VLAN_CONFIG.VLANS + * ENABLED). This bit is only valid when VLANID_ENA bit is + * set to 1. A value of 0 matches any VLAN ID. */ + __IOM uint32_t VLANID_ENA : 1; /*!< [12..12] Enables this VLAN ID. When set to 1, the VLAN ID of + * the frame is compared against VLANID[11:0]. */ + __IOM uint32_t VLANID_LRN_ENA : 1; /*!< [13..13] Configures whether automatic learning in the L2 FDB + * is allowed for frames matching VLAN ID. This also includes + * frames that match the VLAN ID and that the entry in the + * IA table is invalid. */ + uint32_t : 2; + __IOM uint32_t VLANID_FLOOD_MASK : 4; /*!< [19..16] Flooding mask to be used for frames matching this VLAN + * ID but with an invalid entry in the IA table. */ + uint32_t : 8; + __IOM uint32_t VLANID_PRIO : 3; /*!< [30..28] Priority to use for found responses. */ + __IOM uint32_t VLANID_PRIO_VLD : 1; /*!< [31..31] Indicates if the priority in VLANID_PRIO[2:0] is valid. */ + } IALK_VLANID_b[4]; + }; + __IM uint32_t RESERVED11[12]; + + union + { + __IM uint32_t IMC_QLEVEL_P[4]; /*!< (@ 0x000003C0) Port [0..3] Queued Frame Count Register */ + + struct + { + __IM uint32_t QUEUE0 : 4; /*!< [3..0] A 4-bit value per queue indicating the number of frames + * stored in queue 0 */ + __IM uint32_t QUEUE1 : 4; /*!< [7..4] A 4-bit value per queue indicating the number of frames + * stored in queue 1 */ + __IM uint32_t QUEUE2 : 4; /*!< [11..8] A 4-bit value per queue indicating the number of frames + * stored in queue 2 */ + __IM uint32_t QUEUE3 : 4; /*!< [15..12] A 4-bit value per queue indicating the number of frames + * stored in queue 3 */ + __IM uint32_t QUEUE4 : 4; /*!< [19..16] A 4-bit value per queue indicating the number of frames + * stored in queue 4 */ + __IM uint32_t QUEUE5 : 4; /*!< [23..20] A 4-bit value per queue indicating the number of frames + * stored in queue 5 */ + __IM uint32_t QUEUE6 : 4; /*!< [27..24] A 4-bit value per queue indicating the number of frames + * stored in queue 6 */ + __IM uint32_t QUEUE7 : 4; /*!< [31..28] A 4-bit value per queue indicating the number of frames + * stored in queue 7 */ + } IMC_QLEVEL_P_b[4]; + }; + __IM uint32_t RESERVED12[12]; + + union + { + __IOM uint32_t LK_CTRL; /*!< (@ 0x00000400) Learning/Lookup Function Global Configuration + * Register */ + + struct + { + __IOM uint32_t LKUP_EN : 1; /*!< [0..0] Lookup Controller Enable */ + __IOM uint32_t LEARN_EN : 1; /*!< [1..1] Learning Enable */ + __IOM uint32_t AGING_EN : 1; /*!< [2..2] Aging Enable */ + __IOM uint32_t ALW_MGRT : 1; /*!< [3..3] Allow Migration */ + __IOM uint32_t DISC_UNK_DEST : 1; /*!< [4..4] Discard Unknown Destination */ + uint32_t : 1; + __IOM uint32_t CLRTBL : 1; /*!< [6..6] Clear Table */ + __IOM uint32_t IND_VLAN : 1; /*!< [7..7] Enable Independent VLAN Learning */ + uint32_t : 8; + __IOM uint32_t DISC_UNK_SRC : 4; /*!< [19..16] Discard Unknown Source */ + uint32_t : 12; + } LK_CTRL_b; + }; + + union + { + __IOM uint32_t LK_STATUS; /*!< (@ 0x00000404) Status Bits and Table Overflow Counter Register */ + + struct + { + __IM uint32_t AGEADDR : 16; /*!< [15..0] Address the aging process will inspect when the aging + * timer expires next time. */ + __IOM uint32_t OVRF : 14; /*!< [29..16] Counts number of table overflows that occurred (a new + * address was learned but the table had no storage and an + * older entry was deleted). The counter is cleared by writing + * into the register and having bit 16 set to 1. */ + uint32_t : 1; + __IOM uint32_t LRNEVNT : 1; /*!< [31..31] Learn Event */ + } LK_STATUS_b; + }; + + union + { + __IOM uint32_t LK_ADDR_CTRL; /*!< (@ 0x00000408) Address Table Transaction Control and Read/Write + * Address */ + + struct + { + __IOM uint32_t ADDR_MSK : 12; /*!< [11..0] Memory address for read and write transactions. This + * is the address of a 69-bit entry. For the DEL_PORT bit, + * a port mask can be provided in these bits instead of the + * address. Bit 0 represents port 0, bit 1 port 1, and so + * on. */ + uint32_t : 10; + __IOM uint32_t CLR_DYNAMIC : 1; /*!< [22..22] When set to 1, scans the complete table for valid dynamic + * entries and deletes them (writes entry with all 0s). This + * bit is cleared when the function has completed. */ + __IOM uint32_t CLR_STATIC : 1; /*!< [23..23] When set to 1, scans the complete table for valid static + * entries and deletes them (writes entry with all 0s). This + * bit is cleared when the function has completed. */ + __IOM uint32_t GETLASTNEW : 1; /*!< [24..24] When set to 1, retrieves the last source address that + * was not found in the table and places it into LK_DATA_LO/HI/HI2. + * The valid bit of the entry (bit LK_DATA_HI[16]) indicates + * if the address is new (when valid bit is 1) or not (when + * valid bit is 0) since the command was last issued. */ + __IOM uint32_t WRITE : 1; /*!< [25..25] When set to 1, perform a single write transaction. */ + __IOM uint32_t READ : 1; /*!< [26..26] When set to 1, perform a single read transaction. */ + __IOM uint32_t WAIT_COMP : 1; /*!< [27..27] When set to 1, instructs to stall the processor bus + * until the transaction is completed. This allows performing + * of consecutive writes into this register with varying commands + * without the need for polling the BUSY bit. */ + __IM uint32_t LOOKUP : 1; /*!< [28..28] When set to 1, perform a lookup of the MAC address + * given in LK_DATA_LO/HI/HI2. */ + __IOM uint32_t CLEAR : 1; /*!< [29..29] When set to 1, writes all 0s to the entry selected + * by the given address set in ADDR_MSK[11:0]. If this bit + * is set together with the LOOKUP bit, first a lookup is + * performed and if the lookup succeeds, the entry is then + * deleted. The registers LK_DATA_LO/HI/HI2 are also cleared. + * The memory address in this register is set from the lookup + * result. If the lookup failed, the clear command is ignored + * and memory address is arbitrary. */ + __IOM uint32_t DEL_PORT : 1; /*!< [30..30] When set to 1, scans the complete table for valid dynamic + * entries that contain the given ports in their destination + * port mask and deletes the ports or the complete entry. + * The port mask is provided in the ADDR_MSK[3:0] when writing + * this register (1 bit per port, bit 0 = port 0, bit 1 = + * port 1, and so on). */ + __IM uint32_t BUSY : 1; /*!< [31..31] Transaction Busy Indication */ + } LK_ADDR_CTRL_b; + }; + + union + { + __IOM uint32_t LK_DATA_LO; /*!< (@ 0x0000040C) Lower 32-Bit Data of Lookup Memory Entry */ + + struct + { + __IOM uint32_t MEMDATA : 32; /*!< [31..0] Memory Data [31:0] */ + } LK_DATA_LO_b; + }; + + union + { + __IOM uint32_t LK_DATA_HI; /*!< (@ 0x00000410) Higher 25-Bit Data of Lookup Memory Entry */ + + struct + { + __IOM uint32_t MEMDATA : 25; /*!< [24..0] Memory Data [56:32] */ + uint32_t : 7; + } LK_DATA_HI_b; + }; + + union + { + __IOM uint32_t LK_DATA_HI2; /*!< (@ 0x00000414) Higher2 12-Bit Data of Lookup Memory Entry */ + + struct + { + uint32_t : 8; + __IOM uint32_t MEMDATA : 12; /*!< [19..8] Memory Data [68:57] */ + uint32_t : 12; + } LK_DATA_HI2_b; + }; + + union + { + __IOM uint32_t LK_LEARNCOUNT; /*!< (@ 0x00000418) Learned Address Count Register */ + + struct + { + __IOM uint32_t LEARNCOUNT : 13; /*!< [12..0] Number of Learned Addresses */ + uint32_t : 17; + __IOM uint32_t WRITE_MD : 2; /*!< [31..30] These bits define how the LEARNCOUNT value is modified + * when writing into the register: */ + } LK_LEARNCOUNT_b; + }; + + union + { + __IOM uint32_t LK_AGETIME; /*!< (@ 0x0000041C) Period of the Aging Timer */ + + struct + { + __IOM uint32_t AGETIME : 24; /*!< [23..0] 24-bit Timer Value */ + uint32_t : 8; + } LK_AGETIME_b; + }; + __IM uint32_t RESERVED13[24]; + + union + { + __IOM uint32_t MGMT_TAG_CONFIG; /*!< (@ 0x00000480) Management Tag Configuration Register */ + + struct + { + __IOM uint32_t ENABLE : 1; /*!< [0..0] Enable Management Tag Insertion Module */ + __IOM uint32_t AL_FRAMES : 1; /*!< [1..1] Enable Tag Insertion for All Frames */ + uint32_t : 2; + __IOM uint32_t TYPE1_EN : 1; /*!< [4..4] When set, frames with a Type field that match the value + * in PRIORITY_TYPE1.TYPEVAL[15:0] have management tag inserted. + * This is in addition to BPDU frames which always have tag + * inserted. */ + __IOM uint32_t TYPE2_EN : 1; /*!< [5..5] When set, frames with a Type field that match the value + * in PRIORITY_TYPE2.TYPEVAL[15:0] have management tag inserted. + * This is in addition to BPDU frames which always have tag + * inserted. */ + uint32_t : 10; + __IOM uint32_t TAGFIELD : 16; /*!< [31..16] The value of the tag that is found in the first Type/Length + * field of the frame to identify that the control information + * is present within a frame. For example, [31:24] = first + * octet, [23:16] = 2nd octet. */ + } MGMT_TAG_CONFIG_b; + }; + __IM uint32_t RESERVED14[32]; + + union + { + __IOM uint32_t TSM_CONFIG; /*!< (@ 0x00000504) Timestamping Control Module Configuration Register */ + + struct + { + __IOM uint32_t IRQ_EN : 1; /*!< [0..0] Final Interrupt enable */ + __IOM uint32_t IRQ_TEST : 1; /*!< [1..1] Software controlled interrupt for testing purposes */ + __IOM uint32_t IRQ_TSFIFO_OVR : 1; /*!< [2..2] Trigger interrupt enable for Transmit Timestamp Capture + * Overflow event */ + uint32_t : 1; + __IOM uint32_t IRQ_EVT_OFFSET : 2; /*!< [5..4] Per-timer Trigger interrupt enable for the timer offset + * event */ + uint32_t : 2; + __IOM uint32_t IRQ_EVT_PERIOD : 2; /*!< [9..8] Per-timer Trigger interrupt enable for the timer periodical + * event */ + uint32_t : 2; + __IOM uint32_t IRQ_ATIME_OVER : 2; /*!< [13..12] Per-timer Trigger interrupt enable for the timer wrap + * (reached its maximum) */ + uint32_t : 2; + __IOM uint32_t IRQ_TX_EN : 4; /*!< [19..16] Per Port Transmit Timestamp Capture Interrupt Enable */ + uint32_t : 12; + } TSM_CONFIG_b; + }; + + union + { + __IOM uint32_t TSM_IRQ_STAT_ACK; /*!< (@ 0x00000508) Interrupt Status/Acknowledge Register */ + + struct + { + __IM uint32_t IRQ_STAT : 1; /*!< [0..0] Interrupt Pending Status */ + __IOM uint32_t IRQ_TEST : 1; /*!< [1..1] Test Interrupt Pending Status */ + __IM uint32_t IRQ_TSFIFO_OVR : 1; /*!< [2..2] Transmit Timestamp Capture Overflow Interrupt Pending + * Status */ + uint32_t : 1; + __IOM uint32_t IRQ_EVT_OFFSET : 2; /*!< [5..4] Per-timer Offset Interrupt Pending Status */ + uint32_t : 2; + __IOM uint32_t IRQ_EVT_PERIOD : 2; /*!< [9..8] Per-timer Periodical Interrupt Pending Status */ + uint32_t : 2; + __IOM uint32_t IRQ_ATIME_OVER : 2; /*!< [13..12] Per-timer Overflow Interrupt Pending Status */ + uint32_t : 2; + __IOM uint32_t IRQ_TX : 4; /*!< [19..16] Per Port Transmit Timestamp Capture Interrupt */ + uint32_t : 12; + } TSM_IRQ_STAT_ACK_b; + }; + + union + { + __IOM uint32_t PTP_DOMAIN; /*!< (@ 0x0000050C) Domain Number of PTP Frame */ + + struct + { + __IOM uint32_t DOMAIN0 : 8; /*!< [7..0] DomainNumber to Match Against for Timer 0 */ + __IOM uint32_t DOMAIN1 : 8; /*!< [15..8] DomainNumber to Match Against for Timer 1 */ + uint32_t : 16; + } PTP_DOMAIN_b; + }; + __IM uint32_t RESERVED15[12]; + + union + { + __IOM uint32_t PEERDELAY_P0_T0; /*!< (@ 0x00000540) Port 0 Peer Delay Value for Timer 0 (n = 0 to + * 3) */ + + struct + { + __IOM uint32_t PEERDELAY : 30; /*!< [29..0] Peer Delay Value Determined at the Port n for Timer + * 0 */ + uint32_t : 2; + } PEERDELAY_P0_T0_b; + }; + + union + { + __IOM uint32_t PEERDELAY_P0_T1; /*!< (@ 0x00000544) Port 0 Peer Delay Value for Timer 1 (n = 0 to + * 3) */ + + struct + { + __IOM uint32_t PEERDELAY : 30; /*!< [29..0] Peer Delay Value Determined at the Port n for Timer + * 1 */ + uint32_t : 2; + } PEERDELAY_P0_T1_b; + }; + __IM uint32_t RESERVED16[2]; + + union + { + __IOM uint32_t PEERDELAY_P1_T0; /*!< (@ 0x00000550) Port 1 Peer Delay Value for Timer 0 (n = 0 to + * 3) */ + + struct + { + __IOM uint32_t PEERDELAY : 30; /*!< [29..0] Peer Delay Value Determined at the Port n for Timer + * 0 */ + uint32_t : 2; + } PEERDELAY_P1_T0_b; + }; + + union + { + __IOM uint32_t PEERDELAY_P1_T1; /*!< (@ 0x00000554) Port 1 Peer Delay Value for Timer 1 (n = 0 to + * 3) */ + + struct + { + __IOM uint32_t PEERDELAY : 30; /*!< [29..0] Peer Delay Value Determined at the Port n for Timer + * 1 */ + uint32_t : 2; + } PEERDELAY_P1_T1_b; + }; + __IM uint32_t RESERVED17[2]; + + union + { + __IOM uint32_t PEERDELAY_P2_T0; /*!< (@ 0x00000560) Port 2 Peer Delay Value for Timer 0 (n = 0 to + * 3) */ + + struct + { + __IOM uint32_t PEERDELAY : 30; /*!< [29..0] Peer Delay Value Determined at the Port n for Timer + * 0 */ + uint32_t : 2; + } PEERDELAY_P2_T0_b; + }; + + union + { + __IOM uint32_t PEERDELAY_P2_T1; /*!< (@ 0x00000564) Port 2 Peer Delay Value for Timer 1 (n = 0 to + * 3) */ + + struct + { + __IOM uint32_t PEERDELAY : 30; /*!< [29..0] Peer Delay Value Determined at the Port n for Timer + * 1 */ + uint32_t : 2; + } PEERDELAY_P2_T1_b; + }; + __IM uint32_t RESERVED18[2]; + + union + { + __IOM uint32_t PEERDELAY_P3_T0; /*!< (@ 0x00000570) Port 3 Peer Delay Value for Timer 0 (n = 0 to + * 3) */ + + struct + { + __IOM uint32_t PEERDELAY : 30; /*!< [29..0] Peer Delay Value Determined at the Port n for Timer + * 0 */ + uint32_t : 2; + } PEERDELAY_P3_T0_b; + }; + + union + { + __IOM uint32_t PEERDELAY_P3_T1; /*!< (@ 0x00000574) Port 3 Peer Delay Value for Timer 1 (n = 0 to + * 3) */ + + struct + { + __IOM uint32_t PEERDELAY : 30; /*!< [29..0] Peer Delay Value Determined at the Port n for Timer + * 1 */ + uint32_t : 2; + } PEERDELAY_P3_T1_b; + }; + __IM uint32_t RESERVED19[18]; + + union + { + __IOM uint32_t TS_FIFO_STATUS; /*!< (@ 0x000005C0) Transmit Timestamp FIFO Status Register */ + + struct + { + __IM uint32_t FF_VALID : 4; /*!< [3..0] Per-port indication that a valid timestamp is available + * in the corresponding FIFO of the port */ + uint32_t : 12; + __IOM uint32_t FF_OVR : 4; /*!< [19..16] Per-port indication that a timestamp cannot be written + * to the FIFO because of the FIFO being full. */ + uint32_t : 12; + } TS_FIFO_STATUS_b; + }; + + union + { + __IOM uint32_t TS_FIFO_READ_CTRL; /*!< (@ 0x000005C4) Transmit Timestamp FIFO Read Control Register */ + + struct + { + __IOM uint32_t PORT_NUM : 2; /*!< [1..0] Port Number to Read from */ + uint32_t : 2; + __IM uint32_t TS_VALID : 1; /*!< [4..4] When reading from this register, this bit is 1 if the + * FIFO indicated by PORT_NUM contained valid data. */ + uint32_t : 1; + __IM uint32_t TS_SEL : 1; /*!< [6..6] When TS_VALID is 1, TS_SEL indicates the timer used for + * the read timestamp. */ + uint32_t : 1; + __IM uint32_t TS_ID : 7; /*!< [14..8] When TS_VALID is 1, TS_ID indicates the ID specified + * by the application through the management tag control information, + * if present. */ + uint32_t : 17; + } TS_FIFO_READ_CTRL_b; + }; + + union + { + __IM uint32_t TS_FIFO_READ_TIMESTAMP; /*!< (@ 0x000005C8) 32-bit Timestamp Value Read from FIFO */ + + struct + { + __IM uint32_t TIMESTAMP : 32; /*!< [31..0] 32-bit timestamp value read from the FIFO */ + } TS_FIFO_READ_TIMESTAMP_b; + }; + __IM uint32_t RESERVED20[13]; + + union + { + __IOM uint32_t INT_CONFIG; /*!< (@ 0x00000600) Interrupt Enable Configuration Register */ + + struct + { + __IOM uint32_t IRQ_EN : 1; /*!< [0..0] Interrupt Global Enable */ + __IOM uint32_t MDIO1 : 1; /*!< [1..1] Enable Interrupt on Transaction Complete from MDIO Controller */ + uint32_t : 1; + __IOM uint32_t LK_NEW_SRC : 1; /*!< [3..3] Enable Interrupt for New Source Address */ + __IOM uint32_t IRQ_TEST : 1; /*!< [4..4] When set, an interrupt is triggered immediately. Can + * be used to cause a software controlled interrupt for testing + * purposes. */ + __IOM uint32_t DLR_INT : 1; /*!< [5..5] Enable Interrupt for DLR */ + __IOM uint32_t PRP_INT : 1; /*!< [6..6] Enable Interrupt for PRP */ + __IOM uint32_t HUB_INT : 1; /*!< [7..7] Enable Interrupt for HUB */ + __IOM uint32_t IRQ_LINK : 3; /*!< [10..8] Per Line Port Phy Link Change Interrupt Enable */ + uint32_t : 5; + __IOM uint32_t IRQ_MAC_EEE : 3; /*!< [18..16] Per Line Port MAC interrupt */ + uint32_t : 8; + __IOM uint32_t EFP_INT : 1; /*!< [27..27] Enable Interrupt for Extended Frame Parser */ + __IOM uint32_t SRCFLT_WD_INT : 1; /*!< [28..28] MAC Address Source Filtering Watchdog */ + __IOM uint32_t TSM_INT : 1; /*!< [29..29] Enable Interrupt for TSM (Timer, Timestamping) */ + __IOM uint32_t TDMA_INT : 1; /*!< [30..30] Enable Interrupt for TDMA scheduler */ + __IOM uint32_t PATTERN_INT : 1; /*!< [31..31] Enable Interrupt for RX Pattern Matcher */ + } INT_CONFIG_b; + }; + + union + { + __IOM uint32_t INT_STAT_ACK; /*!< (@ 0x00000604) Interrupt Status/ACK Register */ + + struct + { + __IM uint32_t IRQ_PEND : 1; /*!< [0..0] Interrupt Pending Status */ + __IOM uint32_t MDIO1 : 1; /*!< [1..1] Latched Interrupt Status for MDIO1 */ + uint32_t : 1; + __IOM uint32_t LK_NEW_SRC : 1; /*!< [3..3] Latched Interrupt Status for LK_NEW_SRC */ + __IM uint32_t IRQ_TEST : 1; /*!< [4..4] Interrupt Status for IRQ_TEST */ + __IM uint32_t DLR_INT : 1; /*!< [5..5] Interrupt Pending Status from DLR Module */ + __IM uint32_t PRP_INT : 1; /*!< [6..6] Interrupt Pending Status from PRP Module */ + __IM uint32_t HUB_INT : 1; /*!< [7..7] Interrupt Pending Status from Hub Module */ + __IOM uint32_t IRQ_LINK : 3; /*!< [10..8] Interrupt Pending per Line Port Phy Link Change Interrupt */ + uint32_t : 5; + __IOM uint32_t IRQ_MAC_EEE : 3; /*!< [18..16] Interrupt Pending Status per Line Port MAC Interrupt */ + uint32_t : 8; + __IOM uint32_t EFP_INT : 1; /*!< [27..27] Interrupt from Extended Frame Parser */ + __IOM uint32_t SRCFLT_WD_INT : 1; /*!< [28..28] Interrupt Pending Status for MAC Source Filtering Watchdog */ + __IM uint32_t TSM_INT : 1; /*!< [29..29] Interrupt Pending Interrupt Indication from TSM (Timestamping) + * module */ + __IM uint32_t TDMA_INT : 1; /*!< [30..30] Interrupt Pending Status from TDMA Scheduler */ + __IM uint32_t PATTERN_INT : 1; /*!< [31..31] Interrupt Pending Status from RX Pattern Matcher Module */ + } INT_STAT_ACK_b; + }; + __IM uint32_t RESERVED21[30]; + + union + { + __IOM uint32_t ATIME_CTRL0; /*!< (@ 0x00000680) Timer 0 Control Register (n = 0, 1) */ + + struct + { + __IOM uint32_t ENABLE : 1; /*!< [0..0] ENABLE */ + __IOM uint32_t ONE_SHOT : 1; /*!< [1..1] Avoid timer wrap around. If set, the timer stops at maximum. + * An overflow interrupt (TSM_CONFIG.IRQ_ATIME_OVER) occurs + * (if enabled) when the maximum is reached. */ + __IOM uint32_t EVT_OFFSET_ENA : 1; /*!< [2..2] Enable Offset Event */ + uint32_t : 1; + __IOM uint32_t EVT_PERIOD_ENA : 1; /*!< [4..4] Enable Periodical Event */ + __IOM uint32_t EVT_PERIOD_RST : 1; /*!< [5..5] Reset Timer on Periodical Event */ + uint32_t : 3; + __IOM uint32_t RESTART : 1; /*!< [9..9] Resets the Timer to Zero (Command Bit) */ + uint32_t : 1; + __IOM uint32_t CAPTURE : 1; /*!< [11..11] Capture Time Value (Command Bit) */ + __IOM uint32_t CAPTURE_ALL : 1; /*!< [12..12] Capture All Timers Value (Command Bit) */ + uint32_t : 19; + } ATIME_CTRL0_b; + }; + + union + { + __IOM uint32_t ATIME0; /*!< (@ 0x00000684) Timer 0 Count Register (n = 0, 1) */ + + struct + { + __IOM uint32_t TIMER_VAL : 32; /*!< [31..0] Timer Value */ + } ATIME0_b; + }; + + union + { + __IOM uint32_t ATIME_OFFSET0; /*!< (@ 0x00000688) Timer 0 Offset Register (n = 0, 1) */ + + struct + { + __IOM uint32_t OFFSET : 32; /*!< [31..0] Value used for performing offset corrections without + * changing the drift correction */ + } ATIME_OFFSET0_b; + }; + + union + { + __IOM uint32_t ATIME_EVT_PERIOD0; /*!< (@ 0x0000068C) Timer 0 Periodic Event Register (n = 0, 1) */ + + struct + { + __IOM uint32_t PERIOD : 32; /*!< [31..0] Value for generating periodic events */ + } ATIME_EVT_PERIOD0_b; + }; + + union + { + __IOM uint32_t ATIME_CORR0; /*!< (@ 0x00000690) Timer 0 Correction Period Register (n = 0, 1) */ + + struct + { + __IOM uint32_t CORR_PERIOD : 31; /*!< [30..0] Correction Period */ + uint32_t : 1; + } ATIME_CORR0_b; + }; + + union + { + __IOM uint32_t ATIME_INC0; /*!< (@ 0x00000694) Timer 0 Increment Register (n = 0, 1) */ + + struct + { + __IOM uint32_t CLK_PERIOD : 7; /*!< [6..0] Clock Period of the Timestamping Clock (125 MHz) in nanoseconds */ + uint32_t : 1; + __IOM uint32_t CORR_INC : 7; /*!< [14..8] Correction Increment Value */ + uint32_t : 1; + __IOM uint32_t OFFS_CORR_INC : 7; /*!< [22..16] Offset Correction Increment Value */ + uint32_t : 9; + } ATIME_INC0_b; + }; + + union + { + __IOM uint32_t ATIME_SEC0; /*!< (@ 0x00000698) Timer 0 Seconds Time Register (n = 0, 1) */ + + struct + { + __IOM uint32_t SEC_TIME : 32; /*!< [31..0] Seconds Time Value */ + } ATIME_SEC0_b; + }; + + union + { + __IOM uint32_t ATIME_OFFS_CORR0; /*!< (@ 0x0000069C) Timer 0 Offset Correction Counter Register (n + * = 0, 1) */ + + struct + { + __IOM uint32_t OFFS_CORR_CNT : 32; /*!< [31..0] Offset Correction Counter */ + } ATIME_OFFS_CORR0_b; + }; + + union + { + __IOM uint32_t ATIME_CTRL1; /*!< (@ 0x000006A0) Timer 1 Control Register (n = 0, 1) */ + + struct + { + __IOM uint32_t ENABLE : 1; /*!< [0..0] ENABLE */ + __IOM uint32_t ONE_SHOT : 1; /*!< [1..1] Avoid timer wrap around. If set, the timer stops at maximum. + * An overflow interrupt (TSM_CONFIG.IRQ_ATIME_OVER) occurs + * (if enabled) when the maximum is reached. */ + __IOM uint32_t EVT_OFFSET_ENA : 1; /*!< [2..2] Enable Offset Event */ + uint32_t : 1; + __IOM uint32_t EVT_PERIOD_ENA : 1; /*!< [4..4] Enable Periodical Event */ + __IOM uint32_t EVT_PERIOD_RST : 1; /*!< [5..5] Reset Timer on Periodical Event */ + uint32_t : 3; + __IOM uint32_t RESTART : 1; /*!< [9..9] Resets the Timer to Zero (Command Bit) */ + uint32_t : 1; + __IOM uint32_t CAPTURE : 1; /*!< [11..11] Capture Time Value (Command Bit) */ + __IOM uint32_t CAPTURE_ALL : 1; /*!< [12..12] Capture All Timers Value (Command Bit) */ + uint32_t : 19; + } ATIME_CTRL1_b; + }; + + union + { + __IOM uint32_t ATIME1; /*!< (@ 0x000006A4) Timer 1 Count Register (n = 0, 1) */ + + struct + { + __IOM uint32_t TIMER_VAL : 32; /*!< [31..0] Timer Value */ + } ATIME1_b; + }; + + union + { + __IOM uint32_t ATIME_OFFSET1; /*!< (@ 0x000006A8) Timer 1 Offset Register (n = 0, 1) */ + + struct + { + __IOM uint32_t OFFSET : 32; /*!< [31..0] Value used for performing offset corrections without + * changing the drift correction */ + } ATIME_OFFSET1_b; + }; + + union + { + __IOM uint32_t ATIME_EVT_PERIOD1; /*!< (@ 0x000006AC) Timer 1 Periodic Event Register (n = 0, 1) */ + + struct + { + __IOM uint32_t PERIOD : 32; /*!< [31..0] Value for generating periodic events */ + } ATIME_EVT_PERIOD1_b; + }; + + union + { + __IOM uint32_t ATIME_CORR1; /*!< (@ 0x000006B0) Timer 1 Correction Period Register (n = 0, 1) */ + + struct + { + __IOM uint32_t CORR_PERIOD : 31; /*!< [30..0] Correction Period */ + uint32_t : 1; + } ATIME_CORR1_b; + }; + + union + { + __IOM uint32_t ATIME_INC1; /*!< (@ 0x000006B4) Timer 1 Increment Register (n = 0, 1) */ + + struct + { + __IOM uint32_t CLK_PERIOD : 7; /*!< [6..0] Clock Period of the Timestamping Clock (125 MHz) in nanoseconds */ + uint32_t : 1; + __IOM uint32_t CORR_INC : 7; /*!< [14..8] Correction Increment Value */ + uint32_t : 1; + __IOM uint32_t OFFS_CORR_INC : 7; /*!< [22..16] Offset Correction Increment Value */ + uint32_t : 9; + } ATIME_INC1_b; + }; + + union + { + __IOM uint32_t ATIME_SEC1; /*!< (@ 0x000006B8) Timer 1 Seconds Time Register (n = 0, 1) */ + + struct + { + __IOM uint32_t SEC_TIME : 32; /*!< [31..0] Seconds Time Value */ + } ATIME_SEC1_b; + }; + + union + { + __IOM uint32_t ATIME_OFFS_CORR1; /*!< (@ 0x000006BC) Timer 1 Offset Correction Counter Register (n + * = 0, 1) */ + + struct + { + __IOM uint32_t OFFS_CORR_CNT : 32; /*!< [31..0] Offset Correction Counter */ + } ATIME_OFFS_CORR1_b; + }; + __IM uint32_t RESERVED22[16]; + + union + { + __IOM uint32_t MDIO_CFG_STATUS; /*!< (@ 0x00000700) MDIO Configuration and Status Register */ + + struct + { + __IM uint32_t BUSY : 1; /*!< [0..0] MDIO Busy */ + __IM uint32_t READERR : 1; /*!< [1..1] MDIO Read Error */ + __IOM uint32_t HOLD : 3; /*!< [4..2] MDIO Hold Time Setting */ + __IOM uint32_t DISPREAM : 1; /*!< [5..5] Disable Preamble */ + uint32_t : 1; + __IOM uint32_t CLKDIV : 9; /*!< [15..7] MDIO Clock Divisor */ + uint32_t : 16; + } MDIO_CFG_STATUS_b; + }; + + union + { + __IOM uint32_t MDIO_COMMAND; /*!< (@ 0x00000704) MDIO PHY Command Register */ + + struct + { + __IOM uint32_t REGADDR : 5; /*!< [4..0] Register Address */ + __IOM uint32_t PHYADDR : 5; /*!< [9..5] PHY Address */ + uint32_t : 5; + __IOM uint32_t TRANINIT : 1; /*!< [15..15] If set to 1, a read transaction is initiated. */ + uint32_t : 16; + } MDIO_COMMAND_b; + }; + + union + { + __IOM uint32_t MDIO_DATA; /*!< (@ 0x00000708) MDIO Data Register */ + + struct + { + __IOM uint32_t MDIO_DATA : 16; /*!< [15..0] MDIO_DATA */ + uint32_t : 16; + } MDIO_DATA_b; + }; + __IM uint32_t RESERVED23[61]; + + union + { + __IM uint32_t REV_P0; /*!< (@ 0x00000800) Port 0 MAC Core Revision (n = 0 to 3) */ + + struct + { + __IM uint32_t REV : 32; /*!< [31..0] MAC Core Revision */ + } REV_P0_b; + }; + __IM uint32_t RESERVED24; + + union + { + __IOM uint32_t COMMAND_CONFIG_P0; /*!< (@ 0x00000808) Port 0 Command Configuration Register (n = 0 + * to 3) */ + + struct + { + __IOM uint32_t TX_ENA : 1; /*!< [0..0] Enable/Disable MAC Transmit Path */ + __IOM uint32_t RX_ENA : 1; /*!< [1..1] Enable/Disable MAC Receive Path */ + __IOM uint32_t TDMA_PREBUF_DIS : 1; /*!< [2..2] When set to 1, the MAC does not request a new frame from + * the IMC until the current frame is completed. This can + * cause the IPG between frames to be more than the value + * in TX_IPG_LENGTH. */ + __IOM uint32_t ETH_SPEED : 1; /*!< [3..3] Operation Mode Definition */ + __IM uint32_t PROMIS_EN : 1; /*!< [4..4] Enable/Disable MAC Promiscuous Operation */ + __IM uint32_t PAD_EN : 1; /*!< [5..5] Enable/Disable Frame Padding Remove on Receive */ + uint32_t : 1; + __IM uint32_t PAUSE_FWD : 1; /*!< [7..7] Terminate/Forward Pause Frames */ + __IOM uint32_t PAUSE_IGNORE : 1; /*!< [8..8] Ignore Pause Frame Quanta */ + __IM uint32_t TX_ADDR_INS : 1; /*!< [9..9] Non writable bit, fixed to 0 always. */ + __IOM uint32_t HD_ENA : 1; /*!< [10..10] Enable auto full/half-duplex operation (set to 1) or + * full-duplex only (set to 0). */ + __IOM uint32_t TX_CRC_APPEND : 1; /*!< [11..11] Enable CRC Append on Transmit */ + uint32_t : 1; + __IOM uint32_t SW_RESET : 1; /*!< [13..13] Self Clearing Reset Command Bit */ + uint32_t : 9; + __IOM uint32_t CNTL_FRM_ENA : 1; /*!< [23..23] MAC Control Frame Enable */ + __IOM uint32_t NO_LGTH_CHK : 1; /*!< [24..24] Payload Length Check Disable */ + __IOM uint32_t ENA_10 : 1; /*!< [25..25] This bit has no effect except PHYSPEED bit of STATUS_Pn + * register. */ + __IOM uint32_t EFPI_SELECT : 1; /*!< [26..26] EFPI_SELECT */ + __IOM uint32_t TX_TRUNCATE : 1; /*!< [27..27] TX_TRUNCATE */ + uint32_t : 2; + __IOM uint32_t TIMER_SEL : 1; /*!< [30..30] Selects the default timer to use for timestamping operations + * on transmit and on receive. The value is used when not + * overridden by the PTP auto-response function, pattern matchers + * or force forwarding information in a management tag. */ + uint32_t : 1; + } COMMAND_CONFIG_P0_b; + }; + + union + { + __IOM uint32_t MAC_ADDR_0_P0; /*!< (@ 0x0000080C) Port 0 MAC Address Register 0 (n = 0 to 2) */ + + struct + { + __IOM uint32_t MAC_ADDR : 32; /*!< [31..0] The first 4 bytes of the MAC address of the port. First + * byte is bits [7:0]. The MAC address is used on locally + * generated frames such as pause frames, peer-delay response. */ + } MAC_ADDR_0_P0_b; + }; + + union + { + __IOM uint32_t MAC_ADDR_1_P0; /*!< (@ 0x00000810) Port 0 MAC Address Register 1 (n = 0 to 2) */ + + struct + { + __IOM uint32_t MAC_ADDR : 16; /*!< [15..0] The last 2 bytes of the MAC address of the port. Bits + * [7:0] is the 5th byte and bits [15:8] is the 6th byte. */ + uint32_t : 16; + } MAC_ADDR_1_P0_b; + }; + + union + { + __IOM uint32_t FRM_LENGTH_P0; /*!< (@ 0x00000814) Port 0 Maximum Frame Length Register (n = 0 to + * 3) */ + + struct + { + __IOM uint32_t FRM_LENGTH : 14; /*!< [13..0] Maximum Frame Length */ + uint32_t : 18; + } FRM_LENGTH_P0_b; + }; + + union + { + __IM uint32_t PAUSE_QUANT_P0; /*!< (@ 0x00000818) Port 0 MAC Pause Quanta (n = 0 to 3) */ + + struct + { + __IM uint32_t PAUSE_QUANT : 16; /*!< [15..0] Pause Quanta */ + uint32_t : 16; + } PAUSE_QUANT_P0_b; + }; + + union + { + __IOM uint32_t MAC_LINK_QTRIG_P0; /*!< (@ 0x0000081C) Port 0 Trigger Event Configuration Register (n + * = 0 to 2) */ + + struct + { + __IOM uint32_t PORT_MASK : 4; /*!< [3..0] Per-port Bit Mask */ + uint32_t : 12; + __IOM uint32_t QUEUE_MASK : 8; /*!< [23..16] 1-bit per queue indicating from which queues a frame + * is transmitted from the ports indicated by PORT_MASK. A + * single frame is transmitted per indicated port in PORT_MASK + * among the queues indicated by QUEUE_MASK. */ + uint32_t : 4; + __IOM uint32_t TRIGGERED : 1; /*!< [28..28] When MODE is set to 1, TRIGGERED indicates whether + * a frame was transmitted. When MODE is set to 0, TRIGGERED + * is always 0. This flag clears when the register is written. */ + __IOM uint32_t DLR_MODE : 1; /*!< [29..29] When set to 0, the DLR state machine is ignored. When + * set to 1, the Link Queue Trigger occurs only if the DLR + * state machine is in the NORMAL or FAULT state. */ + __IOM uint32_t MODE : 1; /*!< [30..30] When set to 0, only a single Link_Status frame is generated. + * This is to prevent sending multiple frames due to link + * flapping. */ + __IOM uint32_t ENABLE : 1; /*!< [31..31] Write to 1 to enable the Link Queue Trigger feature. + * When the link status (phy_link) transitions from 1 -> + * 0, a trigger event is generated to the memory controller + * for the ports and queues indicated in PORT_MASK and QUEUE_MASK. */ + } MAC_LINK_QTRIG_P0_b; + }; + __IM uint32_t RESERVED25[4]; + + union + { + __IOM uint32_t PTPCLOCKIDENTITY1_P0; /*!< (@ 0x00000830) Port 0 PTP Clock Identity 1 Register (n = 0 to + * 2) */ + + struct + { + __IOM uint32_t CLK_IDENTITY0 : 8; /*!< [7..0] 20, portIdentity.ClockIdentity[0] */ + __IOM uint32_t CLK_IDENTITY1 : 8; /*!< [15..8] 21, portIdentity.ClockIdentity[1] */ + __IOM uint32_t CLK_IDENTITY2 : 8; /*!< [23..16] 22, portIdentity.ClockIdentity[2] */ + __IOM uint32_t CLK_IDENTITY3 : 8; /*!< [31..24] 23, portIdentity.ClockIdentity[3] */ + } PTPCLOCKIDENTITY1_P0_b; + }; + + union + { + __IOM uint32_t PTPCLOCKIDENTITY2_P0; /*!< (@ 0x00000834) Port 0 PTP Clock Identity 2 Register (n = 0 to + * 2) */ + + struct + { + __IOM uint32_t CLK_IDENTITY4 : 8; /*!< [7..0] 24, portIdentity.ClockIdentity[4] */ + __IOM uint32_t CLK_IDENTITY5 : 8; /*!< [15..8] 25, portIdentity.ClockIdentity[5] */ + __IOM uint32_t CLK_IDENTITY6 : 8; /*!< [23..16] 26, portIdentity.ClockIdentity[6] */ + __IOM uint32_t CLK_IDENTITY7 : 8; /*!< [31..24] 27, portIdentity.ClockIdentity[7] */ + } PTPCLOCKIDENTITY2_P0_b; + }; + + union + { + __IOM uint32_t PTPAUTORESPONSE_P0; /*!< (@ 0x00000838) Port 0 PTP Auto Response Register (n = 0 to 2) */ + + struct + { + __IOM uint32_t ARSP_EN : 1; /*!< [0..0] Auto Response Enable */ + __IOM uint32_t D_TIMER : 1; /*!< [1..1] Default timer to use for auto-response generation */ + uint32_t : 14; + __IOM uint32_t PORTNUM1 : 8; /*!< [23..16] 29, portIdentity.PortNumber[1] (lsb) */ + __IOM uint32_t PORTNUM0 : 8; /*!< [31..24] 28, portIdentity.PortNumber[0] (msb) */ + } PTPAUTORESPONSE_P0_b; + }; + __IM uint32_t RESERVED26; + + union + { + __IOM uint32_t STATUS_P0; /*!< (@ 0x00000840) Port 0 Status Register */ + + struct + { + __IM uint32_t PHYSPEED : 2; /*!< [1..0] Currently Active PHY Interface Speed */ + __IM uint32_t PHYLINK : 1; /*!< [2..2] Link status from PHY interface */ + __IM uint32_t PHYDUPLEX : 1; /*!< [3..3] Duplex status from PHY interface */ + __IOM uint32_t TX_UNDFLW : 1; /*!< [4..4] Indicates that the transmit MAC underflow. This shall + * never occur during normal operation. */ + __IOM uint32_t LK_DST_ERR : 1; /*!< [5..5] Indicates that the L2 destination lookup process failed + * to complete in time before the next frame was received + * at the port. This should never occur under normal operation. + * The cause could be from IPG violations in the received + * frames. */ + __IM uint32_t BR_VERIF_ST : 3; /*!< [8..6] Indicates the current status of the verification according + * to clause 30.14.1.2 of the 802.3br specification */ + uint32_t : 23; + } STATUS_P0_b; + }; + + union + { + __IOM uint32_t TX_IPG_LENGTH_P0; /*!< (@ 0x00000844) Port 0 Transmit IPG Length Register (n = 0 to + * 3) */ + + struct + { + __IOM uint32_t TX_IPG_LENGTH : 5; /*!< [4..0] Define transmit interpacket gap in octets. Allowed values + * are in the range of 8 to 31. */ + uint32_t : 11; + __IOM uint32_t MINRTC3GAP : 5; /*!< [20..16] MINRTC3GAP */ + uint32_t : 11; + } TX_IPG_LENGTH_P0_b; + }; + + union + { + __IOM uint32_t EEE_CTL_STAT_P0; /*!< (@ 0x00000848) Port 0 MAC EEE Functions Control and Status (n + * = 0 to 2) */ + + struct + { + __IOM uint32_t EEE_AUTO : 1; /*!< [0..0] EEE Automatic Mode of Operation */ + __IOM uint32_t LPI_REQ : 1; /*!< [1..1] Request LPI Transmission when MAC Becomes Idle */ + __IOM uint32_t LPI_TXHOLD : 1; /*!< [2..2] MAC Transmission Hold */ + uint32_t : 5; + __IM uint32_t ST_LPI_REQ : 1; /*!< [8..8] Status (real time) of Internal LPI_REQ to the MAC */ + __IM uint32_t ST_LPI_TXHOLD : 1; /*!< [9..9] Status (real time) of Internal LPI_TXHOLD to the MAC */ + __IM uint32_t ST_TXBUSY : 1; /*!< [10..10] Status (real time) if the MAC is currently transmitting. */ + __IM uint32_t ST_TXAVAIL : 1; /*!< [11..11] Status (real time) if the MAC transmit FIFO has data + * available for transmission. */ + __IM uint32_t ST_LPI_IND : 1; /*!< [12..12] Status (real time) of Received LPI */ + uint32_t : 3; + __IM uint32_t STLH_LPI_REQ : 1; /*!< [16..16] Status (latched high) of Internal LPI_REQ to the MAC */ + __IM uint32_t STLH_LPI_TXHOLD : 1; /*!< [17..17] Status (latched high) of Internal LPI_TXHOLD to the + * MAC */ + __IM uint32_t STLH_TXBUSY : 1; /*!< [18..18] Status (latched high) if the MAC is/was Transmitting */ + uint32_t : 1; + __IM uint32_t STLH_LPI_IND : 1; /*!< [20..20] Status (latched high) of Received LPI (ST_LPI_IND) */ + uint32_t : 11; + } EEE_CTL_STAT_P0_b; + }; + + union + { + __IOM uint32_t EEE_IDLE_TIME_P0; /*!< (@ 0x0000084C) Port 0 EEE Idle Time Register (n = 0 to 2) */ + + struct + { + __IOM uint32_t EEE_IDLE_TIME : 32; /*!< [31..0] Time (-1) the transmitter must be idle before transmission + * of LPI begins. A 32-bit value in steps of 32 switch operating + * clock cycles. A value of 0 disables the timer. The value + * must be set to 1 less count. */ + } EEE_IDLE_TIME_P0_b; + }; + + union + { + __IOM uint32_t EEE_TWSYS_TIME_P0; /*!< (@ 0x00000850) Port 0 EEE Wake Up Time Register (n = 0 to 2) */ + + struct + { + __IOM uint32_t EEE_WKUP_TIME : 32; /*!< [31..0] Time (-1) after PHY wakeup until the MAC is allowed + * to begin transmitting the first frame again. A 32-bit value + * in steps of switch operating clock cycles. A value of 0 + * disables the timer. The value must be set to 1 less count. */ + } EEE_TWSYS_TIME_P0_b; + }; + + union + { + __IOM uint32_t IDLE_SLOPE_P0; /*!< (@ 0x00000854) Port 0 MAC Traffic Shaper Bandwidth Control */ + + struct + { + __IOM uint32_t IDLE_SLOPE : 11; /*!< [10..0] Traffic Shaper Bandwidth Control */ + uint32_t : 21; + } IDLE_SLOPE_P0_b; + }; + + union + { + __IOM uint32_t CT_DELAY_P0; /*!< (@ 0x00000858) Port 0 Cut-Through Delay Indication Register */ + + struct + { + __IOM uint32_t CT_DELAY : 9; /*!< [8..0] Delay Value in 400 ns / 40 ns / 8 ns increments (frequency + * of the MII PHY interface) */ + uint32_t : 23; + } CT_DELAY_P0_b; + }; + + union + { + __IOM uint32_t BR_CONTROL_P0; /*!< (@ 0x0000085C) Port 0 802.3br Frame Configuration Register */ + + struct + { + __IOM uint32_t PREEMPT_ENA : 1; /*!< [0..0] When set to 1, enables 802.3br Frame Preemption. */ + __IOM uint32_t VERIFY_DIS : 1; /*!< [1..1] When set to 1, disables the verify process required for + * preemption operation. */ + __IOM uint32_t RESPONSE_DIS : 1; /*!< [2..2] When set to 1 prevents the MAC from responding to "verify" + * frames. */ + uint32_t : 1; + __IOM uint32_t ADDFRAGSIZE : 2; /*!< [5..4] Minimum fragment size in increments of 64 bytes. */ + uint32_t : 2; + __IOM uint32_t TX_VERIFY_TIME : 7; /*!< [14..8] Preemption verification timeout in milliseconds. */ + uint32_t : 1; + __IOM uint32_t RX_STRICT_PRE : 1; /*!< [16..16] When set to 1, the preamble is checked so all bytes + * except the SFD are 0x55. When set to 0, only the last 2 + * bytes of the preamble are checked (SFD/SMD and FRAG_COUNT). + * It is recommended to set this bit to 1 to comply with the + * 802.3br specification. This bit must be set to 0 if only + * non-802.3br traffic is expected (for example, normal Ethernet + * traffic) and if custom preamble is used. */ + __IOM uint32_t RX_BR_SMD_DIS : 1; /*!< [17..17] When set to 1, the receiver does not decode the 802.3br + * SMDs and assumes all frames are express frames. This bit + * must be set to 0 for correct operation with 802.3br, and + * can be set to 1 when 802.3br is not enabled to avoid false + * detection of SMDs. */ + __IOM uint32_t RX_STRICT_BR_CTL : 1; /*!< [18..18] When set to 1, strict checking of VERIFY and RESPONSE + * frames is enabled. When set to 1, the frame contents and + * frame length checks are also performed on these frames. + * The mCRC is always checked regardless of the value of this + * register. This bit must be set to 0 to be compliant with + * the functionality described in IEEE 802.3br. */ + __IOM uint32_t TX_MCRC_INV : 1; /*!< [19..19] When set to 1, the 32-bit XOR mask used to calculate + * the mCRC for transmitted frames is inverted. This bit must + * always be written to 0 and only used for debugging. */ + __IOM uint32_t RX_MCRC_INV : 1; /*!< [20..20] When set to 1, the 32-bit XOR mask used to calculate + * the mCRC for received frames is inverted. This bit must + * always be written to 0 and only used for debugging. */ + uint32_t : 11; + } BR_CONTROL_P0_b; + }; + __IM uint32_t RESERVED27[2]; + + union + { + __IM uint32_t AFRAMESTRANSMITTEDOK_P0; /*!< (@ 0x00000868) Port 0 MAC Transmitted Valid Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t TXVALIDCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Transmitted, including pause. */ + } AFRAMESTRANSMITTEDOK_P0_b; + }; + + union + { + __IM uint32_t AFRAMESRECEIVEDOK_P0; /*!< (@ 0x0000086C) Port 0 MAC Received Valid Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXVALIDCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Received, including pause. */ + } AFRAMESRECEIVEDOK_P0_b; + }; + + union + { + __IM uint32_t AFRAMECHECKSEQUENCEERRORS_P0; /*!< (@ 0x00000870) Port 0 MAC FCS Error Frame Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t FCSERRCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Length but CRC error. */ + } AFRAMECHECKSEQUENCEERRORS_P0_b; + }; + + union + { + __IM uint32_t AALIGNMENTERRORS_P0; /*!< (@ 0x00000874) Port 0 MAC Alignment Error Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t ALGNERRCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Odd Number + * of Nibbles (MII) Received. */ + } AALIGNMENTERRORS_P0_b; + }; + + union + { + __IM uint32_t AOCTETSTRANSMITTEDOK_P0; /*!< (@ 0x00000878) Port 0 MAC Transmitted Valid Frame Octets Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t TXVALIDOCTETS : 32; /*!< [31..0] PORT n, this field indicates the octets (the payload + * only) of MAC Valid Transmitted. */ + } AOCTETSTRANSMITTEDOK_P0_b; + }; + + union + { + __IM uint32_t AOCTETSRECEIVEDOK_P0; /*!< (@ 0x0000087C) Port 0 MAC Received Valid Frame Octets Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXVALIDOCTETS : 32; /*!< [31..0] PORT n, this field indicates the octets (the payload + * only) of MAC Valid Received. */ + } AOCTETSRECEIVEDOK_P0_b; + }; + + union + { + __IM uint32_t ATXPAUSEMACCTRLFRAMES_P0; /*!< (@ 0x00000880) Port 0 MAC Transmitted Pause Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t TXPAUSECOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Pause Transmitted. */ + } ATXPAUSEMACCTRLFRAMES_P0_b; + }; + + union + { + __IM uint32_t ARXPAUSEMACCTRLFRAMES_P0; /*!< (@ 0x00000884) Port 0 MAC Received Pause Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXPAUSECOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Pause Received. */ + } ARXPAUSEMACCTRLFRAMES_P0_b; + }; + + union + { + __IM uint32_t IFINERRORS_P0; /*!< (@ 0x00000888) Port 0 MAC Input Error Count Register (n = 0 + * to 3) */ + + struct + { + __IM uint32_t INERRCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Any Error + * During Reception such as CRC, Length, PHY Error, RX FIFO + * Overflow. */ + } IFINERRORS_P0_b; + }; + + union + { + __IM uint32_t IFOUTERRORS_P0; /*!< (@ 0x0000088C) Port 0 MAC Output Error Count Register (n = 0 + * to 3) */ + + struct + { + __IM uint32_t OUTERRCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Frame + * Transmitted with PHY error. */ + } IFOUTERRORS_P0_b; + }; + + union + { + __IM uint32_t IFINUCASTPKTS_P0; /*!< (@ 0x00000890) Port 0 MAC Received Unicast Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXUCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Unicast + * Frame Valid Received. */ + } IFINUCASTPKTS_P0_b; + }; + + union + { + __IM uint32_t IFINMULTICASTPKTS_P0; /*!< (@ 0x00000894) Port 0 MAC Received Multicast Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXMCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Multicast + * Frame Valid Received. */ + } IFINMULTICASTPKTS_P0_b; + }; + + union + { + __IM uint32_t IFINBROADCASTPKTS_P0; /*!< (@ 0x00000898) Port 0 MAC Received Broadcast Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXBCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Broadcast + * Frame Valid Received. */ + } IFINBROADCASTPKTS_P0_b; + }; + + union + { + __IM uint32_t IFOUTDISCARDS_P0; /*!< (@ 0x0000089C) Port 0 MAC Discarded Outbound Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t DISCOBCOUNT : 32; /*!< [31..0] Not Applicable */ + } IFOUTDISCARDS_P0_b; + }; + + union + { + __IM uint32_t IFOUTUCASTPKTS_P0; /*!< (@ 0x000008A0) Port 0 MAC Transmitted Unicast Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t TXUCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Unicast + * Frame Valid Transmitted. */ + } IFOUTUCASTPKTS_P0_b; + }; + + union + { + __IM uint32_t IFOUTMULTICASTPKTS_P0; /*!< (@ 0x000008A4) Port 0 MAC Transmitted Multicast Frame Count + * Register (n = 0 to 3) */ + + struct + { + __IM uint32_t TXMCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Multicast + * Frame Valid Transmitted. */ + } IFOUTMULTICASTPKTS_P0_b; + }; + + union + { + __IM uint32_t IFOUTBROADCASTPKTS_P0; /*!< (@ 0x000008A8) Port 0 MAC Transmitted Broadcast Frame Count + * Register (n = 0 to 3) */ + + struct + { + __IM uint32_t TXBCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Broadcast + * Frame Valid Transmitted. */ + } IFOUTBROADCASTPKTS_P0_b; + }; + + union + { + __IM uint32_t ETHERSTATSDROPEVENTS_P0; /*!< (@ 0x000008AC) Port 0 MAC Dropped Frame Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t DROPCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC RX FIFO + * Full at frame start. */ + } ETHERSTATSDROPEVENTS_P0_b; + }; + + union + { + __IM uint32_t ETHERSTATSOCTETS_P0; /*!< (@ 0x000008B0) Port 0 MAC All Frame Octets Register (n = 0 to + * 3) */ + + struct + { + __IM uint32_t ALLOCTETS : 32; /*!< [31..0] ALLOCTETS */ + } ETHERSTATSOCTETS_P0_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS_P0; /*!< (@ 0x000008B4) Port 0 MAC All Frame Count Register (n = 0 to + * 3) */ + + struct + { + __IM uint32_t ALLCOUNT : 32; /*!< [31..0] ALLCOUNT */ + } ETHERSTATSPKTS_P0_b; + }; + + union + { + __IM uint32_t ETHERSTATSUNDERSIZEPKTS_P0; /*!< (@ 0x000008B8) Port 0 MAC Too Short Frame Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t TOOSHRTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC too Short, + * Good CRC. */ + } ETHERSTATSUNDERSIZEPKTS_P0_b; + }; + + union + { + __IM uint32_t ETHERSTATSOVERSIZEPKTS_P0; /*!< (@ 0x000008BC) Port 0 MAC Too Long Frame Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t TOOLONGCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC too Long, + * Good CRC. */ + } ETHERSTATSOVERSIZEPKTS_P0_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS64OCTETS_P0; /*!< (@ 0x000008C0) Port 0 MAC 64 Octets Frame Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT64 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 64 bytes). */ + } ETHERSTATSPKTS64OCTETS_P0_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS65TO127OCTETS_P0; /*!< (@ 0x000008C4) Port 0 MAC 65 to 127 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT65T127 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 65 to 127 bytes). */ + } ETHERSTATSPKTS65TO127OCTETS_P0_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS128TO255OCTETS_P0; /*!< (@ 0x000008C8) Port 0 MAC 128 to 255 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT128T255 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 128 to 255 bytes). */ + } ETHERSTATSPKTS128TO255OCTETS_P0_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS256TO511OCTETS_P0; /*!< (@ 0x000008CC) Port 0 MAC 256 to 511 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT256T511 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 256 to 511 bytes). */ + } ETHERSTATSPKTS256TO511OCTETS_P0_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS512TO1023OCTETS_P0; /*!< (@ 0x000008D0) Port 0 MAC 512 to 1023 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT512T1023 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 512 to 1023 bytes). */ + } ETHERSTATSPKTS512TO1023OCTETS_P0_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS1024TO1518OCTETS_P0; /*!< (@ 0x000008D4) Port 0 MAC 1024 to 1518 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT1024T1518 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 1024 to 1518 bytes). */ + } ETHERSTATSPKTS1024TO1518OCTETS_P0_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS1519TOXOCTETS_P0; /*!< (@ 0x000008D8) Port 0 MAC Over 1519 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT1519TX : 32; /*!< [31..0] PORT n, this field indicates the number of MAC all Frames, + * Good and Bad (Packet Size: over 1519 bytes). */ + } ETHERSTATSPKTS1519TOXOCTETS_P0_b; + }; + + union + { + __IM uint32_t ETHERSTATSJABBERS_P0; /*!< (@ 0x000008DC) Port 0 MAC Jabbers Frame Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t JABBERCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC too Long, + * Bad CRC. */ + } ETHERSTATSJABBERS_P0_b; + }; + + union + { + __IM uint32_t ETHERSTATSFRAGMENTS_P0; /*!< (@ 0x000008E0) Port 0 MAC Fragment Frame Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t FRAGCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC too Short, + * Bad CRC. */ + } ETHERSTATSFRAGMENTS_P0_b; + }; + __IM uint32_t RESERVED28; + + union + { + __IM uint32_t VLANRECEIVEDOK_P0; /*!< (@ 0x000008E8) Port 0 MAC Received VLAN Tagged Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXVLANTAGCNT : 32; /*!< [31..0] PORT n, this field indicates the number of Good Frames + * with VLAN Tag Received. */ + } VLANRECEIVEDOK_P0_b; + }; + __IM uint32_t RESERVED29[2]; + + union + { + __IM uint32_t VLANTRANSMITTEDOK_P0; /*!< (@ 0x000008F4) Port 0 MAC Transmitted VLAN Tagged Frame Count + * Register (n = 0 to 3) */ + + struct + { + __IM uint32_t TXVLANTAGCNT : 32; /*!< [31..0] PORT n, this field indicates the number of Good Frames + * with VLAN Tag Transmitted. */ + } VLANTRANSMITTEDOK_P0_b; + }; + + union + { + __IM uint32_t FRAMESRETRANSMITTED_P0; /*!< (@ 0x000008F8) Port 0 MAC Retransmitted Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RETXCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of Transmitted + * Frames that experienced a collision and were retransmitted. */ + } FRAMESRETRANSMITTED_P0_b; + }; + __IM uint32_t RESERVED30; + + union + { + __IM uint32_t STATS_HIWORD_P0; /*!< (@ 0x00000900) Port 0 MAC Statistics Counter High Word Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t STATS_HIWORD : 32; /*!< [31..0] The latched upper 32-bit of the 64 bits MAC Statistics + * Counter Last Read */ + } STATS_HIWORD_P0_b; + }; + + union + { + __IOM uint32_t STATS_CTRL_P0; /*!< (@ 0x00000904) Port 0 MAC Statistics Control Register (n = 0 + * to 3) */ + + struct + { + __IOM uint32_t CLRALL : 1; /*!< [0..0] Self Clearing Counter Initialize Command */ + __IM uint32_t CLRBUSY : 1; /*!< [1..1] Clear in Progress Indication */ + uint32_t : 30; + } STATS_CTRL_P0_b; + }; + + union + { + __IOM uint32_t STATS_CLEAR_VALUELO_P0; /*!< (@ 0x00000908) Port 0 MAC Statistics Clear Value Lower Register + * (n = 0 to 3) */ + + struct + { + __IOM uint32_t STATS_CLEAR_VALUELO : 32; /*!< [31..0] PORT n, lower 32-bit of 64 bits value loaded into all + * counters when clearing all counters with STATS_CTRL_Pn.CLRALL + * command for test purposes. These bits should be set to + * 0 normally. */ + } STATS_CLEAR_VALUELO_P0_b; + }; + + union + { + __IOM uint32_t STATS_CLEAR_VALUEHI_P0; /*!< (@ 0x0000090C) Port 0 MAC Statistics Clear Value Higher Register + * (n = 0 to 3) */ + + struct + { + __IOM uint32_t STATS_CLEAR_VALUEHI : 32; /*!< [31..0] PORT n, upper 32-bit of 64 bits value loaded into all + * counters when clearing all counters with STATS_CTRL_Pn.CLRALL + * command for test purposes. These bits should be set to + * 0 normally. */ + } STATS_CLEAR_VALUEHI_P0_b; + }; + + union + { + __IM uint32_t ADEFERRED_P0; /*!< (@ 0x00000910) Port 0 MAC Deferred Count Register (n = 0 to + * 3) */ + + struct + { + __IM uint32_t DEFERCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of Frame Transmitted + * without collision but was deferred at begin. */ + } ADEFERRED_P0_b; + }; + + union + { + __IM uint32_t AMULTIPLECOLLISIONS_P0; /*!< (@ 0x00000914) Port 0 MAC Multiple Collision Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t COUNTAFTMLTCOLL : 32; /*!< [31..0] PORT n, this field indicates the number of Good Frame + * Transmit after multiple collisions. */ + } AMULTIPLECOLLISIONS_P0_b; + }; + + union + { + __IM uint32_t ASINGLECOLLISIONS_P0; /*!< (@ 0x00000918) Port 0 MAC Single Collision Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t COUNTAFTSNGLCOLL : 32; /*!< [31..0] PORT n, this field indicates the number of Good Frame + * Transmit after single collision. */ + } ASINGLECOLLISIONS_P0_b; + }; + + union + { + __IM uint32_t ALATECOLLISIONS_P0; /*!< (@ 0x0000091C) Port 0 MAC Late Collision Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t LATECOLLCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of too Late + * Collision. Frame was aborted and not retransmitted. */ + } ALATECOLLISIONS_P0_b; + }; + + union + { + __IM uint32_t AEXCESSIVECOLLISIONS_P0; /*!< (@ 0x00000920) Port 0 MAC Excessive Collision Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t EXCCOLLCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of Frames Discarded + * due to 16 consecutive collisions. */ + } AEXCESSIVECOLLISIONS_P0_b; + }; + + union + { + __IM uint32_t ACARRIERSENSEERRORS_P0; /*!< (@ 0x00000924) Port 0 MAC Carrier Sense Error Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t CSERRCOUNT : 32; /*!< [31..0] PORT n, increments during Transmission without Collisions + * the PHY Carrier Sense Signal (RX_CRS) dropped or never + * asserted. */ + } ACARRIERSENSEERRORS_P0_b; + }; + __IM uint32_t RESERVED31[182]; + + union + { + __IM uint32_t REV_P1; /*!< (@ 0x00000C00) Port 1 MAC Core Revision (n = 0 to 3) */ + + struct + { + __IM uint32_t REV : 32; /*!< [31..0] MAC Core Revision */ + } REV_P1_b; + }; + __IM uint32_t RESERVED32; + + union + { + __IOM uint32_t COMMAND_CONFIG_P1; /*!< (@ 0x00000C08) Port 1 Command Configuration Register (n = 0 + * to 3) */ + + struct + { + __IOM uint32_t TX_ENA : 1; /*!< [0..0] Enable/Disable MAC Transmit Path */ + __IOM uint32_t RX_ENA : 1; /*!< [1..1] Enable/Disable MAC Receive Path */ + __IOM uint32_t TDMA_PREBUF_DIS : 1; /*!< [2..2] When set to 1, the MAC does not request a new frame from + * the IMC until the current frame is completed. This can + * cause the IPG between frames to be more than the value + * in TX_IPG_LENGTH. */ + __IOM uint32_t ETH_SPEED : 1; /*!< [3..3] Operation Mode Definition */ + __IM uint32_t PROMIS_EN : 1; /*!< [4..4] Enable/Disable MAC Promiscuous Operation */ + __IM uint32_t PAD_EN : 1; /*!< [5..5] Enable/Disable Frame Padding Remove on Receive */ + uint32_t : 1; + __IM uint32_t PAUSE_FWD : 1; /*!< [7..7] Terminate/Forward Pause Frames */ + __IOM uint32_t PAUSE_IGNORE : 1; /*!< [8..8] Ignore Pause Frame Quanta */ + __IM uint32_t TX_ADDR_INS : 1; /*!< [9..9] Non writable bit, fixed to 0 always. */ + __IOM uint32_t HD_ENA : 1; /*!< [10..10] Enable auto full/half-duplex operation (set to 1) or + * full-duplex only (set to 0). */ + __IOM uint32_t TX_CRC_APPEND : 1; /*!< [11..11] Enable CRC Append on Transmit */ + uint32_t : 1; + __IOM uint32_t SW_RESET : 1; /*!< [13..13] Self Clearing Reset Command Bit */ + uint32_t : 9; + __IOM uint32_t CNTL_FRM_ENA : 1; /*!< [23..23] MAC Control Frame Enable */ + __IOM uint32_t NO_LGTH_CHK : 1; /*!< [24..24] Payload Length Check Disable */ + __IOM uint32_t ENA_10 : 1; /*!< [25..25] This bit has no effect except PHYSPEED bit of STATUS_Pn + * register. */ + __IOM uint32_t EFPI_SELECT : 1; /*!< [26..26] EFPI_SELECT */ + __IOM uint32_t TX_TRUNCATE : 1; /*!< [27..27] TX_TRUNCATE */ + uint32_t : 2; + __IOM uint32_t TIMER_SEL : 1; /*!< [30..30] Selects the default timer to use for timestamping operations + * on transmit and on receive. The value is used when not + * overridden by the PTP auto-response function, pattern matchers + * or force forwarding information in a management tag. */ + uint32_t : 1; + } COMMAND_CONFIG_P1_b; + }; + + union + { + __IOM uint32_t MAC_ADDR_0_P1; /*!< (@ 0x00000C0C) Port 1 MAC Address Register 0 (n = 0 to 2) */ + + struct + { + __IOM uint32_t MAC_ADDR : 32; /*!< [31..0] The first 4 bytes of the MAC address of the port. First + * byte is bits [7:0]. The MAC address is used on locally + * generated frames such as pause frames, peer-delay response. */ + } MAC_ADDR_0_P1_b; + }; + + union + { + __IOM uint32_t MAC_ADDR_1_P1; /*!< (@ 0x00000C10) Port 1 MAC Address Register 1 (n = 0 to 2) */ + + struct + { + __IOM uint32_t MAC_ADDR : 16; /*!< [15..0] The last 2 bytes of the MAC address of the port. Bits + * [7:0] is the 5th byte and bits [15:8] is the 6th byte. */ + uint32_t : 16; + } MAC_ADDR_1_P1_b; + }; + + union + { + __IOM uint32_t FRM_LENGTH_P1; /*!< (@ 0x00000C14) Port 1 Maximum Frame Length Register (n = 0 to + * 3) */ + + struct + { + __IOM uint32_t FRM_LENGTH : 14; /*!< [13..0] Maximum Frame Length */ + uint32_t : 18; + } FRM_LENGTH_P1_b; + }; + + union + { + __IM uint32_t PAUSE_QUANT_P1; /*!< (@ 0x00000C18) Port 1 MAC Pause Quanta (n = 0 to 3) */ + + struct + { + __IM uint32_t PAUSE_QUANT : 16; /*!< [15..0] Pause Quanta */ + uint32_t : 16; + } PAUSE_QUANT_P1_b; + }; + + union + { + __IOM uint32_t MAC_LINK_QTRIG_P1; /*!< (@ 0x00000C1C) Port 1 Trigger Event Configuration Register (n + * = 0 to 2) */ + + struct + { + __IOM uint32_t PORT_MASK : 4; /*!< [3..0] Per-port Bit Mask */ + uint32_t : 12; + __IOM uint32_t QUEUE_MASK : 8; /*!< [23..16] 1-bit per queue indicating from which queues a frame + * is transmitted from the ports indicated by PORT_MASK. A + * single frame is transmitted per indicated port in PORT_MASK + * among the queues indicated by QUEUE_MASK. */ + uint32_t : 4; + __IOM uint32_t TRIGGERED : 1; /*!< [28..28] When MODE is set to 1, TRIGGERED indicates whether + * a frame was transmitted. When MODE is set to 0, TRIGGERED + * is always 0. This flag clears when the register is written. */ + __IOM uint32_t DLR_MODE : 1; /*!< [29..29] When set to 0, the DLR state machine is ignored. When + * set to 1, the Link Queue Trigger occurs only if the DLR + * state machine is in the NORMAL or FAULT state. */ + __IOM uint32_t MODE : 1; /*!< [30..30] When set to 0, only a single Link_Status frame is generated. + * This is to prevent sending multiple frames due to link + * flapping. */ + __IOM uint32_t ENABLE : 1; /*!< [31..31] Write to 1 to enable the Link Queue Trigger feature. + * When the link status (phy_link) transitions from 1 -> + * 0, a trigger event is generated to the memory controller + * for the ports and queues indicated in PORT_MASK and QUEUE_MASK. */ + } MAC_LINK_QTRIG_P1_b; + }; + __IM uint32_t RESERVED33[4]; + + union + { + __IOM uint32_t PTPCLOCKIDENTITY1_P1; /*!< (@ 0x00000C30) Port 1 PTP Clock Identity 1 Register (n = 0 to + * 2) */ + + struct + { + __IOM uint32_t CLK_IDENTITY0 : 8; /*!< [7..0] 20, portIdentity.ClockIdentity[0] */ + __IOM uint32_t CLK_IDENTITY1 : 8; /*!< [15..8] 21, portIdentity.ClockIdentity[1] */ + __IOM uint32_t CLK_IDENTITY2 : 8; /*!< [23..16] 22, portIdentity.ClockIdentity[2] */ + __IOM uint32_t CLK_IDENTITY3 : 8; /*!< [31..24] 23, portIdentity.ClockIdentity[3] */ + } PTPCLOCKIDENTITY1_P1_b; + }; + + union + { + __IOM uint32_t PTPCLOCKIDENTITY2_P1; /*!< (@ 0x00000C34) Port 1 PTP Clock Identity 2 Register (n = 0 to + * 2) */ + + struct + { + __IOM uint32_t CLK_IDENTITY4 : 8; /*!< [7..0] 24, portIdentity.ClockIdentity[4] */ + __IOM uint32_t CLK_IDENTITY5 : 8; /*!< [15..8] 25, portIdentity.ClockIdentity[5] */ + __IOM uint32_t CLK_IDENTITY6 : 8; /*!< [23..16] 26, portIdentity.ClockIdentity[6] */ + __IOM uint32_t CLK_IDENTITY7 : 8; /*!< [31..24] 27, portIdentity.ClockIdentity[7] */ + } PTPCLOCKIDENTITY2_P1_b; + }; + + union + { + __IOM uint32_t PTPAUTORESPONSE_P1; /*!< (@ 0x00000C38) Port 1 PTP Auto Response Register (n = 0 to 2) */ + + struct + { + __IOM uint32_t ARSP_EN : 1; /*!< [0..0] Auto Response Enable */ + __IOM uint32_t D_TIMER : 1; /*!< [1..1] Default timer to use for auto-response generation */ + uint32_t : 14; + __IOM uint32_t PORTNUM1 : 8; /*!< [23..16] 29, portIdentity.PortNumber[1] (lsb) */ + __IOM uint32_t PORTNUM0 : 8; /*!< [31..24] 28, portIdentity.PortNumber[0] (msb) */ + } PTPAUTORESPONSE_P1_b; + }; + __IM uint32_t RESERVED34; + + union + { + __IOM uint32_t STATUS_P1; /*!< (@ 0x00000C40) Port 1 Status Register */ + + struct + { + __IM uint32_t PHYSPEED : 2; /*!< [1..0] Currently Active PHY Interface Speed */ + __IM uint32_t PHYLINK : 1; /*!< [2..2] Link status from PHY interface */ + __IM uint32_t PHYDUPLEX : 1; /*!< [3..3] Duplex status from PHY interface */ + __IOM uint32_t TX_UNDFLW : 1; /*!< [4..4] Indicates that the transmit MAC underflow. This shall + * never occur during normal operation. */ + __IOM uint32_t LK_DST_ERR : 1; /*!< [5..5] Indicates that the L2 destination lookup process failed + * to complete in time before the next frame was received + * at the port. This should never occur under normal operation. + * The cause could be from IPG violations in the received + * frames. */ + __IM uint32_t BR_VERIF_ST : 3; /*!< [8..6] Indicates the current status of the verification according + * to clause 30.14.1.2 of the 802.3br specification */ + uint32_t : 23; + } STATUS_P1_b; + }; + + union + { + __IOM uint32_t TX_IPG_LENGTH_P1; /*!< (@ 0x00000C44) Port 1 Transmit IPG Length Register (n = 0 to + * 3) */ + + struct + { + __IOM uint32_t TX_IPG_LENGTH : 5; /*!< [4..0] Define transmit interpacket gap in octets. Allowed values + * are in the range of 8 to 31. */ + uint32_t : 11; + __IOM uint32_t MINRTC3GAP : 5; /*!< [20..16] MINRTC3GAP */ + uint32_t : 11; + } TX_IPG_LENGTH_P1_b; + }; + + union + { + __IOM uint32_t EEE_CTL_STAT_P1; /*!< (@ 0x00000C48) Port 1 MAC EEE Functions Control and Status (n + * = 0 to 2) */ + + struct + { + __IOM uint32_t EEE_AUTO : 1; /*!< [0..0] EEE Automatic Mode of Operation */ + __IOM uint32_t LPI_REQ : 1; /*!< [1..1] Request LPI Transmission when MAC Becomes Idle */ + __IOM uint32_t LPI_TXHOLD : 1; /*!< [2..2] MAC Transmission Hold */ + uint32_t : 5; + __IM uint32_t ST_LPI_REQ : 1; /*!< [8..8] Status (real time) of Internal LPI_REQ to the MAC */ + __IM uint32_t ST_LPI_TXHOLD : 1; /*!< [9..9] Status (real time) of Internal LPI_TXHOLD to the MAC */ + __IM uint32_t ST_TXBUSY : 1; /*!< [10..10] Status (real time) if the MAC is currently transmitting. */ + __IM uint32_t ST_TXAVAIL : 1; /*!< [11..11] Status (real time) if the MAC transmit FIFO has data + * available for transmission. */ + __IM uint32_t ST_LPI_IND : 1; /*!< [12..12] Status (real time) of Received LPI */ + uint32_t : 3; + __IM uint32_t STLH_LPI_REQ : 1; /*!< [16..16] Status (latched high) of Internal LPI_REQ to the MAC */ + __IM uint32_t STLH_LPI_TXHOLD : 1; /*!< [17..17] Status (latched high) of Internal LPI_TXHOLD to the + * MAC */ + __IM uint32_t STLH_TXBUSY : 1; /*!< [18..18] Status (latched high) if the MAC is/was Transmitting */ + uint32_t : 1; + __IM uint32_t STLH_LPI_IND : 1; /*!< [20..20] Status (latched high) of Received LPI (ST_LPI_IND) */ + uint32_t : 11; + } EEE_CTL_STAT_P1_b; + }; + + union + { + __IOM uint32_t EEE_IDLE_TIME_P1; /*!< (@ 0x00000C4C) Port 1 EEE Idle Time Register (n = 0 to 2) */ + + struct + { + __IOM uint32_t EEE_IDLE_TIME : 32; /*!< [31..0] Time (-1) the transmitter must be idle before transmission + * of LPI begins. A 32-bit value in steps of 32 switch operating + * clock cycles. A value of 0 disables the timer. The value + * must be set to 1 less count. */ + } EEE_IDLE_TIME_P1_b; + }; + + union + { + __IOM uint32_t EEE_TWSYS_TIME_P1; /*!< (@ 0x00000C50) Port 1 EEE Wake Up Time Register (n = 0 to 2) */ + + struct + { + __IOM uint32_t EEE_WKUP_TIME : 32; /*!< [31..0] Time (-1) after PHY wakeup until the MAC is allowed + * to begin transmitting the first frame again. A 32-bit value + * in steps of switch operating clock cycles. A value of 0 + * disables the timer. The value must be set to 1 less count. */ + } EEE_TWSYS_TIME_P1_b; + }; + + union + { + __IOM uint32_t IDLE_SLOPE_P1; /*!< (@ 0x00000C54) Port 1 MAC Traffic Shaper Bandwidth Control */ + + struct + { + __IOM uint32_t IDLE_SLOPE : 11; /*!< [10..0] Traffic Shaper Bandwidth Control */ + uint32_t : 21; + } IDLE_SLOPE_P1_b; + }; + + union + { + __IOM uint32_t CT_DELAY_P1; /*!< (@ 0x00000C58) Port 1 Cut-Through Delay Indication Register */ + + struct + { + __IOM uint32_t CT_DELAY : 9; /*!< [8..0] Delay Value in 400 ns / 40 ns / 8 ns increments (frequency + * of the MII PHY interface) */ + uint32_t : 23; + } CT_DELAY_P1_b; + }; + + union + { + __IOM uint32_t BR_CONTROL_P1; /*!< (@ 0x00000C5C) Port 1 802.3br Frame Configuration Register */ + + struct + { + __IOM uint32_t PREEMPT_ENA : 1; /*!< [0..0] When set to 1, enables 802.3br Frame Preemption. */ + __IOM uint32_t VERIFY_DIS : 1; /*!< [1..1] When set to 1, disables the verify process required for + * preemption operation. */ + __IOM uint32_t RESPONSE_DIS : 1; /*!< [2..2] When set to 1 prevents the MAC from responding to "verify" + * frames. */ + uint32_t : 1; + __IOM uint32_t ADDFRAGSIZE : 2; /*!< [5..4] Minimum fragment size in increments of 64 bytes. */ + uint32_t : 2; + __IOM uint32_t TX_VERIFY_TIME : 7; /*!< [14..8] Preemption verification timeout in milliseconds. */ + uint32_t : 1; + __IOM uint32_t RX_STRICT_PRE : 1; /*!< [16..16] When set to 1, the preamble is checked so all bytes + * except the SFD are 0x55. When set to 0, only the last 2 + * bytes of the preamble are checked (SFD/SMD and FRAG_COUNT). + * It is recommended to set this bit to 1 to comply with the + * 802.3br specification. This bit must be set to 0 if only + * non-802.3br traffic is expected (for example, normal Ethernet + * traffic) and if custom preamble is used. */ + __IOM uint32_t RX_BR_SMD_DIS : 1; /*!< [17..17] When set to 1, the receiver does not decode the 802.3br + * SMDs and assumes all frames are express frames. This bit + * must be set to 0 for correct operation with 802.3br, and + * can be set to 1 when 802.3br is not enabled to avoid false + * detection of SMDs. */ + __IOM uint32_t RX_STRICT_BR_CTL : 1; /*!< [18..18] When set to 1, strict checking of VERIFY and RESPONSE + * frames is enabled. When set to 1, the frame contents and + * frame length checks are also performed on these frames. + * The mCRC is always checked regardless of the value of this + * register. This bit must be set to 0 to be compliant with + * the functionality described in IEEE 802.3br. */ + __IOM uint32_t TX_MCRC_INV : 1; /*!< [19..19] When set to 1, the 32-bit XOR mask used to calculate + * the mCRC for transmitted frames is inverted. This bit must + * always be written to 0 and only used for debugging. */ + __IOM uint32_t RX_MCRC_INV : 1; /*!< [20..20] When set to 1, the 32-bit XOR mask used to calculate + * the mCRC for received frames is inverted. This bit must + * always be written to 0 and only used for debugging. */ + uint32_t : 11; + } BR_CONTROL_P1_b; + }; + __IM uint32_t RESERVED35[2]; + + union + { + __IM uint32_t AFRAMESTRANSMITTEDOK_P1; /*!< (@ 0x00000C68) Port 1 MAC Transmitted Valid Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t TXVALIDCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Transmitted, including pause. */ + } AFRAMESTRANSMITTEDOK_P1_b; + }; + + union + { + __IM uint32_t AFRAMESRECEIVEDOK_P1; /*!< (@ 0x00000C6C) Port 1 MAC Received Valid Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXVALIDCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Received, including pause. */ + } AFRAMESRECEIVEDOK_P1_b; + }; + + union + { + __IM uint32_t AFRAMECHECKSEQUENCEERRORS_P1; /*!< (@ 0x00000C70) Port 1 MAC FCS Error Frame Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t FCSERRCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Length but CRC error. */ + } AFRAMECHECKSEQUENCEERRORS_P1_b; + }; + + union + { + __IM uint32_t AALIGNMENTERRORS_P1; /*!< (@ 0x00000C74) Port 1 MAC Alignment Error Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t ALGNERRCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Odd Number + * of Nibbles (MII) Received. */ + } AALIGNMENTERRORS_P1_b; + }; + + union + { + __IM uint32_t AOCTETSTRANSMITTEDOK_P1; /*!< (@ 0x00000C78) Port 1 MAC Transmitted Valid Frame Octets Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t TXVALIDOCTETS : 32; /*!< [31..0] PORT n, this field indicates the octets (the payload + * only) of MAC Valid Transmitted. */ + } AOCTETSTRANSMITTEDOK_P1_b; + }; + + union + { + __IM uint32_t AOCTETSRECEIVEDOK_P1; /*!< (@ 0x00000C7C) Port 1 MAC Received Valid Frame Octets Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXVALIDOCTETS : 32; /*!< [31..0] PORT n, this field indicates the octets (the payload + * only) of MAC Valid Received. */ + } AOCTETSRECEIVEDOK_P1_b; + }; + + union + { + __IM uint32_t ATXPAUSEMACCTRLFRAMES_P1; /*!< (@ 0x00000C80) Port 1 MAC Transmitted Pause Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t TXPAUSECOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Pause Transmitted. */ + } ATXPAUSEMACCTRLFRAMES_P1_b; + }; + + union + { + __IM uint32_t ARXPAUSEMACCTRLFRAMES_P1; /*!< (@ 0x00000C84) Port 1 MAC Received Pause Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXPAUSECOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Pause Received. */ + } ARXPAUSEMACCTRLFRAMES_P1_b; + }; + + union + { + __IM uint32_t IFINERRORS_P1; /*!< (@ 0x00000C88) Port 1 MAC Input Error Count Register (n = 0 + * to 3) */ + + struct + { + __IM uint32_t INERRCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Any Error + * During Reception such as CRC, Length, PHY Error, RX FIFO + * Overflow. */ + } IFINERRORS_P1_b; + }; + + union + { + __IM uint32_t IFOUTERRORS_P1; /*!< (@ 0x00000C8C) Port 1 MAC Output Error Count Register (n = 0 + * to 3) */ + + struct + { + __IM uint32_t OUTERRCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Frame + * Transmitted with PHY error. */ + } IFOUTERRORS_P1_b; + }; + + union + { + __IM uint32_t IFINUCASTPKTS_P1; /*!< (@ 0x00000C90) Port 1 MAC Received Unicast Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXUCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Unicast + * Frame Valid Received. */ + } IFINUCASTPKTS_P1_b; + }; + + union + { + __IM uint32_t IFINMULTICASTPKTS_P1; /*!< (@ 0x00000C94) Port 1 MAC Received Multicast Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXMCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Multicast + * Frame Valid Received. */ + } IFINMULTICASTPKTS_P1_b; + }; + + union + { + __IM uint32_t IFINBROADCASTPKTS_P1; /*!< (@ 0x00000C98) Port 1 MAC Received Broadcast Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXBCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Broadcast + * Frame Valid Received. */ + } IFINBROADCASTPKTS_P1_b; + }; + + union + { + __IM uint32_t IFOUTDISCARDS_P1; /*!< (@ 0x00000C9C) Port 1 MAC Discarded Outbound Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t DISCOBCOUNT : 32; /*!< [31..0] Not Applicable */ + } IFOUTDISCARDS_P1_b; + }; + + union + { + __IM uint32_t IFOUTUCASTPKTS_P1; /*!< (@ 0x00000CA0) Port 1 MAC Transmitted Unicast Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t TXUCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Unicast + * Frame Valid Transmitted. */ + } IFOUTUCASTPKTS_P1_b; + }; + + union + { + __IM uint32_t IFOUTMULTICASTPKTS_P1; /*!< (@ 0x00000CA4) Port 1 MAC Transmitted Multicast Frame Count + * Register (n = 0 to 3) */ + + struct + { + __IM uint32_t TXMCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Multicast + * Frame Valid Transmitted. */ + } IFOUTMULTICASTPKTS_P1_b; + }; + + union + { + __IM uint32_t IFOUTBROADCASTPKTS_P1; /*!< (@ 0x00000CA8) Port 1 MAC Transmitted Broadcast Frame Count + * Register (n = 0 to 3) */ + + struct + { + __IM uint32_t TXBCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Broadcast + * Frame Valid Transmitted. */ + } IFOUTBROADCASTPKTS_P1_b; + }; + + union + { + __IM uint32_t ETHERSTATSDROPEVENTS_P1; /*!< (@ 0x00000CAC) Port 1 MAC Dropped Frame Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t DROPCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC RX FIFO + * Full at frame start. */ + } ETHERSTATSDROPEVENTS_P1_b; + }; + + union + { + __IM uint32_t ETHERSTATSOCTETS_P1; /*!< (@ 0x00000CB0) Port 1 MAC All Frame Octets Register (n = 0 to + * 3) */ + + struct + { + __IM uint32_t ALLOCTETS : 32; /*!< [31..0] ALLOCTETS */ + } ETHERSTATSOCTETS_P1_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS_P1; /*!< (@ 0x00000CB4) Port 1 MAC All Frame Count Register (n = 0 to + * 3) */ + + struct + { + __IM uint32_t ALLCOUNT : 32; /*!< [31..0] ALLCOUNT */ + } ETHERSTATSPKTS_P1_b; + }; + + union + { + __IM uint32_t ETHERSTATSUNDERSIZEPKTS_P1; /*!< (@ 0x00000CB8) Port 1 MAC Too Short Frame Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t TOOSHRTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC too Short, + * Good CRC. */ + } ETHERSTATSUNDERSIZEPKTS_P1_b; + }; + + union + { + __IM uint32_t ETHERSTATSOVERSIZEPKTS_P1; /*!< (@ 0x00000CBC) Port 1 MAC Too Long Frame Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t TOOLONGCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC too Long, + * Good CRC. */ + } ETHERSTATSOVERSIZEPKTS_P1_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS64OCTETS_P1; /*!< (@ 0x00000CC0) Port 1 MAC 64 Octets Frame Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT64 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 64 bytes). */ + } ETHERSTATSPKTS64OCTETS_P1_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS65TO127OCTETS_P1; /*!< (@ 0x00000CC4) Port 1 MAC 65 to 127 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT65T127 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 65 to 127 bytes). */ + } ETHERSTATSPKTS65TO127OCTETS_P1_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS128TO255OCTETS_P1; /*!< (@ 0x00000CC8) Port 1 MAC 128 to 255 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT128T255 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 128 to 255 bytes). */ + } ETHERSTATSPKTS128TO255OCTETS_P1_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS256TO511OCTETS_P1; /*!< (@ 0x00000CCC) Port 1 MAC 256 to 511 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT256T511 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 256 to 511 bytes). */ + } ETHERSTATSPKTS256TO511OCTETS_P1_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS512TO1023OCTETS_P1; /*!< (@ 0x00000CD0) Port 1 MAC 512 to 1023 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT512T1023 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 512 to 1023 bytes). */ + } ETHERSTATSPKTS512TO1023OCTETS_P1_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS1024TO1518OCTETS_P1; /*!< (@ 0x00000CD4) Port 1 MAC 1024 to 1518 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT1024T1518 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 1024 to 1518 bytes). */ + } ETHERSTATSPKTS1024TO1518OCTETS_P1_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS1519TOXOCTETS_P1; /*!< (@ 0x00000CD8) Port 1 MAC Over 1519 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT1519TX : 32; /*!< [31..0] PORT n, this field indicates the number of MAC all Frames, + * Good and Bad (Packet Size: over 1519 bytes). */ + } ETHERSTATSPKTS1519TOXOCTETS_P1_b; + }; + + union + { + __IM uint32_t ETHERSTATSJABBERS_P1; /*!< (@ 0x00000CDC) Port 1 MAC Jabbers Frame Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t JABBERCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC too Long, + * Bad CRC. */ + } ETHERSTATSJABBERS_P1_b; + }; + + union + { + __IM uint32_t ETHERSTATSFRAGMENTS_P1; /*!< (@ 0x00000CE0) Port 1 MAC Fragment Frame Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t FRAGCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC too Short, + * Bad CRC. */ + } ETHERSTATSFRAGMENTS_P1_b; + }; + __IM uint32_t RESERVED36; + + union + { + __IM uint32_t VLANRECEIVEDOK_P1; /*!< (@ 0x00000CE8) Port 1 MAC Received VLAN Tagged Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXVLANTAGCNT : 32; /*!< [31..0] PORT n, this field indicates the number of Good Frames + * with VLAN Tag Received. */ + } VLANRECEIVEDOK_P1_b; + }; + __IM uint32_t RESERVED37[2]; + + union + { + __IM uint32_t VLANTRANSMITTEDOK_P1; /*!< (@ 0x00000CF4) Port 1 MAC Transmitted VLAN Tagged Frame Count + * Register (n = 0 to 3) */ + + struct + { + __IM uint32_t TXVLANTAGCNT : 32; /*!< [31..0] PORT n, this field indicates the number of Good Frames + * with VLAN Tag Transmitted. */ + } VLANTRANSMITTEDOK_P1_b; + }; + + union + { + __IM uint32_t FRAMESRETRANSMITTED_P1; /*!< (@ 0x00000CF8) Port 1 MAC Retransmitted Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RETXCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of Transmitted + * Frames that experienced a collision and were retransmitted. */ + } FRAMESRETRANSMITTED_P1_b; + }; + __IM uint32_t RESERVED38; + + union + { + __IM uint32_t STATS_HIWORD_P1; /*!< (@ 0x00000D00) Port 1 MAC Statistics Counter High Word Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t STATS_HIWORD : 32; /*!< [31..0] The latched upper 32-bit of the 64 bits MAC Statistics + * Counter Last Read */ + } STATS_HIWORD_P1_b; + }; + + union + { + __IOM uint32_t STATS_CTRL_P1; /*!< (@ 0x00000D04) Port 1 MAC Statistics Control Register (n = 0 + * to 3) */ + + struct + { + __IOM uint32_t CLRALL : 1; /*!< [0..0] Self Clearing Counter Initialize Command */ + __IM uint32_t CLRBUSY : 1; /*!< [1..1] Clear in Progress Indication */ + uint32_t : 30; + } STATS_CTRL_P1_b; + }; + + union + { + __IOM uint32_t STATS_CLEAR_VALUELO_P1; /*!< (@ 0x00000D08) Port 1 MAC Statistics Clear Value Lower Register + * (n = 0 to 3) */ + + struct + { + __IOM uint32_t STATS_CLEAR_VALUELO : 32; /*!< [31..0] PORT n, lower 32-bit of 64 bits value loaded into all + * counters when clearing all counters with STATS_CTRL_Pn.CLRALL + * command for test purposes. These bits should be set to + * 0 normally. */ + } STATS_CLEAR_VALUELO_P1_b; + }; + + union + { + __IOM uint32_t STATS_CLEAR_VALUEHI_P1; /*!< (@ 0x00000D0C) Port 1 MAC Statistics Clear Value Higher Register + * (n = 0 to 3) */ + + struct + { + __IOM uint32_t STATS_CLEAR_VALUEHI : 32; /*!< [31..0] PORT n, upper 32-bit of 64 bits value loaded into all + * counters when clearing all counters with STATS_CTRL_Pn.CLRALL + * command for test purposes. These bits should be set to + * 0 normally. */ + } STATS_CLEAR_VALUEHI_P1_b; + }; + + union + { + __IM uint32_t ADEFERRED_P1; /*!< (@ 0x00000D10) Port 1 MAC Deferred Count Register (n = 0 to + * 3) */ + + struct + { + __IM uint32_t DEFERCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of Frame Transmitted + * without collision but was deferred at begin. */ + } ADEFERRED_P1_b; + }; + + union + { + __IM uint32_t AMULTIPLECOLLISIONS_P1; /*!< (@ 0x00000D14) Port 1 MAC Multiple Collision Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t COUNTAFTMLTCOLL : 32; /*!< [31..0] PORT n, this field indicates the number of Good Frame + * Transmit after multiple collisions. */ + } AMULTIPLECOLLISIONS_P1_b; + }; + + union + { + __IM uint32_t ASINGLECOLLISIONS_P1; /*!< (@ 0x00000D18) Port 1 MAC Single Collision Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t COUNTAFTSNGLCOLL : 32; /*!< [31..0] PORT n, this field indicates the number of Good Frame + * Transmit after single collision. */ + } ASINGLECOLLISIONS_P1_b; + }; + + union + { + __IM uint32_t ALATECOLLISIONS_P1; /*!< (@ 0x00000D1C) Port 1 MAC Late Collision Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t LATECOLLCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of too Late + * Collision. Frame was aborted and not retransmitted. */ + } ALATECOLLISIONS_P1_b; + }; + + union + { + __IM uint32_t AEXCESSIVECOLLISIONS_P1; /*!< (@ 0x00000D20) Port 1 MAC Excessive Collision Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t EXCCOLLCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of Frames Discarded + * due to 16 consecutive collisions. */ + } AEXCESSIVECOLLISIONS_P1_b; + }; + + union + { + __IM uint32_t ACARRIERSENSEERRORS_P1; /*!< (@ 0x00000D24) Port 1 MAC Carrier Sense Error Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t CSERRCOUNT : 32; /*!< [31..0] PORT n, increments during Transmission without Collisions + * the PHY Carrier Sense Signal (RX_CRS) dropped or never + * asserted. */ + } ACARRIERSENSEERRORS_P1_b; + }; + __IM uint32_t RESERVED39[182]; + + union + { + __IM uint32_t REV_P2; /*!< (@ 0x00001000) Port 2 MAC Core Revision (n = 0 to 3) */ + + struct + { + __IM uint32_t REV : 32; /*!< [31..0] MAC Core Revision */ + } REV_P2_b; + }; + __IM uint32_t RESERVED40; + + union + { + __IOM uint32_t COMMAND_CONFIG_P2; /*!< (@ 0x00001008) Port 2 Command Configuration Register (n = 0 + * to 3) */ + + struct + { + __IOM uint32_t TX_ENA : 1; /*!< [0..0] Enable/Disable MAC Transmit Path */ + __IOM uint32_t RX_ENA : 1; /*!< [1..1] Enable/Disable MAC Receive Path */ + __IOM uint32_t TDMA_PREBUF_DIS : 1; /*!< [2..2] When set to 1, the MAC does not request a new frame from + * the IMC until the current frame is completed. This can + * cause the IPG between frames to be more than the value + * in TX_IPG_LENGTH. */ + __IOM uint32_t ETH_SPEED : 1; /*!< [3..3] Operation Mode Definition */ + __IM uint32_t PROMIS_EN : 1; /*!< [4..4] Enable/Disable MAC Promiscuous Operation */ + __IM uint32_t PAD_EN : 1; /*!< [5..5] Enable/Disable Frame Padding Remove on Receive */ + uint32_t : 1; + __IM uint32_t PAUSE_FWD : 1; /*!< [7..7] Terminate/Forward Pause Frames */ + __IOM uint32_t PAUSE_IGNORE : 1; /*!< [8..8] Ignore Pause Frame Quanta */ + __IM uint32_t TX_ADDR_INS : 1; /*!< [9..9] Non writable bit, fixed to 0 always. */ + __IOM uint32_t HD_ENA : 1; /*!< [10..10] Enable auto full/half-duplex operation (set to 1) or + * full-duplex only (set to 0). */ + __IOM uint32_t TX_CRC_APPEND : 1; /*!< [11..11] Enable CRC Append on Transmit */ + uint32_t : 1; + __IOM uint32_t SW_RESET : 1; /*!< [13..13] Self Clearing Reset Command Bit */ + uint32_t : 9; + __IOM uint32_t CNTL_FRM_ENA : 1; /*!< [23..23] MAC Control Frame Enable */ + __IOM uint32_t NO_LGTH_CHK : 1; /*!< [24..24] Payload Length Check Disable */ + __IOM uint32_t ENA_10 : 1; /*!< [25..25] This bit has no effect except PHYSPEED bit of STATUS_Pn + * register. */ + __IOM uint32_t EFPI_SELECT : 1; /*!< [26..26] EFPI_SELECT */ + __IOM uint32_t TX_TRUNCATE : 1; /*!< [27..27] TX_TRUNCATE */ + uint32_t : 2; + __IOM uint32_t TIMER_SEL : 1; /*!< [30..30] Selects the default timer to use for timestamping operations + * on transmit and on receive. The value is used when not + * overridden by the PTP auto-response function, pattern matchers + * or force forwarding information in a management tag. */ + uint32_t : 1; + } COMMAND_CONFIG_P2_b; + }; + + union + { + __IOM uint32_t MAC_ADDR_0_P2; /*!< (@ 0x0000100C) Port 2 MAC Address Register 0 (n = 0 to 2) */ + + struct + { + __IOM uint32_t MAC_ADDR : 32; /*!< [31..0] The first 4 bytes of the MAC address of the port. First + * byte is bits [7:0]. The MAC address is used on locally + * generated frames such as pause frames, peer-delay response. */ + } MAC_ADDR_0_P2_b; + }; + + union + { + __IOM uint32_t MAC_ADDR_1_P2; /*!< (@ 0x00001010) Port 2 MAC Address Register 1 (n = 0 to 2) */ + + struct + { + __IOM uint32_t MAC_ADDR : 16; /*!< [15..0] The last 2 bytes of the MAC address of the port. Bits + * [7:0] is the 5th byte and bits [15:8] is the 6th byte. */ + uint32_t : 16; + } MAC_ADDR_1_P2_b; + }; + + union + { + __IOM uint32_t FRM_LENGTH_P2; /*!< (@ 0x00001014) Port 2 Maximum Frame Length Register (n = 0 to + * 3) */ + + struct + { + __IOM uint32_t FRM_LENGTH : 14; /*!< [13..0] Maximum Frame Length */ + uint32_t : 18; + } FRM_LENGTH_P2_b; + }; + + union + { + __IM uint32_t PAUSE_QUANT_P2; /*!< (@ 0x00001018) Port 2 MAC Pause Quanta (n = 0 to 3) */ + + struct + { + __IM uint32_t PAUSE_QUANT : 16; /*!< [15..0] Pause Quanta */ + uint32_t : 16; + } PAUSE_QUANT_P2_b; + }; + + union + { + __IOM uint32_t MAC_LINK_QTRIG_P2; /*!< (@ 0x0000101C) Port 2 Trigger Event Configuration Register (n + * = 0 to 2) */ + + struct + { + __IOM uint32_t PORT_MASK : 4; /*!< [3..0] Per-port Bit Mask */ + uint32_t : 12; + __IOM uint32_t QUEUE_MASK : 8; /*!< [23..16] 1-bit per queue indicating from which queues a frame + * is transmitted from the ports indicated by PORT_MASK. A + * single frame is transmitted per indicated port in PORT_MASK + * among the queues indicated by QUEUE_MASK. */ + uint32_t : 4; + __IOM uint32_t TRIGGERED : 1; /*!< [28..28] When MODE is set to 1, TRIGGERED indicates whether + * a frame was transmitted. When MODE is set to 0, TRIGGERED + * is always 0. This flag clears when the register is written. */ + __IOM uint32_t DLR_MODE : 1; /*!< [29..29] When set to 0, the DLR state machine is ignored. When + * set to 1, the Link Queue Trigger occurs only if the DLR + * state machine is in the NORMAL or FAULT state. */ + __IOM uint32_t MODE : 1; /*!< [30..30] When set to 0, only a single Link_Status frame is generated. + * This is to prevent sending multiple frames due to link + * flapping. */ + __IOM uint32_t ENABLE : 1; /*!< [31..31] Write to 1 to enable the Link Queue Trigger feature. + * When the link status (phy_link) transitions from 1 -> + * 0, a trigger event is generated to the memory controller + * for the ports and queues indicated in PORT_MASK and QUEUE_MASK. */ + } MAC_LINK_QTRIG_P2_b; + }; + __IM uint32_t RESERVED41[4]; + + union + { + __IOM uint32_t PTPCLOCKIDENTITY1_P2; /*!< (@ 0x00001030) Port 2 PTP Clock Identity 1 Register (n = 0 to + * 2) */ + + struct + { + __IOM uint32_t CLK_IDENTITY0 : 8; /*!< [7..0] 20, portIdentity.ClockIdentity[0] */ + __IOM uint32_t CLK_IDENTITY1 : 8; /*!< [15..8] 21, portIdentity.ClockIdentity[1] */ + __IOM uint32_t CLK_IDENTITY2 : 8; /*!< [23..16] 22, portIdentity.ClockIdentity[2] */ + __IOM uint32_t CLK_IDENTITY3 : 8; /*!< [31..24] 23, portIdentity.ClockIdentity[3] */ + } PTPCLOCKIDENTITY1_P2_b; + }; + + union + { + __IOM uint32_t PTPCLOCKIDENTITY2_P2; /*!< (@ 0x00001034) Port 2 PTP Clock Identity 2 Register (n = 0 to + * 2) */ + + struct + { + __IOM uint32_t CLK_IDENTITY4 : 8; /*!< [7..0] 24, portIdentity.ClockIdentity[4] */ + __IOM uint32_t CLK_IDENTITY5 : 8; /*!< [15..8] 25, portIdentity.ClockIdentity[5] */ + __IOM uint32_t CLK_IDENTITY6 : 8; /*!< [23..16] 26, portIdentity.ClockIdentity[6] */ + __IOM uint32_t CLK_IDENTITY7 : 8; /*!< [31..24] 27, portIdentity.ClockIdentity[7] */ + } PTPCLOCKIDENTITY2_P2_b; + }; + + union + { + __IOM uint32_t PTPAUTORESPONSE_P2; /*!< (@ 0x00001038) Port 2 PTP Auto Response Register (n = 0 to 2) */ + + struct + { + __IOM uint32_t ARSP_EN : 1; /*!< [0..0] Auto Response Enable */ + __IOM uint32_t D_TIMER : 1; /*!< [1..1] Default timer to use for auto-response generation */ + uint32_t : 14; + __IOM uint32_t PORTNUM1 : 8; /*!< [23..16] 29, portIdentity.PortNumber[1] (lsb) */ + __IOM uint32_t PORTNUM0 : 8; /*!< [31..24] 28, portIdentity.PortNumber[0] (msb) */ + } PTPAUTORESPONSE_P2_b; + }; + __IM uint32_t RESERVED42; + + union + { + __IOM uint32_t STATUS_P2; /*!< (@ 0x00001040) Port 2 Status Register */ + + struct + { + __IM uint32_t PHYSPEED : 2; /*!< [1..0] Currently Active PHY Interface Speed */ + __IM uint32_t PHYLINK : 1; /*!< [2..2] Link status from PHY interface */ + __IM uint32_t PHYDUPLEX : 1; /*!< [3..3] Duplex status from PHY interface */ + __IOM uint32_t TX_UNDFLW : 1; /*!< [4..4] Indicates that the transmit MAC underflow. This shall + * never occur during normal operation. */ + __IOM uint32_t LK_DST_ERR : 1; /*!< [5..5] Indicates that the L2 destination lookup process failed + * to complete in time before the next frame was received + * at the port. This should never occur under normal operation. + * The cause could be from IPG violations in the received + * frames. */ + __IM uint32_t BR_VERIF_ST : 3; /*!< [8..6] Indicates the current status of the verification according + * to clause 30.14.1.2 of the 802.3br specification */ + uint32_t : 23; + } STATUS_P2_b; + }; + + union + { + __IOM uint32_t TX_IPG_LENGTH_P2; /*!< (@ 0x00001044) Port 2 Transmit IPG Length Register (n = 0 to + * 3) */ + + struct + { + __IOM uint32_t TX_IPG_LENGTH : 5; /*!< [4..0] Define transmit interpacket gap in octets. Allowed values + * are in the range of 8 to 31. */ + uint32_t : 11; + __IOM uint32_t MINRTC3GAP : 5; /*!< [20..16] MINRTC3GAP */ + uint32_t : 11; + } TX_IPG_LENGTH_P2_b; + }; + + union + { + __IOM uint32_t EEE_CTL_STAT_P2; /*!< (@ 0x00001048) Port 2 MAC EEE Functions Control and Status (n + * = 0 to 2) */ + + struct + { + __IOM uint32_t EEE_AUTO : 1; /*!< [0..0] EEE Automatic Mode of Operation */ + __IOM uint32_t LPI_REQ : 1; /*!< [1..1] Request LPI Transmission when MAC Becomes Idle */ + __IOM uint32_t LPI_TXHOLD : 1; /*!< [2..2] MAC Transmission Hold */ + uint32_t : 5; + __IM uint32_t ST_LPI_REQ : 1; /*!< [8..8] Status (real time) of Internal LPI_REQ to the MAC */ + __IM uint32_t ST_LPI_TXHOLD : 1; /*!< [9..9] Status (real time) of Internal LPI_TXHOLD to the MAC */ + __IM uint32_t ST_TXBUSY : 1; /*!< [10..10] Status (real time) if the MAC is currently transmitting. */ + __IM uint32_t ST_TXAVAIL : 1; /*!< [11..11] Status (real time) if the MAC transmit FIFO has data + * available for transmission. */ + __IM uint32_t ST_LPI_IND : 1; /*!< [12..12] Status (real time) of Received LPI */ + uint32_t : 3; + __IM uint32_t STLH_LPI_REQ : 1; /*!< [16..16] Status (latched high) of Internal LPI_REQ to the MAC */ + __IM uint32_t STLH_LPI_TXHOLD : 1; /*!< [17..17] Status (latched high) of Internal LPI_TXHOLD to the + * MAC */ + __IM uint32_t STLH_TXBUSY : 1; /*!< [18..18] Status (latched high) if the MAC is/was Transmitting */ + uint32_t : 1; + __IM uint32_t STLH_LPI_IND : 1; /*!< [20..20] Status (latched high) of Received LPI (ST_LPI_IND) */ + uint32_t : 11; + } EEE_CTL_STAT_P2_b; + }; + + union + { + __IOM uint32_t EEE_IDLE_TIME_P2; /*!< (@ 0x0000104C) Port 2 EEE Idle Time Register (n = 0 to 2) */ + + struct + { + __IOM uint32_t EEE_IDLE_TIME : 32; /*!< [31..0] Time (-1) the transmitter must be idle before transmission + * of LPI begins. A 32-bit value in steps of 32 switch operating + * clock cycles. A value of 0 disables the timer. The value + * must be set to 1 less count. */ + } EEE_IDLE_TIME_P2_b; + }; + + union + { + __IOM uint32_t EEE_TWSYS_TIME_P2; /*!< (@ 0x00001050) Port 2 EEE Wake Up Time Register (n = 0 to 2) */ + + struct + { + __IOM uint32_t EEE_WKUP_TIME : 32; /*!< [31..0] Time (-1) after PHY wakeup until the MAC is allowed + * to begin transmitting the first frame again. A 32-bit value + * in steps of switch operating clock cycles. A value of 0 + * disables the timer. The value must be set to 1 less count. */ + } EEE_TWSYS_TIME_P2_b; + }; + + union + { + __IOM uint32_t IDLE_SLOPE_P2; /*!< (@ 0x00001054) Port 2 MAC Traffic Shaper Bandwidth Control */ + + struct + { + __IOM uint32_t IDLE_SLOPE : 11; /*!< [10..0] Traffic Shaper Bandwidth Control */ + uint32_t : 21; + } IDLE_SLOPE_P2_b; + }; + + union + { + __IOM uint32_t CT_DELAY_P2; /*!< (@ 0x00001058) Port 2 Cut-Through Delay Indication Register */ + + struct + { + __IOM uint32_t CT_DELAY : 9; /*!< [8..0] Delay Value in 400 ns / 40 ns / 8 ns increments (frequency + * of the MII PHY interface) */ + uint32_t : 23; + } CT_DELAY_P2_b; + }; + + union + { + __IOM uint32_t BR_CONTROL_P2; /*!< (@ 0x0000105C) Port 2 802.3br Frame Configuration Register */ + + struct + { + __IOM uint32_t PREEMPT_ENA : 1; /*!< [0..0] When set to 1, enables 802.3br Frame Preemption. */ + __IOM uint32_t VERIFY_DIS : 1; /*!< [1..1] When set to 1, disables the verify process required for + * preemption operation. */ + __IOM uint32_t RESPONSE_DIS : 1; /*!< [2..2] When set to 1 prevents the MAC from responding to "verify" + * frames. */ + uint32_t : 1; + __IOM uint32_t ADDFRAGSIZE : 2; /*!< [5..4] Minimum fragment size in increments of 64 bytes. */ + uint32_t : 2; + __IOM uint32_t TX_VERIFY_TIME : 7; /*!< [14..8] Preemption verification timeout in milliseconds. */ + uint32_t : 1; + __IOM uint32_t RX_STRICT_PRE : 1; /*!< [16..16] When set to 1, the preamble is checked so all bytes + * except the SFD are 0x55. When set to 0, only the last 2 + * bytes of the preamble are checked (SFD/SMD and FRAG_COUNT). + * It is recommended to set this bit to 1 to comply with the + * 802.3br specification. This bit must be set to 0 if only + * non-802.3br traffic is expected (for example, normal Ethernet + * traffic) and if custom preamble is used. */ + __IOM uint32_t RX_BR_SMD_DIS : 1; /*!< [17..17] When set to 1, the receiver does not decode the 802.3br + * SMDs and assumes all frames are express frames. This bit + * must be set to 0 for correct operation with 802.3br, and + * can be set to 1 when 802.3br is not enabled to avoid false + * detection of SMDs. */ + __IOM uint32_t RX_STRICT_BR_CTL : 1; /*!< [18..18] When set to 1, strict checking of VERIFY and RESPONSE + * frames is enabled. When set to 1, the frame contents and + * frame length checks are also performed on these frames. + * The mCRC is always checked regardless of the value of this + * register. This bit must be set to 0 to be compliant with + * the functionality described in IEEE 802.3br. */ + __IOM uint32_t TX_MCRC_INV : 1; /*!< [19..19] When set to 1, the 32-bit XOR mask used to calculate + * the mCRC for transmitted frames is inverted. This bit must + * always be written to 0 and only used for debugging. */ + __IOM uint32_t RX_MCRC_INV : 1; /*!< [20..20] When set to 1, the 32-bit XOR mask used to calculate + * the mCRC for received frames is inverted. This bit must + * always be written to 0 and only used for debugging. */ + uint32_t : 11; + } BR_CONTROL_P2_b; + }; + __IM uint32_t RESERVED43[2]; + + union + { + __IM uint32_t AFRAMESTRANSMITTEDOK_P2; /*!< (@ 0x00001068) Port 2 MAC Transmitted Valid Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t TXVALIDCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Transmitted, including pause. */ + } AFRAMESTRANSMITTEDOK_P2_b; + }; + + union + { + __IM uint32_t AFRAMESRECEIVEDOK_P2; /*!< (@ 0x0000106C) Port 2 MAC Received Valid Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXVALIDCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Received, including pause. */ + } AFRAMESRECEIVEDOK_P2_b; + }; + + union + { + __IM uint32_t AFRAMECHECKSEQUENCEERRORS_P2; /*!< (@ 0x00001070) Port 2 MAC FCS Error Frame Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t FCSERRCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Length but CRC error. */ + } AFRAMECHECKSEQUENCEERRORS_P2_b; + }; + + union + { + __IM uint32_t AALIGNMENTERRORS_P2; /*!< (@ 0x00001074) Port 2 MAC Alignment Error Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t ALGNERRCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Odd Number + * of Nibbles (MII) Received. */ + } AALIGNMENTERRORS_P2_b; + }; + + union + { + __IM uint32_t AOCTETSTRANSMITTEDOK_P2; /*!< (@ 0x00001078) Port 2 MAC Transmitted Valid Frame Octets Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t TXVALIDOCTETS : 32; /*!< [31..0] PORT n, this field indicates the octets (the payload + * only) of MAC Valid Transmitted. */ + } AOCTETSTRANSMITTEDOK_P2_b; + }; + + union + { + __IM uint32_t AOCTETSRECEIVEDOK_P2; /*!< (@ 0x0000107C) Port 2 MAC Received Valid Frame Octets Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXVALIDOCTETS : 32; /*!< [31..0] PORT n, this field indicates the octets (the payload + * only) of MAC Valid Received. */ + } AOCTETSRECEIVEDOK_P2_b; + }; + + union + { + __IM uint32_t ATXPAUSEMACCTRLFRAMES_P2; /*!< (@ 0x00001080) Port 2 MAC Transmitted Pause Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t TXPAUSECOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Pause Transmitted. */ + } ATXPAUSEMACCTRLFRAMES_P2_b; + }; + + union + { + __IM uint32_t ARXPAUSEMACCTRLFRAMES_P2; /*!< (@ 0x00001084) Port 2 MAC Received Pause Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXPAUSECOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Pause Received. */ + } ARXPAUSEMACCTRLFRAMES_P2_b; + }; + + union + { + __IM uint32_t IFINERRORS_P2; /*!< (@ 0x00001088) Port 2 MAC Input Error Count Register (n = 0 + * to 3) */ + + struct + { + __IM uint32_t INERRCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Any Error + * During Reception such as CRC, Length, PHY Error, RX FIFO + * Overflow. */ + } IFINERRORS_P2_b; + }; + + union + { + __IM uint32_t IFOUTERRORS_P2; /*!< (@ 0x0000108C) Port 2 MAC Output Error Count Register (n = 0 + * to 3) */ + + struct + { + __IM uint32_t OUTERRCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Frame + * Transmitted with PHY error. */ + } IFOUTERRORS_P2_b; + }; + + union + { + __IM uint32_t IFINUCASTPKTS_P2; /*!< (@ 0x00001090) Port 2 MAC Received Unicast Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXUCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Unicast + * Frame Valid Received. */ + } IFINUCASTPKTS_P2_b; + }; + + union + { + __IM uint32_t IFINMULTICASTPKTS_P2; /*!< (@ 0x00001094) Port 2 MAC Received Multicast Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXMCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Multicast + * Frame Valid Received. */ + } IFINMULTICASTPKTS_P2_b; + }; + + union + { + __IM uint32_t IFINBROADCASTPKTS_P2; /*!< (@ 0x00001098) Port 2 MAC Received Broadcast Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXBCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Broadcast + * Frame Valid Received. */ + } IFINBROADCASTPKTS_P2_b; + }; + + union + { + __IM uint32_t IFOUTDISCARDS_P2; /*!< (@ 0x0000109C) Port 2 MAC Discarded Outbound Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t DISCOBCOUNT : 32; /*!< [31..0] Not Applicable */ + } IFOUTDISCARDS_P2_b; + }; + + union + { + __IM uint32_t IFOUTUCASTPKTS_P2; /*!< (@ 0x000010A0) Port 2 MAC Transmitted Unicast Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t TXUCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Unicast + * Frame Valid Transmitted. */ + } IFOUTUCASTPKTS_P2_b; + }; + + union + { + __IM uint32_t IFOUTMULTICASTPKTS_P2; /*!< (@ 0x000010A4) Port 2 MAC Transmitted Multicast Frame Count + * Register (n = 0 to 3) */ + + struct + { + __IM uint32_t TXMCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Multicast + * Frame Valid Transmitted. */ + } IFOUTMULTICASTPKTS_P2_b; + }; + + union + { + __IM uint32_t IFOUTBROADCASTPKTS_P2; /*!< (@ 0x000010A8) Port 2 MAC Transmitted Broadcast Frame Count + * Register (n = 0 to 3) */ + + struct + { + __IM uint32_t TXBCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Broadcast + * Frame Valid Transmitted. */ + } IFOUTBROADCASTPKTS_P2_b; + }; + + union + { + __IM uint32_t ETHERSTATSDROPEVENTS_P2; /*!< (@ 0x000010AC) Port 2 MAC Dropped Frame Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t DROPCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC RX FIFO + * Full at frame start. */ + } ETHERSTATSDROPEVENTS_P2_b; + }; + + union + { + __IM uint32_t ETHERSTATSOCTETS_P2; /*!< (@ 0x000010B0) Port 2 MAC All Frame Octets Register (n = 0 to + * 3) */ + + struct + { + __IM uint32_t ALLOCTETS : 32; /*!< [31..0] ALLOCTETS */ + } ETHERSTATSOCTETS_P2_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS_P2; /*!< (@ 0x000010B4) Port 2 MAC All Frame Count Register (n = 0 to + * 3) */ + + struct + { + __IM uint32_t ALLCOUNT : 32; /*!< [31..0] ALLCOUNT */ + } ETHERSTATSPKTS_P2_b; + }; + + union + { + __IM uint32_t ETHERSTATSUNDERSIZEPKTS_P2; /*!< (@ 0x000010B8) Port 2 MAC Too Short Frame Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t TOOSHRTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC too Short, + * Good CRC. */ + } ETHERSTATSUNDERSIZEPKTS_P2_b; + }; + + union + { + __IM uint32_t ETHERSTATSOVERSIZEPKTS_P2; /*!< (@ 0x000010BC) Port 2 MAC Too Long Frame Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t TOOLONGCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC too Long, + * Good CRC. */ + } ETHERSTATSOVERSIZEPKTS_P2_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS64OCTETS_P2; /*!< (@ 0x000010C0) Port 2 MAC 64 Octets Frame Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT64 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 64 bytes). */ + } ETHERSTATSPKTS64OCTETS_P2_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS65TO127OCTETS_P2; /*!< (@ 0x000010C4) Port 2 MAC 65 to 127 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT65T127 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 65 to 127 bytes). */ + } ETHERSTATSPKTS65TO127OCTETS_P2_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS128TO255OCTETS_P2; /*!< (@ 0x000010C8) Port 2 MAC 128 to 255 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT128T255 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 128 to 255 bytes). */ + } ETHERSTATSPKTS128TO255OCTETS_P2_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS256TO511OCTETS_P2; /*!< (@ 0x000010CC) Port 2 MAC 256 to 511 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT256T511 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 256 to 511 bytes). */ + } ETHERSTATSPKTS256TO511OCTETS_P2_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS512TO1023OCTETS_P2; /*!< (@ 0x000010D0) Port 2 MAC 512 to 1023 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT512T1023 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 512 to 1023 bytes). */ + } ETHERSTATSPKTS512TO1023OCTETS_P2_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS1024TO1518OCTETS_P2; /*!< (@ 0x000010D4) Port 2 MAC 1024 to 1518 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT1024T1518 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 1024 to 1518 bytes). */ + } ETHERSTATSPKTS1024TO1518OCTETS_P2_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS1519TOXOCTETS_P2; /*!< (@ 0x000010D8) Port 2 MAC Over 1519 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT1519TX : 32; /*!< [31..0] PORT n, this field indicates the number of MAC all Frames, + * Good and Bad (Packet Size: over 1519 bytes). */ + } ETHERSTATSPKTS1519TOXOCTETS_P2_b; + }; + + union + { + __IM uint32_t ETHERSTATSJABBERS_P2; /*!< (@ 0x000010DC) Port 2 MAC Jabbers Frame Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t JABBERCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC too Long, + * Bad CRC. */ + } ETHERSTATSJABBERS_P2_b; + }; + + union + { + __IM uint32_t ETHERSTATSFRAGMENTS_P2; /*!< (@ 0x000010E0) Port 2 MAC Fragment Frame Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t FRAGCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC too Short, + * Bad CRC. */ + } ETHERSTATSFRAGMENTS_P2_b; + }; + __IM uint32_t RESERVED44; + + union + { + __IM uint32_t VLANRECEIVEDOK_P2; /*!< (@ 0x000010E8) Port 2 MAC Received VLAN Tagged Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXVLANTAGCNT : 32; /*!< [31..0] PORT n, this field indicates the number of Good Frames + * with VLAN Tag Received. */ + } VLANRECEIVEDOK_P2_b; + }; + __IM uint32_t RESERVED45[2]; + + union + { + __IM uint32_t VLANTRANSMITTEDOK_P2; /*!< (@ 0x000010F4) Port 2 MAC Transmitted VLAN Tagged Frame Count + * Register (n = 0 to 3) */ + + struct + { + __IM uint32_t TXVLANTAGCNT : 32; /*!< [31..0] PORT n, this field indicates the number of Good Frames + * with VLAN Tag Transmitted. */ + } VLANTRANSMITTEDOK_P2_b; + }; + + union + { + __IM uint32_t FRAMESRETRANSMITTED_P2; /*!< (@ 0x000010F8) Port 2 MAC Retransmitted Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RETXCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of Transmitted + * Frames that experienced a collision and were retransmitted. */ + } FRAMESRETRANSMITTED_P2_b; + }; + __IM uint32_t RESERVED46; + + union + { + __IM uint32_t STATS_HIWORD_P2; /*!< (@ 0x00001100) Port 2 MAC Statistics Counter High Word Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t STATS_HIWORD : 32; /*!< [31..0] The latched upper 32-bit of the 64 bits MAC Statistics + * Counter Last Read */ + } STATS_HIWORD_P2_b; + }; + + union + { + __IOM uint32_t STATS_CTRL_P2; /*!< (@ 0x00001104) Port 2 MAC Statistics Control Register (n = 0 + * to 3) */ + + struct + { + __IOM uint32_t CLRALL : 1; /*!< [0..0] Self Clearing Counter Initialize Command */ + __IM uint32_t CLRBUSY : 1; /*!< [1..1] Clear in Progress Indication */ + uint32_t : 30; + } STATS_CTRL_P2_b; + }; + + union + { + __IOM uint32_t STATS_CLEAR_VALUELO_P2; /*!< (@ 0x00001108) Port 2 MAC Statistics Clear Value Lower Register + * (n = 0 to 3) */ + + struct + { + __IOM uint32_t STATS_CLEAR_VALUELO : 32; /*!< [31..0] PORT n, lower 32-bit of 64 bits value loaded into all + * counters when clearing all counters with STATS_CTRL_Pn.CLRALL + * command for test purposes. These bits should be set to + * 0 normally. */ + } STATS_CLEAR_VALUELO_P2_b; + }; + + union + { + __IOM uint32_t STATS_CLEAR_VALUEHI_P2; /*!< (@ 0x0000110C) Port 2 MAC Statistics Clear Value Higher Register + * (n = 0 to 3) */ + + struct + { + __IOM uint32_t STATS_CLEAR_VALUEHI : 32; /*!< [31..0] PORT n, upper 32-bit of 64 bits value loaded into all + * counters when clearing all counters with STATS_CTRL_Pn.CLRALL + * command for test purposes. These bits should be set to + * 0 normally. */ + } STATS_CLEAR_VALUEHI_P2_b; + }; + + union + { + __IM uint32_t ADEFERRED_P2; /*!< (@ 0x00001110) Port 2 MAC Deferred Count Register (n = 0 to + * 3) */ + + struct + { + __IM uint32_t DEFERCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of Frame Transmitted + * without collision but was deferred at begin. */ + } ADEFERRED_P2_b; + }; + + union + { + __IM uint32_t AMULTIPLECOLLISIONS_P2; /*!< (@ 0x00001114) Port 2 MAC Multiple Collision Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t COUNTAFTMLTCOLL : 32; /*!< [31..0] PORT n, this field indicates the number of Good Frame + * Transmit after multiple collisions. */ + } AMULTIPLECOLLISIONS_P2_b; + }; + + union + { + __IM uint32_t ASINGLECOLLISIONS_P2; /*!< (@ 0x00001118) Port 2 MAC Single Collision Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t COUNTAFTSNGLCOLL : 32; /*!< [31..0] PORT n, this field indicates the number of Good Frame + * Transmit after single collision. */ + } ASINGLECOLLISIONS_P2_b; + }; + + union + { + __IM uint32_t ALATECOLLISIONS_P2; /*!< (@ 0x0000111C) Port 2 MAC Late Collision Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t LATECOLLCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of too Late + * Collision. Frame was aborted and not retransmitted. */ + } ALATECOLLISIONS_P2_b; + }; + + union + { + __IM uint32_t AEXCESSIVECOLLISIONS_P2; /*!< (@ 0x00001120) Port 2 MAC Excessive Collision Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t EXCCOLLCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of Frames Discarded + * due to 16 consecutive collisions. */ + } AEXCESSIVECOLLISIONS_P2_b; + }; + + union + { + __IM uint32_t ACARRIERSENSEERRORS_P2; /*!< (@ 0x00001124) Port 2 MAC Carrier Sense Error Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t CSERRCOUNT : 32; /*!< [31..0] PORT n, increments during Transmission without Collisions + * the PHY Carrier Sense Signal (RX_CRS) dropped or never + * asserted. */ + } ACARRIERSENSEERRORS_P2_b; + }; + __IM uint32_t RESERVED47[182]; + + union + { + __IM uint32_t REV_P3; /*!< (@ 0x00001400) Port 3 MAC Core Revision (n = 0 to 3) */ + + struct + { + __IM uint32_t REV : 32; /*!< [31..0] MAC Core Revision */ + } REV_P3_b; + }; + __IM uint32_t RESERVED48; + + union + { + __IOM uint32_t COMMAND_CONFIG_P3; /*!< (@ 0x00001408) Port 3 Command Configuration Register (n = 0 + * to 3) */ + + struct + { + __IOM uint32_t TX_ENA : 1; /*!< [0..0] Enable/Disable MAC Transmit Path */ + __IOM uint32_t RX_ENA : 1; /*!< [1..1] Enable/Disable MAC Receive Path */ + __IOM uint32_t TDMA_PREBUF_DIS : 1; /*!< [2..2] When set to 1, the MAC does not request a new frame from + * the IMC until the current frame is completed. This can + * cause the IPG between frames to be more than the value + * in TX_IPG_LENGTH. */ + __IOM uint32_t ETH_SPEED : 1; /*!< [3..3] Operation Mode Definition */ + __IM uint32_t PROMIS_EN : 1; /*!< [4..4] Enable/Disable MAC Promiscuous Operation */ + __IM uint32_t PAD_EN : 1; /*!< [5..5] Enable/Disable Frame Padding Remove on Receive */ + uint32_t : 1; + __IM uint32_t PAUSE_FWD : 1; /*!< [7..7] Terminate/Forward Pause Frames */ + __IOM uint32_t PAUSE_IGNORE : 1; /*!< [8..8] Ignore Pause Frame Quanta */ + __IM uint32_t TX_ADDR_INS : 1; /*!< [9..9] Non writable bit, fixed to 0 always. */ + __IOM uint32_t HD_ENA : 1; /*!< [10..10] Enable auto full/half-duplex operation (set to 1) or + * full-duplex only (set to 0). */ + __IOM uint32_t TX_CRC_APPEND : 1; /*!< [11..11] Enable CRC Append on Transmit */ + uint32_t : 1; + __IOM uint32_t SW_RESET : 1; /*!< [13..13] Self Clearing Reset Command Bit */ + uint32_t : 9; + __IOM uint32_t CNTL_FRM_ENA : 1; /*!< [23..23] MAC Control Frame Enable */ + __IOM uint32_t NO_LGTH_CHK : 1; /*!< [24..24] Payload Length Check Disable */ + __IOM uint32_t ENA_10 : 1; /*!< [25..25] This bit has no effect except PHYSPEED bit of STATUS_Pn + * register. */ + __IOM uint32_t EFPI_SELECT : 1; /*!< [26..26] EFPI_SELECT */ + __IOM uint32_t TX_TRUNCATE : 1; /*!< [27..27] TX_TRUNCATE */ + uint32_t : 2; + __IOM uint32_t TIMER_SEL : 1; /*!< [30..30] Selects the default timer to use for timestamping operations + * on transmit and on receive. The value is used when not + * overridden by the PTP auto-response function, pattern matchers + * or force forwarding information in a management tag. */ + uint32_t : 1; + } COMMAND_CONFIG_P3_b; + }; + __IM uint32_t RESERVED49[2]; + + union + { + __IOM uint32_t FRM_LENGTH_P3; /*!< (@ 0x00001414) Port 3 Maximum Frame Length Register (n = 0 to + * 3) */ + + struct + { + __IOM uint32_t FRM_LENGTH : 14; /*!< [13..0] Maximum Frame Length */ + uint32_t : 18; + } FRM_LENGTH_P3_b; + }; + + union + { + __IM uint32_t PAUSE_QUANT_P3; /*!< (@ 0x00001418) Port 3 MAC Pause Quanta (n = 0 to 3) */ + + struct + { + __IM uint32_t PAUSE_QUANT : 16; /*!< [15..0] Pause Quanta */ + uint32_t : 16; + } PAUSE_QUANT_P3_b; + }; + __IM uint32_t RESERVED50[9]; + + union + { + __IOM uint32_t STATUS_P3; /*!< (@ 0x00001440) Port 3 Status Register */ + + struct + { + __IM uint32_t PHYSPEED : 2; /*!< [1..0] Currently Active PHY Interface Speed */ + __IM uint32_t PHYLINK : 1; /*!< [2..2] Link status from PHY interface */ + __IM uint32_t PHYDUPLEX : 1; /*!< [3..3] Duplex status from PHY interface */ + __IOM uint32_t TX_UNDFLW : 1; /*!< [4..4] Indicates that the transmit MAC underflow. This shall + * never occur during normal operation. */ + __IOM uint32_t LK_DST_ERR : 1; /*!< [5..5] Indicates that the L2 destination lookup process failed + * to complete in time before the next frame was received + * at the port. This should never occur under normal operation. + * The cause could be from IPG violations in the received + * frames. */ + __IM uint32_t BR_VERIF_ST : 3; /*!< [8..6] Indicates the current status of the verification according + * to clause 30.14.1.2 of the 802.3br specification */ + uint32_t : 23; + } STATUS_P3_b; + }; + + union + { + __IOM uint32_t TX_IPG_LENGTH_P3; /*!< (@ 0x00001444) Port 3 Transmit IPG Length Register (n = 0 to + * 3) */ + + struct + { + __IOM uint32_t TX_IPG_LENGTH : 5; /*!< [4..0] Define transmit interpacket gap in octets. Allowed values + * are in the range of 8 to 31. */ + uint32_t : 11; + __IOM uint32_t MINRTC3GAP : 5; /*!< [20..16] MINRTC3GAP */ + uint32_t : 11; + } TX_IPG_LENGTH_P3_b; + }; + __IM uint32_t RESERVED51[3]; + + union + { + __IOM uint32_t IDLE_SLOPE_P3; /*!< (@ 0x00001454) Port 3 MAC Traffic Shaper Bandwidth Control */ + + struct + { + __IOM uint32_t IDLE_SLOPE : 11; /*!< [10..0] Traffic Shaper Bandwidth Control */ + uint32_t : 21; + } IDLE_SLOPE_P3_b; + }; + __IM uint32_t RESERVED52[4]; + + union + { + __IM uint32_t AFRAMESTRANSMITTEDOK_P3; /*!< (@ 0x00001468) Port 3 MAC Transmitted Valid Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t TXVALIDCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Transmitted, including pause. */ + } AFRAMESTRANSMITTEDOK_P3_b; + }; + + union + { + __IM uint32_t AFRAMESRECEIVEDOK_P3; /*!< (@ 0x0000146C) Port 3 MAC Received Valid Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXVALIDCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Received, including pause. */ + } AFRAMESRECEIVEDOK_P3_b; + }; + + union + { + __IM uint32_t AFRAMECHECKSEQUENCEERRORS_P3; /*!< (@ 0x00001470) Port 3 MAC FCS Error Frame Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t FCSERRCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Length but CRC error. */ + } AFRAMECHECKSEQUENCEERRORS_P3_b; + }; + + union + { + __IM uint32_t AALIGNMENTERRORS_P3; /*!< (@ 0x00001474) Port 3 MAC Alignment Error Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t ALGNERRCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Odd Number + * of Nibbles (MII) Received. */ + } AALIGNMENTERRORS_P3_b; + }; + + union + { + __IM uint32_t AOCTETSTRANSMITTEDOK_P3; /*!< (@ 0x00001478) Port 3 MAC Transmitted Valid Frame Octets Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t TXVALIDOCTETS : 32; /*!< [31..0] PORT n, this field indicates the octets (the payload + * only) of MAC Valid Transmitted. */ + } AOCTETSTRANSMITTEDOK_P3_b; + }; + + union + { + __IM uint32_t AOCTETSRECEIVEDOK_P3; /*!< (@ 0x0000147C) Port 3 MAC Received Valid Frame Octets Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXVALIDOCTETS : 32; /*!< [31..0] PORT n, this field indicates the octets (the payload + * only) of MAC Valid Received. */ + } AOCTETSRECEIVEDOK_P3_b; + }; + + union + { + __IM uint32_t ATXPAUSEMACCTRLFRAMES_P3; /*!< (@ 0x00001480) Port 3 MAC Transmitted Pause Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t TXPAUSECOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Pause Transmitted. */ + } ATXPAUSEMACCTRLFRAMES_P3_b; + }; + + union + { + __IM uint32_t ARXPAUSEMACCTRLFRAMES_P3; /*!< (@ 0x00001484) Port 3 MAC Received Pause Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXPAUSECOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Valid + * Pause Received. */ + } ARXPAUSEMACCTRLFRAMES_P3_b; + }; + + union + { + __IM uint32_t IFINERRORS_P3; /*!< (@ 0x00001488) Port 3 MAC Input Error Count Register (n = 0 + * to 3) */ + + struct + { + __IM uint32_t INERRCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Any Error + * During Reception such as CRC, Length, PHY Error, RX FIFO + * Overflow. */ + } IFINERRORS_P3_b; + }; + + union + { + __IM uint32_t IFOUTERRORS_P3; /*!< (@ 0x0000148C) Port 3 MAC Output Error Count Register (n = 0 + * to 3) */ + + struct + { + __IM uint32_t OUTERRCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Frame + * Transmitted with PHY error. */ + } IFOUTERRORS_P3_b; + }; + + union + { + __IM uint32_t IFINUCASTPKTS_P3; /*!< (@ 0x00001490) Port 3 MAC Received Unicast Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXUCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Unicast + * Frame Valid Received. */ + } IFINUCASTPKTS_P3_b; + }; + + union + { + __IM uint32_t IFINMULTICASTPKTS_P3; /*!< (@ 0x00001494) Port 3 MAC Received Multicast Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXMCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Multicast + * Frame Valid Received. */ + } IFINMULTICASTPKTS_P3_b; + }; + + union + { + __IM uint32_t IFINBROADCASTPKTS_P3; /*!< (@ 0x00001498) Port 3 MAC Received Broadcast Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXBCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Broadcast + * Frame Valid Received. */ + } IFINBROADCASTPKTS_P3_b; + }; + + union + { + __IM uint32_t IFOUTDISCARDS_P3; /*!< (@ 0x0000149C) Port 3 MAC Discarded Outbound Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t DISCOBCOUNT : 32; /*!< [31..0] Not Applicable */ + } IFOUTDISCARDS_P3_b; + }; + + union + { + __IM uint32_t IFOUTUCASTPKTS_P3; /*!< (@ 0x000014A0) Port 3 MAC Transmitted Unicast Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t TXUCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Unicast + * Frame Valid Transmitted. */ + } IFOUTUCASTPKTS_P3_b; + }; + + union + { + __IM uint32_t IFOUTMULTICASTPKTS_P3; /*!< (@ 0x000014A4) Port 3 MAC Transmitted Multicast Frame Count + * Register (n = 0 to 3) */ + + struct + { + __IM uint32_t TXMCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Multicast + * Frame Valid Transmitted. */ + } IFOUTMULTICASTPKTS_P3_b; + }; + + union + { + __IM uint32_t IFOUTBROADCASTPKTS_P3; /*!< (@ 0x000014A8) Port 3 MAC Transmitted Broadcast Frame Count + * Register (n = 0 to 3) */ + + struct + { + __IM uint32_t TXBCASTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC Broadcast + * Frame Valid Transmitted. */ + } IFOUTBROADCASTPKTS_P3_b; + }; + + union + { + __IM uint32_t ETHERSTATSDROPEVENTS_P3; /*!< (@ 0x000014AC) Port 3 MAC Dropped Frame Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t DROPCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC RX FIFO + * Full at frame start. */ + } ETHERSTATSDROPEVENTS_P3_b; + }; + + union + { + __IM uint32_t ETHERSTATSOCTETS_P3; /*!< (@ 0x000014B0) Port 3 MAC All Frame Octets Register (n = 0 to + * 3) */ + + struct + { + __IM uint32_t ALLOCTETS : 32; /*!< [31..0] ALLOCTETS */ + } ETHERSTATSOCTETS_P3_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS_P3; /*!< (@ 0x000014B4) Port 3 MAC All Frame Count Register (n = 0 to + * 3) */ + + struct + { + __IM uint32_t ALLCOUNT : 32; /*!< [31..0] ALLCOUNT */ + } ETHERSTATSPKTS_P3_b; + }; + + union + { + __IM uint32_t ETHERSTATSUNDERSIZEPKTS_P3; /*!< (@ 0x000014B8) Port 3 MAC Too Short Frame Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t TOOSHRTCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC too Short, + * Good CRC. */ + } ETHERSTATSUNDERSIZEPKTS_P3_b; + }; + + union + { + __IM uint32_t ETHERSTATSOVERSIZEPKTS_P3; /*!< (@ 0x000014BC) Port 3 MAC Too Long Frame Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t TOOLONGCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC too Long, + * Good CRC. */ + } ETHERSTATSOVERSIZEPKTS_P3_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS64OCTETS_P3; /*!< (@ 0x000014C0) Port 3 MAC 64 Octets Frame Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT64 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 64 bytes). */ + } ETHERSTATSPKTS64OCTETS_P3_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS65TO127OCTETS_P3; /*!< (@ 0x000014C4) Port 3 MAC 65 to 127 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT65T127 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 65 to 127 bytes). */ + } ETHERSTATSPKTS65TO127OCTETS_P3_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS128TO255OCTETS_P3; /*!< (@ 0x000014C8) Port 3 MAC 128 to 255 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT128T255 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 128 to 255 bytes). */ + } ETHERSTATSPKTS128TO255OCTETS_P3_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS256TO511OCTETS_P3; /*!< (@ 0x000014CC) Port 3 MAC 256 to 511 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT256T511 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 256 to 511 bytes). */ + } ETHERSTATSPKTS256TO511OCTETS_P3_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS512TO1023OCTETS_P3; /*!< (@ 0x000014D0) Port 3 MAC 512 to 1023 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT512T1023 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 512 to 1023 bytes). */ + } ETHERSTATSPKTS512TO1023OCTETS_P3_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS1024TO1518OCTETS_P3; /*!< (@ 0x000014D4) Port 3 MAC 1024 to 1518 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT1024T1518 : 32; /*!< [31..0] PORT n, this field indicates the number of MAC All Frames, + * Good and Bad (Packet Size: 1024 to 1518 bytes). */ + } ETHERSTATSPKTS1024TO1518OCTETS_P3_b; + }; + + union + { + __IM uint32_t ETHERSTATSPKTS1519TOXOCTETS_P3; /*!< (@ 0x000014D8) Port 3 MAC Over 1519 Octets Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t OCTCNT1519TX : 32; /*!< [31..0] PORT n, this field indicates the number of MAC all Frames, + * Good and Bad (Packet Size: over 1519 bytes). */ + } ETHERSTATSPKTS1519TOXOCTETS_P3_b; + }; + + union + { + __IM uint32_t ETHERSTATSJABBERS_P3; /*!< (@ 0x000014DC) Port 3 MAC Jabbers Frame Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t JABBERCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC too Long, + * Bad CRC. */ + } ETHERSTATSJABBERS_P3_b; + }; + + union + { + __IM uint32_t ETHERSTATSFRAGMENTS_P3; /*!< (@ 0x000014E0) Port 3 MAC Fragment Frame Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t FRAGCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of MAC too Short, + * Bad CRC. */ + } ETHERSTATSFRAGMENTS_P3_b; + }; + __IM uint32_t RESERVED53; + + union + { + __IM uint32_t VLANRECEIVEDOK_P3; /*!< (@ 0x000014E8) Port 3 MAC Received VLAN Tagged Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RXVLANTAGCNT : 32; /*!< [31..0] PORT n, this field indicates the number of Good Frames + * with VLAN Tag Received. */ + } VLANRECEIVEDOK_P3_b; + }; + __IM uint32_t RESERVED54[2]; + + union + { + __IM uint32_t VLANTRANSMITTEDOK_P3; /*!< (@ 0x000014F4) Port 3 MAC Transmitted VLAN Tagged Frame Count + * Register (n = 0 to 3) */ + + struct + { + __IM uint32_t TXVLANTAGCNT : 32; /*!< [31..0] PORT n, this field indicates the number of Good Frames + * with VLAN Tag Transmitted. */ + } VLANTRANSMITTEDOK_P3_b; + }; + + union + { + __IM uint32_t FRAMESRETRANSMITTED_P3; /*!< (@ 0x000014F8) Port 3 MAC Retransmitted Frame Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t RETXCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of Transmitted + * Frames that experienced a collision and were retransmitted. */ + } FRAMESRETRANSMITTED_P3_b; + }; + __IM uint32_t RESERVED55; + + union + { + __IM uint32_t STATS_HIWORD_P3; /*!< (@ 0x00001500) Port 3 MAC Statistics Counter High Word Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t STATS_HIWORD : 32; /*!< [31..0] The latched upper 32-bit of the 64 bits MAC Statistics + * Counter Last Read */ + } STATS_HIWORD_P3_b; + }; + + union + { + __IOM uint32_t STATS_CTRL_P3; /*!< (@ 0x00001504) Port 3 MAC Statistics Control Register (n = 0 + * to 3) */ + + struct + { + __IOM uint32_t CLRALL : 1; /*!< [0..0] Self Clearing Counter Initialize Command */ + __IM uint32_t CLRBUSY : 1; /*!< [1..1] Clear in Progress Indication */ + uint32_t : 30; + } STATS_CTRL_P3_b; + }; + + union + { + __IOM uint32_t STATS_CLEAR_VALUELO_P3; /*!< (@ 0x00001508) Port 3 MAC Statistics Clear Value Lower Register + * (n = 0 to 3) */ + + struct + { + __IOM uint32_t STATS_CLEAR_VALUELO : 32; /*!< [31..0] PORT n, lower 32-bit of 64 bits value loaded into all + * counters when clearing all counters with STATS_CTRL_Pn.CLRALL + * command for test purposes. These bits should be set to + * 0 normally. */ + } STATS_CLEAR_VALUELO_P3_b; + }; + + union + { + __IOM uint32_t STATS_CLEAR_VALUEHI_P3; /*!< (@ 0x0000150C) Port 3 MAC Statistics Clear Value Higher Register + * (n = 0 to 3) */ + + struct + { + __IOM uint32_t STATS_CLEAR_VALUEHI : 32; /*!< [31..0] PORT n, upper 32-bit of 64 bits value loaded into all + * counters when clearing all counters with STATS_CTRL_Pn.CLRALL + * command for test purposes. These bits should be set to + * 0 normally. */ + } STATS_CLEAR_VALUEHI_P3_b; + }; + + union + { + __IM uint32_t ADEFERRED_P3; /*!< (@ 0x00001510) Port 3 MAC Deferred Count Register (n = 0 to + * 3) */ + + struct + { + __IM uint32_t DEFERCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of Frame Transmitted + * without collision but was deferred at begin. */ + } ADEFERRED_P3_b; + }; + + union + { + __IM uint32_t AMULTIPLECOLLISIONS_P3; /*!< (@ 0x00001514) Port 3 MAC Multiple Collision Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t COUNTAFTMLTCOLL : 32; /*!< [31..0] PORT n, this field indicates the number of Good Frame + * Transmit after multiple collisions. */ + } AMULTIPLECOLLISIONS_P3_b; + }; + + union + { + __IM uint32_t ASINGLECOLLISIONS_P3; /*!< (@ 0x00001518) Port 3 MAC Single Collision Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t COUNTAFTSNGLCOLL : 32; /*!< [31..0] PORT n, this field indicates the number of Good Frame + * Transmit after single collision. */ + } ASINGLECOLLISIONS_P3_b; + }; + + union + { + __IM uint32_t ALATECOLLISIONS_P3; /*!< (@ 0x0000151C) Port 3 MAC Late Collision Count Register (n = + * 0 to 3) */ + + struct + { + __IM uint32_t LATECOLLCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of too Late + * Collision. Frame was aborted and not retransmitted. */ + } ALATECOLLISIONS_P3_b; + }; + + union + { + __IM uint32_t AEXCESSIVECOLLISIONS_P3; /*!< (@ 0x00001520) Port 3 MAC Excessive Collision Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t EXCCOLLCOUNT : 32; /*!< [31..0] PORT n, this field indicates the number of Frames Discarded + * due to 16 consecutive collisions. */ + } AEXCESSIVECOLLISIONS_P3_b; + }; + + union + { + __IM uint32_t ACARRIERSENSEERRORS_P3; /*!< (@ 0x00001524) Port 3 MAC Carrier Sense Error Count Register + * (n = 0 to 3) */ + + struct + { + __IM uint32_t CSERRCOUNT : 32; /*!< [31..0] PORT n, increments during Transmission without Collisions + * the PHY Carrier Sense Signal (RX_CRS) dropped or never + * asserted. */ + } ACARRIERSENSEERRORS_P3_b; + }; + __IM uint32_t RESERVED56[694]; + + union + { + __IOM uint32_t P0_QSTMACU0; /*!< (@ 0x00002000) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P0_QSTMACU0_b; + }; + + union + { + __IOM uint32_t P0_QSTMACD0; /*!< (@ 0x00002004) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P0_QSTMACD0_b; + }; + + union + { + __IOM uint32_t P0_QSTMAMU0; /*!< (@ 0x00002008) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P0_QSTMAMU0_b; + }; + + union + { + __IOM uint32_t P0_QSTMAMD0; /*!< (@ 0x0000200C) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P0_QSTMAMD0_b; + }; + + union + { + __IOM uint32_t P0_QSFTVL0; /*!< (@ 0x00002010) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P0_QSFTVL0_b; + }; + + union + { + __IOM uint32_t P0_QSFTVLM0; /*!< (@ 0x00002014) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P0_QSFTVLM0_b; + }; + + union + { + __IOM uint32_t P0_QSFTBL0; /*!< (@ 0x00002018) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P0_QSFTBL0_b; + }; + + union + { + __IM uint32_t P0_QSMFC0; /*!< (@ 0x0000201C) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P0_QSMFC0_b; + }; + + union + { + __IM uint32_t P0_QMSPPC0; /*!< (@ 0x00002020) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P0_QMSPPC0_b; + }; + + union + { + __IM uint32_t P0_QMSRPC0; /*!< (@ 0x00002024) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P0_QMSRPC0_b; + }; + + union + { + __IOM uint32_t P0_QSTMACU1; /*!< (@ 0x00002028) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P0_QSTMACU1_b; + }; + + union + { + __IOM uint32_t P0_QSTMACD1; /*!< (@ 0x0000202C) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P0_QSTMACD1_b; + }; + + union + { + __IOM uint32_t P0_QSTMAMU1; /*!< (@ 0x00002030) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P0_QSTMAMU1_b; + }; + + union + { + __IOM uint32_t P0_QSTMAMD1; /*!< (@ 0x00002034) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P0_QSTMAMD1_b; + }; + + union + { + __IOM uint32_t P0_QSFTVL1; /*!< (@ 0x00002038) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P0_QSFTVL1_b; + }; + + union + { + __IOM uint32_t P0_QSFTVLM1; /*!< (@ 0x0000203C) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P0_QSFTVLM1_b; + }; + + union + { + __IOM uint32_t P0_QSFTBL1; /*!< (@ 0x00002040) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P0_QSFTBL1_b; + }; + + union + { + __IM uint32_t P0_QSMFC1; /*!< (@ 0x00002044) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P0_QSMFC1_b; + }; + + union + { + __IM uint32_t P0_QMSPPC1; /*!< (@ 0x00002048) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P0_QMSPPC1_b; + }; + + union + { + __IM uint32_t P0_QMSRPC1; /*!< (@ 0x0000204C) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P0_QMSRPC1_b; + }; + + union + { + __IOM uint32_t P0_QSTMACU2; /*!< (@ 0x00002050) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P0_QSTMACU2_b; + }; + + union + { + __IOM uint32_t P0_QSTMACD2; /*!< (@ 0x00002054) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P0_QSTMACD2_b; + }; + + union + { + __IOM uint32_t P0_QSTMAMU2; /*!< (@ 0x00002058) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P0_QSTMAMU2_b; + }; + + union + { + __IOM uint32_t P0_QSTMAMD2; /*!< (@ 0x0000205C) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P0_QSTMAMD2_b; + }; + + union + { + __IOM uint32_t P0_QSFTVL2; /*!< (@ 0x00002060) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P0_QSFTVL2_b; + }; + + union + { + __IOM uint32_t P0_QSFTVLM2; /*!< (@ 0x00002064) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P0_QSFTVLM2_b; + }; + + union + { + __IOM uint32_t P0_QSFTBL2; /*!< (@ 0x00002068) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P0_QSFTBL2_b; + }; + + union + { + __IM uint32_t P0_QSMFC2; /*!< (@ 0x0000206C) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P0_QSMFC2_b; + }; + + union + { + __IM uint32_t P0_QMSPPC2; /*!< (@ 0x00002070) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P0_QMSPPC2_b; + }; + + union + { + __IM uint32_t P0_QMSRPC2; /*!< (@ 0x00002074) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P0_QMSRPC2_b; + }; + + union + { + __IOM uint32_t P0_QSTMACU3; /*!< (@ 0x00002078) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P0_QSTMACU3_b; + }; + + union + { + __IOM uint32_t P0_QSTMACD3; /*!< (@ 0x0000207C) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P0_QSTMACD3_b; + }; + + union + { + __IOM uint32_t P0_QSTMAMU3; /*!< (@ 0x00002080) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P0_QSTMAMU3_b; + }; + + union + { + __IOM uint32_t P0_QSTMAMD3; /*!< (@ 0x00002084) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P0_QSTMAMD3_b; + }; + + union + { + __IOM uint32_t P0_QSFTVL3; /*!< (@ 0x00002088) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P0_QSFTVL3_b; + }; + + union + { + __IOM uint32_t P0_QSFTVLM3; /*!< (@ 0x0000208C) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P0_QSFTVLM3_b; + }; + + union + { + __IOM uint32_t P0_QSFTBL3; /*!< (@ 0x00002090) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P0_QSFTBL3_b; + }; + + union + { + __IM uint32_t P0_QSMFC3; /*!< (@ 0x00002094) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P0_QSMFC3_b; + }; + + union + { + __IM uint32_t P0_QMSPPC3; /*!< (@ 0x00002098) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P0_QMSPPC3_b; + }; + + union + { + __IM uint32_t P0_QMSRPC3; /*!< (@ 0x0000209C) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P0_QMSRPC3_b; + }; + + union + { + __IOM uint32_t P0_QSTMACU4; /*!< (@ 0x000020A0) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P0_QSTMACU4_b; + }; + + union + { + __IOM uint32_t P0_QSTMACD4; /*!< (@ 0x000020A4) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P0_QSTMACD4_b; + }; + + union + { + __IOM uint32_t P0_QSTMAMU4; /*!< (@ 0x000020A8) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P0_QSTMAMU4_b; + }; + + union + { + __IOM uint32_t P0_QSTMAMD4; /*!< (@ 0x000020AC) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P0_QSTMAMD4_b; + }; + + union + { + __IOM uint32_t P0_QSFTVL4; /*!< (@ 0x000020B0) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P0_QSFTVL4_b; + }; + + union + { + __IOM uint32_t P0_QSFTVLM4; /*!< (@ 0x000020B4) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P0_QSFTVLM4_b; + }; + + union + { + __IOM uint32_t P0_QSFTBL4; /*!< (@ 0x000020B8) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P0_QSFTBL4_b; + }; + + union + { + __IM uint32_t P0_QSMFC4; /*!< (@ 0x000020BC) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P0_QSMFC4_b; + }; + + union + { + __IM uint32_t P0_QMSPPC4; /*!< (@ 0x000020C0) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P0_QMSPPC4_b; + }; + + union + { + __IM uint32_t P0_QMSRPC4; /*!< (@ 0x000020C4) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P0_QMSRPC4_b; + }; + + union + { + __IOM uint32_t P0_QSTMACU5; /*!< (@ 0x000020C8) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P0_QSTMACU5_b; + }; + + union + { + __IOM uint32_t P0_QSTMACD5; /*!< (@ 0x000020CC) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P0_QSTMACD5_b; + }; + + union + { + __IOM uint32_t P0_QSTMAMU5; /*!< (@ 0x000020D0) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P0_QSTMAMU5_b; + }; + + union + { + __IOM uint32_t P0_QSTMAMD5; /*!< (@ 0x000020D4) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P0_QSTMAMD5_b; + }; + + union + { + __IOM uint32_t P0_QSFTVL5; /*!< (@ 0x000020D8) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P0_QSFTVL5_b; + }; + + union + { + __IOM uint32_t P0_QSFTVLM5; /*!< (@ 0x000020DC) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P0_QSFTVLM5_b; + }; + + union + { + __IOM uint32_t P0_QSFTBL5; /*!< (@ 0x000020E0) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P0_QSFTBL5_b; + }; + + union + { + __IM uint32_t P0_QSMFC5; /*!< (@ 0x000020E4) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P0_QSMFC5_b; + }; + + union + { + __IM uint32_t P0_QMSPPC5; /*!< (@ 0x000020E8) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P0_QMSPPC5_b; + }; + + union + { + __IM uint32_t P0_QMSRPC5; /*!< (@ 0x000020EC) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P0_QMSRPC5_b; + }; + + union + { + __IOM uint32_t P0_QSTMACU6; /*!< (@ 0x000020F0) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P0_QSTMACU6_b; + }; + + union + { + __IOM uint32_t P0_QSTMACD6; /*!< (@ 0x000020F4) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P0_QSTMACD6_b; + }; + + union + { + __IOM uint32_t P0_QSTMAMU6; /*!< (@ 0x000020F8) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P0_QSTMAMU6_b; + }; + + union + { + __IOM uint32_t P0_QSTMAMD6; /*!< (@ 0x000020FC) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P0_QSTMAMD6_b; + }; + + union + { + __IOM uint32_t P0_QSFTVL6; /*!< (@ 0x00002100) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P0_QSFTVL6_b; + }; + + union + { + __IOM uint32_t P0_QSFTVLM6; /*!< (@ 0x00002104) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P0_QSFTVLM6_b; + }; + + union + { + __IOM uint32_t P0_QSFTBL6; /*!< (@ 0x00002108) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P0_QSFTBL6_b; + }; + + union + { + __IM uint32_t P0_QSMFC6; /*!< (@ 0x0000210C) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P0_QSMFC6_b; + }; + + union + { + __IM uint32_t P0_QMSPPC6; /*!< (@ 0x00002110) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P0_QMSPPC6_b; + }; + + union + { + __IM uint32_t P0_QMSRPC6; /*!< (@ 0x00002114) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P0_QMSRPC6_b; + }; + + union + { + __IOM uint32_t P0_QSTMACU7; /*!< (@ 0x00002118) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P0_QSTMACU7_b; + }; + + union + { + __IOM uint32_t P0_QSTMACD7; /*!< (@ 0x0000211C) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P0_QSTMACD7_b; + }; + + union + { + __IOM uint32_t P0_QSTMAMU7; /*!< (@ 0x00002120) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P0_QSTMAMU7_b; + }; + + union + { + __IOM uint32_t P0_QSTMAMD7; /*!< (@ 0x00002124) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P0_QSTMAMD7_b; + }; + + union + { + __IOM uint32_t P0_QSFTVL7; /*!< (@ 0x00002128) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P0_QSFTVL7_b; + }; + + union + { + __IOM uint32_t P0_QSFTVLM7; /*!< (@ 0x0000212C) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P0_QSFTVLM7_b; + }; + + union + { + __IOM uint32_t P0_QSFTBL7; /*!< (@ 0x00002130) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P0_QSFTBL7_b; + }; + + union + { + __IM uint32_t P0_QSMFC7; /*!< (@ 0x00002134) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P0_QSMFC7_b; + }; + + union + { + __IM uint32_t P0_QMSPPC7; /*!< (@ 0x00002138) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P0_QMSPPC7_b; + }; + + union + { + __IM uint32_t P0_QMSRPC7; /*!< (@ 0x0000213C) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P0_QMSRPC7_b; + }; + __IM uint32_t RESERVED57[42]; + + union + { + __IOM uint32_t P0_QSEIS; /*!< (@ 0x000021E8) Qci Stream Filter Error Interrupt Status (SDU + * Oversize) */ + + struct + { + __IOM uint32_t QSMOIS : 8; /*!< [7..0] MSDU oversize frames Interrupt status[s] */ + uint32_t : 24; + } P0_QSEIS_b; + }; + + union + { + __IOM uint32_t P0_QSEIE; /*!< (@ 0x000021EC) Qci Stream Filter Error Interrupt Enable */ + + struct + { + __IOM uint32_t QSMOIE : 8; /*!< [7..0] MSDU oversize frames Interrupt Enable[s] */ + uint32_t : 24; + } P0_QSEIE_b; + }; + + union + { + __OM uint32_t P0_QSEID; /*!< (@ 0x000021F0) Qci Stream Filter Error Interrupt Disable */ + + struct + { + __OM uint32_t QSMOID : 8; /*!< [7..0] MSDU oversize frames Interrupt Disable[s] */ + uint32_t : 24; + } P0_QSEID_b; + }; + __IM uint32_t RESERVED58[3]; + + union + { + __IOM uint32_t P0_QGMOD; /*!< (@ 0x00002200) Qci Gate Mode Register */ + + struct + { + __IOM uint32_t QGMOD : 8; /*!< [7..0] Flow gate mode[g] */ + uint32_t : 24; + } P0_QGMOD_b; + }; + + union + { + __IM uint32_t P0_QGPPC; /*!< (@ 0x00002204) Qci Gate (All) Passed Packet Count Port 0 */ + + struct + { + __IM uint32_t QGPPC : 16; /*!< [15..0] Qci gate passed packet count */ + uint32_t : 16; + } P0_QGPPC_b; + }; + + union + { + __IM uint32_t P0_QGDPC0; /*!< (@ 0x00002208) Qci Gate 0 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P0_QGDPC0_b; + }; + __IM uint32_t RESERVED59; + + union + { + __IM uint32_t P0_QGDPC1; /*!< (@ 0x00002210) Qci Gate 1 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P0_QGDPC1_b; + }; + __IM uint32_t RESERVED60; + + union + { + __IM uint32_t P0_QGDPC2; /*!< (@ 0x00002218) Qci Gate 2 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P0_QGDPC2_b; + }; + __IM uint32_t RESERVED61; + + union + { + __IM uint32_t P0_QGDPC3; /*!< (@ 0x00002220) Qci Gate 3 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P0_QGDPC3_b; + }; + __IM uint32_t RESERVED62; + + union + { + __IM uint32_t P0_QGDPC4; /*!< (@ 0x00002228) Qci Gate 4 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P0_QGDPC4_b; + }; + __IM uint32_t RESERVED63; + + union + { + __IM uint32_t P0_QGDPC5; /*!< (@ 0x00002230) Qci Gate 5 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P0_QGDPC5_b; + }; + __IM uint32_t RESERVED64; + + union + { + __IM uint32_t P0_QGDPC6; /*!< (@ 0x00002238) Qci Gate 6 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P0_QGDPC6_b; + }; + __IM uint32_t RESERVED65; + + union + { + __IM uint32_t P0_QGDPC7; /*!< (@ 0x00002240) Qci Gate 7 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P0_QGDPC7_b; + }; + + union + { + __IOM uint32_t P0_QGEIS; /*!< (@ 0x00002244) Qci Gate Error Interrupt Status */ + + struct + { + __IOM uint32_t QGMOIS : 8; /*!< [7..0] Gating error Interrupt status[g] */ + uint32_t : 24; + } P0_QGEIS_b; + }; + + union + { + __IOM uint32_t P0_QGEIE; /*!< (@ 0x00002248) Qci Gate Error Interrupt Enable */ + + struct + { + __IOM uint32_t QGMOIE : 8; /*!< [7..0] Gating error Interrupt Enable[g] */ + uint32_t : 24; + } P0_QGEIE_b; + }; + + union + { + __OM uint32_t P0_QGEID; /*!< (@ 0x0000224C) Qci Gate Error Interrupt Disable */ + + struct + { + __OM uint32_t QGMOID : 8; /*!< [7..0] Gating error Interrupt Disable[g] */ + uint32_t : 24; + } P0_QGEID_b; + }; + + union + { + __IOM uint32_t P0_QMDESC0; /*!< (@ 0x00002250) Qci Port n Flow Meter 0 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P0_QMDESC0_b; + }; + + union + { + __IOM uint32_t P0_QMCBSC0; /*!< (@ 0x00002254) Qci Meter CBS Configuration Port n, Meter 0 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P0_QMCBSC0_b; + }; + + union + { + __IOM uint32_t P0_QMCIRC0; /*!< (@ 0x00002258) Qci Meter CIR Configuration n 0 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P0_QMCIRC0_b; + }; + + union + { + __IM uint32_t P0_QMGPC0; /*!< (@ 0x0000225C) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P0_QMGPC0_b; + }; + + union + { + __IM uint32_t P0_QMRPC0; /*!< (@ 0x00002260) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P0_QMRPC0_b; + }; + + union + { + __IOM uint32_t P0_QMDESC1; /*!< (@ 0x00002264) Qci Port n Flow Meter 1 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P0_QMDESC1_b; + }; + + union + { + __IOM uint32_t P0_QMCBSC1; /*!< (@ 0x00002268) Qci Meter CBS Configuration Port n, Meter 1 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P0_QMCBSC1_b; + }; + + union + { + __IOM uint32_t P0_QMCIRC1; /*!< (@ 0x0000226C) Qci Meter CIR Configuration n 1 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P0_QMCIRC1_b; + }; + + union + { + __IM uint32_t P0_QMGPC1; /*!< (@ 0x00002270) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P0_QMGPC1_b; + }; + + union + { + __IM uint32_t P0_QMRPC1; /*!< (@ 0x00002274) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P0_QMRPC1_b; + }; + + union + { + __IOM uint32_t P0_QMDESC2; /*!< (@ 0x00002278) Qci Port n Flow Meter 2 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P0_QMDESC2_b; + }; + + union + { + __IOM uint32_t P0_QMCBSC2; /*!< (@ 0x0000227C) Qci Meter CBS Configuration Port n, Meter 2 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P0_QMCBSC2_b; + }; + + union + { + __IOM uint32_t P0_QMCIRC2; /*!< (@ 0x00002280) Qci Meter CIR Configuration n 2 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P0_QMCIRC2_b; + }; + + union + { + __IM uint32_t P0_QMGPC2; /*!< (@ 0x00002284) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P0_QMGPC2_b; + }; + + union + { + __IM uint32_t P0_QMRPC2; /*!< (@ 0x00002288) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P0_QMRPC2_b; + }; + + union + { + __IOM uint32_t P0_QMDESC3; /*!< (@ 0x0000228C) Qci Port n Flow Meter 3 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P0_QMDESC3_b; + }; + + union + { + __IOM uint32_t P0_QMCBSC3; /*!< (@ 0x00002290) Qci Meter CBS Configuration Port n, Meter 3 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P0_QMCBSC3_b; + }; + + union + { + __IOM uint32_t P0_QMCIRC3; /*!< (@ 0x00002294) Qci Meter CIR Configuration n 3 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P0_QMCIRC3_b; + }; + + union + { + __IM uint32_t P0_QMGPC3; /*!< (@ 0x00002298) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P0_QMGPC3_b; + }; + + union + { + __IM uint32_t P0_QMRPC3; /*!< (@ 0x0000229C) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P0_QMRPC3_b; + }; + + union + { + __IOM uint32_t P0_QMDESC4; /*!< (@ 0x000022A0) Qci Port n Flow Meter 4 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P0_QMDESC4_b; + }; + + union + { + __IOM uint32_t P0_QMCBSC4; /*!< (@ 0x000022A4) Qci Meter CBS Configuration Port n, Meter 4 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P0_QMCBSC4_b; + }; + + union + { + __IOM uint32_t P0_QMCIRC4; /*!< (@ 0x000022A8) Qci Meter CIR Configuration n 4 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P0_QMCIRC4_b; + }; + + union + { + __IM uint32_t P0_QMGPC4; /*!< (@ 0x000022AC) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P0_QMGPC4_b; + }; + + union + { + __IM uint32_t P0_QMRPC4; /*!< (@ 0x000022B0) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P0_QMRPC4_b; + }; + + union + { + __IOM uint32_t P0_QMDESC5; /*!< (@ 0x000022B4) Qci Port n Flow Meter 5 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P0_QMDESC5_b; + }; + + union + { + __IOM uint32_t P0_QMCBSC5; /*!< (@ 0x000022B8) Qci Meter CBS Configuration Port n, Meter 5 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P0_QMCBSC5_b; + }; + + union + { + __IOM uint32_t P0_QMCIRC5; /*!< (@ 0x000022BC) Qci Meter CIR Configuration n 5 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P0_QMCIRC5_b; + }; + + union + { + __IM uint32_t P0_QMGPC5; /*!< (@ 0x000022C0) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P0_QMGPC5_b; + }; + + union + { + __IM uint32_t P0_QMRPC5; /*!< (@ 0x000022C4) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P0_QMRPC5_b; + }; + + union + { + __IOM uint32_t P0_QMDESC6; /*!< (@ 0x000022C8) Qci Port n Flow Meter 6 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P0_QMDESC6_b; + }; + + union + { + __IOM uint32_t P0_QMCBSC6; /*!< (@ 0x000022CC) Qci Meter CBS Configuration Port n, Meter 6 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P0_QMCBSC6_b; + }; + + union + { + __IOM uint32_t P0_QMCIRC6; /*!< (@ 0x000022D0) Qci Meter CIR Configuration n 6 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P0_QMCIRC6_b; + }; + + union + { + __IM uint32_t P0_QMGPC6; /*!< (@ 0x000022D4) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P0_QMGPC6_b; + }; + + union + { + __IM uint32_t P0_QMRPC6; /*!< (@ 0x000022D8) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P0_QMRPC6_b; + }; + + union + { + __IOM uint32_t P0_QMDESC7; /*!< (@ 0x000022DC) Qci Port n Flow Meter 7 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P0_QMDESC7_b; + }; + + union + { + __IOM uint32_t P0_QMCBSC7; /*!< (@ 0x000022E0) Qci Meter CBS Configuration Port n, Meter 7 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P0_QMCBSC7_b; + }; + + union + { + __IOM uint32_t P0_QMCIRC7; /*!< (@ 0x000022E4) Qci Meter CIR Configuration n 7 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P0_QMCIRC7_b; + }; + + union + { + __IM uint32_t P0_QMGPC7; /*!< (@ 0x000022E8) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P0_QMGPC7_b; + }; + + union + { + __IM uint32_t P0_QMRPC7; /*!< (@ 0x000022EC) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P0_QMRPC7_b; + }; + + union + { + __IOM uint32_t P0_QMEC; /*!< (@ 0x000022F0) Qci Meter Enable Configuration */ + + struct + { + __IOM uint32_t ME : 8; /*!< [7..0] Enable meter[m] */ + uint32_t : 24; + } P0_QMEC_b; + }; + + union + { + __IOM uint32_t P0_QMEIS; /*!< (@ 0x000022F4) Qci Meter Error Interrupt Status */ + + struct + { + __IOM uint32_t QRFIS : 8; /*!< [7..0] Red frames Interrupt status[m] */ + uint32_t : 24; + } P0_QMEIS_b; + }; + + union + { + __IOM uint32_t P0_QMEIE; /*!< (@ 0x000022F8) Qci Meter Error Interrupt Enable */ + + struct + { + __IOM uint32_t QRFIE : 8; /*!< [7..0] Red frames Interrupt Enable[m] */ + uint32_t : 24; + } P0_QMEIE_b; + }; + + union + { + __OM uint32_t P0_QMEID; /*!< (@ 0x000022FC) Qci Meter Error Interrupt Disable */ + + struct + { + __OM uint32_t QRFID : 8; /*!< [7..0] Red frames Interrupt Disable[m] */ + uint32_t : 24; + } P0_QMEID_b; + }; + + union + { + __IOM uint32_t P0_PCP_REMAP; /*!< (@ 0x00002300) Port 0 VLAN Priority Code Point (PCP) Remap */ + + struct + { + __IOM uint32_t PCP_REMAP0 : 3; /*!< [2..0] PCP_REMAP0 */ + __IOM uint32_t PCP_REMAP1 : 3; /*!< [5..3] PCP_REMAP1 */ + __IOM uint32_t PCP_REMAP2 : 3; /*!< [8..6] PCP_REMAP2 */ + __IOM uint32_t PCP_REMAP3 : 3; /*!< [11..9] PCP_REMAP3 */ + __IOM uint32_t PCP_REMAP4 : 3; /*!< [14..12] PCP_REMAP4 */ + __IOM uint32_t PCP_REMAP5 : 3; /*!< [17..15] PCP_REMAP5 */ + __IOM uint32_t PCP_REMAP6 : 3; /*!< [20..18] PCP_REMAP6 */ + __IOM uint32_t PCP_REMAP7 : 3; /*!< [23..21] PCP_REMAP7 */ + uint32_t : 8; + } P0_PCP_REMAP_b; + }; + + union + { + __IOM uint32_t P0_VLAN_TAG; /*!< (@ 0x00002304) Port 0 VLAN TAG Information for Priority Regeneration */ + + struct + { + __IOM uint32_t VID : 12; /*!< [11..0] VID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TPID : 16; /*!< [31..16] TPID */ + } P0_VLAN_TAG_b; + }; + + union + { + __IOM uint32_t P0_VLAN_MODE; /*!< (@ 0x00002308) Port 0 VLAN Mode */ + + struct + { + __IOM uint32_t VITM : 2; /*!< [1..0] VLAN input tagging mode */ + __IOM uint32_t VICM : 2; /*!< [3..2] VLAN input verification mode */ + uint32_t : 28; + } P0_VLAN_MODE_b; + }; + + union + { + __IM uint32_t P0_VIC_DROP_CNT; /*!< (@ 0x0000230C) Port 0 VLAN Ingress Check Drop Frame Counter */ + + struct + { + __IM uint32_t VIC_DROP_CNT : 16; /*!< [15..0] Port n VLAN ingress check drop frame count */ + uint32_t : 16; + } P0_VIC_DROP_CNT_b; + }; + __IM uint32_t RESERVED66[6]; + + union + { + __IM uint32_t P0_LOOKUP_HIT_CNT; /*!< (@ 0x00002328) Port 0 DST Address Lookup Hit Counter */ + + struct + { + __IM uint32_t LOOKUP_HIT_CNT : 24; /*!< [23..0] Port n Lookup hit count */ + uint32_t : 8; + } P0_LOOKUP_HIT_CNT_b; + }; + + union + { + __IOM uint32_t P0_ERROR_STATUS; /*!< (@ 0x0000232C) Port 0 Frame Parser Runtime Error Status */ + + struct + { + __IOM uint32_t SOPERR : 1; /*!< [0..0] SOP error detected in frame parser */ + __IOM uint32_t PUNDSZ : 1; /*!< [1..1] Preemptable frame under size error detected in frame + * parser */ + __IOM uint32_t POVRSZ : 1; /*!< [2..2] Preemptable frame over size error detected in frame parser */ + __IOM uint32_t EUNDSZ : 1; /*!< [3..3] Express frame under size error detected in frame parser */ + __IOM uint32_t EOVRSZ : 1; /*!< [4..4] Express frame over size error detected in frame parser */ + uint32_t : 27; + } P0_ERROR_STATUS_b; + }; + + union + { + __IOM uint32_t P0_ERROR_MASK; /*!< (@ 0x00002330) Port 0 Frame Parser Runtime Error Mask */ + + struct + { + __IOM uint32_t MSOPERR : 1; /*!< [0..0] Error mask of SOPERR (SOP error) */ + __IOM uint32_t MPUNDSZ : 1; /*!< [1..1] Error mask of PUNDSZ (Preemptable frame under size error) */ + __IOM uint32_t MPOVRSZ : 1; /*!< [2..2] Error mask of POVRSZ (Preemptable frame over size error) */ + __IOM uint32_t MEUNDSZ : 1; /*!< [3..3] Error mask of EUNDSZ (Express frame under size error) */ + __IOM uint32_t MEOVRSZ : 1; /*!< [4..4] Error mask of EOVRSZ (Express frame over size error) */ + uint32_t : 27; + } P0_ERROR_MASK_b; + }; + __IM uint32_t RESERVED67[35]; + + union + { + __IM uint32_t CHANNEL_STATE; /*!< (@ 0x000023C0) Enable/Disable State of Ingress Channels */ + + struct + { + __IM uint32_t CH0ACT : 1; /*!< [0..0] CH0ACT */ + __IM uint32_t CH1ACT : 1; /*!< [1..1] CH1ACT */ + __IM uint32_t CH2ACT : 1; /*!< [2..2] CH2ACT */ + uint32_t : 29; + } CHANNEL_STATE_b; + }; + + union + { + __OM uint32_t CHANNEL_ENABLE; /*!< (@ 0x000023C4) Enable Operation of Channel */ + + struct + { + __OM uint32_t CH0ENA : 1; /*!< [0..0] CH0ENA */ + __OM uint32_t CH1ENA : 1; /*!< [1..1] CH1ENA */ + __OM uint32_t CH2ENA : 1; /*!< [2..2] CH2ENA */ + uint32_t : 29; + } CHANNEL_ENABLE_b; + }; + + union + { + __OM uint32_t CHANNEL_DISABLE; /*!< (@ 0x000023C8) Disable and Reset Operation of Channel */ + + struct + { + __OM uint32_t CH0DIS : 1; /*!< [0..0] CH0DIS */ + __OM uint32_t CH1DIS : 1; /*!< [1..1] CH1DIS */ + __OM uint32_t CH2DIS : 1; /*!< [2..2] CH2DIS */ + uint32_t : 29; + } CHANNEL_DISABLE_b; + }; + + union + { + __IOM uint32_t ASI_MEM_WDATA[4]; /*!< (@ 0x000023CC) Memory Write Data Word [0..3] */ + + struct + { + __IOM uint32_t WDATA : 32; /*!< [31..0] Destination MAC address regeneration write data */ + } ASI_MEM_WDATA_b[4]; + }; + + union + { + __IOM uint32_t ASI_MEM_ADDR; /*!< (@ 0x000023DC) Memory Address and R/W Control */ + + struct + { + __IOM uint32_t ADDR : 7; /*!< [6..0] Memory access address */ + __IOM uint32_t MEM_WEN : 1; /*!< [7..7] MEM_WEN */ + __IOM uint32_t MEM_REQ : 3; /*!< [10..8] Memory access request */ + uint32_t : 21; + } ASI_MEM_ADDR_b; + }; + + union + { + __IM uint32_t ASI_MEM_RDATA[4]; /*!< (@ 0x000023E0) Memory Read Data Word [0..3] */ + + struct + { + __IM uint32_t RDATA : 32; /*!< [31..0] Destination MAC address regeneration read data */ + } ASI_MEM_RDATA_b[4]; + }; + __IM uint32_t RESERVED68[4]; + + union + { + __IOM uint32_t P1_QSTMACU0; /*!< (@ 0x00002400) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P1_QSTMACU0_b; + }; + + union + { + __IOM uint32_t P1_QSTMACD0; /*!< (@ 0x00002404) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P1_QSTMACD0_b; + }; + + union + { + __IOM uint32_t P1_QSTMAMU0; /*!< (@ 0x00002408) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P1_QSTMAMU0_b; + }; + + union + { + __IOM uint32_t P1_QSTMAMD0; /*!< (@ 0x0000240C) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P1_QSTMAMD0_b; + }; + + union + { + __IOM uint32_t P1_QSFTVL0; /*!< (@ 0x00002410) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P1_QSFTVL0_b; + }; + + union + { + __IOM uint32_t P1_QSFTVLM0; /*!< (@ 0x00002414) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P1_QSFTVLM0_b; + }; + + union + { + __IOM uint32_t P1_QSFTBL0; /*!< (@ 0x00002418) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P1_QSFTBL0_b; + }; + + union + { + __IM uint32_t P1_QSMFC0; /*!< (@ 0x0000241C) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P1_QSMFC0_b; + }; + + union + { + __IM uint32_t P1_QMSPPC0; /*!< (@ 0x00002420) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P1_QMSPPC0_b; + }; + + union + { + __IM uint32_t P1_QMSRPC0; /*!< (@ 0x00002424) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P1_QMSRPC0_b; + }; + + union + { + __IOM uint32_t P1_QSTMACU1; /*!< (@ 0x00002428) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P1_QSTMACU1_b; + }; + + union + { + __IOM uint32_t P1_QSTMACD1; /*!< (@ 0x0000242C) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P1_QSTMACD1_b; + }; + + union + { + __IOM uint32_t P1_QSTMAMU1; /*!< (@ 0x00002430) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P1_QSTMAMU1_b; + }; + + union + { + __IOM uint32_t P1_QSTMAMD1; /*!< (@ 0x00002434) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P1_QSTMAMD1_b; + }; + + union + { + __IOM uint32_t P1_QSFTVL1; /*!< (@ 0x00002438) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P1_QSFTVL1_b; + }; + + union + { + __IOM uint32_t P1_QSFTVLM1; /*!< (@ 0x0000243C) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P1_QSFTVLM1_b; + }; + + union + { + __IOM uint32_t P1_QSFTBL1; /*!< (@ 0x00002440) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P1_QSFTBL1_b; + }; + + union + { + __IM uint32_t P1_QSMFC1; /*!< (@ 0x00002444) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P1_QSMFC1_b; + }; + + union + { + __IM uint32_t P1_QMSPPC1; /*!< (@ 0x00002448) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P1_QMSPPC1_b; + }; + + union + { + __IM uint32_t P1_QMSRPC1; /*!< (@ 0x0000244C) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P1_QMSRPC1_b; + }; + + union + { + __IOM uint32_t P1_QSTMACU2; /*!< (@ 0x00002450) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P1_QSTMACU2_b; + }; + + union + { + __IOM uint32_t P1_QSTMACD2; /*!< (@ 0x00002454) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P1_QSTMACD2_b; + }; + + union + { + __IOM uint32_t P1_QSTMAMU2; /*!< (@ 0x00002458) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P1_QSTMAMU2_b; + }; + + union + { + __IOM uint32_t P1_QSTMAMD2; /*!< (@ 0x0000245C) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P1_QSTMAMD2_b; + }; + + union + { + __IOM uint32_t P1_QSFTVL2; /*!< (@ 0x00002460) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P1_QSFTVL2_b; + }; + + union + { + __IOM uint32_t P1_QSFTVLM2; /*!< (@ 0x00002464) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P1_QSFTVLM2_b; + }; + + union + { + __IOM uint32_t P1_QSFTBL2; /*!< (@ 0x00002468) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P1_QSFTBL2_b; + }; + + union + { + __IM uint32_t P1_QSMFC2; /*!< (@ 0x0000246C) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P1_QSMFC2_b; + }; + + union + { + __IM uint32_t P1_QMSPPC2; /*!< (@ 0x00002470) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P1_QMSPPC2_b; + }; + + union + { + __IM uint32_t P1_QMSRPC2; /*!< (@ 0x00002474) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P1_QMSRPC2_b; + }; + + union + { + __IOM uint32_t P1_QSTMACU3; /*!< (@ 0x00002478) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P1_QSTMACU3_b; + }; + + union + { + __IOM uint32_t P1_QSTMACD3; /*!< (@ 0x0000247C) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P1_QSTMACD3_b; + }; + + union + { + __IOM uint32_t P1_QSTMAMU3; /*!< (@ 0x00002480) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P1_QSTMAMU3_b; + }; + + union + { + __IOM uint32_t P1_QSTMAMD3; /*!< (@ 0x00002484) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P1_QSTMAMD3_b; + }; + + union + { + __IOM uint32_t P1_QSFTVL3; /*!< (@ 0x00002488) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P1_QSFTVL3_b; + }; + + union + { + __IOM uint32_t P1_QSFTVLM3; /*!< (@ 0x0000248C) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P1_QSFTVLM3_b; + }; + + union + { + __IOM uint32_t P1_QSFTBL3; /*!< (@ 0x00002490) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P1_QSFTBL3_b; + }; + + union + { + __IM uint32_t P1_QSMFC3; /*!< (@ 0x00002494) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P1_QSMFC3_b; + }; + + union + { + __IM uint32_t P1_QMSPPC3; /*!< (@ 0x00002498) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P1_QMSPPC3_b; + }; + + union + { + __IM uint32_t P1_QMSRPC3; /*!< (@ 0x0000249C) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P1_QMSRPC3_b; + }; + + union + { + __IOM uint32_t P1_QSTMACU4; /*!< (@ 0x000024A0) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P1_QSTMACU4_b; + }; + + union + { + __IOM uint32_t P1_QSTMACD4; /*!< (@ 0x000024A4) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P1_QSTMACD4_b; + }; + + union + { + __IOM uint32_t P1_QSTMAMU4; /*!< (@ 0x000024A8) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P1_QSTMAMU4_b; + }; + + union + { + __IOM uint32_t P1_QSTMAMD4; /*!< (@ 0x000024AC) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P1_QSTMAMD4_b; + }; + + union + { + __IOM uint32_t P1_QSFTVL4; /*!< (@ 0x000024B0) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P1_QSFTVL4_b; + }; + + union + { + __IOM uint32_t P1_QSFTVLM4; /*!< (@ 0x000024B4) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P1_QSFTVLM4_b; + }; + + union + { + __IOM uint32_t P1_QSFTBL4; /*!< (@ 0x000024B8) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P1_QSFTBL4_b; + }; + + union + { + __IM uint32_t P1_QSMFC4; /*!< (@ 0x000024BC) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P1_QSMFC4_b; + }; + + union + { + __IM uint32_t P1_QMSPPC4; /*!< (@ 0x000024C0) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P1_QMSPPC4_b; + }; + + union + { + __IM uint32_t P1_QMSRPC4; /*!< (@ 0x000024C4) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P1_QMSRPC4_b; + }; + + union + { + __IOM uint32_t P1_QSTMACU5; /*!< (@ 0x000024C8) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P1_QSTMACU5_b; + }; + + union + { + __IOM uint32_t P1_QSTMACD5; /*!< (@ 0x000024CC) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P1_QSTMACD5_b; + }; + + union + { + __IOM uint32_t P1_QSTMAMU5; /*!< (@ 0x000024D0) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P1_QSTMAMU5_b; + }; + + union + { + __IOM uint32_t P1_QSTMAMD5; /*!< (@ 0x000024D4) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P1_QSTMAMD5_b; + }; + + union + { + __IOM uint32_t P1_QSFTVL5; /*!< (@ 0x000024D8) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P1_QSFTVL5_b; + }; + + union + { + __IOM uint32_t P1_QSFTVLM5; /*!< (@ 0x000024DC) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P1_QSFTVLM5_b; + }; + + union + { + __IOM uint32_t P1_QSFTBL5; /*!< (@ 0x000024E0) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P1_QSFTBL5_b; + }; + + union + { + __IM uint32_t P1_QSMFC5; /*!< (@ 0x000024E4) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P1_QSMFC5_b; + }; + + union + { + __IM uint32_t P1_QMSPPC5; /*!< (@ 0x000024E8) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P1_QMSPPC5_b; + }; + + union + { + __IM uint32_t P1_QMSRPC5; /*!< (@ 0x000024EC) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P1_QMSRPC5_b; + }; + + union + { + __IOM uint32_t P1_QSTMACU6; /*!< (@ 0x000024F0) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P1_QSTMACU6_b; + }; + + union + { + __IOM uint32_t P1_QSTMACD6; /*!< (@ 0x000024F4) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P1_QSTMACD6_b; + }; + + union + { + __IOM uint32_t P1_QSTMAMU6; /*!< (@ 0x000024F8) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P1_QSTMAMU6_b; + }; + + union + { + __IOM uint32_t P1_QSTMAMD6; /*!< (@ 0x000024FC) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P1_QSTMAMD6_b; + }; + + union + { + __IOM uint32_t P1_QSFTVL6; /*!< (@ 0x00002500) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P1_QSFTVL6_b; + }; + + union + { + __IOM uint32_t P1_QSFTVLM6; /*!< (@ 0x00002504) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P1_QSFTVLM6_b; + }; + + union + { + __IOM uint32_t P1_QSFTBL6; /*!< (@ 0x00002508) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P1_QSFTBL6_b; + }; + + union + { + __IM uint32_t P1_QSMFC6; /*!< (@ 0x0000250C) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P1_QSMFC6_b; + }; + + union + { + __IM uint32_t P1_QMSPPC6; /*!< (@ 0x00002510) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P1_QMSPPC6_b; + }; + + union + { + __IM uint32_t P1_QMSRPC6; /*!< (@ 0x00002514) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P1_QMSRPC6_b; + }; + + union + { + __IOM uint32_t P1_QSTMACU7; /*!< (@ 0x00002518) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P1_QSTMACU7_b; + }; + + union + { + __IOM uint32_t P1_QSTMACD7; /*!< (@ 0x0000251C) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P1_QSTMACD7_b; + }; + + union + { + __IOM uint32_t P1_QSTMAMU7; /*!< (@ 0x00002520) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P1_QSTMAMU7_b; + }; + + union + { + __IOM uint32_t P1_QSTMAMD7; /*!< (@ 0x00002524) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P1_QSTMAMD7_b; + }; + + union + { + __IOM uint32_t P1_QSFTVL7; /*!< (@ 0x00002528) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P1_QSFTVL7_b; + }; + + union + { + __IOM uint32_t P1_QSFTVLM7; /*!< (@ 0x0000252C) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P1_QSFTVLM7_b; + }; + + union + { + __IOM uint32_t P1_QSFTBL7; /*!< (@ 0x00002530) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P1_QSFTBL7_b; + }; + + union + { + __IM uint32_t P1_QSMFC7; /*!< (@ 0x00002534) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P1_QSMFC7_b; + }; + + union + { + __IM uint32_t P1_QMSPPC7; /*!< (@ 0x00002538) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P1_QMSPPC7_b; + }; + + union + { + __IM uint32_t P1_QMSRPC7; /*!< (@ 0x0000253C) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P1_QMSRPC7_b; + }; + __IM uint32_t RESERVED69[42]; + + union + { + __IOM uint32_t P1_QSEIS; /*!< (@ 0x000025E8) Qci Stream Filter Error Interrupt Status (SDU + * Oversize) */ + + struct + { + __IOM uint32_t QSMOIS : 8; /*!< [7..0] MSDU oversize frames Interrupt status[s] */ + uint32_t : 24; + } P1_QSEIS_b; + }; + + union + { + __IOM uint32_t P1_QSEIE; /*!< (@ 0x000025EC) Qci Stream Filter Error Interrupt Enable */ + + struct + { + __IOM uint32_t QSMOIE : 8; /*!< [7..0] MSDU oversize frames Interrupt Enable[s] */ + uint32_t : 24; + } P1_QSEIE_b; + }; + + union + { + __OM uint32_t P1_QSEID; /*!< (@ 0x000025F0) Qci Stream Filter Error Interrupt Disable */ + + struct + { + __OM uint32_t QSMOID : 8; /*!< [7..0] MSDU oversize frames Interrupt Disable[s] */ + uint32_t : 24; + } P1_QSEID_b; + }; + __IM uint32_t RESERVED70[3]; + + union + { + __IOM uint32_t P1_QGMOD; /*!< (@ 0x00002600) Qci Gate Mode Register */ + + struct + { + __IOM uint32_t QGMOD : 8; /*!< [7..0] Flow gate mode[g] */ + uint32_t : 24; + } P1_QGMOD_b; + }; + + union + { + __IM uint32_t P1_QGPPC; /*!< (@ 0x00002604) Qci Gate (All) Passed Packet Count Port 1 */ + + struct + { + __IM uint32_t QGPPC : 16; /*!< [15..0] Qci gate passed packet count */ + uint32_t : 16; + } P1_QGPPC_b; + }; + + union + { + __IM uint32_t P1_QGDPC0; /*!< (@ 0x00002608) Qci Gate 0 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P1_QGDPC0_b; + }; + __IM uint32_t RESERVED71; + + union + { + __IM uint32_t P1_QGDPC1; /*!< (@ 0x00002610) Qci Gate 1 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P1_QGDPC1_b; + }; + __IM uint32_t RESERVED72; + + union + { + __IM uint32_t P1_QGDPC2; /*!< (@ 0x00002618) Qci Gate 2 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P1_QGDPC2_b; + }; + __IM uint32_t RESERVED73; + + union + { + __IM uint32_t P1_QGDPC3; /*!< (@ 0x00002620) Qci Gate 3 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P1_QGDPC3_b; + }; + __IM uint32_t RESERVED74; + + union + { + __IM uint32_t P1_QGDPC4; /*!< (@ 0x00002628) Qci Gate 4 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P1_QGDPC4_b; + }; + __IM uint32_t RESERVED75; + + union + { + __IM uint32_t P1_QGDPC5; /*!< (@ 0x00002630) Qci Gate 5 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P1_QGDPC5_b; + }; + __IM uint32_t RESERVED76; + + union + { + __IM uint32_t P1_QGDPC6; /*!< (@ 0x00002638) Qci Gate 6 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P1_QGDPC6_b; + }; + __IM uint32_t RESERVED77; + + union + { + __IM uint32_t P1_QGDPC7; /*!< (@ 0x00002640) Qci Gate 7 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P1_QGDPC7_b; + }; + + union + { + __IOM uint32_t P1_QGEIS; /*!< (@ 0x00002644) Qci Gate Error Interrupt Status */ + + struct + { + __IOM uint32_t QGMOIS : 8; /*!< [7..0] Gating error Interrupt status[g] */ + uint32_t : 24; + } P1_QGEIS_b; + }; + + union + { + __IOM uint32_t P1_QGEIE; /*!< (@ 0x00002648) Qci Gate Error Interrupt Enable */ + + struct + { + __IOM uint32_t QGMOIE : 8; /*!< [7..0] Gating error Interrupt Enable[g] */ + uint32_t : 24; + } P1_QGEIE_b; + }; + + union + { + __OM uint32_t P1_QGEID; /*!< (@ 0x0000264C) Qci Gate Error Interrupt Disable */ + + struct + { + __OM uint32_t QGMOID : 8; /*!< [7..0] Gating error Interrupt Disable[g] */ + uint32_t : 24; + } P1_QGEID_b; + }; + + union + { + __IOM uint32_t P1_QMDESC0; /*!< (@ 0x00002650) Qci Port n Flow Meter 0 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P1_QMDESC0_b; + }; + + union + { + __IOM uint32_t P1_QMCBSC0; /*!< (@ 0x00002654) Qci Meter CBS Configuration Port n, Meter 0 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P1_QMCBSC0_b; + }; + + union + { + __IOM uint32_t P1_QMCIRC0; /*!< (@ 0x00002658) Qci Meter CIR Configuration n 0 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P1_QMCIRC0_b; + }; + + union + { + __IM uint32_t P1_QMGPC0; /*!< (@ 0x0000265C) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P1_QMGPC0_b; + }; + + union + { + __IM uint32_t P1_QMRPC0; /*!< (@ 0x00002660) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P1_QMRPC0_b; + }; + + union + { + __IOM uint32_t P1_QMDESC1; /*!< (@ 0x00002664) Qci Port n Flow Meter 1 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P1_QMDESC1_b; + }; + + union + { + __IOM uint32_t P1_QMCBSC1; /*!< (@ 0x00002668) Qci Meter CBS Configuration Port n, Meter 1 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P1_QMCBSC1_b; + }; + + union + { + __IOM uint32_t P1_QMCIRC1; /*!< (@ 0x0000266C) Qci Meter CIR Configuration n 1 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P1_QMCIRC1_b; + }; + + union + { + __IM uint32_t P1_QMGPC1; /*!< (@ 0x00002670) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P1_QMGPC1_b; + }; + + union + { + __IM uint32_t P1_QMRPC1; /*!< (@ 0x00002674) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P1_QMRPC1_b; + }; + + union + { + __IOM uint32_t P1_QMDESC2; /*!< (@ 0x00002678) Qci Port n Flow Meter 2 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P1_QMDESC2_b; + }; + + union + { + __IOM uint32_t P1_QMCBSC2; /*!< (@ 0x0000267C) Qci Meter CBS Configuration Port n, Meter 2 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P1_QMCBSC2_b; + }; + + union + { + __IOM uint32_t P1_QMCIRC2; /*!< (@ 0x00002680) Qci Meter CIR Configuration n 2 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P1_QMCIRC2_b; + }; + + union + { + __IM uint32_t P1_QMGPC2; /*!< (@ 0x00002684) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P1_QMGPC2_b; + }; + + union + { + __IM uint32_t P1_QMRPC2; /*!< (@ 0x00002688) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P1_QMRPC2_b; + }; + + union + { + __IOM uint32_t P1_QMDESC3; /*!< (@ 0x0000268C) Qci Port n Flow Meter 3 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P1_QMDESC3_b; + }; + + union + { + __IOM uint32_t P1_QMCBSC3; /*!< (@ 0x00002690) Qci Meter CBS Configuration Port n, Meter 3 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P1_QMCBSC3_b; + }; + + union + { + __IOM uint32_t P1_QMCIRC3; /*!< (@ 0x00002694) Qci Meter CIR Configuration n 3 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P1_QMCIRC3_b; + }; + + union + { + __IM uint32_t P1_QMGPC3; /*!< (@ 0x00002698) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P1_QMGPC3_b; + }; + + union + { + __IM uint32_t P1_QMRPC3; /*!< (@ 0x0000269C) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P1_QMRPC3_b; + }; + + union + { + __IOM uint32_t P1_QMDESC4; /*!< (@ 0x000026A0) Qci Port n Flow Meter 4 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P1_QMDESC4_b; + }; + + union + { + __IOM uint32_t P1_QMCBSC4; /*!< (@ 0x000026A4) Qci Meter CBS Configuration Port n, Meter 4 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P1_QMCBSC4_b; + }; + + union + { + __IOM uint32_t P1_QMCIRC4; /*!< (@ 0x000026A8) Qci Meter CIR Configuration n 4 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P1_QMCIRC4_b; + }; + + union + { + __IM uint32_t P1_QMGPC4; /*!< (@ 0x000026AC) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P1_QMGPC4_b; + }; + + union + { + __IM uint32_t P1_QMRPC4; /*!< (@ 0x000026B0) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P1_QMRPC4_b; + }; + + union + { + __IOM uint32_t P1_QMDESC5; /*!< (@ 0x000026B4) Qci Port n Flow Meter 5 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P1_QMDESC5_b; + }; + + union + { + __IOM uint32_t P1_QMCBSC5; /*!< (@ 0x000026B8) Qci Meter CBS Configuration Port n, Meter 5 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P1_QMCBSC5_b; + }; + + union + { + __IOM uint32_t P1_QMCIRC5; /*!< (@ 0x000026BC) Qci Meter CIR Configuration n 5 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P1_QMCIRC5_b; + }; + + union + { + __IM uint32_t P1_QMGPC5; /*!< (@ 0x000026C0) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P1_QMGPC5_b; + }; + + union + { + __IM uint32_t P1_QMRPC5; /*!< (@ 0x000026C4) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P1_QMRPC5_b; + }; + + union + { + __IOM uint32_t P1_QMDESC6; /*!< (@ 0x000026C8) Qci Port n Flow Meter 6 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P1_QMDESC6_b; + }; + + union + { + __IOM uint32_t P1_QMCBSC6; /*!< (@ 0x000026CC) Qci Meter CBS Configuration Port n, Meter 6 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P1_QMCBSC6_b; + }; + + union + { + __IOM uint32_t P1_QMCIRC6; /*!< (@ 0x000026D0) Qci Meter CIR Configuration n 6 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P1_QMCIRC6_b; + }; + + union + { + __IM uint32_t P1_QMGPC6; /*!< (@ 0x000026D4) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P1_QMGPC6_b; + }; + + union + { + __IM uint32_t P1_QMRPC6; /*!< (@ 0x000026D8) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P1_QMRPC6_b; + }; + + union + { + __IOM uint32_t P1_QMDESC7; /*!< (@ 0x000026DC) Qci Port n Flow Meter 7 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P1_QMDESC7_b; + }; + + union + { + __IOM uint32_t P1_QMCBSC7; /*!< (@ 0x000026E0) Qci Meter CBS Configuration Port n, Meter 7 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P1_QMCBSC7_b; + }; + + union + { + __IOM uint32_t P1_QMCIRC7; /*!< (@ 0x000026E4) Qci Meter CIR Configuration n 7 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P1_QMCIRC7_b; + }; + + union + { + __IM uint32_t P1_QMGPC7; /*!< (@ 0x000026E8) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P1_QMGPC7_b; + }; + + union + { + __IM uint32_t P1_QMRPC7; /*!< (@ 0x000026EC) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P1_QMRPC7_b; + }; + + union + { + __IOM uint32_t P1_QMEC; /*!< (@ 0x000026F0) Qci Meter Enable Configuration */ + + struct + { + __IOM uint32_t ME : 8; /*!< [7..0] Enable meter[m] */ + uint32_t : 24; + } P1_QMEC_b; + }; + + union + { + __IOM uint32_t P1_QMEIS; /*!< (@ 0x000026F4) Qci Meter Error Interrupt Status */ + + struct + { + __IOM uint32_t QRFIS : 8; /*!< [7..0] Red frames Interrupt status[m] */ + uint32_t : 24; + } P1_QMEIS_b; + }; + + union + { + __IOM uint32_t P1_QMEIE; /*!< (@ 0x000026F8) Qci Meter Error Interrupt Enable */ + + struct + { + __IOM uint32_t QRFIE : 8; /*!< [7..0] Red frames Interrupt Enable[m] */ + uint32_t : 24; + } P1_QMEIE_b; + }; + + union + { + __OM uint32_t P1_QMEID; /*!< (@ 0x000026FC) Qci Meter Error Interrupt Disable */ + + struct + { + __OM uint32_t QRFID : 8; /*!< [7..0] Red frames Interrupt Disable[m] */ + uint32_t : 24; + } P1_QMEID_b; + }; + + union + { + __IOM uint32_t P1_PCP_REMAP; /*!< (@ 0x00002700) Port 1 VLAN Priority Code Point (PCP) Remap */ + + struct + { + __IOM uint32_t PCP_REMAP0 : 3; /*!< [2..0] PCP_REMAP0 */ + __IOM uint32_t PCP_REMAP1 : 3; /*!< [5..3] PCP_REMAP1 */ + __IOM uint32_t PCP_REMAP2 : 3; /*!< [8..6] PCP_REMAP2 */ + __IOM uint32_t PCP_REMAP3 : 3; /*!< [11..9] PCP_REMAP3 */ + __IOM uint32_t PCP_REMAP4 : 3; /*!< [14..12] PCP_REMAP4 */ + __IOM uint32_t PCP_REMAP5 : 3; /*!< [17..15] PCP_REMAP5 */ + __IOM uint32_t PCP_REMAP6 : 3; /*!< [20..18] PCP_REMAP6 */ + __IOM uint32_t PCP_REMAP7 : 3; /*!< [23..21] PCP_REMAP7 */ + uint32_t : 8; + } P1_PCP_REMAP_b; + }; + + union + { + __IOM uint32_t P1_VLAN_TAG; /*!< (@ 0x00002704) Port 1 VLAN TAG Information for Priority Regeneration */ + + struct + { + __IOM uint32_t VID : 12; /*!< [11..0] VID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TPID : 16; /*!< [31..16] TPID */ + } P1_VLAN_TAG_b; + }; + + union + { + __IOM uint32_t P1_VLAN_MODE; /*!< (@ 0x00002708) Port 1 VLAN Mode */ + + struct + { + __IOM uint32_t VITM : 2; /*!< [1..0] VLAN input tagging mode */ + __IOM uint32_t VICM : 2; /*!< [3..2] VLAN input verification mode */ + uint32_t : 28; + } P1_VLAN_MODE_b; + }; + + union + { + __IM uint32_t P1_VIC_DROP_CNT; /*!< (@ 0x0000270C) Port 1 VLAN Ingress Check Drop Frame Counter */ + + struct + { + __IM uint32_t VIC_DROP_CNT : 16; /*!< [15..0] Port n VLAN ingress check drop frame count */ + uint32_t : 16; + } P1_VIC_DROP_CNT_b; + }; + __IM uint32_t RESERVED78[6]; + + union + { + __IM uint32_t P1_LOOKUP_HIT_CNT; /*!< (@ 0x00002728) Port 1 DST Address Lookup Hit Counter */ + + struct + { + __IM uint32_t LOOKUP_HIT_CNT : 24; /*!< [23..0] Port n Lookup hit count */ + uint32_t : 8; + } P1_LOOKUP_HIT_CNT_b; + }; + + union + { + __IOM uint32_t P1_ERROR_STATUS; /*!< (@ 0x0000272C) Port 1 Frame Parser Runtime Error Status */ + + struct + { + __IOM uint32_t SOPERR : 1; /*!< [0..0] SOP error detected in frame parser */ + __IOM uint32_t PUNDSZ : 1; /*!< [1..1] Preemptable frame under size error detected in frame + * parser */ + __IOM uint32_t POVRSZ : 1; /*!< [2..2] Preemptable frame over size error detected in frame parser */ + __IOM uint32_t EUNDSZ : 1; /*!< [3..3] Express frame under size error detected in frame parser */ + __IOM uint32_t EOVRSZ : 1; /*!< [4..4] Express frame over size error detected in frame parser */ + uint32_t : 27; + } P1_ERROR_STATUS_b; + }; + + union + { + __IOM uint32_t P1_ERROR_MASK; /*!< (@ 0x00002730) Port 1 Frame Parser Runtime Error Mask */ + + struct + { + __IOM uint32_t MSOPERR : 1; /*!< [0..0] Error mask of SOPERR (SOP error) */ + __IOM uint32_t MPUNDSZ : 1; /*!< [1..1] Error mask of PUNDSZ (Preemptable frame under size error) */ + __IOM uint32_t MPOVRSZ : 1; /*!< [2..2] Error mask of POVRSZ (Preemptable frame over size error) */ + __IOM uint32_t MEUNDSZ : 1; /*!< [3..3] Error mask of EUNDSZ (Express frame under size error) */ + __IOM uint32_t MEOVRSZ : 1; /*!< [4..4] Error mask of EOVRSZ (Express frame over size error) */ + uint32_t : 27; + } P1_ERROR_MASK_b; + }; + __IM uint32_t RESERVED79[51]; + + union + { + __IOM uint32_t P2_QSTMACU0; /*!< (@ 0x00002800) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P2_QSTMACU0_b; + }; + + union + { + __IOM uint32_t P2_QSTMACD0; /*!< (@ 0x00002804) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P2_QSTMACD0_b; + }; + + union + { + __IOM uint32_t P2_QSTMAMU0; /*!< (@ 0x00002808) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P2_QSTMAMU0_b; + }; + + union + { + __IOM uint32_t P2_QSTMAMD0; /*!< (@ 0x0000280C) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P2_QSTMAMD0_b; + }; + + union + { + __IOM uint32_t P2_QSFTVL0; /*!< (@ 0x00002810) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P2_QSFTVL0_b; + }; + + union + { + __IOM uint32_t P2_QSFTVLM0; /*!< (@ 0x00002814) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P2_QSFTVLM0_b; + }; + + union + { + __IOM uint32_t P2_QSFTBL0; /*!< (@ 0x00002818) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P2_QSFTBL0_b; + }; + + union + { + __IM uint32_t P2_QSMFC0; /*!< (@ 0x0000281C) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P2_QSMFC0_b; + }; + + union + { + __IM uint32_t P2_QMSPPC0; /*!< (@ 0x00002820) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P2_QMSPPC0_b; + }; + + union + { + __IM uint32_t P2_QMSRPC0; /*!< (@ 0x00002824) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P2_QMSRPC0_b; + }; + + union + { + __IOM uint32_t P2_QSTMACU1; /*!< (@ 0x00002828) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P2_QSTMACU1_b; + }; + + union + { + __IOM uint32_t P2_QSTMACD1; /*!< (@ 0x0000282C) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P2_QSTMACD1_b; + }; + + union + { + __IOM uint32_t P2_QSTMAMU1; /*!< (@ 0x00002830) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P2_QSTMAMU1_b; + }; + + union + { + __IOM uint32_t P2_QSTMAMD1; /*!< (@ 0x00002834) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P2_QSTMAMD1_b; + }; + + union + { + __IOM uint32_t P2_QSFTVL1; /*!< (@ 0x00002838) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P2_QSFTVL1_b; + }; + + union + { + __IOM uint32_t P2_QSFTVLM1; /*!< (@ 0x0000283C) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P2_QSFTVLM1_b; + }; + + union + { + __IOM uint32_t P2_QSFTBL1; /*!< (@ 0x00002840) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P2_QSFTBL1_b; + }; + + union + { + __IM uint32_t P2_QSMFC1; /*!< (@ 0x00002844) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P2_QSMFC1_b; + }; + + union + { + __IM uint32_t P2_QMSPPC1; /*!< (@ 0x00002848) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P2_QMSPPC1_b; + }; + + union + { + __IM uint32_t P2_QMSRPC1; /*!< (@ 0x0000284C) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P2_QMSRPC1_b; + }; + + union + { + __IOM uint32_t P2_QSTMACU2; /*!< (@ 0x00002850) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P2_QSTMACU2_b; + }; + + union + { + __IOM uint32_t P2_QSTMACD2; /*!< (@ 0x00002854) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P2_QSTMACD2_b; + }; + + union + { + __IOM uint32_t P2_QSTMAMU2; /*!< (@ 0x00002858) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P2_QSTMAMU2_b; + }; + + union + { + __IOM uint32_t P2_QSTMAMD2; /*!< (@ 0x0000285C) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P2_QSTMAMD2_b; + }; + + union + { + __IOM uint32_t P2_QSFTVL2; /*!< (@ 0x00002860) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P2_QSFTVL2_b; + }; + + union + { + __IOM uint32_t P2_QSFTVLM2; /*!< (@ 0x00002864) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P2_QSFTVLM2_b; + }; + + union + { + __IOM uint32_t P2_QSFTBL2; /*!< (@ 0x00002868) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P2_QSFTBL2_b; + }; + + union + { + __IM uint32_t P2_QSMFC2; /*!< (@ 0x0000286C) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P2_QSMFC2_b; + }; + + union + { + __IM uint32_t P2_QMSPPC2; /*!< (@ 0x00002870) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P2_QMSPPC2_b; + }; + + union + { + __IM uint32_t P2_QMSRPC2; /*!< (@ 0x00002874) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P2_QMSRPC2_b; + }; + + union + { + __IOM uint32_t P2_QSTMACU3; /*!< (@ 0x00002878) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P2_QSTMACU3_b; + }; + + union + { + __IOM uint32_t P2_QSTMACD3; /*!< (@ 0x0000287C) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P2_QSTMACD3_b; + }; + + union + { + __IOM uint32_t P2_QSTMAMU3; /*!< (@ 0x00002880) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P2_QSTMAMU3_b; + }; + + union + { + __IOM uint32_t P2_QSTMAMD3; /*!< (@ 0x00002884) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P2_QSTMAMD3_b; + }; + + union + { + __IOM uint32_t P2_QSFTVL3; /*!< (@ 0x00002888) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P2_QSFTVL3_b; + }; + + union + { + __IOM uint32_t P2_QSFTVLM3; /*!< (@ 0x0000288C) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P2_QSFTVLM3_b; + }; + + union + { + __IOM uint32_t P2_QSFTBL3; /*!< (@ 0x00002890) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P2_QSFTBL3_b; + }; + + union + { + __IM uint32_t P2_QSMFC3; /*!< (@ 0x00002894) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P2_QSMFC3_b; + }; + + union + { + __IM uint32_t P2_QMSPPC3; /*!< (@ 0x00002898) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P2_QMSPPC3_b; + }; + + union + { + __IM uint32_t P2_QMSRPC3; /*!< (@ 0x0000289C) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P2_QMSRPC3_b; + }; + + union + { + __IOM uint32_t P2_QSTMACU4; /*!< (@ 0x000028A0) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P2_QSTMACU4_b; + }; + + union + { + __IOM uint32_t P2_QSTMACD4; /*!< (@ 0x000028A4) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P2_QSTMACD4_b; + }; + + union + { + __IOM uint32_t P2_QSTMAMU4; /*!< (@ 0x000028A8) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P2_QSTMAMU4_b; + }; + + union + { + __IOM uint32_t P2_QSTMAMD4; /*!< (@ 0x000028AC) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P2_QSTMAMD4_b; + }; + + union + { + __IOM uint32_t P2_QSFTVL4; /*!< (@ 0x000028B0) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P2_QSFTVL4_b; + }; + + union + { + __IOM uint32_t P2_QSFTVLM4; /*!< (@ 0x000028B4) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P2_QSFTVLM4_b; + }; + + union + { + __IOM uint32_t P2_QSFTBL4; /*!< (@ 0x000028B8) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P2_QSFTBL4_b; + }; + + union + { + __IM uint32_t P2_QSMFC4; /*!< (@ 0x000028BC) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P2_QSMFC4_b; + }; + + union + { + __IM uint32_t P2_QMSPPC4; /*!< (@ 0x000028C0) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P2_QMSPPC4_b; + }; + + union + { + __IM uint32_t P2_QMSRPC4; /*!< (@ 0x000028C4) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P2_QMSRPC4_b; + }; + + union + { + __IOM uint32_t P2_QSTMACU5; /*!< (@ 0x000028C8) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P2_QSTMACU5_b; + }; + + union + { + __IOM uint32_t P2_QSTMACD5; /*!< (@ 0x000028CC) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P2_QSTMACD5_b; + }; + + union + { + __IOM uint32_t P2_QSTMAMU5; /*!< (@ 0x000028D0) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P2_QSTMAMU5_b; + }; + + union + { + __IOM uint32_t P2_QSTMAMD5; /*!< (@ 0x000028D4) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P2_QSTMAMD5_b; + }; + + union + { + __IOM uint32_t P2_QSFTVL5; /*!< (@ 0x000028D8) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P2_QSFTVL5_b; + }; + + union + { + __IOM uint32_t P2_QSFTVLM5; /*!< (@ 0x000028DC) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P2_QSFTVLM5_b; + }; + + union + { + __IOM uint32_t P2_QSFTBL5; /*!< (@ 0x000028E0) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P2_QSFTBL5_b; + }; + + union + { + __IM uint32_t P2_QSMFC5; /*!< (@ 0x000028E4) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P2_QSMFC5_b; + }; + + union + { + __IM uint32_t P2_QMSPPC5; /*!< (@ 0x000028E8) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P2_QMSPPC5_b; + }; + + union + { + __IM uint32_t P2_QMSRPC5; /*!< (@ 0x000028EC) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P2_QMSRPC5_b; + }; + + union + { + __IOM uint32_t P2_QSTMACU6; /*!< (@ 0x000028F0) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P2_QSTMACU6_b; + }; + + union + { + __IOM uint32_t P2_QSTMACD6; /*!< (@ 0x000028F4) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P2_QSTMACD6_b; + }; + + union + { + __IOM uint32_t P2_QSTMAMU6; /*!< (@ 0x000028F8) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P2_QSTMAMU6_b; + }; + + union + { + __IOM uint32_t P2_QSTMAMD6; /*!< (@ 0x000028FC) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P2_QSTMAMD6_b; + }; + + union + { + __IOM uint32_t P2_QSFTVL6; /*!< (@ 0x00002900) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P2_QSFTVL6_b; + }; + + union + { + __IOM uint32_t P2_QSFTVLM6; /*!< (@ 0x00002904) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P2_QSFTVLM6_b; + }; + + union + { + __IOM uint32_t P2_QSFTBL6; /*!< (@ 0x00002908) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P2_QSFTBL6_b; + }; + + union + { + __IM uint32_t P2_QSMFC6; /*!< (@ 0x0000290C) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P2_QSMFC6_b; + }; + + union + { + __IM uint32_t P2_QMSPPC6; /*!< (@ 0x00002910) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P2_QMSPPC6_b; + }; + + union + { + __IM uint32_t P2_QMSRPC6; /*!< (@ 0x00002914) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P2_QMSRPC6_b; + }; + + union + { + __IOM uint32_t P2_QSTMACU7; /*!< (@ 0x00002918) Qci Stream Filter Table MAC Address Upper Part */ + + struct + { + __IOM uint32_t MACA : 16; /*!< [15..0] Qci stream filter table MAC address[47:32] */ + __IOM uint32_t DASA : 1; /*!< [16..16] MAC address (MACA) select */ + uint32_t : 15; + } P2_QSTMACU7_b; + }; + + union + { + __IOM uint32_t P2_QSTMACD7; /*!< (@ 0x0000291C) Qci Stream Filter Table MAC Address Downer Part */ + + struct + { + __IOM uint32_t MACA : 32; /*!< [31..0] Qci stream filter table MAC address[31:0] */ + } P2_QSTMACD7_b; + }; + + union + { + __IOM uint32_t P2_QSTMAMU7; /*!< (@ 0x00002920) Qci Stream Filter Table MAC Address Mask Upper + * Part */ + + struct + { + __IOM uint32_t MACAM : 16; /*!< [15..0] Qci stream filter table MAC address bit mask[47:32] */ + uint32_t : 16; + } P2_QSTMAMU7_b; + }; + + union + { + __IOM uint32_t P2_QSTMAMD7; /*!< (@ 0x00002924) Qci Stream Filter Table MAC Address Mask Downer + * Part */ + + struct + { + __IOM uint32_t MACAM : 32; /*!< [31..0] Qci stream filter table MAC address bit mask[31:0] */ + } P2_QSTMAMD7_b; + }; + + union + { + __IOM uint32_t P2_QSFTVL7; /*!< (@ 0x00002928) Qci Stream Filter Table VLAN */ + + struct + { + __IOM uint32_t VLANID : 12; /*!< [11..0] VLANID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TAGMD : 2; /*!< [17..16] TAGMD */ + uint32_t : 14; + } P2_QSFTVL7_b; + }; + + union + { + __IOM uint32_t P2_QSFTVLM7; /*!< (@ 0x0000292C) Qci Stream Filter Table VLAN Mask */ + + struct + { + __IOM uint32_t VLANIDM : 12; /*!< [11..0] Qci stream filter table VLAN ID[11:0] bit mask */ + __IOM uint32_t DEIM : 1; /*!< [12..12] DEIM */ + __IOM uint32_t PCPM : 3; /*!< [15..13] Qci stream filter table VLAN PCP[2:0] bit mask */ + uint32_t : 16; + } P2_QSFTVLM7_b; + }; + + union + { + __IOM uint32_t P2_QSFTBL7; /*!< (@ 0x00002930) Qci Stream Filter Table SDU/Gate/Meter ID */ + + struct + { + __IOM uint32_t QSTE : 1; /*!< [0..0] QSTE */ + uint32_t : 3; + __IOM uint32_t GAID : 3; /*!< [6..4] GAID */ + __IOM uint32_t GAIDV : 1; /*!< [7..7] GAIDV */ + __IOM uint32_t MEID : 3; /*!< [10..8] MEID */ + uint32_t : 1; + __IOM uint32_t MEIDV : 1; /*!< [12..12] MEIDV */ + uint32_t : 3; + __IOM uint32_t MSDU : 11; /*!< [26..16] Qci stream filter table max SDU size */ + __IOM uint32_t MSDUE : 1; /*!< [27..27] MSDUE */ + __IOM uint32_t QSMSM : 1; /*!< [28..28] Qci stream MSDU mode */ + uint32_t : 3; + } P2_QSFTBL7_b; + }; + + union + { + __IM uint32_t P2_QSMFC7; /*!< (@ 0x00002934) Qci Stream Match Packet Count */ + + struct + { + __IM uint32_t QSMFC : 16; /*!< [15..0] Qci stream match packet count */ + uint32_t : 16; + } P2_QSMFC7_b; + }; + + union + { + __IM uint32_t P2_QMSPPC7; /*!< (@ 0x00002938) Qci MSDU Passed Packet Count */ + + struct + { + __IM uint32_t QMSPPC : 16; /*!< [15..0] Qci msdu passed packet count */ + uint32_t : 16; + } P2_QMSPPC7_b; + }; + + union + { + __IM uint32_t P2_QMSRPC7; /*!< (@ 0x0000293C) Qci MSDU Reject Packet Count */ + + struct + { + __IM uint32_t QMSRPC : 16; /*!< [15..0] Qci MSDU rejected packet count */ + uint32_t : 16; + } P2_QMSRPC7_b; + }; + __IM uint32_t RESERVED80[42]; + + union + { + __IOM uint32_t P2_QSEIS; /*!< (@ 0x000029E8) Qci Stream Filter Error Interrupt Status (SDU + * Oversize) */ + + struct + { + __IOM uint32_t QSMOIS : 8; /*!< [7..0] MSDU oversize frames Interrupt status[s] */ + uint32_t : 24; + } P2_QSEIS_b; + }; + + union + { + __IOM uint32_t P2_QSEIE; /*!< (@ 0x000029EC) Qci Stream Filter Error Interrupt Enable */ + + struct + { + __IOM uint32_t QSMOIE : 8; /*!< [7..0] MSDU oversize frames Interrupt Enable[s] */ + uint32_t : 24; + } P2_QSEIE_b; + }; + + union + { + __OM uint32_t P2_QSEID; /*!< (@ 0x000029F0) Qci Stream Filter Error Interrupt Disable */ + + struct + { + __OM uint32_t QSMOID : 8; /*!< [7..0] MSDU oversize frames Interrupt Disable[s] */ + uint32_t : 24; + } P2_QSEID_b; + }; + __IM uint32_t RESERVED81[3]; + + union + { + __IOM uint32_t P2_QGMOD; /*!< (@ 0x00002A00) Qci Gate Mode Register */ + + struct + { + __IOM uint32_t QGMOD : 8; /*!< [7..0] Flow gate mode[g] */ + uint32_t : 24; + } P2_QGMOD_b; + }; + + union + { + __IM uint32_t P2_QGPPC; /*!< (@ 0x00002A04) Qci Gate (All) Passed Packet Count Port 2 */ + + struct + { + __IM uint32_t QGPPC : 16; /*!< [15..0] Qci gate passed packet count */ + uint32_t : 16; + } P2_QGPPC_b; + }; + + union + { + __IM uint32_t P2_QGDPC0; /*!< (@ 0x00002A08) Qci Gate 0 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P2_QGDPC0_b; + }; + __IM uint32_t RESERVED82; + + union + { + __IM uint32_t P2_QGDPC1; /*!< (@ 0x00002A10) Qci Gate 1 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P2_QGDPC1_b; + }; + __IM uint32_t RESERVED83; + + union + { + __IM uint32_t P2_QGDPC2; /*!< (@ 0x00002A18) Qci Gate 2 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P2_QGDPC2_b; + }; + __IM uint32_t RESERVED84; + + union + { + __IM uint32_t P2_QGDPC3; /*!< (@ 0x00002A20) Qci Gate 3 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P2_QGDPC3_b; + }; + __IM uint32_t RESERVED85; + + union + { + __IM uint32_t P2_QGDPC4; /*!< (@ 0x00002A28) Qci Gate 4 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P2_QGDPC4_b; + }; + __IM uint32_t RESERVED86; + + union + { + __IM uint32_t P2_QGDPC5; /*!< (@ 0x00002A30) Qci Gate 5 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P2_QGDPC5_b; + }; + __IM uint32_t RESERVED87; + + union + { + __IM uint32_t P2_QGDPC6; /*!< (@ 0x00002A38) Qci Gate 6 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P2_QGDPC6_b; + }; + __IM uint32_t RESERVED88; + + union + { + __IM uint32_t P2_QGDPC7; /*!< (@ 0x00002A40) Qci Gate 7 Dropped Packet Count Port n */ + + struct + { + __IM uint32_t QGDPC : 16; /*!< [15..0] Qci gate dropped packet count */ + uint32_t : 16; + } P2_QGDPC7_b; + }; + + union + { + __IOM uint32_t P2_QGEIS; /*!< (@ 0x00002A44) Qci Gate Error Interrupt Status */ + + struct + { + __IOM uint32_t QGMOIS : 8; /*!< [7..0] Gating error Interrupt status[g] */ + uint32_t : 24; + } P2_QGEIS_b; + }; + + union + { + __IOM uint32_t P2_QGEIE; /*!< (@ 0x00002A48) Qci Gate Error Interrupt Enable */ + + struct + { + __IOM uint32_t QGMOIE : 8; /*!< [7..0] Gating error Interrupt Enable[g] */ + uint32_t : 24; + } P2_QGEIE_b; + }; + + union + { + __OM uint32_t P2_QGEID; /*!< (@ 0x00002A4C) Qci Gate Error Interrupt Disable */ + + struct + { + __OM uint32_t QGMOID : 8; /*!< [7..0] Gating error Interrupt Disable[g] */ + uint32_t : 24; + } P2_QGEID_b; + }; + + union + { + __IOM uint32_t P2_QMDESC0; /*!< (@ 0x00002A50) Qci Port n Flow Meter 0 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P2_QMDESC0_b; + }; + + union + { + __IOM uint32_t P2_QMCBSC0; /*!< (@ 0x00002A54) Qci Meter CBS Configuration Port n, Meter 0 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P2_QMCBSC0_b; + }; + + union + { + __IOM uint32_t P2_QMCIRC0; /*!< (@ 0x00002A58) Qci Meter CIR Configuration n 0 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P2_QMCIRC0_b; + }; + + union + { + __IM uint32_t P2_QMGPC0; /*!< (@ 0x00002A5C) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P2_QMGPC0_b; + }; + + union + { + __IM uint32_t P2_QMRPC0; /*!< (@ 0x00002A60) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P2_QMRPC0_b; + }; + + union + { + __IOM uint32_t P2_QMDESC1; /*!< (@ 0x00002A64) Qci Port n Flow Meter 1 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P2_QMDESC1_b; + }; + + union + { + __IOM uint32_t P2_QMCBSC1; /*!< (@ 0x00002A68) Qci Meter CBS Configuration Port n, Meter 1 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P2_QMCBSC1_b; + }; + + union + { + __IOM uint32_t P2_QMCIRC1; /*!< (@ 0x00002A6C) Qci Meter CIR Configuration n 1 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P2_QMCIRC1_b; + }; + + union + { + __IM uint32_t P2_QMGPC1; /*!< (@ 0x00002A70) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P2_QMGPC1_b; + }; + + union + { + __IM uint32_t P2_QMRPC1; /*!< (@ 0x00002A74) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P2_QMRPC1_b; + }; + + union + { + __IOM uint32_t P2_QMDESC2; /*!< (@ 0x00002A78) Qci Port n Flow Meter 2 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P2_QMDESC2_b; + }; + + union + { + __IOM uint32_t P2_QMCBSC2; /*!< (@ 0x00002A7C) Qci Meter CBS Configuration Port n, Meter 2 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P2_QMCBSC2_b; + }; + + union + { + __IOM uint32_t P2_QMCIRC2; /*!< (@ 0x00002A80) Qci Meter CIR Configuration n 2 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P2_QMCIRC2_b; + }; + + union + { + __IM uint32_t P2_QMGPC2; /*!< (@ 0x00002A84) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P2_QMGPC2_b; + }; + + union + { + __IM uint32_t P2_QMRPC2; /*!< (@ 0x00002A88) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P2_QMRPC2_b; + }; + + union + { + __IOM uint32_t P2_QMDESC3; /*!< (@ 0x00002A8C) Qci Port n Flow Meter 3 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P2_QMDESC3_b; + }; + + union + { + __IOM uint32_t P2_QMCBSC3; /*!< (@ 0x00002A90) Qci Meter CBS Configuration Port n, Meter 3 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P2_QMCBSC3_b; + }; + + union + { + __IOM uint32_t P2_QMCIRC3; /*!< (@ 0x00002A94) Qci Meter CIR Configuration n 3 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P2_QMCIRC3_b; + }; + + union + { + __IM uint32_t P2_QMGPC3; /*!< (@ 0x00002A98) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P2_QMGPC3_b; + }; + + union + { + __IM uint32_t P2_QMRPC3; /*!< (@ 0x00002A9C) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P2_QMRPC3_b; + }; + + union + { + __IOM uint32_t P2_QMDESC4; /*!< (@ 0x00002AA0) Qci Port n Flow Meter 4 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P2_QMDESC4_b; + }; + + union + { + __IOM uint32_t P2_QMCBSC4; /*!< (@ 0x00002AA4) Qci Meter CBS Configuration Port n, Meter 4 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P2_QMCBSC4_b; + }; + + union + { + __IOM uint32_t P2_QMCIRC4; /*!< (@ 0x00002AA8) Qci Meter CIR Configuration n 4 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P2_QMCIRC4_b; + }; + + union + { + __IM uint32_t P2_QMGPC4; /*!< (@ 0x00002AAC) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P2_QMGPC4_b; + }; + + union + { + __IM uint32_t P2_QMRPC4; /*!< (@ 0x00002AB0) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P2_QMRPC4_b; + }; + + union + { + __IOM uint32_t P2_QMDESC5; /*!< (@ 0x00002AB4) Qci Port n Flow Meter 5 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P2_QMDESC5_b; + }; + + union + { + __IOM uint32_t P2_QMCBSC5; /*!< (@ 0x00002AB8) Qci Meter CBS Configuration Port n, Meter 5 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P2_QMCBSC5_b; + }; + + union + { + __IOM uint32_t P2_QMCIRC5; /*!< (@ 0x00002ABC) Qci Meter CIR Configuration n 5 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P2_QMCIRC5_b; + }; + + union + { + __IM uint32_t P2_QMGPC5; /*!< (@ 0x00002AC0) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P2_QMGPC5_b; + }; + + union + { + __IM uint32_t P2_QMRPC5; /*!< (@ 0x00002AC4) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P2_QMRPC5_b; + }; + + union + { + __IOM uint32_t P2_QMDESC6; /*!< (@ 0x00002AC8) Qci Port n Flow Meter 6 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P2_QMDESC6_b; + }; + + union + { + __IOM uint32_t P2_QMCBSC6; /*!< (@ 0x00002ACC) Qci Meter CBS Configuration Port n, Meter 6 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P2_QMCBSC6_b; + }; + + union + { + __IOM uint32_t P2_QMCIRC6; /*!< (@ 0x00002AD0) Qci Meter CIR Configuration n 6 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P2_QMCIRC6_b; + }; + + union + { + __IM uint32_t P2_QMGPC6; /*!< (@ 0x00002AD4) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P2_QMGPC6_b; + }; + + union + { + __IM uint32_t P2_QMRPC6; /*!< (@ 0x00002AD8) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P2_QMRPC6_b; + }; + + union + { + __IOM uint32_t P2_QMDESC7; /*!< (@ 0x00002ADC) Qci Port n Flow Meter 7 Descriptor Register */ + + struct + { + __IOM uint32_t RFD : 1; /*!< [0..0] Red frame drop */ + __IOM uint32_t MM : 1; /*!< [1..1] Flow meter mode */ + __IOM uint32_t CF : 1; /*!< [2..2] Coupling flag */ + uint32_t : 29; + } P2_QMDESC7_b; + }; + + union + { + __IOM uint32_t P2_QMCBSC7; /*!< (@ 0x00002AE0) Qci Meter CBS Configuration Port n, Meter 7 */ + + struct + { + __IOM uint32_t CBS : 18; /*!< [17..0] CBS (Committed Burst Size) */ + uint32_t : 14; + } P2_QMCBSC7_b; + }; + + union + { + __IOM uint32_t P2_QMCIRC7; /*!< (@ 0x00002AE4) Qci Meter CIR Configuration n 7 */ + + struct + { + __IOM uint32_t CIR : 17; /*!< [16..0] CIR (Committed Information Rate) */ + uint32_t : 15; + } P2_QMCIRC7_b; + }; + + union + { + __IM uint32_t P2_QMGPC7; /*!< (@ 0x00002AE8) Qci Meter Green Packet Count */ + + struct + { + __IM uint32_t QMGPC : 16; /*!< [15..0] Qci meter green packet count */ + uint32_t : 16; + } P2_QMGPC7_b; + }; + + union + { + __IM uint32_t P2_QMRPC7; /*!< (@ 0x00002AEC) Qci Meter Red Packet Count */ + + struct + { + __IM uint32_t QMRPC : 16; /*!< [15..0] Qci meter red packet count */ + uint32_t : 16; + } P2_QMRPC7_b; + }; + + union + { + __IOM uint32_t P2_QMEC; /*!< (@ 0x00002AF0) Qci Meter Enable Configuration */ + + struct + { + __IOM uint32_t ME : 8; /*!< [7..0] Enable meter[m] */ + uint32_t : 24; + } P2_QMEC_b; + }; + + union + { + __IOM uint32_t P2_QMEIS; /*!< (@ 0x00002AF4) Qci Meter Error Interrupt Status */ + + struct + { + __IOM uint32_t QRFIS : 8; /*!< [7..0] Red frames Interrupt status[m] */ + uint32_t : 24; + } P2_QMEIS_b; + }; + + union + { + __IOM uint32_t P2_QMEIE; /*!< (@ 0x00002AF8) Qci Meter Error Interrupt Enable */ + + struct + { + __IOM uint32_t QRFIE : 8; /*!< [7..0] Red frames Interrupt Enable[m] */ + uint32_t : 24; + } P2_QMEIE_b; + }; + + union + { + __OM uint32_t P2_QMEID; /*!< (@ 0x00002AFC) Qci Meter Error Interrupt Disable */ + + struct + { + __OM uint32_t QRFID : 8; /*!< [7..0] Red frames Interrupt Disable[m] */ + uint32_t : 24; + } P2_QMEID_b; + }; + + union + { + __IOM uint32_t P2_PCP_REMAP; /*!< (@ 0x00002B00) Port 2 VLAN Priority Code Point (PCP) Remap */ + + struct + { + __IOM uint32_t PCP_REMAP0 : 3; /*!< [2..0] PCP_REMAP0 */ + __IOM uint32_t PCP_REMAP1 : 3; /*!< [5..3] PCP_REMAP1 */ + __IOM uint32_t PCP_REMAP2 : 3; /*!< [8..6] PCP_REMAP2 */ + __IOM uint32_t PCP_REMAP3 : 3; /*!< [11..9] PCP_REMAP3 */ + __IOM uint32_t PCP_REMAP4 : 3; /*!< [14..12] PCP_REMAP4 */ + __IOM uint32_t PCP_REMAP5 : 3; /*!< [17..15] PCP_REMAP5 */ + __IOM uint32_t PCP_REMAP6 : 3; /*!< [20..18] PCP_REMAP6 */ + __IOM uint32_t PCP_REMAP7 : 3; /*!< [23..21] PCP_REMAP7 */ + uint32_t : 8; + } P2_PCP_REMAP_b; + }; + + union + { + __IOM uint32_t P2_VLAN_TAG; /*!< (@ 0x00002B04) Port 2 VLAN TAG Information for Priority Regeneration */ + + struct + { + __IOM uint32_t VID : 12; /*!< [11..0] VID */ + __IOM uint32_t DEI : 1; /*!< [12..12] DEI */ + __IOM uint32_t PCP : 3; /*!< [15..13] PCP */ + __IOM uint32_t TPID : 16; /*!< [31..16] TPID */ + } P2_VLAN_TAG_b; + }; + + union + { + __IOM uint32_t P2_VLAN_MODE; /*!< (@ 0x00002B08) Port 2 VLAN Mode */ + + struct + { + __IOM uint32_t VITM : 2; /*!< [1..0] VLAN input tagging mode */ + __IOM uint32_t VICM : 2; /*!< [3..2] VLAN input verification mode */ + uint32_t : 28; + } P2_VLAN_MODE_b; + }; + + union + { + __IM uint32_t P2_VIC_DROP_CNT; /*!< (@ 0x00002B0C) Port 2 VLAN Ingress Check Drop Frame Counter */ + + struct + { + __IM uint32_t VIC_DROP_CNT : 16; /*!< [15..0] Port n VLAN ingress check drop frame count */ + uint32_t : 16; + } P2_VIC_DROP_CNT_b; + }; + __IM uint32_t RESERVED89[6]; + + union + { + __IM uint32_t P2_LOOKUP_HIT_CNT; /*!< (@ 0x00002B28) Port 2 DST Address Lookup Hit Counter */ + + struct + { + __IM uint32_t LOOKUP_HIT_CNT : 24; /*!< [23..0] Port n Lookup hit count */ + uint32_t : 8; + } P2_LOOKUP_HIT_CNT_b; + }; + + union + { + __IOM uint32_t P2_ERROR_STATUS; /*!< (@ 0x00002B2C) Port 2 Frame Parser Runtime Error Status */ + + struct + { + __IOM uint32_t SOPERR : 1; /*!< [0..0] SOP error detected in frame parser */ + __IOM uint32_t PUNDSZ : 1; /*!< [1..1] Preemptable frame under size error detected in frame + * parser */ + __IOM uint32_t POVRSZ : 1; /*!< [2..2] Preemptable frame over size error detected in frame parser */ + __IOM uint32_t EUNDSZ : 1; /*!< [3..3] Express frame under size error detected in frame parser */ + __IOM uint32_t EOVRSZ : 1; /*!< [4..4] Express frame over size error detected in frame parser */ + uint32_t : 27; + } P2_ERROR_STATUS_b; + }; + + union + { + __IOM uint32_t P2_ERROR_MASK; /*!< (@ 0x00002B30) Port 2 Frame Parser Runtime Error Mask */ + + struct + { + __IOM uint32_t MSOPERR : 1; /*!< [0..0] Error mask of SOPERR (SOP error) */ + __IOM uint32_t MPUNDSZ : 1; /*!< [1..1] Error mask of PUNDSZ (Preemptable frame under size error) */ + __IOM uint32_t MPOVRSZ : 1; /*!< [2..2] Error mask of POVRSZ (Preemptable frame over size error) */ + __IOM uint32_t MEUNDSZ : 1; /*!< [3..3] Error mask of EUNDSZ (Express frame under size error) */ + __IOM uint32_t MEOVRSZ : 1; /*!< [4..4] Error mask of EOVRSZ (Express frame over size error) */ + uint32_t : 27; + } P2_ERROR_MASK_b; + }; + __IM uint32_t RESERVED90[564]; + + union + { + __IM uint32_t STATN_STATUS; /*!< (@ 0x00003404) Statistics Status Register */ + + struct + { + __IM uint32_t BUSY : 1; /*!< [0..0] Statistics module is busy */ + uint32_t : 31; + } STATN_STATUS_b; + }; + + union + { + __IOM uint32_t STATN_CONFIG; /*!< (@ 0x00003408) Statistics Configure Register */ + + struct + { + uint32_t : 1; + __IOM uint32_t CLEAR_ON_READ : 1; /*!< [1..1] When set to 1, a read to a counter resets it to 0. When + * set to 0 (default), counters are not affected by read. */ + uint32_t : 29; + __IOM uint32_t RESET : 1; /*!< [31..31] When set to 1, all internal functions are aborted and + * return to a stable state (flushes prescalers). It also + * triggers a clear of all counter memory (all ports are cleared) + * by setting STATN_CONTROL.CMD_CLEAR with all mask bits. + * Capture memory is not reset. */ + } STATN_CONFIG_b; + }; + + union + { + __IOM uint32_t STATN_CONTROL; /*!< (@ 0x0000340C) Statistics Control Register */ + + struct + { + __IOM uint32_t CHANMASK : 4; /*!< [3..0] One bit per port. Bit 0 = port 0, bit 1 = port 1, and + * so on. */ + uint32_t : 25; + __IOM uint32_t CLEAR_PRE : 1; /*!< [29..29] Clear the internal pre-scaler counters of ports when + * a clear occurs. This bit can be used together with the + * CMD_CLEAR command to clear the internal pre-scaler counters + * of the ports. */ + uint32_t : 1; + __IOM uint32_t CMD_CLEAR : 1; /*!< [31..31] Clear Channel Counters Command */ + } STATN_CONTROL_b; + }; + + union + { + __IOM uint32_t STATN_CLEARVALUE_LO; /*!< (@ 0x00003410) Statistics Clear Value Lower Register */ + + struct + { + __IOM uint32_t STATN_CLEARVALUE_LO : 32; /*!< [31..0] 32-bit value written into statistics memory when a clear + * command (STATN_CONTROL.CMD_CLEAR) is triggered (see ), + * or when a clear-after-read is used. */ + } STATN_CLEARVALUE_LO_b; + }; + __IM uint32_t RESERVED91[21]; + + union + { + __IM uint32_t ODISC0; /*!< (@ 0x00003468) Port 0 Discarded Outgoing Frame Count Register */ + + struct + { + __IM uint32_t ODISC : 32; /*!< [31..0] Port n outgoing frames discarded due to output queue + * congestion. */ + } ODISC0_b; + }; + + union + { + __IM uint32_t IDISC_VLAN0; /*!< (@ 0x0000346C) Port 0 Discarded Incoming VLAN Tagged Frame Count + * Register */ + + struct + { + __IM uint32_t IDISC_VLAN : 32; /*!< [31..0] Port n incoming frames discarded due to mismatching + * or missing VLAN ID while VLAN verification was enabled. */ + } IDISC_VLAN0_b; + }; + + union + { + __IM uint32_t IDISC_UNTAGGED0; /*!< (@ 0x00003470) Port 0 Discarded Incoming VLAN Untagged Frame + * Count Register */ + + struct + { + __IM uint32_t IDISC_UNTAGGED : 32; /*!< [31..0] Port n incoming frames discarded due to missing VLAN + * tag. */ + } IDISC_UNTAGGED0_b; + }; + + union + { + __IM uint32_t IDISC_BLOCKED0; /*!< (@ 0x00003474) Port 0 Discarded Incoming Blocked Frame Count + * Register */ + + struct + { + __IM uint32_t IDISC_BLOCKED : 32; /*!< [31..0] Port n incoming frames discarded (after learning) as + * the port is configured in blocking mode. */ + } IDISC_BLOCKED0_b; + }; + + union + { + __IM uint32_t IDISC_ANY0; /*!< (@ 0x00003478) Port 0 Discarded Any Frame Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t IDISC_ANY : 32; /*!< [31..0] Port n total incoming frames discarded. This includes + * IDISC_VLAN, IDSIC_UNTAGGED, IDISC_SRCFLT, and IDISC_BLOCKED. */ + } IDISC_ANY0_b; + }; + + union + { + __IM uint32_t IDISC_SRCFLT0; /*!< (@ 0x0000347C) Port 0 Discarded Address Source Count Register */ + + struct + { + __IM uint32_t IDISC_SRCFLT : 32; /*!< [31..0] Port n counts the number of incoming frames discarded + * due to the MAC address source filter. */ + } IDISC_SRCFLT0_b; + }; + + union + { + __IM uint32_t TX_HOLD_REQ_CNT0; /*!< (@ 0x00003480) Port 0 TX Hold Request Count Register */ + + struct + { + __IM uint32_t TX_HOLD_REQ_CNT : 32; /*!< [31..0] TX_HOLD_REQ_CNT */ + } TX_HOLD_REQ_CNT0_b; + }; + + union + { + __IM uint32_t TX_FRAG_CNT0; /*!< (@ 0x00003484) Port 0 TX for Preemption Count Register */ + + struct + { + __IM uint32_t TX_FRAG_CNT : 32; /*!< [31..0] Port n increments when an additional mPacket is transmitted + * due to preemption. */ + } TX_FRAG_CNT0_b; + }; + + union + { + __IM uint32_t RX_FRAG_CNT0; /*!< (@ 0x00003488) Port 0 RX Continuation Count Register */ + + struct + { + __IM uint32_t RX_FRAG_CNT : 32; /*!< [31..0] Port n increments for every continuation mPacket received. */ + } RX_FRAG_CNT0_b; + }; + + union + { + __IM uint32_t RX_ASSY_OK_CNT0; /*!< (@ 0x0000348C) Port 0 RX Preempted Frame Success Count Register */ + + struct + { + __IM uint32_t RX_ASSY_OK_CNT : 32; /*!< [31..0] Port n increments when a preempted frame is successfully + * assembled. */ + } RX_ASSY_OK_CNT0_b; + }; + + union + { + __IM uint32_t RX_ASSY_ERR_CNT0; /*!< (@ 0x00003490) Port 0 RX Preempted Frame Incorrect Count Register */ + + struct + { + __IM uint32_t RX_ASSY_ERR_CNT : 16; /*!< [15..0] Port n increments when a preempted frame is incorrectly + * assembled. */ + uint32_t : 16; + } RX_ASSY_ERR_CNT0_b; + }; + + union + { + __IM uint32_t RX_SMD_ERR_CNT0; /*!< (@ 0x00003494) Port 0 RX SMD Frame Count Register */ + + struct + { + __IM uint32_t RX_SMD_ERR_CNT : 16; /*!< [15..0] Port n increments when a frame with an SMD-Cx is received + * and no assembly is in progress. */ + uint32_t : 16; + } RX_SMD_ERR_CNT0_b; + }; + + union + { + __IM uint32_t TX_VERIFY_OK_CNT0; /*!< (@ 0x00003498) Port 0 TX VERIFY Frame Count Register */ + + struct + { + __IM uint32_t TX_VERIFY_OK_CNT : 8; /*!< [7..0] Port n increments for every VERIFY frame transmitted. */ + uint32_t : 24; + } TX_VERIFY_OK_CNT0_b; + }; + + union + { + __IM uint32_t TX_RESPONSE_OK_CNT0; /*!< (@ 0x0000349C) Port 0 TX RESPONSE Frame Count Register */ + + struct + { + __IM uint32_t TX_RESPONSE_OK_CNT : 8; /*!< [7..0] Port n increments for every RESPONSE frame transmitted. */ + uint32_t : 24; + } TX_RESPONSE_OK_CNT0_b; + }; + + union + { + __IM uint32_t RX_VERIFY_OK_CNT0; /*!< (@ 0x000034A0) Port 0 RX VERIFY Frame Count Register */ + + struct + { + __IM uint32_t RX_VERIFY_OK_CNT : 8; /*!< [7..0] Port n increments for every valid VERIFY frame received. */ + uint32_t : 24; + } RX_VERIFY_OK_CNT0_b; + }; + + union + { + __IM uint32_t RX_RESPONSE_OK_CNT0; /*!< (@ 0x000034A4) Port 0 RX RESPONSE Frame Count Register */ + + struct + { + __IM uint32_t RX_RESPONSE_OK_CNT : 8; /*!< [7..0] Port n increments for every valid RESPONSE frame received. */ + uint32_t : 24; + } RX_RESPONSE_OK_CNT0_b; + }; + + union + { + __IM uint32_t RX_VERIFY_BAD_CNT0; /*!< (@ 0x000034A8) Port 0 RX Error VERIFY Frame Count Register */ + + struct + { + __IM uint32_t RX_VERIFY_BAD_CNT : 8; /*!< [7..0] Port n increments for every errored VERIFY frame received. */ + uint32_t : 24; + } RX_VERIFY_BAD_CNT0_b; + }; + + union + { + __IM uint32_t RX_RESPONSE_BAD_CNT0; /*!< (@ 0x000034AC) Port 0 RX Error RESPONSE Frame Count Register */ + + struct + { + __IM uint32_t RX_RESPONSE_BAD_CNT : 8; /*!< [7..0] Port n increments for every errored RESPONSE frame received. */ + uint32_t : 24; + } RX_RESPONSE_BAD_CNT0_b; + }; + + union + { + __IM uint32_t ODISC1; /*!< (@ 0x000034B0) Port 1 Discarded Outgoing Frame Count Register */ + + struct + { + __IM uint32_t ODISC : 32; /*!< [31..0] Port n outgoing frames discarded due to output queue + * congestion. */ + } ODISC1_b; + }; + + union + { + __IM uint32_t IDISC_VLAN1; /*!< (@ 0x000034B4) Port 1 Discarded Incoming VLAN Tagged Frame Count + * Register */ + + struct + { + __IM uint32_t IDISC_VLAN : 32; /*!< [31..0] Port n incoming frames discarded due to mismatching + * or missing VLAN ID while VLAN verification was enabled. */ + } IDISC_VLAN1_b; + }; + + union + { + __IM uint32_t IDISC_UNTAGGED1; /*!< (@ 0x000034B8) Port 1 Discarded Incoming VLAN Untagged Frame + * Count Register */ + + struct + { + __IM uint32_t IDISC_UNTAGGED : 32; /*!< [31..0] Port n incoming frames discarded due to missing VLAN + * tag. */ + } IDISC_UNTAGGED1_b; + }; + + union + { + __IM uint32_t IDISC_BLOCKED1; /*!< (@ 0x000034BC) Port 1 Discarded Incoming Blocked Frame Count + * Register */ + + struct + { + __IM uint32_t IDISC_BLOCKED : 32; /*!< [31..0] Port n incoming frames discarded (after learning) as + * the port is configured in blocking mode. */ + } IDISC_BLOCKED1_b; + }; + + union + { + __IM uint32_t IDISC_ANY1; /*!< (@ 0x000034C0) Port 1 Discarded Any Frame Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t IDISC_ANY : 32; /*!< [31..0] Port n total incoming frames discarded. This includes + * IDISC_VLAN, IDSIC_UNTAGGED, IDISC_SRCFLT, and IDISC_BLOCKED. */ + } IDISC_ANY1_b; + }; + + union + { + __IM uint32_t IDISC_SRCFLT1; /*!< (@ 0x000034C4) Port 1 Discarded Address Source Count Register */ + + struct + { + __IM uint32_t IDISC_SRCFLT : 32; /*!< [31..0] Port n counts the number of incoming frames discarded + * due to the MAC address source filter. */ + } IDISC_SRCFLT1_b; + }; + + union + { + __IM uint32_t TX_HOLD_REQ_CNT1; /*!< (@ 0x000034C8) Port 1 TX Hold Request Count Register */ + + struct + { + __IM uint32_t TX_HOLD_REQ_CNT : 32; /*!< [31..0] TX_HOLD_REQ_CNT */ + } TX_HOLD_REQ_CNT1_b; + }; + + union + { + __IM uint32_t TX_FRAG_CNT1; /*!< (@ 0x000034CC) Port 1 TX for Preemption Count Register */ + + struct + { + __IM uint32_t TX_FRAG_CNT : 32; /*!< [31..0] Port n increments when an additional mPacket is transmitted + * due to preemption. */ + } TX_FRAG_CNT1_b; + }; + + union + { + __IM uint32_t RX_FRAG_CNT1; /*!< (@ 0x000034D0) Port 1 RX Continuation Count Register */ + + struct + { + __IM uint32_t RX_FRAG_CNT : 32; /*!< [31..0] Port n increments for every continuation mPacket received. */ + } RX_FRAG_CNT1_b; + }; + + union + { + __IM uint32_t RX_ASSY_OK_CNT1; /*!< (@ 0x000034D4) Port 1 RX Preempted Frame Success Count Register */ + + struct + { + __IM uint32_t RX_ASSY_OK_CNT : 32; /*!< [31..0] Port n increments when a preempted frame is successfully + * assembled. */ + } RX_ASSY_OK_CNT1_b; + }; + + union + { + __IM uint32_t RX_ASSY_ERR_CNT1; /*!< (@ 0x000034D8) Port 1 RX Preempted Frame Incorrect Count Register */ + + struct + { + __IM uint32_t RX_ASSY_ERR_CNT : 16; /*!< [15..0] Port n increments when a preempted frame is incorrectly + * assembled. */ + uint32_t : 16; + } RX_ASSY_ERR_CNT1_b; + }; + + union + { + __IM uint32_t RX_SMD_ERR_CNT1; /*!< (@ 0x000034DC) Port 1 RX SMD Frame Count Register */ + + struct + { + __IM uint32_t RX_SMD_ERR_CNT : 16; /*!< [15..0] Port n increments when a frame with an SMD-Cx is received + * and no assembly is in progress. */ + uint32_t : 16; + } RX_SMD_ERR_CNT1_b; + }; + + union + { + __IM uint32_t TX_VERIFY_OK_CNT1; /*!< (@ 0x000034E0) Port 1 TX VERIFY Frame Count Register */ + + struct + { + __IM uint32_t TX_VERIFY_OK_CNT : 8; /*!< [7..0] Port n increments for every VERIFY frame transmitted. */ + uint32_t : 24; + } TX_VERIFY_OK_CNT1_b; + }; + + union + { + __IM uint32_t TX_RESPONSE_OK_CNT1; /*!< (@ 0x000034E4) Port 1 TX RESPONSE Frame Count Register */ + + struct + { + __IM uint32_t TX_RESPONSE_OK_CNT : 8; /*!< [7..0] Port n increments for every RESPONSE frame transmitted. */ + uint32_t : 24; + } TX_RESPONSE_OK_CNT1_b; + }; + + union + { + __IM uint32_t RX_VERIFY_OK_CNT1; /*!< (@ 0x000034E8) Port 1 RX VERIFY Frame Count Register */ + + struct + { + __IM uint32_t RX_VERIFY_OK_CNT : 8; /*!< [7..0] Port n increments for every valid VERIFY frame received. */ + uint32_t : 24; + } RX_VERIFY_OK_CNT1_b; + }; + + union + { + __IM uint32_t RX_RESPONSE_OK_CNT1; /*!< (@ 0x000034EC) Port 1 RX RESPONSE Frame Count Register */ + + struct + { + __IM uint32_t RX_RESPONSE_OK_CNT : 8; /*!< [7..0] Port n increments for every valid RESPONSE frame received. */ + uint32_t : 24; + } RX_RESPONSE_OK_CNT1_b; + }; + + union + { + __IM uint32_t RX_VERIFY_BAD_CNT1; /*!< (@ 0x000034F0) Port 1 RX Error VERIFY Frame Count Register */ + + struct + { + __IM uint32_t RX_VERIFY_BAD_CNT : 8; /*!< [7..0] Port n increments for every errored VERIFY frame received. */ + uint32_t : 24; + } RX_VERIFY_BAD_CNT1_b; + }; + + union + { + __IM uint32_t RX_RESPONSE_BAD_CNT1; /*!< (@ 0x000034F4) Port 1 RX Error RESPONSE Frame Count Register */ + + struct + { + __IM uint32_t RX_RESPONSE_BAD_CNT : 8; /*!< [7..0] Port n increments for every errored RESPONSE frame received. */ + uint32_t : 24; + } RX_RESPONSE_BAD_CNT1_b; + }; + + union + { + __IM uint32_t ODISC2; /*!< (@ 0x000034F8) Port 2 Discarded Outgoing Frame Count Register */ + + struct + { + __IM uint32_t ODISC : 32; /*!< [31..0] Port n outgoing frames discarded due to output queue + * congestion. */ + } ODISC2_b; + }; + + union + { + __IM uint32_t IDISC_VLAN2; /*!< (@ 0x000034FC) Port 2 Discarded Incoming VLAN Tagged Frame Count + * Register */ + + struct + { + __IM uint32_t IDISC_VLAN : 32; /*!< [31..0] Port n incoming frames discarded due to mismatching + * or missing VLAN ID while VLAN verification was enabled. */ + } IDISC_VLAN2_b; + }; + + union + { + __IM uint32_t IDISC_UNTAGGED2; /*!< (@ 0x00003500) Port 2 Discarded Incoming VLAN Untagged Frame + * Count Register */ + + struct + { + __IM uint32_t IDISC_UNTAGGED : 32; /*!< [31..0] Port n incoming frames discarded due to missing VLAN + * tag. */ + } IDISC_UNTAGGED2_b; + }; + + union + { + __IM uint32_t IDISC_BLOCKED2; /*!< (@ 0x00003504) Port 2 Discarded Incoming Blocked Frame Count + * Register */ + + struct + { + __IM uint32_t IDISC_BLOCKED : 32; /*!< [31..0] Port n incoming frames discarded (after learning) as + * the port is configured in blocking mode. */ + } IDISC_BLOCKED2_b; + }; + + union + { + __IM uint32_t IDISC_ANY2; /*!< (@ 0x00003508) Port 2 Discarded Any Frame Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t IDISC_ANY : 32; /*!< [31..0] Port n total incoming frames discarded. This includes + * IDISC_VLAN, IDSIC_UNTAGGED, IDISC_SRCFLT, and IDISC_BLOCKED. */ + } IDISC_ANY2_b; + }; + + union + { + __IM uint32_t IDISC_SRCFLT2; /*!< (@ 0x0000350C) Port 2 Discarded Address Source Count Register */ + + struct + { + __IM uint32_t IDISC_SRCFLT : 32; /*!< [31..0] Port n counts the number of incoming frames discarded + * due to the MAC address source filter. */ + } IDISC_SRCFLT2_b; + }; + + union + { + __IM uint32_t TX_HOLD_REQ_CNT2; /*!< (@ 0x00003510) Port 2 TX Hold Request Count Register */ + + struct + { + __IM uint32_t TX_HOLD_REQ_CNT : 32; /*!< [31..0] TX_HOLD_REQ_CNT */ + } TX_HOLD_REQ_CNT2_b; + }; + + union + { + __IM uint32_t TX_FRAG_CNT2; /*!< (@ 0x00003514) Port 2 TX for Preemption Count Register */ + + struct + { + __IM uint32_t TX_FRAG_CNT : 32; /*!< [31..0] Port n increments when an additional mPacket is transmitted + * due to preemption. */ + } TX_FRAG_CNT2_b; + }; + + union + { + __IM uint32_t RX_FRAG_CNT2; /*!< (@ 0x00003518) Port 2 RX Continuation Count Register */ + + struct + { + __IM uint32_t RX_FRAG_CNT : 32; /*!< [31..0] Port n increments for every continuation mPacket received. */ + } RX_FRAG_CNT2_b; + }; + + union + { + __IM uint32_t RX_ASSY_OK_CNT2; /*!< (@ 0x0000351C) Port 2 RX Preempted Frame Success Count Register */ + + struct + { + __IM uint32_t RX_ASSY_OK_CNT : 32; /*!< [31..0] Port n increments when a preempted frame is successfully + * assembled. */ + } RX_ASSY_OK_CNT2_b; + }; + + union + { + __IM uint32_t RX_ASSY_ERR_CNT2; /*!< (@ 0x00003520) Port 2 RX Preempted Frame Incorrect Count Register */ + + struct + { + __IM uint32_t RX_ASSY_ERR_CNT : 16; /*!< [15..0] Port n increments when a preempted frame is incorrectly + * assembled. */ + uint32_t : 16; + } RX_ASSY_ERR_CNT2_b; + }; + + union + { + __IM uint32_t RX_SMD_ERR_CNT2; /*!< (@ 0x00003524) Port 2 RX SMD Frame Count Register */ + + struct + { + __IM uint32_t RX_SMD_ERR_CNT : 16; /*!< [15..0] Port n increments when a frame with an SMD-Cx is received + * and no assembly is in progress. */ + uint32_t : 16; + } RX_SMD_ERR_CNT2_b; + }; + + union + { + __IM uint32_t TX_VERIFY_OK_CNT2; /*!< (@ 0x00003528) Port 2 TX VERIFY Frame Count Register */ + + struct + { + __IM uint32_t TX_VERIFY_OK_CNT : 8; /*!< [7..0] Port n increments for every VERIFY frame transmitted. */ + uint32_t : 24; + } TX_VERIFY_OK_CNT2_b; + }; + + union + { + __IM uint32_t TX_RESPONSE_OK_CNT2; /*!< (@ 0x0000352C) Port 2 TX RESPONSE Frame Count Register */ + + struct + { + __IM uint32_t TX_RESPONSE_OK_CNT : 8; /*!< [7..0] Port n increments for every RESPONSE frame transmitted. */ + uint32_t : 24; + } TX_RESPONSE_OK_CNT2_b; + }; + + union + { + __IM uint32_t RX_VERIFY_OK_CNT2; /*!< (@ 0x00003530) Port 2 RX VERIFY Frame Count Register */ + + struct + { + __IM uint32_t RX_VERIFY_OK_CNT : 8; /*!< [7..0] Port n increments for every valid VERIFY frame received. */ + uint32_t : 24; + } RX_VERIFY_OK_CNT2_b; + }; + + union + { + __IM uint32_t RX_RESPONSE_OK_CNT2; /*!< (@ 0x00003534) Port 2 RX RESPONSE Frame Count Register */ + + struct + { + __IM uint32_t RX_RESPONSE_OK_CNT : 8; /*!< [7..0] Port n increments for every valid RESPONSE frame received. */ + uint32_t : 24; + } RX_RESPONSE_OK_CNT2_b; + }; + + union + { + __IM uint32_t RX_VERIFY_BAD_CNT2; /*!< (@ 0x00003538) Port 2 RX Error VERIFY Frame Count Register */ + + struct + { + __IM uint32_t RX_VERIFY_BAD_CNT : 8; /*!< [7..0] Port n increments for every errored VERIFY frame received. */ + uint32_t : 24; + } RX_VERIFY_BAD_CNT2_b; + }; + + union + { + __IM uint32_t RX_RESPONSE_BAD_CNT2; /*!< (@ 0x0000353C) Port 2 RX Error RESPONSE Frame Count Register */ + + struct + { + __IM uint32_t RX_RESPONSE_BAD_CNT : 8; /*!< [7..0] Port n increments for every errored RESPONSE frame received. */ + uint32_t : 24; + } RX_RESPONSE_BAD_CNT2_b; + }; + + union + { + __IM uint32_t ODISC3; /*!< (@ 0x00003540) Port 3 Discarded Outgoing Frame Count Register */ + + struct + { + __IM uint32_t ODISC : 32; /*!< [31..0] Port n outgoing frames discarded due to output queue + * congestion. */ + } ODISC3_b; + }; + + union + { + __IM uint32_t IDISC_VLAN3; /*!< (@ 0x00003544) Port 3 Discarded Incoming VLAN Tagged Frame Count + * Register */ + + struct + { + __IM uint32_t IDISC_VLAN : 32; /*!< [31..0] Port n incoming frames discarded due to mismatching + * or missing VLAN ID while VLAN verification was enabled. */ + } IDISC_VLAN3_b; + }; + + union + { + __IM uint32_t IDISC_UNTAGGED3; /*!< (@ 0x00003548) Port 3 Discarded Incoming VLAN Untagged Frame + * Count Register */ + + struct + { + __IM uint32_t IDISC_UNTAGGED : 32; /*!< [31..0] Port n incoming frames discarded due to missing VLAN + * tag. */ + } IDISC_UNTAGGED3_b; + }; + + union + { + __IM uint32_t IDISC_BLOCKED3; /*!< (@ 0x0000354C) Port 3 Discarded Incoming Blocked Frame Count + * Register */ + + struct + { + __IM uint32_t IDISC_BLOCKED : 32; /*!< [31..0] Port n incoming frames discarded (after learning) as + * the port is configured in blocking mode. */ + } IDISC_BLOCKED3_b; + }; + + union + { + __IM uint32_t IDISC_ANY3; /*!< (@ 0x00003550) Port 3 Discarded Any Frame Count Register (n + * = 0 to 3) */ + + struct + { + __IM uint32_t IDISC_ANY : 32; /*!< [31..0] Port n total incoming frames discarded. This includes + * IDISC_VLAN, IDSIC_UNTAGGED, IDISC_SRCFLT, and IDISC_BLOCKED. */ + } IDISC_ANY3_b; + }; + __IM uint32_t RESERVED92[363]; + + union + { + __IOM uint32_t MMCTL_OUT_CT; /*!< (@ 0x00003B00) Cut-Through Register */ + + struct + { + __IOM uint32_t CT_OVR_ENA : 3; /*!< [2..0] Per-port bit mask to enable overriding the Cut-Through + * (CT) behavior of the output ports with CT_OVR. When set + * to 0, the frames are transmitted CT if the CT flag of the + * frame context is set. */ + uint32_t : 13; + __IOM uint32_t CT_OVR : 3; /*!< [18..16] 1 bit per-port value to set the Cut Through behavior + * of the output ports. When set to 0, all frames are sent + * as Store & Forward (SF) frames. When set to 1, frames with + * the CT flag set in the frame context are started as soon + * as the frame context information is available. */ + uint32_t : 13; + } MMCTL_OUT_CT_b; + }; + + union + { + __IOM uint32_t MMCTL_CTFL_P0_3_ENA; /*!< (@ 0x00003B04) Cut-Through Frame Length Enable Register */ + + struct + { + __IOM uint32_t CTFL_P0_ENA : 8; /*!< [7..0] Port 0 bit mask of n bits, where n is the number of queues + * per port indicating whether the CTFL is used for Cut-Through + * (CT) frames. When set to 1, a CT frame requires a CTFL + * entry to be written as a CT frame in the output memory. */ + __IOM uint32_t CTFL_P1_ENA : 8; /*!< [15..8] Port 1 bit mask of n bits, where n is the number of + * queues per port indicating whether the CTFL is used for + * Cut-Through (CT) frames. When set to 1, a CT frame requires + * a CTFL entry to be written as a CT frame in the output + * memory. */ + __IOM uint32_t CTFL_P2_ENA : 8; /*!< [23..16] Port 2 bit mask of n bits, where n is the number of + * queues per port indicating whether the CTFL is used for + * Cut-Through (CT) frames. When set to 1, a CT frame requires + * a CTFL entry to be written as a CT frame in the output + * memory. */ + uint32_t : 8; + } MMCTL_CTFL_P0_3_ENA_b; + }; + __IM uint32_t RESERVED93[6]; + + union + { + __IOM uint32_t MMCTL_YELLOW_BYTE_LENGTH_P[3]; /*!< (@ 0x00003B20) Port [0..2] Yellow Period Byte Length Register */ + + struct + { + uint32_t : 2; + __IOM uint32_t YELLOW_LEN : 14; /*!< [15..2] Length in bytes of the YELLOW period for port n. Determines + * whether a frame can be transmitted before the YELLOW period + * expires. The value is programmed in increments of 4 bytes + * excluding the MAC overhead (IPG, Preamble and FCS if appended) + * of the frame. */ + __IOM uint32_t YLEN_EN : 1; /*!< [16..16] When set to 1, enables transmission when OUT_CT_ENA + * is low only if the frame length is less than YELLOW_LEN. + * If cleared, YELLOW_LEN is ignored and frames are always + * transmitted in SF mode when OUT_CT_ENA is 0. */ + uint32_t : 15; + } MMCTL_YELLOW_BYTE_LENGTH_P_b[3]; + }; + __IM uint32_t RESERVED94[5]; + + union + { + __IOM uint32_t MMCTL_POOL0_CTR; /*!< (@ 0x00003B40) Memory Pool Counter (n = 0 to 1) */ + + struct + { + __IOM uint32_t CELLS : 10; /*!< [9..0] Memory pool configuration for pool n. Configures, in + * cells, the size of each memory pool. */ + uint32_t : 6; + __IM uint32_t USED : 10; /*!< [25..16] Reports the current available number of used cells + * for this memory pool. The used number of free cells can + * be calculated as CELLS - USED. */ + uint32_t : 6; + } MMCTL_POOL0_CTR_b; + }; + + union + { + __IOM uint32_t MMCTL_POOL1_CTR; /*!< (@ 0x00003B44) Memory Pool Counter (n = 0 to 1) */ + + struct + { + __IOM uint32_t CELLS : 10; /*!< [9..0] Memory pool configuration for pool n. Configures, in + * cells, the size of each memory pool. */ + uint32_t : 6; + __IM uint32_t USED : 10; /*!< [25..16] Reports the current available number of used cells + * for this memory pool. The used number of free cells can + * be calculated as CELLS - USED. */ + uint32_t : 6; + } MMCTL_POOL1_CTR_b; + }; + __IM uint32_t RESERVED95[6]; + + union + { + __IOM uint32_t MMCTL_POOL_GLOBAL; /*!< (@ 0x00003B60) Memory Pool Configuration Register */ + + struct + { + __IOM uint32_t CELLS : 10; /*!< [9..0] Memory pool configuration for the global pool. Configures, + * in cells, the size of the global shared pool. */ + uint32_t : 6; + __IM uint32_t USED : 10; /*!< [25..16] Reports the current number of used cells for the global + * shared pool. The used number of free cells can be calculated + * as CELLS - USED. */ + uint32_t : 6; + } MMCTL_POOL_GLOBAL_b; + }; + + union + { + __IM uint32_t MMCTL_POOL_STATUS; /*!< (@ 0x00003B64) Memory Pool Status Register */ + + struct + { + __IM uint32_t QUEUE_FULL : 8; /*!< [7..0] Per-queue pool full indication. Indicates for each queue + * whether all the blocks in the corresponding pool and global + * pool are allocated. */ + uint32_t : 24; + } MMCTL_POOL_STATUS_b; + }; + + union + { + __IOM uint32_t MMCTL_POOL_QMAP; /*!< (@ 0x00003B68) Queue MAP Register */ + + struct + { + __IOM uint32_t Q0_MAP : 1; /*!< [0..0] Queue 0 Memory Pool */ + uint32_t : 2; + __IOM uint32_t Q0_ENA : 1; /*!< [3..3] Queue 0 Memory Pool Enabled */ + __IOM uint32_t Q1_MAP : 1; /*!< [4..4] Queue 1 Memory Pool */ + uint32_t : 2; + __IOM uint32_t Q1_ENA : 1; /*!< [7..7] Queue 1 Memory Pool Enabled */ + __IOM uint32_t Q2_MAP : 1; /*!< [8..8] Queue 2 Memory Pool */ + uint32_t : 2; + __IOM uint32_t Q2_ENA : 1; /*!< [11..11] Queue 2 Memory Pool Enabled */ + __IOM uint32_t Q3_MAP : 1; /*!< [12..12] Queue 3 Memory Pool */ + uint32_t : 2; + __IOM uint32_t Q3_ENA : 1; /*!< [15..15] Queue 3 Memory Pool Enabled */ + __IOM uint32_t Q4_MAP : 1; /*!< [16..16] Queue 4 Memory Pool */ + uint32_t : 2; + __IOM uint32_t Q4_ENA : 1; /*!< [19..19] Queue 4 Memory Pool Enabled */ + __IOM uint32_t Q5_MAP : 1; /*!< [20..20] Queue 5 Memory Pool */ + uint32_t : 2; + __IOM uint32_t Q5_ENA : 1; /*!< [23..23] Queue 5 Memory Pool Enabled */ + __IOM uint32_t Q6_MAP : 1; /*!< [24..24] Queue 6 Memory Pool */ + uint32_t : 2; + __IOM uint32_t Q6_ENA : 1; /*!< [27..27] Queue 6 Memory Pool Enabled */ + __IOM uint32_t Q7_MAP : 1; /*!< [28..28] Queue 7 Memory Pool */ + uint32_t : 2; + __IOM uint32_t Q7_ENA : 1; /*!< [31..31] Queue 7 Memory Pool Enabled */ + } MMCTL_POOL_QMAP_b; + }; + + union + { + __OM uint32_t MMCTL_QGATE; /*!< (@ 0x00003B6C) Queue Gate State Register */ + + struct + { + __OM uint32_t PORT_MASK : 4; /*!< [3..0] Per-port bit mask. When set to 1 for a port, the queue + * gate state is changed for that port as indicated by QUEUE_GATE. */ + uint32_t : 12; + __OM uint32_t QUEUE_GATE : 16; /*!< [31..16] 2-bit per queue indicating the action to be performed + * on each queue of the ports indicated by PORT_MASK. */ + } MMCTL_QGATE_b; + }; + + union + { + __OM uint32_t MMCTL_QTRIG; /*!< (@ 0x00003B70) Queue Trigger Register */ + + struct + { + __OM uint32_t PORT_MASK : 4; /*!< [3..0] Per-port bit mask. When set to 1 for a port, a frame + * is triggered from the closed queues indicated by QUEUE_TRIG. */ + uint32_t : 12; + __OM uint32_t QUEUE_TRIG : 8; /*!< [23..16] 1-bit per queue indicating from which queues a frame + * is to be transmitted from the ports indicated by PORT_MASK. + * When set to 1, a single frame is transmitted per indicated + * port in PORT_MASK among the queues indicated by QUEUE_TRIG. */ + uint32_t : 8; + } MMCTL_QTRIG_b; + }; + + union + { + __OM uint32_t MMCTL_QFLUSH; /*!< (@ 0x00003B74) Flush Event Select Register */ + + struct + { + __OM uint32_t PORT_MASK : 4; /*!< [3..0] Per-port bit mask. When set to 1 for a port, the queue + * flush status is changed for that port for the queues indicated + * in QUEUE_MASK. */ + uint32_t : 12; + __OM uint32_t QUEUE_MASK : 8; /*!< [23..16] 1 bit per queue indicating for which queues of the + * ports indicated by PORT_MASK the flush state is changed + * as indicated in ACTION. */ + __OM uint32_t ACTION : 2; /*!< [25..24] Selects the flush state for the queues indicated by + * QUEUE_MASK in the ports indicated by PORT_MASK. Possible + * actions are: */ + uint32_t : 6; + } MMCTL_QFLUSH_b; + }; + + union + { + __IM uint32_t MMCTL_QCLOSED_STATUS_P0_3; /*!< (@ 0x00003B78) Queue Closed Status Register */ + + struct + { + __IM uint32_t P0_STATUS : 8; /*!< [7..0] Per-queue closed status of Port 0 (1-bit per queue). + * A 0 indicates that the queue is open (enabled), and a 1 + * indicates that the queue is closed (disabled). */ + __IM uint32_t P1_STATUS : 8; /*!< [15..8] Per-queue closed status of Port 1 (1-bit per queue). + * A 0 indicates that the queue is open (enabled), and a 1 + * indicates that the queue is closed (disabled). */ + __IM uint32_t P2_STATUS : 8; /*!< [23..16] Per-queue closed status of Port 2 (1-bit per queue). + * A 0 indicates that the queue is open (enabled), and a 1 + * indicates that the queue is closed (disabled). */ + uint32_t : 8; + } MMCTL_QCLOSED_STATUS_P0_3_b; + }; + __IM uint32_t RESERVED96; + + union + { + __IOM uint32_t MMCTL_1FRAME_MODE_P[3]; /*!< (@ 0x00003B80) Port [0..2] 1-Frame Mode Configuration Register */ + + struct + { + __IOM uint32_t Q_1FRAME_ENA : 8; /*!< [7..0] 1 bit per queue. Setting a bit to 1 enables the 1-frame + * mode for that queue for port n. In this mode, only one + * frame is allowed in the queue. If a new frame is received, + * the old frame is discarded. */ + uint32_t : 8; + __IOM uint32_t Q_BUF_ENA : 8; /*!< [23..16] 1 bit per queue. Setting a bit to 1 enables the buffer + * mode behavior for that queue for port n. This mode requires + * also that Q_1FRAME_ENA is set to 1. */ + uint32_t : 8; + } MMCTL_1FRAME_MODE_P_b[3]; + }; + __IM uint32_t RESERVED97[5]; + + union + { + __IM uint32_t MMCTL_P0_3_QUEUE_STATUS; /*!< (@ 0x00003BA0) Queue Status Indicator */ + + struct + { + __IM uint32_t P0_Q_STATUS : 8; /*!< [7..0] Port 0 Per-Queue Bit Indication */ + __IM uint32_t P1_Q_STATUS : 8; /*!< [15..8] Port 1 Per-Queue Bit Indication */ + __IM uint32_t P2_Q_STATUS : 8; /*!< [23..16] Port 2 Per-Queue Bit Indication */ + uint32_t : 8; + } MMCTL_P0_3_QUEUE_STATUS_b; + }; + __IM uint32_t RESERVED98; + + union + { + __IM uint32_t MMCTL_P0_3_FLUSH_STATUS; /*!< (@ 0x00003BA8) Queue Flush Status Indicator */ + + struct + { + __IM uint32_t P0_F_STATUS : 8; /*!< [7..0] Port 0 per-Queue Bit Indication on whether the queue + * is flushing frames (read 1) or not (read 0). */ + __IM uint32_t P1_F_STATUS : 8; /*!< [15..8] Port 1 per-Queue Bit Indication on whether the queue + * is flushing frames (read 1) or not (read 0). */ + __IM uint32_t P2_F_STATUS : 8; /*!< [23..16] Port 2 per-Queue Bit Indication on whether the queue + * is flushing frames (read 1) or not (read 0). */ + uint32_t : 8; + } MMCTL_P0_3_FLUSH_STATUS_b; + }; + __IM uint32_t RESERVED99; + + union + { + __IOM uint32_t MMCTL_DLY_QTRIGGER_CTRL; /*!< (@ 0x00003BB0) Delayed Queue Trigger Control Register */ + + struct + { + __IOM uint32_t DELAY_TIME : 30; /*!< [29..0] 30-bit time in nanoseconds indicates the time after + * the trigger request from the pattern matchers to generate + * the event. */ + __IOM uint32_t TIMER_SEL : 1; /*!< [30..30] Select the source timer to use for calculating the + * time. */ + uint32_t : 1; + } MMCTL_DLY_QTRIGGER_CTRL_b; + }; + + union + { + __IOM uint32_t MMCTL_PREEMPT_QUEUES; /*!< (@ 0x00003BB4) Preemptable Queues Configures Register */ + + struct + { + __IOM uint32_t PREEMPT_ENA : 8; /*!< [7..0] Per-queue enable bit to configure which queues are used + * for preemptable traffic. Set to 1 the corresponding bit + * to configure a queue to be preemptable. */ + __IOM uint32_t PREEMPT_ON_QCLOSE : 8; /*!< [15..8] Per-queue configuration bit to enable preempting a frame + * when the queue goes from OPEN to CLOSED. When the corresponding + * bit is set to 1 and the queue is configured as preemptable + * in PREEMPT_ENA, a queue close event causes the current + * frame to be preempted, if preemption is operational. */ + uint32_t : 16; + } MMCTL_PREEMPT_QUEUES_b; + }; + + union + { + __IOM uint32_t MMCTL_HOLD_CONTROL; /*!< (@ 0x00003BB8) Request Preemption Register */ + + struct + { + __IOM uint32_t Q_HOLD_REQ_FORCE : 3; /*!< [2..0] A per-port bit that forces a preempt request using MM_CTL.request + * (hold_req). When this bit is set to 1, it overrides other + * sources of hold request, including the TDMA controller. */ + uint32_t : 13; + __IOM uint32_t Q_HOLD_REQ_RELEASE : 3; /*!< [18..16] A per-port bit that forces a release of preemption + * request using MM_CTL.request (hold_req). When this bit + * is set to 1, it overrides other sources of hold request, + * including the TDMA controller and Q_HOLD_REQ_FORCE[2:0]. */ + uint32_t : 13; + } MMCTL_HOLD_CONTROL_b; + }; + + union + { + __IM uint32_t MMCTL_PREEMPT_STATUS; /*!< (@ 0x00003BBC) Preemption State Register */ + + struct + { + __IM uint32_t PREEMPT_STATE : 3; /*!< [2..0] A per-port bit that indicates if a port is in a preempted + * state. This is a real-time indication meant for debugging. */ + uint32_t : 13; + __IM uint32_t HOLD_REQ_STATE : 3; /*!< [18..16] A per-port bit that indicates if a port is preempted + * using MM_CTL.request (hold_req). This is a real-time indication + * meant for debugging. */ + uint32_t : 13; + } MMCTL_PREEMPT_STATUS_b; + }; + + union + { + __IOM uint32_t MMCTL_CQF_CTRL_P[4]; /*!< (@ 0x00003BC0) Port [0..3] Cyclic Queuing and Forwarding Control + * Register */ + + struct + { + __IOM uint32_t PRIO_ENABLE0 : 8; /*!< [7..0] A per-queue enable to select which ingress priorities + * are queued in the two CQF queues. */ + __IOM uint32_t QUEUE_SEL0 : 3; /*!< [10..8] Select which two physical queues are used for CQF. The + * queues used are QUEUE_SEL0 and QUEUE_SEL0 + 1. Frames are + * written into QUEUE_SEL0 when the gate control selected + * with GATE_SEL0 is 0, and into QUEUE_SEL0 + 1 when the gate + * control is 1. */ + __IOM uint32_t GATE_SEL0 : 3; /*!< [13..11] Select which gate control signal is used for selecting + * the output queue (these signals are the same as the ETHSW_TDMAOUT + * pins). */ + __IOM uint32_t USE_SOP0 : 1; /*!< [14..14] When set to 1, the CFQ queue is determined when the + * SOP is received at the frame writer in the memory controller. + * When set to 0, the queue is determined when the EOP is + * received at the frame writer. */ + __IOM uint32_t REF_SEL0 : 1; /*!< [15..15] Select whether the gate control signal used for the + * CQF group is based on the egress port when set to 0, or + * the ingress port when set to 1. */ + uint32_t : 16; + } MMCTL_CQF_CTRL_P_b[4]; + }; + __IM uint32_t RESERVED100[4]; + + union + { + __IM uint32_t MMCTL_P0_3_QCLOSED_NONEMPTY; /*!< (@ 0x00003BE0) Port Queue Status Register */ + + struct + { + __IM uint32_t P0_Q_STATUS : 8; /*!< [7..0] Port 0 per-queue bit indication on whether the queue + * transitioned from open to closed state while frames were + * still queued. */ + __IM uint32_t P1_Q_STATUS : 8; /*!< [15..8] Port 1 per-queue bit indication on whether the queue + * transitioned from open to closed state while frames were + * still queued. */ + __IM uint32_t P2_Q_STATUS : 8; /*!< [23..16] Port 2 per-queue bit indication on whether the queue + * transitioned from open to closed state while frames were + * still queued. */ + __IM uint32_t P3_Q_STATUS : 8; /*!< [31..24] Port 3 per-queue bit indication on whether the queue + * transitioned from open to closed state while frames were + * still queued. */ + } MMCTL_P0_3_QCLOSED_NONEMPTY_b; + }; + __IM uint32_t RESERVED101; + + union + { + __IOM uint32_t MMCTL_PREEMPT_EXTRA; /*!< (@ 0x00003BE8) Frame Preemption Extra Configuration Register */ + + struct + { + __IOM uint32_t MIN_PFRM_ADJ : 4; /*!< [3..0] Adjust the minimum mPacket length, in increments of 4 + * bytes. */ + __IOM uint32_t LAST_PFRM_ADJ : 4; /*!< [7..4] Adjust the preemptable threshold when reaching the end + * of the frame, in increments of 4 bytes. Incrementing this + * value increments the length of the last mPacket. */ + uint32_t : 24; + } MMCTL_PREEMPT_EXTRA_b; + }; + __IM uint32_t RESERVED102[5]; + + union + { + __IOM uint32_t DLR_CONTROL; /*!< (@ 0x00003C00) DLR Control Register */ + + struct + { + __IOM uint32_t ENABLE : 1; /*!< [0..0] Enable DLR extension module. When set, the DLR module + * becomes active. When DLR is enabled, the LOOP_FILTER_ENA + * must also be enabled for proper DLR operation. */ + __IOM uint32_t AUTOFLUSH : 1; /*!< [1..1] Enable automatic flushing of unicast entries in address + * table if ring reconfiguration occurs (see also DLR interrupt + * IRQ_flush_macaddr_ena in DLR_IRQ_CONTROL). */ + __IOM uint32_t LOOP_FILTER_ENA : 1; /*!< [2..2] Enable the loop filter function. When set to 1, the ingress + * loop filter is enabled. This can be enabled regardless + * of the DLR ENABLE state, allowing the loop filter function + * to operate when DLR is not used. */ + uint32_t : 1; + __IOM uint32_t IGNORE_INVTM : 1; /*!< [4..4] Enable ignore beacon frames with invalid timeout timer. + * When enabled (set to 1) frames with timeout timer value + * not within a range of 200 microseconds to 500 milliseconds + * are ignored and parameters are not locally stored or considered + * for state transitions. The invalid timeout timer value + * is always stored within the DLR_INV_TMOUT register irrespective + * of the value of this bit. Ignored frames are forwarded + * normally. */ + uint32_t : 3; + __IOM uint32_t US_TIME : 12; /*!< [19..8] Number of clock cycles required for 1 microsecond for + * the switch operating clock. This LSI operates at 200 MHz, + * therefore this register must be set to 0xC8. The value + * after reset must be changed. */ + uint32_t : 12; + } DLR_CONTROL_b; + }; + + union + { + __IM uint32_t DLR_STATUS; /*!< (@ 0x00003C04) DLR Status Register */ + + struct + { + __IM uint32_t LastBcnRcvPort : 2; /*!< [1..0] Last Beacon Receive Port */ + uint32_t : 6; + __IM uint32_t NODE_STATE : 8; /*!< [15..8] Local Node Current State */ + __IM uint32_t LINK_STATUS : 2; /*!< [17..16] Link Status */ + uint32_t : 6; + __IM uint32_t TOPOLOGY : 8; /*!< [31..24] Current Network Topology */ + } DLR_STATUS_b; + }; + + union + { + __IOM uint32_t DLR_ETH_TYP; /*!< (@ 0x00003C08) DLR Ethernet Type Register */ + + struct + { + __IOM uint32_t DLR_ETH_TYP : 16; /*!< [15..0] Ethernet type to compare for DLR frame detection (initial + * value is 0x80E1) */ + uint32_t : 16; + } DLR_ETH_TYP_b; + }; + + union + { + __IOM uint32_t DLR_IRQ_CONTROL; /*!< (@ 0x00003C0C) DLR Interrupt Control Register */ + + struct + { + __IOM uint32_t IRQ_state_chng_ena : 1; /*!< [0..0] Enable Interrupt for State Change */ + __IOM uint32_t IRQ_flush_macaddr_ena : 1; /*!< [1..1] Enable Flush Local MAC Address Table Interrupt. */ + __IOM uint32_t IRQ_stop_nbchk0_ena : 1; /*!< [2..2] Enable Stop Request Neighbor Check Timeout Timer Interrupt + * for Port 0. */ + __IOM uint32_t IRQ_stop_nbchk1_ena : 1; /*!< [3..3] Enable Stop Request Neighbor Check Timeout Timer Interrupt + * for Port 1. */ + __IOM uint32_t IRQ_bec_tmr0_exp_ena : 1; /*!< [4..4] IRQ_bec_tmr0_exp_ena */ + __IOM uint32_t IRQ_bec_tmr1_exp_ena : 1; /*!< [5..5] Enable Interrupt on Beacon Timeout Timer Expire for Port + * 1. */ + __IOM uint32_t IRQ_supr_chng_ena : 1; /*!< [6..6] Enable Interrupt on Ring Supervisor Change. */ + __IOM uint32_t IRQ_link_chng0_ena : 1; /*!< [7..7] Enable Link Status Change Interrupt Event for Port 0. */ + __IOM uint32_t IRQ_link_chng1_ena : 1; /*!< [8..8] Enable Link Status Change Interrupt Event for Port 1. */ + __IOM uint32_t IRQ_sup_ignord_ena : 1; /*!< [9..9] Enable interrupt on beacon frame detection from a supervisor + * with lower precedence than the current ring supervisor + * or lower numeric value for MAC address when precedence + * is same. */ + __IOM uint32_t IRQ_ip_addr_chng_ena : 1; /*!< [10..10] Enable interrupt on IP address change detection within + * beacon frame from ring supervisor. */ + __IOM uint32_t IRQ_invalid_tmr_ena : 1; /*!< [11..11] Enable interrupt on invalid range for beacon timeout + * timer value detection. */ + __IOM uint32_t IRQ_bec_rcv0_ena : 1; /*!< [12..12] Enable interrupt on beacon frame detection on port + * 0. */ + __IOM uint32_t IRQ_bec_rcv1_ena : 1; /*!< [13..13] Enable interrupt on beacon frame detection on port + * 1. */ + __IOM uint32_t IRQ_frm_dscrd0 : 1; /*!< [14..14] Enable interrupt on frame discard due to source address + * match with the local address on port 0. */ + __IOM uint32_t IRQ_frm_dscrd1 : 1; /*!< [15..15] Enable Interrupt on Frame discard due to source address + * match with the local address on port 1. */ + uint32_t : 13; + __IOM uint32_t low_int_en : 1; /*!< [29..29] Enable active-low interrupt. Asserted to use active-low + * interrupt signal instead of active-high interrupt signal. */ + __OM uint32_t atomic_OR : 1; /*!< [30..30] When set during a register-write, the enable bits are + * ORed into the current setting of the register. By writing + * this bit at the same time, only the target bit can be set + * to 1. */ + __OM uint32_t atomic_AND : 1; /*!< [31..31] When set during a register-write, the enable bits are + * ANDed with the current setting of the register. By writing + * this bit at the same time, only the target bit can be set + * to 0. */ + } DLR_IRQ_CONTROL_b; + }; + + union + { + __IOM uint32_t DLR_IRQ_STAT_ACK; /*!< (@ 0x00003C10) DLR Interrupt Status/ACK Register */ + + struct + { + __IOM uint32_t state_chng_IRQ_pending : 1; /*!< [0..0] Latched State Change Event */ + __IOM uint32_t flush_IRQ_pending : 1; /*!< [1..1] Latched Flush Event for MAC Address Learning Table */ + __IOM uint32_t nbchk0_IRQ_pending : 1; /*!< [2..2] Stop Request Event for Neighbor Check Timeout Timer for + * Port 0 */ + __IOM uint32_t nbchk1_IRQ_pending : 1; /*!< [3..3] Stop Request Event for Neighbor Check Timeout Timer for + * Port 1 */ + __IOM uint32_t bec_tmr0_IRQ_pending : 1; /*!< [4..4] Beacon Timeout Timer Expire Event for Port 0 */ + __IOM uint32_t bec_tmr1_IRQ_pending : 1; /*!< [5..5] Beacon Timeout Timer Expire Event for Port 1 */ + __IOM uint32_t supr_chng_IRQ_pending : 1; /*!< [6..6] Latched Supervisor Change Event */ + __IOM uint32_t Link0_IRQ_pending : 1; /*!< [7..7] Latched Link Status Change Event for Port 0 */ + __IOM uint32_t Link1_IRQ_pending : 1; /*!< [8..8] Latched Link Status Change Event for Port 1 */ + __IOM uint32_t sup_ignord_IRQ_pending : 1; /*!< [9..9] Latched Event for Beacon Frame Detection from Ignored + * Supervisor */ + __IOM uint32_t ip_chng_IRQ_pending : 1; /*!< [10..10] Latched IP Address Change Event */ + __IOM uint32_t invalid_tmr_IRQ_pending : 1; /*!< [11..11] Latched Event on Invalid Beacon Timeout Timer Value + * Detection Within Beacon Frame on Port 0 or Port 1 */ + __IOM uint32_t bec_rcv0_IRQ_pending : 1; /*!< [12..12] Latched Event on Beacon Frame Detection on Port 0 */ + __IOM uint32_t bec_rcv1_IRQ_pending : 1; /*!< [13..13] Latched Event on Beacon Frame Detection on Port 1 */ + __IOM uint32_t frm_dscrd0_IRQ_pending : 1; /*!< [14..14] Latched Event on Frame Discard Due to Source Address + * Match with the Local Address on Port 0 (Loop Filter) */ + __IOM uint32_t frm_dscrd1_IRQ_pending : 1; /*!< [15..15] Latched Event on Frame Discard Due to Source Address + * Match with the Local Address on Port 1 (Loop Filter) */ + uint32_t : 16; + } DLR_IRQ_STAT_ACK_b; + }; + + union + { + __IOM uint32_t DLR_LOC_MAClo; /*!< (@ 0x00003C14) DLR Local MAC Address Low Register */ + + struct + { + __IOM uint32_t LOC_MAC : 32; /*!< [31..0] First 4 octets of the Local MAC address for loop filter */ + } DLR_LOC_MAClo_b; + }; + + union + { + __IOM uint32_t DLR_LOC_MAChi; /*!< (@ 0x00003C18) DLR Local MAC Address High Register */ + + struct + { + __IOM uint32_t LOC_MAC : 16; /*!< [15..0] Last 2 octets of local MAC address for loop filter */ + uint32_t : 16; + } DLR_LOC_MAChi_b; + }; + __IM uint32_t RESERVED103; + + union + { + __IM uint32_t DLR_SUPR_MAClo; /*!< (@ 0x00003C20) DLR Supervisor MAC Address Low Register */ + + struct + { + __IM uint32_t SUPR_MAC : 32; /*!< [31..0] First 4 octets of the active ring supervisor of the + * MAC address extracted from the Source Address field of + * the beacon frame. */ + } DLR_SUPR_MAClo_b; + }; + + union + { + __IM uint32_t DLR_SUPR_MAChi; /*!< (@ 0x00003C24) DLR Supervisor MAC Address High Register */ + + struct + { + __IM uint32_t SUPR_MAC : 16; /*!< [15..0] Last 2 octets of the active ring supervisor of the MAC + * address extracted from the Source Address field of the + * beacon frame. */ + __IM uint32_t PRECE : 8; /*!< [23..16] Precedence value of the ring supervisor extracted from + * the Supervisor precedence field of the beacon frame. */ + uint32_t : 8; + } DLR_SUPR_MAChi_b; + }; + + union + { + __IM uint32_t DLR_STATE_VLAN; /*!< (@ 0x00003C28) DLR Ring Status/VLAN Register */ + + struct + { + __IM uint32_t RINGSTAT : 8; /*!< [7..0] DLR ring state extracted from the Ring State field of + * the beacon frame. */ + __IM uint32_t VLANVALID : 1; /*!< [8..8] VLAN Valid */ + uint32_t : 7; + __IM uint32_t VLANINFO : 16; /*!< [31..16] IEEE 802.1Q VLAN Tag control field extracted from the + * VLAN info field of the beacon frame. */ + } DLR_STATE_VLAN_b; + }; + + union + { + __IM uint32_t DLR_BEC_TMOUT; /*!< (@ 0x00003C2C) DLR Beacon Timeout Register */ + + struct + { + __IM uint32_t BEC_TMOUT : 32; /*!< [31..0] Beacon timeout timer value extracted from the Beacon + * Timeout in microseconds field of the beacon frame. */ + } DLR_BEC_TMOUT_b; + }; + + union + { + __IM uint32_t DLR_BEC_INTRVL; /*!< (@ 0x00003C30) DLR Beacon Interval Register */ + + struct + { + __IM uint32_t BEC_INTRVL : 32; /*!< [31..0] Beacon interval extracted from the Beacon Interval field + * of the beacon frame */ + } DLR_BEC_INTRVL_b; + }; + + union + { + __IM uint32_t DLR_SUPR_IPADR; /*!< (@ 0x00003C34) DLR Supervisor IP Address Register */ + + struct + { + __IM uint32_t SUPR_IPADR : 32; /*!< [31..0] IP address of the ring supervisor extracted from the + * Source IP address field of the beacon frame. A value of + * 0x0 can be received when supervisor has no IP address. */ + } DLR_SUPR_IPADR_b; + }; + + union + { + __IM uint32_t DLR_ETH_STYP_VER; /*!< (@ 0x00003C38) DLR Sub Type/Protocol Version Register */ + + struct + { + __IM uint32_t SUBTYPE : 8; /*!< [7..0] DLR Ring Ether Sub Type extracted from the Ring Sub Type + * field of the beacon frame. */ + __IM uint32_t PROTVER : 8; /*!< [15..8] DLR Ring Protocol Version extracted from the Ring Protocol + * Version field of the beacon frame. */ + __IM uint32_t SPORT : 8; /*!< [23..16] Source port extracted from the Source Port field of + * the beacon frame. */ + uint32_t : 8; + } DLR_ETH_STYP_VER_b; + }; + + union + { + __IM uint32_t DLR_INV_TMOUT; /*!< (@ 0x00003C3C) DLR Beacon Timeout Timer Register */ + + struct + { + __IM uint32_t INV_TMOUT : 32; /*!< [31..0] Last out of range Beacon timeout timer value extracted + * from beacon frame on any of the port. */ + } DLR_INV_TMOUT_b; + }; + + union + { + __IM uint32_t DLR_SEQ_ID; /*!< (@ 0x00003C40) DLR Sequence ID Register */ + + struct + { + __IM uint32_t SEQ_ID : 32; /*!< [31..0] Sequence ID of the last beacon frame extracted from + * the Sequence ID field of the beacon frame on port 0 or + * port 1. Sequence ID of the ignored frames is not stored. */ + } DLR_SEQ_ID_b; + }; + __IM uint32_t RESERVED104[5]; + + union + { + __IOM uint32_t DLR_DSTlo; /*!< (@ 0x00003C58) DLR Beacon Destination Address Low Register */ + + struct + { + __IOM uint32_t DLR_DST : 32; /*!< [31..0] First 4 octets of the beacon frame destination multicast + * address (01-21-6C-00-00-01). */ + } DLR_DSTlo_b; + }; + + union + { + __IOM uint32_t DLR_DSThi; /*!< (@ 0x00003C5C) DLR Beacon Destination Address High Register */ + + struct + { + __IOM uint32_t DLR_DST : 16; /*!< [15..0] Last 2 octets of the beacon frame destination multicast + * address (01-21-6C-00-00-01). */ + uint32_t : 16; + } DLR_DSThi_b; + }; + + union + { + __IM uint32_t DLR_RX_STAT0; /*!< (@ 0x00003C60) DLR Received Frame Statistic Register 0 */ + + struct + { + __IM uint32_t RX_STAT0 : 32; /*!< [31..0] Number of Beacon Frames Received on Port 0 */ + } DLR_RX_STAT0_b; + }; + + union + { + __IM uint32_t DLR_RX_ERR_STAT0; /*!< (@ 0x00003C64) DLR Received Frame Error Statistic Register 0 */ + + struct + { + __IM uint32_t RX_ERR_STAT0 : 32; /*!< [31..0] Number of Beacon Frames Received with CRC Error on Port + * 0 */ + } DLR_RX_ERR_STAT0_b; + }; + __IM uint32_t RESERVED105; + + union + { + __IOM uint32_t DLR_RX_LF_STAT0; /*!< (@ 0x00003C6C) DLR Received Frame Loop Filter Statistic Register + * 0 */ + + struct + { + __IOM uint32_t RX_LF_STAT0 : 8; /*!< [7..0] Number of discarded frames in port 0 due to loop filtering + * when LOOP_FILTER_ENA is set to 1. Saturates at 255. */ + uint32_t : 24; + } DLR_RX_LF_STAT0_b; + }; + + union + { + __IM uint32_t DLR_RX_STAT1; /*!< (@ 0x00003C70) DLR Received Frame Statistic Register 1 */ + + struct + { + __IM uint32_t RX_STAT1 : 32; /*!< [31..0] Number of Beacon Frames Received on Port 1 */ + } DLR_RX_STAT1_b; + }; + + union + { + __IM uint32_t DLR_RX_ERR_STAT1; /*!< (@ 0x00003C74) DLR Received Frame Error Statistic Register 1 */ + + struct + { + __IM uint32_t RX_ERR_STAT1 : 32; /*!< [31..0] Number of Beacon Frames Received with CRC Error on Port + * 1 */ + } DLR_RX_ERR_STAT1_b; + }; + __IM uint32_t RESERVED106; + + union + { + __IOM uint32_t DLR_RX_LF_STAT1; /*!< (@ 0x00003C7C) DLR Received Frame Loop Filter Statistic Register + * 1 */ + + struct + { + __IOM uint32_t RX_LF_STAT1 : 8; /*!< [7..0] Number of discarded frames in port 1 due to loop filtering + * when LOOP_FILTER_ENA is set to 1. Saturates at 255. */ + uint32_t : 24; + } DLR_RX_LF_STAT1_b; + }; + __IM uint32_t RESERVED107[32]; + + union + { + __IOM uint32_t PRP_CONFIG; /*!< (@ 0x00003D00) PRP Configuration Register */ + + struct + { + __IOM uint32_t PRP_ENA : 1; /*!< [0..0] Enable PRP Operation */ + __IOM uint32_t RX_DUP_ACCEPT : 1; /*!< [1..1] Enable Duplicate Accept Mode of Operation at Receive */ + __IOM uint32_t RX_REMOVE_RCT : 1; /*!< [2..2] Allow PRP Port RX to Remove the RCT */ + __IOM uint32_t TX_RCT_MODE : 2; /*!< [4..3] Control Appending the RCT to Transmitted Frames on the + * Redundant Ports */ + __IOM uint32_t TX_RCT_BROADCAST : 1; /*!< [5..5] Should be 1 normally. */ + __IOM uint32_t TX_RCT_MULTICAST : 1; /*!< [6..6] Should be 1 normally. */ + __IOM uint32_t TX_RCT_UNKNOWN : 1; /*!< [7..7] Should be 1 normally. */ + __IOM uint32_t TX_RCT_1588 : 1; /*!< [8..8] Setting this bit affects IEEE 1588 frames that are forwarded + * through the switch (for example, when used as RedBox) to + * both PRP_GROUP ports. Locally generated IEEE 1588 frames + * (peer-delay request/response) are not affected by this + * setting. */ + __IOM uint32_t RCT_LEN_CHK_DIS : 1; /*!< [9..9] When set to 1, disables the RCT length field checking + * against the actual frame length. */ + uint32_t : 6; + __IOM uint32_t PRP_AGE_ENA : 1; /*!< [16..16] Enable History Memory Aging Timer */ + uint32_t : 15; + } PRP_CONFIG_b; + }; + + union + { + __IOM uint32_t PRP_GROUP; /*!< (@ 0x00003D04) PRP Port Group Register */ + + struct + { + __IOM uint32_t PRP_GROUP : 3; /*!< [2..0] Defines which two ports should be treated as redundant + * ports for PRP. */ + uint32_t : 13; + __IOM uint32_t LANB_MASK : 3; /*!< [18..16] Defines which of the ports is considered the LAN B + * port. */ + uint32_t : 13; + } PRP_GROUP_b; + }; + + union + { + __IOM uint32_t PRP_SUFFIX; /*!< (@ 0x00003D08) PRP RCT Suffix */ + + struct + { + __IOM uint32_t PRP_SUFFIX : 16; /*!< [15..0] The Redundancy Control Trailer (RCT) suffix (initial + * value is 0x88FB) */ + uint32_t : 16; + } PRP_SUFFIX_b; + }; + + union + { + __IOM uint32_t PRP_LANID; /*!< (@ 0x00003D0C) PRP LAN Identifier */ + + struct + { + __IOM uint32_t LANAID : 4; /*!< [3..0] LAN A Identifier */ + __IOM uint32_t LANBID : 4; /*!< [7..4] LAN B Identifier */ + uint32_t : 24; + } PRP_LANID_b; + }; + + union + { + __IOM uint32_t DUP_W; /*!< (@ 0x00003D10) PRP Max Duplicate Detection Window Size */ + + struct + { + __IOM uint32_t DUP_W : 8; /*!< [7..0] Maximum Duplicate Detect Window Size */ + uint32_t : 24; + } DUP_W_b; + }; + + union + { + __IOM uint32_t PRP_AGETIME; /*!< (@ 0x00003D14) PRP Aging Time Define Register */ + + struct + { + __IOM uint32_t PRP_AGETIME : 24; /*!< [23..0] Timeout in steps of 32 switch operating clock cycles + * to control aging of duplicate history data. */ + uint32_t : 8; + } PRP_AGETIME_b; + }; + + union + { + __IOM uint32_t PRP_IRQ_CONTROL; /*!< (@ 0x00003D18) PRP Interrupt Control Register */ + + struct + { + __IOM uint32_t MEMTOOLATE : 1; /*!< [0..0] Enable Interrupt for Memory Error Indications. */ + __IOM uint32_t WRONGLAN : 1; /*!< [1..1] Enable interrupt for frames received at a redundant port + * with an invalid LAN identifier in its redundancy trailer. */ + __IOM uint32_t OUTOFSEQ : 1; /*!< [2..2] Enable interrupt for frames received and accepted but + * have an unexpected sequence number. */ + __IOM uint32_t SEQMISSING : 1; /*!< [3..3] Enable interrupt for frames received and accepted that + * caused the history to skip a sequence number that was never + * received (for example, a missing sequence number is being + * ignored and is now treated as a candidate for dropping). */ + uint32_t : 28; + } PRP_IRQ_CONTROL_b; + }; + + union + { + __IOM uint32_t PRP_IRQ_STAT_ACK; /*!< (@ 0x00003D1C) PRP Interrupt Status/ACK Register */ + + struct + { + __IOM uint32_t MEMTOOLATE : 1; /*!< [0..0] Interrupt Pending Indication */ + __IOM uint32_t WRONGLAN : 1; /*!< [1..1] This bit functions the same as MEMTOOLATE bit. */ + __IOM uint32_t OUTOFSEQ : 1; /*!< [2..2] This bit functions the same as MEMTOOLATE bit. */ + __IOM uint32_t SEQMISSING : 1; /*!< [3..3] This bit functions the same as MEMTOOLATE bit. */ + uint32_t : 28; + } PRP_IRQ_STAT_ACK_b; + }; + + union + { + __IOM uint32_t RM_ADDR_CTRL; /*!< (@ 0x00003D20) PRP History Memory Transactions Control Register */ + + struct + { + __IOM uint32_t address : 12; /*!< [11..0] Memory Address for Read and Write Transactions */ + uint32_t : 10; + __IOM uint32_t CLEAR_DYNAMIC : 1; /*!< [22..22] When set to 1, scan the complete table for valid dynamic + * history entries and deletes them (writes entry with all + * 0s). */ + __IOM uint32_t CLEAR_MEMORY : 1; /*!< [23..23] When set to 1, write all memory locations with 0. */ + uint32_t : 1; + __IOM uint32_t WRITE : 1; /*!< [25..25] When set to 1, perform a Single Write Transaction. */ + __IOM uint32_t READ : 1; /*!< [26..26] When set to 1, perform Single Read Transaction. */ + uint32_t : 2; + __IOM uint32_t CLEAR : 1; /*!< [29..29] When set to 1, write all 0s to the entry selected by + * the given address. */ + uint32_t : 1; + __IM uint32_t BUSY : 1; /*!< [31..31] Transaction Busy Indication */ + } RM_ADDR_CTRL_b; + }; + + union + { + __IOM uint32_t RM_DATA; /*!< (@ 0x00003D24) PRP Memory Data Register */ + + struct + { + __IOM uint32_t RM_DATA : 32; /*!< [31..0] Memory data register for read/write transactions controlled + * by RM_ADDR_CTRL. */ + } RM_DATA_b; + }; + + union + { + __IOM uint32_t RM_DATA_HI; /*!< (@ 0x00003D28) PRP Memory Data Higher Register */ + + struct + { + __IOM uint32_t RM_DATA_HI : 32; /*!< [31..0] A Second Data Register */ + } RM_DATA_HI_b; + }; + + union + { + __IM uint32_t RM_STATUS; /*!< (@ 0x00003D2C) PRP Memory Controller Status Indication */ + + struct + { + __IM uint32_t ageaddress : 12; /*!< [11..0] Address of an entry which the aging process inspects + * when the aging timer expires next time. */ + uint32_t : 20; + } RM_STATUS_b; + }; + + union + { + __IOM uint32_t TxSeqTooLate; /*!< (@ 0x00003D30) PRP Frame Transmission Retrieval of Failed Sequence */ + + struct + { + __IOM uint32_t TxSeqTooLate : 4; /*!< [3..0] Retrieval of a Sequence Number Failed */ + uint32_t : 28; + } TxSeqTooLate_b; + }; + + union + { + __IM uint32_t CntErrWrongLanA; /*!< (@ 0x00003D34) PRP Wrong ID LAN-A Count Register */ + + struct + { + __IM uint32_t CntErrWrongLanA : 32; /*!< [31..0] Valid frames received on LAN A which have an RCT (valid + * length + suffix) but LAN ID is not matching LAN A. */ + } CntErrWrongLanA_b; + }; + + union + { + __IM uint32_t CntErrWrongLanB; /*!< (@ 0x00003D38) PRP Wrong ID LAN-B Count Register */ + + struct + { + __IM uint32_t CntErrWrongLanB : 32; /*!< [31..0] Valid frames received on LAN B which have an RCT (valid + * length + suffix) but LAN ID is not matching LAN B. */ + } CntErrWrongLanB_b; + }; + + union + { + __IM uint32_t CntDupLanA; /*!< (@ 0x00003D3C) PRP Duplicate LAN-A Count Register */ + + struct + { + __IM uint32_t CntDupLanA : 32; /*!< [31..0] Valid frames received on LAN A that were dropped by + * duplicate detection. */ + } CntDupLanA_b; + }; + + union + { + __IM uint32_t CntDupLanB; /*!< (@ 0x00003D40) PRP Duplicate LAN-B Count Register */ + + struct + { + __IM uint32_t CntDupLanB : 32; /*!< [31..0] Valid frames received on LAN B that were dropped by + * duplicate detection. */ + } CntDupLanB_b; + }; + + union + { + __IM uint32_t CntOutOfSeqLowA; /*!< (@ 0x00003D44) PRP Sequence Error Low LAN-A Count Register */ + + struct + { + __IM uint32_t CntOutOfSeqLowA : 32; /*!< [31..0] Valid and accepted frames received on LAN A with a sequence + * number less than last window (DUP_W). */ + } CntOutOfSeqLowA_b; + }; + + union + { + __IM uint32_t CntOutOfSeqLowB; /*!< (@ 0x00003D48) PRP Sequence Error Low LAN-B Count Register */ + + struct + { + __IM uint32_t CntOutOfSeqLowB : 32; /*!< [31..0] Valid and accepted frames received on LAN B with a sequence + * number less than last window (DUP_W). */ + } CntOutOfSeqLowB_b; + }; + + union + { + __IM uint32_t CntOutOfSeqA; /*!< (@ 0x00003D4C) PRP Sequence Error LAN-A Count Register */ + + struct + { + __IM uint32_t CntOutOfSeqA : 32; /*!< [31..0] Valid and accepted frames received on LAN A with an + * unexpected sequence number. */ + } CntOutOfSeqA_b; + }; + + union + { + __IM uint32_t CntOutOfSeqB; /*!< (@ 0x00003D50) PRP Sequence Error LAN-B Count Register */ + + struct + { + __IM uint32_t CntOutOfSeqB : 32; /*!< [31..0] Valid and accepted frames received on LAN B with an + * unexpected sequence number. */ + } CntOutOfSeqB_b; + }; + + union + { + __IM uint32_t CntAcceptA; /*!< (@ 0x00003D54) PRP Valid Frame LAN-A Count Register */ + + struct + { + __IM uint32_t CntAcceptA : 32; /*!< [31..0] Valid frames received on LAN A which had a valid sequence + * number in the expected range. */ + } CntAcceptA_b; + }; + + union + { + __IM uint32_t CntAcceptB; /*!< (@ 0x00003D58) PRP Valid Frame LAN-B Count Register */ + + struct + { + __IM uint32_t CntAcceptB : 32; /*!< [31..0] Valid frames received on LAN B which had a valid sequence + * number in the expected range. */ + } CntAcceptB_b; + }; + + union + { + __IM uint32_t CntMissing; /*!< (@ 0x00003D5C) PRP Drop History Adjustment Count */ + + struct + { + __IM uint32_t CntMissing : 32; /*!< [31..0] Indicates adjustment of the drop history as a frame + * was received with a sequence number of expected + history + + 1. This occurs if the same frame was dropped in both + + LAN segments (one sequence number is missing) and the history + + is now extended beyond that sequence number (causing it + + to be treated as drop allowed). */ + } CntMissing_b; + }; + __IM uint32_t RESERVED108[40]; + + union + { + __IOM uint32_t HUB_CONFIG; /*!< (@ 0x00003E00) HUB Configuration Register */ + + struct + { + __IOM uint32_t HUB_ENA : 1; /*!< [0..0] Enable Integrated HUB Operation */ + __IOM uint32_t RETRANSMIT_ENA : 1; /*!< [1..1] Enable Hub Retransmit Capability */ + __IOM uint32_t TRIGGER_MODE : 1; /*!< [2..2] Enable Single Frame Trigger Mode */ + __IOM uint32_t HUB_ISOLATE : 1; /*!< [3..3] Isolate all hub ports from the other ports of the switch + * and allow communication with management port only. It is + * then up to the application of the management port to implement + * some bridging functionality to other ports as required. */ + __IOM uint32_t TIMER_SEL : 1; /*!< [4..4] Select the timer to use for timed triggers */ + uint32_t : 1; + __IOM uint32_t IPG_WAIT : 3; /*!< [8..6] IPG_WAIT */ + __IOM uint32_t CRS_GEN : 1; /*!< [9..9] CRS_GEN */ + __IOM uint32_t PRMB_GEN_DIS : 1; /*!< [10..10] PRMB_GEN_DIS */ + __IOM uint32_t JAM_WAIT_IDLE : 1; /*!< [11..11] JAM_WAIT_IDLE */ + uint32_t : 20; + } HUB_CONFIG_b; + }; + + union + { + __IOM uint32_t HUB_GROUP; /*!< (@ 0x00003E04) HUB Port Group Register */ + + struct + { + __IOM uint32_t HUB_GROUP : 3; /*!< [2..0] Define all ports that should be combined to a Hub Group. */ + uint32_t : 29; + } HUB_GROUP_b; + }; + + union + { + __IOM uint32_t HUB_DEFPORT; /*!< (@ 0x00003E08) HUB Default Port Selection Register */ + + struct + { + __IOM uint32_t HUB_DEFPORT : 3; /*!< [2..0] The default port within the Hub Group where all traffic + * from a port outside the group is forwarded to port (bit + * 0 = port 0, bit 1 = port 1, and bit 2 = port 2). If a frame + * should be forwarded to any of the hub ports, the frame + * is sent to this port only. The copy function of the hub + * copies it to all PHY interfaces of the group eventually. */ + uint32_t : 29; + } HUB_DEFPORT_b; + }; + + union + { + __IOM uint32_t HUB_TRIGGER_IMMEDIATE; /*!< (@ 0x00003E0C) HUB Transmission Trigger Immediate Register */ + + struct + { + __IOM uint32_t HUB_TRIGGER_IMMEDIATE : 3; /*!< [2..0] Trigger immediate transmission of a single frame from + * given port within the hub group (bit 0 = port 0, bit 1 + * = port 1, and bit 2 = port 2). */ + uint32_t : 29; + } HUB_TRIGGER_IMMEDIATE_b; + }; + + union + { + __IOM uint32_t HUB_TRIGGER_AT; /*!< (@ 0x00003E10) HUB Transmission Trigger At Register */ + + struct + { + __IOM uint32_t HUB_TRIGGER_AT : 3; /*!< [2..0] Trigger Transmission of a Single Frame at a Specific + * Time (bit 0 = port 0, bit 1 = port 1, and bit 2 = port + * 2). */ + uint32_t : 29; + } HUB_TRIGGER_AT_b; + }; + + union + { + __IOM uint32_t HUB_TTIME; /*!< (@ 0x00003E14) HUB Transmission Time Define Register */ + + struct + { + __IOM uint32_t HUB_TTIME : 32; /*!< [31..0] Define the Time Value when a Trigger Should Occur */ + } HUB_TTIME_b; + }; + + union + { + __IOM uint32_t HUB_IRQ_CONTROL; /*!< (@ 0x00003E18) HUB Interrupt Control Register */ + + struct + { + __IOM uint32_t RX_TRIGGER : 3; /*!< [2..0] Enable Interrupt on Receive Pattern Match Trigger Function */ + __IOM uint32_t CHANGE_DET : 1; /*!< [3..3] Enable interrupt for hub TX state machine port state + * change request detection */ + __IOM uint32_t TRIGGER_IMMEDIATE : 1; /*!< [4..4] Enable interrupt when hub transmit started after writing + * the HUB_TRIGGER_IMMEDIATE register */ + __IOM uint32_t TRIGGER_TIMER : 1; /*!< [5..5] Enable interrupt when hub transmit started after writing + * the HUB_TRIGGER_TIME register and the timeout value is + * reached (register HUB_TTIME). */ + uint32_t : 26; + } HUB_IRQ_CONTROL_b; + }; + + union + { + __IOM uint32_t HUB_IRQ_STAT_ACK; /*!< (@ 0x00003E1C) HUB Interrupt Status/ACK Register */ + + struct + { + __IOM uint32_t RX_TRIGGER : 3; /*!< [2..0] Interrupt Pending Indication */ + __IOM uint32_t CHANGE_DET : 1; /*!< [3..3] This bit functions the same as RX_TRIGGER bit. */ + __IOM uint32_t TRIGGER_IMMEDIATE : 1; /*!< [4..4] This bit functions the same as RX_TRIGGER bit. */ + __IOM uint32_t TRIGGER_TIMER : 1; /*!< [5..5] This bit functions the same as RX_TRIGGER bit. */ + uint32_t : 26; + } HUB_IRQ_STAT_ACK_b; + }; + + union + { + __IM uint32_t HUB_STATUS; /*!< (@ 0x00003E20) HUB Status Register */ + + struct + { + __IM uint32_t PORTS_ACTIVE : 3; /*!< [2..0] When this bit is 1, it shows the currently active ports + * of the Hub group which are allowed for transmit. */ + uint32_t : 6; + __IM uint32_t TX_ACTIVE : 1; /*!< [9..9] When this bit is 1, the hub global transmit state machine + * has successfully entered Hub mode and is now controlling + * the hub group. */ + __IM uint32_t TX_BUSY : 1; /*!< [10..10] When this bit is 1, the local device currently transmits + * data to all ports within the hub group. */ + __IM uint32_t Speed_OK : 1; /*!< [11..11] When this bit is 1, it indicates that the port speed + * of all group ports match. */ + __IM uint32_t TX_Change_Pending : 1; /*!< [12..12] Indicate a pending change request in the hub transmitter + * that is unsolved and cause the hub to stop operation (no + * longer performing any transmissions). */ + uint32_t : 19; + } HUB_STATUS_b; + }; + + union + { + __IM uint32_t HUB_OPORT_STATUS; /*!< (@ 0x00003E24) HUB Output Port Status Register */ + + struct + { + __IM uint32_t HUB_OPORT_STATUS : 3; /*!< [2..0] Per Output Port Data Available Status */ + uint32_t : 29; + } HUB_OPORT_STATUS_b; + }; + __IM uint32_t RESERVED109[22]; + + union + { + __IOM uint32_t TDMA_CONFIG; /*!< (@ 0x00003E80) TDMA Configuration Register */ + + struct + { + __IOM uint32_t TDMA_ENA : 1; /*!< [0..0] Enable TDMA Scheduler */ + __IM uint32_t WAIT_START : 1; /*!< [1..1] Status bit which is set as long as the scheduler is enabled + * but has not yet reached the time given in register TDMA_START. */ + __IOM uint32_t TIMER_SEL : 1; /*!< [2..2] Select which timer to use as the time source for the + * scheduler */ + uint32_t : 1; + __IM uint32_t RED_PERIOD : 1; /*!< [4..4] Read only bit indicating the current period for Profinet */ + __IOM uint32_t RED_OVRD_ENA : 1; /*!< [5..5] Enables overriding the RED period status, regardless + * of the indication by the TCV. */ + __IOM uint32_t RED_OVRD : 1; /*!< [6..6] Override Value for the RED Period */ + __OM uint32_t IN_CT_WREN : 1; /*!< [7..7] IN_CT_WREN */ + __OM uint32_t OUT_CT_WREN : 1; /*!< [8..8] Enable writing the OUT_CT_ENA control to the egress ports. */ + __OM uint32_t HOLD_REQ_CLR : 1; /*!< [9..9] Writing 1 to this register clears the state of TDMA hold + * request. */ + uint32_t : 2; + __IM uint32_t TIMER_SEL_ACTIVE : 1; /*!< [12..12] Return the current timer being used for the TDMA Scheduler */ + uint32_t : 3; + __IOM uint32_t IN_CT_ENA : 4; /*!< [19..16] On read, return the current status of the ingress Cut-Through + * enable indicated by the TDMA scheduler. On write, override + * the ingress Cut-Through enable if IN_CT_WREN is also 1. */ + uint32_t : 4; + __IOM uint32_t OUT_CT_ENA : 4; /*!< [27..24] On read, return the current status of the egress Cut-Through + * enable indicated by the TDMA scheduler. On write, override + * the egress Cut-Through enable if OUT_CT_WREN is also 1. */ + uint32_t : 4; + } TDMA_CONFIG_b; + }; + + union + { + __IOM uint32_t TDMA_ENA_CTRL; /*!< (@ 0x00003E84) TDMA Scheduling Enable Control Register */ + + struct + { + __IOM uint32_t PORT_ENA : 4; /*!< [3..0] Set to 1 to indicate that a port is operating in TDMA + * mode. When set to 1 for a port, the port does not prefetch + * another frame until the current frame in progress is done + * and if TDMA_PREBUF_DIS in COMMAND_CONFIG is set to 1. This + * helps adding precision to the queue gating operations indicated + * by the TDMA at the expense of loss of line rate. */ + uint32_t : 12; + __IOM uint32_t QGATE_DIS : 8; /*!< [23..16] One bit per output queue. When a bit is set to 1, the + * TDMA scheduler gating commands do not affect the queue + * even if the queue mask in the TCV control data is set to + * 1. */ + __IOM uint32_t QTRIG_DIS : 8; /*!< [31..24] One bit per output queue. When a bit is set to 1, the + * TDMA scheduler triggering commands do not affect the queue + * even if the queue mask in the TCV control data is set to + * 1. */ + } TDMA_ENA_CTRL_b; + }; + + union + { + __IOM uint32_t TDMA_START; /*!< (@ 0x00003E88) TDMA Start Time Set Register */ + + struct + { + __IOM uint32_t TDMA_START : 32; /*!< [31..0] Set the start time for the very first cycle after system + * initialization has completed. The value is compared with + * the system time (selected in TDMA_CONFIG.TIMER_SEL) and + * when it is reached (crossed), the scheduler begins with + * its first cycle. The 2nd cycle is then at TDMA_START + + * TDMA_CYCLE. */ + } TDMA_START_b; + }; + + union + { + __IOM uint32_t TDMA_MODULO; /*!< (@ 0x00003E8C) TDMA System Timer Modulo */ + + struct + { + __IOM uint32_t TDMA_MODULO : 32; /*!< [31..0] The System Timer Modulo */ + } TDMA_MODULO_b; + }; + + union + { + __IOM uint32_t TDMA_CYCLE; /*!< (@ 0x00003E90) TDMA Periodic Cycle Set Register */ + + struct + { + __IOM uint32_t TDMA_CYCLE : 32; /*!< [31..0] The periodic cycle time for the scheduler given in system + * timer time. */ + } TDMA_CYCLE_b; + }; + + union + { + __IOM uint32_t TCV_SEQ_ADDR; /*!< (@ 0x00003E94) TCV Sequence Address Register */ + + struct + { + __IOM uint32_t TCV_S_ADDR : 12; /*!< [11..0] Address to write to or read from in the TCV sequence + * table. */ + uint32_t : 19; + __IOM uint32_t ADDR_AINC : 1; /*!< [31..31] When set to 1, read and write operations performed + * using TCV_SEQ_CTRL causes the address in TCV_S_ADDR to + * auto-increment after the operation. */ + } TCV_SEQ_ADDR_b; + }; + + union + { + __IOM uint32_t TCV_SEQ_CTRL; /*!< (@ 0x00003E98) TCV Sequence Table Control Register */ + + struct + { + __IOM uint32_t START : 1; /*!< [0..0] Indicate this TCV must be executed after the next cycle + * start */ + __IOM uint32_t INT : 1; /*!< [1..1] Indicates this TCV generates an interrupt to the CPU + * when activated */ + __IOM uint32_t TCV_D_IDX : 9; /*!< [10..2] Index to the TCV Data Entry */ + uint32_t : 11; + __IOM uint32_t GPIO : 8; /*!< [29..22] Generic bits that control the output pins ETHSW_TDMAOUTn + * (n = 0 to 7) */ + uint32_t : 1; + __IOM uint32_t READ_MODE : 1; /*!< [31..31] When set to 1, a read operation is performed instead + * of writing to the TCV sequence table. The read data (START, + * INT, TCV_D_IDX[8:0], and GPIO) can be obtained by reading + * this register afterwards. On read, this field always returns + * 0. */ + } TCV_SEQ_CTRL_b; + }; + + union + { + __IOM uint32_t TCV_SEQ_LAST; /*!< (@ 0x00003E9C) TCV Sequence Last Entry */ + + struct + { + __IOM uint32_t LAST : 12; /*!< [11..0] Defines the last entry to read from the TCV sequence + * table when the TDMA scheduler is operating. */ + uint32_t : 4; + __IM uint32_t ACTIVE : 12; /*!< [27..16] Return the active TCV sequence entry. */ + uint32_t : 4; + } TCV_SEQ_LAST_b; + }; + + union + { + __IOM uint32_t TCV_D_ADDR; /*!< (@ 0x00003EA0) TCV Data Address Register */ + + struct + { + __IOM uint32_t ADDR : 9; /*!< [8..0] Address to read from/write to in the TCV data table */ + uint32_t : 22; + __IOM uint32_t AINC_WR_ENA : 1; /*!< [31..31] Auto-Increment Enable */ + } TCV_D_ADDR_b; + }; + + union + { + __IOM uint32_t TCV_D_OFFSET; /*!< (@ 0x00003EA4) TCV Data Offset Register */ + + struct + { + __IOM uint32_t TCV_D_OFFSET : 32; /*!< [31..0] 32-bit time offset for the TCV data entry indicated + * by TCV_D_ADDR. When accessing the table, TCV_D_OFFSET must + * be read or written before TCV_D_CTRL. */ + } TCV_D_OFFSET_b; + }; + + union + { + __IOM uint32_t TCV_D_CTRL; /*!< (@ 0x00003EA8) TCV Data Control Register */ + + struct + { + __IOM uint32_t INC_CTR0 : 1; /*!< [0..0] Increment Control for Counter 0 */ + __IOM uint32_t INC_CTR1 : 1; /*!< [1..1] Increment Control for Counter 1 */ + __IOM uint32_t RED_PERIOD : 1; /*!< [2..2] Period Color Control (for Profinet IRT) */ + __IOM uint32_t OUT_CT_ENA : 1; /*!< [3..3] Output Cut-Through Enable */ + __IOM uint32_t IN_CT_ENA : 1; /*!< [4..4] Input Cut-Through Enable */ + __IOM uint32_t TRIGGER_MODE : 1; /*!< [5..5] Trigger mode enable when set to 1. GATE_MODE must be + * 0, otherwise, GATE_MODE has precedence. */ + __IOM uint32_t GATE_MODE : 1; /*!< [6..6] Gate mode enable when set to 1. */ + __IOM uint32_t HOLD_REQ : 1; /*!< [7..7] Preemption hold request. Generates a hold request to + * ports enabled in PMASK. */ + __IOM uint32_t QGATE : 8; /*!< [15..8] Bits mask, one per output queue */ + __IOM uint32_t PMASK : 4; /*!< [19..16] Bits mask, one per output port */ + uint32_t : 12; + } TCV_D_CTRL_b; + }; + + union + { + __IOM uint32_t TDMA_CTR0; /*!< (@ 0x00003EAC) TDMA Counter 0 */ + + struct + { + __IOM uint32_t TDMA_CTR0 : 32; /*!< [31..0] 32-bit counter that is incremented when the TCV field + * INC_CTR0 is set to 1. */ + } TDMA_CTR0_b; + }; + + union + { + __IOM uint32_t TDMA_CTR1; /*!< (@ 0x00003EB0) TDMA Counter 1 */ + + struct + { + __IOM uint32_t VALUE : 8; /*!< [7..0] Current Counter Value */ + __OM uint32_t WRITE_ENA : 1; /*!< [8..8] Write Enable for VALUE */ + uint32_t : 7; + __IOM uint32_t MAX : 8; /*!< [23..16] Counter Maximum Value */ + __IOM uint32_t INT_VALUE : 8; /*!< [31..24] Interrupt Value */ + } TDMA_CTR1_b; + }; + + union + { + __IOM uint32_t TDMA_TCV_START; /*!< (@ 0x00003EB4) TDMA TCV Sequence Entry Start */ + + struct + { + __IOM uint32_t TDMA_TCV_START : 12; /*!< [11..0] Define the TCV_SEQ entry to start from. */ + uint32_t : 20; + } TDMA_TCV_START_b; + }; + + union + { + __IM uint32_t TIME_LOAD_NEXT; /*!< (@ 0x00003EB8) TDMA Calculated Next Loading Time */ + + struct + { + __IM uint32_t TIME_LOAD_NEXT : 32; /*!< [31..0] Status giving the calculated time the scheduler loads + * into its internal compare register after the current running + * slot end is reached (not the end of the current slot). */ + } TIME_LOAD_NEXT_b; + }; + + union + { + __IOM uint32_t TDMA_IRQ_CONTROL; /*!< (@ 0x00003EBC) TDMA IRQ Control Register */ + + struct + { + __IOM uint32_t TCV_INT_EN : 1; /*!< [0..0] Enable Interrupts Generated by the TCV */ + uint32_t : 12; + __IOM uint32_t CTR1_INT_EN : 1; /*!< [13..13] Enable Interrupts Generated from Counter 1 */ + uint32_t : 18; + } TDMA_IRQ_CONTROL_b; + }; + + union + { + __IOM uint32_t TDMA_IRQ_STAT_ACK; /*!< (@ 0x00003EC0) TDMA IRQ Status/ACK Register */ + + struct + { + __IOM uint32_t TCV_ACK : 1; /*!< [0..0] TCV Execution Event */ + uint32_t : 12; + __IOM uint32_t CTR1_ACK : 1; /*!< [13..13] Counter 1 Event */ + uint32_t : 18; + } TDMA_IRQ_STAT_ACK_b; + }; + + union + { + __IOM uint32_t TDMA_GPIO; /*!< (@ 0x00003EC4) TDMA GPIO Register */ + + struct + { + __IM uint32_t GPIO_STATUS : 8; /*!< [7..0] Status of the GPIO Output Pins */ + uint32_t : 8; + __IOM uint32_t GPIO_MODE : 16; /*!< [31..16] 2 bits per GPIO pin to configure its operating mode */ + } TDMA_GPIO_b; + }; + __IM uint32_t RESERVED110[14]; + + union + { + __IOM uint32_t RXMATCH_CONFIG[4]; /*!< (@ 0x00003F00) RX Pattern Matcher Configuration for Port [0..3] */ + + struct + { + __IOM uint32_t PATTERN_EN : 12; /*!< [11..0] Enable Patterns on the Port (RX) */ + uint32_t : 20; + } RXMATCH_CONFIG_b[4]; + }; + __IM uint32_t RESERVED111[12]; + + union + { + __IOM uint32_t PATTERN_CTRL[12]; /*!< (@ 0x00003F40) RX Pattern Matcher Function Control for Pattern + * [0..11] */ + + struct + { + __IOM uint32_t MATCH_NOT : 1; /*!< [0..0] When set, a match is reported and the functions of this + * control are executed if the pattern does not match. */ + __IOM uint32_t MGMTFWD : 1; /*!< [1..1] When set, the frame is forwarded to the management port + * only (suppressing destination address lookup). */ + __IOM uint32_t DISCARD : 1; /*!< [2..2] When set, the frame is discarded. */ + __IOM uint32_t SET_PRIO : 1; /*!< [3..3] Set frame priority, overriding normal classification. */ + __IOM uint32_t MODE : 2; /*!< [5..4] Selects the operating mode */ + __IOM uint32_t TIMER_SEL_OVR : 1; /*!< [6..6] Overrides the default timer to use by timestamp operations + * when set to 1, using instead the value in TIMER_SEL. */ + __IOM uint32_t FORCE_FORWARD : 1; /*!< [7..7] When set, the frame is forwarded to the ports indicated + * in PORTMASK, ignoring the result from L2 lookups. */ + __IOM uint32_t HUBTRIGGER : 1; /*!< [8..8] When set, the port defined in the PORTMASK setting is + * allowed for transmitting one frame. */ + __IOM uint32_t MATCH_RED : 1; /*!< [9..9] Enable the pattern matcher only when the TDMA indicates + * that this is the RED period. */ + __IOM uint32_t MATCH_NOT_RED : 1; /*!< [10..10] Enable the pattern matcher only when the TDMA indicates + * that this is not the RED period. */ + __IOM uint32_t VLAN_SKIP : 1; /*!< [11..11] When set to 1, for operating modes 1, 2, and 3. The + * first Length/Type after the MAC source address is compared + * against 0x8100. If it matches, a VLAN tag is assumed and + * 4 bytes are skipped. */ + __IOM uint32_t PRIORITY : 3; /*!< [14..12] Priority of the frame used when SET_PRIO is set. The + * priority is used to forward the frame into the corresponding + * output queue of a port. */ + __IOM uint32_t LEARNING_DIS : 1; /*!< [15..15] When set to 1, the hardware learning function is not + * executed. */ + __IOM uint32_t PORTMASK : 4; /*!< [19..16] A port mask used depending on the control bits (for + * example, HUBTRIGGER). */ + uint32_t : 2; + __IOM uint32_t IMC_TRIGGER : 1; /*!< [22..22] When set, the ports defined in the PORTMASK setting + * are allowed for transmitting one frame from the queues + * indicated by QUEUESEL. The trigger request is sent to the + * integrated memory controller. */ + __IOM uint32_t IMC_TRIGGER_DLY : 1; /*!< [23..23] When set, the ports defined in the PORTMASK setting + * are allowed for transmitting one frame from the queues + * indicated by QUEUESEL. The trigger request is sent to the + * integrated memory controller and the event is delayed by + * the value programmed in MMCTL_DLY_QTRIGGER_CTRL. */ + __IOM uint32_t SWAP_BYTES : 1; /*!< [24..24] Applicable only for operating modes 1, 2, and 3. When + * set to 1, the byte order is swapped from the order received + * by the frame. When set to 0, the first byte received by + * the frame is set into position 0 for comparison. When set + * to 1, the first byte received is set into position 3 (for + * mode 1) or position 2 (for mode 2 and 3) for comparison. */ + __IOM uint32_t MATCH_LT : 1; /*!< [25..25] For operating modes 1, 2, and 3. When set to 1, the + * Length/Type field in the frame after the MAC source address + * is compared against the value in length_type in the compare + * register. If VLAN_SKIP is set and the frame has a VLAN + * tag with Length/Type of 0x8100 then the comparison is performed + * in the Length/Type following the VLAN tag. */ + __IOM uint32_t TIMER_SEL : 1; /*!< [26..26] Override value to use when TIMER_SEL_OVR is set to + * 1 for selecting the timer for this frame. */ + uint32_t : 1; + __IOM uint32_t QUEUESEL : 4; /*!< [31..28] A queue selector for the HUBTRIGGER function. Selects + * the queue to trigger a frame, or sets from 0x8 to 0xF to + * select one among all queues. */ + } PATTERN_CTRL_b[12]; + }; + __IM uint32_t RESERVED112[4]; + + union + { + __IOM uint32_t PATTERN_IRQ_CONTROL; /*!< (@ 0x00003F80) RX Pattern Matcher Interrupt Control Register */ + + struct + { + __IOM uint32_t MATCHINT : 12; /*!< [11..0] Enable Interrupt on Receive Pattern Match */ + uint32_t : 4; + __IOM uint32_t ERROR_INT : 4; /*!< [19..16] Enable Interrupt on Internal Pattern Matcher Error */ + uint32_t : 12; + } PATTERN_IRQ_CONTROL_b; + }; + + union + { + __IOM uint32_t PATTERN_IRQ_STAT_ACK; /*!< (@ 0x00003F84) RX Pattern Matcher Interrupt Status/ACK Register */ + + struct + { + __IOM uint32_t MATCHINT : 12; /*!< [11..0] Interrupt pending indication for the corresponding pattern + * match events (see ). */ + uint32_t : 4; + __IOM uint32_t ERROR_INT : 4; /*!< [19..16] Interrupt pending indication for a pattern matcher + * error, per port. */ + uint32_t : 12; + } PATTERN_IRQ_STAT_ACK_b; + }; + + union + { + __IOM uint32_t PTRN_VLANID; /*!< (@ 0x00003F88) Custom VLAN ID Register */ + + struct + { + __IOM uint32_t PTRN_VLANID : 16; /*!< [15..0] Custom VLAN ID to use. The default VLAN ID 0x8100 is + * always considered by the hardware. This value can be changed + * to detect other VLANs like 0x8808. */ + uint32_t : 16; + } PTRN_VLANID_b; + }; + + union + { + __IOM uint32_t PATTERN_SEL; /*!< (@ 0x00003F8C) RX Pattern Number Selection Register */ + + struct + { + __IOM uint32_t PATTERN_SEL : 4; /*!< [3..0] Define the pattern number which is selected for read/write + * through the PTRN_CMP_* and PTRN_MSK_* registers. */ + uint32_t : 28; + } PATTERN_SEL_b; + }; + __IM uint32_t RESERVED113[12]; + + union + { + __IOM uint32_t PTRN_CMP_30; /*!< (@ 0x00003FC0) Pattern Compare Value Bytes 3 .. 0 */ + + struct + { + __IOM uint32_t PTRN_CMP_30 : 32; /*!< [31..0] Pattern Compare Value Bytes 3 .. 0 */ + } PTRN_CMP_30_b; + }; + + union + { + __IOM uint32_t PTRN_CMP_74; /*!< (@ 0x00003FC4) Pattern Compare Value Bytes 7 .. 4 */ + + struct + { + __IOM uint32_t PTRN_CMP_74 : 32; /*!< [31..0] Pattern Compare Value Bytes 7 .. 4 */ + } PTRN_CMP_74_b; + }; + + union + { + __IOM uint32_t PTRN_CMP_118; /*!< (@ 0x00003FC8) Pattern Compare Value Bytes 11 .. 8 */ + + struct + { + __IOM uint32_t PTRN_CMP_118 : 32; /*!< [31..0] Pattern Compare Value Bytes 11 .. 8 */ + } PTRN_CMP_118_b; + }; + __IM uint32_t RESERVED114; + + union + { + __IOM uint32_t PTRN_MSK_30; /*!< (@ 0x00003FD0) Pattern Mask for Bytes 3 .. 0 */ + + struct + { + __IOM uint32_t PTRN_MSK_30 : 32; /*!< [31..0] PTRN_MSK_30 */ + } PTRN_MSK_30_b; + }; + + union + { + __IOM uint32_t PTRN_MSK_74; /*!< (@ 0x00003FD4) Pattern Mask for Bytes 7 .. 4 */ + + struct + { + __IOM uint32_t PTRN_MSK_74 : 32; /*!< [31..0] PTRN_MSK_74 */ + } PTRN_MSK_74_b; + }; + + union + { + __IOM uint32_t PTRN_MSK_118; /*!< (@ 0x00003FD8) Pattern Mask for Bytes 11 .. 8 */ + + struct + { + __IOM uint32_t PTRN_MSK_118 : 32; /*!< [31..0] PTRN_MSK_118 */ + } PTRN_MSK_118_b; + }; +} R_ETHSW_Type; /*!< Size = 16348 (0x3fdc) */ + +/* =========================================================================================================================== */ +/* ================ R_ESC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief EtherCAT Slave Controller (R_ESC) + */ + +typedef struct /*!< (@ 0x80130000) R_ESC Structure */ +{ + union + { + __IM uint8_t TYPE; /*!< (@ 0x00000000) Type Register */ + + struct + { + __IM uint8_t TYPE : 8; /*!< [7..0] Type of the EtherCAT slave controller */ + } TYPE_b; + }; + + union + { + __IM uint8_t REVISION; /*!< (@ 0x00000001) Revision Register */ + + struct + { + __IM uint8_t REV : 8; /*!< [7..0] Revision of the EtherCAT slave controller */ + } REVISION_b; + }; + + union + { + __IM uint8_t BUILD; /*!< (@ 0x00000002) Build Register */ + + struct + { + __IM uint8_t BUILD : 8; /*!< [7..0] Build number of the EtherCAT slave controller */ + } BUILD_b; + }; + __IM uint8_t RESERVED; + + union + { + __IM uint8_t FMMU_NUM; /*!< (@ 0x00000004) FMMU Supported Register */ + + struct + { + __IM uint8_t NUMFMMU : 8; /*!< [7..0] Number of FMMU channels supported in the EtherCAT slave + * controller */ + } FMMU_NUM_b; + }; + + union + { + __IM uint8_t SYNC_MANAGER; /*!< (@ 0x00000005) SyncManager Supported Register */ + + struct + { + __IM uint8_t NUMSYNC : 8; /*!< [7..0] Number of SyncManager channels supported in the EtherCAT + * slave controller */ + } SYNC_MANAGER_b; + }; + + union + { + __IM uint8_t RAM_SIZE; /*!< (@ 0x00000006) RAM Size Register */ + + struct + { + __IM uint8_t RAMSIZE : 8; /*!< [7..0] Process data RAM size supported in the EtherCAT slave + * controller (unit: KB) */ + } RAM_SIZE_b; + }; + + union + { + __IM uint8_t PORT_DESC; /*!< (@ 0x00000007) Port Descriptor Register */ + + struct + { + __IM uint8_t P0 : 2; /*!< [1..0] Port 0 configuration */ + __IM uint8_t P1 : 2; /*!< [3..2] Port 1 configuration */ + __IM uint8_t P2 : 2; /*!< [5..4] Port 2 configuration */ + __IM uint8_t P3 : 2; /*!< [7..6] Port 3 configuration */ + } PORT_DESC_b; + }; + + union + { + __IM uint16_t FEATURE; /*!< (@ 0x00000008) ESC Features Supported Register */ + + struct + { + __IM uint16_t FMMU : 1; /*!< [0..0] FMMU Operation */ + uint16_t : 1; + __IM uint16_t DC : 1; /*!< [2..2] Distributed Clock */ + __IM uint16_t DCWID : 1; /*!< [3..3] Distributed Clock Width */ + uint16_t : 2; + __IM uint16_t LINKDECMII : 1; /*!< [6..6] Enhanced Link Detection in MII */ + __IM uint16_t FCS : 1; /*!< [7..7] Separate handling of FCS errors */ + __IM uint16_t DCSYNC : 1; /*!< [8..8] Enhanced DC SYNC activation */ + __IM uint16_t LRW : 1; /*!< [9..9] EtherCAT LRW command support */ + __IM uint16_t RWSUPP : 1; /*!< [10..10] EtherCAT read/write command support (BRW, APRW, FPRW) */ + __IM uint16_t FSCONFIG : 1; /*!< [11..11] Fixed FMMU/SyncManager configuration */ + uint16_t : 4; + } FEATURE_b; + }; + __IM uint16_t RESERVED1; + __IM uint32_t RESERVED2; + + union + { + __IM uint16_t STATION_ADR; /*!< (@ 0x00000010) Configured Station Address Register */ + + struct + { + __IM uint16_t NODADDR : 16; /*!< [15..0] Node Addressing Address Indication */ + } STATION_ADR_b; + }; + + union + { + __IOM uint16_t STATION_ALIAS; /*!< (@ 0x00000012) Configured Station Alias Register */ + + struct + { + __IOM uint16_t NODALIADDR : 16; /*!< [15..0] Alias Address Indication */ + } STATION_ALIAS_b; + }; + __IM uint32_t RESERVED3[3]; + + union + { + __IM uint8_t WR_REG_ENABLE; /*!< (@ 0x00000020) Write Register Enable Register */ + + struct + { + __IM uint8_t ENABLE : 1; /*!< [0..0] Register Write Protection Unlock */ + uint8_t : 7; + } WR_REG_ENABLE_b; + }; + + union + { + __IM uint8_t WR_REG_PROTECT; /*!< (@ 0x00000021) Write Register Protection Register */ + + struct + { + __IM uint8_t PROTECT : 1; /*!< [0..0] Register Write Protection Specification */ + uint8_t : 7; + } WR_REG_PROTECT_b; + }; + __IM uint16_t RESERVED4; + __IM uint32_t RESERVED5[3]; + + union + { + __IM uint8_t ESC_WR_ENABLE; /*!< (@ 0x00000030) ESC Write Enable Register */ + + struct + { + __IM uint8_t ENABLE : 1; /*!< [0..0] Register/Memory Write Protection Unlock */ + uint8_t : 7; + } ESC_WR_ENABLE_b; + }; + + union + { + __IM uint8_t ESC_WR_PROTECT; /*!< (@ 0x00000031) ESC Write Protection Register */ + + struct + { + __IM uint8_t PROTECT : 1; /*!< [0..0] Register/Memory Write Protection Specification */ + uint8_t : 7; + } ESC_WR_PROTECT_b; + }; + __IM uint16_t RESERVED6; + __IM uint32_t RESERVED7[3]; + + union + { + union + { + __IM uint8_t ESC_RESET_ECAT_R; /*!< (@ 0x00000040) ESC Reset ECAT Register for read */ + + struct + { + __IM uint8_t RESET_ECAT : 2; /*!< [1..0] Reset Progress Status */ + uint8_t : 6; + } ESC_RESET_ECAT_R_b; + }; + + union + { + __IM uint8_t ESC_RESET_ECAT_W; /*!< (@ 0x00000040) ESC Reset ECAT Register for write */ + + struct + { + __IM uint8_t RESET_ECAT : 8; /*!< [7..0] Software Reset Setting */ + } ESC_RESET_ECAT_W_b; + }; + }; + + union + { + union + { + __IOM uint8_t ESC_RESET_PDI_R; /*!< (@ 0x00000041) ESC Reset PDI Register for read */ + + struct + { + __IOM uint8_t RESET_PDI : 2; /*!< [1..0] Reset Progress Status */ + uint8_t : 6; + } ESC_RESET_PDI_R_b; + }; + + union + { + __IOM uint8_t ESC_RESET_PDI_W; /*!< (@ 0x00000041) ESC Reset PDI Register for write */ + + struct + { + __IOM uint8_t RESET_PDI : 8; /*!< [7..0] Software Reset Setting */ + } ESC_RESET_PDI_W_b; + }; + }; + __IM uint16_t RESERVED8; + __IM uint32_t RESERVED9[47]; + + union + { + __IM uint32_t ESC_DL_CONTROL; /*!< (@ 0x00000100) ESC DL Control Register */ + + struct + { + __IM uint32_t FWDRULE : 1; /*!< [0..0] Forwarding Rule */ + __IM uint32_t TEMPUSE : 1; /*!< [1..1] Temporary Use of Bits 15 to 8 Settings */ + uint32_t : 6; + __IM uint32_t LP0 : 2; /*!< [9..8] Loop Port 0 Configuration */ + __IM uint32_t LP1 : 2; /*!< [11..10] Loop Port 1 Configuration */ + __IM uint32_t LP2 : 2; /*!< [13..12] Loop Port 2 Configuration */ + __IM uint32_t LP3 : 2; /*!< [15..14] Loop Port 3 Configuration */ + __IM uint32_t RXFIFO : 3; /*!< [18..16] RX FIFO Size */ + uint32_t : 5; + __IM uint32_t STAALIAS : 1; /*!< [24..24] Station Alias Status */ + uint32_t : 7; + } ESC_DL_CONTROL_b; + }; + __IM uint32_t RESERVED10; + + union + { + __IM uint16_t PHYSICAL_RW_OFFSET; /*!< (@ 0x00000108) Physical Read/Write Offset Register */ + + struct + { + __IM uint16_t RWOFFSET : 16; /*!< [15..0] Offset between Read and Write Addresses */ + } PHYSICAL_RW_OFFSET_b; + }; + __IM uint16_t RESERVED11; + __IM uint32_t RESERVED12; + + union + { + __IM uint16_t ESC_DL_STATUS; /*!< (@ 0x00000110) ESC DL Status Register */ + + struct + { + __IM uint16_t PDIOPE : 1; /*!< [0..0] PDI/EEPROM Load State Indication */ + __IM uint16_t PDIWDST : 1; /*!< [1..1] PDI Watchdog Timer Status */ + __IM uint16_t ENHLINKD : 1; /*!< [2..2] Enhanced Link Detection Indication */ + uint16_t : 1; + __IM uint16_t PHYP0 : 1; /*!< [4..4] Port 0 Link State Indication */ + __IM uint16_t PHYP1 : 1; /*!< [5..5] Port 1 Link State Indication */ + __IM uint16_t PHYP2 : 1; /*!< [6..6] Port 2 Link State Indication */ + __IM uint16_t PHYP3 : 1; /*!< [7..7] Port 3 Link State Indication */ + __IM uint16_t LP0 : 1; /*!< [8..8] Loop Port 0 State Indication */ + __IM uint16_t COMP0 : 1; /*!< [9..9] Port 0 Communication State Indication */ + __IM uint16_t LP1 : 1; /*!< [10..10] Loop Port 1 State Indication */ + __IM uint16_t COMP1 : 1; /*!< [11..11] Port 1 Communication State Indication */ + __IM uint16_t LP2 : 1; /*!< [12..12] Loop Port 2 State Indication */ + __IM uint16_t COMP2 : 1; /*!< [13..13] Port 2 Communication State Indication */ + __IM uint16_t LP3 : 1; /*!< [14..14] Loop Port 3 State Indication */ + __IM uint16_t COMP3 : 1; /*!< [15..15] Port 3 Communication State Indication */ + } ESC_DL_STATUS_b; + }; + __IM uint16_t RESERVED13; + __IM uint32_t RESERVED14[3]; + + union + { + __IM uint16_t AL_CONTROL; /*!< (@ 0x00000120) AL Control Register */ + + struct + { + __IM uint16_t INISTATE : 4; /*!< [3..0] Change the state transition of the device state machine. */ + __IM uint16_t ERRINDACK : 1; /*!< [4..4] Error Indication Acknowledge (Response) */ + __IM uint16_t DEVICEID : 1; /*!< [5..5] Device ID Request */ + uint16_t : 10; + } AL_CONTROL_b; + }; + __IM uint16_t RESERVED15; + __IM uint32_t RESERVED16[3]; + + union + { + __IOM uint16_t AL_STATUS; /*!< (@ 0x00000130) AL Status Register */ + + struct + { + __IOM uint16_t ACTSTATE : 4; /*!< [3..0] State Machine State Indication */ + __IOM uint16_t ERR : 1; /*!< [4..4] Error State Indication */ + __IOM uint16_t DEVICEID : 1; /*!< [5..5] Device ID Load State Indication */ + uint16_t : 10; + } AL_STATUS_b; + }; + __IM uint16_t RESERVED17; + + union + { + __IOM uint16_t AL_STATUS_CODE; /*!< (@ 0x00000134) AL Status Code Register */ + + struct + { + __IOM uint16_t STATUSCODE : 16; /*!< [15..0] AL status code */ + } AL_STATUS_CODE_b; + }; + __IM uint16_t RESERVED18; + + union + { + __IOM uint8_t RUN_LED_OVERRIDE; /*!< (@ 0x00000138) RUN LED Override Register */ + + struct + { + __IOM uint8_t LEDCODE : 4; /*!< [3..0] LED Code Indication (FSM state: Bits [3:0] of the AL + * Status register, AL_STATUS) */ + __IOM uint8_t OVERRIDEEN : 1; /*!< [4..4] Override Setting */ + uint8_t : 3; + } RUN_LED_OVERRIDE_b; + }; + + union + { + __IOM uint8_t ERR_LED_OVERRIDE; /*!< (@ 0x00000139) ERR LED Override Register */ + + struct + { + __IOM uint8_t LEDCODE : 4; /*!< [3..0] LED Code Indication */ + __IOM uint8_t OVERRIDEEN : 1; /*!< [4..4] Override Setting */ + uint8_t : 3; + } ERR_LED_OVERRIDE_b; + }; + __IM uint16_t RESERVED19; + __IM uint32_t RESERVED20; + + union + { + __IM uint8_t PDI_CONTROL; /*!< (@ 0x00000140) PDI Control Register */ + + struct + { + __IM uint8_t PDI : 8; /*!< [7..0] Process Data Interface. In this LSI, the following value + * is indicated. */ + } PDI_CONTROL_b; + }; + + union + { + __IM uint8_t ESC_CONFIG; /*!< (@ 0x00000141) ESC Configuration Register */ + + struct + { + __IM uint8_t DEVEMU : 1; /*!< [0..0] Device emulation (control of AL status) */ + __IM uint8_t ENLALLP : 1; /*!< [1..1] Sets enhanced link detection for all ports */ + __IM uint8_t DCSYNC : 1; /*!< [2..2] Sets the SYNC output unit for distributed clocks (fixed + * to 1 in this LSI) */ + __IM uint8_t DCLATCH : 1; /*!< [3..3] Sets the latch input unit for distributed clocks */ + __IM uint8_t ENLP0 : 1; /*!< [4..4] Port 0 Enhanced Link Detection Setting */ + __IM uint8_t ENLP1 : 1; /*!< [5..5] Port 1 Enhanced Link Detection Setting */ + __IM uint8_t ENLP2 : 1; /*!< [6..6] Port 2 Enhanced Link Detection Setting */ + __IM uint8_t ENLP3 : 1; /*!< [7..7] Port 3 Enhanced Link Detection Setting */ + } ESC_CONFIG_b; + }; + __IM uint16_t RESERVED21; + __IM uint32_t RESERVED22[3]; + + union + { + __IM uint8_t PDI_CONFIG; /*!< (@ 0x00000150) PDI Configuration Register */ + + struct + { + __IM uint8_t ONCHIPBUSCLK : 5; /*!< [4..0] On-Chip Bus Clock Indication */ + __IM uint8_t ONCHIPBUS : 3; /*!< [7..5] On-Chip Bus Type Indication */ + } PDI_CONFIG_b; + }; + + union + { + __IM uint8_t SYNC_LATCH_CONFIG; /*!< (@ 0x00000151) SYNC/LATCH PDI Configuration Register */ + + struct + { + __IM uint8_t SYNC0OUT : 2; /*!< [1..0] SYNC0 Output Driver and Polarity Indication */ + __IM uint8_t SYNCLAT0 : 1; /*!< [2..2] SYNC0/LATCH0 Indication */ + __IM uint8_t SYNC0MAP : 1; /*!< [3..3] SYNC0 State Mapping Indication */ + __IM uint8_t SYNC1OUT : 2; /*!< [5..4] SYNC1 Output Driver and Polarity Indication */ + __IM uint8_t SYNCLAT1 : 1; /*!< [6..6] SYNC1/LATCH1 Indication */ + __IM uint8_t SYNC1MAP : 1; /*!< [7..7] SYNC1 State Mapping Indication */ + } SYNC_LATCH_CONFIG_b; + }; + + union + { + __IM uint16_t EXT_PDI_CONFIG; /*!< (@ 0x00000152) Extended PDI Configuration Register */ + + struct + { + __IM uint16_t DATABUSWID : 2; /*!< [1..0] PDI Data Bus Width Indication */ + uint16_t : 14; + } EXT_PDI_CONFIG_b; + }; + __IM uint32_t RESERVED23[43]; + + union + { + __IM uint16_t ECAT_EVENT_MASK; /*!< (@ 0x00000200) ECAT Event Mask Register */ + + struct + { + __IM uint16_t ECATEVMASK : 16; /*!< [15..0] Event Request Mask Setting */ + } ECAT_EVENT_MASK_b; + }; + __IM uint16_t RESERVED24; + + union + { + __IOM uint32_t AL_EVENT_MASK; /*!< (@ 0x00000204) AL Event Mask Register */ + + struct + { + __IOM uint32_t ALEVMASK : 32; /*!< [31..0] Event Request Mask Setting */ + } AL_EVENT_MASK_b; + }; + __IM uint32_t RESERVED25[2]; + + union + { + __IM uint16_t ECAT_EVENT_REQ; /*!< (@ 0x00000210) ECAT Event Request Register */ + + struct + { + __IM uint16_t DCLATCH : 1; /*!< [0..0] DC Latch Event State Indication */ + uint16_t : 1; + __IM uint16_t DLSTA : 1; /*!< [2..2] DL Status Event State Indication */ + __IM uint16_t ALSTA : 1; /*!< [3..3] AL Status Event State Indication */ + __IM uint16_t SMSTA0 : 1; /*!< [4..4] Mirror value of SyncManager 0 Status Indication */ + __IM uint16_t SMSTA1 : 1; /*!< [5..5] Mirror value of SyncManager 1 Status Indication */ + __IM uint16_t SMSTA2 : 1; /*!< [6..6] Mirror value of SyncManager 2 Status Indication */ + __IM uint16_t SMSTA3 : 1; /*!< [7..7] Mirror value of SyncManager 3 Status Indication */ + __IM uint16_t SMSTA4 : 1; /*!< [8..8] Mirror value of SyncManager 4 Status Indication */ + __IM uint16_t SMSTA5 : 1; /*!< [9..9] Mirror value of SyncManager 5 Status Indication */ + __IM uint16_t SMSTA6 : 1; /*!< [10..10] Mirror value of SyncManager 6 Status Indication */ + __IM uint16_t SMSTA7 : 1; /*!< [11..11] Mirror value of SyncManager 7 Status Indication */ + uint16_t : 4; + } ECAT_EVENT_REQ_b; + }; + __IM uint16_t RESERVED26; + __IM uint32_t RESERVED27[3]; + + union + { + __IM uint32_t AL_EVENT_REQ; /*!< (@ 0x00000220) AL Event Request Register */ + + struct + { + __IM uint32_t ALCTRL : 1; /*!< [0..0] AL Control Event State Indication */ + __IM uint32_t DCLATCH : 1; /*!< [1..1] DC Latch Event State Indication */ + __IM uint32_t DCSYNC0STA : 1; /*!< [2..2] DC SYNC0 State Indication */ + __IM uint32_t DCSYNC1STA : 1; /*!< [3..3] DC SYNC1 State Indication */ + __IM uint32_t SYNCACT : 1; /*!< [4..4] SyncManager Activation Indication */ + uint32_t : 1; + __IM uint32_t WDPD : 1; /*!< [6..6] Watchdog Process Data Indication */ + uint32_t : 1; + __IM uint32_t SMINT0 : 1; /*!< [8..8] SyncManager 0 interrupt (bit 0 or 1 of the SyncManager + * status register (0x0805)) */ + __IM uint32_t SMINT1 : 1; /*!< [9..9] SyncManager 1 interrupt (bit 0 or 1 of the SyncManager + * status register (0x080D)) */ + __IM uint32_t SMINT2 : 1; /*!< [10..10] SyncManager 2 interrupt (bit 0 or 1 of the SyncManager + * status register (0x0815)) */ + __IM uint32_t SMINT3 : 1; /*!< [11..11] SyncManager 3 interrupt (bit 0 or 1 of the SyncManager + * status register (0x081D)) */ + __IM uint32_t SMINT4 : 1; /*!< [12..12] SyncManager 4 interrupt (bit 0 or 1 of the SyncManager + * status register (0x0825)) */ + __IM uint32_t SMINT5 : 1; /*!< [13..13] SyncManager 5 interrupt (bit 0 or 1 of the SyncManager + * status register (0x082D)) */ + __IM uint32_t SMINT6 : 1; /*!< [14..14] SyncManager 6 interrupt (bit 0 or 1 of the SyncManager + * status register (0x0835)) */ + __IM uint32_t SMINT7 : 1; /*!< [15..15] SyncManager 7 interrupt (bit 0 or 1 of the SyncManager + * status register (0x083D)) */ + uint32_t : 16; + } AL_EVENT_REQ_b; + }; + __IM uint32_t RESERVED28[55]; + + union + { + __IM uint16_t RX_ERR_COUNT[3]; /*!< (@ 0x00000300) RX Error Counter [0..2] Register (n = 0 to 2) */ + + struct + { + __IM uint16_t INVFRMCNT : 8; /*!< [7..0] Invalid Frame Counter Value Indication */ + __IM uint16_t RXERRCNT : 8; /*!< [15..8] RX Frame Error Counter Value Indication */ + } RX_ERR_COUNT_b[3]; + }; + __IM uint16_t RESERVED29; + + union + { + __IM uint8_t FWD_RX_ERR_COUNT[3]; /*!< (@ 0x00000308) Forwarded RX Error Counter [0..2] Register (n + * = 0 to 2) */ + + struct + { + __IM uint8_t FWDERRCNT : 8; /*!< [7..0] Forwarded Error Counter Value Indication */ + } FWD_RX_ERR_COUNT_b[3]; + }; + __IM uint8_t RESERVED30; + + union + { + __IM uint8_t ECAT_PROC_ERR_COUNT; /*!< (@ 0x0000030C) ECAT Processing Unit Error Counter Register */ + + struct + { + __IM uint8_t EPUERRCNT : 8; /*!< [7..0] Processing Unit Error Counter Value Indication */ + } ECAT_PROC_ERR_COUNT_b; + }; + + union + { + __IM uint8_t PDI_ERR_COUNT; /*!< (@ 0x0000030D) PDI Error Counter Register */ + + struct + { + __IM uint8_t PDIERRCNT : 8; /*!< [7..0] PDI Error Counter Value Indication */ + } PDI_ERR_COUNT_b; + }; + __IM uint16_t RESERVED31; + + union + { + __IM uint8_t LOST_LINK_COUNT[3]; /*!< (@ 0x00000310) Lost Link Counter [0..2] Register (n = 0 to 2) */ + + struct + { + __IM uint8_t LOSTLINKCNT : 8; /*!< [7..0] Lost Link Counter Value Indication */ + } LOST_LINK_COUNT_b[3]; + }; + __IM uint8_t RESERVED32; + __IM uint32_t RESERVED33[59]; + + union + { + __IM uint16_t WD_DIVIDE; /*!< (@ 0x00000400) Watchdog Divider Register */ + + struct + { + __IM uint16_t WDDIV : 16; /*!< [15..0] Watchdog Clock Frequency Divisor Setting */ + } WD_DIVIDE_b; + }; + __IM uint16_t RESERVED34; + __IM uint32_t RESERVED35[3]; + + union + { + __IM uint16_t WDT_PDI; /*!< (@ 0x00000410) Watchdog Time PDI Register */ + + struct + { + __IM uint16_t WDTIMPDI : 16; /*!< [15..0] Watchdog Overflow Time Setting */ + } WDT_PDI_b; + }; + __IM uint16_t RESERVED36; + __IM uint32_t RESERVED37[3]; + + union + { + __IM uint16_t WDT_DATA; /*!< (@ 0x00000420) Watchdog Time Process Data Register */ + + struct + { + __IM uint16_t WDTIMPD : 16; /*!< [15..0] Watchdog Overflow Time Setting */ + } WDT_DATA_b; + }; + __IM uint16_t RESERVED38; + __IM uint32_t RESERVED39[7]; + + union + { + __IM uint16_t WDS_DATA; /*!< (@ 0x00000440) Watchdog Status Process Data Register */ + + struct + { + __IM uint16_t WDSTAPD : 1; /*!< [0..0] Watchdog State Indication */ + uint16_t : 15; + } WDS_DATA_b; + }; + + union + { + __IM uint8_t WDC_DATA; /*!< (@ 0x00000442) Watchdog Counter Process Data Register */ + + struct + { + __IM uint8_t WDCNTPD : 8; /*!< [7..0] Watchdog Counter Value Indication */ + } WDC_DATA_b; + }; + + union + { + __IM uint8_t WDC_PDI; /*!< (@ 0x00000443) Watchdog Counter PDI Register */ + + struct + { + __IM uint8_t WDCNTPDI : 8; /*!< [7..0] Watchdog Counter Value Indication */ + } WDC_PDI_b; + }; + __IM uint32_t RESERVED40[47]; + + union + { + __IM uint8_t EEP_CONF; /*!< (@ 0x00000500) EEPROM Configuration Register */ + + struct + { + __IM uint8_t CTRLPDI : 1; /*!< [0..0] PDI EEPROM Control */ + __IM uint8_t FORCEECAT : 1; /*!< [1..1] EEPROM Access Right Change */ + uint8_t : 6; + } EEP_CONF_b; + }; + + union + { + __IOM uint8_t EEP_STATE; /*!< (@ 0x00000501) EEPROM PDI Access State Register */ + + struct + { + __IOM uint8_t PDIACCESS : 1; /*!< [0..0] EEPROM Access Right Setting */ + uint8_t : 7; + } EEP_STATE_b; + }; + + union + { + __IOM uint16_t EEP_CONT_STAT; /*!< (@ 0x00000502) EEPROM Control/Status Register */ + + struct + { + __IM uint16_t ECATWREN : 1; /*!< [0..0] ECAT Write Enable */ + uint16_t : 5; + __IM uint16_t READBYTE : 1; /*!< [6..6] EEPROM Read Byte Indication */ + __IM uint16_t PROMSIZE : 1; /*!< [7..7] EEPROM Algorithm Indication */ + __IOM uint16_t COMMAND : 3; /*!< [10..8] Command */ + __IM uint16_t CKSUMERR : 1; /*!< [11..11] Checksum Error Indication */ + __IM uint16_t LOADSTA : 1; /*!< [12..12] EEPROM Loading Status Indication */ + __IM uint16_t ACKCMDERR : 1; /*!< [13..13] Acknowledge/Command Error Indication */ + __IM uint16_t WRENERR : 1; /*!< [14..14] Write Enable Error Indication */ + __IM uint16_t BUSY : 1; /*!< [15..15] EEPROM Interface State Indication */ + } EEP_CONT_STAT_b; + }; + + union + { + __IOM uint32_t EEP_ADR; /*!< (@ 0x00000504) EEPROM Address Register */ + + struct + { + __IOM uint32_t ADDRESS : 32; /*!< [31..0] EEPROM Address Setting */ + } EEP_ADR_b; + }; + + union + { + __IOM uint32_t EEP_DATA; /*!< (@ 0x00000508) EEPROM Data Register */ + + struct + { + __IOM uint32_t LODATA : 16; /*!< [15..0] Data to be written to the EEPROM or data read from the + * EEPROM (lower 2 bytes) */ + __IM uint32_t HIDATA : 16; /*!< [31..16] Data read from the EEPROM (upper 2 bytes) */ + } EEP_DATA_b; + }; + __IM uint32_t RESERVED41; + + union + { + __IOM uint16_t MII_CONT_STAT; /*!< (@ 0x00000510) MII Management Control/Status Register */ + + struct + { + __IM uint16_t WREN : 1; /*!< [0..0] Write Enable */ + __IM uint16_t PDICTRL : 1; /*!< [1..1] PDI Control Indication */ + __IM uint16_t MILINK : 1; /*!< [2..2] MI Link Detection */ + __IM uint16_t PHYOFFSET : 5; /*!< [7..3] PHY Address Offset Indication */ + __IOM uint16_t COMMAND : 2; /*!< [9..8] Command */ + uint16_t : 3; + __IOM uint16_t READERR : 1; /*!< [13..13] Read Error Indication */ + __IM uint16_t CMDERR : 1; /*!< [14..14] Command Error Indication */ + __IM uint16_t BUSY : 1; /*!< [15..15] MII Management State Indication */ + } MII_CONT_STAT_b; + }; + + union + { + __IOM uint8_t PHY_ADR; /*!< (@ 0x00000512) PHY Address Register */ + + struct + { + __IOM uint8_t PHYADDR : 5; /*!< [4..0] PHY Address Setting */ + uint8_t : 3; + } PHY_ADR_b; + }; + + union + { + __IOM uint8_t PHY_REG_ADR; /*!< (@ 0x00000513) PHY Register Address Register */ + + struct + { + __IOM uint8_t PHYREGADDR : 5; /*!< [4..0] Address of PHY register */ + uint8_t : 3; + } PHY_REG_ADR_b; + }; + + union + { + __IOM uint16_t PHY_DATA; /*!< (@ 0x00000514) PHY Data Register */ + + struct + { + __IOM uint16_t PHYREGDATA : 16; /*!< [15..0] PHY Register Data Indication/Setting */ + } PHY_DATA_b; + }; + + union + { + __IM uint8_t MII_ECAT_ACS_STAT; /*!< (@ 0x00000516) MII Management ECAT Access State Register */ + + struct + { + __IM uint8_t ACSMII : 1; /*!< [0..0] MII Management Interface Access Right Setting */ + uint8_t : 7; + } MII_ECAT_ACS_STAT_b; + }; + + union + { + __IOM uint8_t MII_PDI_ACS_STAT; /*!< (@ 0x00000517) MII Management PDI Access State Register */ + + struct + { + __IOM uint8_t ACSMII : 1; /*!< [0..0] Right of access to the MII management interface */ + __IM uint8_t FORPDI : 1; /*!< [1..1] Forced change of access by the PDI (forced change of + * bit 0) */ + uint8_t : 6; + } MII_PDI_ACS_STAT_b; + }; + __IM uint32_t RESERVED42[58]; + __IOM R_ESC_FMMU_Type FMMU[8]; /*!< (@ 0x00000600) FMMU [0..7] Registers (n = 0 to 7) */ + __IM uint32_t RESERVED43[96]; + __IOM R_ESC_SM_Type SM[8]; /*!< (@ 0x00000800) SyncManager [0..7] Registers (n = 0 to 7) */ + __IM uint32_t RESERVED44[48]; + + union + { + __IM uint32_t DC_RCV_TIME_PORT[3]; /*!< (@ 0x00000900) Receive Time Port [0..2] Register */ + + struct + { + __IM uint32_t RCVTIME0 : 32; /*!< [31..0] Receive Time Indication/Latch */ + } DC_RCV_TIME_PORT_b[3]; + }; + __IM uint32_t RESERVED45; + __IM uint32_t DC_SYS_TIME_L; /*!< (@ 0x00000910) System Time Register L */ + __IM uint32_t DC_SYS_TIME_H; /*!< (@ 0x00000914) System Time Register H */ + __IM uint32_t DC_RCV_TIME_UNIT_L; /*!< (@ 0x00000918) Receive Time ECAT Processing Unit Register L */ + __IM uint32_t DC_RCV_TIME_UNIT_H; /*!< (@ 0x0000091C) Receive Time ECAT Processing Unit Register H */ + __IM uint32_t DC_SYS_TIME_OFFSET_L; /*!< (@ 0x00000920) System Time Offset Register L */ + __IM uint32_t DC_SYS_TIME_OFFSET_H; /*!< (@ 0x00000924) System Time Offset Register H */ + + union + { + __IM uint32_t DC_SYS_TIME_DELAY; /*!< (@ 0x00000928) System Time Delay Register */ + + struct + { + __IM uint32_t SYSTIMDLY : 32; /*!< [31..0] Propagation Delay Indication */ + } DC_SYS_TIME_DELAY_b; + }; + + union + { + __IM uint32_t DC_SYS_TIME_DIFF; /*!< (@ 0x0000092C) System Time Difference Register */ + + struct + { + __IM uint32_t DIFF : 31; /*!< [30..0] System Time Mean Difference Indication */ + __IM uint32_t LCP : 1; /*!< [31..31] System Time Greater/Less Indication */ + } DC_SYS_TIME_DIFF_b; + }; + + union + { + __IM uint16_t DC_SPEED_COUNT_START; /*!< (@ 0x00000930) Speed Counter Start Register */ + + struct + { + __IM uint16_t SPDCNTSTRT : 15; /*!< [14..0] Drift Correction Bandwidth Setting */ + uint16_t : 1; + } DC_SPEED_COUNT_START_b; + }; + + union + { + __IM uint16_t DC_SPEED_COUNT_DIFF; /*!< (@ 0x00000932) Speed Counter Difference Register */ + + struct + { + __IM uint16_t SPDCNTDIFF : 16; /*!< [15..0] Clock Period Deviation Indication */ + } DC_SPEED_COUNT_DIFF_b; + }; + + union + { + __IM uint8_t DC_SYS_TIME_DIFF_FIL_DEPTH; /*!< (@ 0x00000934) System Time Difference Filter Depth Register */ + + struct + { + __IM uint8_t SYSTIMDEP : 4; /*!< [3..0] Filter Depth Setting */ + uint8_t : 4; + } DC_SYS_TIME_DIFF_FIL_DEPTH_b; + }; + + union + { + __IM uint8_t DC_SPEED_COUNT_FIL_DEPTH; /*!< (@ 0x00000935) Speed Counter Filter Depth Register */ + + struct + { + __IM uint8_t CLKPERDEP : 4; /*!< [3..0] Filter Depth Setting */ + uint8_t : 4; + } DC_SPEED_COUNT_FIL_DEPTH_b; + }; + __IM uint16_t RESERVED46; + __IM uint32_t RESERVED47[18]; + + union + { + __IM uint8_t DC_CYC_CONT; /*!< (@ 0x00000980) Cyclic Unit Control Register */ + + struct + { + __IM uint8_t SYNCOUT : 1; /*!< [0..0] SYNC Output Unit Control Setting */ + uint8_t : 3; + __IM uint8_t LATCH0 : 1; /*!< [4..4] Latch Input Unit 0 Control Setting */ + __IM uint8_t LATCH1 : 1; /*!< [5..5] Latch Input Unit 1 Control Setting */ + uint8_t : 2; + } DC_CYC_CONT_b; + }; + + union + { + __IOM uint8_t DC_ACT; /*!< (@ 0x00000981) Activation Register */ + + struct + { + __IOM uint8_t SYNCACT : 1; /*!< [0..0] Sync Output Unit Activation */ + __IOM uint8_t SYNC0 : 1; /*!< [1..1] SYNC0 Output Setting */ + __IOM uint8_t SYNC1 : 1; /*!< [2..2] SYNC1 Output Setting */ + __IOM uint8_t AUTOACT : 1; /*!< [3..3] SYNC Output Unit Activation */ + __IOM uint8_t EXTSTARTTIME : 1; /*!< [4..4] Start Time Cyclic Operation Extension */ + __IOM uint8_t STARTTIME : 1; /*!< [5..5] Start Time Plausibility */ + __IOM uint8_t NEARFUTURE : 1; /*!< [6..6] Near Future Range Setting */ + __IOM uint8_t DBGPULSE : 1; /*!< [7..7] Debug Pulse Setting */ + } DC_ACT_b; + }; + + union + { + __IM uint16_t DC_PULSE_LEN; /*!< (@ 0x00000982) SYNC Signal Pulse Length Register */ + + struct + { + __IM uint16_t PULSELEN : 16; /*!< [15..0] SYNC Signal Pulse Length Indication */ + } DC_PULSE_LEN_b; + }; + + union + { + __IM uint8_t DC_ACT_STAT; /*!< (@ 0x00000984) Activation Status Register */ + + struct + { + __IM uint8_t SYNC0ACT : 1; /*!< [0..0] SYNC0 Status Indication */ + __IM uint8_t SYNC1ACT : 1; /*!< [1..1] SYNC1 Status Indication */ + __IM uint8_t STARTTIME : 1; /*!< [2..2] Plausibility Result Indication */ + uint8_t : 5; + } DC_ACT_STAT_b; + }; + __IM uint8_t RESERVED48; + __IM uint16_t RESERVED49; + __IM uint32_t RESERVED50; + __IM uint16_t RESERVED51; + + union + { + __IM uint8_t DC_SYNC0_STAT; /*!< (@ 0x0000098E) SYNC0 Status Register */ + + struct + { + __IM uint8_t SYNC0STA : 1; /*!< [0..0] SYNC0 State Indication */ + uint8_t : 7; + } DC_SYNC0_STAT_b; + }; + + union + { + __IM uint8_t DC_SYNC1_STAT; /*!< (@ 0x0000098F) SYNC1 Status Register */ + + struct + { + __IM uint8_t SYNC1STA : 1; /*!< [0..0] SYNC1 State Indication */ + uint8_t : 7; + } DC_SYNC1_STAT_b; + }; + __IOM uint32_t DC_CYC_START_TIME_L; /*!< (@ 0x00000990) Start Time Cyclic Operation/Next SYNC0 Pulse + * Register L */ + __IOM uint32_t DC_CYC_START_TIME_H; /*!< (@ 0x00000994) Start Time Cyclic Operation/Next SYNC0 Pulse + * Register H */ + __IM uint32_t DC_NEXT_SYNC1_PULSE_L; /*!< (@ 0x00000998) Next SYNC1 Pulse Register L */ + __IM uint32_t DC_NEXT_SYNC1_PULSE_H; /*!< (@ 0x0000099C) Next SYNC1 Pulse Register H */ + + union + { + __IOM uint32_t DC_SYNC0_CYC_TIME; /*!< (@ 0x000009A0) SYNC0 Cycle Time Register */ + + struct + { + __IOM uint32_t SYNC0CYC : 32; /*!< [31..0] Time Between Consecutive SYNC0 Pulses */ + } DC_SYNC0_CYC_TIME_b; + }; + + union + { + __IOM uint32_t DC_SYNC1_CYC_TIME; /*!< (@ 0x000009A4) SYNC1 Cycle Time Register */ + + struct + { + __IOM uint32_t SYNC1CYC : 32; /*!< [31..0] Time between SYNC1 and SYNC0 Pulses */ + } DC_SYNC1_CYC_TIME_b; + }; + + union + { + __IOM uint8_t DC_LATCH0_CONT; /*!< (@ 0x000009A8) Latch 0 Control Register */ + + struct + { + __IOM uint8_t POSEDGE : 1; /*!< [0..0] Latch 0 Positive Edge Function Setting */ + __IOM uint8_t NEGEDGE : 1; /*!< [1..1] Latch 0 Negative Edge Function Setting */ + uint8_t : 6; + } DC_LATCH0_CONT_b; + }; + + union + { + __IOM uint8_t DC_LATCH1_CONT; /*!< (@ 0x000009A9) Latch 1 Control Register */ + + struct + { + __IOM uint8_t POSEDGE : 1; /*!< [0..0] Latch 1 Positive Edge Function Setting */ + __IOM uint8_t NEGEDGE : 1; /*!< [1..1] Latch 1 Negative Edge Function Setting */ + uint8_t : 6; + } DC_LATCH1_CONT_b; + }; + __IM uint16_t RESERVED52[2]; + + union + { + __IM uint8_t DC_LATCH0_STAT; /*!< (@ 0x000009AE) Latch 0 Status Register */ + + struct + { + __IM uint8_t EVENTPOS : 1; /*!< [0..0] Latch 0 Positive Edge Event Indication */ + __IM uint8_t EVENTNEG : 1; /*!< [1..1] Latch 0 Negative Edge Event Indication */ + __IM uint8_t PINSTATE : 1; /*!< [2..2] Latch 0 Input Pin State Indication */ + uint8_t : 5; + } DC_LATCH0_STAT_b; + }; + + union + { + __IM uint8_t DC_LATCH1_STAT; /*!< (@ 0x000009AF) Latch 1 Status Register */ + + struct + { + __IM uint8_t EVENTPOS : 1; /*!< [0..0] Latch 1 Positive Edge Event Indication */ + __IM uint8_t EVENTNEG : 1; /*!< [1..1] Latch 1 Negative Edge Event Indication */ + __IM uint8_t PINSTATE : 1; /*!< [2..2] Latch 1 Input Pin State Indication */ + uint8_t : 5; + } DC_LATCH1_STAT_b; + }; + __IM uint32_t DC_LATCH0_TIME_POS_L; /*!< (@ 0x000009B0) Latch 0 Time Positive Edge Register L */ + __IM uint32_t DC_LATCH0_TIME_POS_H; /*!< (@ 0x000009B4) Latch 0 Time Positive Edge Register H */ + __IM uint32_t DC_LATCH0_TIME_NEG_L; /*!< (@ 0x000009B8) Latch 0 Time Negative Edge Register L */ + __IM uint32_t DC_LATCH0_TIME_NEG_H; /*!< (@ 0x000009BC) Latch 0 Time Negative Edge Register H */ + __IM uint32_t DC_LATCH1_TIME_POS_L; /*!< (@ 0x000009C0) Latch 1 Time Positive Edge Register L */ + __IM uint32_t DC_LATCH1_TIME_POS_H; /*!< (@ 0x000009C4) Latch 1 Time Positive Edge Register H */ + __IM uint32_t DC_LATCH1_TIME_NEG_L; /*!< (@ 0x000009C8) Latch 1 Time Negative Edge Register L */ + __IM uint32_t DC_LATCH1_TIME_NEG_H; /*!< (@ 0x000009CC) Latch 1 Time Negative Edge Register H */ + __IM uint32_t RESERVED53[8]; + + union + { + __IM uint32_t DC_ECAT_CNG_EV_TIME; /*!< (@ 0x000009F0) Buffer Change Event Time Register */ + + struct + { + __IM uint32_t ECATCHANGE : 32; /*!< [31..0] Local Time Indication */ + } DC_ECAT_CNG_EV_TIME_b; + }; + __IM uint32_t RESERVED54; + + union + { + __IM uint32_t DC_PDI_START_EV_TIME; /*!< (@ 0x000009F8) PDI Buffer Start Event Time Register */ + + struct + { + __IM uint32_t PDISTART : 32; /*!< [31..0] Local Time Indication */ + } DC_PDI_START_EV_TIME_b; + }; + + union + { + __IM uint32_t DC_PDI_CNG_EV_TIME; /*!< (@ 0x000009FC) PDI Buffer Change Event Time Register */ + + struct + { + __IM uint32_t PDICHANGE : 32; /*!< [31..0] Local Time Indication */ + } DC_PDI_CNG_EV_TIME_b; + }; + __IM uint32_t RESERVED55[256]; + __IM uint32_t PRODUCT_ID_L; /*!< (@ 0x00000E00) Product ID Register L */ + __IM uint32_t PRODUCT_ID_H; /*!< (@ 0x00000E04) Product ID Register H */ + + union + { + __IM uint32_t VENDOR_ID_L; /*!< (@ 0x00000E08) Vendor ID Register L */ + + struct + { + __IM uint32_t VENDORID : 32; /*!< [31..0] Vendor ID Indication */ + } VENDOR_ID_L_b; + }; +} R_ESC_Type; /*!< Size = 3596 (0xe0c) */ + +/* =========================================================================================================================== */ +/* ================ R_USBHC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief USB 2.0 HS Host Module (R_USBHC) + */ + +typedef struct /*!< (@ 0x80200000) R_USBHC Structure */ +{ + union + { + __IM uint32_t HCREVISION; /*!< (@ 0x00000000) HcRevision Register */ + + struct + { + __IM uint32_t REV : 8; /*!< [7..0] HCI revision */ + uint32_t : 24; + } HCREVISION_b; + }; + + union + { + __IOM uint32_t HCCONTROL; /*!< (@ 0x00000004) HcControl Register */ + + struct + { + __IOM uint32_t CBSR : 2; /*!< [1..0] Control/bulk transfer service ratio (ControlBulkServiceRatio) */ + __IOM uint32_t PLE : 1; /*!< [2..2] Periodic list setting (PeriodicListEnable) */ + __IOM uint32_t IE : 1; /*!< [3..3] Isochronous ED processing setting (IsochronousEnable) */ + __IOM uint32_t CLE : 1; /*!< [4..4] Control list processing setting (ControlListEnable) */ + __IOM uint32_t BLE : 1; /*!< [5..5] Bulk list processing setting (BulkListEnable) */ + __IOM uint32_t HCFS : 2; /*!< [7..6] Host logic operation status (Host Controller FunctionalState) */ + __IOM uint32_t IR : 1; /*!< [8..8] HcInterruptStatus interrupt path setting (InterruptRouting) */ + __IOM uint32_t RWC : 1; /*!< [9..9] Remote Wakeup support setting (RemoteWakeUpConnect) */ + __IOM uint32_t RWE : 1; /*!< [10..10] PME assertion control (RemoteWakeUpEnable) */ + uint32_t : 21; + } HCCONTROL_b; + }; + + union + { + __IOM uint32_t HCCOMMANDSTATUS; /*!< (@ 0x00000008) HcCommandStatus Register */ + + struct + { + __OM uint32_t HCR : 1; /*!< [0..0] Host logic software reset start (HostController Reset) */ + __IOM uint32_t CLF : 1; /*!< [1..1] Control list TD (ControlList Filled) */ + __IOM uint32_t BLF : 1; /*!< [2..2] Bulk list TD (BulkListFilled) */ + __OM uint32_t OCR : 1; /*!< [3..3] Host logic control right change (OwnershipChangeRequest) */ + uint32_t : 12; + __IM uint32_t SOC : 2; /*!< [17..16] Schedule overrun count (Scheduling OverrunCount) */ + uint32_t : 14; + } HCCOMMANDSTATUS_b; + }; + + union + { + __IOM uint32_t HCINTERRUPTSTATUS; /*!< (@ 0x0000000C) HcInterruptStatus Register */ + + struct + { + __IOM uint32_t SO : 1; /*!< [0..0] USB schedule overrun (Scheduling Overrun) */ + __IOM uint32_t WDH : 1; /*!< [1..1] Host logic HccaDoneHead update (Writeback Done Head) */ + __IOM uint32_t SF : 1; /*!< [2..2] HccaFrameNumber update (StartOfFrame) */ + __IOM uint32_t RD : 1; /*!< [3..3] Resume detection (Resume Detected) */ + __IOM uint32_t UE : 1; /*!< [4..4] USB non-related system error detection (Unrecoverable + * Error) */ + __IOM uint32_t FNO : 1; /*!< [5..5] FrameNumber bit MSB change (Frame Number Overflow) */ + __IOM uint32_t RHSC : 1; /*!< [6..6] HcRhStatus/HcRhPortStatus register status (RootHubStatus + * Change) */ + uint32_t : 23; + __IOM uint32_t OC : 1; /*!< [30..30] Host logic control right change (OwnershipChange) */ + uint32_t : 1; + } HCINTERRUPTSTATUS_b; + }; + + union + { + __IOM uint32_t HCINTERRUPTENABLE; /*!< (@ 0x00000010) HcInterruptEnable Register */ + + struct + { + __IOM uint32_t SOE : 1; /*!< [0..0] SO interrupt source enable (Scheduling OverrunEnable) */ + __IOM uint32_t WDHE : 1; /*!< [1..1] WDH interrupt source enable (WritebackDone HeadEnable) */ + __IOM uint32_t SFE : 1; /*!< [2..2] SF interrupt source enable (StartOfFrame) */ + __IOM uint32_t RDE : 1; /*!< [3..3] RD interrupt source enable (Resume DetectedEnable) */ + __IOM uint32_t UEE : 1; /*!< [4..4] UE interrupt source enable (Unrecoverable ErrorEnable) */ + __IOM uint32_t FNOE : 1; /*!< [5..5] FNO interrupt source enable (FrameNumber OverflowEnable) */ + __IOM uint32_t RHSCE : 1; /*!< [6..6] RHSC interrupt source enable (RootHubStatus ChangeEnable) */ + uint32_t : 23; + __IOM uint32_t OCE : 1; /*!< [30..30] OC interrupt source enable (OwnershipChangeEnable) */ + __IOM uint32_t MIE : 1; /*!< [31..31] Interrupt 8 source enable (MasterInterrupt Enable) */ + } HCINTERRUPTENABLE_b; + }; + + union + { + __IOM uint32_t HCINTERRUPTDISABLE; /*!< (@ 0x00000014) HcInterruptDisable Register */ + + struct + { + __IOM uint32_t SOD : 1; /*!< [0..0] SO interrupt source disable (Scheduling Overrun Disable) */ + __IOM uint32_t WDHD : 1; /*!< [1..1] WDH interrupt source disable (Writeback DoneHead Disable) */ + __IOM uint32_t SFD : 1; /*!< [2..2] SF interrupt source disable (StartOfFrame Disable) */ + __IOM uint32_t RDD : 1; /*!< [3..3] RD interrupt source disable (Resume Detected Disable) */ + __IOM uint32_t UED : 1; /*!< [4..4] UE interrupt source disable (Unrecoverable ErrorDisable) */ + __IOM uint32_t FNOD : 1; /*!< [5..5] FNO interrupt source disable (FrameNumberOverflow Disable) */ + __IOM uint32_t RHSCD : 1; /*!< [6..6] RHSC interrupt source disable (RootHub StatusChange Disable) */ + uint32_t : 23; + __IOM uint32_t OCD : 1; /*!< [30..30] OC interrupt source disable (OwnershipChangeDisable) */ + __IOM uint32_t MID : 1; /*!< [31..31] Interrupt 8 source disable (Master Interrupt Disable) */ + } HCINTERRUPTDISABLE_b; + }; + + union + { + __IOM uint32_t HCHCCA; /*!< (@ 0x00000018) HcHCCA Register */ + + struct + { + uint32_t : 8; + __IOM uint32_t RAMBA : 24; /*!< [31..8] RAM base address setting */ + } HCHCCA_b; + }; + + union + { + __IM uint32_t HCPERIODCCURRENTIED; /*!< (@ 0x0000001C) HcPeriodicCurrentED Register */ + + struct + { + uint32_t : 4; + __IM uint32_t PCED : 28; /*!< [31..4] ED physical address (PeriodicCurrentED) */ + } HCPERIODCCURRENTIED_b; + }; + + union + { + __IOM uint32_t HCCONTROLHEADED; /*!< (@ 0x00000020) HcControlHeadED Register */ + + struct + { + uint32_t : 4; + __IOM uint32_t CHED : 28; /*!< [31..4] Start ED physical address (ControlHeadED) */ + } HCCONTROLHEADED_b; + }; + + union + { + __IOM uint32_t HCCONTROLCURRENTED; /*!< (@ 0x00000024) HcControlCurrentED Register */ + + struct + { + uint32_t : 4; + __IOM uint32_t CCED : 28; /*!< [31..4] ED physical address (ControlCurrentED) */ + } HCCONTROLCURRENTED_b; + }; + + union + { + __IOM uint32_t HCBULKHEADED; /*!< (@ 0x00000028) HcBulkHeadED Register */ + + struct + { + uint32_t : 4; + __IOM uint32_t BHED : 28; /*!< [31..4] Start ED physical address (BulkHeadED) */ + } HCBULKHEADED_b; + }; + + union + { + __IOM uint32_t HCBULKCURRENTED; /*!< (@ 0x0000002C) HcBulkCurrentED Register */ + + struct + { + uint32_t : 4; + __IOM uint32_t BCED : 28; /*!< [31..4] ED physical address (BulkCurrentED) */ + } HCBULKCURRENTED_b; + }; + + union + { + __IM uint32_t HCDONEHEAD; /*!< (@ 0x00000030) HcDoneHead Register */ + + struct + { + uint32_t : 4; + __IM uint32_t DH : 28; /*!< [31..4] HcDoneHead physical address (DoneHead) */ + } HCDONEHEAD_b; + }; + + union + { + __IOM uint32_t HCFMINTERVAL; /*!< (@ 0x00000034) HcFmInterval Register */ + + struct + { + __IOM uint32_t FI : 14; /*!< [13..0] Frame interval setting (FrameInterval) */ + uint32_t : 2; + __IOM uint32_t FSMPS : 15; /*!< [30..16] FS transfer packet maximum size setting (FSLagest DataPacket) */ + __IOM uint32_t FIT : 1; /*!< [31..31] Frame synchronization (FrameInterval Toggle) */ + } HCFMINTERVAL_b; + }; + + union + { + __IM uint32_t HCFNREMAINING; /*!< (@ 0x00000038) HcFmRemaining Register */ + + struct + { + __IM uint32_t FR : 14; /*!< [13..0] Down counter frame (FrameRemaining) */ + uint32_t : 17; + __IM uint32_t FRT : 1; /*!< [31..31] Frame synchronization (FrameRemainingToggle) */ + } HCFNREMAINING_b; + }; + + union + { + __IM uint32_t HCFMNUMBER; /*!< (@ 0x0000003C) HcFmNumber Register */ + + struct + { + __IM uint32_t FN : 16; /*!< [15..0] Elapsed frame number (FrameNumber) */ + uint32_t : 16; + } HCFMNUMBER_b; + }; + + union + { + __IOM uint32_t HCPERIODSTART; /*!< (@ 0x00000040) HcPeriodicStart Register */ + + struct + { + __IOM uint32_t PS : 14; /*!< [13..0] Periodic list processing start time (PeriodicStart) */ + uint32_t : 18; + } HCPERIODSTART_b; + }; + + union + { + __IOM uint32_t HCLSTHRESHOLD; /*!< (@ 0x00000044) HcLSThreshold Register */ + + struct + { + __IOM uint32_t LS : 12; /*!< [11..0] Transferrable threshold (LSThreshold) */ + uint32_t : 20; + } HCLSTHRESHOLD_b; + }; + + union + { + __IOM uint32_t HCRHDESCRIPTORA; /*!< (@ 0x00000048) HcRhDescriptorA Register */ + + struct + { + __IM uint32_t NDP : 8; /*!< [7..0] Downstream port number (NumberDownstreamPorts) */ + __IOM uint32_t PSM : 1; /*!< [8..8] Power switch control (PowerSwitchingMode) */ + __IOM uint32_t NPS : 1; /*!< [9..9] Power control (NoPower Switching) */ + __IM uint32_t DT : 1; /*!< [10..10] Device type (DeviceType) */ + __IOM uint32_t OCPM : 1; /*!< [11..11] Overcurrent state reporting (OverCurrentProtection + * Mode) */ + __IOM uint32_t NOCP : 1; /*!< [12..12] Overcurrent function support (NoOver Current Protection) */ + uint32_t : 11; + __IOM uint32_t POTPGT : 8; /*!< [31..24] Wait time (PowerOnToPowerGood Time) */ + } HCRHDESCRIPTORA_b; + }; + + union + { + __IOM uint32_t HCRHDESCRIPTORB; /*!< (@ 0x0000004C) HcRhDescriptorB Register */ + + struct + { + __IOM uint32_t DR : 16; /*!< [15..0] Device Removable */ + __IOM uint32_t PPCM : 16; /*!< [31..16] Port Power Control Mask */ + } HCRHDESCRIPTORB_b; + }; + + union + { + __IOM uint32_t HCRHSTATUS; /*!< (@ 0x00000050) HcRhStatus Register */ + + struct + { + __IOM uint32_t LPS : 1; /*!< [0..0] Local power status (LocalPowerStatus) */ + __IM uint32_t OCI : 1; /*!< [1..1] Overcurrent indicator (OverCurrent Indicator) */ + uint32_t : 13; + __IOM uint32_t DRWE : 1; /*!< [15..15] Device remote start enable (DeviceRemoteWakeupEnable) */ + __IOM uint32_t LPSC : 1; /*!< [16..16] Local power status change (LocalPowerStatusChange) */ + __IOM uint32_t OCIC : 1; /*!< [17..17] OCI bit change report (OverCurrent Indicate Change) */ + uint32_t : 13; + __OM uint32_t CRWE : 1; /*!< [31..31] DRWE bit clear (Clear Remote Wakeup Enable) */ + } HCRHSTATUS_b; + }; + + union + { + __IOM uint32_t HCRHPORTSTATUS1; /*!< (@ 0x00000054) HcRhPortStatus1 Register */ + + struct + { + __IOM uint32_t CCS : 1; /*!< [0..0] Connection status indication (CurrentConnectStatus) */ + __IOM uint32_t PES : 1; /*!< [1..1] Port enable status (PortEnableStatus) */ + __IOM uint32_t PSS : 1; /*!< [2..2] Suspend/Resume status (PortSuspendStatus) */ + __IM uint32_t POCI : 1; /*!< [3..3] Downstream port overcurrent detection (PortOverCurrentIndicator) */ + __IOM uint32_t PRS : 1; /*!< [4..4] Port reset status (PortResetStatus) */ + uint32_t : 3; + __IOM uint32_t PPS : 1; /*!< [8..8] Power status (PortPowerStatus) */ + __IOM uint32_t LSDA : 1; /*!< [9..9] Device speed (LowSpeedDeviceAttached) */ + uint32_t : 6; + __IOM uint32_t CSC : 1; /*!< [16..16] CCS bit status (ConnectStatus Change) */ + __IOM uint32_t PESC : 1; /*!< [17..17] PES bit status (PortEnable StatusChange) */ + __IOM uint32_t PSSC : 1; /*!< [18..18] RESUME sequence complete (PortSuspend StatusChange) */ + __IOM uint32_t OCIC : 1; /*!< [19..19] Overcurrent state detection (OverCurrent IndicateChange) */ + __IOM uint32_t PRSC : 1; /*!< [20..20] Port reset complete (PortReset StatusChange) */ + uint32_t : 11; + } HCRHPORTSTATUS1_b; + }; + __IM uint32_t RESERVED[42]; + + union + { + __IM uint32_t CAPL_VERSION; /*!< (@ 0x00000100) Capability Registers Length and EHCI Version + * Number Register */ + + struct + { + __IM uint32_t CRL : 8; /*!< [7..0] Capability Registers Length */ + uint32_t : 8; + __IM uint32_t HCIVN : 16; /*!< [31..16] EHCI Version Number */ + } CAPL_VERSION_b; + }; + + union + { + __IM uint32_t HCSPARAMS; /*!< (@ 0x00000104) Structural Parameters Register */ + + struct + { + __IM uint32_t N_PORTS : 4; /*!< [3..0] Number of downstream ports (Number of Ports) */ + __IM uint32_t PPC : 1; /*!< [4..4] Port power control (Port Power Control) */ + uint32_t : 2; + __IM uint32_t PTRR : 1; /*!< [7..7] Port routing rules */ + __IM uint32_t N_PCC : 4; /*!< [11..8] Number of ports (Number of Ports per Companion Controller) */ + __IM uint32_t N_CC : 4; /*!< [15..12] Number of OHCI host logic (Number of Companion Controller) */ + __IM uint32_t P_INDICATOR : 1; /*!< [16..16] Port indicator control support */ + uint32_t : 3; + __IM uint32_t DBGPTNUM : 4; /*!< [23..20] Debug port number */ + uint32_t : 8; + } HCSPARAMS_b; + }; + + union + { + __IM uint32_t HCCPARAMS; /*!< (@ 0x00000108) Capability Parameters Register */ + + struct + { + __IM uint32_t AC64 : 1; /*!< [0..0] Memory pointer selection */ + __IM uint32_t PFLF : 1; /*!< [1..1] Programming frame list flag */ + __IM uint32_t ASPC : 1; /*!< [2..2] Asynchronous schedule park support capability */ + uint32_t : 1; + __IM uint32_t IST : 4; /*!< [7..4] Isochronous data structure threshold */ + __IM uint32_t EECP : 8; /*!< [15..8] Offset address (EHCI Extend Capabilities Pointer) */ + __IM uint32_t HP : 1; /*!< [16..16] Hardware prefetch capability */ + __IM uint32_t LPMC : 1; /*!< [17..17] Link power management capability */ + __IM uint32_t PCEC : 1; /*!< [18..18] Per-port change event capability */ + __IM uint32_t PL32 : 1; /*!< [19..19] 32-frame periodic list capability */ + uint32_t : 12; + } HCCPARAMS_b; + }; + __IM uint32_t HCSP_PORTROUTE; /*!< (@ 0x0000010C) Companion Port Route Description Register */ + __IM uint32_t RESERVED1[4]; + + union + { + __IOM uint32_t USBCMD; /*!< (@ 0x00000120) USB Command Register */ + + struct + { + __IOM uint32_t RS : 1; /*!< [0..0] EHCI host logic run/stop (Run/Stop) */ + __IOM uint32_t HCRESET : 1; /*!< [1..1] Host logic initialization (Host Controller Reset) */ + __IOM uint32_t FLS : 2; /*!< [3..2] Frame list size */ + __IOM uint32_t PSE : 1; /*!< [4..4] Periodic schedule enable */ + __IOM uint32_t ASYNSE : 1; /*!< [5..5] Asynchronous schedule enable */ + __IOM uint32_t IAAD : 1; /*!< [6..6] Interrupt on Async Advance Doorbell */ + __IM uint32_t LHCR : 1; /*!< [7..7] Light host controller reset execution status */ + __IOM uint32_t ASPMC : 2; /*!< [9..8] Asynchronous schedule park mode count */ + uint32_t : 1; + __IOM uint32_t ASPME : 1; /*!< [11..11] Asynchronous schedule park mode enable */ + uint32_t : 3; + __IOM uint32_t PPCEE : 1; /*!< [15..15] Per-port change event enable */ + __IOM uint32_t ITC : 8; /*!< [23..16] Host logic interrupt generation maximum rate (Interrupt + * Threshold Control) */ + __IOM uint32_t HIRD : 4; /*!< [27..24] Host-Initiated Resume Duration (Minimum K-state drive + * time) */ + uint32_t : 4; + } USBCMD_b; + }; + + union + { + __IOM uint32_t USBSTS; /*!< (@ 0x00000124) USB Status Register */ + + struct + { + __IOM uint32_t USBINT : 1; /*!< [0..0] USB transfer complete (USB Interrupt) */ + __IOM uint32_t USBERRINT : 1; /*!< [1..1] USB transaction status (USB Error Interrupt) */ + __IOM uint32_t PTCGDET : 1; /*!< [2..2] Port state change detection */ + __IOM uint32_t FLROV : 1; /*!< [3..3] Frame list rollover */ + __IOM uint32_t HSYSE : 1; /*!< [4..4] Host system error */ + __IOM uint32_t IAAIS : 1; /*!< [5..5] Async advance interrupt status */ + uint32_t : 6; + __IM uint32_t EHCSTS : 1; /*!< [12..12] EHCI host logic status (HCHalted) */ + __IM uint32_t RECLAM : 1; /*!< [13..13] Empty asynchronous schedule detection (Reclamation) */ + __IM uint32_t PSCHSTS : 1; /*!< [14..14] Periodic schedule status */ + __IM uint32_t ASS : 1; /*!< [15..15] Asynchronous schedule status */ + __IOM uint32_t PTCGDETC : 16; /*!< [31..16] Port-n Change Detect */ + } USBSTS_b; + }; + + union + { + __IOM uint32_t USBINTR; /*!< (@ 0x00000128) USB Interrupt Enable Register */ + + struct + { + __IOM uint32_t USBIE : 1; /*!< [0..0] USB interrupt enable */ + __IOM uint32_t USBEIE : 1; /*!< [1..1] USB error interrupt enable */ + __IOM uint32_t PTCGIE : 1; /*!< [2..2] Port change interrupt enable */ + __IOM uint32_t FMLSTROE : 1; /*!< [3..3] Frame list rollover enable */ + __IOM uint32_t HSEE : 1; /*!< [4..4] Host system error enable */ + __IOM uint32_t INTAADVE : 1; /*!< [5..5] Interrupt on async advance enable */ + uint32_t : 10; + __IOM uint32_t PCGIE : 16; /*!< [31..16] Port-n Change Interrupt Enable */ + } USBINTR_b; + }; + + union + { + __IOM uint32_t FRINDEX; /*!< (@ 0x0000012C) USB Frame Index Register */ + + struct + { + __IOM uint32_t FRAMEINDEX : 14; /*!< [13..0] Frame index */ + uint32_t : 18; + } FRINDEX_b; + }; + __IM uint32_t CTRLDSSEGMENT; /*!< (@ 0x00000130) Control Data Structure Segment Register */ + + union + { + __IOM uint32_t PERIODICLISTBASE; /*!< (@ 0x00000134) Periodic Frame List Base Address Register */ + + struct + { + uint32_t : 12; + __IOM uint32_t PFLSA : 20; /*!< [31..12] Periodic frame list start address */ + } PERIODICLISTBASE_b; + }; + + union + { + __IOM uint32_t ASYNCLISTADDR; /*!< (@ 0x00000138) Next Asynchronous List Address Register */ + + struct + { + uint32_t : 5; + __IOM uint32_t LPL : 27; /*!< [31..5] Asynchronous Queue Head link pointer address (Link Pointer + * Low) */ + } ASYNCLISTADDR_b; + }; + __IM uint32_t RESERVED2[9]; + + union + { + __IOM uint32_t CONFIGFLAG; /*!< (@ 0x00000160) Configure Flag Register */ + + struct + { + __IOM uint32_t CF : 1; /*!< [0..0] Port routing control circuit configuration flag (Configure + * Flag) */ + uint32_t : 31; + } CONFIGFLAG_b; + }; + + union + { + __IOM uint32_t PORTSC1; /*!< (@ 0x00000164) Port 1 Status and Control Register */ + + struct + { + __IM uint32_t CCSTS : 1; /*!< [0..0] Port connection status */ + __IOM uint32_t CSC : 1; /*!< [1..1] Connect status change */ + __IOM uint32_t PTE : 1; /*!< [2..2] Port enable/disable status */ + __IOM uint32_t PTESC : 1; /*!< [3..3] Port enable/disable status change */ + __IM uint32_t OVCACT : 1; /*!< [4..4] Port overcurrent status */ + __IOM uint32_t OVCC : 1; /*!< [5..5] Over-current Change */ + __IOM uint32_t FRCPTRSM : 1; /*!< [6..6] Force Port Resume (Port resume detection flag) */ + __IOM uint32_t SUSPEND : 1; /*!< [7..7] Port suspend */ + __IOM uint32_t PTRST : 1; /*!< [8..8] Port reset status */ + __IOM uint32_t LPMCTL : 1; /*!< [9..9] LPM control */ + __IM uint32_t LINESTS : 2; /*!< [11..10] D+/D- logic level */ + __IOM uint32_t PP : 1; /*!< [12..12] Port Power Supply Control (Port Power) */ + __IOM uint32_t PTOWNR : 1; /*!< [13..13] Port ownership */ + __IM uint32_t PTINDCTL : 2; /*!< [15..14] As the host logic does not support the port indicator + * control function, these bits are set to 00b. */ + __IOM uint32_t PTTST : 4; /*!< [19..16] Pin test control */ + __IOM uint32_t WKCNNT_E : 1; /*!< [20..20] Device connection detection enable (Wake on Connect + * Enable) */ + __IOM uint32_t WKDSCNNT_E : 1; /*!< [21..21] Device disconnection detection enable (Wake on Disconnect + * Enable) */ + __IOM uint32_t WKOC_E : 1; /*!< [22..22] Overcurrent state detection enable (Wake on Over-current + * Enable) */ + __IOM uint32_t SUSPSTS : 2; /*!< [24..23] Suspend status */ + __IOM uint32_t DVADDR : 7; /*!< [31..25] USB device address */ + } PORTSC1_b; + }; + __IM uint32_t RESERVED3[38]; + + union + { + __IOM uint32_t INTENABLE; /*!< (@ 0x00000200) INT_ENABLE Register */ + + struct + { + __IOM uint32_t AHB_INTEN : 1; /*!< [0..0] AHB_INT bit control */ + __IOM uint32_t USBH_INTAEN : 1; /*!< [1..1] USBH_INTA bit control */ + __IOM uint32_t USBH_INTBEN : 1; /*!< [2..2] USBH_INTB bit control */ + __IOM uint32_t UCOM_INTEN : 1; /*!< [3..3] UCOM_INT bit control */ + __IOM uint32_t WAKEON_INTEN : 1; /*!< [4..4] WAKEON_INT bit control */ + uint32_t : 27; + } INTENABLE_b; + }; + + union + { + __IOM uint32_t INTSTATUS; /*!< (@ 0x00000204) INT_STATUS Register */ + + struct + { + __IOM uint32_t AHB_INT : 1; /*!< [0..0] AHB bus error indication */ + __IM uint32_t USBH_INTA : 1; /*!< [1..1] OHCI interrupt status */ + __IM uint32_t USBH_INTB : 1; /*!< [2..2] USBH_INTB EHCI interrupt status */ + __IM uint32_t UCOM_INT : 1; /*!< [3..3] UCOM register interrupt status */ + __IOM uint32_t WAKEON_INT : 1; /*!< [4..4] WAKEON interrupt status */ + uint32_t : 27; + } INTSTATUS_b; + }; + + union + { + __IOM uint32_t AHBBUSCTR; /*!< (@ 0x00000208) AHB_BUS_CTR Register */ + + struct + { + __IOM uint32_t MAX_BURST_LEN : 2; /*!< [1..0] Maximum burst length */ + uint32_t : 2; + __IOM uint32_t ALIGN_ADDRESS : 2; /*!< [5..4] Address boundary setting */ + uint32_t : 2; + __IOM uint32_t PROT_MODE : 1; /*!< [8..8] This bit selects the MHPROT[3:0] mode when the AHB master + * interface initiates a transfer. */ + uint32_t : 3; + __IOM uint32_t PROT_TYPE : 4; /*!< [15..12] These bits set MHPROT[3:0] when the AHB master interface + * initiates a transfer. */ + uint32_t : 16; + } AHBBUSCTR_b; + }; + + union + { + __IOM uint32_t USBCTR; /*!< (@ 0x0000020C) USBCTR Register */ + + struct + { + __OM uint32_t USBH_RST : 1; /*!< [0..0] Software reset for the core */ + __IOM uint32_t PLL_RST : 1; /*!< [1..1] Reset of USB PHY PLL */ + __IOM uint32_t DIRPD : 1; /*!< [2..2] Direct transition to power-down state */ + uint32_t : 29; + } USBCTR_b; + }; + __IM uint32_t RESERVED4[60]; + + union + { + __IM uint32_t REVID; /*!< (@ 0x00000300) Revision and Core ID Register */ + + struct + { + __IM uint32_t MINV : 8; /*!< [7..0] Minor Version */ + __IM uint32_t MAJV : 8; /*!< [15..8] Major Version */ + uint32_t : 8; + __IM uint32_t COREID : 8; /*!< [31..24] Core ID */ + } REVID_b; + }; + __IM uint32_t RESERVED5[3]; + + union + { + __IOM uint32_t OCSLPTIMSET; /*!< (@ 0x00000310) Overcurrent Detection/Sleep Timer Setting Register */ + + struct + { + __IOM uint32_t TIMER_OC : 20; /*!< [19..0] Overcurrent Timer setting */ + __IOM uint32_t TIMER_SLEEP : 9; /*!< [28..20] Detection/Sleep Timer Setting */ + uint32_t : 3; + } OCSLPTIMSET_b; + }; + __IM uint32_t RESERVED6[315]; + + union + { + __IOM uint32_t COMMCTRL; /*!< (@ 0x00000800) Common Control Register */ + + struct + { + uint32_t : 31; + __IOM uint32_t PERI : 1; /*!< [31..31] USB mode setting */ + } COMMCTRL_b; + }; + + union + { + __IOM uint32_t OBINTSTA; /*!< (@ 0x00000804) OTG-BC Interrupt Status Register */ + + struct + { + __IOM uint32_t IDCHG_STA : 1; /*!< [0..0] USB_OTGID change status */ + __IOM uint32_t OCINT_STA : 1; /*!< [1..1] USB_OVRCUR assertion status */ + __IOM uint32_t VBSTACHG_STA : 1; /*!< [2..2] VBSTA[3:0] change status */ + __IOM uint32_t VBSTAINT_STA : 1; /*!< [3..3] VBUS voltage status interrupt */ + uint32_t : 12; + __IOM uint32_t DMMONCHG_STA : 1; /*!< [16..16] DMMON change status */ + __IOM uint32_t DPMONCHG_STA : 1; /*!< [17..17] DPMON change status */ + uint32_t : 14; + } OBINTSTA_b; + }; + + union + { + __IOM uint32_t OBINTEN; /*!< (@ 0x00000808) OTG-BC Interrupt Enable Register */ + + struct + { + __IOM uint32_t IDCHG_EN : 1; /*!< [0..0] IDCHG_STA Interrupt enable */ + __IOM uint32_t OCINT_EN : 1; /*!< [1..1] OCINT_STA interrupt enable */ + __IOM uint32_t VBSTACHG_EN : 1; /*!< [2..2] VBSTACHG_STA interrupt enable */ + __IOM uint32_t VBSTAINT_EN : 1; /*!< [3..3] VBSTAINT_STA interrupt enable */ + uint32_t : 12; + __IOM uint32_t DMMONCHG_EN : 1; /*!< [16..16] DMMONCHG_STA interrupt enable */ + __IOM uint32_t DPMONCHG_EN : 1; /*!< [17..17] DPMONCHG_STA interrupt enable */ + uint32_t : 14; + } OBINTEN_b; + }; + + union + { + __IOM uint32_t VBCTRL; /*!< (@ 0x0000080C) VBUS Control Register */ + + struct + { + __IOM uint32_t VBOUT : 1; /*!< [0..0] VBUS drive control (USB_VBUSEN pin) */ + __IOM uint32_t VBUSENSEL : 1; /*!< [1..1] USB_VBUSEN pin control */ + uint32_t : 2; + __IOM uint32_t VGPUO : 1; /*!< [4..4] USB_EXICEN pin control */ + uint32_t : 11; + __IOM uint32_t OCCLRIEN : 1; /*!< [16..16] USB_VBUSEN pin control at occurrence of overcurrent */ + __IOM uint32_t OCISEL : 1; /*!< [17..17] Overcurrent detection */ + uint32_t : 2; + __IOM uint32_t VBLVL : 4; /*!< [23..20] VBUS level detection */ + uint32_t : 4; + __IM uint32_t VBSTA : 4; /*!< [31..28] VBUS indication */ + } VBCTRL_b; + }; + + union + { + __IOM uint32_t LINECTRL1; /*!< (@ 0x00000810) Line Control Port 1 Register */ + + struct + { + __IM uint32_t IDMON : 1; /*!< [0..0] Indicates a value of USB_OTGID input pin. */ + uint32_t : 1; + __IM uint32_t DMMON : 1; /*!< [2..2] Indicates a value of USB bus DM. */ + __IM uint32_t DPMON : 1; /*!< [3..3] Indicates a value of USB bus DP. */ + uint32_t : 12; + __IOM uint32_t DM_RPD : 1; /*!< [16..16] Controls USB bus (DM) 15 kOhm pulldown resistor when + * DMPPD_EN = 1. */ + __IOM uint32_t DMRPD_EN : 1; /*!< [17..17] Enables DM_RPD to control USB bus (DM) 15 kOhm pulldown + * resistor. */ + __IOM uint32_t DP_RPD : 1; /*!< [18..18] Controls USB bus (DP) 15 kOhm pulldown resistor when + * DRPPD_EN = 1. */ + __IOM uint32_t DPRPD_EN : 1; /*!< [19..19] Enables DP_RPD to control USB bus (DP) 15 kOhm pulldown + * resistor. */ + uint32_t : 12; + } LINECTRL1_b; + }; +} R_USBHC_Type; /*!< Size = 2068 (0x814) */ + +/* =========================================================================================================================== */ +/* ================ R_USBF ================ */ +/* =========================================================================================================================== */ + +/** + * @brief USB 2.0 Host and Function Module (R_USBF) + */ + +typedef struct /*!< (@ 0x80201000) R_USBF Structure */ +{ + union + { + __IOM uint16_t SYSCFG0; /*!< (@ 0x00000000) System Configuration Control Register 0 */ + + struct + { + __IOM uint16_t USBE : 1; /*!< [0..0] USB Block 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 */ + uint16_t : 1; + __IOM uint16_t HSE : 1; /*!< [7..7] High-Speed Operation Enable */ + __IOM uint16_t CNEN : 1; /*!< [8..8] Single-End Receiver Operation Enable */ + uint16_t : 7; + } SYSCFG0_b; + }; + + union + { + __IOM uint16_t SYSCFG1; /*!< (@ 0x00000002) System Configuration Control Register 1 */ + + struct + { + __IOM uint16_t BWAIT : 6; /*!< [5..0] CPU Bus Access Wait Specification */ + uint16_t : 2; + __IOM uint16_t AWAIT : 6; /*!< [13..8] AHB-DMA Bridge Bus Access Wait Specification */ + uint16_t : 2; + } SYSCFG1_b; + }; + + union + { + __IM uint16_t SYSSTS0; /*!< (@ 0x00000004) System Configuration Status Register */ + + struct + { + __IM uint16_t LNST : 2; /*!< [1..0] USB Data Line Status Monitor */ + uint16_t : 14; + } SYSSTS0_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t DVSTCTR0; /*!< (@ 0x00000008) Device State Control Register 0 */ + + struct + { + __IM uint16_t RHST : 3; /*!< [2..0] Reset Handshake */ + uint16_t : 5; + __IOM uint16_t WKUP : 1; /*!< [8..8] Wakeup Output */ + uint16_t : 7; + } DVSTCTR0_b; + }; + __IM uint16_t RESERVED1; + + 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 RESERVED2; + __IM uint32_t RESERVED3; + + union + { + union + { + __IOM uint32_t CFIFO; /*!< (@ 0x00000014) FIFO Port Register */ + + struct + { + __IOM uint32_t FIFOPORT : 32; /*!< [31..0] FIFO Port */ + } CFIFO_b; + }; + + struct + { + union + { + __IOM uint16_t CFIFOL; /*!< (@ 0x00000014) FIFO Port Register */ + __IOM uint8_t CFIFOLL; /*!< (@ 0x00000014) FIFO Port Register */ + }; + + union + { + union + { + __IOM uint16_t CFIFOH; /*!< (@ 0x00000016) FIFO Port Register */ + + struct + { + __IOM uint16_t FIFOPORT : 16; /*!< [15..0] FIFO Port */ + } CFIFOH_b; + }; + + struct + { + __IM uint8_t RESERVED4; + + union + { + __IOM uint8_t CFIFOHH; /*!< (@ 0x00000017) FIFO Port Register */ + + struct + { + __IOM uint8_t FIFOPORT : 8; /*!< [7..0] FIFO Port */ + } CFIFOHH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t D0FIFO; /*!< (@ 0x00000018) FIFO Port Register */ + + struct + { + __IOM uint32_t FIFOPORT : 32; /*!< [31..0] FIFO Port */ + } D0FIFO_b; + }; + + struct + { + union + { + __IOM uint16_t D0FIFOL; /*!< (@ 0x00000018) FIFO Port Register */ + __IOM uint8_t D0FIFOLL; /*!< (@ 0x00000018) FIFO Port Register */ + }; + + union + { + union + { + __IOM uint16_t D0FIFOH; /*!< (@ 0x0000001A) FIFO Port Register */ + + struct + { + __IOM uint16_t FIFOPORT : 16; /*!< [15..0] FIFO Port */ + } D0FIFOH_b; + }; + + struct + { + __IM uint8_t RESERVED5; + + union + { + __IOM uint8_t D0FIFOHH; /*!< (@ 0x0000001B) FIFO Port Register */ + + struct + { + __IOM uint8_t FIFOPORT : 8; /*!< [7..0] FIFO Port */ + } D0FIFOHH_b; + }; + }; + }; + }; + }; + + union + { + union + { + __IOM uint32_t D1FIFO; /*!< (@ 0x0000001C) FIFO Port Register */ + + struct + { + __IOM uint32_t FIFOPORT : 32; /*!< [31..0] FIFO Port */ + } D1FIFO_b; + }; + + struct + { + union + { + __IOM uint16_t D1FIFOL; /*!< (@ 0x0000001C) FIFO Port Register */ + __IOM uint8_t D1FIFOLL; /*!< (@ 0x0000001C) FIFO Port Register */ + }; + + union + { + union + { + __IOM uint16_t D1FIFOH; /*!< (@ 0x0000001E) FIFO Port Register */ + + struct + { + __IOM uint16_t FIFOPORT : 16; /*!< [15..0] FIFO Port */ + } D1FIFOH_b; + }; + + struct + { + __IM uint8_t RESERVED6; + + union + { + __IOM uint8_t D1FIFOHH; /*!< (@ 0x0000001F) FIFO Port Register */ + + struct + { + __IOM uint8_t FIFOPORT : 8; /*!< [7..0] FIFO Port */ + } D1FIFOHH_b; + }; + }; + }; + }; + }; + + 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; + __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) FIFO Port Control Register */ + + struct + { + __IM uint16_t DTLN : 12; /*!< [11..0] Receive Data Length */ + uint16_t : 1; + __IM uint16_t FRDY : 1; /*!< [13..13] FIFO Port Ready */ + __IOM 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 RESERVED7; + + 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 Request Enable */ + __IOM uint16_t DCLRM : 1; /*!< [13..13] Auto Buffer Memory Clear Mode 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 */ + } D0FIFOSEL_b; + }; + + union + { + __IOM uint16_t D0FIFOCTR; /*!< (@ 0x0000002A) FIFO Port Control Register */ + + struct + { + __IM uint16_t DTLN : 12; /*!< [11..0] Receive Data Length */ + uint16_t : 1; + __IM uint16_t FRDY : 1; /*!< [13..13] FIFO Port Ready */ + __IOM 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] DMA Request Enable */ + __IOM uint16_t DCLRM : 1; /*!< [13..13] Auto Buffer Memory Clear Mode 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) FIFO Port Control Register */ + + struct + { + __IM uint16_t DTLN : 12; /*!< [11..0] Receive Data Length */ + uint16_t : 1; + __IM uint16_t FRDY : 1; /*!< [13..13] FIFO Port Ready */ + __IOM 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 PDDETINTE : 1; /*!< [0..0] PDDETINT Detection Interrupt Enable */ + uint16_t : 15; + } INTENB1_b; + }; + __IM uint16_t RESERVED8; + + 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 */ + __IOM uint16_t INTL : 1; /*!< [5..5] Interrupt Output Sense Select */ + __IOM uint16_t BRDYM : 1; /*!< [6..6] PIPEBRDY Interrupt Status Clear Timing */ + uint16_t : 9; + } SOFCFG_b; + }; + __IM uint16_t RESERVED9; + + 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] BRDY Interrupt Status */ + __IM uint16_t NRDY : 1; /*!< [9..9] NRDY Interrupt Status */ + __IM uint16_t BEMP : 1; /*!< [10..10] BEMP 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 Update Interrupt Status */ + __IOM uint16_t RESM : 1; /*!< [14..14] Resume Interrupt Status */ + __IOM uint16_t VBINT : 1; /*!< [15..15] VBUS Change Detect Interrupt Status */ + } INTSTS0_b; + }; + + union + { + __IOM uint16_t INTSTS1; /*!< (@ 0x00000042) Interrupt Status Register 1 */ + + struct + { + __IOM uint16_t PDDETINT : 1; /*!< [0..0] PDDET Detection Interrupt Status */ + uint16_t : 15; + } INTSTS1_b; + }; + __IM uint16_t RESERVED10; + + 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 */ + 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 + { + __IM uint16_t UFRMNUM; /*!< (@ 0x0000004E) Frame Number Register */ + + struct + { + __IM uint16_t UFRNM : 3; /*!< [2..0] Microframe Number */ + uint16_t : 13; + } UFRMNUM_b; + }; + + union + { + __IM uint16_t USBADDR; /*!< (@ 0x00000050) USB Address Register */ + + struct + { + __IM uint16_t USBADDR : 7; /*!< [6..0] USB Address */ + uint16_t : 9; + } USBADDR_b; + }; + __IM uint16_t RESERVED11; + + union + { + __IM uint16_t USBREQ; /*!< (@ 0x00000054) USB Request Type Register */ + + struct + { + __IM uint16_t BMREQUESTTYPE : 8; /*!< [7..0] Request Type */ + __IM uint16_t BREQUEST : 8; /*!< [15..8] Request */ + } USBREQ_b; + }; + + union + { + __IM uint16_t USBVAL; /*!< (@ 0x00000056) USB Request Value Register */ + + struct + { + __IM uint16_t WVALUE : 16; /*!< [15..0] Value */ + } USBVAL_b; + }; + + union + { + __IM uint16_t USBINDX; /*!< (@ 0x00000058) USB Request Index Register */ + + struct + { + __IM uint16_t WINDEX : 16; /*!< [15..0] Index */ + } USBINDX_b; + }; + + union + { + __IM uint16_t USBLENG; /*!< (@ 0x0000005A) USB Request Length Register */ + + struct + { + __IM uint16_t WLENGTH : 16; /*!< [15..0] Length */ + } USBLENG_b; + }; + + union + { + __IOM uint16_t DCPCFG; /*!< (@ 0x0000005C) DCP Configuration Register */ + + struct + { + uint16_t : 7; + __IOM uint16_t SHTNAK : 1; /*!< [7..7] Disabling PIPE at the 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 Size */ + uint16_t : 9; + } 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] Toggle Bit Set */ + __IOM uint16_t SQCLR : 1; /*!< [8..8] Toggle Bit Clear */ + uint16_t : 6; + __IM uint16_t BSTS : 1; /*!< [15..15] Buffer Status */ + } DCPCTR_b; + }; + __IM uint16_t RESERVED12; + + 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 RESERVED13; + + 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 Disable at the 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 Specification Register */ + + struct + { + __IOM uint16_t BUFNMB : 8; /*!< [7..0] Buffer number */ + uint16_t : 2; + __IOM uint16_t BUFSIZE : 5; /*!< [14..10] Buffer size */ + 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 Size */ + uint16_t : 5; + } PIPEMAXP_b; + }; + + union + { + __IOM uint16_t PIPEPERI; /*!< (@ 0x0000006E) Pipe Timing Control Register */ + + struct + { + __IOM uint16_t IITV : 3; /*!< [2..0] Interval Error Detection Spacing */ + 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] Toggle Bit Confirm */ + __IOM uint16_t SQSET : 1; /*!< [7..7] Toggle Bit Set */ + __IOM uint16_t SQCLR : 1; /*!< [8..8] 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 : 3; + __IM uint16_t INBUFM : 1; /*!< [14..14] Transfer Buffer Monitor */ + __IM uint16_t BSTS : 1; /*!< [15..15] Buffer Status */ + } PIPE_CTR_b[9]; + }; + __IM uint16_t RESERVED14; + __IM uint32_t RESERVED15[3]; + __IOM R_USBF_PIPE_TR_Type PIPE_TR[5]; /*!< (@ 0x00000090) PIPEn Transaction Counter Registers (n=1-5) */ + __IM uint32_t RESERVED16[23]; + __IM uint16_t RESERVED17; + + union + { + __IOM uint16_t LPSTS; /*!< (@ 0x00000102) Low Power Status Register */ + + struct + { + uint16_t : 14; + __IOM uint16_t SUSPM : 1; /*!< [14..14] UTMI SuspendM Control */ + uint16_t : 1; + } LPSTS_b; + }; + __IM uint32_t RESERVED18[191]; + __IOM R_USBF_CHa_Type CHa[2]; /*!< (@ 0x00000400) Next Register Set */ + __IM uint32_t RESERVED19[96]; + __IOM R_USBF_CHb_Type CHb[2]; /*!< (@ 0x00000600) Skip Register Set */ + __IM uint32_t RESERVED20[48]; + + union + { + __IOM uint32_t DCTRL; /*!< (@ 0x00000700) DMA Control Register */ + + struct + { + __IOM uint32_t PR : 1; /*!< [0..0] Priority */ + uint32_t : 15; + __IOM uint32_t LDPR : 4; /*!< [19..16] Link Descriptor PROT */ + uint32_t : 4; + __IOM uint32_t LWPR : 4; /*!< [27..24] Link WriteBack PROT */ + uint32_t : 4; + } DCTRL_b; + }; + + union + { + __IOM uint32_t DSCITVL; /*!< (@ 0x00000704) Descriptor Interval Register */ + + struct + { + uint32_t : 8; + __IOM uint32_t DITVL : 8; /*!< [15..8] Descriptor Interval */ + uint32_t : 16; + } DSCITVL_b; + }; + __IM uint32_t RESERVED21[2]; + + union + { + __IM uint32_t DSTAT_EN; /*!< (@ 0x00000710) DMA Status EN Register */ + + struct + { + __IM uint32_t EN0 : 1; /*!< [0..0] Channel 0 EN */ + __IM uint32_t EN1 : 1; /*!< [1..1] Channel 1 EN */ + uint32_t : 30; + } DSTAT_EN_b; + }; + + union + { + __IM uint32_t DSTAT_ER; /*!< (@ 0x00000714) DMA Status ER Register */ + + struct + { + __IM uint32_t ER0 : 1; /*!< [0..0] Channel 0 ER */ + __IM uint32_t ER1 : 1; /*!< [1..1] Channel 1 ER */ + uint32_t : 30; + } DSTAT_ER_b; + }; + + union + { + __IM uint32_t DSTAT_END; /*!< (@ 0x00000718) DMA Status END Register */ + + struct + { + __IM uint32_t END0 : 1; /*!< [0..0] Channel 0 END */ + __IM uint32_t END1 : 1; /*!< [1..1] Channel 1 END */ + uint32_t : 30; + } DSTAT_END_b; + }; + + union + { + __IM uint32_t DSTAT_TC; /*!< (@ 0x0000071C) DMA Status TC Register */ + + struct + { + __IM uint32_t TC0 : 1; /*!< [0..0] Channel 0 TC */ + __IM uint32_t TC1 : 1; /*!< [1..1] Channel 1 TC */ + uint32_t : 30; + } DSTAT_TC_b; + }; + + union + { + __IM uint32_t DSTAT_SUS; /*!< (@ 0x00000720) DMA Status SUS Register */ + + struct + { + __IM uint32_t SUS0 : 1; /*!< [0..0] Channel 0 SUS */ + __IM uint32_t SUS1 : 1; /*!< [1..1] Channel 1 SUS */ + uint32_t : 30; + } DSTAT_SUS_b; + }; +} R_USBF_Type; /*!< Size = 1828 (0x724) */ + +/* =========================================================================================================================== */ +/* ================ R_BSC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Bus State Controller (R_BSC) + */ + +typedef struct /*!< (@ 0x80210000) R_BSC Structure */ +{ + union + { + __IOM uint32_t CMNCR; /*!< (@ 0x00000000) Common Control Register */ + + struct + { + uint32_t : 9; + __IOM uint32_t DPRTY : 2; /*!< [10..9] DMA Burst Transfer Priority */ + uint32_t : 13; + __IOM uint32_t AL : 1; /*!< [24..24] Acknowledge Level */ + uint32_t : 3; + __IOM uint32_t TL : 1; /*!< [28..28] Transfer End Level */ + uint32_t : 3; + } CMNCR_b; + }; + + union + { + __IOM uint32_t CSnBCR[6]; /*!< (@ 0x00000004) CS[0..5] Space Bus Control Register */ + + struct + { + uint32_t : 9; + __IOM uint32_t BSZ : 2; /*!< [10..9] Data Bus Width Specification */ + uint32_t : 1; + __IOM uint32_t TYPE : 3; /*!< [14..12] Memory Connected to a Space */ + uint32_t : 1; + __IOM uint32_t IWRRS : 3; /*!< [18..16] Idle State Insertion between Read-Read Cycles in the + * Same CS Space */ + __IOM uint32_t IWRRD : 3; /*!< [21..19] Idle State Insertion between Read-Read Cycles in Different + * CS Spaces */ + __IOM uint32_t IWRWS : 3; /*!< [24..22] Idle State Insertion between Read-Write Cycles in the + * Same CS Space */ + __IOM uint32_t IWRWD : 3; /*!< [27..25] Idle State Insertion between Read-Write Cycles in Different + * CS Spaces */ + __IOM uint32_t IWW : 3; /*!< [30..28] Idle Cycles between Write-Read Cycles and Write-Write + * Cycles */ + uint32_t : 1; + } CSnBCR_b[6]; + }; + __IM uint32_t RESERVED[3]; + + union + { + union + { + __IOM uint32_t CS0WCR_0; /*!< (@ 0x00000028) CS0 Space Wait Control Register for Normal Space, + * SRAM with Byte Selection */ + + struct + { + __IOM uint32_t HW : 2; /*!< [1..0] Delay States from RD#, WEn# Negation to Address, CS0# + * Negation */ + uint32_t : 4; + __IOM uint32_t WM : 1; /*!< [6..6] External Wait Mask Specification */ + __IOM uint32_t WR : 4; /*!< [10..7] Number of Access Waits */ + __IOM uint32_t SW : 2; /*!< [12..11] Number of Delay Cycles from Address, CSn# Assertion + * to RD#, WEn# Assertion */ + uint32_t : 7; + __IOM uint32_t BAS : 1; /*!< [20..20] SRAM with Byte Selection Byte Access Select */ + uint32_t : 11; + } CS0WCR_0_b; + }; + + union + { + __IOM uint32_t CS0WCR_1; /*!< (@ 0x00000028) CS0 Space Wait Control Register for Burst ROM + * with Clocked Asynchronous */ + + struct + { + uint32_t : 6; + __IOM uint32_t WM : 1; /*!< [6..6] External Wait Mask Specification */ + __IOM uint32_t W : 4; /*!< [10..7] Number of Access Waits */ + uint32_t : 5; + __IOM uint32_t BW : 2; /*!< [17..16] Number of Waits during Burst Access */ + uint32_t : 2; + __IOM uint32_t BST : 2; /*!< [21..20] Burst Count Specification */ + uint32_t : 10; + } CS0WCR_1_b; + }; + + union + { + __IOM uint32_t CS0WCR_2; /*!< (@ 0x00000028) CS0 Space Wait Control Register for Burst ROM + * with Clocked Synchronous */ + + struct + { + uint32_t : 6; + __IOM uint32_t WM : 1; /*!< [6..6] External Wait Mask Specification */ + __IOM uint32_t W : 4; /*!< [10..7] Number of Access Waits */ + uint32_t : 5; + __IOM uint32_t BW : 2; /*!< [17..16] Number of Burst Wait Cycles */ + uint32_t : 14; + } CS0WCR_2_b; + }; + }; + __IM uint32_t RESERVED1; + + union + { + union + { + __IOM uint32_t CS2WCR_0; /*!< (@ 0x00000030) CS2 Space Wait Control Register for Normal Space, + * SRAM with Byte Selection */ + + struct + { + uint32_t : 6; + __IOM uint32_t WM : 1; /*!< [6..6] External Wait Mask Specification */ + __IOM uint32_t WR : 4; /*!< [10..7] Number of Access Waits */ + uint32_t : 9; + __IOM uint32_t BAS : 1; /*!< [20..20] SRAM with Byte Selection Byte Access Select */ + uint32_t : 11; + } CS2WCR_0_b; + }; + + union + { + __IOM uint32_t CS2WCR_1; /*!< (@ 0x00000030) CS2 Space Wait Control Register for SDRAM */ + + struct + { + uint32_t : 7; + __IOM uint32_t A2CL : 2; /*!< [8..7] CAS Latency for Area 2 */ + uint32_t : 23; + } CS2WCR_1_b; + }; + }; + + union + { + union + { + __IOM uint32_t CS3WCR_0; /*!< (@ 0x00000034) CS3 Space Wait Control Register for Normal Space, + * SRAM with Byte Selection */ + + struct + { + uint32_t : 6; + __IOM uint32_t WM : 1; /*!< [6..6] External Wait Mask Specification */ + __IOM uint32_t WR : 4; /*!< [10..7] Number of Access Waits */ + uint32_t : 9; + __IOM uint32_t BAS : 1; /*!< [20..20] SRAM with Byte Selection Byte Access Select */ + uint32_t : 11; + } CS3WCR_0_b; + }; + + union + { + __IOM uint32_t CS3WCR_1; /*!< (@ 0x00000034) CS3 Space Wait Control Register for SDRAM */ + + struct + { + __IOM uint32_t WTRC : 2; /*!< [1..0] Number of Idle States from REF Command/Self-Refresh Release + * to ACTV/REF/MRS Command */ + uint32_t : 1; + __IOM uint32_t TRWL : 2; /*!< [4..3] Number of Auto-Precharge Startup Wait Cycles */ + uint32_t : 2; + __IOM uint32_t A3CL : 2; /*!< [8..7] CAS Latency for Area 3 */ + uint32_t : 1; + __IOM uint32_t WTRCD : 2; /*!< [11..10] Number of Waits between ACTV Command and READ(A)/WRIT(A) + * Command */ + uint32_t : 1; + __IOM uint32_t WTRP : 2; /*!< [14..13] Number of Auto-Precharge Completion Wait States */ + uint32_t : 17; + } CS3WCR_1_b; + }; + }; + __IM uint32_t RESERVED2; + + union + { + __IOM uint32_t CS5WCR; /*!< (@ 0x0000003C) CS5 Space Wait Control Register for Normal Space, + * SRAM with Byte Selection, and MPX-I/O */ + + struct + { + __IOM uint32_t HW : 2; /*!< [1..0] Delay Cycles from RD#, WEn# to Address, CS5# */ + uint32_t : 4; + __IOM uint32_t WM : 1; /*!< [6..6] External Wait Mask Specification */ + __IOM uint32_t WR : 4; /*!< [10..7] Number of Read Access Waits */ + __IOM uint32_t SW : 2; /*!< [12..11] Number of Delay Cycles from Address, CS5# Assertion + * to RD#, WEn# Assertion */ + uint32_t : 3; + __IOM uint32_t WW : 3; /*!< [18..16] Number of Write Access Waits */ + uint32_t : 1; + __IOM uint32_t MPXWSBAS : 1; /*!< [20..20] MPX-I/O Interface Address Cycle Wait and SRAM with + * Byte Selection Byte Access Select */ + __IOM uint32_t SZSEL : 1; /*!< [21..21] MPX-I/O Interface Bus Width Specification */ + uint32_t : 10; + } CS5WCR_b; + }; + __IM uint32_t RESERVED3[3]; + + union + { + __IOM uint32_t SDCR; /*!< (@ 0x0000004C) SDRAM Control Register */ + + struct + { + __IOM uint32_t A3COL : 2; /*!< [1..0] Number of Bits of Column Address for Area 3 */ + uint32_t : 1; + __IOM uint32_t A3ROW : 2; /*!< [4..3] Number of Bits of Row Address for Area 3 */ + uint32_t : 3; + __IOM uint32_t BACTV : 1; /*!< [8..8] Bank Active Mode */ + __IOM uint32_t PDOWN : 1; /*!< [9..9] Power-Down Mode */ + __IOM uint32_t RMODE : 1; /*!< [10..10] Refresh Mode */ + __IOM uint32_t RFSH : 1; /*!< [11..11] Refresh Control */ + uint32_t : 1; + __IOM uint32_t DEEP : 1; /*!< [13..13] Deep Power-Down Mode */ + uint32_t : 2; + __IOM uint32_t A2COL : 2; /*!< [17..16] Number of Bits of Column Address for Area 2 */ + uint32_t : 1; + __IOM uint32_t A2ROW : 2; /*!< [20..19] Number of Bits of Row Address for Area 2 */ + uint32_t : 11; + } SDCR_b; + }; + __IOM uint32_t RTCSR; /*!< (@ 0x00000050) Refresh Timer Control/Status Register */ + __IOM uint32_t RTCNT; /*!< (@ 0x00000054) Refresh Timer Counter */ + __IOM uint32_t RTCOR; /*!< (@ 0x00000058) Refresh Time Constant Register */ + __IM uint32_t RESERVED4; + + union + { + __IOM uint32_t TOSCOR[6]; /*!< (@ 0x00000060) Timeout Cycle Constant Register [0..5] */ + + struct + { + __IOM uint32_t TOCNUM : 16; /*!< [15..0] Timeout Cycle Number */ + uint32_t : 16; + } TOSCOR_b[6]; + }; + __IM uint32_t RESERVED5[2]; + + union + { + __IOM uint32_t TOSTR; /*!< (@ 0x00000080) Timeout Status Register */ + + struct + { + __IOM uint32_t CS0TOSTF : 1; /*!< [0..0] CS0 Space Timeout Status Flag */ + uint32_t : 1; + __IOM uint32_t CS2TOSTF : 1; /*!< [2..2] CS2 Space Timeout Status Flag */ + __IOM uint32_t CS3TOSTF : 1; /*!< [3..3] CS3 Space Timeout Status Flag */ + uint32_t : 1; + __IOM uint32_t CS5TOSTF : 1; /*!< [5..5] CS5 Space Timeout Status Flag */ + uint32_t : 26; + } TOSTR_b; + }; + + union + { + __IOM uint32_t TOENR; /*!< (@ 0x00000084) Timeout Enable Register */ + + struct + { + __IOM uint32_t CS0TOEN : 1; /*!< [0..0] CS0 Space Timeout Detection Enable */ + uint32_t : 1; + __IOM uint32_t CS2TOEN : 1; /*!< [2..2] CS2 Space Timeout Detection Enable */ + __IOM uint32_t CS3TOEN : 1; /*!< [3..3] CS3 Space Timeout Detection Enable */ + uint32_t : 1; + __IOM uint32_t CS5TOEN : 1; /*!< [5..5] CS5 Space Timeout Detection Enable */ + uint32_t : 26; + } TOENR_b; + }; +} R_BSC_Type; /*!< Size = 136 (0x88) */ + +/* =========================================================================================================================== */ +/* ================ R_XSPI0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief xSPI (R_XSPI0) + */ + +typedef struct /*!< (@ 0x80220000) R_XSPI0 Structure */ +{ + union + { + __IOM uint32_t WRAPCFG; /*!< (@ 0x00000000) xSPI Wrapper Configuration Register */ + + struct + { + uint32_t : 8; + __IOM uint32_t DSSFTCS0 : 5; /*!< [12..8] DS shift for slave0 */ + uint32_t : 11; + __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 + { + uint32_t : 16; + __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 BMCFG; /*!< (@ 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 : 15; + } BMCFG_b; + }; + __IM uint32_t RESERVED; + __IOM R_XSPI0_CSa_Type CSa[2]; /*!< (@ 0x00000010) xSPI Command Map Configuration Register [0..1] */ + __IM uint32_t RESERVED1[8]; + + union + { + __IOM uint32_t LIOCFGCS[2]; /*!< (@ 0x00000050) xSPI Link I/O Configuration Register CSn */ + + 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]; + }; + __IM uint32_t RESERVED2[2]; + + union + { + __IOM uint32_t BMCTL0; /*!< (@ 0x00000060) xSPI Bridge Map Control Register 0 */ + + struct + { + __IOM uint32_t CS0ACC : 2; /*!< [1..0] AHB channel to slave0 memory area access enable */ + __IOM uint32_t CS1ACC : 2; /*!< [3..2] AHB channel to slave1 memory area access enable */ + uint32_t : 28; + } BMCTL0_b; + }; + + union + { + __OM uint32_t BMCTL1; /*!< (@ 0x00000064) xSPI Bridge Map Control Register 1 */ + + struct + { + uint32_t : 8; + __OM uint32_t MWRPUSH : 1; /*!< [8..8] Memory Write Data Push */ + uint32_t : 1; + __OM uint32_t PBUFCLR : 1; /*!< [10..10] Prefetch Buffer clear */ + uint32_t : 21; + } BMCTL1_b; + }; + + union + { + __IOM uint32_t CMCTL; /*!< (@ 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; + } CMCTL_b; + }; + + union + { + __IOM uint32_t CSSCTL; /*!< (@ 0x0000006C) xSPI CS Size Control Register */ + + struct + { + __IOM uint32_t CS0SIZE : 6; /*!< [5..0] CS0 (slave0) size */ + uint32_t : 2; + __IOM uint32_t CS1SIZE : 6; /*!< [13..8] CS1 (slave1) size */ + uint32_t : 18; + } CSSCTL_b; + }; + + 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 RESERVED3; + __IOM R_XSPI0_BUF_Type BUF[4]; /*!< (@ 0x00000080) xSPI Command Manual Buf [0..3] */ + __IM uint32_t RESERVED4[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 slave0 */ + __IOM uint32_t WPCS1 : 1; /*!< [1..1] WP drive for slave1 */ + uint32_t : 14; + __IOM uint32_t RSTCS0 : 1; /*!< [16..16] Reset drive for slave0 */ + __IOM uint32_t RSTCS1 : 1; /*!< [17..17] Reset drive for slave1 */ + uint32_t : 14; + } LIOCTL_b; + }; + __IM uint32_t RESERVED5[9]; + __IOM R_XSPI0_CSb_Type CSb[2]; /*!< (@ 0x00000130) xSPI Command Calibration Control register [0..1] */ + __IM uint32_t RESERVED6[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 MEMACC : 1; /*!< [0..0] Memory access ongoing */ + uint32_t : 3; + __IM uint32_t PBUFNE : 1; /*!< [4..4] Prefetch Buffer Not Empty */ + uint32_t : 1; + __IM uint32_t WRBUFNE : 1; /*!< [6..6] Write Buffer Not Empty */ + uint32_t : 9; + __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 CSn */ + + 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 BRGOF : 1; /*!< [16..16] Bridge Buffer overflow */ + uint32_t : 1; + __IM uint32_t BRGUF : 1; /*!< [18..18] Bridge Buffer underflow */ + uint32_t : 1; + __IM uint32_t BUSERR : 1; /*!< [20..20] AHB bus error */ + uint32_t : 7; + __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 BRGOFC : 1; /*!< [16..16] Bridge Buffer overflow interrupt clear */ + uint32_t : 1; + __OM uint32_t BRGUFC : 1; /*!< [18..18] Bridge Buffer underflow interrupt clear */ + uint32_t : 1; + __OM uint32_t BUSERRC : 1; /*!< [20..20] AHB bus error interrupt clear */ + uint32_t : 7; + __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 BRGOFE : 1; /*!< [16..16] Bridge Buffer overflow interrupt enable */ + uint32_t : 1; + __IOM uint32_t BRGUFE : 1; /*!< [18..18] Bridge Buffer underflow interrupt enable */ + uint32_t : 1; + __IOM uint32_t BUSERRE : 1; /*!< [20..20] AHB bus error interrupt enable */ + uint32_t : 7; + __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_XSPI0_Type; /*!< Size = 412 (0x19c) */ + +/* =========================================================================================================================== */ +/* ================ R_MBXSEM ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Mailbox and Semaphore (R_MBXSEM) + */ + +typedef struct /*!< (@ 0x80240000) R_MBXSEM Structure */ +{ + union + { + __IOM uint32_t SEM[8]; /*!< (@ 0x00000000) Semaphore Register [0..7] */ + + struct + { + __IOM uint32_t SEM : 1; /*!< [0..0] Semaphore bit */ + uint32_t : 31; + } SEM_b[8]; + }; + + union + { + __IOM uint32_t SEMRCEN; /*!< (@ 0x00000020) Semaphore Read Clear Enable Register */ + + struct + { + __IOM uint32_t SEMRCEN0 : 1; /*!< [0..0] SEMRCEN0 */ + __IOM uint32_t SEMRCEN1 : 1; /*!< [1..1] SEMRCEN1 */ + __IOM uint32_t SEMRCEN2 : 1; /*!< [2..2] SEMRCEN2 */ + __IOM uint32_t SEMRCEN3 : 1; /*!< [3..3] SEMRCEN3 */ + __IOM uint32_t SEMRCEN4 : 1; /*!< [4..4] SEMRCEN4 */ + __IOM uint32_t SEMRCEN5 : 1; /*!< [5..5] SEMRCEN5 */ + __IOM uint32_t SEMRCEN6 : 1; /*!< [6..6] SEMRCEN6 */ + __IOM uint32_t SEMRCEN7 : 1; /*!< [7..7] SEMRCEN7 */ + uint32_t : 24; + } SEMRCEN_b; + }; + __IM uint32_t RESERVED[7]; + + union + { + __IM uint32_t MBXH2C[4]; /*!< (@ 0x00000040) Host to CR52 Mailbox Register [0..3] */ + + struct + { + __IM uint32_t MBX : 32; /*!< [31..0] MBX */ + } MBXH2C_b[4]; + }; + + union + { + __IM uint32_t MBXISETH2C; /*!< (@ 0x00000050) Host to CR52 Mailbox Interrupt Set Register */ + + struct + { + __IM uint32_t MBX_INT0S : 1; /*!< [0..0] Generates or indicates MBX_INT0 interrupt of mailbox + * from external host CPU to internal Cortex-R52. */ + __IM uint32_t MBX_INT1S : 1; /*!< [1..1] Generates or indicates MBX_INT1 interrupt of mailbox + * from external host CPU to internal Cortex-R52. */ + __IM uint32_t MBX_INT2S : 1; /*!< [2..2] Generates or indicates MBX_INT2 interrupt of mailbox + * from external host CPU to internal Cortex-R52. */ + __IM uint32_t MBX_INT3S : 1; /*!< [3..3] Generates or indicates MBX_INT3 interrupt of mailbox + * from external host CPU to internal Cortex-R52. */ + uint32_t : 28; + } MBXISETH2C_b; + }; + + union + { + __IOM uint32_t MBXICLRH2C; /*!< (@ 0x00000054) Host to CR52 Mailbox Interrupt Clear Register */ + + struct + { + __IOM uint32_t MBX_INT0C : 1; /*!< [0..0] Clears or indicates MBX_INT0 interrupt of mailbox from + * external host CPU to internal Cortex-R52. */ + __IOM uint32_t MBX_INT1C : 1; /*!< [1..1] Clears or indicates MBX_INT1 interrupt of mailbox from + * external host CPU to internal Cortex-R52. */ + __IOM uint32_t MBX_INT2C : 1; /*!< [2..2] Clears or indicates MBX_INT2 interrupt of mailbox from + * external host CPU to internal Cortex-R52. */ + __IOM uint32_t MBX_INT3C : 1; /*!< [3..3] Clears or indicates MBX_INT3 interrupt of mailbox from + * external host CPU to internal Cortex-R52. */ + uint32_t : 28; + } MBXICLRH2C_b; + }; + __IM uint32_t RESERVED1[10]; + + union + { + __IOM uint32_t MBXC2H[4]; /*!< (@ 0x00000080) CR52 to Host Mailbox Register [0..3] */ + + struct + { + __IOM uint32_t MBX : 32; /*!< [31..0] MBX */ + } MBXC2H_b[4]; + }; + + union + { + __IOM uint32_t MBXISETC2H; /*!< (@ 0x00000090) CR52 to Host Mailbox Interrupt Set Register */ + + struct + { + __IOM uint32_t MBX_HINT0S : 1; /*!< [0..0] Generates or indicates MBX_HINT0 interrupt of mailbox + * from internal Cortex-R52 to external host CPU. */ + __IOM uint32_t MBX_HINT1S : 1; /*!< [1..1] Generates or indicates MBX_HINT1 interrupt of mailbox + * from internal Cortex-R52 to external host CPU. */ + __IOM uint32_t MBX_HINT2S : 1; /*!< [2..2] Generates or indicates MBX_HINT2 interrupt of mailbox + * from internal Cortex-R52 to external host CPU. */ + __IOM uint32_t MBX_HINT3S : 1; /*!< [3..3] Generates or indicates MBX_HINT3 interrupt of mailbox + * from internal Cortex-R52 to external host CPU. */ + uint32_t : 28; + } MBXISETC2H_b; + }; + + union + { + __IM uint32_t MBXICLRC2H; /*!< (@ 0x00000094) CR52 to Host Mailbox Interrupt Clear Register */ + + struct + { + __IM uint32_t MBX_HINT0C : 1; /*!< [0..0] Clears or indicates MBX_HINT0 interrupt of mailbox from + * internal Cortex-R52 to external host CPU. */ + __IM uint32_t MBX_HINT1C : 1; /*!< [1..1] Clears or indicates MBX_HINT1 interrupt of mailbox from + * internal Cortex-R52 to external host CPU. */ + __IM uint32_t MBX_HINT2C : 1; /*!< [2..2] Clears or indicates MBX_HINT2 interrupt of mailbox from + * internal Cortex-R52 to external host CPU. */ + __IM uint32_t MBX_HINT3C : 1; /*!< [3..3] Clears or indicates MBX_HINT3 interrupt of mailbox from + * internal Cortex-R52 to external host CPU. */ + uint32_t : 28; + } MBXICLRC2H_b; + }; +} R_MBXSEM_Type; /*!< Size = 152 (0x98) */ + +/* =========================================================================================================================== */ +/* ================ R_SHOSTIF ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Serial Host Interface (R_SHOSTIF) + */ + +typedef struct /*!< (@ 0x80241000) R_SHOSTIF Structure */ +{ + union + { + __IOM uint32_t CTRLR0; /*!< (@ 0x00000000) Control Register 0 */ + + struct + { + uint32_t : 8; + __IOM uint32_t SCPH : 1; /*!< [8..8] Serial Clock Phase */ + __IOM uint32_t SCPOL : 1; /*!< [9..9] Serial Clock Polarity */ + uint32_t : 22; + } CTRLR0_b; + }; + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t ENR; /*!< (@ 0x00000008) Enable Register */ + + struct + { + __IOM uint32_t ENABLE : 1; /*!< [0..0] SHOSTIF Enable */ + uint32_t : 31; + } ENR_b; + }; + __IM uint32_t RESERVED1[2]; + + union + { + __IOM uint32_t RXFBTR; /*!< (@ 0x00000014) Receive FIFO Burst Threshold Register */ + + struct + { + __IOM uint32_t RXFBTL : 6; /*!< [5..0] Receive FIFO Burst Threshold */ + uint32_t : 26; + } RXFBTR_b; + }; + + union + { + __IOM uint32_t TXFTLR; /*!< (@ 0x00000018) Transmit FIFO Threshold Level Register */ + + struct + { + __IOM uint32_t TFT : 6; /*!< [5..0] Transmit FIFO Threshold */ + uint32_t : 26; + } TXFTLR_b; + }; + + union + { + __IOM uint32_t RXFTLR; /*!< (@ 0x0000001C) Receive FIFO Threshold Level Register */ + + struct + { + __IOM uint32_t RFT : 6; /*!< [5..0] Receive FIFO Threshold */ + uint32_t : 26; + } RXFTLR_b; + }; + __IM uint32_t RESERVED2[2]; + + union + { + __IM uint32_t SR; /*!< (@ 0x00000028) Status Register */ + + struct + { + __IM uint32_t BUSY : 1; /*!< [0..0] Busy Flag */ + uint32_t : 31; + } SR_b; + }; + + union + { + __IOM uint32_t IMR; /*!< (@ 0x0000002C) Interrupt Mask Register */ + + struct + { + __IOM uint32_t TXEIM : 1; /*!< [0..0] Transmit FIFO Empty Interrupt Mask */ + uint32_t : 2; + __IOM uint32_t RXOIM : 1; /*!< [3..3] Receive FIFO Overflow Interrupt Mask */ + __IOM uint32_t RXFIM : 1; /*!< [4..4] Receive FIFO Full Interrupt Mask */ + uint32_t : 2; + __IOM uint32_t TXUIM : 1; /*!< [7..7] Transmit FIFO Underflow Mask */ + __IOM uint32_t AHBEM : 1; /*!< [8..8] AHB Error Interrupt Mask */ + __IOM uint32_t SPIMEM : 1; /*!< [9..9] SPI Master Error Interrupt Mask */ + uint32_t : 22; + } IMR_b; + }; + + union + { + __IM uint32_t ISR; /*!< (@ 0x00000030) Interrupt Status Register */ + + struct + { + __IM uint32_t TXEIS : 1; /*!< [0..0] Transmit FIFO Empty Interrupt Status */ + uint32_t : 2; + __IM uint32_t RXOIS : 1; /*!< [3..3] Receive FIFO Overflow Interrupt Status */ + __IM uint32_t RXFIS : 1; /*!< [4..4] Receive FIFO Full Interrupt Status */ + uint32_t : 2; + __IM uint32_t TXUIS : 1; /*!< [7..7] Transmit FIFO Underflow Status */ + __IM uint32_t AHBES : 1; /*!< [8..8] AHB Error Interrupt Status */ + __IM uint32_t SPIMES : 1; /*!< [9..9] SPI Master Error Interrupt Status */ + uint32_t : 22; + } ISR_b; + }; + + union + { + __IM uint32_t RISR; /*!< (@ 0x00000034) Raw Interrupt Status Register */ + + struct + { + __IM uint32_t TXEIR : 1; /*!< [0..0] Transmit FIFO Empty Raw Interrupt Status */ + uint32_t : 2; + __IM uint32_t RXOIR : 1; /*!< [3..3] Receive FIFO Overflow Raw Interrupt Status */ + __IM uint32_t RXFIR : 1; /*!< [4..4] Receive FIFO Full Raw Interrupt Status */ + uint32_t : 2; + __IM uint32_t TXUIR : 1; /*!< [7..7] Transmit FIFO Underflow Raw Interrupt Status */ + __IM uint32_t AHBER : 1; /*!< [8..8] AHB Error Raw Interrupt Status */ + __IM uint32_t SPIMER : 1; /*!< [9..9] SPI Master Error Raw Interrupt Status */ + uint32_t : 22; + } RISR_b; + }; + + union + { + __IM uint32_t TXUICR; /*!< (@ 0x00000038) Transmit FIFO Underflow Interrupt Clear Register */ + + struct + { + __IM uint32_t TXUICR : 1; /*!< [0..0] Clear Transmit FIFO Underflow Interrupt */ + uint32_t : 31; + } TXUICR_b; + }; + + union + { + __IM uint32_t RXOICR; /*!< (@ 0x0000003C) Receive FIFO Overflow Interrupt Clear Register */ + + struct + { + __IM uint32_t RXOICR : 1; /*!< [0..0] Clear Receive FIFO Overflow Interrupt */ + uint32_t : 31; + } RXOICR_b; + }; + + union + { + __IM uint32_t SPIMECR; /*!< (@ 0x00000040) SPI Master Interrupt Clear Register */ + + struct + { + __IM uint32_t SPIMECR : 1; /*!< [0..0] Clear SPI Master Error interrupt */ + uint32_t : 31; + } SPIMECR_b; + }; + + union + { + __IM uint32_t AHBECR; /*!< (@ 0x00000044) AHB Error Clear Register */ + + struct + { + __IM uint32_t AHBECR : 1; /*!< [0..0] Clear AHB Error Interrupt */ + uint32_t : 31; + } AHBECR_b; + }; + + union + { + __IM uint32_t ICR; /*!< (@ 0x00000048) Interrupt Clear Register */ + + struct + { + __IM uint32_t ICR : 1; /*!< [0..0] Clear Interrupts */ + uint32_t : 31; + } ICR_b; + }; +} R_SHOSTIF_Type; /*!< Size = 76 (0x4c) */ + +/* =========================================================================================================================== */ +/* ================ R_PHOSTIF ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Parallel Host Interface (R_PHOSTIF) + */ + +typedef struct /*!< (@ 0x80242000) R_PHOSTIF Structure */ +{ + union + { + __IOM uint16_t HIFBCC; /*!< (@ 0x00000000) HOSTIF Bus Control Register */ + + struct + { + __IOM uint16_t RBUFON0 : 1; /*!< [0..0] RBUFON0 */ + __IOM uint16_t RBUFON1 : 1; /*!< [1..1] RBUFON1 */ + __IOM uint16_t RBUFON2 : 1; /*!< [2..2] RBUFON2 */ + __IOM uint16_t RBUFON3 : 1; /*!< [3..3] RBUFON3 */ + __IOM uint16_t RBUFON4 : 1; /*!< [4..4] RBUFON4 */ + __IOM uint16_t RBUFON5 : 1; /*!< [5..5] RBUFON5 */ + uint16_t : 2; + __IOM uint16_t RBUFONX : 1; /*!< [8..8] RBUFONX */ + uint16_t : 3; + __IOM uint16_t BSTON : 1; /*!< [12..12] BSTON */ + __IOM uint16_t WRPON : 1; /*!< [13..13] WRPON */ + uint16_t : 2; + } HIFBCC_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t HIFBTC; /*!< (@ 0x00000004) HOSTIF Timing Control Register */ + + struct + { + __IOM uint16_t WRSTD : 3; /*!< [2..0] Specifies the timing for detecting the start of write + * operation by the HWRSTB# signal. */ + uint16_t : 1; + __IOM uint16_t RDSTD : 2; /*!< [5..4] Specifies the timing for detecting the start of read + * operation by the HRD# signal. */ + uint16_t : 2; + __IOM uint16_t PASTD : 3; /*!< [10..8] PASTD */ + uint16_t : 1; + __IOM uint16_t RDDTS : 2; /*!< [13..12] RDDTS */ + uint16_t : 2; + } HIFBTC_b; + }; + __IM uint16_t RESERVED1; + + union + { + __IOM uint16_t HIFPRC; /*!< (@ 0x00000008) HOSTIF Page ROM Control Register */ + + struct + { + __IOM uint16_t PAGEON0 : 1; /*!< [0..0] PAGEON0 */ + __IOM uint16_t PAGEON1 : 1; /*!< [1..1] PAGEON1 */ + __IOM uint16_t PAGEON2 : 1; /*!< [2..2] PAGEON2 */ + __IOM uint16_t PAGEON3 : 1; /*!< [3..3] PAGEON3 */ + __IOM uint16_t PAGEON4 : 1; /*!< [4..4] PAGEON4 */ + __IOM uint16_t PAGEON5 : 1; /*!< [5..5] PAGEON5 */ + uint16_t : 2; + __IOM uint16_t PAGEONX : 1; /*!< [8..8] PAGEONX */ + uint16_t : 3; + __IOM uint16_t PAGESZ : 1; /*!< [12..12] PAGESZ */ + uint16_t : 3; + } HIFPRC_b; + }; + __IM uint16_t RESERVED2; + + union + { + __IOM uint16_t HIFIRC; /*!< (@ 0x0000000C) HOSTIF Interrupt Request Control Register */ + + struct + { + __IOM uint16_t ERRRSP : 1; /*!< [0..0] This bit is set to 1 on reception of an error response + * from internal slave modules. */ + uint16_t : 15; + } HIFIRC_b; + }; + __IM uint16_t RESERVED3; + + union + { + __IM uint32_t HIFECR0; /*!< (@ 0x00000010) HOSTIF Error Source Register 0 */ + + struct + { + __IM uint32_t ERRADDR : 32; /*!< [31..0] ERRADDR */ + } HIFECR0_b; + }; + + union + { + __IM uint16_t HIFECR1; /*!< (@ 0x00000014) HOSTIF Error Source Register 1 */ + + struct + { + __IM uint16_t ERRSZ : 3; /*!< [2..0] ERRSZ */ + __IM uint16_t ERRWR : 1; /*!< [3..3] ERRWR */ + uint16_t : 12; + } HIFECR1_b; + }; + __IM uint16_t RESERVED4; + __IM uint32_t RESERVED5[2]; + + union + { + __IOM uint16_t HIFMON1; /*!< (@ 0x00000020) HOSTIF Monitor Register 1 */ + + struct + { + __IOM uint16_t HIFRDY : 1; /*!< [0..0] HIFRDY */ + __IM uint16_t BUSSEL : 1; /*!< [1..1] BUSSEL */ + uint16_t : 1; + __IM uint16_t HIFSYNC : 1; /*!< [3..3] HIFSYNC */ + uint16_t : 12; + } HIFMON1_b; + }; + __IM uint16_t RESERVED6; + + union + { + __IM uint16_t HIFMON2; /*!< (@ 0x00000024) HOSTIF Monitor Register 2 */ + + struct + { + __IM uint16_t HIFBCC : 1; /*!< [0..0] HIFBCC */ + __IM uint16_t HIFBTC : 1; /*!< [1..1] HIFBTC */ + __IM uint16_t HIFPRC : 1; /*!< [2..2] HIFPRC */ + __IM uint16_t HIFIRC : 1; /*!< [3..3] HIFIRC */ + __IM uint16_t HIFXAL : 1; /*!< [4..4] HIFXAL */ + __IM uint16_t HIFXAH : 1; /*!< [5..5] HIFXAH */ + uint16_t : 10; + } HIFMON2_b; + }; + __IM uint16_t RESERVED7; + + union + { + __IM uint16_t HIFMON3; /*!< (@ 0x00000028) HOSTIF Monitor Register 3 */ + + struct + { + __IM uint16_t HIFEXT0 : 1; /*!< [0..0] HIFEXT0 */ + __IM uint16_t HIFEXT1 : 1; /*!< [1..1] HIFEXT1 */ + uint16_t : 14; + } HIFMON3_b; + }; + __IM uint16_t RESERVED8; + __IM uint32_t RESERVED9; + + union + { + __IOM uint16_t HIFXAL; /*!< (@ 0x00000030) HOSTIF Specified Area Lower-limit Register */ + + struct + { + __IOM uint16_t XADDRL : 9; /*!< [8..0] Specifies the lower-limit address of the specified area + * to be set in the external bus address space. */ + uint16_t : 7; + } HIFXAL_b; + }; + __IM uint16_t RESERVED10; + + union + { + __IOM uint16_t HIFXAH; /*!< (@ 0x00000034) HOSTIF Specified Area Upper-limit Register */ + + struct + { + __IOM uint16_t XADDRH : 9; /*!< [8..0] Specifies the upper-limit address of the specified area + * to be set in the external bus address space. */ + uint16_t : 7; + } HIFXAH_b; + }; + __IM uint16_t RESERVED11; + __IM uint32_t RESERVED12[18]; + + union + { + __IOM uint16_t HIFEXT0; /*!< (@ 0x00000080) HOSTIF Synchronous Burst Transfer Control Register + * 0 */ + + struct + { + __IOM uint16_t KESSBI : 1; /*!< [0..0] KESSBI */ + uint16_t : 1; + __IOM uint16_t KESDTI : 1; /*!< [2..2] KESDTI */ + __IOM uint16_t KESAVI : 1; /*!< [3..3] KESAVI */ + __IOM uint16_t KESDTO : 1; /*!< [4..4] KESDTO */ + __IOM uint16_t KESWTO : 1; /*!< [5..5] KESWTO */ + uint16_t : 3; + __IOM uint16_t CNDWEO : 1; /*!< [9..9] CNDWEO */ + uint16_t : 5; + __IOM uint16_t MODTRN : 1; /*!< [15..15] MODTRN */ + } HIFEXT0_b; + }; + __IM uint16_t RESERVED13; + + union + { + __IOM uint16_t HIFEXT1; /*!< (@ 0x00000084) HOSTIF Synchronous Burst Transfer Control Register + * 1 */ + + struct + { + __IOM uint16_t DLYWA : 4; /*!< [3..0] Minimum time from the last input of the Low level on + * the HBS# pin to the point where write data is received. + * (twc)DLYWA[3:0]CNDWEO = 0CNDWEO = 0HWRSTB# = 0HWRSTB# = + * 1HWRSTB# = 0HWRSTB# = 10x034450x134450x234450x344450x455550x566660x677770 + * 788880x899990x9101010100xA111111110xB121212120xC131313130xD141414140xE151 + * 15150xF16161616 */ + uint16_t : 4; + __IOM uint16_t DLYRA : 4; /*!< [11..8] Minimum time from the last input of the Low level on + * the HBS# pin to the point where read data can be acquired. + * (trc)DLYRA[3:0]CNDWEO = 0CNDWEO = 10x0450x1450x2550x3660x4770x5880x6990x7 + * 0100x811110x912120xA13130xB14140xC15150xD16160xE17170xF1818 */ + uint16_t : 4; + } HIFEXT1_b; + }; + __IM uint16_t RESERVED14; +} R_PHOSTIF_Type; /*!< Size = 136 (0x88) */ + +/* =========================================================================================================================== */ +/* ================ R_SYSC_NS ================ */ +/* =========================================================================================================================== */ + +/** + * @brief System Control for Non-safety region (R_SYSC_NS) + */ + +typedef struct /*!< (@ 0x80280000) R_SYSC_NS Structure */ +{ + union + { + __IOM uint32_t SCKCR; /*!< (@ 0x00000000) System Clock Control Register */ + + struct + { + __IOM uint32_t FSELXSPI0 : 3; /*!< [2..0] Set the frequency of the clock provided to xSPI Unit + * 0 in combination with bit 6 (DIVSELXSPI0). The combination + * is shown below. */ + uint32_t : 3; + __IOM uint32_t DIVSELXSPI0 : 1; /*!< [6..6] Select the base clock to generate serial clock for xSPI + * Unit 0 */ + uint32_t : 1; + __IOM uint32_t FSELXSPI1 : 3; /*!< [10..8] Set the frequency of the clock provided to xSPI Unit + * 1 in combination with bit 14 (DIVSELXSPI1). */ + uint32_t : 3; + __IOM uint32_t DIVSELXSPI1 : 1; /*!< [14..14] Select the base clock to generate serial clock for + * xSPI Unit 1 */ + uint32_t : 1; + __IOM uint32_t CKIO : 3; /*!< [18..16] Set the frequency of the external bus clock (CKIO) + * and the clock supplied to BSC in combination with the DIVSELSUB + * in the SCKCR2 register. The combination is shown below. */ + uint32_t : 1; + __IOM uint32_t FSELCANFD : 1; /*!< [20..20] Select the frequency of the clock supplied to CANFD */ + __IOM uint32_t PHYSEL : 1; /*!< [21..21] Select the Ethernet PHY reference clock output (ETHn_REFCLK, + * n = 0 to 2) */ + __IOM uint32_t CLMASEL : 1; /*!< [22..22] Select alternative clock when main clock abnormal oscillation + * is detected in CLMA3 */ + uint32_t : 1; + __IOM uint32_t SPI0ASYNCSEL : 1; /*!< [24..24] Select clock frequency when asynchronous serial clock + * is selected in SPI0 */ + __IOM uint32_t SPI1ASYNCSEL : 1; /*!< [25..25] Select clock frequency when asynchronous serial clock + * is selected in SPI1 */ + __IOM uint32_t SPI2ASYNCSEL : 1; /*!< [26..26] Select clock frequency when asynchronous serial clock + * is selected in SPI2 */ + __IOM uint32_t SCI0ASYNCSEL : 1; /*!< [27..27] Select clock frequency when asynchronous serial clock + * is selected in SCI0 */ + __IOM uint32_t SCI1ASYNCSEL : 1; /*!< [28..28] Select clock frequency when asynchronous serial clock + * is selected in SCI1 */ + __IOM uint32_t SCI2ASYNCSEL : 1; /*!< [29..29] Select clock frequency when asynchronous serial clock + * is selected in SCI2 */ + __IOM uint32_t SCI3ASYNCSEL : 1; /*!< [30..30] Select clock frequency when asynchronous serial clock + * is selected in SCI3 */ + __IOM uint32_t SCI4ASYNCSEL : 1; /*!< [31..31] Select clock frequency when asynchronous serial clock + * is selected in SCI4 */ + } SCKCR_b; + }; + __IM uint32_t RESERVED[127]; + + union + { + __IOM uint32_t RSTSR0; /*!< (@ 0x00000200) Reset Status Register 0 */ + + struct + { + uint32_t : 1; + __IOM uint32_t TRF : 1; /*!< [1..1] RES# Pin Reset Detect Flag */ + __IOM uint32_t ERRF : 1; /*!< [2..2] Error Reset Detect Flag */ + __IOM uint32_t SWRSF : 1; /*!< [3..3] System Software Reset Detect Flag */ + __IOM uint32_t SWR0F : 1; /*!< [4..4] CPU0 Software Reset Detect Flag */ + uint32_t : 27; + } RSTSR0_b; + }; + __IM uint32_t RESERVED1[15]; + + union + { + __IOM uint32_t MRCTLA; /*!< (@ 0x00000240) Module Reset Control Register A */ + + struct + { + uint32_t : 4; + __IOM uint32_t MRCTLA04 : 1; /*!< [4..4] xSPI Unit 0 Reset Control */ + __IOM uint32_t MRCTLA05 : 1; /*!< [5..5] xSPI Unit 1 Reset Control */ + uint32_t : 26; + } MRCTLA_b; + }; + __IM uint32_t RESERVED2[3]; + + union + { + __IOM uint32_t MRCTLE; /*!< (@ 0x00000250) Module Reset Control Register E */ + + struct + { + __IOM uint32_t MRCTLE00 : 1; /*!< [0..0] GMAC (PCLKH clock domain) Reset Control */ + __IOM uint32_t MRCTLE01 : 1; /*!< [1..1] GMAC (PCLKM clock domain) Reset Control */ + __IOM uint32_t MRCTLE02 : 1; /*!< [2..2] ETHSW Reset Control */ + __IOM uint32_t MRCTLE03 : 1; /*!< [3..3] ESC (Bus clock domain) Reset Control */ + __IOM uint32_t MRCTLE04 : 1; /*!< [4..4] ESC (IP clock domain) Reset Control */ + __IOM uint32_t MRCTLE05 : 1; /*!< [5..5] Ethernet Subsystem Register Reset Control */ + __IOM uint32_t MRCTLE06 : 1; /*!< [6..6] MII Converter Reset Control */ + uint32_t : 25; + } MRCTLE_b; + }; + __IM uint32_t RESERVED3[43]; + + union + { + __IOM uint32_t MSTPCRA; /*!< (@ 0x00000300) Module Stop Control Register A */ + + struct + { + __IOM uint32_t MSTPCRA00 : 1; /*!< [0..0] BSC Module Stop */ + uint32_t : 3; + __IOM uint32_t MSTPCRA04 : 1; /*!< [4..4] xSPI Unit 0 Module Stop */ + __IOM uint32_t MSTPCRA05 : 1; /*!< [5..5] xSPI Unit 1 Module Stop */ + uint32_t : 2; + __IOM uint32_t MSTPCRA08 : 1; /*!< [8..8] SCI Unit 0 Module Stop */ + __IOM uint32_t MSTPCRA09 : 1; /*!< [9..9] SCI Unit 1 Module Stop */ + __IOM uint32_t MSTPCRA10 : 1; /*!< [10..10] SCI Unit 2 Module Stop */ + __IOM uint32_t MSTPCRA11 : 1; /*!< [11..11] SCI Unit 3 Module Stop */ + __IOM uint32_t MSTPCRA12 : 1; /*!< [12..12] SCI Unit 4 Module Stop */ + uint32_t : 19; + } MSTPCRA_b; + }; + + union + { + __IOM uint32_t MSTPCRB; /*!< (@ 0x00000304) Module Stop Control Register B */ + + struct + { + __IOM uint32_t MSTPCRB00 : 1; /*!< [0..0] IIC Unit 0 Module Stop */ + __IOM uint32_t MSTPCRB01 : 1; /*!< [1..1] IIC Unit 1 Module Stop */ + uint32_t : 2; + __IOM uint32_t MSTPCRB04 : 1; /*!< [4..4] SPI Unit 0 Module Stop */ + __IOM uint32_t MSTPCRB05 : 1; /*!< [5..5] SPI Unit 1 Module Stop */ + __IOM uint32_t MSTPCRB06 : 1; /*!< [6..6] SPI Unit 2 Module Stop */ + uint32_t : 25; + } MSTPCRB_b; + }; + + union + { + __IOM uint32_t MSTPCRC; /*!< (@ 0x00000308) Module Stop Control Register C */ + + struct + { + __IOM uint32_t MSTPCRC00 : 1; /*!< [0..0] MTU3 Module Stop */ + __IOM uint32_t MSTPCRC01 : 1; /*!< [1..1] GPT Unit 0 Module Stop */ + __IOM uint32_t MSTPCRC02 : 1; /*!< [2..2] GPT Unit 1 Module Stop */ + uint32_t : 2; + __IOM uint32_t MSTPCRC05 : 1; /*!< [5..5] TFU Module Stop */ + __IOM uint32_t MSTPCRC06 : 1; /*!< [6..6] ADC12 Unit 0 Module Stop */ + __IOM uint32_t MSTPCRC07 : 1; /*!< [7..7] ADC12 Unit 1 Module Stop */ + uint32_t : 24; + } MSTPCRC_b; + }; + + union + { + __IOM uint32_t MSTPCRD; /*!< (@ 0x0000030C) Module Stop Control Register D */ + + struct + { + __IOM uint32_t MSTPCRD00 : 1; /*!< [0..0] DSMIF Unit 0 Module Stop */ + __IOM uint32_t MSTPCRD01 : 1; /*!< [1..1] DSMIF Unit 1 Module Stop */ + __IOM uint32_t MSTPCRD02 : 1; /*!< [2..2] CMT Unit 0 Module Stop */ + __IOM uint32_t MSTPCRD03 : 1; /*!< [3..3] CMT Unit 1 Module Stop */ + __IOM uint32_t MSTPCRD04 : 1; /*!< [4..4] CMT Unit 2 Module Stop */ + __IOM uint32_t MSTPCRD05 : 1; /*!< [5..5] CMTW Unit 0 Module Stop */ + __IOM uint32_t MSTPCRD06 : 1; /*!< [6..6] CMTW Unit 1 Module Stop */ + __IOM uint32_t MSTPCRD07 : 1; /*!< [7..7] TSU Module Stop */ + __IOM uint32_t MSTPCRD08 : 1; /*!< [8..8] DOC Module Stop */ + __IOM uint32_t MSTPCRD09 : 1; /*!< [9..9] CRC Unit 0 Module Stop */ + __IOM uint32_t MSTPCRD10 : 1; /*!< [10..10] CANFD Module Stop */ + __IOM uint32_t MSTPCRD11 : 1; /*!< [11..11] CKIO Module Stop */ + uint32_t : 20; + } MSTPCRD_b; + }; + + union + { + __IOM uint32_t MSTPCRE; /*!< (@ 0x00000310) Module Stop Control Register E */ + + struct + { + __IOM uint32_t MSTPCRE00 : 1; /*!< [0..0] GMAC Module Stop */ + __IOM uint32_t MSTPCRE01 : 1; /*!< [1..1] ETHSW Module Stop */ + __IOM uint32_t MSTPCRE02 : 1; /*!< [2..2] ESC Module Stop */ + __IOM uint32_t MSTPCRE03 : 1; /*!< [3..3] Ethernet Subsystem Register Module Stop */ + uint32_t : 4; + __IOM uint32_t MSTPCRE08 : 1; /*!< [8..8] USB Module Stop */ + uint32_t : 23; + } MSTPCRE_b; + }; + __IM uint32_t RESERVED4[891]; + + union + { + __IM uint32_t MD_MON; /*!< (@ 0x00001100) Operating Mode Monitor Register */ + + struct + { + __IM uint32_t MDDMON : 1; /*!< [0..0] MDD status flag */ + uint32_t : 7; + __IM uint32_t MDP : 1; /*!< [8..8] Package type */ + uint32_t : 3; + __IM uint32_t MD0MON : 1; /*!< [12..12] MD0 pin status flag */ + __IM uint32_t MD1MON : 1; /*!< [13..13] MD1 pin status flag */ + __IM uint32_t MD2MON : 1; /*!< [14..14] MD2 pin status flag */ + uint32_t : 1; + __IM uint32_t MDV0MON : 1; /*!< [16..16] MDV0 status flag (ETH0 domain) */ + __IM uint32_t MDV1MON : 1; /*!< [17..17] MDV1 status flag (ETH1 domain) */ + __IM uint32_t MDV2MON : 1; /*!< [18..18] MDV2 status flag (ETH2 domain) */ + __IM uint32_t MDV3MON : 1; /*!< [19..19] MDV3 status flag (xSPI0 domain) */ + __IM uint32_t MDV4MON : 1; /*!< [20..20] MDV4 status flag (xSPI1 domain) */ + uint32_t : 11; + } MD_MON_b; + }; +} R_SYSC_NS_Type; /*!< Size = 4356 (0x1104) */ + +/* =========================================================================================================================== */ +/* ================ R_ELO ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Evnet Link Option Setting (R_ELO) + */ + +typedef struct /*!< (@ 0x80281200) R_ELO Structure */ +{ + union + { + __IOM uint32_t ELOPA; /*!< (@ 0x00000000) Event Link Option Setting Register A */ + + struct + { + __IOM uint32_t MTU0MD : 2; /*!< [1..0] MTU0 Operation Select */ + uint32_t : 4; + __IOM uint32_t MTU3MD : 2; /*!< [7..6] MTU3 Operation Select */ + uint32_t : 24; + } ELOPA_b; + }; + + union + { + __IOM uint32_t ELOPB; /*!< (@ 0x00000004) Event Link Option Setting Register B */ + + struct + { + __IOM uint32_t MTU4MD : 2; /*!< [1..0] MTU4 Operation Select */ + uint32_t : 30; + } ELOPB_b; + }; +} R_ELO_Type; /*!< Size = 8 (0x8) */ + +/* =========================================================================================================================== */ +/* ================ R_RWP_NS ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Register Write Protection for Non-safety Area (R_RWP_NS) + */ + +typedef struct /*!< (@ 0x80281A10) R_RWP_NS Structure */ +{ + union + { + __IOM uint32_t PRCRN; /*!< (@ 0x00000000) Non_Safety Area Protect Register */ + + struct + { + __IOM uint32_t PRC0 : 1; /*!< [0..0] Protect 0 */ + __IOM uint32_t PRC1 : 1; /*!< [1..1] Protect 1 */ + __IOM uint32_t PRC2 : 1; /*!< [2..2] Protect 2 */ + uint32_t : 5; + __OM uint32_t PRKEY : 8; /*!< [15..8] PRC Key Code */ + uint32_t : 16; + } PRCRN_b; + }; +} R_RWP_NS_Type; /*!< Size = 4 (0x4) */ + +/* =========================================================================================================================== */ +/* ================ R_RTC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Real Time Clock (R_RTC) + */ + +typedef struct /*!< (@ 0x81009000) R_RTC Structure */ +{ + union + { + __IOM uint32_t RTCA0CTL0; /*!< (@ 0x00000000) RTC Control Register 0 */ + + struct + { + uint32_t : 4; + __IOM uint32_t RTCA0SLSB : 1; /*!< [4..4] RTCA0SCMP enable/disable setting */ + __IOM uint32_t RTCA0AMPM : 1; /*!< [5..5] RTCA0HOUR, RTCA0ALH display format selection bit */ + __IM uint32_t RTCA0CEST : 1; /*!< [6..6] RTC Controller Enable Status */ + __IOM uint32_t RTCA0CE : 1; /*!< [7..7] RTC Controller Enable Bit */ + uint32_t : 24; + } RTCA0CTL0_b; + }; + + union + { + __IOM uint32_t RTCA0CTL1; /*!< (@ 0x00000004) RTC Control Register 1 */ + + struct + { + __IOM uint32_t RTCA0CT : 3; /*!< [2..0] Fixed interval interrupt (RTC_PRD) output setting bit */ + __IOM uint32_t RTCA01SE : 1; /*!< [3..3] 1 second interrupt (RTC_1S) output enable bit */ + __IOM uint32_t RTCA0ALME : 1; /*!< [4..4] Alarm interrupt (RTC_ALM) output enable bit */ + __IOM uint32_t RTCA01HZE : 1; /*!< [5..5] This bit enables/disables 1 Hz pulse output (RTCAT1HZ). */ + uint32_t : 26; + } RTCA0CTL1_b; + }; + + union + { + __IOM uint32_t RTCA0CTL2; /*!< (@ 0x00000008) RTC Control Register 2 */ + + struct + { + __IOM uint32_t RTCA0WAIT : 1; /*!< [0..0] RTC Controller Counter Wait Control */ + __IM uint32_t RTCA0WST : 1; /*!< [1..1] RTC Controller Counter Wait Status */ + __IOM uint32_t RTCA0RSUB : 1; /*!< [2..2] RTCA0SUBC Data Transfer Control */ + __IM uint32_t RTCA0RSST : 1; /*!< [3..3] RTCA0SRBU Transfer Status */ + __IM uint32_t RTCA0WSST : 1; /*!< [4..4] RTCA0SCMP Write Status */ + uint32_t : 27; + } RTCA0CTL2_b; + }; + + union + { + __IM uint32_t RTCA0SUBC; /*!< (@ 0x0000000C) RTC Sub Count Register */ + + struct + { + __IM uint32_t RTCA0SUBC : 22; /*!< [21..0] Register that counts the 1 second reference time */ + uint32_t : 10; + } RTCA0SUBC_b; + }; + + union + { + __IM uint32_t RTCA0SRBU; /*!< (@ 0x00000010) RTC Sub Count Register Read Buffer */ + + struct + { + __IM uint32_t RTCA0SRBU : 22; /*!< [21..0] Read buffer register of RTCA0SUBC */ + uint32_t : 10; + } RTCA0SRBU_b; + }; + + union + { + __IOM uint32_t RTCA0SEC; /*!< (@ 0x00000014) RTC Sec Count Buffer Register */ + + struct + { + __IOM uint32_t RTCA0SEC : 7; /*!< [6..0] Buffer register to read/write RTC Second Count register + * (RTCA0SECC). */ + uint32_t : 25; + } RTCA0SEC_b; + }; + + union + { + __IOM uint32_t RTCA0MIN; /*!< (@ 0x00000018) RTC Min Count Buffer Register */ + + struct + { + __IOM uint32_t RTCA0MIN : 7; /*!< [6..0] Buffer register to read/write RTC Minute Count register + * (RTCA0MINC). */ + uint32_t : 25; + } RTCA0MIN_b; + }; + + union + { + __IOM uint32_t RTCA0HOUR; /*!< (@ 0x0000001C) RTC Hour Count Buffer Register */ + + struct + { + __IOM uint32_t RTCA0HOUR : 6; /*!< [5..0] Buffer register to read/write RTC Hour Count register + * (RTCA0HOURC). */ + uint32_t : 26; + } RTCA0HOUR_b; + }; + + union + { + __IOM uint32_t RTCA0WEEK; /*!< (@ 0x00000020) RTC Week Count Buffer Register */ + + struct + { + __IOM uint32_t RTCA0WEEK : 3; /*!< [2..0] Buffer register to read/write RTC Week Count register + * (RTCA0WEEKC). */ + uint32_t : 29; + } RTCA0WEEK_b; + }; + + union + { + __IOM uint32_t RTCA0DAY; /*!< (@ 0x00000024) RTC Day Count Buffer Register */ + + struct + { + __IOM uint32_t RTCA0DAY : 6; /*!< [5..0] Buffer register to read/write RTC Day Count register + * (RTCA0DAYC). */ + uint32_t : 26; + } RTCA0DAY_b; + }; + + union + { + __IOM uint32_t RTCA0MONTH; /*!< (@ 0x00000028) RTC Month Count Buffer Register */ + + struct + { + __IOM uint32_t RTCA0MONTH : 5; /*!< [4..0] Buffer register to read/write RTC Month Count register + * (RTCA0MONC). */ + uint32_t : 27; + } RTCA0MONTH_b; + }; + + union + { + __IOM uint32_t RTCA0YEAR; /*!< (@ 0x0000002C) RTC Year Count Buffer Register */ + + struct + { + __IOM uint32_t RTCA0YEAR : 8; /*!< [7..0] Buffer register to read/write RTC Year Count register + * (RTCA0YEARC). */ + uint32_t : 24; + } RTCA0YEAR_b; + }; + + union + { + __IOM uint32_t RTCA0TIME; /*!< (@ 0x00000030) RTC Time Set Register */ + + struct + { + __IOM uint32_t RTCA0SEC : 8; /*!< [7..0] See RTCA0SEC register */ + __IOM uint32_t RTCA0MIN : 8; /*!< [15..8] See RTCA0MIN register */ + __IOM uint32_t RTCA0HOUR : 8; /*!< [23..16] See RTCA0HOUR register */ + uint32_t : 8; + } RTCA0TIME_b; + }; + + union + { + __IOM uint32_t RTCA0CAL; /*!< (@ 0x00000034) RTC Calendar Set Register */ + + struct + { + __IOM uint32_t RTCA0WEEK : 8; /*!< [7..0] See RTCA0WEEK register */ + __IOM uint32_t RTCA0DAY : 8; /*!< [15..8] See RTCA0DAY register */ + __IOM uint32_t RTCA0MONTH : 8; /*!< [23..16] See RTCA0MONTH register */ + __IOM uint32_t RTCA0YEAR : 8; /*!< [31..24] See RTCA0YEAR register */ + } RTCA0CAL_b; + }; + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t RTCA0SCMP; /*!< (@ 0x0000003C) RTC Sub Count Compare Register */ + + struct + { + __IOM uint32_t RTCA0SCMP : 22; /*!< [21..0] Register that sets the compare value of RTCA0SUBC (sub-counter). */ + uint32_t : 10; + } RTCA0SCMP_b; + }; + + union + { + __IOM uint32_t RTCA0ALM; /*!< (@ 0x00000040) RTC Alarm Min Set Register */ + + struct + { + __IOM uint32_t RTCA0ALM : 7; /*!< [6..0] RTCA0ALM is a register that performs the minute setting + * for the alarm interrupt. */ + uint32_t : 25; + } RTCA0ALM_b; + }; + + union + { + __IOM uint32_t RTCA0ALH; /*!< (@ 0x00000044) RTC Alarm Hour Set Register */ + + struct + { + __IOM uint32_t RTCA0ALH : 6; /*!< [5..0] RTCA0ALH is a register that performs the hour setting + * for the alarm interrupt. */ + uint32_t : 26; + } RTCA0ALH_b; + }; + + union + { + __IOM uint32_t RTCA0ALW; /*!< (@ 0x00000048) RTC Alarm Week Set Register */ + + struct + { + __IOM uint32_t RTCA0ALW0 : 1; /*!< [0..0] Alarm interrupt day of the week setting bit 0 */ + __IOM uint32_t RTCA0ALW1 : 1; /*!< [1..1] Alarm interrupt day of the week setting bit 1 */ + __IOM uint32_t RTCA0ALW2 : 1; /*!< [2..2] Alarm interrupt day of the week setting bit 2 */ + __IOM uint32_t RTCA0ALW3 : 1; /*!< [3..3] Alarm interrupt day of the week setting bit 3 */ + __IOM uint32_t RTCA0ALW4 : 1; /*!< [4..4] Alarm interrupt day of the week setting bit 4 */ + __IOM uint32_t RTCA0ALW5 : 1; /*!< [5..5] Alarm interrupt day of the week setting bit 5 */ + __IOM uint32_t RTCA0ALW6 : 1; /*!< [6..6] Alarm interrupt day of the week setting bit 6 */ + uint32_t : 25; + } RTCA0ALW_b; + }; + + union + { + __IM uint32_t RTCA0SECC; /*!< (@ 0x0000004C) RTC Second Count Register */ + + struct + { + __IM uint32_t RTCA0SECC : 7; /*!< [6..0] Counts up the seconds */ + uint32_t : 25; + } RTCA0SECC_b; + }; + + union + { + __IM uint32_t RTCA0MINC; /*!< (@ 0x00000050) RTC Minute Count Register */ + + struct + { + __IM uint32_t RTCA0MINC : 7; /*!< [6..0] Counts up the minutes */ + uint32_t : 25; + } RTCA0MINC_b; + }; + + union + { + __IM uint32_t RTCA0HOURC; /*!< (@ 0x00000054) RTC Hour Count Register */ + + struct + { + __IM uint32_t RTCA0HOURC : 6; /*!< [5..0] Counts up the hours */ + uint32_t : 26; + } RTCA0HOURC_b; + }; + + union + { + __IM uint32_t RTCA0WEEKC; /*!< (@ 0x00000058) RTC Week Count Register */ + + struct + { + __IM uint32_t RTCA0WEEKC : 3; /*!< [2..0] Counts up the weeks */ + uint32_t : 29; + } RTCA0WEEKC_b; + }; + + union + { + __IM uint32_t RTCA0DAYC; /*!< (@ 0x0000005C) RTC Day Count Register */ + + struct + { + __IM uint32_t RTCA0DAYC : 6; /*!< [5..0] Counts up the days */ + uint32_t : 26; + } RTCA0DAYC_b; + }; + + union + { + __IM uint32_t RTCA0MONC; /*!< (@ 0x00000060) RTC Month Count Register */ + + struct + { + __IM uint32_t RTCA0MONC : 5; /*!< [4..0] Counts up the months */ + uint32_t : 27; + } RTCA0MONC_b; + }; + + union + { + __IM uint32_t RTCA0YEARC; /*!< (@ 0x00000064) RTC Year Count Register */ + + struct + { + __IM uint32_t RTCA0YEARC : 8; /*!< [7..0] Counts up the years */ + uint32_t : 24; + } RTCA0YEARC_b; + }; + + union + { + __IM uint32_t RTCA0TIMEC; /*!< (@ 0x00000068) RTC Time Count Register */ + + struct + { + __IM uint32_t RTCA0SECC : 8; /*!< [7..0] See RTCA0SECC register */ + __IM uint32_t RTCA0MINC : 8; /*!< [15..8] See RTCA0MINC register */ + __IM uint32_t RTCA0HOURC : 8; /*!< [23..16] See RTCA0HOURC register */ + uint32_t : 8; + } RTCA0TIMEC_b; + }; + + union + { + __IM uint32_t RTCA0CALC; /*!< (@ 0x0000006C) RTC Calendar Count Register */ + + struct + { + __IM uint32_t RTCA0WEEKC : 8; /*!< [7..0] See RTCA0WEEKC register */ + __IM uint32_t RTCA0DAYC : 8; /*!< [15..8] See RTCA0DAYC register */ + __IM uint32_t RTCA0MONC : 8; /*!< [23..16] See RTCA0MONC register */ + __IM uint32_t RTCA0YEARC : 8; /*!< [31..24] See RTCA0YEARC register */ + } RTCA0CALC_b; + }; +} R_RTC_Type; /*!< Size = 112 (0x70) */ + +/* =========================================================================================================================== */ +/* ================ R_POEG2 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief GPT Port Output Enable 2 (R_POEG2) + */ + +typedef struct /*!< (@ 0x8100A000) R_POEG2 Structure */ +{ + union + { + __IOM uint32_t POEG2GA; /*!< (@ 0x00000000) POEG2 Group A Setting Register */ + + struct + { + __IOM uint32_t PIDF : 1; /*!< [0..0] Port Input Detection Flag */ + __IOM uint32_t IOCF : 1; /*!< [1..1] GPT Output Stop Request 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 */ + __IOM uint32_t IOCE : 1; /*!< [5..5] GPT Output Stop Request Enable */ + __IOM uint32_t OSTPE : 1; /*!< [6..6] Enable Stopping Output on Stopping of Oscillation */ + uint32_t : 9; + __IM uint32_t ST : 1; /*!< [16..16] GTETRGn Input Status Flag */ + uint32_t : 11; + __IOM uint32_t INV : 1; /*!< [28..28] GTETRGn Input Inverting */ + __IOM uint32_t NFEN : 1; /*!< [29..29] Noise filter Enable */ + __IOM uint32_t NFCS : 2; /*!< [31..30] Noise filter Clock Select */ + } POEG2GA_b; + }; + __IM uint32_t RESERVED[255]; + + union + { + __IOM uint32_t POEG2GB; /*!< (@ 0x00000400) POEG2 Group B Setting Register */ + + struct + { + __IOM uint32_t PIDF : 1; /*!< [0..0] Port Input Detection Flag */ + __IOM uint32_t IOCF : 1; /*!< [1..1] GPT Output Stop Request 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 */ + __IOM uint32_t IOCE : 1; /*!< [5..5] GPT Output Stop Request Enable */ + __IOM uint32_t OSTPE : 1; /*!< [6..6] Enable Stopping Output on Stopping of Oscillation */ + uint32_t : 9; + __IM uint32_t ST : 1; /*!< [16..16] GTETRGn Input Status Flag */ + uint32_t : 11; + __IOM uint32_t INV : 1; /*!< [28..28] GTETRGn Input Inverting */ + __IOM uint32_t NFEN : 1; /*!< [29..29] Noise filter Enable */ + __IOM uint32_t NFCS : 2; /*!< [31..30] Noise filter Clock Select */ + } POEG2GB_b; + }; + __IM uint32_t RESERVED1[255]; + + union + { + __IOM uint32_t POEG2GC; /*!< (@ 0x00000800) POEG2 Group C Setting Register */ + + struct + { + __IOM uint32_t PIDF : 1; /*!< [0..0] Port Input Detection Flag */ + __IOM uint32_t IOCF : 1; /*!< [1..1] GPT Output Stop Request 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 */ + __IOM uint32_t IOCE : 1; /*!< [5..5] GPT Output Stop Request Enable */ + __IOM uint32_t OSTPE : 1; /*!< [6..6] Enable Stopping Output on Stopping of Oscillation */ + uint32_t : 9; + __IM uint32_t ST : 1; /*!< [16..16] GTETRGn Input Status Flag */ + uint32_t : 11; + __IOM uint32_t INV : 1; /*!< [28..28] GTETRGn Input Inverting */ + __IOM uint32_t NFEN : 1; /*!< [29..29] Noise filter Enable */ + __IOM uint32_t NFCS : 2; /*!< [31..30] Noise filter Clock Select */ + } POEG2GC_b; + }; + __IM uint32_t RESERVED2[255]; + + union + { + __IOM uint32_t POEG2GD; /*!< (@ 0x00000C00) POEG2 Group D Setting Register */ + + struct + { + __IOM uint32_t PIDF : 1; /*!< [0..0] Port Input Detection Flag */ + __IOM uint32_t IOCF : 1; /*!< [1..1] GPT Output Stop Request 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 */ + __IOM uint32_t IOCE : 1; /*!< [5..5] GPT Output Stop Request Enable */ + __IOM uint32_t OSTPE : 1; /*!< [6..6] Enable Stopping Output on Stopping of Oscillation */ + uint32_t : 9; + __IM uint32_t ST : 1; /*!< [16..16] GTETRGn Input Status Flag */ + uint32_t : 11; + __IOM uint32_t INV : 1; /*!< [28..28] GTETRGn Input Inverting */ + __IOM uint32_t NFEN : 1; /*!< [29..29] Noise filter Enable */ + __IOM uint32_t NFCS : 2; /*!< [31..30] Noise filter Clock Select */ + } POEG2GD_b; + }; +} R_POEG2_Type; /*!< Size = 3076 (0xc04) */ + +/* =========================================================================================================================== */ +/* ================ R_OTP ================ */ +/* =========================================================================================================================== */ + +/** + * @brief One-Time Programmable Memory (R_OTP) + */ + +typedef struct /*!< (@ 0x81028000) R_OTP Structure */ +{ + union + { + __IOM uint32_t OTPPWR; /*!< (@ 0x00000000) OTP Power Control Register */ + + struct + { + __IOM uint32_t PWR : 1; /*!< [0..0] OTP power on/off setting */ + uint32_t : 3; + __IOM uint32_t ACCL : 1; /*!< [4..4] Selects OTP access I/F */ + uint32_t : 27; + } OTPPWR_b; + }; + + union + { + __IOM uint32_t OTPSTR; /*!< (@ 0x00000004) OTP Access Status Register */ + + struct + { + __IM uint32_t CMD_RDY : 1; /*!< [0..0] Indicates whether OTP controller is ready to receive + * command or not. */ + __IM uint32_t ERR_WR : 2; /*!< [2..1] OTP write status */ + __IM uint32_t ERR_WP : 1; /*!< [3..3] Write protection error */ + __IM uint32_t ERR_RP : 1; /*!< [4..4] Read protection error */ + uint32_t : 3; + __IOM uint32_t ERR_RDY_WR : 1; /*!< [8..8] OTP write command ready error */ + __IOM uint32_t ERR_RDY_RD : 1; /*!< [9..9] OTP read command ready error */ + uint32_t : 5; + __IM uint32_t CNT_ST_IDLE : 1; /*!< [15..15] Indicates status of OTP controller */ + uint32_t : 16; + } OTPSTR_b; + }; + + union + { + __IOM uint32_t OTPSTAWR; /*!< (@ 0x00000008) OTP Write Command Register */ + + struct + { + __IOM uint32_t STAWR : 1; /*!< [0..0] OTP write start */ + uint32_t : 31; + } OTPSTAWR_b; + }; + + union + { + __IOM uint32_t OTPADRWR; /*!< (@ 0x0000000C) OTP Write Address Register */ + + struct + { + __IOM uint32_t ADRWR : 9; /*!< [8..0] OTP write address */ + uint32_t : 23; + } OTPADRWR_b; + }; + + union + { + __IOM uint32_t OTPDATAWR; /*!< (@ 0x00000010) OTP Write Data Register */ + + struct + { + __IOM uint32_t DATAWR : 16; /*!< [15..0] OTP write data */ + uint32_t : 16; + } OTPDATAWR_b; + }; + + union + { + __IOM uint32_t OTPADRRD; /*!< (@ 0x00000014) OTP Read Address Register */ + + struct + { + __IOM uint32_t ADRRD : 9; /*!< [8..0] OTP read address */ + uint32_t : 23; + } OTPADRRD_b; + }; + + union + { + __IM uint32_t OTPDATARD; /*!< (@ 0x00000018) OTP Read Data Register */ + + struct + { + __IM uint32_t DATARD : 16; /*!< [15..0] OTP read data */ + uint32_t : 16; + } OTPDATARD_b; + }; +} R_OTP_Type; /*!< Size = 28 (0x1c) */ + +/* =========================================================================================================================== */ +/* ================ R_PTADR ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Port Address Selection (R_PTADR) + */ + +typedef struct /*!< (@ 0x81030C00) R_PTADR Structure */ +{ + union + { + __IOM uint8_t RSELP[25]; /*!< (@ 0x00000000) Port [0..24] Region Select Register */ + + struct + { + __IOM uint8_t RS0 : 1; /*!< [0..0] Pm_n pin I/O port registers Region Select (n = bit position) */ + __IOM uint8_t RS1 : 1; /*!< [1..1] Pm_n pin I/O port registers Region Select (n = bit position) */ + __IOM uint8_t RS2 : 1; /*!< [2..2] Pm_n pin I/O port registers Region Select (n = bit position) */ + __IOM uint8_t RS3 : 1; /*!< [3..3] Pm_n pin I/O port registers Region Select (n = bit position) */ + __IOM uint8_t RS4 : 1; /*!< [4..4] Pm_n pin I/O port registers Region Select (n = bit position) */ + __IOM uint8_t RS5 : 1; /*!< [5..5] Pm_n pin I/O port registers Region Select (n = bit position) */ + __IOM uint8_t RS6 : 1; /*!< [6..6] Pm_n pin I/O port registers Region Select (n = bit position) */ + __IOM uint8_t RS7 : 1; /*!< [7..7] Pm_n pin I/O port registers Region Select (n = bit position) */ + } RSELP_b[25]; + }; +} R_PTADR_Type; /*!< Size = 25 (0x19) */ + +/* =========================================================================================================================== */ +/* ================ R_SYSRAM0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief System SRAM 0 (R_SYSRAM0) + */ + +typedef struct /*!< (@ 0x81040000) R_SYSRAM0 Structure */ +{ + __IOM R_SYSRAM0_W_Type W[4]; /*!< (@ 0x00000000) System SRAM Wn Registers (n = 0 to 3) */ +} R_SYSRAM0_Type; /*!< Size = 256 (0x100) */ + +/* =========================================================================================================================== */ +/* ================ R_ICU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Interrupt Controller (R_ICU) + */ + +typedef struct /*!< (@ 0x81048000) R_ICU Structure */ +{ + union + { + __OM uint32_t S_SWINT; /*!< (@ 0x00000000) Software Interrupt Register for Safety Register */ + + struct + { + __OM uint32_t IC6 : 1; /*!< [0..0] Software Interrupt register */ + __OM uint32_t IC7 : 1; /*!< [1..1] Software Interrupt register */ + uint32_t : 30; + } S_SWINT_b; + }; + + union + { + __IOM uint32_t S_PORTNF_FLTSEL; /*!< (@ 0x00000004) Interrupt Noise Filter Enable Register for Safety + * Register */ + + struct + { + __IOM uint32_t FLT14 : 1; /*!< [0..0] Noise filter enable for IRQ14 */ + __IOM uint32_t FLT15 : 1; /*!< [1..1] Noise filter enable for IRQ15 */ + __IOM uint32_t FLTNMI : 1; /*!< [2..2] Noise filter enable for NMI */ + uint32_t : 29; + } S_PORTNF_FLTSEL_b; + }; + + union + { + __IOM uint32_t S_PORTNF_CLKSEL; /*!< (@ 0x00000008) Interrupt Noise Filter Setting Register for Safety + * Register */ + + struct + { + __IOM uint32_t CKSEL14 : 2; /*!< [1..0] Select noise filter sampling frequency dividend rate + * for IRQ14. */ + __IOM uint32_t CKSEL15 : 2; /*!< [3..2] Select noise filter sampling frequency dividend rate + * for IRQ15. */ + __IOM uint32_t CKSELNMI : 2; /*!< [5..4] Select noise filter sampling frequency dividend rate + * for NMI. */ + uint32_t : 26; + } S_PORTNF_CLKSEL_b; + }; + + union + { + __IOM uint32_t S_PORTNF_MD; /*!< (@ 0x0000000C) Interrupt Edge Detection Setting Register for + * Safety Register */ + + struct + { + __IOM uint32_t MD14 : 2; /*!< [1..0] Select detection mode for IRQ14 */ + __IOM uint32_t MD15 : 2; /*!< [3..2] Select detection mode for IRQ15 */ + __IOM uint32_t MDNMI : 2; /*!< [5..4] Select detection mode for NMI */ + uint32_t : 26; + } S_PORTNF_MD_b; + }; + __IM uint32_t RESERVED[20]; + + union + { + __IM uint32_t CPU0ERR_STAT; /*!< (@ 0x00000060) CPU0 Error Event Status Register */ + + struct + { + __IM uint32_t ER_ST0 : 1; /*!< [0..0] Indicate captured error status for CPU0_ERREVENT0 */ + __IM uint32_t ER_ST1 : 1; /*!< [1..1] Indicate captured error status for CPU0_ERREVENT1 */ + __IM uint32_t ER_ST2 : 1; /*!< [2..2] Indicate captured error status for CPU0_ERREVENT2 */ + __IM uint32_t ER_ST3 : 1; /*!< [3..3] Indicate captured error status for CPU0_ERREVENT3 */ + __IM uint32_t ER_ST4 : 1; /*!< [4..4] Indicate captured error status for CPU0_ERREVENT4 */ + __IM uint32_t ER_ST5 : 1; /*!< [5..5] Indicate captured error status for CPU0_ERREVENT5 */ + __IM uint32_t ER_ST6 : 1; /*!< [6..6] Indicate captured error status for CPU0_ERREVENT6 */ + __IM uint32_t ER_ST7 : 1; /*!< [7..7] Indicate captured error status for CPU0_ERREVENT7 */ + __IM uint32_t ER_ST8 : 1; /*!< [8..8] Indicate captured error status for CPU0_ERREVENT8 */ + __IM uint32_t ER_ST9 : 1; /*!< [9..9] Indicate captured error status for CPU0_ERREVENT9 */ + __IM uint32_t ER_ST10 : 1; /*!< [10..10] Indicate captured error status for CPU0_ERREVENT10 */ + __IM uint32_t ER_ST11 : 1; /*!< [11..11] Indicate captured error status for CPU0_ERREVENT11 */ + __IM uint32_t ER_ST12 : 1; /*!< [12..12] Indicate captured error status for CPU0_ERREVENT12 */ + __IM uint32_t ER_ST13 : 1; /*!< [13..13] Indicate captured error status for CPU0_ERREVENT13 */ + __IM uint32_t ER_ST14 : 1; /*!< [14..14] Indicate captured error status for CPU0_ERREVENT14 */ + __IM uint32_t ER_ST15 : 1; /*!< [15..15] Indicate captured error status for CPU0_ERREVENT15 */ + __IM uint32_t ER_ST16 : 1; /*!< [16..16] Indicate captured error status for CPU0_ERREVENT16 */ + __IM uint32_t ER_ST17 : 1; /*!< [17..17] Indicate captured error status for CPU0_ERREVENT17 */ + __IM uint32_t ER_ST18 : 1; /*!< [18..18] Indicate captured error status for CPU0_ERREVENT18 */ + __IM uint32_t ER_ST19 : 1; /*!< [19..19] Indicate captured error status for CPU0_ERREVENT19 */ + __IM uint32_t ER_ST20 : 1; /*!< [20..20] Indicate captured error status for CPU0_ERREVENT20 */ + __IM uint32_t ER_ST21 : 1; /*!< [21..21] Indicate captured error status for CPU0_ERREVENT21 */ + __IM uint32_t ER_ST22 : 1; /*!< [22..22] Indicate captured error status for CPU0_ERREVENT22 */ + __IM uint32_t ER_ST23 : 1; /*!< [23..23] Indicate captured error status for CPU0_ERREVENT23 */ + __IM uint32_t ER_ST24 : 1; /*!< [24..24] Indicate captured error status for CPU0_ERREVENT24 */ + __IM uint32_t ER_ST25 : 1; /*!< [25..25] Indicate captured error status for CPU0_ERREVENT25 */ + uint32_t : 6; + } CPU0ERR_STAT_b; + }; + __IM uint32_t RESERVED1; + + union + { + __IM uint32_t PERIERR_STAT0; /*!< (@ 0x00000068) Peripheral Error Event Status Register 0 */ + + struct + { + __IM uint32_t ER_ST0 : 1; /*!< [0..0] Indicate captured error status for CLMA3_INT */ + __IM uint32_t ER_ST1 : 1; /*!< [1..1] Indicate captured error status for CLMA0_INT */ + __IM uint32_t ER_ST2 : 1; /*!< [2..2] Indicate captured error status for CLMA1_INT */ + __IM uint32_t ER_ST3 : 1; /*!< [3..3] Indicate captured error status for CLMA2_INT */ + __IM uint32_t ER_ST4 : 1; /*!< [4..4] Indicate captured error status for BSC_WTO */ + __IM uint32_t ER_ST5 : 1; /*!< [5..5] Indicate captured error status for DMAC0_ERR */ + __IM uint32_t ER_ST6 : 1; /*!< [6..6] Indicate captured error status for DMAC1_ERR */ + __IM uint32_t ER_ST7 : 1; /*!< [7..7] Indicate captured error status for WDT_NMIUNDF0 */ + uint32_t : 1; + __IM uint32_t ER_ST9 : 1; /*!< [9..9] Indicate captured error status for USB_FDMAERR */ + __IM uint32_t ER_ST10 : 1; /*!< [10..10] Indicate captured error status for DSMIF0_LTCSE */ + __IM uint32_t ER_ST11 : 1; /*!< [11..11] Indicate captured error status for DSMIF0_UTCSE */ + __IM uint32_t ER_ST12 : 1; /*!< [12..12] Indicate captured error status for DSMIF0_LTODE0 */ + __IM uint32_t ER_ST13 : 1; /*!< [13..13] Indicate captured error status for DSMIF0_LTODE1 */ + __IM uint32_t ER_ST14 : 1; /*!< [14..14] Indicate captured error status for DSMIF0_LTODE2 */ + __IM uint32_t ER_ST15 : 1; /*!< [15..15] Indicate captured error status for DSMIF0_UTODE0 */ + __IM uint32_t ER_ST16 : 1; /*!< [16..16] Indicate captured error status for DSMIF0_UTODE1 */ + __IM uint32_t ER_ST17 : 1; /*!< [17..17] Indicate captured error status for DSMIF0_UTODE2 */ + __IM uint32_t ER_ST18 : 1; /*!< [18..18] Indicate captured error status for DSMIF0_SCDE0 */ + __IM uint32_t ER_ST19 : 1; /*!< [19..19] Indicate captured error status for DSMIF0_SCDE1 */ + __IM uint32_t ER_ST20 : 1; /*!< [20..20] Indicate captured error status for DSMIF0_SCDE2 */ + __IM uint32_t ER_ST21 : 1; /*!< [21..21] Indicate captured error status for DSMIF1_LTCSE */ + __IM uint32_t ER_ST22 : 1; /*!< [22..22] Indicate captured error status for DSMIF1_UTCSE */ + __IM uint32_t ER_ST23 : 1; /*!< [23..23] Indicate captured error status for DSMIF1_LTODE0 */ + __IM uint32_t ER_ST24 : 1; /*!< [24..24] Indicate captured error status for DSMIF1_LTODE1 */ + __IM uint32_t ER_ST25 : 1; /*!< [25..25] Indicate captured error status for DSMIF1_LTODE2 */ + __IM uint32_t ER_ST26 : 1; /*!< [26..26] Indicate captured error status for DSMIF1_UTODE0 */ + __IM uint32_t ER_ST27 : 1; /*!< [27..27] Indicate captured error status for DSMIF1_UTODE1 */ + __IM uint32_t ER_ST28 : 1; /*!< [28..28] Indicate captured error status for DSMIF1_UTODE2 */ + __IM uint32_t ER_ST29 : 1; /*!< [29..29] Indicate captured error status for DSMIF1_SCDE0 */ + __IM uint32_t ER_ST30 : 1; /*!< [30..30] Indicate captured error status for DSMIF1_SCDE1 */ + __IM uint32_t ER_ST31 : 1; /*!< [31..31] Indicate captured error status for DSMIF1_SCDE2 */ + } PERIERR_STAT0_b; + }; + + union + { + __IM uint32_t PERIERR_STAT1; /*!< (@ 0x0000006C) Peripheral Error Event Status Register 1 */ + + struct + { + __IM uint32_t ER_ST0 : 1; /*!< [0..0] Indicate captured error status for DOC_DOPCI */ + __IM uint32_t ER_ST1 : 1; /*!< [1..1] Indicate captured error status for SRAM0_IE1 */ + __IM uint32_t ER_ST2 : 1; /*!< [2..2] Indicate captured error status for SRAM0_IE2 */ + __IM uint32_t ER_ST3 : 1; /*!< [3..3] Indicate captured error status for SRAM0_OVF */ + __IM uint32_t ER_ST4 : 1; /*!< [4..4] Indicate captured error status for SRAM1_IE1 */ + __IM uint32_t ER_ST5 : 1; /*!< [5..5] Indicate captured error status for SRAM1_IE2 */ + __IM uint32_t ER_ST6 : 1; /*!< [6..6] Indicate captured error status for SRAM1_OVF */ + __IM uint32_t ER_ST7 : 1; /*!< [7..7] Indicate captured error status for SRAM2_IE1 */ + __IM uint32_t ER_ST8 : 1; /*!< [8..8] Indicate captured error status for SRAM2_IE2 */ + __IM uint32_t ER_ST9 : 1; /*!< [9..9] Indicate captured error status for SRAM2_OVF */ + uint32_t : 3; + __IM uint32_t ER_ST13 : 1; /*!< [13..13] Indicate captured error status for BUS_ERRINT */ + uint32_t : 1; + __IM uint32_t ER_ST15 : 1; /*!< [15..15] Indicate captured error status for MPU_SHOSTIF */ + __IM uint32_t ER_ST16 : 1; /*!< [16..16] Indicate captured error status for MPU_PHOSTIF */ + __IM uint32_t ER_ST17 : 1; /*!< [17..17] Indicate captured error status for MPU_DMACR0 */ + __IM uint32_t ER_ST18 : 1; /*!< [18..18] Indicate captured error status for MPU_DMACW0 */ + __IM uint32_t ER_ST19 : 1; /*!< [19..19] Indicate captured error status for MPU_DMACR1 */ + __IM uint32_t ER_ST20 : 1; /*!< [20..20] Indicate captured error status for MPU_DMACW1 */ + __IM uint32_t ER_ST21 : 1; /*!< [21..21] Indicate captured error status for MPU_GMACR */ + __IM uint32_t ER_ST22 : 1; /*!< [22..22] Indicate captured error status for MPU_GMACW */ + __IM uint32_t ER_ST23 : 1; /*!< [23..23] Indicate captured error status for MPU_USBH */ + __IM uint32_t ER_ST24 : 1; /*!< [24..24] Indicate captured error status for MPU_USBF */ + uint32_t : 2; + __IM uint32_t ER_ST27 : 1; /*!< [27..27] Indicate captured error status for MPU_DBGR */ + __IM uint32_t ER_ST28 : 1; /*!< [28..28] Indicate captured error status for MPU_DBGW */ + uint32_t : 3; + } PERIERR_STAT1_b; + }; + + union + { + __OM uint32_t CPU0ERR_CLR; /*!< (@ 0x00000070) CPU0 Error Event Status Clear Register */ + + struct + { + __OM uint32_t ER_CL0 : 1; /*!< [0..0] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL1 : 1; /*!< [1..1] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL2 : 1; /*!< [2..2] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL3 : 1; /*!< [3..3] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL4 : 1; /*!< [4..4] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL5 : 1; /*!< [5..5] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL6 : 1; /*!< [6..6] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL7 : 1; /*!< [7..7] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL8 : 1; /*!< [8..8] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL9 : 1; /*!< [9..9] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL10 : 1; /*!< [10..10] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL11 : 1; /*!< [11..11] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL12 : 1; /*!< [12..12] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL13 : 1; /*!< [13..13] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL14 : 1; /*!< [14..14] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL15 : 1; /*!< [15..15] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL16 : 1; /*!< [16..16] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL17 : 1; /*!< [17..17] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL18 : 1; /*!< [18..18] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL19 : 1; /*!< [19..19] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL20 : 1; /*!< [20..20] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL21 : 1; /*!< [21..21] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL22 : 1; /*!< [22..22] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL23 : 1; /*!< [23..23] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL24 : 1; /*!< [24..24] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + __OM uint32_t ER_CL25 : 1; /*!< [25..25] Clear captured error status for CPU0ERR_STAT register + * by writing 1 */ + uint32_t : 6; + } CPU0ERR_CLR_b; + }; + __IM uint32_t RESERVED2; + + union + { + __OM uint32_t PERIERR_CLR0; /*!< (@ 0x00000078) Peripheral Error Event Status Clear Register + * 0 */ + + struct + { + __OM uint32_t ER_CL0 : 1; /*!< [0..0] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL1 : 1; /*!< [1..1] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL2 : 1; /*!< [2..2] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL3 : 1; /*!< [3..3] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL4 : 1; /*!< [4..4] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL5 : 1; /*!< [5..5] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL6 : 1; /*!< [6..6] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL7 : 1; /*!< [7..7] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + uint32_t : 1; + __OM uint32_t ER_CL9 : 1; /*!< [9..9] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL10 : 1; /*!< [10..10] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL11 : 1; /*!< [11..11] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL12 : 1; /*!< [12..12] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL13 : 1; /*!< [13..13] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL14 : 1; /*!< [14..14] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL15 : 1; /*!< [15..15] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL16 : 1; /*!< [16..16] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL17 : 1; /*!< [17..17] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL18 : 1; /*!< [18..18] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL19 : 1; /*!< [19..19] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL20 : 1; /*!< [20..20] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL21 : 1; /*!< [21..21] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL22 : 1; /*!< [22..22] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL23 : 1; /*!< [23..23] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL24 : 1; /*!< [24..24] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL25 : 1; /*!< [25..25] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL26 : 1; /*!< [26..26] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL27 : 1; /*!< [27..27] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL28 : 1; /*!< [28..28] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL29 : 1; /*!< [29..29] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL30 : 1; /*!< [30..30] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + __OM uint32_t ER_CL31 : 1; /*!< [31..31] Clear captured error status for PERIERR_STAT0 register + * by writing 1 */ + } PERIERR_CLR0_b; + }; + + union + { + __OM uint32_t PERIERR_CLR1; /*!< (@ 0x0000007C) Peripheral Error Event Status Clear Register + * 1 */ + + struct + { + __OM uint32_t ER_CL0 : 1; /*!< [0..0] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL1 : 1; /*!< [1..1] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL2 : 1; /*!< [2..2] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL3 : 1; /*!< [3..3] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL4 : 1; /*!< [4..4] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL5 : 1; /*!< [5..5] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL6 : 1; /*!< [6..6] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL7 : 1; /*!< [7..7] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL8 : 1; /*!< [8..8] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL9 : 1; /*!< [9..9] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + uint32_t : 3; + __OM uint32_t ER_CL13 : 1; /*!< [13..13] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + uint32_t : 1; + __OM uint32_t ER_CL15 : 1; /*!< [15..15] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL16 : 1; /*!< [16..16] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL17 : 1; /*!< [17..17] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL18 : 1; /*!< [18..18] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL19 : 1; /*!< [19..19] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL20 : 1; /*!< [20..20] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL21 : 1; /*!< [21..21] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL22 : 1; /*!< [22..22] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL23 : 1; /*!< [23..23] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL24 : 1; /*!< [24..24] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + uint32_t : 2; + __OM uint32_t ER_CL27 : 1; /*!< [27..27] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + __OM uint32_t ER_CL28 : 1; /*!< [28..28] Clear captured error status for PERIERR_STAT1 register + * by writing 1 */ + uint32_t : 3; + } PERIERR_CLR1_b; + }; + + union + { + __IOM uint32_t CPU0ERR_RSTMSK; /*!< (@ 0x00000080) CPU0 Error Event Reset Mask Register */ + + struct + { + __IOM uint32_t RS_MK0 : 1; /*!< [0..0] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK1 : 1; /*!< [1..1] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK2 : 1; /*!< [2..2] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK3 : 1; /*!< [3..3] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK4 : 1; /*!< [4..4] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK5 : 1; /*!< [5..5] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK6 : 1; /*!< [6..6] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK7 : 1; /*!< [7..7] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK8 : 1; /*!< [8..8] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK9 : 1; /*!< [9..9] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK10 : 1; /*!< [10..10] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK11 : 1; /*!< [11..11] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK12 : 1; /*!< [12..12] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK13 : 1; /*!< [13..13] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK14 : 1; /*!< [14..14] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK15 : 1; /*!< [15..15] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK16 : 1; /*!< [16..16] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK17 : 1; /*!< [17..17] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK18 : 1; /*!< [18..18] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK19 : 1; /*!< [19..19] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK20 : 1; /*!< [20..20] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK21 : 1; /*!< [21..21] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK22 : 1; /*!< [22..22] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK23 : 1; /*!< [23..23] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK24 : 1; /*!< [24..24] Mask captured error status as a reset event for CPU0ERR_STAT */ + __IOM uint32_t RS_MK25 : 1; /*!< [25..25] Mask captured error status as a reset event for CPU0ERR_STAT */ + uint32_t : 6; + } CPU0ERR_RSTMSK_b; + }; + __IM uint32_t RESERVED3; + + union + { + __IOM uint32_t PERIERR_RSTMSK0; /*!< (@ 0x00000088) Peripheral Error Event Reset Mask Register 0 */ + + struct + { + __IOM uint32_t RS_MK0 : 1; /*!< [0..0] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK1 : 1; /*!< [1..1] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK2 : 1; /*!< [2..2] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK3 : 1; /*!< [3..3] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK4 : 1; /*!< [4..4] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK5 : 1; /*!< [5..5] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK6 : 1; /*!< [6..6] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK7 : 1; /*!< [7..7] Mask captured error status as a reset event for PERIERR_STAT0 */ + uint32_t : 1; + __IOM uint32_t RS_MK9 : 1; /*!< [9..9] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK10 : 1; /*!< [10..10] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK11 : 1; /*!< [11..11] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK12 : 1; /*!< [12..12] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK13 : 1; /*!< [13..13] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK14 : 1; /*!< [14..14] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK15 : 1; /*!< [15..15] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK16 : 1; /*!< [16..16] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK17 : 1; /*!< [17..17] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK18 : 1; /*!< [18..18] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK19 : 1; /*!< [19..19] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK20 : 1; /*!< [20..20] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK21 : 1; /*!< [21..21] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK22 : 1; /*!< [22..22] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK23 : 1; /*!< [23..23] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK24 : 1; /*!< [24..24] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK25 : 1; /*!< [25..25] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK26 : 1; /*!< [26..26] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK27 : 1; /*!< [27..27] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK28 : 1; /*!< [28..28] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK29 : 1; /*!< [29..29] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK30 : 1; /*!< [30..30] Mask captured error status as a reset event for PERIERR_STAT0 */ + __IOM uint32_t RS_MK31 : 1; /*!< [31..31] Mask captured error status as a reset event for PERIERR_STAT0 */ + } PERIERR_RSTMSK0_b; + }; + + union + { + __IOM uint32_t PERIERR_RSTMSK1; /*!< (@ 0x0000008C) Peripheral Error Event Reset Mask Register 1 */ + + struct + { + __IOM uint32_t RS_MK0 : 1; /*!< [0..0] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK1 : 1; /*!< [1..1] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK2 : 1; /*!< [2..2] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK3 : 1; /*!< [3..3] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK4 : 1; /*!< [4..4] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK5 : 1; /*!< [5..5] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK6 : 1; /*!< [6..6] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK7 : 1; /*!< [7..7] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK8 : 1; /*!< [8..8] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK9 : 1; /*!< [9..9] Mask captured error status as a reset event for PERIERR_STAT1 */ + uint32_t : 3; + __IOM uint32_t RS_MK13 : 1; /*!< [13..13] Mask captured error status as a reset event for PERIERR_STAT1 */ + uint32_t : 1; + __IOM uint32_t RS_MK15 : 1; /*!< [15..15] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK16 : 1; /*!< [16..16] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK17 : 1; /*!< [17..17] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK18 : 1; /*!< [18..18] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK19 : 1; /*!< [19..19] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK20 : 1; /*!< [20..20] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK21 : 1; /*!< [21..21] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK22 : 1; /*!< [22..22] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK23 : 1; /*!< [23..23] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK24 : 1; /*!< [24..24] Mask captured error status as a reset event for PERIERR_STAT1 */ + uint32_t : 2; + __IOM uint32_t RS_MK27 : 1; /*!< [27..27] Mask captured error status as a reset event for PERIERR_STAT1 */ + __IOM uint32_t RS_MK28 : 1; /*!< [28..28] Mask captured error status as a reset event for PERIERR_STAT1 */ + uint32_t : 3; + } PERIERR_RSTMSK1_b; + }; + + union + { + __IOM uint32_t CPU0ERR_E0MSK; /*!< (@ 0x00000090) CPU0 E0 Error Event Mask Register */ + + struct + { + __IOM uint32_t E0_MK0 : 1; /*!< [0..0] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK1 : 1; /*!< [1..1] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK2 : 1; /*!< [2..2] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK3 : 1; /*!< [3..3] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK4 : 1; /*!< [4..4] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK5 : 1; /*!< [5..5] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK6 : 1; /*!< [6..6] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK7 : 1; /*!< [7..7] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK8 : 1; /*!< [8..8] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK9 : 1; /*!< [9..9] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK10 : 1; /*!< [10..10] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK11 : 1; /*!< [11..11] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK12 : 1; /*!< [12..12] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK13 : 1; /*!< [13..13] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK14 : 1; /*!< [14..14] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK15 : 1; /*!< [15..15] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK16 : 1; /*!< [16..16] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK17 : 1; /*!< [17..17] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK18 : 1; /*!< [18..18] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK19 : 1; /*!< [19..19] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK20 : 1; /*!< [20..20] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK21 : 1; /*!< [21..21] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK22 : 1; /*!< [22..22] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK23 : 1; /*!< [23..23] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK24 : 1; /*!< [24..24] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + __IOM uint32_t E0_MK25 : 1; /*!< [25..25] Mask captured error status as an CPU0_ERR0 event for + * CPU0ERR_STAT */ + uint32_t : 6; + } CPU0ERR_E0MSK_b; + }; + __IM uint32_t RESERVED4; + + union + { + __IOM uint32_t PERIERR_E0MSK0; /*!< (@ 0x00000098) Peripheral E0 Error Event Mask Register 0 */ + + struct + { + __IOM uint32_t E0_MK0 : 1; /*!< [0..0] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK1 : 1; /*!< [1..1] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK2 : 1; /*!< [2..2] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK3 : 1; /*!< [3..3] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK4 : 1; /*!< [4..4] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK5 : 1; /*!< [5..5] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK6 : 1; /*!< [6..6] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK7 : 1; /*!< [7..7] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + uint32_t : 1; + __IOM uint32_t E0_MK9 : 1; /*!< [9..9] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK10 : 1; /*!< [10..10] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK11 : 1; /*!< [11..11] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK12 : 1; /*!< [12..12] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK13 : 1; /*!< [13..13] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK14 : 1; /*!< [14..14] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK15 : 1; /*!< [15..15] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK16 : 1; /*!< [16..16] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK17 : 1; /*!< [17..17] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK18 : 1; /*!< [18..18] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK19 : 1; /*!< [19..19] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK20 : 1; /*!< [20..20] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK21 : 1; /*!< [21..21] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK22 : 1; /*!< [22..22] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK23 : 1; /*!< [23..23] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK24 : 1; /*!< [24..24] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK25 : 1; /*!< [25..25] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK26 : 1; /*!< [26..26] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK27 : 1; /*!< [27..27] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK28 : 1; /*!< [28..28] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK29 : 1; /*!< [29..29] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK30 : 1; /*!< [30..30] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + __IOM uint32_t E0_MK31 : 1; /*!< [31..31] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT0 */ + } PERIERR_E0MSK0_b; + }; + + union + { + __IOM uint32_t PERIERR_E0MSK1; /*!< (@ 0x0000009C) Peripheral E0 Error Event Mask Register 1 */ + + struct + { + __IOM uint32_t E0_MK0 : 1; /*!< [0..0] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK1 : 1; /*!< [1..1] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK2 : 1; /*!< [2..2] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK3 : 1; /*!< [3..3] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK4 : 1; /*!< [4..4] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK5 : 1; /*!< [5..5] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK6 : 1; /*!< [6..6] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK7 : 1; /*!< [7..7] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK8 : 1; /*!< [8..8] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK9 : 1; /*!< [9..9] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + uint32_t : 3; + __IOM uint32_t E0_MK13 : 1; /*!< [13..13] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + uint32_t : 1; + __IOM uint32_t E0_MK15 : 1; /*!< [15..15] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK16 : 1; /*!< [16..16] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK17 : 1; /*!< [17..17] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK18 : 1; /*!< [18..18] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK19 : 1; /*!< [19..19] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK20 : 1; /*!< [20..20] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK21 : 1; /*!< [21..21] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK22 : 1; /*!< [22..22] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK23 : 1; /*!< [23..23] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK24 : 1; /*!< [24..24] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + uint32_t : 2; + __IOM uint32_t E0_MK27 : 1; /*!< [27..27] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + __IOM uint32_t E0_MK28 : 1; /*!< [28..28] Mask captured error status as an PERI_ERR0 event for + * PERIERR_STAT1 */ + uint32_t : 3; + } PERIERR_E0MSK1_b; + }; + __IM uint32_t RESERVED5[24]; + + union + { + __IOM uint32_t CPU0ERR_E1MSK; /*!< (@ 0x00000100) CPU0 E1 Error Event Mask Register */ + + struct + { + __IOM uint32_t E1_MK0 : 1; /*!< [0..0] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK1 : 1; /*!< [1..1] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK2 : 1; /*!< [2..2] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK3 : 1; /*!< [3..3] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK4 : 1; /*!< [4..4] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK5 : 1; /*!< [5..5] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK6 : 1; /*!< [6..6] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK7 : 1; /*!< [7..7] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK8 : 1; /*!< [8..8] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK9 : 1; /*!< [9..9] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK10 : 1; /*!< [10..10] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK11 : 1; /*!< [11..11] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK12 : 1; /*!< [12..12] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK13 : 1; /*!< [13..13] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK14 : 1; /*!< [14..14] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK15 : 1; /*!< [15..15] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK16 : 1; /*!< [16..16] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK17 : 1; /*!< [17..17] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK18 : 1; /*!< [18..18] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK19 : 1; /*!< [19..19] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK20 : 1; /*!< [20..20] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK21 : 1; /*!< [21..21] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK22 : 1; /*!< [22..22] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK23 : 1; /*!< [23..23] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK24 : 1; /*!< [24..24] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + __IOM uint32_t E1_MK25 : 1; /*!< [25..25] Mask captured error status as an CPU0_ERR1 event for + * CPU0ERR_STAT */ + uint32_t : 6; + } CPU0ERR_E1MSK_b; + }; + __IM uint32_t RESERVED6; + + union + { + __IOM uint32_t PERIERR_E1MSK0; /*!< (@ 0x00000108) Peripheral E1 Error Event Mask Register 0 */ + + struct + { + __IOM uint32_t E1_MK0 : 1; /*!< [0..0] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK1 : 1; /*!< [1..1] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK2 : 1; /*!< [2..2] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK3 : 1; /*!< [3..3] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK4 : 1; /*!< [4..4] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK5 : 1; /*!< [5..5] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK6 : 1; /*!< [6..6] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK7 : 1; /*!< [7..7] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + uint32_t : 1; + __IOM uint32_t E1_MK9 : 1; /*!< [9..9] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK10 : 1; /*!< [10..10] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK11 : 1; /*!< [11..11] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK12 : 1; /*!< [12..12] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK13 : 1; /*!< [13..13] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK14 : 1; /*!< [14..14] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK15 : 1; /*!< [15..15] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK16 : 1; /*!< [16..16] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK17 : 1; /*!< [17..17] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK18 : 1; /*!< [18..18] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK19 : 1; /*!< [19..19] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK20 : 1; /*!< [20..20] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK21 : 1; /*!< [21..21] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK22 : 1; /*!< [22..22] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK23 : 1; /*!< [23..23] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK24 : 1; /*!< [24..24] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK25 : 1; /*!< [25..25] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK26 : 1; /*!< [26..26] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK27 : 1; /*!< [27..27] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK28 : 1; /*!< [28..28] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK29 : 1; /*!< [29..29] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK30 : 1; /*!< [30..30] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + __IOM uint32_t E1_MK31 : 1; /*!< [31..31] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT0 */ + } PERIERR_E1MSK0_b; + }; + + union + { + __IOM uint32_t PERIERR_E1MSK1; /*!< (@ 0x0000010C) Peripheral E1 Error Event Mask Register 1 */ + + struct + { + __IOM uint32_t E1_MK0 : 1; /*!< [0..0] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK1 : 1; /*!< [1..1] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK2 : 1; /*!< [2..2] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK3 : 1; /*!< [3..3] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK4 : 1; /*!< [4..4] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK5 : 1; /*!< [5..5] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK6 : 1; /*!< [6..6] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK7 : 1; /*!< [7..7] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK8 : 1; /*!< [8..8] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK9 : 1; /*!< [9..9] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + uint32_t : 3; + __IOM uint32_t E1_MK13 : 1; /*!< [13..13] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + uint32_t : 1; + __IOM uint32_t E1_MK15 : 1; /*!< [15..15] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK16 : 1; /*!< [16..16] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK17 : 1; /*!< [17..17] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK18 : 1; /*!< [18..18] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK19 : 1; /*!< [19..19] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK20 : 1; /*!< [20..20] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK21 : 1; /*!< [21..21] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK22 : 1; /*!< [22..22] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK23 : 1; /*!< [23..23] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK24 : 1; /*!< [24..24] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + uint32_t : 2; + __IOM uint32_t E1_MK27 : 1; /*!< [27..27] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + __IOM uint32_t E1_MK28 : 1; /*!< [28..28] Mask captured error status as an PERI_ERR1 event for + * PERIERR_STAT1 */ + uint32_t : 3; + } PERIERR_E1MSK1_b; + }; +} R_ICU_Type; /*!< Size = 272 (0x110) */ + +/* =========================================================================================================================== */ +/* ================ R_SYSC_S ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Register Write Protection for Safety Area (R_SYSC_S) + */ + +typedef struct /*!< (@ 0x81280000) R_SYSC_S Structure */ +{ + __IM uint32_t RESERVED; + + union + { + __IOM uint32_t SCKCR2; /*!< (@ 0x00000004) System Clock Control Register 2 */ + + struct + { + __IOM uint32_t FSELCPU0 : 1; /*!< [0..0] Set the frequency of the clock provided to Coretex-R52 + * CPU0 in combination with bit 5 (DIVSELSUB). The combination + * is shown below. */ + uint32_t : 4; + __IOM uint32_t DIVSELSUB : 1; /*!< [5..5] Select the base clock frequency for peripheral module. */ + uint32_t : 18; + __IOM uint32_t SPI3ASYNCSEL : 1; /*!< [24..24] Select clock frequency when asynchronous serial clock + * is selected in SPI3 */ + __IOM uint32_t SCI5ASYNCSEL : 1; /*!< [25..25] Select clock frequency when asynchronous serial clock + * is selected in SCI5 */ + uint32_t : 6; + } SCKCR2_b; + }; + __IM uint32_t RESERVED1[6]; + + union + { + __IM uint32_t PLL0MON; /*!< (@ 0x00000020) PLL0 Monitor Register */ + + struct + { + __IM uint32_t PLL0MON : 1; /*!< [0..0] PLL0 Lock State Monitor */ + uint32_t : 31; + } PLL0MON_b; + }; + __IM uint32_t RESERVED2[7]; + + union + { + __IM uint32_t PLL1MON; /*!< (@ 0x00000040) PLL1 Monitor Register */ + + struct + { + __IM uint32_t PLL1MON : 1; /*!< [0..0] PLL1 Lock State Monitor */ + uint32_t : 31; + } PLL1MON_b; + }; + __IM uint32_t RESERVED3[3]; + + union + { + __IOM uint32_t PLL1EN; /*!< (@ 0x00000050) PLL1 Enable Register */ + + struct + { + __IOM uint32_t PLL1EN : 1; /*!< [0..0] PLL1 Enable */ + uint32_t : 31; + } PLL1EN_b; + }; + __IM uint32_t RESERVED4[7]; + + union + { + __IOM uint32_t LOCOCR; /*!< (@ 0x00000070) Low-Speed On-Chip Oscillator Control Register */ + + struct + { + __IOM uint32_t LCSTP : 1; /*!< [0..0] LOCO Stop */ + uint32_t : 31; + } LOCOCR_b; + }; + __IM uint32_t RESERVED5[3]; + + union + { + __IOM uint32_t HIZCTRLEN; /*!< (@ 0x00000080) High-Impedance Control Enable Register */ + + struct + { + __IOM uint32_t CLMA3MASK : 1; /*!< [0..0] CLMA3 error mask to POE3 and POEG */ + __IOM uint32_t CLMA0MASK : 1; /*!< [1..1] CLMA0 error mask to POE3 and POEG */ + __IOM uint32_t CLMA1MASK : 1; /*!< [2..2] CLMA1 error mask to POE3 and POEG */ + uint32_t : 29; + } HIZCTRLEN_b; + }; + __IM uint32_t RESERVED6[99]; + + union + { + __OM uint32_t SWRSYS; /*!< (@ 0x00000210) System Software Reset Register */ + + struct + { + __OM uint32_t SWR : 32; /*!< [31..0] System Software Reset */ + } SWRSYS_b; + }; + __IM uint32_t RESERVED7[3]; + + union + { + __IOM uint32_t SWRCPU0; /*!< (@ 0x00000220) CPU0 Software Reset Register */ + + struct + { + __IOM uint32_t SWR : 32; /*!< [31..0] CPU0 Software Reset */ + } SWRCPU0_b; + }; + __IM uint32_t RESERVED8[15]; + + union + { + __IOM uint32_t MRCTLI; /*!< (@ 0x00000260) Module Reset Control Register I */ + + struct + { + __IOM uint32_t MRCTLI00 : 1; /*!< [0..0] PHOSTIF Reset Control */ + __IOM uint32_t MRCTLI01 : 1; /*!< [1..1] SHOSTIF (Master bus clock domain) Reset Control */ + __IOM uint32_t MRCTLI02 : 1; /*!< [2..2] SHOSTIF (Slave bus clock domain) Reset Control */ + __IOM uint32_t MRCTLI03 : 1; /*!< [3..3] SHOSTIF (IP clock domain) Reset Control */ + uint32_t : 28; + } MRCTLI_b; + }; + __IM uint32_t RESERVED9[44]; + + union + { + __IOM uint32_t MSTPCRF; /*!< (@ 0x00000314) Module Stop Control Register F */ + + struct + { + __IOM uint32_t MSTPCRF00 : 1; /*!< [0..0] Trace Clock for Debugging Interface Module Stop */ + uint32_t : 31; + } MSTPCRF_b; + }; + + union + { + __IOM uint32_t MSTPCRG; /*!< (@ 0x00000318) Module Stop Control Register G */ + + struct + { + __IOM uint32_t MSTPCRG00 : 1; /*!< [0..0] SCI Unit 5 Module Stop */ + __IOM uint32_t MSTPCRG01 : 1; /*!< [1..1] IIC Unit 2 Module Stop */ + __IOM uint32_t MSTPCRG02 : 1; /*!< [2..2] SPI Unit 3 Module Stop */ + __IOM uint32_t MSTPCRG03 : 1; /*!< [3..3] GPT Unit 2 Module Stop */ + __IOM uint32_t MSTPCRG04 : 1; /*!< [4..4] CRC Unit 1 Module Stop */ + __IOM uint32_t MSTPCRG05 : 1; /*!< [5..5] RTC Module Stop */ + uint32_t : 2; + __IOM uint32_t MSTPCRG08 : 1; /*!< [8..8] CLMA3 Module Stop */ + __IOM uint32_t MSTPCRG09 : 1; /*!< [9..9] CLMA0 Module Stop */ + __IOM uint32_t MSTPCRG10 : 1; /*!< [10..10] CLMA1 Module Stop */ + __IOM uint32_t MSTPCRG11 : 1; /*!< [11..11] CLMA2 Module Stop */ + uint32_t : 20; + } MSTPCRG_b; + }; + __IM uint32_t RESERVED10; + + union + { + __IOM uint32_t MSTPCRI; /*!< (@ 0x00000320) Module Stop Control Register I */ + + struct + { + __IOM uint32_t MSTPCRI00 : 1; /*!< [0..0] PHOSTIF Module Stop */ + __IOM uint32_t MSTPCRI01 : 1; /*!< [1..1] SHOSTIF Module Stop */ + uint32_t : 30; + } MSTPCRI_b; + }; +} R_SYSC_S_Type; /*!< Size = 804 (0x324) */ + +/* =========================================================================================================================== */ +/* ================ R_CLMA0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Clock Monitor Circuit 0 (R_CLMA0) + */ + +typedef struct /*!< (@ 0x81280800) R_CLMA0 Structure */ +{ + union + { + __IOM uint8_t CTL0; /*!< (@ 0x00000000) CLMA Control Register 0 */ + + struct + { + __IOM uint8_t CLME : 1; /*!< [0..0] Clock Monitor m Enable (m = 0 to 3) */ + uint8_t : 7; + } CTL0_b; + }; + __IM uint8_t RESERVED; + __IM uint16_t RESERVED1[3]; + + union + { + __IOM uint16_t CMPL; /*!< (@ 0x00000008) CLMA Compare Register L */ + + struct + { + __IOM uint16_t CMPL : 12; /*!< [11..0] Clock Monitor m Compare L (m = 0 to 3) */ + uint16_t : 4; + } CMPL_b; + }; + __IM uint16_t RESERVED2; + + union + { + __IOM uint16_t CMPH; /*!< (@ 0x0000000C) CLMA Compare Register H */ + + struct + { + __IOM uint16_t CMPH : 12; /*!< [11..0] Clock Monitor m Compare H (m = 0 to 3) */ + uint16_t : 4; + } CMPH_b; + }; + __IM uint16_t RESERVED3; + __OM uint8_t PCMD; /*!< (@ 0x00000010) CLMA Command Register */ + __IM uint8_t RESERVED4; + __IM uint16_t RESERVED5; + + union + { + __IM uint8_t PROTSR; /*!< (@ 0x00000014) CLMA Protection Status Register */ + + struct + { + __IM uint8_t PRERR : 1; /*!< [0..0] CLMAm Error (m = 0 to 3) */ + uint8_t : 7; + } PROTSR_b; + }; + __IM uint8_t RESERVED6; + __IM uint16_t RESERVED7; +} R_CLMA0_Type; /*!< Size = 24 (0x18) */ + +/* =========================================================================================================================== */ +/* ================ R_MPU0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Master MPU 0 (R_MPU0) + */ + +typedef struct /*!< (@ 0x81281100) R_MPU0 Structure */ +{ + __IOM R_MPU0_RGN_Type RGN[8]; /*!< (@ 0x00000000) Master MPU Safety Region Start Address Register + * [0..7] */ + + union + { + __IOM uint32_t ERRINF_R; /*!< (@ 0x00000080) Master MPU Error Information Register for AXI + * type */ + + struct + { + __IOM uint32_t VALID : 1; /*!< [0..0] Validity of access error information */ + __IM uint32_t RW : 1; /*!< [1..1] Access error type */ + __IM uint32_t ERRADDR : 30; /*!< [31..2] Access error address */ + } ERRINF_R_b; + }; + + union + { + __IOM uint32_t ERRINF_W; /*!< (@ 0x00000084) Master MPU Error Information Register for AXI + * type */ + + struct + { + __IOM uint32_t VALID : 1; /*!< [0..0] Validity of access error information */ + __IM uint32_t RW : 1; /*!< [1..1] Access error type */ + __IM uint32_t ERRADDR : 30; /*!< [31..2] Access error address */ + } ERRINF_W_b; + }; +} R_MPU0_Type; /*!< Size = 136 (0x88) */ + +/* =========================================================================================================================== */ +/* ================ R_MPU3 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Master MPU 3 (R_MPU3) + */ + +typedef struct /*!< (@ 0x81281400) R_MPU3 Structure */ +{ + __IOM R_MPU0_RGN_Type RGN[8]; /*!< (@ 0x00000000) Master MPU Safety Region Start Address Register + * [0..7] */ + + union + { + __IOM uint32_t ERRINF; /*!< (@ 0x00000080) Master MPU Error Information Register for AHB + * type */ + + struct + { + __IOM uint32_t VALID : 1; /*!< [0..0] Validity of Access Error Information */ + __IM uint32_t RW : 1; /*!< [1..1] Access error type */ + __IM uint32_t ERRADDR : 30; /*!< [31..2] Access Error Address */ + } ERRINF_b; + }; +} R_MPU3_Type; /*!< Size = 132 (0x84) */ + +/* =========================================================================================================================== */ +/* ================ R_SYSRAM_CTL ================ */ +/* =========================================================================================================================== */ + +/** + * @brief System SRAM Control (R_SYSRAM_CTL) + */ + +typedef struct /*!< (@ 0x81281800) R_SYSRAM_CTL Structure */ +{ + union + { + __IOM uint32_t SYSRAM_CTRL0; /*!< (@ 0x00000000) System SRAM Control Register 0 */ + + struct + { + __IOM uint32_t VECEN : 1; /*!< [0..0] Enables or disables error correction with ECC */ + uint32_t : 15; + __IOM uint32_t VRWEN : 4; /*!< [19..16] Enables write for each page of RAM */ + __IOM uint32_t VCEN : 1; /*!< [20..20] Enables access to RAM */ + __IOM uint32_t VLWEN : 1; /*!< [21..21] Enables write for RAM */ + uint32_t : 2; + __IOM uint32_t MKICCAXIERR : 1; /*!< [24..24] Controls AXI-SLVERR issuance for ECC 2-bit errors */ + uint32_t : 7; + } SYSRAM_CTRL0_b; + }; + __IM uint32_t RESERVED[3]; + + union + { + __IOM uint32_t SYSRAM_CTRL1; /*!< (@ 0x00000010) System SRAM Control Register 1 */ + + struct + { + __IOM uint32_t VECEN : 1; /*!< [0..0] Enables or disables error correction with ECC */ + uint32_t : 15; + __IOM uint32_t VRWEN : 4; /*!< [19..16] Enables write for each page of RAM */ + __IOM uint32_t VCEN : 1; /*!< [20..20] Enables access to RAM */ + __IOM uint32_t VLWEN : 1; /*!< [21..21] Enables write for RAM */ + uint32_t : 2; + __IOM uint32_t MKICCAXIERR : 1; /*!< [24..24] Controls AXI-SLVERR issuance for ECC 2-bit errors */ + uint32_t : 7; + } SYSRAM_CTRL1_b; + }; + __IM uint32_t RESERVED1[3]; + + union + { + __IOM uint32_t SYSRAM_CTRL2; /*!< (@ 0x00000020) System SRAM Control Register 2 */ + + struct + { + __IOM uint32_t VECEN : 1; /*!< [0..0] Enables or disables error correction with ECC */ + uint32_t : 15; + __IOM uint32_t VRWEN : 4; /*!< [19..16] Enables write for each page of RAM */ + __IOM uint32_t VCEN : 1; /*!< [20..20] Enables access to RAM */ + __IOM uint32_t VLWEN : 1; /*!< [21..21] Enables write for RAM */ + uint32_t : 2; + __IOM uint32_t MKICCAXIERR : 1; /*!< [24..24] Controls AXI-SLVERR issuance for ECC 2-bit errors */ + uint32_t : 7; + } SYSRAM_CTRL2_b; + }; +} R_SYSRAM_CTL_Type; /*!< Size = 36 (0x24) */ + +/* =========================================================================================================================== */ +/* ================ R_SHOSTIF_CFG ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Serial Host Interface Configuration (R_SHOSTIF_CFG) + */ + +typedef struct /*!< (@ 0x81281920) R_SHOSTIF_CFG Structure */ +{ + union + { + __IOM uint32_t SHCFG; /*!< (@ 0x00000000) SHOSTIF Configuration Register */ + + struct + { + __IOM uint32_t SPIMODE : 2; /*!< [1..0] SPI Frame Format Select */ + __IOM uint32_t BYTESWAP : 1; /*!< [2..2] Byte Swap Mode */ + __IOM uint32_t ADDRESSING : 1; /*!< [3..3] Addressing Mode */ + __IM uint32_t SLEEP : 1; /*!< [4..4] SHOSTIF Enable Flag Monitor */ + uint32_t : 11; + __IOM uint32_t INTMASKI : 6; /*!< [21..16] Interrupt Mask Enable for Internal Interrupt (SHOST_INT) */ + uint32_t : 2; + __IOM uint32_t INTMASKE : 6; /*!< [29..24] Interrupt Mask Enable for External Interrupt (HSPI_INT# + * signal) */ + uint32_t : 2; + } SHCFG_b; + }; +} R_SHOSTIF_CFG_Type; /*!< Size = 4 (0x4) */ + +/* =========================================================================================================================== */ +/* ================ R_PHOSTIF_CFG ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Parallel Host Interface Configuration (R_PHOSTIF_CFG) + */ + +typedef struct /*!< (@ 0x81281930) R_PHOSTIF_CFG Structure */ +{ + union + { + __IOM uint32_t PHCFG; /*!< (@ 0x00000000) PHOSTIF Configureation Register */ + + struct + { + __IOM uint32_t MEMIFSEL : 1; /*!< [0..0] MEMIFSEL */ + uint32_t : 3; + __IOM uint32_t BUSSSEL : 1; /*!< [4..4] BUSSSEL */ + uint32_t : 3; + __IOM uint32_t HIFSYNC : 1; /*!< [8..8] HIFSYNC */ + uint32_t : 3; + __IOM uint32_t MEMCSEL : 1; /*!< [12..12] MEMCSEL */ + uint32_t : 3; + __IOM uint32_t HWRZSEL : 1; /*!< [16..16] HWRZSEL */ + uint32_t : 3; + __IOM uint32_t ADMUXMODE : 1; /*!< [20..20] ADMUXMODE */ + uint32_t : 11; + } PHCFG_b; + }; + + union + { + __IOM uint32_t PHACC; /*!< (@ 0x00000004) PHOSTIF Register Access Control Register */ + + struct + { + __IOM uint32_t HIFRDYSEL : 1; /*!< [0..0] HIFRDYSEL */ + uint32_t : 7; + __IOM uint32_t HIFBCCSEL : 1; /*!< [8..8] HIFBCCSEL */ + __IOM uint32_t HIFBTCSEL : 1; /*!< [9..9] HIFBTCSEL */ + __IOM uint32_t HIFPRCSEL : 1; /*!< [10..10] HIFPRCSEL */ + __IOM uint32_t HIFIRCSEL : 1; /*!< [11..11] HIFIRCSEL */ + __IOM uint32_t HIFXALSEL : 1; /*!< [12..12] HIFXALSEL */ + __IOM uint32_t HIFXAHSEL : 1; /*!< [13..13] HIFXAHSEL */ + __IOM uint32_t HIFEXT0SEL : 1; /*!< [14..14] HIFEXT0SEL */ + __IOM uint32_t HIFEXT1SEL : 1; /*!< [15..15] HIFEXT1SEL */ + __IOM uint32_t CSSWAP : 1; /*!< [16..16] CSSWAP */ + __IOM uint32_t BSCADMUX : 1; /*!< [17..17] BSCADMUX */ + uint32_t : 14; + } PHACC_b; + }; +} R_PHOSTIF_CFG_Type; /*!< Size = 8 (0x8) */ + +/* =========================================================================================================================== */ +/* ================ R_RWP_S ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Register Write Protection for Safety Area (R_RWP_S) + */ + +typedef struct /*!< (@ 0x81281A00) R_RWP_S Structure */ +{ + union + { + __IOM uint32_t PRCRS; /*!< (@ 0x00000000) Safety Area Protect Register */ + + struct + { + __IOM uint32_t PRC0 : 1; /*!< [0..0] Protect 0 */ + __IOM uint32_t PRC1 : 1; /*!< [1..1] Protect 1 */ + __IOM uint32_t PRC2 : 1; /*!< [2..2] Protect 2 */ + __IOM uint32_t PRC3 : 1; /*!< [3..3] Protect 3 */ + uint32_t : 4; + __OM uint32_t PRKEY : 8; /*!< [15..8] PRC Key Code */ + uint32_t : 16; + } PRCRS_b; + }; +} R_RWP_S_Type; /*!< Size = 4 (0x4) */ + +/* =========================================================================================================================== */ +/* ================ R_MTU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Multi-Function Timer Pulse Unit (R_MTU) + */ + +typedef struct /*!< (@ 0x90001000) R_MTU Structure */ +{ + __IM uint16_t RESERVED[261]; + + union + { + __IOM uint8_t TOERA; /*!< (@ 0x0000020A) Timer Output Master Enable Register A */ + + struct + { + __IOM uint8_t OE3B : 1; /*!< [0..0] Master Enable MTIOC3B */ + __IOM uint8_t OE4A : 1; /*!< [1..1] Master Enable MTIOC4A */ + __IOM uint8_t OE4B : 1; /*!< [2..2] Master Enable MTIOC4B */ + __IOM uint8_t OE3D : 1; /*!< [3..3] Master Enable MTIOC3D */ + __IOM uint8_t OE4C : 1; /*!< [4..4] Master Enable MTIOC4C */ + __IOM uint8_t OE4D : 1; /*!< [5..5] Master Enable MTIOC4D */ + uint8_t : 2; + } TOERA_b; + }; + __IM uint8_t RESERVED1[2]; + + union + { + __IOM uint8_t TGCRA; /*!< (@ 0x0000020D) Timer Gate Control Register A */ + + struct + { + __IOM uint8_t UF : 1; /*!< [0..0] Output Phase Switch */ + __IOM uint8_t VF : 1; /*!< [1..1] Output Phase Switch */ + __IOM uint8_t WF : 1; /*!< [2..2] Output Phase Switch */ + __IOM uint8_t FB : 1; /*!< [3..3] External Feedback Signal Enable */ + __IOM uint8_t P : 1; /*!< [4..4] Positive-Phase Output (P) Control */ + __IOM uint8_t N : 1; /*!< [5..5] Negative-Phase Output (N) Control */ + __IOM uint8_t BDC : 1; /*!< [6..6] Brushless DC Motor */ + uint8_t : 1; + } TGCRA_b; + }; + + union + { + __IOM uint8_t TOCR1A; /*!< (@ 0x0000020E) Timer Output Control Register 1A */ + + struct + { + __IOM uint8_t OLSP : 1; /*!< [0..0] Output Level Select P */ + __IOM uint8_t OLSN : 1; /*!< [1..1] Output Level Select N */ + __IOM uint8_t TOCS : 1; /*!< [2..2] TOC Select */ + __IOM uint8_t TOCL : 1; /*!< [3..3] TOC Register Write Protection */ + uint8_t : 2; + __IOM uint8_t PSYE : 1; /*!< [6..6] PWM Synchronous Output Enable */ + uint8_t : 1; + } TOCR1A_b; + }; + + union + { + __IOM uint8_t TOCR2A; /*!< (@ 0x0000020F) Timer Output Control Register 2A */ + + struct + { + __IOM uint8_t OLS1P : 1; /*!< [0..0] Output Level Select 1P */ + __IOM uint8_t OLS1N : 1; /*!< [1..1] Output Level Select 1N */ + __IOM uint8_t OLS2P : 1; /*!< [2..2] Output Level Select 2P */ + __IOM uint8_t OLS2N : 1; /*!< [3..3] Output Level Select 2N */ + __IOM uint8_t OLS3P : 1; /*!< [4..4] Output Level Select 3P */ + __IOM uint8_t OLS3N : 1; /*!< [5..5] Output Level Select 3N */ + __IOM uint8_t BF : 2; /*!< [7..6] TOLBR Buffer Transfer Timing Select */ + } TOCR2A_b; + }; + __IM uint16_t RESERVED2[2]; + __IOM uint16_t TCDRA; /*!< (@ 0x00000214) Timer Cycle Data Register A */ + __IOM uint16_t TDDRA; /*!< (@ 0x00000216) Timer Dead Time Data Register A */ + __IM uint16_t RESERVED3[4]; + __IM uint16_t TCNTSA; /*!< (@ 0x00000220) Timer Subcounter A */ + __IOM uint16_t TCBRA; /*!< (@ 0x00000222) Timer Cycle Buffer Register A */ + __IM uint16_t RESERVED4[6]; + + union + { + __IOM uint8_t TITCR1A; /*!< (@ 0x00000230) Timer Interrupt Skipping Set Register 1A */ + + struct + { + __IOM uint8_t T4VCOR : 3; /*!< [2..0] TCIV4 Interrupt Skipping Count Setting */ + __IOM uint8_t T4VEN : 1; /*!< [3..3] TCIV4 Interrupt Skipping Enable */ + __IOM uint8_t T3ACOR : 3; /*!< [6..4] TGIA3 Interrupt Skipping Count Setting */ + __IOM uint8_t T3AEN : 1; /*!< [7..7] TGIA3 Interrupt Skipping Enable */ + } TITCR1A_b; + }; + + union + { + __IM uint8_t TITCNT1A; /*!< (@ 0x00000231) Timer Interrupt Skipping Counter 1A */ + + struct + { + __IM uint8_t T4VCNT : 3; /*!< [2..0] TCIV4 Interrupt Counter */ + uint8_t : 1; + __IM uint8_t T3ACNT : 3; /*!< [6..4] TGIA3 Interrupt Counter */ + uint8_t : 1; + } TITCNT1A_b; + }; + + union + { + __IOM uint8_t TBTERA; /*!< (@ 0x00000232) Timer Buffer Transfer Set Register A */ + + struct + { + __IOM uint8_t BTE : 2; /*!< [1..0] Buffer Transfer Disable and Interrupt Skipping Link Setting */ + uint8_t : 6; + } TBTERA_b; + }; + __IM uint8_t RESERVED5; + + union + { + __IOM uint8_t TDERA; /*!< (@ 0x00000234) Timer Dead Time Enable Register A */ + + struct + { + __IOM uint8_t TDER : 1; /*!< [0..0] Dead Time Enable */ + uint8_t : 7; + } TDERA_b; + }; + __IM uint8_t RESERVED6; + + union + { + __IOM uint8_t TOLBRA; /*!< (@ 0x00000236) Timer Output Level Buffer Register A */ + + struct + { + __IOM uint8_t OLS1P : 1; /*!< [0..0] Output Level Select 1P */ + __IOM uint8_t OLS1N : 1; /*!< [1..1] Output Level Select 1N */ + __IOM uint8_t OLS2P : 1; /*!< [2..2] Output Level Select 2P */ + __IOM uint8_t OLS2N : 1; /*!< [3..3] Output Level Select 2N */ + __IOM uint8_t OLS3P : 1; /*!< [4..4] Output Level Select 3P */ + __IOM uint8_t OLS3N : 1; /*!< [5..5] Output Level Select 3N */ + uint8_t : 2; + } TOLBRA_b; + }; + __IM uint8_t RESERVED7; + __IM uint16_t RESERVED8; + + union + { + __IOM uint8_t TITMRA; /*!< (@ 0x0000023A) Timer Interrupt Skipping Mode Register A */ + + struct + { + __IOM uint8_t TITM : 1; /*!< [0..0] Interrupt Skipping Function Select */ + uint8_t : 7; + } TITMRA_b; + }; + + union + { + __IOM uint8_t TITCR2A; /*!< (@ 0x0000023B) Timer Interrupt Skipping Set Register 2A */ + + struct + { + __IOM uint8_t TRG4COR : 3; /*!< [2..0] TRG4AN/TRG4BN Interrupt Skipping Count Setting */ + uint8_t : 5; + } TITCR2A_b; + }; + + union + { + __IM uint8_t TITCNT2A; /*!< (@ 0x0000023C) Timer Interrupt Skipping Counter 2A */ + + struct + { + __IM uint8_t TRG4CNT : 3; /*!< [2..0] TRG4AN/TRG4BN Interrupt Counter */ + uint8_t : 5; + } TITCNT2A_b; + }; + __IM uint8_t RESERVED9; + __IM uint16_t RESERVED10[17]; + + union + { + __IOM uint8_t TWCRA; /*!< (@ 0x00000260) Timer Waveform Control Register A */ + + struct + { + __IOM uint8_t WRE : 1; /*!< [0..0] Waveform Retain Enable */ + __IOM uint8_t SCC : 1; /*!< [1..1] Synchronous Clearing Control (Only valid in TWCRB) */ + uint8_t : 5; + __IOM uint8_t CCE : 1; /*!< [7..7] Compare Match Clear Enable */ + } TWCRA_b; + }; + __IM uint8_t RESERVED11; + __IM uint16_t RESERVED12[7]; + + union + { + __IOM uint8_t TMDR2A; /*!< (@ 0x00000270) Timer Mode Register 2A */ + + struct + { + __IOM uint8_t DRS : 1; /*!< [0..0] Double Buffer Select */ + uint8_t : 7; + } TMDR2A_b; + }; + __IM uint8_t RESERVED13; + __IM uint16_t RESERVED14[7]; + + union + { + __IOM uint8_t TSTRA; /*!< (@ 0x00000280) Timer Start Register A */ + + struct + { + __IOM uint8_t CST0 : 1; /*!< [0..0] Counter Start 0 */ + __IOM uint8_t CST1 : 1; /*!< [1..1] Counter Start 1 */ + __IOM uint8_t CST2 : 1; /*!< [2..2] Counter Start 2 */ + __IOM uint8_t CST8 : 1; /*!< [3..3] Counter Start 8 */ + uint8_t : 2; + __IOM uint8_t CST3 : 1; /*!< [6..6] Counter Start 3 */ + __IOM uint8_t CST4 : 1; /*!< [7..7] Counter Start 4 */ + } TSTRA_b; + }; + + union + { + __IOM uint8_t TSYRA; /*!< (@ 0x00000281) Timer Synchronous Register A */ + + struct + { + __IOM uint8_t SYNC0 : 1; /*!< [0..0] Timer Synchronous Operation 0 */ + __IOM uint8_t SYNC1 : 1; /*!< [1..1] Timer Synchronous Operation 1 */ + __IOM uint8_t SYNC2 : 1; /*!< [2..2] Timer Synchronous Operation 2 */ + uint8_t : 3; + __IOM uint8_t SYNC3 : 1; /*!< [6..6] Timer Synchronous Operation 3 */ + __IOM uint8_t SYNC4 : 1; /*!< [7..7] Timer Synchronous Operation 4 */ + } TSYRA_b; + }; + + union + { + __IOM uint8_t TCSYSTR; /*!< (@ 0x00000282) Timer Counter Synchronous Start Register */ + + struct + { + __IOM uint8_t SCH7 : 1; /*!< [0..0] Synchronous Start 7 */ + __IOM uint8_t SCH6 : 1; /*!< [1..1] Synchronous Start 6 */ + uint8_t : 1; + __IOM uint8_t SCH4 : 1; /*!< [3..3] Synchronous Start 4 */ + __IOM uint8_t SCH3 : 1; /*!< [4..4] Synchronous Start 3 */ + __IOM uint8_t SCH2 : 1; /*!< [5..5] Synchronous Start 2 */ + __IOM uint8_t SCH1 : 1; /*!< [6..6] Synchronous Start 1 */ + __IOM uint8_t SCH0 : 1; /*!< [7..7] Synchronous Start 0 */ + } TCSYSTR_b; + }; + __IM uint8_t RESERVED15; + + union + { + __IOM uint8_t TRWERA; /*!< (@ 0x00000284) Timer Read/Write Enable Register A */ + + struct + { + __IOM uint8_t RWE : 1; /*!< [0..0] Read/Write Enable */ + uint8_t : 7; + } TRWERA_b; + }; + __IM uint8_t RESERVED16; + __IM uint16_t RESERVED17[962]; + + union + { + __IOM uint8_t TOERB; /*!< (@ 0x00000A0A) Timer Output Master Enable Register B */ + + struct + { + __IOM uint8_t OE6B : 1; /*!< [0..0] Master Enable MTIOC6B */ + __IOM uint8_t OE7A : 1; /*!< [1..1] Master Enable MTIOC7A */ + __IOM uint8_t OE7B : 1; /*!< [2..2] Master Enable MTIOC7B */ + __IOM uint8_t OE6D : 1; /*!< [3..3] Master Enable MTIOC6D */ + __IOM uint8_t OE7C : 1; /*!< [4..4] Master Enable MTIOC7C */ + __IOM uint8_t OE7D : 1; /*!< [5..5] Master Enable MTIOC7D */ + uint8_t : 2; + } TOERB_b; + }; + __IM uint8_t RESERVED18; + __IM uint16_t RESERVED19; + + union + { + __IOM uint8_t TOCR1B; /*!< (@ 0x00000A0E) Timer Output Control Register 1B */ + + struct + { + __IOM uint8_t OLSP : 1; /*!< [0..0] Output Level Select P */ + __IOM uint8_t OLSN : 1; /*!< [1..1] Output Level Select N */ + __IOM uint8_t TOCS : 1; /*!< [2..2] TOC Select */ + __IOM uint8_t TOCL : 1; /*!< [3..3] TOC Register Write Protection */ + uint8_t : 2; + __IOM uint8_t PSYE : 1; /*!< [6..6] PWM Synchronous Output Enable */ + uint8_t : 1; + } TOCR1B_b; + }; + + union + { + __IOM uint8_t TOCR2B; /*!< (@ 0x00000A0F) Timer Output Control Register 2B */ + + struct + { + __IOM uint8_t OLS1P : 1; /*!< [0..0] Output Level Select 1P */ + __IOM uint8_t OLS1N : 1; /*!< [1..1] Output Level Select 1N */ + __IOM uint8_t OLS2P : 1; /*!< [2..2] Output Level Select 2P */ + __IOM uint8_t OLS2N : 1; /*!< [3..3] Output Level Select 2N */ + __IOM uint8_t OLS3P : 1; /*!< [4..4] Output Level Select 3P */ + __IOM uint8_t OLS3N : 1; /*!< [5..5] Output Level Select 3N */ + __IOM uint8_t BF : 2; /*!< [7..6] TOLBR Buffer Transfer Timing Select */ + } TOCR2B_b; + }; + __IM uint16_t RESERVED20[2]; + __IOM uint16_t TCDRB; /*!< (@ 0x00000A14) Timer Cycle Data Register B */ + __IOM uint16_t TDDRB; /*!< (@ 0x00000A16) Timer Dead Time Data Register B */ + __IM uint16_t RESERVED21[4]; + __IM uint16_t TCNTSB; /*!< (@ 0x00000A20) Timer Subcounter B */ + __IOM uint16_t TCBRB; /*!< (@ 0x00000A22) Timer Cycle Buffer Register B */ + __IM uint16_t RESERVED22[6]; + + union + { + __IOM uint8_t TITCR1B; /*!< (@ 0x00000A30) Timer Interrupt Skipping Set Register 1B */ + + struct + { + __IOM uint8_t T7VCOR : 3; /*!< [2..0] TCIV7 Interrupt Skipping Count Setting */ + __IOM uint8_t T7VEN : 1; /*!< [3..3] TCIV7 Interrupt Skipping Enable */ + __IOM uint8_t T6ACOR : 3; /*!< [6..4] TGIA6 Interrupt Skipping Count Setting */ + __IOM uint8_t T6AEN : 1; /*!< [7..7] TGIA6 Interrupt Skipping Enable */ + } TITCR1B_b; + }; + + union + { + __IM uint8_t TITCNT1B; /*!< (@ 0x00000A31) Timer Interrupt Skipping Counter 1B */ + + struct + { + __IM uint8_t T7VCNT : 3; /*!< [2..0] TCIV7 Interrupt Counter */ + uint8_t : 1; + __IM uint8_t T6ACNT : 3; /*!< [6..4] TGIA6 Interrupt Counter */ + uint8_t : 1; + } TITCNT1B_b; + }; + + union + { + __IOM uint8_t TBTERB; /*!< (@ 0x00000A32) Timer Buffer Transfer Set Register B */ + + struct + { + __IOM uint8_t BTE : 2; /*!< [1..0] Buffer Transfer Disable and Interrupt Skipping Link Setting */ + uint8_t : 6; + } TBTERB_b; + }; + __IM uint8_t RESERVED23; + + union + { + __IOM uint8_t TDERB; /*!< (@ 0x00000A34) Timer Dead Time Enable Register B */ + + struct + { + __IOM uint8_t TDER : 1; /*!< [0..0] Dead Time Enable */ + uint8_t : 7; + } TDERB_b; + }; + __IM uint8_t RESERVED24; + + union + { + __IOM uint8_t TOLBRB; /*!< (@ 0x00000A36) Timer Output Level Buffer Register B */ + + struct + { + __IOM uint8_t OLS1P : 1; /*!< [0..0] Output Level Select 1P */ + __IOM uint8_t OLS1N : 1; /*!< [1..1] Output Level Select 1N */ + __IOM uint8_t OLS2P : 1; /*!< [2..2] Output Level Select 2P */ + __IOM uint8_t OLS2N : 1; /*!< [3..3] Output Level Select 2N */ + __IOM uint8_t OLS3P : 1; /*!< [4..4] Output Level Select 3P */ + __IOM uint8_t OLS3N : 1; /*!< [5..5] Output Level Select 3N */ + uint8_t : 2; + } TOLBRB_b; + }; + __IM uint8_t RESERVED25; + __IM uint16_t RESERVED26; + + union + { + __IOM uint8_t TITMRB; /*!< (@ 0x00000A3A) Timer Interrupt Skipping Mode Register B */ + + struct + { + __IOM uint8_t TITM : 1; /*!< [0..0] Interrupt Skipping Function Select */ + uint8_t : 7; + } TITMRB_b; + }; + + union + { + __IOM uint8_t TITCR2B; /*!< (@ 0x00000A3B) Timer Interrupt Skipping Set Register 2B */ + + struct + { + __IOM uint8_t TRG7COR : 3; /*!< [2..0] TRG7AN/TRG7BN Interrupt Skipping Count Setting */ + uint8_t : 5; + } TITCR2B_b; + }; + + union + { + __IM uint8_t TITCNT2B; /*!< (@ 0x00000A3C) Timer Interrupt Skipping Counter 2B */ + + struct + { + __IM uint8_t TRG7CNT : 3; /*!< [2..0] TRG7AN/TRG7BN Interrupt Counter */ + uint8_t : 5; + } TITCNT2B_b; + }; + __IM uint8_t RESERVED27; + __IM uint16_t RESERVED28[17]; + + union + { + __IOM uint8_t TWCRB; /*!< (@ 0x00000A60) Timer Waveform Control Register B */ + + struct + { + __IOM uint8_t WRE : 1; /*!< [0..0] Waveform Retain Enable */ + __IOM uint8_t SCC : 1; /*!< [1..1] Synchronous Clearing Control (Only valid in TWCRB) */ + uint8_t : 5; + __IOM uint8_t CCE : 1; /*!< [7..7] Compare Match Clear Enable */ + } TWCRB_b; + }; + __IM uint8_t RESERVED29; + __IM uint16_t RESERVED30[7]; + + union + { + __IOM uint8_t TMDR2B; /*!< (@ 0x00000A70) Timer Mode Register 2B */ + + struct + { + __IOM uint8_t DRS : 1; /*!< [0..0] Double Buffer Select */ + uint8_t : 7; + } TMDR2B_b; + }; + __IM uint8_t RESERVED31; + __IM uint16_t RESERVED32[7]; + + union + { + __IOM uint8_t TSTRB; /*!< (@ 0x00000A80) Timer Start Register B */ + + struct + { + uint8_t : 6; + __IOM uint8_t CST6 : 1; /*!< [6..6] Counter Start 6 */ + __IOM uint8_t CST7 : 1; /*!< [7..7] Counter Start 7 */ + } TSTRB_b; + }; + + union + { + __IOM uint8_t TSYRB; /*!< (@ 0x00000A81) Timer Synchronous Register B */ + + struct + { + uint8_t : 6; + __IOM uint8_t SYNC6 : 1; /*!< [6..6] Timer Synchronous Operation 6 */ + __IOM uint8_t SYNC7 : 1; /*!< [7..7] Timer Synchronous Operation 7 */ + } TSYRB_b; + }; + __IM uint16_t RESERVED33; + + union + { + __IOM uint8_t TRWERB; /*!< (@ 0x00000A84) Timer Read/Write Enable Register B */ + + struct + { + __IOM uint8_t RWE : 1; /*!< [0..0] Read/Write Enable */ + uint8_t : 7; + } TRWERB_b; + }; + __IM uint8_t RESERVED34; + __IM uint16_t RESERVED35; +} R_MTU_Type; /*!< Size = 2696 (0xa88) */ + +/* =========================================================================================================================== */ +/* ================ R_MTU3 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Multi-Function Timer Pulse Unit Channel 3 (R_MTU3) + */ + +typedef struct /*!< (@ 0x90001100) R_MTU3 Structure */ +{ + __IM uint16_t RESERVED[128]; + + union + { + __IOM uint8_t TCR; /*!< (@ 0x00000100) Timer Control Register */ + + struct + { + __IOM uint8_t TPSC : 3; /*!< [2..0] Time Prescaler Select */ + __IOM uint8_t CKEG : 2; /*!< [4..3] Clock Edge Select */ + __IOM uint8_t CCLR : 3; /*!< [7..5] Counter Clear Source Select */ + } TCR_b; + }; + __IM uint8_t RESERVED1; + + union + { + __IOM uint8_t TMDR1; /*!< (@ 0x00000102) Timer Mode Register 1 */ + + struct + { + __IOM uint8_t MD : 4; /*!< [3..0] Mode Select */ + __IOM uint8_t BFA : 1; /*!< [4..4] Buffer Operation A */ + __IOM uint8_t BFB : 1; /*!< [5..5] Buffer Operation B */ + uint8_t : 2; + } TMDR1_b; + }; + __IM uint8_t RESERVED2; + + union + { + __IOM uint8_t TIORH; /*!< (@ 0x00000104) Timer I/O Control Register H */ + + struct + { + __IOM uint8_t IOA : 4; /*!< [3..0] I/O Control A */ + __IOM uint8_t IOB : 4; /*!< [7..4] I/O Control B */ + } TIORH_b; + }; + + union + { + __IOM uint8_t TIORL; /*!< (@ 0x00000105) Timer I/O Control Register L */ + + struct + { + __IOM uint8_t IOC : 4; /*!< [3..0] I/O Control A */ + __IOM uint8_t IOD : 4; /*!< [7..4] I/O Control B */ + } TIORL_b; + }; + __IM uint16_t RESERVED3; + + union + { + __IOM uint8_t TIER; /*!< (@ 0x00000108) Timer Interrupt Enable Register */ + + struct + { + __IOM uint8_t TGIEA : 1; /*!< [0..0] TGR Interrupt Enable A */ + __IOM uint8_t TGIEB : 1; /*!< [1..1] TGR Interrupt Enable B */ + __IOM uint8_t TGIEC : 1; /*!< [2..2] TGR Interrupt Enable C */ + __IOM uint8_t TGIED : 1; /*!< [3..3] TGR Interrupt Enable D */ + __IOM uint8_t TCIEV : 1; /*!< [4..4] Overflow Interrupt Enable */ + uint8_t : 2; + __IOM uint8_t TTGE : 1; /*!< [7..7] A/D Converter Start Request Enable */ + } TIER_b; + }; + __IM uint8_t RESERVED4; + __IM uint16_t RESERVED5[3]; + __IOM uint16_t TCNT; /*!< (@ 0x00000110) Timer Counter */ + __IM uint16_t RESERVED6[3]; + __IOM uint16_t TGRA; /*!< (@ 0x00000118) Timer General Register A */ + __IOM uint16_t TGRB; /*!< (@ 0x0000011A) Timer General Register B */ + __IM uint16_t RESERVED7[4]; + __IOM uint16_t TGRC; /*!< (@ 0x00000124) Timer General Register C */ + __IOM uint16_t TGRD; /*!< (@ 0x00000126) Timer General Register D */ + __IM uint16_t RESERVED8[2]; + + union + { + __IOM uint8_t TSR; /*!< (@ 0x0000012C) Timer Status Register */ + + struct + { + __IOM uint8_t TGFA : 1; /*!< [0..0] Input Capture/Output Compare Flag A */ + __IOM uint8_t TGFB : 1; /*!< [1..1] Input Capture/Output Compare Flag B */ + __IOM uint8_t TGFC : 1; /*!< [2..2] Input Capture/Output Compare Flag C */ + __IOM uint8_t TGFD : 1; /*!< [3..3] Input Capture/Output Compare Flag D */ + __IOM uint8_t TCFV : 1; /*!< [4..4] Overflow flag */ + __IOM uint8_t TCFU : 1; /*!< [5..5] Underflow flag */ + uint8_t : 1; + __IM uint8_t TCFD : 1; /*!< [7..7] Count Direction Flag */ + } TSR_b; + }; + __IM uint8_t RESERVED9; + __IM uint16_t RESERVED10[5]; + + union + { + __IOM uint8_t TBTM; /*!< (@ 0x00000138) Timer Buffer Operation Transfer Mode Register */ + + struct + { + __IOM uint8_t TTSA : 1; /*!< [0..0] Timing Select A */ + __IOM uint8_t TTSB : 1; /*!< [1..1] Timing Select B */ + uint8_t : 6; + } TBTM_b; + }; + __IM uint8_t RESERVED11; + __IM uint16_t RESERVED12[9]; + + union + { + __IOM uint8_t TCR2; /*!< (@ 0x0000014C) Timer Control Register 2 */ + + struct + { + __IOM uint8_t TPSC2 : 3; /*!< [2..0] Time Prescaler Select */ + uint8_t : 5; + } TCR2_b; + }; + __IM uint8_t RESERVED13; + __IM uint16_t RESERVED14[18]; + __IOM uint16_t TGRE; /*!< (@ 0x00000172) Timer General Register E */ +} R_MTU3_Type; /*!< Size = 372 (0x174) */ + +/* =========================================================================================================================== */ +/* ================ R_MTU4 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Multi-Function Timer Pulse Unit Channel 4 (R_MTU4) + */ + +typedef struct /*!< (@ 0x90001200) R_MTU4 Structure */ +{ + __IM uint8_t RESERVED; + + union + { + __IOM uint8_t TCR; /*!< (@ 0x00000001) Timer Control Register */ + + struct + { + __IOM uint8_t TPSC : 3; /*!< [2..0] Time Prescaler Select */ + __IOM uint8_t CKEG : 2; /*!< [4..3] Clock Edge Select */ + __IOM uint8_t CCLR : 3; /*!< [7..5] Counter Clear Source Select */ + } TCR_b; + }; + __IM uint8_t RESERVED1; + + union + { + __IOM uint8_t TMDR1; /*!< (@ 0x00000003) Timer Mode Register 1 */ + + struct + { + __IOM uint8_t MD : 4; /*!< [3..0] Mode Select */ + __IOM uint8_t BFA : 1; /*!< [4..4] Buffer Operation A */ + __IOM uint8_t BFB : 1; /*!< [5..5] Buffer Operation B */ + uint8_t : 2; + } TMDR1_b; + }; + __IM uint16_t RESERVED2; + + union + { + __IOM uint8_t TIORH; /*!< (@ 0x00000006) Timer I/O Control Register H */ + + struct + { + __IOM uint8_t IOA : 4; /*!< [3..0] I/O Control A */ + __IOM uint8_t IOB : 4; /*!< [7..4] I/O Control B */ + } TIORH_b; + }; + + union + { + __IOM uint8_t TIORL; /*!< (@ 0x00000007) Timer I/O Control Register L */ + + struct + { + __IOM uint8_t IOC : 4; /*!< [3..0] I/O Control A */ + __IOM uint8_t IOD : 4; /*!< [7..4] I/O Control B */ + } TIORL_b; + }; + __IM uint8_t RESERVED3; + + union + { + __IOM uint8_t TIER; /*!< (@ 0x00000009) Timer Interrupt Enable Register */ + + struct + { + __IOM uint8_t TGIEA : 1; /*!< [0..0] TGR Interrupt Enable A */ + __IOM uint8_t TGIEB : 1; /*!< [1..1] TGR Interrupt Enable B */ + __IOM uint8_t TGIEC : 1; /*!< [2..2] TGR Interrupt Enable C */ + __IOM uint8_t TGIED : 1; /*!< [3..3] TGR Interrupt Enable D */ + __IOM uint8_t TCIEV : 1; /*!< [4..4] Overflow Interrupt Enable */ + uint8_t : 1; + __IOM uint8_t TTGE2 : 1; /*!< [6..6] A/D Converter Start Request Enable 2 */ + __IOM uint8_t TTGE : 1; /*!< [7..7] A/D Converter Start Request Enable */ + } TIER_b; + }; + __IM uint16_t RESERVED4[4]; + __IOM uint16_t TCNT; /*!< (@ 0x00000012) Timer Counter */ + __IM uint16_t RESERVED5[4]; + __IOM uint16_t TGRA; /*!< (@ 0x0000001C) Timer General Register A */ + __IOM uint16_t TGRB; /*!< (@ 0x0000001E) Timer General Register B */ + __IM uint16_t RESERVED6[4]; + __IOM uint16_t TGRC; /*!< (@ 0x00000028) Timer General Register C */ + __IOM uint16_t TGRD; /*!< (@ 0x0000002A) Timer General Register D */ + __IM uint8_t RESERVED7; + + union + { + __IOM uint8_t TSR; /*!< (@ 0x0000002D) Timer Status Register */ + + struct + { + __IOM uint8_t TGFA : 1; /*!< [0..0] Input Capture/Output Compare Flag A */ + __IOM uint8_t TGFB : 1; /*!< [1..1] Input Capture/Output Compare Flag B */ + __IOM uint8_t TGFC : 1; /*!< [2..2] Input Capture/Output Compare Flag C */ + __IOM uint8_t TGFD : 1; /*!< [3..3] Input Capture/Output Compare Flag D */ + __IOM uint8_t TCFV : 1; /*!< [4..4] Overflow flag */ + __IOM uint8_t TCFU : 1; /*!< [5..5] Underflow flag */ + uint8_t : 1; + __IM uint8_t TCFD : 1; /*!< [7..7] Count Direction Flag */ + } TSR_b; + }; + __IM uint16_t RESERVED8[5]; + __IM uint8_t RESERVED9; + + union + { + __IOM uint8_t TBTM; /*!< (@ 0x00000039) Timer Buffer Operation Transfer Mode Register */ + + struct + { + __IOM uint8_t TTSA : 1; /*!< [0..0] Timing Select A */ + __IOM uint8_t TTSB : 1; /*!< [1..1] Timing Select B */ + uint8_t : 6; + } TBTM_b; + }; + __IM uint16_t RESERVED10[3]; + + union + { + __IOM uint16_t TADCR; /*!< (@ 0x00000040) Timer A/D Converter Start Request Control Register */ + + struct + { + __IOM uint16_t ITB4VE : 1; /*!< [0..0] TCIV4 Interrupt Skipping Link Enable */ + __IOM uint16_t ITB3AE : 1; /*!< [1..1] TGIA3 Interrupt Skipping Link Enable */ + __IOM uint16_t ITA4VE : 1; /*!< [2..2] TCIV4 Interrupt Skipping Link Enable */ + __IOM uint16_t ITA3AE : 1; /*!< [3..3] TGIA3 Interrupt Skipping Link Enable */ + __IOM uint16_t DT4BE : 1; /*!< [4..4] Down-Count TRG4BN Enable */ + __IOM uint16_t UT4BE : 1; /*!< [5..5] Up-Count TRG4BN Enable */ + __IOM uint16_t DT4AE : 1; /*!< [6..6] Down-Count TRG4AN Enable */ + __IOM uint16_t UT4AE : 1; /*!< [7..7] Up-Count TRG4AN Enable */ + uint16_t : 6; + __IOM uint16_t BF : 2; /*!< [15..14] MTU4.TADCOBRA/TADCOBRB Transfer Timing Select */ + } TADCR_b; + }; + __IM uint16_t RESERVED11; + __IOM uint16_t TADCORA; /*!< (@ 0x00000044) Timer A/D Converter Start Request Cycle Set Register + * A */ + __IOM uint16_t TADCORB; /*!< (@ 0x00000046) Timer A/D Converter Start Request Cycle Set Register + * B */ + __IOM uint16_t TADCOBRA; /*!< (@ 0x00000048) Timer A/D Converter Start Request Cycle Set Buffer + * Register A */ + __IOM uint16_t TADCOBRB; /*!< (@ 0x0000004A) Timer A/D Converter Start Request Cycle Set Buffer + * Register B */ + __IM uint8_t RESERVED12; + + union + { + __IOM uint8_t TCR2; /*!< (@ 0x0000004D) Timer Control Register 2 */ + + struct + { + __IOM uint8_t TPSC2 : 3; /*!< [2..0] Time Prescaler Select */ + uint8_t : 5; + } TCR2_b; + }; + __IM uint16_t RESERVED13[19]; + __IOM uint16_t TGRE; /*!< (@ 0x00000074) Timer General Register E */ + __IOM uint16_t TGRF; /*!< (@ 0x00000076) Timer General Register F */ +} R_MTU4_Type; /*!< Size = 120 (0x78) */ + +/* =========================================================================================================================== */ +/* ================ R_MTU_NF ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Multi-Function Timer Pulse Unit Noise Filter (R_MTU_NF) + */ + +typedef struct /*!< (@ 0x90001290) R_MTU_NF Structure */ +{ + union + { + __IOM uint8_t NFCR0; /*!< (@ 0x00000000) Noise Filter Control Register 0 */ + + struct + { + __IOM uint8_t NFAEN : 1; /*!< [0..0] Noise Filter A Enable */ + __IOM uint8_t NFBEN : 1; /*!< [1..1] Noise Filter B Enable */ + __IOM uint8_t NFCEN : 1; /*!< [2..2] Noise Filter C Enable */ + __IOM uint8_t NFDEN : 1; /*!< [3..3] Noise Filter D Enable */ + __IOM uint8_t NFCS : 2; /*!< [5..4] Noise Filter Clock Select */ + uint8_t : 2; + } NFCR0_b; + }; + + union + { + __IOM uint8_t NFCR1; /*!< (@ 0x00000001) Noise Filter Control Register 1 */ + + struct + { + __IOM uint8_t NFAEN : 1; /*!< [0..0] Noise Filter A Enable */ + __IOM uint8_t NFBEN : 1; /*!< [1..1] Noise Filter B Enable */ + uint8_t : 2; + __IOM uint8_t NFCS : 2; /*!< [5..4] Noise Filter Clock Select */ + uint8_t : 2; + } NFCR1_b; + }; + + union + { + __IOM uint8_t NFCR2; /*!< (@ 0x00000002) Noise Filter Control Register 2 */ + + struct + { + __IOM uint8_t NFAEN : 1; /*!< [0..0] Noise Filter A Enable */ + __IOM uint8_t NFBEN : 1; /*!< [1..1] Noise Filter B Enable */ + uint8_t : 2; + __IOM uint8_t NFCS : 2; /*!< [5..4] Noise Filter Clock Select */ + uint8_t : 2; + } NFCR2_b; + }; + + union + { + __IOM uint8_t NFCR3; /*!< (@ 0x00000003) Noise Filter Control Register 3 */ + + struct + { + __IOM uint8_t NFAEN : 1; /*!< [0..0] Noise Filter A Enable */ + __IOM uint8_t NFBEN : 1; /*!< [1..1] Noise Filter B Enable */ + __IOM uint8_t NFCEN : 1; /*!< [2..2] Noise Filter C Enable */ + __IOM uint8_t NFDEN : 1; /*!< [3..3] Noise Filter D Enable */ + __IOM uint8_t NFCS : 2; /*!< [5..4] Noise Filter Clock Select */ + uint8_t : 2; + } NFCR3_b; + }; + + union + { + __IOM uint8_t NFCR4; /*!< (@ 0x00000004) Noise Filter Control Register 4 */ + + struct + { + __IOM uint8_t NFAEN : 1; /*!< [0..0] Noise Filter A Enable */ + __IOM uint8_t NFBEN : 1; /*!< [1..1] Noise Filter B Enable */ + __IOM uint8_t NFCEN : 1; /*!< [2..2] Noise Filter C Enable */ + __IOM uint8_t NFDEN : 1; /*!< [3..3] Noise Filter D Enable */ + __IOM uint8_t NFCS : 2; /*!< [5..4] Noise Filter Clock Select */ + uint8_t : 2; + } NFCR4_b; + }; + __IM uint8_t RESERVED[3]; + + union + { + __IOM uint8_t NFCR8; /*!< (@ 0x00000008) Noise Filter Control Register 8 */ + + struct + { + __IOM uint8_t NFAEN : 1; /*!< [0..0] Noise Filter A Enable */ + __IOM uint8_t NFBEN : 1; /*!< [1..1] Noise Filter B Enable */ + __IOM uint8_t NFCEN : 1; /*!< [2..2] Noise Filter C Enable */ + __IOM uint8_t NFDEN : 1; /*!< [3..3] Noise Filter D Enable */ + __IOM uint8_t NFCS : 2; /*!< [5..4] Noise Filter Clock Select */ + uint8_t : 2; + } NFCR8_b; + }; + + union + { + __IOM uint8_t NFCRC; /*!< (@ 0x00000009) Noise Filter Control Register C */ + + struct + { + __IOM uint8_t NFAEN : 1; /*!< [0..0] Noise Filter A Enable */ + __IOM uint8_t NFBEN : 1; /*!< [1..1] Noise Filter B Enable */ + __IOM uint8_t NFCEN : 1; /*!< [2..2] Noise Filter C Enable */ + __IOM uint8_t NFDEN : 1; /*!< [3..3] Noise Filter D Enable */ + __IOM uint8_t NFCS : 2; /*!< [5..4] Noise Filter Clock Select */ + uint8_t : 2; + } NFCRC_b; + }; + __IM uint8_t RESERVED1[2041]; + + union + { + __IOM uint8_t NFCR6; /*!< (@ 0x00000803) Noise Filter Control Register 6 */ + + struct + { + __IOM uint8_t NFAEN : 1; /*!< [0..0] Noise Filter A Enable */ + __IOM uint8_t NFBEN : 1; /*!< [1..1] Noise Filter B Enable */ + __IOM uint8_t NFCEN : 1; /*!< [2..2] Noise Filter C Enable */ + __IOM uint8_t NFDEN : 1; /*!< [3..3] Noise Filter D Enable */ + __IOM uint8_t NFCS : 2; /*!< [5..4] Noise Filter Clock Select */ + uint8_t : 2; + } NFCR6_b; + }; + + union + { + __IOM uint8_t NFCR7; /*!< (@ 0x00000804) Noise Filter Control Register 7 */ + + struct + { + __IOM uint8_t NFAEN : 1; /*!< [0..0] Noise Filter A Enable */ + __IOM uint8_t NFBEN : 1; /*!< [1..1] Noise Filter B Enable */ + __IOM uint8_t NFCEN : 1; /*!< [2..2] Noise Filter C Enable */ + __IOM uint8_t NFDEN : 1; /*!< [3..3] Noise Filter D Enable */ + __IOM uint8_t NFCS : 2; /*!< [5..4] Noise Filter Clock Select */ + uint8_t : 2; + } NFCR7_b; + }; + + union + { + __IOM uint8_t NFCR5; /*!< (@ 0x00000805) Noise Filter Control Register 5 */ + + struct + { + __IOM uint8_t NFUEN : 1; /*!< [0..0] Noise Filter U Enable */ + __IOM uint8_t NFVEN : 1; /*!< [1..1] Noise Filter V Enable */ + __IOM uint8_t NFWEN : 1; /*!< [2..2] Noise Filter W Enable */ + uint8_t : 1; + __IOM uint8_t NFCS : 2; /*!< [5..4] Noise Filter Clock Select */ + uint8_t : 2; + } NFCR5_b; + }; +} R_MTU_NF_Type; /*!< Size = 2054 (0x806) */ + +/* =========================================================================================================================== */ +/* ================ R_MTU0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Multi-Function Timer Pulse Unit Channel 0 (R_MTU0) + */ + +typedef struct /*!< (@ 0x90001300) R_MTU0 Structure */ +{ + union + { + __IOM uint8_t TCR; /*!< (@ 0x00000000) Timer Control Register */ + + struct + { + __IOM uint8_t TPSC : 3; /*!< [2..0] Time Prescaler Select */ + __IOM uint8_t CKEG : 2; /*!< [4..3] Clock Edge Select */ + __IOM uint8_t CCLR : 3; /*!< [7..5] Counter Clear Source Select */ + } TCR_b; + }; + + union + { + __IOM uint8_t TMDR1; /*!< (@ 0x00000001) Timer Mode Register 1 */ + + struct + { + __IOM uint8_t MD : 4; /*!< [3..0] Mode Select */ + __IOM uint8_t BFA : 1; /*!< [4..4] Buffer Operation A */ + __IOM uint8_t BFB : 1; /*!< [5..5] Buffer Operation B */ + __IOM uint8_t BFE : 1; /*!< [6..6] Buffer Operation E */ + uint8_t : 1; + } TMDR1_b; + }; + + union + { + __IOM uint8_t TIORH; /*!< (@ 0x00000002) Timer I/O Control Register H */ + + struct + { + __IOM uint8_t IOA : 4; /*!< [3..0] I/O Control A */ + __IOM uint8_t IOB : 4; /*!< [7..4] I/O Control B */ + } TIORH_b; + }; + + union + { + __IOM uint8_t TIORL; /*!< (@ 0x00000003) Timer I/O Control Register L */ + + struct + { + __IOM uint8_t IOC : 4; /*!< [3..0] I/O Control A */ + __IOM uint8_t IOD : 4; /*!< [7..4] I/O Control B */ + } TIORL_b; + }; + + union + { + __IOM uint8_t TIER; /*!< (@ 0x00000004) Timer Interrupt Enable Register */ + + struct + { + __IOM uint8_t TGIEA : 1; /*!< [0..0] TGR Interrupt Enable A */ + __IOM uint8_t TGIEB : 1; /*!< [1..1] TGR Interrupt Enable B */ + __IOM uint8_t TGIEC : 1; /*!< [2..2] TGR Interrupt Enable C */ + __IOM uint8_t TGIED : 1; /*!< [3..3] TGR Interrupt Enable D */ + __IOM uint8_t TCIEV : 1; /*!< [4..4] Overflow Interrupt Enable */ + uint8_t : 2; + __IOM uint8_t TTGE : 1; /*!< [7..7] A/D Converter Start Request Enable */ + } TIER_b; + }; + __IM uint8_t RESERVED; + __IOM uint16_t TCNT; /*!< (@ 0x00000006) Timer Counter */ + __IOM uint16_t TGRA; /*!< (@ 0x00000008) Timer General Register A */ + __IOM uint16_t TGRB; /*!< (@ 0x0000000A) Timer General Register B */ + __IOM uint16_t TGRC; /*!< (@ 0x0000000C) Timer General Register C */ + __IOM uint16_t TGRD; /*!< (@ 0x0000000E) Timer General Register D */ + __IM uint16_t RESERVED1[8]; + __IOM uint16_t TGRE; /*!< (@ 0x00000020) Timer General Register E */ + __IOM uint16_t TGRF; /*!< (@ 0x00000022) Timer General Register F */ + + union + { + __IOM uint8_t TIER2; /*!< (@ 0x00000024) Timer Interrupt Enable Register 2 */ + + struct + { + __IOM uint8_t TGIEE : 1; /*!< [0..0] TGR Interrupt Enable E */ + __IOM uint8_t TGIEF : 1; /*!< [1..1] TGR Interrupt Enable F */ + uint8_t : 5; + __IOM uint8_t TTGE2 : 1; /*!< [7..7] A/D Converter Start Request Enable 2 */ + } TIER2_b; + }; + __IM uint8_t RESERVED2; + + union + { + __IOM uint8_t TBTM; /*!< (@ 0x00000026) Timer Buffer Operation Transfer Mode Register */ + + struct + { + __IOM uint8_t TTSA : 1; /*!< [0..0] Timing Select A */ + __IOM uint8_t TTSB : 1; /*!< [1..1] Timing Select B */ + __IOM uint8_t TTSE : 1; /*!< [2..2] Timing Select E */ + uint8_t : 5; + } TBTM_b; + }; + __IM uint8_t RESERVED3; + + union + { + __IOM uint8_t TCR2; /*!< (@ 0x00000028) Timer Control Register 2 */ + + struct + { + __IOM uint8_t TPSC2 : 3; /*!< [2..0] Time Prescaler Select */ + uint8_t : 5; + } TCR2_b; + }; + __IM uint8_t RESERVED4; + __IM uint16_t RESERVED5; +} R_MTU0_Type; /*!< Size = 44 (0x2c) */ + +/* =========================================================================================================================== */ +/* ================ R_MTU1 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Multi-Function Timer Pulse Unit Channel 1 (R_MTU1) + */ + +typedef struct /*!< (@ 0x90001380) R_MTU1 Structure */ +{ + union + { + __IOM uint8_t TCR; /*!< (@ 0x00000000) Timer Control Register */ + + struct + { + __IOM uint8_t TPSC : 3; /*!< [2..0] Time Prescaler Select */ + __IOM uint8_t CKEG : 2; /*!< [4..3] Clock Edge Select */ + __IOM uint8_t CCLR : 3; /*!< [7..5] Counter Clear Source Select */ + } TCR_b; + }; + + union + { + __IOM uint8_t TMDR1; /*!< (@ 0x00000001) Timer Mode Register 1 */ + + struct + { + __IOM uint8_t MD : 4; /*!< [3..0] Mode Select */ + uint8_t : 4; + } TMDR1_b; + }; + + union + { + __IOM uint8_t TIOR; /*!< (@ 0x00000002) Timer I/O Control Register */ + + struct + { + __IOM uint8_t IOA : 4; /*!< [3..0] I/O Control A */ + __IOM uint8_t IOB : 4; /*!< [7..4] I/O Control B */ + } TIOR_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint8_t TIER; /*!< (@ 0x00000004) Timer Interrupt Enable Register */ + + struct + { + __IOM uint8_t TGIEA : 1; /*!< [0..0] TGR Interrupt Enable A */ + __IOM uint8_t TGIEB : 1; /*!< [1..1] TGR Interrupt Enable B */ + uint8_t : 2; + __IOM uint8_t TCIEV : 1; /*!< [4..4] Overflow Interrupt Enable */ + __IOM uint8_t TCIEU : 1; /*!< [5..5] Underflow Interrupt Enable */ + uint8_t : 1; + __IOM uint8_t TTGE : 1; /*!< [7..7] A/D Converter Start Request Enable */ + } TIER_b; + }; + + union + { + __IOM uint8_t TSR; /*!< (@ 0x00000005) Timer Status Register */ + + struct + { + __IOM uint8_t TGFA : 1; /*!< [0..0] Input Capture/Output Compare Flag A */ + __IOM uint8_t TGFB : 1; /*!< [1..1] Input Capture/Output Compare Flag B */ + __IOM uint8_t TGFC : 1; /*!< [2..2] Input Capture/Output Compare Flag C */ + __IOM uint8_t TGFD : 1; /*!< [3..3] Input Capture/Output Compare Flag D */ + __IOM uint8_t TCFV : 1; /*!< [4..4] Overflow flag */ + __IOM uint8_t TCFU : 1; /*!< [5..5] Underflow flag */ + uint8_t : 1; + __IM uint8_t TCFD : 1; /*!< [7..7] Count Direction Flag */ + } TSR_b; + }; + __IOM uint16_t TCNT; /*!< (@ 0x00000006) Timer Counter */ + __IOM uint16_t TGRA; /*!< (@ 0x00000008) Timer General Register A */ + __IOM uint16_t TGRB; /*!< (@ 0x0000000A) Timer General Register B */ + __IM uint32_t RESERVED1; + + union + { + __IOM uint8_t TICCR; /*!< (@ 0x00000010) Timer Input Capture Control Register */ + + struct + { + __IOM uint8_t I1AE : 1; /*!< [0..0] Input Capture Enable */ + __IOM uint8_t I1BE : 1; /*!< [1..1] Input Capture Enable */ + __IOM uint8_t I2AE : 1; /*!< [2..2] Input Capture Enable */ + __IOM uint8_t I2BE : 1; /*!< [3..3] Input Capture Enable */ + uint8_t : 4; + } TICCR_b; + }; + + union + { + __IOM uint8_t TMDR3; /*!< (@ 0x00000011) Timer Mode Register 3 */ + + struct + { + __IOM uint8_t LWA : 1; /*!< [0..0] MTU1/MTU2 Combination Longword Access Control */ + __IOM uint8_t PHCKSEL : 1; /*!< [1..1] External Input Phase Clock Select */ + uint8_t : 6; + } TMDR3_b; + }; + __IM uint16_t RESERVED2; + + union + { + __IOM uint8_t TCR2; /*!< (@ 0x00000014) Timer Control Register 2 */ + + struct + { + __IOM uint8_t TPSC2 : 3; /*!< [2..0] Time Prescaler Select */ + __IOM uint8_t PCB : 2; /*!< [4..3] Functional Expansion Control for Phase Counting Modes + * 2, 3, and 5 */ + uint8_t : 3; + } TCR2_b; + }; + __IM uint8_t RESERVED3; + __IM uint16_t RESERVED4; + __IM uint32_t RESERVED5[2]; + __IOM uint32_t TCNTLW; /*!< (@ 0x00000020) Timer Longword Counter */ + __IOM uint32_t TGRALW; /*!< (@ 0x00000024) Timer Longword General Register A */ + __IOM uint32_t TGRBLW; /*!< (@ 0x00000028) Timer Longword General Register B */ +} R_MTU1_Type; /*!< Size = 44 (0x2c) */ + +/* =========================================================================================================================== */ +/* ================ R_MTU2 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Multi-Function Timer Pulse Unit Channel 2 (R_MTU2) + */ + +typedef struct /*!< (@ 0x90001400) R_MTU2 Structure */ +{ + union + { + __IOM uint8_t TCR; /*!< (@ 0x00000000) Timer Control Register */ + + struct + { + __IOM uint8_t TPSC : 3; /*!< [2..0] Time Prescaler Select */ + __IOM uint8_t CKEG : 2; /*!< [4..3] Clock Edge Select */ + __IOM uint8_t CCLR : 3; /*!< [7..5] Counter Clear Source Select */ + } TCR_b; + }; + + union + { + __IOM uint8_t TMDR1; /*!< (@ 0x00000001) Timer Mode Register 1 */ + + struct + { + __IOM uint8_t MD : 4; /*!< [3..0] Mode Select */ + uint8_t : 4; + } TMDR1_b; + }; + + union + { + __IOM uint8_t TIOR; /*!< (@ 0x00000002) Timer I/O Control Register */ + + struct + { + __IOM uint8_t IOA : 4; /*!< [3..0] I/O Control A */ + __IOM uint8_t IOB : 4; /*!< [7..4] I/O Control B */ + } TIOR_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint8_t TIER; /*!< (@ 0x00000004) Timer Interrupt Enable Register */ + + struct + { + __IOM uint8_t TGIEA : 1; /*!< [0..0] TGR Interrupt Enable A */ + __IOM uint8_t TGIEB : 1; /*!< [1..1] TGR Interrupt Enable B */ + uint8_t : 2; + __IOM uint8_t TCIEV : 1; /*!< [4..4] Overflow Interrupt Enable */ + __IOM uint8_t TCIEU : 1; /*!< [5..5] Underflow Interrupt Enable */ + uint8_t : 1; + __IOM uint8_t TTGE : 1; /*!< [7..7] A/D Converter Start Request Enable */ + } TIER_b; + }; + + union + { + __IOM uint8_t TSR; /*!< (@ 0x00000005) Timer Status Register */ + + struct + { + __IOM uint8_t TGFA : 1; /*!< [0..0] Input Capture/Output Compare Flag A */ + __IOM uint8_t TGFB : 1; /*!< [1..1] Input Capture/Output Compare Flag B */ + __IOM uint8_t TGFC : 1; /*!< [2..2] Input Capture/Output Compare Flag C */ + __IOM uint8_t TGFD : 1; /*!< [3..3] Input Capture/Output Compare Flag D */ + __IOM uint8_t TCFV : 1; /*!< [4..4] Overflow flag */ + __IOM uint8_t TCFU : 1; /*!< [5..5] Underflow flag */ + uint8_t : 1; + __IM uint8_t TCFD : 1; /*!< [7..7] Count Direction Flag */ + } TSR_b; + }; + __IOM uint16_t TCNT; /*!< (@ 0x00000006) Timer Counter */ + __IOM uint16_t TGRA; /*!< (@ 0x00000008) Timer General Register A */ + __IOM uint16_t TGRB; /*!< (@ 0x0000000A) Timer General Register B */ + + union + { + __IOM uint8_t TCR2; /*!< (@ 0x0000000C) Timer Control Register 2 */ + + struct + { + __IOM uint8_t TPSC2 : 3; /*!< [2..0] Time Prescaler Select */ + __IOM uint8_t PCB : 2; /*!< [4..3] Functional Expansion Control for Phase Counting Modes + * 2, 3, and 5 */ + uint8_t : 3; + } TCR2_b; + }; + __IM uint8_t RESERVED1; + __IM uint16_t RESERVED2; +} R_MTU2_Type; /*!< Size = 16 (0x10) */ + +/* =========================================================================================================================== */ +/* ================ R_MTU8 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Multi-Function Timer Pulse Unit Channel 8 (R_MTU8) + */ + +typedef struct /*!< (@ 0x90001600) R_MTU8 Structure */ +{ + union + { + __IOM uint8_t TCR; /*!< (@ 0x00000000) Timer Control Register */ + + struct + { + __IOM uint8_t TPSC : 3; /*!< [2..0] Time Prescaler Select */ + __IOM uint8_t CKEG : 2; /*!< [4..3] Clock Edge Select */ + __IOM uint8_t CCLR : 3; /*!< [7..5] Counter Clear Source Select */ + } TCR_b; + }; + + union + { + __IOM uint8_t TMDR1; /*!< (@ 0x00000001) Timer Mode Register 1 */ + + struct + { + __IOM uint8_t MD : 4; /*!< [3..0] Mode Select */ + __IOM uint8_t BFA : 1; /*!< [4..4] Buffer Operation A */ + __IOM uint8_t BFB : 1; /*!< [5..5] Buffer Operation B */ + uint8_t : 2; + } TMDR1_b; + }; + + union + { + __IOM uint8_t TIORH; /*!< (@ 0x00000002) Timer I/O Control Register H */ + + struct + { + __IOM uint8_t IOA : 4; /*!< [3..0] I/O Control A */ + __IOM uint8_t IOB : 4; /*!< [7..4] I/O Control B */ + } TIORH_b; + }; + + union + { + __IOM uint8_t TIORL; /*!< (@ 0x00000003) Timer I/O Control Register L */ + + struct + { + __IOM uint8_t IOC : 4; /*!< [3..0] I/O Control A */ + __IOM uint8_t IOD : 4; /*!< [7..4] I/O Control B */ + } TIORL_b; + }; + + union + { + __IOM uint8_t TIER; /*!< (@ 0x00000004) Timer Interrupt Enable Register */ + + struct + { + __IOM uint8_t TGIEA : 1; /*!< [0..0] TGR Interrupt Enable A */ + __IOM uint8_t TGIEB : 1; /*!< [1..1] TGR Interrupt Enable B */ + __IOM uint8_t TGIEC : 1; /*!< [2..2] TGR Interrupt Enable C */ + __IOM uint8_t TGIED : 1; /*!< [3..3] TGR Interrupt Enable D */ + __IOM uint8_t TCIEV : 1; /*!< [4..4] Overflow Interrupt Enable */ + uint8_t : 3; + } TIER_b; + }; + __IM uint8_t RESERVED; + + union + { + __IOM uint8_t TCR2; /*!< (@ 0x00000006) Timer Control Register 2 */ + + struct + { + __IOM uint8_t TPSC2 : 3; /*!< [2..0] Time Prescaler Select */ + uint8_t : 5; + } TCR2_b; + }; + __IM uint8_t RESERVED1; + __IOM uint32_t TCNT; /*!< (@ 0x00000008) Timer Counter */ + __IOM uint32_t TGRA; /*!< (@ 0x0000000C) Timer General Register A */ + __IOM uint32_t TGRB; /*!< (@ 0x00000010) Timer General Register B */ + __IOM uint32_t TGRC; /*!< (@ 0x00000014) Timer General Register C */ + __IOM uint32_t TGRD; /*!< (@ 0x00000018) Timer General Register D */ +} R_MTU8_Type; /*!< Size = 28 (0x1c) */ + +/* =========================================================================================================================== */ +/* ================ R_MTU6 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Multi-Function Timer Pulse Unit Channel 6 (R_MTU6) + */ + +typedef struct /*!< (@ 0x90001900) R_MTU6 Structure */ +{ + __IM uint16_t RESERVED[128]; + + union + { + __IOM uint8_t TCR; /*!< (@ 0x00000100) Timer Control Register */ + + struct + { + __IOM uint8_t TPSC : 3; /*!< [2..0] Time Prescaler Select */ + __IOM uint8_t CKEG : 2; /*!< [4..3] Clock Edge Select */ + __IOM uint8_t CCLR : 3; /*!< [7..5] Counter Clear Source Select */ + } TCR_b; + }; + __IM uint8_t RESERVED1; + + union + { + __IOM uint8_t TMDR1; /*!< (@ 0x00000102) Timer Mode Register 1 */ + + struct + { + __IOM uint8_t MD : 4; /*!< [3..0] Mode Select */ + __IOM uint8_t BFA : 1; /*!< [4..4] Buffer Operation A */ + __IOM uint8_t BFB : 1; /*!< [5..5] Buffer Operation B */ + uint8_t : 2; + } TMDR1_b; + }; + __IM uint8_t RESERVED2; + + union + { + __IOM uint8_t TIORH; /*!< (@ 0x00000104) Timer I/O Control Register H */ + + struct + { + __IOM uint8_t IOA : 4; /*!< [3..0] I/O Control A */ + __IOM uint8_t IOB : 4; /*!< [7..4] I/O Control B */ + } TIORH_b; + }; + + union + { + __IOM uint8_t TIORL; /*!< (@ 0x00000105) Timer I/O Control Register L */ + + struct + { + __IOM uint8_t IOC : 4; /*!< [3..0] I/O Control A */ + __IOM uint8_t IOD : 4; /*!< [7..4] I/O Control B */ + } TIORL_b; + }; + __IM uint16_t RESERVED3; + + union + { + __IOM uint8_t TIER; /*!< (@ 0x00000108) Timer Interrupt Enable Register */ + + struct + { + __IOM uint8_t TGIEA : 1; /*!< [0..0] TGR Interrupt Enable A */ + __IOM uint8_t TGIEB : 1; /*!< [1..1] TGR Interrupt Enable B */ + __IOM uint8_t TGIEC : 1; /*!< [2..2] TGR Interrupt Enable C */ + __IOM uint8_t TGIED : 1; /*!< [3..3] TGR Interrupt Enable D */ + __IOM uint8_t TCIEV : 1; /*!< [4..4] Overflow Interrupt Enable */ + uint8_t : 2; + __IOM uint8_t TTGE : 1; /*!< [7..7] A/D Converter Start Request Enable */ + } TIER_b; + }; + __IM uint8_t RESERVED4; + __IM uint16_t RESERVED5[3]; + __IOM uint16_t TCNT; /*!< (@ 0x00000110) Timer Counter */ + __IM uint16_t RESERVED6[3]; + __IOM uint16_t TGRA; /*!< (@ 0x00000118) Timer General Register A */ + __IOM uint16_t TGRB; /*!< (@ 0x0000011A) Timer General Register B */ + __IM uint16_t RESERVED7[4]; + __IOM uint16_t TGRC; /*!< (@ 0x00000124) Timer General Register C */ + __IOM uint16_t TGRD; /*!< (@ 0x00000126) Timer General Register D */ + __IM uint16_t RESERVED8[2]; + + union + { + __IOM uint8_t TSR; /*!< (@ 0x0000012C) Timer Status Register */ + + struct + { + __IOM uint8_t TGFA : 1; /*!< [0..0] Input Capture/Output Compare Flag A */ + __IOM uint8_t TGFB : 1; /*!< [1..1] Input Capture/Output Compare Flag B */ + __IOM uint8_t TGFC : 1; /*!< [2..2] Input Capture/Output Compare Flag C */ + __IOM uint8_t TGFD : 1; /*!< [3..3] Input Capture/Output Compare Flag D */ + __IOM uint8_t TCFV : 1; /*!< [4..4] Overflow flag */ + __IOM uint8_t TCFU : 1; /*!< [5..5] Underflow flag */ + uint8_t : 1; + __IM uint8_t TCFD : 1; /*!< [7..7] Count Direction Flag */ + } TSR_b; + }; + __IM uint8_t RESERVED9; + __IM uint16_t RESERVED10[5]; + + union + { + __IOM uint8_t TBTM; /*!< (@ 0x00000138) Timer Buffer Operation Transfer Mode Register */ + + struct + { + __IOM uint8_t TTSA : 1; /*!< [0..0] Timing Select A */ + __IOM uint8_t TTSB : 1; /*!< [1..1] Timing Select B */ + uint8_t : 6; + } TBTM_b; + }; + __IM uint8_t RESERVED11; + __IM uint16_t RESERVED12[9]; + + union + { + __IOM uint8_t TCR2; /*!< (@ 0x0000014C) Timer Control Register 2 */ + + struct + { + __IOM uint8_t TPSC2 : 3; /*!< [2..0] Time Prescaler Select */ + uint8_t : 5; + } TCR2_b; + }; + __IM uint8_t RESERVED13; + __IM uint16_t RESERVED14; + + union + { + __IOM uint8_t TSYCR; /*!< (@ 0x00000150) Timer Synchronous Clear Register */ + + struct + { + __IOM uint8_t CE2B : 1; /*!< [0..0] Clear Enable 2B */ + __IOM uint8_t CE2A : 1; /*!< [1..1] Clear Enable 2A */ + __IOM uint8_t CE1B : 1; /*!< [2..2] Clear Enable 1B */ + __IOM uint8_t CE1A : 1; /*!< [3..3] Clear Enable 1A */ + __IOM uint8_t CE0D : 1; /*!< [4..4] Clear Enable 0D */ + __IOM uint8_t CE0C : 1; /*!< [5..5] Clear Enable 0C */ + __IOM uint8_t CE0B : 1; /*!< [6..6] Clear Enable 0B */ + __IOM uint8_t CE0A : 1; /*!< [7..7] Clear Enable 0A */ + } TSYCR_b; + }; + __IM uint8_t RESERVED15; + __IM uint16_t RESERVED16[16]; + __IOM uint16_t TGRE; /*!< (@ 0x00000172) Timer General Register E */ +} R_MTU6_Type; /*!< Size = 372 (0x174) */ + +/* =========================================================================================================================== */ +/* ================ R_MTU7 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Multi-Function Timer Pulse Unit Channel 7 (R_MTU7) + */ + +typedef struct /*!< (@ 0x90001A00) R_MTU7 Structure */ +{ + __IM uint8_t RESERVED; + + union + { + __IOM uint8_t TCR; /*!< (@ 0x00000001) Timer Control Register */ + + struct + { + __IOM uint8_t TPSC : 3; /*!< [2..0] Time Prescaler Select */ + __IOM uint8_t CKEG : 2; /*!< [4..3] Clock Edge Select */ + __IOM uint8_t CCLR : 3; /*!< [7..5] Counter Clear Source Select */ + } TCR_b; + }; + __IM uint8_t RESERVED1; + + union + { + __IOM uint8_t TMDR1; /*!< (@ 0x00000003) Timer Mode Register 1 */ + + struct + { + __IOM uint8_t MD : 4; /*!< [3..0] Mode Select */ + __IOM uint8_t BFA : 1; /*!< [4..4] Buffer Operation A */ + __IOM uint8_t BFB : 1; /*!< [5..5] Buffer Operation B */ + uint8_t : 2; + } TMDR1_b; + }; + __IM uint16_t RESERVED2; + + union + { + __IOM uint8_t TIORH; /*!< (@ 0x00000006) Timer I/O Control Register H */ + + struct + { + __IOM uint8_t IOA : 4; /*!< [3..0] I/O Control A */ + __IOM uint8_t IOB : 4; /*!< [7..4] I/O Control B */ + } TIORH_b; + }; + + union + { + __IOM uint8_t TIORL; /*!< (@ 0x00000007) Timer I/O Control Register L */ + + struct + { + __IOM uint8_t IOC : 4; /*!< [3..0] I/O Control A */ + __IOM uint8_t IOD : 4; /*!< [7..4] I/O Control B */ + } TIORL_b; + }; + __IM uint8_t RESERVED3; + + union + { + __IOM uint8_t TIER; /*!< (@ 0x00000009) Timer Interrupt Enable Register */ + + struct + { + __IOM uint8_t TGIEA : 1; /*!< [0..0] TGR Interrupt Enable A */ + __IOM uint8_t TGIEB : 1; /*!< [1..1] TGR Interrupt Enable B */ + __IOM uint8_t TGIEC : 1; /*!< [2..2] TGR Interrupt Enable C */ + __IOM uint8_t TGIED : 1; /*!< [3..3] TGR Interrupt Enable D */ + __IOM uint8_t TCIEV : 1; /*!< [4..4] Overflow Interrupt Enable */ + uint8_t : 1; + __IOM uint8_t TTGE2 : 1; /*!< [6..6] A/D Converter Start Request Enable 2 */ + __IOM uint8_t TTGE : 1; /*!< [7..7] A/D Converter Start Request Enable */ + } TIER_b; + }; + __IM uint16_t RESERVED4[4]; + __IOM uint16_t TCNT; /*!< (@ 0x00000012) Timer Counter */ + __IM uint16_t RESERVED5[4]; + __IOM uint16_t TGRA; /*!< (@ 0x0000001C) Timer General Register A */ + __IOM uint16_t TGRB; /*!< (@ 0x0000001E) Timer General Register B */ + __IM uint16_t RESERVED6[4]; + __IOM uint16_t TGRC; /*!< (@ 0x00000028) Timer General Register C */ + __IOM uint16_t TGRD; /*!< (@ 0x0000002A) Timer General Register D */ + __IM uint8_t RESERVED7; + + union + { + __IOM uint8_t TSR; /*!< (@ 0x0000002D) Timer Status Register */ + + struct + { + __IOM uint8_t TGFA : 1; /*!< [0..0] Input Capture/Output Compare Flag A */ + __IOM uint8_t TGFB : 1; /*!< [1..1] Input Capture/Output Compare Flag B */ + __IOM uint8_t TGFC : 1; /*!< [2..2] Input Capture/Output Compare Flag C */ + __IOM uint8_t TGFD : 1; /*!< [3..3] Input Capture/Output Compare Flag D */ + __IOM uint8_t TCFV : 1; /*!< [4..4] Overflow flag */ + __IOM uint8_t TCFU : 1; /*!< [5..5] Underflow flag */ + uint8_t : 1; + __IM uint8_t TCFD : 1; /*!< [7..7] Count Direction Flag */ + } TSR_b; + }; + __IM uint16_t RESERVED8[5]; + __IM uint8_t RESERVED9; + + union + { + __IOM uint8_t TBTM; /*!< (@ 0x00000039) Timer Buffer Operation Transfer Mode Register */ + + struct + { + __IOM uint8_t TTSA : 1; /*!< [0..0] Timing Select A */ + __IOM uint8_t TTSB : 1; /*!< [1..1] Timing Select B */ + uint8_t : 6; + } TBTM_b; + }; + __IM uint16_t RESERVED10[3]; + + union + { + __IOM uint16_t TADCR; /*!< (@ 0x00000040) Timer A/D Converter Start Request Control Register */ + + struct + { + __IOM uint16_t ITB7VE : 1; /*!< [0..0] TCIV7 Interrupt Skipping Link Enable */ + __IOM uint16_t ITB6AE : 1; /*!< [1..1] TGIA6 Interrupt Skipping Link Enable */ + __IOM uint16_t ITA7VE : 1; /*!< [2..2] TCIV7 Interrupt Skipping Link Enable */ + __IOM uint16_t ITA6AE : 1; /*!< [3..3] TGIA6 Interrupt Skipping Link Enable */ + __IOM uint16_t DT7BE : 1; /*!< [4..4] Down-Count TRG7BN Enable */ + __IOM uint16_t UT7BE : 1; /*!< [5..5] Up-Count TRG7BN Enable */ + __IOM uint16_t DT7AE : 1; /*!< [6..6] Down-Count TRG7AN Enable */ + __IOM uint16_t UT7AE : 1; /*!< [7..7] Up-Count TRG7AN Enable */ + uint16_t : 6; + __IOM uint16_t BF : 2; /*!< [15..14] MTU7.TADCOBRA/TADCOBRB Transfer Timing Select */ + } TADCR_b; + }; + __IM uint16_t RESERVED11; + __IOM uint16_t TADCORA; /*!< (@ 0x00000044) Timer A/D Converter Start Request Cycle Set Register + * A */ + __IOM uint16_t TADCORB; /*!< (@ 0x00000046) Timer A/D Converter Start Request Cycle Set Register + * B */ + __IOM uint16_t TADCOBRA; /*!< (@ 0x00000048) Timer A/D Converter Start Request Cycle Set Buffer + * Register A */ + __IOM uint16_t TADCOBRB; /*!< (@ 0x0000004A) Timer A/D Converter Start Request Cycle Set Buffer + * Register B */ + __IM uint8_t RESERVED12; + + union + { + __IOM uint8_t TCR2; /*!< (@ 0x0000004D) Timer Control Register 2 */ + + struct + { + __IOM uint8_t TPSC2 : 3; /*!< [2..0] Time Prescaler Select */ + uint8_t : 5; + } TCR2_b; + }; + __IM uint16_t RESERVED13[19]; + __IOM uint16_t TGRE; /*!< (@ 0x00000074) Timer General Register E */ + __IOM uint16_t TGRF; /*!< (@ 0x00000076) Timer General Register F */ +} R_MTU7_Type; /*!< Size = 120 (0x78) */ + +/* =========================================================================================================================== */ +/* ================ R_MTU5 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Multi-Function Timer Pulse Unit Channel 5 (R_MTU5) + */ + +typedef struct /*!< (@ 0x90001C00) R_MTU5 Structure */ +{ + __IM uint16_t RESERVED[64]; + __IOM uint16_t TCNTU; /*!< (@ 0x00000080) Timer Counter U */ + __IOM uint16_t TGRU; /*!< (@ 0x00000082) Timer General Register U */ + + union + { + __IOM uint8_t TCRU; /*!< (@ 0x00000084) Timer Control Register U */ + + struct + { + __IOM uint8_t TPSC : 2; /*!< [1..0] Time Prescaler Select */ + uint8_t : 6; + } TCRU_b; + }; + + union + { + __IOM uint8_t TCR2U; /*!< (@ 0x00000085) Timer Control Register 2U */ + + struct + { + __IOM uint8_t TPSC2 : 3; /*!< [2..0] Time Prescaler Select */ + __IOM uint8_t CKEG : 2; /*!< [4..3] Clock Edge Select */ + uint8_t : 3; + } TCR2U_b; + }; + + union + { + __IOM uint8_t TIORU; /*!< (@ 0x00000086) Timer I/O Control Register U */ + + struct + { + __IOM uint8_t IOC : 5; /*!< [4..0] I/O Control C */ + uint8_t : 3; + } TIORU_b; + }; + __IM uint8_t RESERVED1; + __IM uint16_t RESERVED2[4]; + __IOM uint16_t TCNTV; /*!< (@ 0x00000090) Timer Counter V */ + __IOM uint16_t TGRV; /*!< (@ 0x00000092) Timer General Register V */ + + union + { + __IOM uint8_t TCRV; /*!< (@ 0x00000094) Timer Control Register V */ + + struct + { + __IOM uint8_t TPSC : 2; /*!< [1..0] Time Prescaler Select */ + uint8_t : 6; + } TCRV_b; + }; + + union + { + __IOM uint8_t TCR2V; /*!< (@ 0x00000095) Timer Control Register 2V */ + + struct + { + __IOM uint8_t TPSC2 : 3; /*!< [2..0] Time Prescaler Select */ + __IOM uint8_t CKEG : 2; /*!< [4..3] Clock Edge Select */ + uint8_t : 3; + } TCR2V_b; + }; + + union + { + __IOM uint8_t TIORV; /*!< (@ 0x00000096) Timer I/O Control Register V */ + + struct + { + __IOM uint8_t IOC : 5; /*!< [4..0] I/O Control C */ + uint8_t : 3; + } TIORV_b; + }; + __IM uint8_t RESERVED3; + __IM uint16_t RESERVED4[4]; + __IOM uint16_t TCNTW; /*!< (@ 0x000000A0) Timer Counter W */ + __IOM uint16_t TGRW; /*!< (@ 0x000000A2) Timer General Register W */ + + union + { + __IOM uint8_t TCRW; /*!< (@ 0x000000A4) Timer Control Register W */ + + struct + { + __IOM uint8_t TPSC : 2; /*!< [1..0] Time Prescaler Select */ + uint8_t : 6; + } TCRW_b; + }; + + union + { + __IOM uint8_t TCR2W; /*!< (@ 0x000000A5) Timer Control Register 2W */ + + struct + { + __IOM uint8_t TPSC2 : 3; /*!< [2..0] Time Prescaler Select */ + __IOM uint8_t CKEG : 2; /*!< [4..3] Clock Edge Select */ + uint8_t : 3; + } TCR2W_b; + }; + + union + { + __IOM uint8_t TIORW; /*!< (@ 0x000000A6) Timer I/O Control Register W */ + + struct + { + __IOM uint8_t IOC : 5; /*!< [4..0] I/O Control C */ + uint8_t : 3; + } TIORW_b; + }; + __IM uint8_t RESERVED5; + __IM uint16_t RESERVED6[5]; + + union + { + __IOM uint8_t TIER; /*!< (@ 0x000000B2) Timer Interrupt Enable Register */ + + struct + { + __IOM uint8_t TGIE5W : 1; /*!< [0..0] TGR Interrupt Enable 5W */ + __IOM uint8_t TGIE5V : 1; /*!< [1..1] TGR Interrupt Enable 5V */ + __IOM uint8_t TGIE5U : 1; /*!< [2..2] TGR Interrupt Enable 5U */ + uint8_t : 5; + } TIER_b; + }; + __IM uint8_t RESERVED7; + + union + { + __IOM uint8_t TSTR; /*!< (@ 0x000000B4) Timer Start Register */ + + struct + { + __IOM uint8_t CSTW5 : 1; /*!< [0..0] Counter Start W5 */ + __IOM uint8_t CSTV5 : 1; /*!< [1..1] Counter Start V5 */ + __IOM uint8_t CSTU5 : 1; /*!< [2..2] Counter Start U5 */ + uint8_t : 5; + } TSTR_b; + }; + __IM uint8_t RESERVED8; + + union + { + __IOM uint8_t TCNTCMPCLR; /*!< (@ 0x000000B6) Timer Compare Match Clear Register */ + + struct + { + __IOM uint8_t CMPCLR5W : 1; /*!< [0..0] TCNT Compare Clear 5W */ + __IOM uint8_t CMPCLR5V : 1; /*!< [1..1] TCNT Compare Clear 5V */ + __IOM uint8_t CMPCLR5U : 1; /*!< [2..2] TCNT Compare Clear 5U */ + uint8_t : 5; + } TCNTCMPCLR_b; + }; + __IM uint8_t RESERVED9; + __IM uint16_t RESERVED10; +} R_MTU5_Type; /*!< Size = 186 (0xba) */ + +/* =========================================================================================================================== */ +/* ================ R_TFU ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Trigonometric Function Unit (R_TFU) + */ + +typedef struct /*!< (@ 0x90003000) R_TFU Structure */ +{ + __IM uint32_t RESERVED[2]; + + union + { + __IM uint8_t TRGSTS; /*!< (@ 0x00000008) Trigonometric Status Register */ + + struct + { + __IM uint8_t BSYF : 1; /*!< [0..0] Calculation in progress flag */ + __IM uint8_t ERRF : 1; /*!< [1..1] Input error flag */ + uint8_t : 6; + } TRGSTS_b; + }; + __IM uint8_t RESERVED1; + __IM uint16_t RESERVED2; + __IM uint32_t RESERVED3; + + union + { + __IOM float SCDT0; /*!< (@ 0x00000010) Sine Cosine Data Register 0 */ + + struct + { + __IOM uint32_t SCDT0 : 32; /*!< [31..0] Sine Cosine Data Register 0 (single-precision floating-point) */ + } SCDT0_b; + }; + + union + { + __IOM float SCDT1; /*!< (@ 0x00000014) Sine Cosine Data Register 1 */ + + struct + { + __IOM uint32_t SCDT1 : 32; /*!< [31..0] Sine Cosine Data Register 1 (single-precision floating-point) */ + } SCDT1_b; + }; + + union + { + __IOM float ATDT0; /*!< (@ 0x00000018) Arctangent Data Register 0 */ + + struct + { + __IOM uint32_t ATDT0 : 32; /*!< [31..0] Arctangent Data Register 0 (single-precision floating-point) */ + } ATDT0_b; + }; + + union + { + __IOM float ATDT1; /*!< (@ 0x0000001C) Arctangent Data Register 1 */ + + struct + { + __IOM uint32_t ATDT1 : 32; /*!< [31..0] Arctangent Data Register 1 (single-precision floating-point) */ + } ATDT1_b; + }; +} R_TFU_Type; /*!< Size = 32 (0x20) */ + +/* =========================================================================================================================== */ +/* ================ R_POE3 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Port Output Enable 3 (R_POE3) + */ + +typedef struct /*!< (@ 0x90005000) R_POE3 Structure */ +{ + union + { + __IOM uint16_t ICSR1; /*!< (@ 0x00000000) Input Level Control/Status Register 1 */ + + struct + { + __IOM uint16_t POE0M : 2; /*!< [1..0] POE0 Mode Select */ + uint16_t : 6; + __IOM uint16_t PIE1 : 1; /*!< [8..8] Port Interrupt Enable 1 */ + uint16_t : 3; + __IOM uint16_t POE0F : 1; /*!< [12..12] POE0 Flag */ + uint16_t : 3; + } ICSR1_b; + }; + + union + { + __IOM uint16_t OCSR1; /*!< (@ 0x00000002) Output Level Control/Status Register 1 */ + + struct + { + uint16_t : 8; + __IOM uint16_t OIE1 : 1; /*!< [8..8] Output Short Circuit Interrupt Enable 1 */ + __IOM uint16_t OCE1 : 1; /*!< [9..9] Output Short Circuit High-Impedance Enable 1 */ + uint16_t : 5; + __IOM uint16_t OSF1 : 1; /*!< [15..15] Output Short Circuit Flag 1 */ + } OCSR1_b; + }; + + union + { + __IOM uint16_t ICSR2; /*!< (@ 0x00000004) Input Level Control/Status Register 2 */ + + struct + { + __IOM uint16_t POE4M : 2; /*!< [1..0] POE4 Mode Select */ + uint16_t : 6; + __IOM uint16_t PIE2 : 1; /*!< [8..8] Port Interrupt Enable 2 */ + uint16_t : 3; + __IOM uint16_t POE4F : 1; /*!< [12..12] POE4 Flag */ + uint16_t : 3; + } ICSR2_b; + }; + + union + { + __IOM uint16_t OCSR2; /*!< (@ 0x00000006) Output Level Control/Status Register 2 */ + + struct + { + uint16_t : 8; + __IOM uint16_t OIE2 : 1; /*!< [8..8] Output Short Circuit Interrupt Enable 2 */ + __IOM uint16_t OCE2 : 1; /*!< [9..9] Output Short Circuit High-Impedance Enable 2 */ + uint16_t : 5; + __IOM uint16_t OSF2 : 1; /*!< [15..15] Output Short Circuit Flag 2 */ + } OCSR2_b; + }; + + union + { + __IOM uint16_t ICSR3; /*!< (@ 0x00000008) Input Level Control/Status Register 3 */ + + struct + { + __IOM uint16_t POE8M : 2; /*!< [1..0] POE8 Mode Select */ + uint16_t : 6; + __IOM uint16_t PIE3 : 1; /*!< [8..8] Port Interrupt Enable 3 */ + __IOM uint16_t POE8E : 1; /*!< [9..9] POE8 High-Impedance Enable */ + uint16_t : 2; + __IOM uint16_t POE8F : 1; /*!< [12..12] POE8 Flag */ + uint16_t : 3; + } ICSR3_b; + }; + + union + { + __IOM uint8_t SPOER; /*!< (@ 0x0000000A) Software Port Output Enable Register */ + + struct + { + __IOM uint8_t MTUCH34HIZ : 1; /*!< [0..0] MTU3 and MTU4 Output High-Impedance Enable */ + __IOM uint8_t MTUCH67HIZ : 1; /*!< [1..1] MTU6 and MTU7 Output High-Impedance Enable */ + __IOM uint8_t MTUCH0HIZ : 1; /*!< [2..2] MTU0 Pin High-Impedance Enable */ + uint8_t : 5; + } SPOER_b; + }; + + union + { + __IOM uint8_t POECR1; /*!< (@ 0x0000000B) Port Output Enable Control Register 1 */ + + struct + { + __IOM uint8_t MTU0AZE : 1; /*!< [0..0] MTIOC0A High-Impedance Enable */ + __IOM uint8_t MTU0BZE : 1; /*!< [1..1] MTIOC0B High-Impedance Enable */ + __IOM uint8_t MTU0CZE : 1; /*!< [2..2] MTIOC0C High-Impedance Enable */ + __IOM uint8_t MTU0DZE : 1; /*!< [3..3] MTIOC0D High-Impedance Enable */ + uint8_t : 4; + } POECR1_b; + }; + + union + { + __IOM uint16_t POECR2; /*!< (@ 0x0000000C) Port Output Enable Control Register 2 */ + + struct + { + __IOM uint16_t MTU7BDZE : 1; /*!< [0..0] MTIOC7B/MTIOC7D High-Impedance Enable */ + __IOM uint16_t MTU7ACZE : 1; /*!< [1..1] MTIOC7A/MTIOC7C High-Impedance Enable */ + __IOM uint16_t MTU6BDZE : 1; /*!< [2..2] MTIOC6B/MTIOC6D High-Impedance Enable */ + uint16_t : 5; + __IOM uint16_t MTU4BDZE : 1; /*!< [8..8] MTIOC4B/MTIOC4D High-Impedance Enable */ + __IOM uint16_t MTU4ACZE : 1; /*!< [9..9] MTIOC4A/MTIOC4C High-Impedance Enable */ + __IOM uint16_t MTU3BDZE : 1; /*!< [10..10] MTIOC3B/MTIOC3D High-Impedance Enable */ + uint16_t : 5; + } POECR2_b; + }; + __IM uint16_t RESERVED; + + union + { + __IOM uint16_t POECR4; /*!< (@ 0x00000010) Port Output Enable Control Register 4 */ + + struct + { + uint16_t : 2; + __IOM uint16_t IC2ADDMT34ZE : 1; /*!< [2..2] MTU3 and MTU4 High-Impedance POE4F Add */ + __IOM uint16_t IC3ADDMT34ZE : 1; /*!< [3..3] MTU3 and MTU4 High-Impedance POE8F Add */ + __IOM uint16_t IC4ADDMT34ZE : 1; /*!< [4..4] MTU3 and MTU4 High-Impedance POE10F Add */ + __IOM uint16_t IC5ADDMT34ZE : 1; /*!< [5..5] MTU3 and MTU4 High-Impedance POE11F Add */ + __IOM uint16_t DE0ADDMT34ZE : 1; /*!< [6..6] MTU3 and MTU4 High-Impedance DERR0ST Add */ + __IOM uint16_t DE1ADDMT34ZE : 1; /*!< [7..7] MTU3 and MTU4 High-Impedance DERR1ST Add */ + uint16_t : 1; + __IOM uint16_t IC1ADDMT67ZE : 1; /*!< [9..9] MTU6 and MTU7 High-Impedance POE0F Add */ + uint16_t : 1; + __IOM uint16_t IC3ADDMT67ZE : 1; /*!< [11..11] MTU6 and MTU7 High-Impedance POE8F Add */ + __IOM uint16_t IC4ADDMT67ZE : 1; /*!< [12..12] MTU6 and MTU7 High-Impedance POE10F Add */ + __IOM uint16_t IC5ADDMT67ZE : 1; /*!< [13..13] MTU6 and MTU7 High-Impedance POE11F Add */ + __IOM uint16_t DE0ADDMT67ZE : 1; /*!< [14..14] MTU6 and MTU7 High-Impedance DERR0ST Add */ + __IOM uint16_t DE1ADDMT67ZE : 1; /*!< [15..15] MTU6 and MTU7 High-Impedance DERR1ST Add */ + } POECR4_b; + }; + + union + { + __IOM uint16_t POECR5; /*!< (@ 0x00000012) Port Output Enable Control Register 5 */ + + struct + { + uint16_t : 1; + __IOM uint16_t IC1ADDMT0ZE : 1; /*!< [1..1] MTU0 High-Impedance POE0F Add */ + __IOM uint16_t IC2ADDMT0ZE : 1; /*!< [2..2] MTU0 High-Impedance POE4F Add */ + uint16_t : 1; + __IOM uint16_t IC4ADDMT0ZE : 1; /*!< [4..4] MTU0 High-Impedance POE10F Add */ + __IOM uint16_t IC5ADDMT0ZE : 1; /*!< [5..5] MTU0 High-Impedance POE11F Add */ + __IOM uint16_t DE0ADDMT0ZE : 1; /*!< [6..6] MTU0 High-Impedance DERR0ST Add */ + __IOM uint16_t DE1ADDMT0ZE : 1; /*!< [7..7] MTU0 High-Impedance DERR1ST Add */ + uint16_t : 8; + } POECR5_b; + }; + __IM uint16_t RESERVED1; + + union + { + __IOM uint16_t ICSR4; /*!< (@ 0x00000016) Input Level Control/Status Register 4 */ + + struct + { + __IOM uint16_t POE10M : 2; /*!< [1..0] POE10 Mode Select */ + uint16_t : 6; + __IOM uint16_t PIE4 : 1; /*!< [8..8] Port Interrupt Enable 4 */ + __IOM uint16_t POE10E : 1; /*!< [9..9] POE10 High-Impedance Enable */ + uint16_t : 2; + __IOM uint16_t POE10F : 1; /*!< [12..12] POE10 Flag */ + uint16_t : 3; + } ICSR4_b; + }; + + union + { + __IOM uint16_t ICSR5; /*!< (@ 0x00000018) Input Level Control/Status Register 5 */ + + struct + { + __IOM uint16_t POE11M : 2; /*!< [1..0] POE11 Mode Select */ + uint16_t : 6; + __IOM uint16_t PIE5 : 1; /*!< [8..8] Port Interrupt Enable 5 */ + __IOM uint16_t POE11E : 1; /*!< [9..9] POE11 High-Impedance Enable */ + uint16_t : 2; + __IOM uint16_t POE11F : 1; /*!< [12..12] POE11 Flag */ + uint16_t : 3; + } ICSR5_b; + }; + + union + { + __IOM uint16_t ALR1; /*!< (@ 0x0000001A) Active Level Setting Register 1 */ + + struct + { + __IOM uint16_t OLSG0A : 1; /*!< [0..0] MTIOC3B Pin Active Level Setting */ + __IOM uint16_t OLSG0B : 1; /*!< [1..1] MTIOC3D Pin Active Level Setting */ + __IOM uint16_t OLSG1A : 1; /*!< [2..2] MTIOC4A Pin Active Level Setting */ + __IOM uint16_t OLSG1B : 1; /*!< [3..3] MTIOC4C Pin Active Level Setting */ + __IOM uint16_t OLSG2A : 1; /*!< [4..4] MTIOC4B Pin Active Level Setting */ + __IOM uint16_t OLSG2B : 1; /*!< [5..5] MTIOC4D Pin Active Level Setting */ + uint16_t : 1; + __IOM uint16_t OLSEN : 1; /*!< [7..7] Active Level Setting Enable */ + uint16_t : 8; + } ALR1_b; + }; + + union + { + __IOM uint16_t ICSR6; /*!< (@ 0x0000001C) Input Level Control/Status Register 6 */ + + struct + { + uint16_t : 9; + __IOM uint16_t OSTSTE : 1; /*!< [9..9] Oscillation Stop High-Impedance Enable */ + uint16_t : 2; + __IOM uint16_t OSTSTF : 1; /*!< [12..12] Oscillation Stop High-Impedance Flag */ + uint16_t : 3; + } ICSR6_b; + }; + + union + { + __IOM uint16_t ICSR7; /*!< (@ 0x0000001E) Input Level Control/Status Register 7 */ + + struct + { + uint16_t : 6; + __IOM uint16_t DERR0IE : 1; /*!< [6..6] DSMIF0 Error Interrupt Enable */ + __IOM uint16_t DERR1IE : 1; /*!< [7..7] DSMIF1 Error Interrupt Enable */ + uint16_t : 5; + __IM uint16_t DERR0ST : 1; /*!< [13..13] DSMIF0 Error Status */ + __IM uint16_t DERR1ST : 1; /*!< [14..14] DSMIF1 Error Status */ + uint16_t : 1; + } ICSR7_b; + }; + __IM uint16_t RESERVED2[2]; + + union + { + __IOM uint8_t M0SELR1; /*!< (@ 0x00000024) MTU0 Pin Select Register 1 */ + + struct + { + __IOM uint8_t M0ASEL : 4; /*!< [3..0] MTU0-A (MTIOC0A) Pin Select */ + __IOM uint8_t M0BSEL : 4; /*!< [7..4] MTU0-B (MTIOC0B) Pin Select */ + } M0SELR1_b; + }; + + union + { + __IOM uint8_t M0SELR2; /*!< (@ 0x00000025) MTU0 Pin Select Register 2 */ + + struct + { + __IOM uint8_t M0CSEL : 4; /*!< [3..0] MTU0-C (MTIOC0C) Pin Select */ + __IOM uint8_t M0DSEL : 4; /*!< [7..4] MTU0-D (MTIOC0D) Pin Select */ + } M0SELR2_b; + }; + + union + { + __IOM uint8_t M3SELR; /*!< (@ 0x00000026) MTU3 Pin Select Register */ + + struct + { + __IOM uint8_t M3BSEL : 4; /*!< [3..0] MTU3-B (MTIOC3B) Pin Select */ + __IOM uint8_t M3DSEL : 4; /*!< [7..4] MTU3-D (MTIOC3D) Pin Select */ + } M3SELR_b; + }; + + union + { + __IOM uint8_t M4SELR1; /*!< (@ 0x00000027) MTU4 Pin Select Register 1 */ + + struct + { + __IOM uint8_t M4ASEL : 4; /*!< [3..0] MTU4-A (MTIOC4A) Pin Select */ + __IOM uint8_t M4CSEL : 4; /*!< [7..4] MTU4-C (MTIOC4C) Pin Select */ + } M4SELR1_b; + }; + + union + { + __IOM uint8_t M4SELR2; /*!< (@ 0x00000028) MTU4 Pin Select Register 2 */ + + struct + { + __IOM uint8_t M4BSEL : 4; /*!< [3..0] MTU4-B (MTIOC4B) Pin Select */ + __IOM uint8_t M4DSEL : 4; /*!< [7..4] MTU4-D (MTIOC4D) Pin Select */ + } M4SELR2_b; + }; + __IM uint8_t RESERVED3; + + union + { + __IOM uint8_t M6SELR; /*!< (@ 0x0000002A) MTU6 Pin Select Register */ + + struct + { + __IOM uint8_t M6BSEL : 4; /*!< [3..0] MTU6-B (MTIOC6B) Pin Select */ + __IOM uint8_t M6DSEL : 4; /*!< [7..4] MTU6-D (MTIOC6D) Pin Select */ + } M6SELR_b; + }; + + union + { + __IOM uint8_t M7SELR1; /*!< (@ 0x0000002B) MTU7 Pin Select Register 1 */ + + struct + { + __IOM uint8_t M7ASEL : 4; /*!< [3..0] MTU7-A (MTIOC7A) Pin Select */ + __IOM uint8_t M7CSEL : 4; /*!< [7..4] MTU7-C (MTIOC7C) Pin Select */ + } M7SELR1_b; + }; + + union + { + __IOM uint8_t M7SELR2; /*!< (@ 0x0000002C) MTU7 Pin Select Register 2 */ + + struct + { + __IOM uint8_t M7BSEL : 4; /*!< [3..0] MTU7-B (MTIOC7B) Pin Select */ + __IOM uint8_t M7DSEL : 4; /*!< [7..4] MTU7-D (MTIOC7D) Pin Select */ + } M7SELR2_b; + }; + __IM uint8_t RESERVED4; + __IM uint16_t RESERVED5; +} R_POE3_Type; /*!< Size = 48 (0x30) */ + +/* =========================================================================================================================== */ +/* ================ R_POEG0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief GPT Port Output Enable 0 (R_POEG0) + */ + +typedef struct /*!< (@ 0x90006000) R_POEG0 Structure */ +{ + union + { + __IOM uint32_t POEG0GA; /*!< (@ 0x00000000) POEG0 Group A Setting Register */ + + struct + { + __IOM uint32_t PIDF : 1; /*!< [0..0] Port Input Detection Flag */ + __IOM uint32_t IOCF : 1; /*!< [1..1] GPT Output Stop Request 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 */ + __IOM uint32_t IOCE : 1; /*!< [5..5] GPT Output Stop Request Enable */ + __IOM uint32_t OSTPE : 1; /*!< [6..6] Enable Stopping Output on Stopping of Oscillation */ + uint32_t : 9; + __IM uint32_t ST : 1; /*!< [16..16] GTETRGn Input Status Flag */ + uint32_t : 7; + __IOM uint32_t DERR0ST : 1; /*!< [24..24] DSMIF0 error status */ + __IOM uint32_t DERR1ST : 1; /*!< [25..25] DSMIF1 error status */ + __IOM uint32_t DERR0E : 1; /*!< [26..26] Permit output disabled by DSMIF0 error detection */ + __IOM uint32_t DERR1E : 1; /*!< [27..27] Permit output disabled by DSMIF1 error detection */ + __IOM uint32_t INV : 1; /*!< [28..28] GTETRGn Input Inverting */ + __IOM uint32_t NFEN : 1; /*!< [29..29] Noise filter Enable */ + __IOM uint32_t NFCS : 2; /*!< [31..30] Noise filter Clock Select */ + } POEG0GA_b; + }; + __IM uint32_t RESERVED[255]; + + union + { + __IOM uint32_t POEG0GB; /*!< (@ 0x00000400) POEG0 Group B Setting Register */ + + struct + { + __IOM uint32_t PIDF : 1; /*!< [0..0] Port Input Detection Flag */ + __IOM uint32_t IOCF : 1; /*!< [1..1] GPT Output Stop Request 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 */ + __IOM uint32_t IOCE : 1; /*!< [5..5] GPT Output Stop Request Enable */ + __IOM uint32_t OSTPE : 1; /*!< [6..6] Enable Stopping Output on Stopping of Oscillation */ + uint32_t : 9; + __IM uint32_t ST : 1; /*!< [16..16] GTETRGn Input Status Flag */ + uint32_t : 7; + __IOM uint32_t DERR0ST : 1; /*!< [24..24] DSMIF0 error status */ + __IOM uint32_t DERR1ST : 1; /*!< [25..25] DSMIF1 error status */ + __IOM uint32_t DERR0E : 1; /*!< [26..26] Permit output disabled by DSMIF0 error detection */ + __IOM uint32_t DERR1E : 1; /*!< [27..27] Permit output disabled by DSMIF1 error detection */ + __IOM uint32_t INV : 1; /*!< [28..28] GTETRGn Input Inverting */ + __IOM uint32_t NFEN : 1; /*!< [29..29] Noise filter Enable */ + __IOM uint32_t NFCS : 2; /*!< [31..30] Noise filter Clock Select */ + } POEG0GB_b; + }; + __IM uint32_t RESERVED1[255]; + + union + { + __IOM uint32_t POEG0GC; /*!< (@ 0x00000800) POEG0 Group C Setting Register */ + + struct + { + __IOM uint32_t PIDF : 1; /*!< [0..0] Port Input Detection Flag */ + __IOM uint32_t IOCF : 1; /*!< [1..1] GPT Output Stop Request 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 */ + __IOM uint32_t IOCE : 1; /*!< [5..5] GPT Output Stop Request Enable */ + __IOM uint32_t OSTPE : 1; /*!< [6..6] Enable Stopping Output on Stopping of Oscillation */ + uint32_t : 9; + __IM uint32_t ST : 1; /*!< [16..16] GTETRGn Input Status Flag */ + uint32_t : 7; + __IOM uint32_t DERR0ST : 1; /*!< [24..24] DSMIF0 error status */ + __IOM uint32_t DERR1ST : 1; /*!< [25..25] DSMIF1 error status */ + __IOM uint32_t DERR0E : 1; /*!< [26..26] Permit output disabled by DSMIF0 error detection */ + __IOM uint32_t DERR1E : 1; /*!< [27..27] Permit output disabled by DSMIF1 error detection */ + __IOM uint32_t INV : 1; /*!< [28..28] GTETRGn Input Inverting */ + __IOM uint32_t NFEN : 1; /*!< [29..29] Noise filter Enable */ + __IOM uint32_t NFCS : 2; /*!< [31..30] Noise filter Clock Select */ + } POEG0GC_b; + }; + __IM uint32_t RESERVED2[255]; + + union + { + __IOM uint32_t POEG0GD; /*!< (@ 0x00000C00) POEG0 Group D Setting Register */ + + struct + { + __IOM uint32_t PIDF : 1; /*!< [0..0] Port Input Detection Flag */ + __IOM uint32_t IOCF : 1; /*!< [1..1] GPT Output Stop Request 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 */ + __IOM uint32_t IOCE : 1; /*!< [5..5] GPT Output Stop Request Enable */ + __IOM uint32_t OSTPE : 1; /*!< [6..6] Enable Stopping Output on Stopping of Oscillation */ + uint32_t : 9; + __IM uint32_t ST : 1; /*!< [16..16] GTETRGn Input Status Flag */ + uint32_t : 7; + __IOM uint32_t DERR0ST : 1; /*!< [24..24] DSMIF0 error status */ + __IOM uint32_t DERR1ST : 1; /*!< [25..25] DSMIF1 error status */ + __IOM uint32_t DERR0E : 1; /*!< [26..26] Permit output disabled by DSMIF0 error detection */ + __IOM uint32_t DERR1E : 1; /*!< [27..27] Permit output disabled by DSMIF1 error detection */ + __IOM uint32_t INV : 1; /*!< [28..28] GTETRGn Input Inverting */ + __IOM uint32_t NFEN : 1; /*!< [29..29] Noise filter Enable */ + __IOM uint32_t NFCS : 2; /*!< [31..30] Noise filter Clock Select */ + } POEG0GD_b; + }; +} R_POEG0_Type; /*!< Size = 3076 (0xc04) */ + +/* =========================================================================================================================== */ +/* ================ R_DSMIF0 ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Delta-sigma Interface 0 (R_DSMIF0) + */ + +typedef struct /*!< (@ 0x90008000) R_DSMIF0 Structure */ +{ + __IM uint32_t RESERVED[16]; + + union + { + __IOM uint32_t DSSEICR; /*!< (@ 0x00000040) Overcurrent Sum Error Detect Interrupt Control + * Register */ + + struct + { + __IOM uint32_t ISEL : 1; /*!< [0..0] Overcurrent sum error lower limit detection interrupt + * enable bit */ + __IOM uint32_t ISEH : 1; /*!< [1..1] Overcurrent sum error upper limit detection interrupt + * enable bit */ + uint32_t : 30; + } DSSEICR_b; + }; + + union + { + __IOM uint32_t DSSECSR; /*!< (@ 0x00000044) Overcurrent Sum Error Detect Channel Setting + * Register */ + + struct + { + __IOM uint32_t SEDM : 3; /*!< [2..0] Overcurrent sum error detect mode setting bit */ + uint32_t : 29; + } DSSECSR_b; + }; + + union + { + __IOM uint32_t DSSELTR; /*!< (@ 0x00000048) Overcurrent Sum Error Detect Low Threshold Register */ + + struct + { + __IOM uint32_t SCMPTBL : 18; /*!< [17..0] Overcurrent sum error detect lower limit */ + uint32_t : 14; + } DSSELTR_b; + }; + + union + { + __IOM uint32_t DSSEHTR; /*!< (@ 0x0000004C) Overcurrent Sum Error Detect High Threshold Register */ + + struct + { + __IOM uint32_t SCMPTBH : 18; /*!< [17..0] Overcurrent sum error detect upper limit */ + uint32_t : 14; + } DSSEHTR_b; + }; + + union + { + __IOM uint32_t DSSECR; /*!< (@ 0x00000050) Overcurrent Sum Error Detect Control Register */ + + struct + { + __IOM uint32_t SEEL : 1; /*!< [0..0] Overcurrent sum error lower limit detection enable bit */ + __IOM uint32_t SEEH : 1; /*!< [1..1] Overcurrent sum error upper limit detection enable bit */ + uint32_t : 30; + } DSSECR_b; + }; + __IM uint32_t RESERVED1[3]; + + union + { + __IOM uint32_t DSSECDR[3]; /*!< (@ 0x00000060) Overcurrent Sum Error Detect Capture Data Register + * [0..2] */ + + struct + { + __IOM uint32_t SECDR : 16; /*!< [15..0] Overcurrent sum error detect capture data n */ + uint32_t : 16; + } DSSECDR_b[3]; + }; + __IM uint32_t RESERVED2[37]; + + union + { + __IOM uint32_t DSCSTRTR; /*!< (@ 0x00000100) Channel Software Start Trigger Register */ + + struct + { + __IOM uint32_t STRTRG0 : 1; /*!< [0..0] Channel 0 start trigger */ + __IOM uint32_t STRTRG1 : 1; /*!< [1..1] Channel 1 start trigger */ + __IOM uint32_t STRTRG2 : 1; /*!< [2..2] Channel 2 start trigger */ + uint32_t : 29; + } DSCSTRTR_b; + }; + + union + { + __IOM uint32_t DSCSTPTR; /*!< (@ 0x00000104) Channel Software Stop Trigger Register */ + + struct + { + __IOM uint32_t STPTRG0 : 1; /*!< [0..0] Channel 0 stop trigger */ + __IOM uint32_t STPTRG1 : 1; /*!< [1..1] Channel 1 stop trigger */ + __IOM uint32_t STPTRG2 : 1; /*!< [2..2] Channel 2 stop trigger */ + uint32_t : 29; + } DSCSTPTR_b; + }; + __IM uint32_t RESERVED3[2]; + + union + { + __IM uint32_t DSCESR; /*!< (@ 0x00000110) Channel Error Status Register */ + + struct + { + __IM uint32_t OCFL0 : 1; /*!< [0..0] Channel 0 overcurrent lower limit detection flag */ + __IM uint32_t OCFL1 : 1; /*!< [1..1] Channel 1 overcurrent lower limit detection flag */ + __IM uint32_t OCFL2 : 1; /*!< [2..2] Channel 2 overcurrent lower limit detection flag */ + uint32_t : 1; + __IM uint32_t OCFH0 : 1; /*!< [4..4] Channel 0 overcurrent upper limit detection flag */ + __IM uint32_t OCFH1 : 1; /*!< [5..5] Channel 1 overcurrent upper limit detection flag */ + __IM uint32_t OCFH2 : 1; /*!< [6..6] Channel 2 overcurrent upper limit detection flag */ + uint32_t : 1; + __IM uint32_t SCF0 : 1; /*!< [8..8] Channel 0 short circuit detection flag */ + __IM uint32_t SCF1 : 1; /*!< [9..9] Channel 1 short circuit detection flag */ + __IM uint32_t SCF2 : 1; /*!< [10..10] Channel 2 short circuit detection flag */ + uint32_t : 5; + __IM uint32_t SUMERRL : 1; /*!< [16..16] Overcurrent sum error lower limit detection flag */ + __IM uint32_t SUMERRH : 1; /*!< [17..17] Overcurrent sum error upper limit detection flag */ + uint32_t : 14; + } DSCESR_b; + }; + __IM uint32_t RESERVED4; + + union + { + __IM uint32_t DSCSR; /*!< (@ 0x00000118) Channel Status Register */ + + struct + { + __IM uint32_t DUF0 : 1; /*!< [0..0] Channel 0 Data Update flag */ + __IM uint32_t DUF1 : 1; /*!< [1..1] Channel 1 Data Update flag */ + __IM uint32_t DUF2 : 1; /*!< [2..2] Channel 2 Data Update flag */ + uint32_t : 29; + } DSCSR_b; + }; + + union + { + __IM uint32_t DSCSSR; /*!< (@ 0x0000011C) Channel State Status Register */ + + struct + { + __IM uint32_t CHSTATE0 : 1; /*!< [0..0] Channel 0 state */ + uint32_t : 3; + __IM uint32_t CHSTATE1 : 1; /*!< [4..4] Channel 1 state */ + uint32_t : 3; + __IM uint32_t CHSTATE2 : 1; /*!< [8..8] Channel 2 state */ + uint32_t : 23; + } DSCSSR_b; + }; + + union + { + __OM uint32_t DSCESCR; /*!< (@ 0x00000120) Channel Error Status Clear Register */ + + struct + { + __OM uint32_t CLROCFL0 : 1; /*!< [0..0] Channel 0 Overcurrent Lower Limit Detection Flag Clear */ + __OM uint32_t CLROCFL1 : 1; /*!< [1..1] Channel 1 Overcurrent Lower Limit Detection Flag Clear */ + __OM uint32_t CLROCFL2 : 1; /*!< [2..2] Channel 2 Overcurrent Lower Limit Detection Flag Clear */ + uint32_t : 1; + __OM uint32_t CLROCFH0 : 1; /*!< [4..4] Channel 0 Overcurrent Upper Limit Detection Flag Clear */ + __OM uint32_t CLROCFH1 : 1; /*!< [5..5] Channel 1 Overcurrent Upper Limit Detection Flag Clear */ + __OM uint32_t CLROCFH2 : 1; /*!< [6..6] Channel 2 Overcurrent Upper Limit Detection Flag Clear */ + uint32_t : 1; + __OM uint32_t CLRSCF0 : 1; /*!< [8..8] Channel 0 Short Circuit Detection Flag Clear */ + __OM uint32_t CLRSCF1 : 1; /*!< [9..9] Channel 1 Short Circuit Detection Flag Clear */ + __OM uint32_t CLRSCF2 : 1; /*!< [10..10] Channel 2 Short Circuit Detection Flag Clear */ + uint32_t : 5; + __OM uint32_t CLRSUMERRL : 1; /*!< [16..16] Overcurrent Sum Error Lower Limit Detection Flag Clear */ + __OM uint32_t CLRSUMERRH : 1; /*!< [17..17] Overcurrent Sum Error Upper Limit Detection Flag Clear */ + uint32_t : 14; + } DSCESCR_b; + }; + __IM uint32_t RESERVED5; + + union + { + __OM uint32_t DSCSCR; /*!< (@ 0x00000128) Channel Status Clear Register */ + + struct + { + __OM uint32_t CLRDUF0 : 1; /*!< [0..0] Channel 0 Data Update Flag Clear */ + __OM uint32_t CLRDUF1 : 1; /*!< [1..1] Channel 1 Data Update Flag Clear */ + __OM uint32_t CLRDUF2 : 1; /*!< [2..2] Channel 2 Data Update Flag Clear */ + uint32_t : 29; + } DSCSCR_b; + }; + __IM uint32_t RESERVED6[21]; + __IOM R_DSMIF0_CH_Type CH[3]; /*!< (@ 0x00000180) Channel Registers [0..2] */ +} R_DSMIF0_Type; /*!< Size = 816 (0x330) */ + +/* =========================================================================================================================== */ +/* ================ R_GSC ================ */ +/* =========================================================================================================================== */ + +/** + * @brief Global System Counter (R_GSC) + */ + +typedef struct /*!< (@ 0xC0060000) R_GSC Structure */ +{ + union + { + __IOM uint32_t CNTCR; /*!< (@ 0x00000000) Global System Counter Control Register */ + + struct + { + __IOM uint32_t EN : 1; /*!< [0..0] Counter Enable */ + __IOM uint32_t HDBG : 1; /*!< [1..1] Halt on Debug */ + uint32_t : 30; + } CNTCR_b; + }; + + union + { + __IM uint32_t CNTSR; /*!< (@ 0x00000004) Global System Counter Status Register */ + + struct + { + uint32_t : 1; + __IM uint32_t DBGH : 1; /*!< [1..1] Debug Halted */ + uint32_t : 30; + } CNTSR_b; + }; + + union + { + __IOM uint32_t CNTCVL; /*!< (@ 0x00000008) Global System Counter Current Value Lower Register */ + + struct + { + __IOM uint32_t CNTCVL_L_32 : 32; /*!< [31..0] Current value of the counter, lower 32 bits */ + } CNTCVL_b; + }; + + union + { + __IOM uint32_t CNTCVU; /*!< (@ 0x0000000C) Global System Counter Current Value Upper Register */ + + struct + { + __IOM uint32_t CNTCVU_U_32 : 32; /*!< [31..0] Current value of the counter, upper 32 bits */ + } CNTCVU_b; + }; + __IM uint32_t RESERVED[4]; + + union + { + __IOM uint32_t CNTFID0; /*!< (@ 0x00000020) Global System Counter Base Frequency ID Register */ + + struct + { + __IOM uint32_t FREQ : 32; /*!< [31..0] Frequency in number of ticks per second */ + } CNTFID0_b; + }; +} R_GSC_Type; /*!< Size = 36 (0x24) */ + +/** @} */ /* End of group Device_Peripheral_peripherals */ + +/* =========================================================================================================================== */ +/* ================ Device Specific Peripheral Address Map ================ */ +/* =========================================================================================================================== */ + +/** @addtogroup Device_Peripheral_peripheralAddr + * @{ + */ + + #define R_GPT7_BASE 0x80000000UL + #define R_GPT8_BASE 0x80000100UL + #define R_GPT9_BASE 0x80000200UL + #define R_GPT10_BASE 0x80000300UL + #define R_GPT11_BASE 0x80000400UL + #define R_GPT12_BASE 0x80000500UL + #define R_GPT13_BASE 0x80000600UL + #define R_SCI0_BASE 0x80001000UL + #define R_SCI1_BASE 0x80001400UL + #define R_SCI2_BASE 0x80001800UL + #define R_SCI3_BASE 0x80001C00UL + #define R_SCI4_BASE 0x80002000UL + #define R_SPI0_BASE 0x80003000UL + #define R_SPI1_BASE 0x80003400UL + #define R_SPI2_BASE 0x80003800UL + #define R_CRC0_BASE 0x80004000UL + #define R_CANFD_BASE 0x80020000UL + #define R_CMT_BASE 0x80040000UL + #define R_CMTW0_BASE 0x80041000UL + #define R_CMTW1_BASE 0x80041400UL + #define R_WDT0_BASE 0x80042000UL + #define R_IIC0_BASE 0x80043000UL + #define R_IIC1_BASE 0x80043400UL + #define R_DOC_BASE 0x80044000UL + #define R_ADC121_BASE 0x80045000UL + #define R_TSU_BASE 0x80046000UL + #define R_POEG1_BASE 0x80047000UL + #define R_DMAC0_BASE 0x80080000UL + #define R_DMAC1_BASE 0x80081000UL + #define R_ICU_NS_BASE 0x80090000UL + #define R_ELC_BASE 0x80090010UL + #define R_DMA_BASE 0x80090060UL + #define R_PORT_NSR_BASE 0x800A0000UL + #define R_GMAC_BASE 0x80100000UL + #define R_ETHSS_BASE 0x80110000UL + #define R_ESC_INI_BASE 0x80110200UL + #define R_ETHSW_PTP_BASE 0x80110400UL + #define R_ETHSW_BASE 0x80120000UL + #define R_ESC_BASE 0x80130000UL + #define R_USBHC_BASE 0x80200000UL + #define R_USBF_BASE 0x80201000UL + #define R_BSC_BASE 0x80210000UL + #define R_XSPI0_BASE 0x80220000UL + #define R_XSPI1_BASE 0x80221000UL + #define R_MBXSEM_BASE 0x80240000UL + #define R_SHOSTIF_BASE 0x80241000UL + #define R_PHOSTIF_BASE 0x80242000UL + #define R_SYSC_NS_BASE 0x80280000UL + #define R_ELO_BASE 0x80281200UL + #define R_RWP_NS_BASE 0x80281A10UL + #define R_GPT14_BASE 0x81000000UL + #define R_GPT15_BASE 0x81000100UL + #define R_GPT16_BASE 0x81000200UL + #define R_GPT17_BASE 0x81000300UL + #define R_SCI5_BASE 0x81001000UL + #define R_SPI3_BASE 0x81002000UL + #define R_CRC1_BASE 0x81003000UL + #define R_IIC2_BASE 0x81008000UL + #define R_RTC_BASE 0x81009000UL + #define R_POEG2_BASE 0x8100A000UL + #define R_OTP_BASE 0x81028000UL + #define R_PORT_SR_BASE 0x81030000UL + #define R_PTADR_BASE 0x81030C00UL + #define R_SYSRAM0_BASE 0x81040000UL + #define R_SYSRAM1_BASE 0x81041000UL + #define R_SYSRAM2_BASE 0x81042000UL + #define R_ICU_BASE 0x81048000UL + #define R_SYSC_S_BASE 0x81280000UL + #define R_CLMA0_BASE 0x81280800UL + #define R_CLMA1_BASE 0x81280820UL + #define R_CLMA2_BASE 0x81280840UL + #define R_CLMA3_BASE 0x81280860UL + #define R_MPU0_BASE 0x81281100UL + #define R_MPU1_BASE 0x81281200UL + #define R_MPU2_BASE 0x81281300UL + #define R_MPU3_BASE 0x81281400UL + #define R_MPU4_BASE 0x81281500UL + #define R_MPU6_BASE 0x81281700UL + #define R_SYSRAM_CTL_BASE 0x81281800UL + #define R_SHOSTIF_CFG_BASE 0x81281920UL + #define R_PHOSTIF_CFG_BASE 0x81281930UL + #define R_RWP_S_BASE 0x81281A00UL + #define R_MPU7_BASE 0x81281C00UL + #define R_MPU8_BASE 0x81281D00UL + #define R_MTU_BASE 0x90001000UL + #define R_MTU3_BASE 0x90001100UL + #define R_MTU4_BASE 0x90001200UL + #define R_MTU_NF_BASE 0x90001290UL + #define R_MTU0_BASE 0x90001300UL + #define R_MTU1_BASE 0x90001380UL + #define R_MTU2_BASE 0x90001400UL + #define R_MTU8_BASE 0x90001600UL + #define R_MTU6_BASE 0x90001900UL + #define R_MTU7_BASE 0x90001A00UL + #define R_MTU5_BASE 0x90001C00UL + #define R_GPT0_BASE 0x90002000UL + #define R_GPT1_BASE 0x90002100UL + #define R_GPT2_BASE 0x90002200UL + #define R_GPT3_BASE 0x90002300UL + #define R_GPT4_BASE 0x90002400UL + #define R_GPT5_BASE 0x90002500UL + #define R_GPT6_BASE 0x90002600UL + #define R_TFU_BASE 0x90003000UL + #define R_ADC120_BASE 0x90004000UL + #define R_POE3_BASE 0x90005000UL + #define R_POEG0_BASE 0x90006000UL + #define R_DSMIF0_BASE 0x90008000UL + #define R_DSMIF1_BASE 0x90008400UL + #define R_GSC_BASE 0xC0060000UL + +/** @} */ /* End of group Device_Peripheral_peripheralAddr */ + +/* =========================================================================================================================== */ +/* ================ Peripheral declaration ================ */ +/* =========================================================================================================================== */ + +/** @addtogroup Device_Peripheral_declaration + * @{ + */ + + #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_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_SPI0 ((R_SPI0_Type *) R_SPI0_BASE) + #define R_SPI1 ((R_SPI0_Type *) R_SPI1_BASE) + #define R_SPI2 ((R_SPI0_Type *) R_SPI2_BASE) + #define R_CRC0 ((R_CRC0_Type *) R_CRC0_BASE) + #define R_CANFD ((R_CANFD_Type *) R_CANFD_BASE) + #define R_CMT ((R_CMT_Type *) R_CMT_BASE) + #define R_CMTW0 ((R_CMTW0_Type *) R_CMTW0_BASE) + #define R_CMTW1 ((R_CMTW0_Type *) R_CMTW1_BASE) + #define R_WDT0 ((R_WDT0_Type *) R_WDT0_BASE) + #define R_IIC0 ((R_IIC0_Type *) R_IIC0_BASE) + #define R_IIC1 ((R_IIC0_Type *) R_IIC1_BASE) + #define R_DOC ((R_DOC_Type *) R_DOC_BASE) + #define R_ADC121 ((R_ADC121_Type *) R_ADC121_BASE) + #define R_TSU ((R_TSU_Type *) R_TSU_BASE) + #define R_POEG1 ((R_POEG1_Type *) R_POEG1_BASE) + #define R_DMAC0 ((R_DMAC0_Type *) R_DMAC0_BASE) + #define R_DMAC1 ((R_DMAC0_Type *) R_DMAC1_BASE) + #define R_ICU_NS ((R_ICU_NS_Type *) R_ICU_NS_BASE) + #define R_ELC ((R_ELC_Type *) R_ELC_BASE) + #define R_DMA ((R_DMA_Type *) R_DMA_BASE) + #define R_PORT_NSR ((R_PORT_COMMON_Type *) R_PORT_NSR_BASE) + #define R_GMAC ((R_GMAC_Type *) R_GMAC_BASE) + #define R_ETHSS ((R_ETHSS_Type *) R_ETHSS_BASE) + #define R_ESC_INI ((R_ESC_INI_Type *) R_ESC_INI_BASE) + #define R_ETHSW_PTP ((R_ETHSW_PTP_Type *) R_ETHSW_PTP_BASE) + #define R_ETHSW ((R_ETHSW_Type *) R_ETHSW_BASE) + #define R_ESC ((R_ESC_Type *) R_ESC_BASE) + #define R_USBHC ((R_USBHC_Type *) R_USBHC_BASE) + #define R_USBF ((R_USBF_Type *) R_USBF_BASE) + #define R_BSC ((R_BSC_Type *) R_BSC_BASE) + #define R_XSPI0 ((R_XSPI0_Type *) R_XSPI0_BASE) + #define R_XSPI1 ((R_XSPI0_Type *) R_XSPI1_BASE) + #define R_MBXSEM ((R_MBXSEM_Type *) R_MBXSEM_BASE) + #define R_SHOSTIF ((R_SHOSTIF_Type *) R_SHOSTIF_BASE) + #define R_PHOSTIF ((R_PHOSTIF_Type *) R_PHOSTIF_BASE) + #define R_SYSC_NS ((R_SYSC_NS_Type *) R_SYSC_NS_BASE) + #define R_ELO ((R_ELO_Type *) R_ELO_BASE) + #define R_RWP_NS ((R_RWP_NS_Type *) R_RWP_NS_BASE) + #define R_GPT14 ((R_GPT0_Type *) R_GPT14_BASE) + #define R_GPT15 ((R_GPT0_Type *) R_GPT15_BASE) + #define R_GPT16 ((R_GPT0_Type *) R_GPT16_BASE) + #define R_GPT17 ((R_GPT0_Type *) R_GPT17_BASE) + #define R_SCI5 ((R_SCI0_Type *) R_SCI5_BASE) + #define R_SPI3 ((R_SPI0_Type *) R_SPI3_BASE) + #define R_CRC1 ((R_CRC0_Type *) R_CRC1_BASE) + #define R_IIC2 ((R_IIC0_Type *) R_IIC2_BASE) + #define R_RTC ((R_RTC_Type *) R_RTC_BASE) + #define R_POEG2 ((R_POEG2_Type *) R_POEG2_BASE) + #define R_OTP ((R_OTP_Type *) R_OTP_BASE) + #define R_PORT_SR ((R_PORT_COMMON_Type *) R_PORT_SR_BASE) + #define R_PTADR ((R_PTADR_Type *) R_PTADR_BASE) + #define R_SYSRAM0 ((R_SYSRAM0_Type *) R_SYSRAM0_BASE) + #define R_SYSRAM1 ((R_SYSRAM0_Type *) R_SYSRAM1_BASE) + #define R_SYSRAM2 ((R_SYSRAM0_Type *) R_SYSRAM2_BASE) + #define R_ICU ((R_ICU_Type *) R_ICU_BASE) + #define R_SYSC_S ((R_SYSC_S_Type *) R_SYSC_S_BASE) + #define R_CLMA0 ((R_CLMA0_Type *) R_CLMA0_BASE) + #define R_CLMA1 ((R_CLMA0_Type *) R_CLMA1_BASE) + #define R_CLMA2 ((R_CLMA0_Type *) R_CLMA2_BASE) + #define R_CLMA3 ((R_CLMA0_Type *) R_CLMA3_BASE) + #define R_MPU0 ((R_MPU0_Type *) R_MPU0_BASE) + #define R_MPU1 ((R_MPU0_Type *) R_MPU1_BASE) + #define R_MPU2 ((R_MPU0_Type *) R_MPU2_BASE) + #define R_MPU3 ((R_MPU3_Type *) R_MPU3_BASE) + #define R_MPU4 ((R_MPU3_Type *) R_MPU4_BASE) + #define R_MPU6 ((R_MPU0_Type *) R_MPU6_BASE) + #define R_SYSRAM_CTL ((R_SYSRAM_CTL_Type *) R_SYSRAM_CTL_BASE) + #define R_SHOSTIF_CFG ((R_SHOSTIF_CFG_Type *) R_SHOSTIF_CFG_BASE) + #define R_PHOSTIF_CFG ((R_PHOSTIF_CFG_Type *) R_PHOSTIF_CFG_BASE) + #define R_RWP_S ((R_RWP_S_Type *) R_RWP_S_BASE) + #define R_MPU7 ((R_MPU3_Type *) R_MPU7_BASE) + #define R_MPU8 ((R_MPU3_Type *) R_MPU8_BASE) + #define R_MTU ((R_MTU_Type *) R_MTU_BASE) + #define R_MTU3 ((R_MTU3_Type *) R_MTU3_BASE) + #define R_MTU4 ((R_MTU4_Type *) R_MTU4_BASE) + #define R_MTU_NF ((R_MTU_NF_Type *) R_MTU_NF_BASE) + #define R_MTU0 ((R_MTU0_Type *) R_MTU0_BASE) + #define R_MTU1 ((R_MTU1_Type *) R_MTU1_BASE) + #define R_MTU2 ((R_MTU2_Type *) R_MTU2_BASE) + #define R_MTU8 ((R_MTU8_Type *) R_MTU8_BASE) + #define R_MTU6 ((R_MTU6_Type *) R_MTU6_BASE) + #define R_MTU7 ((R_MTU7_Type *) R_MTU7_BASE) + #define R_MTU5 ((R_MTU5_Type *) R_MTU5_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_TFU ((R_TFU_Type *) R_TFU_BASE) + #define R_ADC120 ((R_ADC121_Type *) R_ADC120_BASE) + #define R_POE3 ((R_POE3_Type *) R_POE3_BASE) + #define R_POEG0 ((R_POEG0_Type *) R_POEG0_BASE) + #define R_DSMIF0 ((R_DSMIF0_Type *) R_DSMIF0_BASE) + #define R_DSMIF1 ((R_DSMIF0_Type *) R_DSMIF1_BASE) + #define R_GSC ((R_GSC_Type *) R_GSC_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 + * @{ + */ + +/* =========================================================================================================================== */ +/* ================ 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_GWEN_Pos (24UL) /*!< GWEN (Bit 24) */ + #define R_CANFD_CFDC2_FDCFG_GWEN_Msk (0x1000000UL) /*!< GWEN (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDCFG_GWFDF_Pos (25UL) /*!< GWFDF (Bit 25) */ + #define R_CANFD_CFDC2_FDCFG_GWFDF_Msk (0x2000000UL) /*!< GWFDF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_FDCFG_GWBRS_Pos (26UL) /*!< GWBRS (Bit 26) */ + #define R_CANFD_CFDC2_FDCFG_GWBRS_Msk (0x4000000UL) /*!< GWBRS (Bitfield-Mask: 0x01) */ + #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) */ + #define R_CANFD_CFDC2_FDCFG_CFDTE_Pos (31UL) /*!< CFDTE (Bit 31) */ + #define R_CANFD_CFDC2_FDCFG_CFDTE_Msk (0x80000000UL) /*!< CFDTE (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 (25UL) /*!< SCNT (Bit 25) */ + #define R_CANFD_CFDC2_FDCRC_SCNT_Msk (0x1e000000UL) /*!< SCNT (Bitfield-Mask: 0x0f) */ +/* ========================================================= BLCT ========================================================== */ + #define R_CANFD_CFDC2_BLCT_BLCE_Pos (0UL) /*!< BLCE (Bit 0) */ + #define R_CANFD_CFDC2_BLCT_BLCE_Msk (0x1UL) /*!< BLCE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDC2_BLCT_BLCLD_Pos (8UL) /*!< BLCLD (Bit 8) */ + #define R_CANFD_CFDC2_BLCT_BLCLD_Msk (0x100UL) /*!< BLCLD (Bitfield-Mask: 0x01) */ +/* ========================================================= BLSTS ========================================================= */ + #define R_CANFD_CFDC2_BLSTS_BLC_Pos (3UL) /*!< BLC (Bit 3) */ + #define R_CANFD_CFDC2_BLSTS_BLC_Msk (0xfffffff8UL) /*!< BLC (Bitfield-Mask: 0x1fffffff) */ + +/* =========================================================================================================================== */ +/* ================ 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_GAFLSRD0_Pos (4UL) /*!< GAFLSRD0 (Bit 4) */ + #define R_CANFD_CFDGAFL_P0_GAFLSRD0_Msk (0x10UL) /*!< GAFLSRD0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGAFL_P0_GAFLSRD1_Pos (5UL) /*!< GAFLSRD1 (Bit 5) */ + #define R_CANFD_CFDGAFL_P0_GAFLSRD1_Msk (0x20UL) /*!< GAFLSRD1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGAFL_P0_GAFLSRD2_Pos (6UL) /*!< GAFLSRD2 (Bit 6) */ + #define R_CANFD_CFDGAFL_P0_GAFLSRD2_Msk (0x40UL) /*!< GAFLSRD2 (Bitfield-Mask: 0x01) */ + #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 (0x3fffUL) /*!< GAFLFDP (Bitfield-Mask: 0x3fff) */ + +/* =========================================================================================================================== */ +/* ================ CFDRM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== ID =========================================================== */ + #define R_CANFD_CFDRM_ID_RMID_Pos (0UL) /*!< RMID (Bit 0) */ + #define R_CANFD_CFDRM_ID_RMID_Msk (0x1fffffffUL) /*!< RMID (Bitfield-Mask: 0x1fffffff) */ + #define R_CANFD_CFDRM_ID_RMRTR_Pos (30UL) /*!< RMRTR (Bit 30) */ + #define R_CANFD_CFDRM_ID_RMRTR_Msk (0x40000000UL) /*!< RMRTR (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRM_ID_RMIDE_Pos (31UL) /*!< RMIDE (Bit 31) */ + #define R_CANFD_CFDRM_ID_RMIDE_Msk (0x80000000UL) /*!< RMIDE (Bitfield-Mask: 0x01) */ +/* ========================================================== PTR ========================================================== */ + #define R_CANFD_CFDRM_PTR_RMTS_Pos (0UL) /*!< RMTS (Bit 0) */ + #define R_CANFD_CFDRM_PTR_RMTS_Msk (0xffffUL) /*!< RMTS (Bitfield-Mask: 0xffff) */ + #define R_CANFD_CFDRM_PTR_RMDLC_Pos (28UL) /*!< RMDLC (Bit 28) */ + #define R_CANFD_CFDRM_PTR_RMDLC_Msk (0xf0000000UL) /*!< RMDLC (Bitfield-Mask: 0x0f) */ +/* ========================================================= FDSTS ========================================================= */ + #define R_CANFD_CFDRM_FDSTS_RMESI_Pos (0UL) /*!< RMESI (Bit 0) */ + #define R_CANFD_CFDRM_FDSTS_RMESI_Msk (0x1UL) /*!< RMESI (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRM_FDSTS_RMBRS_Pos (1UL) /*!< RMBRS (Bit 1) */ + #define R_CANFD_CFDRM_FDSTS_RMBRS_Msk (0x2UL) /*!< RMBRS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRM_FDSTS_RMFDF_Pos (2UL) /*!< RMFDF (Bit 2) */ + #define R_CANFD_CFDRM_FDSTS_RMFDF_Msk (0x4UL) /*!< RMFDF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDRM_FDSTS_RMIFL_Pos (8UL) /*!< RMIFL (Bit 8) */ + #define R_CANFD_CFDRM_FDSTS_RMIFL_Msk (0x300UL) /*!< RMIFL (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDRM_FDSTS_RMPTR_Pos (16UL) /*!< RMPTR (Bit 16) */ + #define R_CANFD_CFDRM_FDSTS_RMPTR_Msk (0xffff0000UL) /*!< RMPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================= DF_WD ========================================================= */ + #define R_CANFD_CFDRM_DF_WD_RMDB_LL_Pos (0UL) /*!< RMDB_LL (Bit 0) */ + #define R_CANFD_CFDRM_DF_WD_RMDB_LL_Msk (0xffUL) /*!< RMDB_LL (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDRM_DF_WD_RMDB_LH_Pos (8UL) /*!< RMDB_LH (Bit 8) */ + #define R_CANFD_CFDRM_DF_WD_RMDB_LH_Msk (0xff00UL) /*!< RMDB_LH (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDRM_DF_WD_RMDB_HL_Pos (16UL) /*!< RMDB_HL (Bit 16) */ + #define R_CANFD_CFDRM_DF_WD_RMDB_HL_Msk (0xff0000UL) /*!< RMDB_HL (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDRM_DF_WD_RMDB_HH_Pos (24UL) /*!< RMDB_HH (Bit 24) */ + #define R_CANFD_CFDRM_DF_WD_RMDB_HH_Msk (0xff000000UL) /*!< RMDB_HH (Bitfield-Mask: 0xff) */ +/* ========================================================== DF =========================================================== */ + #define R_CANFD_CFDRM_DF_RMDB_Pos (0UL) /*!< RMDB (Bit 0) */ + #define R_CANFD_CFDRM_DF_RMDB_Msk (0xffUL) /*!< RMDB (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ 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_CFDRFPTR_Pos (16UL) /*!< CFDRFPTR (Bit 16) */ + #define R_CANFD_CFDRF_FDSTS_CFDRFPTR_Msk (0xffff0000UL) /*!< CFDRFPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================= DF_WD ========================================================= */ + #define R_CANFD_CFDRF_DF_WD_RFDB_LL_Pos (0UL) /*!< RFDB_LL (Bit 0) */ + #define R_CANFD_CFDRF_DF_WD_RFDB_LL_Msk (0xffUL) /*!< RFDB_LL (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDRF_DF_WD_RFDB_LH_Pos (8UL) /*!< RFDB_LH (Bit 8) */ + #define R_CANFD_CFDRF_DF_WD_RFDB_LH_Msk (0xff00UL) /*!< RFDB_LH (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDRF_DF_WD_RFDB_HL_Pos (16UL) /*!< RFDB_HL (Bit 16) */ + #define R_CANFD_CFDRF_DF_WD_RFDB_HL_Msk (0xff0000UL) /*!< RFDB_HL (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDRF_DF_WD_RFDB_HH_Pos (24UL) /*!< RFDB_HH (Bit 24) */ + #define R_CANFD_CFDRF_DF_WD_RFDB_HH_Msk (0xff000000UL) /*!< RFDB_HH (Bitfield-Mask: 0xff) */ +/* ========================================================== 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_THLEN_Pos (29UL) /*!< THLEN (Bit 29) */ + #define R_CANFD_CFDCF_ID_THLEN_Msk (0x20000000UL) /*!< THLEN (Bitfield-Mask: 0x01) */ + #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) */ +/* ======================================================== FDCSTS ========================================================= */ + #define R_CANFD_CFDCF_FDCSTS_CFESI_Pos (0UL) /*!< CFESI (Bit 0) */ + #define R_CANFD_CFDCF_FDCSTS_CFESI_Msk (0x1UL) /*!< CFESI (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCF_FDCSTS_CFBRS_Pos (1UL) /*!< CFBRS (Bit 1) */ + #define R_CANFD_CFDCF_FDCSTS_CFBRS_Msk (0x2UL) /*!< CFBRS (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCF_FDCSTS_CFFDF_Pos (2UL) /*!< CFFDF (Bit 2) */ + #define R_CANFD_CFDCF_FDCSTS_CFFDF_Msk (0x4UL) /*!< CFFDF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCF_FDCSTS_CFIFL_Pos (8UL) /*!< CFIFL (Bit 8) */ + #define R_CANFD_CFDCF_FDCSTS_CFIFL_Msk (0x300UL) /*!< CFIFL (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDCF_FDCSTS_CFPTR_Pos (16UL) /*!< CFPTR (Bit 16) */ + #define R_CANFD_CFDCF_FDCSTS_CFPTR_Msk (0xffff0000UL) /*!< CFPTR (Bitfield-Mask: 0xffff) */ +/* ========================================================= DF_WD ========================================================= */ + #define R_CANFD_CFDCF_DF_WD_CFDB_LL_Pos (0UL) /*!< CFDB_LL (Bit 0) */ + #define R_CANFD_CFDCF_DF_WD_CFDB_LL_Msk (0xffUL) /*!< CFDB_LL (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDCF_DF_WD_CFDB_LH_Pos (8UL) /*!< CFDB_LH (Bit 8) */ + #define R_CANFD_CFDCF_DF_WD_CFDB_LH_Msk (0xff00UL) /*!< CFDB_LH (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDCF_DF_WD_CFDB_HL_Pos (16UL) /*!< CFDB_HL (Bit 16) */ + #define R_CANFD_CFDCF_DF_WD_CFDB_HL_Msk (0xff0000UL) /*!< CFDB_HL (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDCF_DF_WD_CFDB_HH_Pos (24UL) /*!< CFDB_HH (Bit 24) */ + #define R_CANFD_CFDCF_DF_WD_CFDB_HH_Msk (0xff000000UL) /*!< CFDB_HH (Bitfield-Mask: 0xff) */ +/* ========================================================== DF =========================================================== */ + #define R_CANFD_CFDCF_DF_CFDB_Pos (0UL) /*!< CFDB (Bit 0) */ + #define R_CANFD_CFDCF_DF_CFDB_Msk (0xffUL) /*!< CFDB (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ 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_TGW_Pos (15UL) /*!< TGW (Bit 15) */ + #define R_CANFD_CFDTHL_ACC0_TGW_Msk (0x8000UL) /*!< TGW (Bitfield-Mask: 0x01) */ + #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) */ + +/* =========================================================================================================================== */ +/* ================ 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_THLEN_Pos (29UL) /*!< THLEN (Bit 29) */ + #define R_CANFD_CFDTM_ID_THLEN_Msk (0x20000000UL) /*!< THLEN (Bitfield-Mask: 0x01) */ + #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_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_WD ========================================================= */ + #define R_CANFD_CFDTM_DF_WD_TMDB_LL_Pos (0UL) /*!< TMDB_LL (Bit 0) */ + #define R_CANFD_CFDTM_DF_WD_TMDB_LL_Msk (0xffUL) /*!< TMDB_LL (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDTM_DF_WD_TMDB_LH_Pos (8UL) /*!< TMDB_LH (Bit 8) */ + #define R_CANFD_CFDTM_DF_WD_TMDB_LH_Msk (0xff00UL) /*!< TMDB_LH (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDTM_DF_WD_TMDB_HL_Pos (16UL) /*!< TMDB_HL (Bit 16) */ + #define R_CANFD_CFDTM_DF_WD_TMDB_HL_Msk (0xff0000UL) /*!< TMDB_HL (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDTM_DF_WD_TMDB_HH_Pos (24UL) /*!< TMDB_HH (Bit 24) */ + #define R_CANFD_CFDTM_DF_WD_TMDB_HH_Msk (0xff000000UL) /*!< TMDB_HH (Bitfield-Mask: 0xff) */ +/* ========================================================== DF =========================================================== */ + #define R_CANFD_CFDTM_DF_TMDB_Pos (0UL) /*!< TMDB (Bit 0) */ + #define R_CANFD_CFDTM_DF_TMDB_Msk (0xffUL) /*!< TMDB (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ CM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== CR =========================================================== */ + #define R_CMT_UNT_CM_CR_CKS_Pos (0UL) /*!< CKS (Bit 0) */ + #define R_CMT_UNT_CM_CR_CKS_Msk (0x3UL) /*!< CKS (Bitfield-Mask: 0x03) */ + #define R_CMT_UNT_CM_CR_CMIE_Pos (6UL) /*!< CMIE (Bit 6) */ + #define R_CMT_UNT_CM_CR_CMIE_Msk (0x40UL) /*!< CMIE (Bitfield-Mask: 0x01) */ +/* ========================================================== CNT ========================================================== */ +/* ========================================================== COR ========================================================== */ + +/* =========================================================================================================================== */ +/* ================ UNT ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CMSTR0 ========================================================= */ + #define R_CMT_UNT_CMSTR0_STR0_Pos (0UL) /*!< STR0 (Bit 0) */ + #define R_CMT_UNT_CMSTR0_STR0_Msk (0x1UL) /*!< STR0 (Bitfield-Mask: 0x01) */ + #define R_CMT_UNT_CMSTR0_STR1_Pos (1UL) /*!< STR1 (Bit 1) */ + #define R_CMT_UNT_CMSTR0_STR1_Msk (0x2UL) /*!< STR1 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ SAR ================ */ +/* =========================================================================================================================== */ + +/* =========================================================== L =========================================================== */ + #define R_IIC0_SAR_L_SVA0_Pos (0UL) /*!< SVA0 (Bit 0) */ + #define R_IIC0_SAR_L_SVA0_Msk (0x1UL) /*!< SVA0 (Bitfield-Mask: 0x01) */ + #define R_IIC0_SAR_L_SVA_Pos (1UL) /*!< SVA (Bit 1) */ + #define R_IIC0_SAR_L_SVA_Msk (0xfeUL) /*!< SVA (Bitfield-Mask: 0x7f) */ +/* =========================================================== U =========================================================== */ + #define R_IIC0_SAR_U_FS_Pos (0UL) /*!< FS (Bit 0) */ + #define R_IIC0_SAR_U_FS_Msk (0x1UL) /*!< FS (Bitfield-Mask: 0x01) */ + #define R_IIC0_SAR_U_SVA_Pos (1UL) /*!< SVA (Bit 1) */ + #define R_IIC0_SAR_U_SVA_Msk (0x6UL) /*!< SVA (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ N ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== SA =========================================================== */ +/* ========================================================== DA =========================================================== */ +/* ========================================================== TB =========================================================== */ + +/* =========================================================================================================================== */ +/* ================ CH ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= CRSA ========================================================== */ +/* ========================================================= CRDA ========================================================== */ +/* ========================================================= CRTB ========================================================== */ +/* ======================================================== CHSTAT ========================================================= */ + #define R_DMAC0_GRP_CH_CHSTAT_EN_Pos (0UL) /*!< EN (Bit 0) */ + #define R_DMAC0_GRP_CH_CHSTAT_EN_Msk (0x1UL) /*!< EN (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHSTAT_RQST_Pos (1UL) /*!< RQST (Bit 1) */ + #define R_DMAC0_GRP_CH_CHSTAT_RQST_Msk (0x2UL) /*!< RQST (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHSTAT_TACT_Pos (2UL) /*!< TACT (Bit 2) */ + #define R_DMAC0_GRP_CH_CHSTAT_TACT_Msk (0x4UL) /*!< TACT (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHSTAT_SUS_Pos (3UL) /*!< SUS (Bit 3) */ + #define R_DMAC0_GRP_CH_CHSTAT_SUS_Msk (0x8UL) /*!< SUS (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHSTAT_ER_Pos (4UL) /*!< ER (Bit 4) */ + #define R_DMAC0_GRP_CH_CHSTAT_ER_Msk (0x10UL) /*!< ER (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHSTAT_END_Pos (5UL) /*!< END (Bit 5) */ + #define R_DMAC0_GRP_CH_CHSTAT_END_Msk (0x20UL) /*!< END (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHSTAT_TC_Pos (6UL) /*!< TC (Bit 6) */ + #define R_DMAC0_GRP_CH_CHSTAT_TC_Msk (0x40UL) /*!< TC (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHSTAT_SR_Pos (7UL) /*!< SR (Bit 7) */ + #define R_DMAC0_GRP_CH_CHSTAT_SR_Msk (0x80UL) /*!< SR (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHSTAT_DL_Pos (8UL) /*!< DL (Bit 8) */ + #define R_DMAC0_GRP_CH_CHSTAT_DL_Msk (0x100UL) /*!< DL (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHSTAT_DW_Pos (9UL) /*!< DW (Bit 9) */ + #define R_DMAC0_GRP_CH_CHSTAT_DW_Msk (0x200UL) /*!< DW (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHSTAT_DER_Pos (10UL) /*!< DER (Bit 10) */ + #define R_DMAC0_GRP_CH_CHSTAT_DER_Msk (0x400UL) /*!< DER (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHSTAT_MODE_Pos (11UL) /*!< MODE (Bit 11) */ + #define R_DMAC0_GRP_CH_CHSTAT_MODE_Msk (0x800UL) /*!< MODE (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHSTAT_INTM_Pos (16UL) /*!< INTM (Bit 16) */ + #define R_DMAC0_GRP_CH_CHSTAT_INTM_Msk (0x10000UL) /*!< INTM (Bitfield-Mask: 0x01) */ +/* ======================================================== CHCTRL ========================================================= */ + #define R_DMAC0_GRP_CH_CHCTRL_SETEN_Pos (0UL) /*!< SETEN (Bit 0) */ + #define R_DMAC0_GRP_CH_CHCTRL_SETEN_Msk (0x1UL) /*!< SETEN (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCTRL_CLREN_Pos (1UL) /*!< CLREN (Bit 1) */ + #define R_DMAC0_GRP_CH_CHCTRL_CLREN_Msk (0x2UL) /*!< CLREN (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCTRL_STG_Pos (2UL) /*!< STG (Bit 2) */ + #define R_DMAC0_GRP_CH_CHCTRL_STG_Msk (0x4UL) /*!< STG (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCTRL_SWRST_Pos (3UL) /*!< SWRST (Bit 3) */ + #define R_DMAC0_GRP_CH_CHCTRL_SWRST_Msk (0x8UL) /*!< SWRST (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCTRL_CLRRQ_Pos (4UL) /*!< CLRRQ (Bit 4) */ + #define R_DMAC0_GRP_CH_CHCTRL_CLRRQ_Msk (0x10UL) /*!< CLRRQ (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCTRL_CLREND_Pos (5UL) /*!< CLREND (Bit 5) */ + #define R_DMAC0_GRP_CH_CHCTRL_CLREND_Msk (0x20UL) /*!< CLREND (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCTRL_CLRTC_Pos (6UL) /*!< CLRTC (Bit 6) */ + #define R_DMAC0_GRP_CH_CHCTRL_CLRTC_Msk (0x40UL) /*!< CLRTC (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCTRL_SETSUS_Pos (8UL) /*!< SETSUS (Bit 8) */ + #define R_DMAC0_GRP_CH_CHCTRL_SETSUS_Msk (0x100UL) /*!< SETSUS (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCTRL_CLRSUS_Pos (9UL) /*!< CLRSUS (Bit 9) */ + #define R_DMAC0_GRP_CH_CHCTRL_CLRSUS_Msk (0x200UL) /*!< CLRSUS (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCTRL_SETINTM_Pos (16UL) /*!< SETINTM (Bit 16) */ + #define R_DMAC0_GRP_CH_CHCTRL_SETINTM_Msk (0x10000UL) /*!< SETINTM (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCTRL_CLRINTM_Pos (17UL) /*!< CLRINTM (Bit 17) */ + #define R_DMAC0_GRP_CH_CHCTRL_CLRINTM_Msk (0x20000UL) /*!< CLRINTM (Bitfield-Mask: 0x01) */ +/* ========================================================= CHCFG ========================================================= */ + #define R_DMAC0_GRP_CH_CHCFG_SEL_Pos (0UL) /*!< SEL (Bit 0) */ + #define R_DMAC0_GRP_CH_CHCFG_SEL_Msk (0x7UL) /*!< SEL (Bitfield-Mask: 0x07) */ + #define R_DMAC0_GRP_CH_CHCFG_REQD_Pos (3UL) /*!< REQD (Bit 3) */ + #define R_DMAC0_GRP_CH_CHCFG_REQD_Msk (0x8UL) /*!< REQD (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCFG_LOEN_Pos (4UL) /*!< LOEN (Bit 4) */ + #define R_DMAC0_GRP_CH_CHCFG_LOEN_Msk (0x10UL) /*!< LOEN (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCFG_HIEN_Pos (5UL) /*!< HIEN (Bit 5) */ + #define R_DMAC0_GRP_CH_CHCFG_HIEN_Msk (0x20UL) /*!< HIEN (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCFG_LVL_Pos (6UL) /*!< LVL (Bit 6) */ + #define R_DMAC0_GRP_CH_CHCFG_LVL_Msk (0x40UL) /*!< LVL (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCFG_AM_Pos (8UL) /*!< AM (Bit 8) */ + #define R_DMAC0_GRP_CH_CHCFG_AM_Msk (0x700UL) /*!< AM (Bitfield-Mask: 0x07) */ + #define R_DMAC0_GRP_CH_CHCFG_SDS_Pos (12UL) /*!< SDS (Bit 12) */ + #define R_DMAC0_GRP_CH_CHCFG_SDS_Msk (0xf000UL) /*!< SDS (Bitfield-Mask: 0x0f) */ + #define R_DMAC0_GRP_CH_CHCFG_DDS_Pos (16UL) /*!< DDS (Bit 16) */ + #define R_DMAC0_GRP_CH_CHCFG_DDS_Msk (0xf0000UL) /*!< DDS (Bitfield-Mask: 0x0f) */ + #define R_DMAC0_GRP_CH_CHCFG_SAD_Pos (20UL) /*!< SAD (Bit 20) */ + #define R_DMAC0_GRP_CH_CHCFG_SAD_Msk (0x100000UL) /*!< SAD (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCFG_DAD_Pos (21UL) /*!< DAD (Bit 21) */ + #define R_DMAC0_GRP_CH_CHCFG_DAD_Msk (0x200000UL) /*!< DAD (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCFG_TM_Pos (22UL) /*!< TM (Bit 22) */ + #define R_DMAC0_GRP_CH_CHCFG_TM_Msk (0x400000UL) /*!< TM (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCFG_DEM_Pos (24UL) /*!< DEM (Bit 24) */ + #define R_DMAC0_GRP_CH_CHCFG_DEM_Msk (0x1000000UL) /*!< DEM (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCFG_TCM_Pos (25UL) /*!< TCM (Bit 25) */ + #define R_DMAC0_GRP_CH_CHCFG_TCM_Msk (0x2000000UL) /*!< TCM (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCFG_SBE_Pos (27UL) /*!< SBE (Bit 27) */ + #define R_DMAC0_GRP_CH_CHCFG_SBE_Msk (0x8000000UL) /*!< SBE (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCFG_RSEL_Pos (28UL) /*!< RSEL (Bit 28) */ + #define R_DMAC0_GRP_CH_CHCFG_RSEL_Msk (0x10000000UL) /*!< RSEL (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCFG_RSW_Pos (29UL) /*!< RSW (Bit 29) */ + #define R_DMAC0_GRP_CH_CHCFG_RSW_Msk (0x20000000UL) /*!< RSW (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCFG_REN_Pos (30UL) /*!< REN (Bit 30) */ + #define R_DMAC0_GRP_CH_CHCFG_REN_Msk (0x40000000UL) /*!< REN (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_CH_CHCFG_DMS_Pos (31UL) /*!< DMS (Bit 31) */ + #define R_DMAC0_GRP_CH_CHCFG_DMS_Msk (0x80000000UL) /*!< DMS (Bitfield-Mask: 0x01) */ +/* ======================================================== CHITVL ========================================================= */ + #define R_DMAC0_GRP_CH_CHITVL_ITVL_Pos (0UL) /*!< ITVL (Bit 0) */ + #define R_DMAC0_GRP_CH_CHITVL_ITVL_Msk (0xffffUL) /*!< ITVL (Bitfield-Mask: 0xffff) */ +/* ========================================================= CHEXT ========================================================= */ + #define R_DMAC0_GRP_CH_CHEXT_SPR_Pos (0UL) /*!< SPR (Bit 0) */ + #define R_DMAC0_GRP_CH_CHEXT_SPR_Msk (0x7UL) /*!< SPR (Bitfield-Mask: 0x07) */ + #define R_DMAC0_GRP_CH_CHEXT_SCA_Pos (4UL) /*!< SCA (Bit 4) */ + #define R_DMAC0_GRP_CH_CHEXT_SCA_Msk (0xf0UL) /*!< SCA (Bitfield-Mask: 0x0f) */ + #define R_DMAC0_GRP_CH_CHEXT_DPR_Pos (8UL) /*!< DPR (Bit 8) */ + #define R_DMAC0_GRP_CH_CHEXT_DPR_Msk (0x700UL) /*!< DPR (Bitfield-Mask: 0x07) */ + #define R_DMAC0_GRP_CH_CHEXT_DCA_Pos (12UL) /*!< DCA (Bit 12) */ + #define R_DMAC0_GRP_CH_CHEXT_DCA_Msk (0xf000UL) /*!< DCA (Bitfield-Mask: 0x0f) */ +/* ========================================================= NXLA ========================================================== */ +/* ========================================================= CRLA ========================================================== */ + +/* =========================================================================================================================== */ +/* ================ GRP ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= DCTRL ========================================================= */ + #define R_DMAC0_GRP_DCTRL_PR_Pos (0UL) /*!< PR (Bit 0) */ + #define R_DMAC0_GRP_DCTRL_PR_Msk (0x1UL) /*!< PR (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DCTRL_LVINT_Pos (1UL) /*!< LVINT (Bit 1) */ + #define R_DMAC0_GRP_DCTRL_LVINT_Msk (0x2UL) /*!< LVINT (Bitfield-Mask: 0x01) */ +/* ======================================================= DSTAT_EN ======================================================== */ + #define R_DMAC0_GRP_DSTAT_EN_EN00_Pos (0UL) /*!< EN00 (Bit 0) */ + #define R_DMAC0_GRP_DSTAT_EN_EN00_Msk (0x1UL) /*!< EN00 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_EN_EN01_Pos (1UL) /*!< EN01 (Bit 1) */ + #define R_DMAC0_GRP_DSTAT_EN_EN01_Msk (0x2UL) /*!< EN01 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_EN_EN02_Pos (2UL) /*!< EN02 (Bit 2) */ + #define R_DMAC0_GRP_DSTAT_EN_EN02_Msk (0x4UL) /*!< EN02 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_EN_EN03_Pos (3UL) /*!< EN03 (Bit 3) */ + #define R_DMAC0_GRP_DSTAT_EN_EN03_Msk (0x8UL) /*!< EN03 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_EN_EN04_Pos (4UL) /*!< EN04 (Bit 4) */ + #define R_DMAC0_GRP_DSTAT_EN_EN04_Msk (0x10UL) /*!< EN04 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_EN_EN05_Pos (5UL) /*!< EN05 (Bit 5) */ + #define R_DMAC0_GRP_DSTAT_EN_EN05_Msk (0x20UL) /*!< EN05 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_EN_EN06_Pos (6UL) /*!< EN06 (Bit 6) */ + #define R_DMAC0_GRP_DSTAT_EN_EN06_Msk (0x40UL) /*!< EN06 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_EN_EN07_Pos (7UL) /*!< EN07 (Bit 7) */ + #define R_DMAC0_GRP_DSTAT_EN_EN07_Msk (0x80UL) /*!< EN07 (Bitfield-Mask: 0x01) */ +/* ======================================================= DSTAT_ER ======================================================== */ + #define R_DMAC0_GRP_DSTAT_ER_ER00_Pos (0UL) /*!< ER00 (Bit 0) */ + #define R_DMAC0_GRP_DSTAT_ER_ER00_Msk (0x1UL) /*!< ER00 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_ER_ER01_Pos (1UL) /*!< ER01 (Bit 1) */ + #define R_DMAC0_GRP_DSTAT_ER_ER01_Msk (0x2UL) /*!< ER01 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_ER_ER02_Pos (2UL) /*!< ER02 (Bit 2) */ + #define R_DMAC0_GRP_DSTAT_ER_ER02_Msk (0x4UL) /*!< ER02 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_ER_ER03_Pos (3UL) /*!< ER03 (Bit 3) */ + #define R_DMAC0_GRP_DSTAT_ER_ER03_Msk (0x8UL) /*!< ER03 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_ER_ER04_Pos (4UL) /*!< ER04 (Bit 4) */ + #define R_DMAC0_GRP_DSTAT_ER_ER04_Msk (0x10UL) /*!< ER04 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_ER_ER05_Pos (5UL) /*!< ER05 (Bit 5) */ + #define R_DMAC0_GRP_DSTAT_ER_ER05_Msk (0x20UL) /*!< ER05 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_ER_ER06_Pos (6UL) /*!< ER06 (Bit 6) */ + #define R_DMAC0_GRP_DSTAT_ER_ER06_Msk (0x40UL) /*!< ER06 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_ER_ER07_Pos (7UL) /*!< ER07 (Bit 7) */ + #define R_DMAC0_GRP_DSTAT_ER_ER07_Msk (0x80UL) /*!< ER07 (Bitfield-Mask: 0x01) */ +/* ======================================================= DSTAT_END ======================================================= */ + #define R_DMAC0_GRP_DSTAT_END_END00_Pos (0UL) /*!< END00 (Bit 0) */ + #define R_DMAC0_GRP_DSTAT_END_END00_Msk (0x1UL) /*!< END00 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_END_END01_Pos (1UL) /*!< END01 (Bit 1) */ + #define R_DMAC0_GRP_DSTAT_END_END01_Msk (0x2UL) /*!< END01 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_END_END02_Pos (2UL) /*!< END02 (Bit 2) */ + #define R_DMAC0_GRP_DSTAT_END_END02_Msk (0x4UL) /*!< END02 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_END_END03_Pos (3UL) /*!< END03 (Bit 3) */ + #define R_DMAC0_GRP_DSTAT_END_END03_Msk (0x8UL) /*!< END03 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_END_END04_Pos (4UL) /*!< END04 (Bit 4) */ + #define R_DMAC0_GRP_DSTAT_END_END04_Msk (0x10UL) /*!< END04 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_END_END05_Pos (5UL) /*!< END05 (Bit 5) */ + #define R_DMAC0_GRP_DSTAT_END_END05_Msk (0x20UL) /*!< END05 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_END_END06_Pos (6UL) /*!< END06 (Bit 6) */ + #define R_DMAC0_GRP_DSTAT_END_END06_Msk (0x40UL) /*!< END06 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_END_END07_Pos (7UL) /*!< END07 (Bit 7) */ + #define R_DMAC0_GRP_DSTAT_END_END07_Msk (0x80UL) /*!< END07 (Bitfield-Mask: 0x01) */ +/* ======================================================= DSTAT_SUS ======================================================= */ + #define R_DMAC0_GRP_DSTAT_SUS_SUS00_Pos (0UL) /*!< SUS00 (Bit 0) */ + #define R_DMAC0_GRP_DSTAT_SUS_SUS00_Msk (0x1UL) /*!< SUS00 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_SUS_SUS01_Pos (1UL) /*!< SUS01 (Bit 1) */ + #define R_DMAC0_GRP_DSTAT_SUS_SUS01_Msk (0x2UL) /*!< SUS01 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_SUS_SUS02_Pos (2UL) /*!< SUS02 (Bit 2) */ + #define R_DMAC0_GRP_DSTAT_SUS_SUS02_Msk (0x4UL) /*!< SUS02 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_SUS_SUS03_Pos (3UL) /*!< SUS03 (Bit 3) */ + #define R_DMAC0_GRP_DSTAT_SUS_SUS03_Msk (0x8UL) /*!< SUS03 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_SUS_SUS04_Pos (4UL) /*!< SUS04 (Bit 4) */ + #define R_DMAC0_GRP_DSTAT_SUS_SUS04_Msk (0x10UL) /*!< SUS04 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_SUS_SUS05_Pos (5UL) /*!< SUS05 (Bit 5) */ + #define R_DMAC0_GRP_DSTAT_SUS_SUS05_Msk (0x20UL) /*!< SUS05 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_SUS_SUS06_Pos (6UL) /*!< SUS06 (Bit 6) */ + #define R_DMAC0_GRP_DSTAT_SUS_SUS06_Msk (0x40UL) /*!< SUS06 (Bitfield-Mask: 0x01) */ + #define R_DMAC0_GRP_DSTAT_SUS_SUS07_Pos (7UL) /*!< SUS07 (Bit 7) */ + #define R_DMAC0_GRP_DSTAT_SUS_SUS07_Msk (0x80UL) /*!< SUS07 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ DRCTL ================ */ +/* =========================================================================================================================== */ + +/* =========================================================== L =========================================================== */ + #define R_PORT_NSR_DRCTL_L_DRV0_Pos (0UL) /*!< DRV0 (Bit 0) */ + #define R_PORT_NSR_DRCTL_L_DRV0_Msk (0x3UL) /*!< DRV0 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_DRCTL_L_PUD0_Pos (2UL) /*!< PUD0 (Bit 2) */ + #define R_PORT_NSR_DRCTL_L_PUD0_Msk (0xcUL) /*!< PUD0 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_DRCTL_L_SMT0_Pos (4UL) /*!< SMT0 (Bit 4) */ + #define R_PORT_NSR_DRCTL_L_SMT0_Msk (0x10UL) /*!< SMT0 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_DRCTL_L_SR0_Pos (5UL) /*!< SR0 (Bit 5) */ + #define R_PORT_NSR_DRCTL_L_SR0_Msk (0x20UL) /*!< SR0 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_DRCTL_L_DRV1_Pos (8UL) /*!< DRV1 (Bit 8) */ + #define R_PORT_NSR_DRCTL_L_DRV1_Msk (0x300UL) /*!< DRV1 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_DRCTL_L_PUD1_Pos (10UL) /*!< PUD1 (Bit 10) */ + #define R_PORT_NSR_DRCTL_L_PUD1_Msk (0xc00UL) /*!< PUD1 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_DRCTL_L_SMT1_Pos (12UL) /*!< SMT1 (Bit 12) */ + #define R_PORT_NSR_DRCTL_L_SMT1_Msk (0x1000UL) /*!< SMT1 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_DRCTL_L_SR1_Pos (13UL) /*!< SR1 (Bit 13) */ + #define R_PORT_NSR_DRCTL_L_SR1_Msk (0x2000UL) /*!< SR1 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_DRCTL_L_DRV2_Pos (16UL) /*!< DRV2 (Bit 16) */ + #define R_PORT_NSR_DRCTL_L_DRV2_Msk (0x30000UL) /*!< DRV2 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_DRCTL_L_PUD2_Pos (18UL) /*!< PUD2 (Bit 18) */ + #define R_PORT_NSR_DRCTL_L_PUD2_Msk (0xc0000UL) /*!< PUD2 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_DRCTL_L_SMT2_Pos (20UL) /*!< SMT2 (Bit 20) */ + #define R_PORT_NSR_DRCTL_L_SMT2_Msk (0x100000UL) /*!< SMT2 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_DRCTL_L_SR2_Pos (21UL) /*!< SR2 (Bit 21) */ + #define R_PORT_NSR_DRCTL_L_SR2_Msk (0x200000UL) /*!< SR2 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_DRCTL_L_DRV3_Pos (24UL) /*!< DRV3 (Bit 24) */ + #define R_PORT_NSR_DRCTL_L_DRV3_Msk (0x3000000UL) /*!< DRV3 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_DRCTL_L_PUD3_Pos (26UL) /*!< PUD3 (Bit 26) */ + #define R_PORT_NSR_DRCTL_L_PUD3_Msk (0xc000000UL) /*!< PUD3 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_DRCTL_L_SMT3_Pos (28UL) /*!< SMT3 (Bit 28) */ + #define R_PORT_NSR_DRCTL_L_SMT3_Msk (0x10000000UL) /*!< SMT3 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_DRCTL_L_SR3_Pos (29UL) /*!< SR3 (Bit 29) */ + #define R_PORT_NSR_DRCTL_L_SR3_Msk (0x20000000UL) /*!< SR3 (Bitfield-Mask: 0x01) */ +/* =========================================================== H =========================================================== */ + #define R_PORT_NSR_DRCTL_H_DRV4_Pos (0UL) /*!< DRV4 (Bit 0) */ + #define R_PORT_NSR_DRCTL_H_DRV4_Msk (0x3UL) /*!< DRV4 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_DRCTL_H_PUD4_Pos (2UL) /*!< PUD4 (Bit 2) */ + #define R_PORT_NSR_DRCTL_H_PUD4_Msk (0xcUL) /*!< PUD4 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_DRCTL_H_SMT4_Pos (4UL) /*!< SMT4 (Bit 4) */ + #define R_PORT_NSR_DRCTL_H_SMT4_Msk (0x10UL) /*!< SMT4 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_DRCTL_H_SR4_Pos (5UL) /*!< SR4 (Bit 5) */ + #define R_PORT_NSR_DRCTL_H_SR4_Msk (0x20UL) /*!< SR4 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_DRCTL_H_DRV5_Pos (8UL) /*!< DRV5 (Bit 8) */ + #define R_PORT_NSR_DRCTL_H_DRV5_Msk (0x300UL) /*!< DRV5 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_DRCTL_H_PUD5_Pos (10UL) /*!< PUD5 (Bit 10) */ + #define R_PORT_NSR_DRCTL_H_PUD5_Msk (0xc00UL) /*!< PUD5 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_DRCTL_H_SMT5_Pos (12UL) /*!< SMT5 (Bit 12) */ + #define R_PORT_NSR_DRCTL_H_SMT5_Msk (0x1000UL) /*!< SMT5 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_DRCTL_H_SR5_Pos (13UL) /*!< SR5 (Bit 13) */ + #define R_PORT_NSR_DRCTL_H_SR5_Msk (0x2000UL) /*!< SR5 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_DRCTL_H_DRV6_Pos (16UL) /*!< DRV6 (Bit 16) */ + #define R_PORT_NSR_DRCTL_H_DRV6_Msk (0x30000UL) /*!< DRV6 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_DRCTL_H_PUD6_Pos (18UL) /*!< PUD6 (Bit 18) */ + #define R_PORT_NSR_DRCTL_H_PUD6_Msk (0xc0000UL) /*!< PUD6 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_DRCTL_H_SMT6_Pos (20UL) /*!< SMT6 (Bit 20) */ + #define R_PORT_NSR_DRCTL_H_SMT6_Msk (0x100000UL) /*!< SMT6 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_DRCTL_H_SR6_Pos (21UL) /*!< SR6 (Bit 21) */ + #define R_PORT_NSR_DRCTL_H_SR6_Msk (0x200000UL) /*!< SR6 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_DRCTL_H_DRV7_Pos (24UL) /*!< DRV7 (Bit 24) */ + #define R_PORT_NSR_DRCTL_H_DRV7_Msk (0x3000000UL) /*!< DRV7 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_DRCTL_H_PUD7_Pos (26UL) /*!< PUD7 (Bit 26) */ + #define R_PORT_NSR_DRCTL_H_PUD7_Msk (0xc000000UL) /*!< PUD7 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_DRCTL_H_SMT7_Pos (28UL) /*!< SMT7 (Bit 28) */ + #define R_PORT_NSR_DRCTL_H_SMT7_Msk (0x10000000UL) /*!< SMT7 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_DRCTL_H_SR7_Pos (29UL) /*!< SR7 (Bit 29) */ + #define R_PORT_NSR_DRCTL_H_SR7_Msk (0x20000000UL) /*!< SR7 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ ELC_PDBF ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== BY =========================================================== */ + #define R_PORT_NSR_ELC_PDBF_BY_PB0_Pos (0UL) /*!< PB0 (Bit 0) */ + #define R_PORT_NSR_ELC_PDBF_BY_PB0_Msk (0x1UL) /*!< PB0 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_PDBF_BY_PB1_Pos (1UL) /*!< PB1 (Bit 1) */ + #define R_PORT_NSR_ELC_PDBF_BY_PB1_Msk (0x2UL) /*!< PB1 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_PDBF_BY_PB2_Pos (2UL) /*!< PB2 (Bit 2) */ + #define R_PORT_NSR_ELC_PDBF_BY_PB2_Msk (0x4UL) /*!< PB2 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_PDBF_BY_PB3_Pos (3UL) /*!< PB3 (Bit 3) */ + #define R_PORT_NSR_ELC_PDBF_BY_PB3_Msk (0x8UL) /*!< PB3 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_PDBF_BY_PB4_Pos (4UL) /*!< PB4 (Bit 4) */ + #define R_PORT_NSR_ELC_PDBF_BY_PB4_Msk (0x10UL) /*!< PB4 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_PDBF_BY_PB5_Pos (5UL) /*!< PB5 (Bit 5) */ + #define R_PORT_NSR_ELC_PDBF_BY_PB5_Msk (0x20UL) /*!< PB5 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_PDBF_BY_PB6_Pos (6UL) /*!< PB6 (Bit 6) */ + #define R_PORT_NSR_ELC_PDBF_BY_PB6_Msk (0x40UL) /*!< PB6 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_PDBF_BY_PB7_Pos (7UL) /*!< PB7 (Bit 7) */ + #define R_PORT_NSR_ELC_PDBF_BY_PB7_Msk (0x80UL) /*!< PB7 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ SWTM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== EN =========================================================== */ + #define R_ETHSW_PTP_SWTM_EN_OUTEN_Pos (0UL) /*!< OUTEN (Bit 0) */ + #define R_ETHSW_PTP_SWTM_EN_OUTEN_Msk (0x1UL) /*!< OUTEN (Bitfield-Mask: 0x01) */ +/* ========================================================= STSEC ========================================================= */ + #define R_ETHSW_PTP_SWTM_STSEC_STSEC_Pos (0UL) /*!< STSEC (Bit 0) */ + #define R_ETHSW_PTP_SWTM_STSEC_STSEC_Msk (0xffffffffUL) /*!< STSEC (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= STNS ========================================================== */ + #define R_ETHSW_PTP_SWTM_STNS_STNS_Pos (0UL) /*!< STNS (Bit 0) */ + #define R_ETHSW_PTP_SWTM_STNS_STNS_Msk (0xffffffffUL) /*!< STNS (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= PSEC ========================================================== */ + #define R_ETHSW_PTP_SWTM_PSEC_PSEC_Pos (0UL) /*!< PSEC (Bit 0) */ + #define R_ETHSW_PTP_SWTM_PSEC_PSEC_Msk (0xffffffffUL) /*!< PSEC (Bitfield-Mask: 0xffffffff) */ +/* ========================================================== PNS ========================================================== */ + #define R_ETHSW_PTP_SWTM_PNS_PNS_Pos (0UL) /*!< PNS (Bit 0) */ + #define R_ETHSW_PTP_SWTM_PNS_PNS_Msk (0xffffffffUL) /*!< PNS (Bitfield-Mask: 0xffffffff) */ +/* ========================================================== WTH ========================================================== */ + #define R_ETHSW_PTP_SWTM_WTH_WIDTH_Pos (0UL) /*!< WIDTH (Bit 0) */ + #define R_ETHSW_PTP_SWTM_WTH_WIDTH_Msk (0xffffUL) /*!< WIDTH (Bitfield-Mask: 0xffff) */ +/* ========================================================= MAXP ========================================================== */ + #define R_ETHSW_PTP_SWTM_MAXP_MAXP_Pos (0UL) /*!< MAXP (Bit 0) */ + #define R_ETHSW_PTP_SWTM_MAXP_MAXP_Msk (0xffffffffUL) /*!< MAXP (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== LATSEC ========================================================= */ + #define R_ETHSW_PTP_SWTM_LATSEC_LATSEC_Pos (0UL) /*!< LATSEC (Bit 0) */ + #define R_ETHSW_PTP_SWTM_LATSEC_LATSEC_Msk (0xffffffffUL) /*!< LATSEC (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= LATNS ========================================================= */ + #define R_ETHSW_PTP_SWTM_LATNS_LATNS_Pos (0UL) /*!< LATNS (Bit 0) */ + #define R_ETHSW_PTP_SWTM_LATNS_LATNS_Msk (0xffffffffUL) /*!< LATNS (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ MGMT_ADDR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== lo =========================================================== */ + #define R_ETHSW_MGMT_ADDR_lo_BPDU_DST_Pos (0UL) /*!< BPDU_DST (Bit 0) */ + #define R_ETHSW_MGMT_ADDR_lo_BPDU_DST_Msk (0xffffffffUL) /*!< BPDU_DST (Bitfield-Mask: 0xffffffff) */ +/* ========================================================== hi =========================================================== */ + #define R_ETHSW_MGMT_ADDR_hi_BPDU_DST_Pos (0UL) /*!< BPDU_DST (Bit 0) */ + #define R_ETHSW_MGMT_ADDR_hi_BPDU_DST_Msk (0xffffUL) /*!< BPDU_DST (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_MGMT_ADDR_hi_MASK_Pos (16UL) /*!< MASK (Bit 16) */ + #define R_ETHSW_MGMT_ADDR_hi_MASK_Msk (0xff0000UL) /*!< MASK (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ FMMU ================ */ +/* =========================================================================================================================== */ + +/* ====================================================== L_START_ADR ====================================================== */ + #define R_ESC_FMMU_L_START_ADR_LSTAADR_Pos (0UL) /*!< LSTAADR (Bit 0) */ + #define R_ESC_FMMU_L_START_ADR_LSTAADR_Msk (0xffffffffUL) /*!< LSTAADR (Bitfield-Mask: 0xffffffff) */ +/* ========================================================== LEN ========================================================== */ + #define R_ESC_FMMU_LEN_FMMULEN_Pos (0UL) /*!< FMMULEN (Bit 0) */ + #define R_ESC_FMMU_LEN_FMMULEN_Msk (0xffffUL) /*!< FMMULEN (Bitfield-Mask: 0xffff) */ +/* ====================================================== L_START_BIT ====================================================== */ + #define R_ESC_FMMU_L_START_BIT_LSTABIT_Pos (0UL) /*!< LSTABIT (Bit 0) */ + #define R_ESC_FMMU_L_START_BIT_LSTABIT_Msk (0x7UL) /*!< LSTABIT (Bitfield-Mask: 0x07) */ +/* ====================================================== L_STOP_BIT ======================================================= */ + #define R_ESC_FMMU_L_STOP_BIT_LSTPBIT_Pos (0UL) /*!< LSTPBIT (Bit 0) */ + #define R_ESC_FMMU_L_STOP_BIT_LSTPBIT_Msk (0x7UL) /*!< LSTPBIT (Bitfield-Mask: 0x07) */ +/* ====================================================== P_START_ADR ====================================================== */ + #define R_ESC_FMMU_P_START_ADR_PHYSTAADR_Pos (0UL) /*!< PHYSTAADR (Bit 0) */ + #define R_ESC_FMMU_P_START_ADR_PHYSTAADR_Msk (0xffffUL) /*!< PHYSTAADR (Bitfield-Mask: 0xffff) */ +/* ====================================================== P_START_BIT ====================================================== */ + #define R_ESC_FMMU_P_START_BIT_PHYSTABIT_Pos (0UL) /*!< PHYSTABIT (Bit 0) */ + #define R_ESC_FMMU_P_START_BIT_PHYSTABIT_Msk (0x7UL) /*!< PHYSTABIT (Bitfield-Mask: 0x07) */ +/* ========================================================= TYPE ========================================================== */ + #define R_ESC_FMMU_TYPE_READ_Pos (0UL) /*!< READ (Bit 0) */ + #define R_ESC_FMMU_TYPE_READ_Msk (0x1UL) /*!< READ (Bitfield-Mask: 0x01) */ + #define R_ESC_FMMU_TYPE_WRITE_Pos (1UL) /*!< WRITE (Bit 1) */ + #define R_ESC_FMMU_TYPE_WRITE_Msk (0x2UL) /*!< WRITE (Bitfield-Mask: 0x01) */ +/* ========================================================== ACT ========================================================== */ + #define R_ESC_FMMU_ACT_ACTIVATE_Pos (0UL) /*!< ACTIVATE (Bit 0) */ + #define R_ESC_FMMU_ACT_ACTIVATE_Msk (0x1UL) /*!< ACTIVATE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ SM ================ */ +/* =========================================================================================================================== */ + +/* ====================================================== P_START_ADR ====================================================== */ + #define R_ESC_SM_P_START_ADR_SMSTAADDR_Pos (0UL) /*!< SMSTAADDR (Bit 0) */ + #define R_ESC_SM_P_START_ADR_SMSTAADDR_Msk (0xffffUL) /*!< SMSTAADDR (Bitfield-Mask: 0xffff) */ +/* ========================================================== LEN ========================================================== */ + #define R_ESC_SM_LEN_SMLEN_Pos (0UL) /*!< SMLEN (Bit 0) */ + #define R_ESC_SM_LEN_SMLEN_Msk (0xffffUL) /*!< SMLEN (Bitfield-Mask: 0xffff) */ +/* ======================================================== CONTROL ======================================================== */ + #define R_ESC_SM_CONTROL_OPEMODE_Pos (0UL) /*!< OPEMODE (Bit 0) */ + #define R_ESC_SM_CONTROL_OPEMODE_Msk (0x3UL) /*!< OPEMODE (Bitfield-Mask: 0x03) */ + #define R_ESC_SM_CONTROL_DIR_Pos (2UL) /*!< DIR (Bit 2) */ + #define R_ESC_SM_CONTROL_DIR_Msk (0xcUL) /*!< DIR (Bitfield-Mask: 0x03) */ + #define R_ESC_SM_CONTROL_IRQECAT_Pos (4UL) /*!< IRQECAT (Bit 4) */ + #define R_ESC_SM_CONTROL_IRQECAT_Msk (0x10UL) /*!< IRQECAT (Bitfield-Mask: 0x01) */ + #define R_ESC_SM_CONTROL_IRQPDI_Pos (5UL) /*!< IRQPDI (Bit 5) */ + #define R_ESC_SM_CONTROL_IRQPDI_Msk (0x20UL) /*!< IRQPDI (Bitfield-Mask: 0x01) */ + #define R_ESC_SM_CONTROL_WDTRGEN_Pos (6UL) /*!< WDTRGEN (Bit 6) */ + #define R_ESC_SM_CONTROL_WDTRGEN_Msk (0x40UL) /*!< WDTRGEN (Bitfield-Mask: 0x01) */ +/* ======================================================== STATUS ========================================================= */ + #define R_ESC_SM_STATUS_INTWR_Pos (0UL) /*!< INTWR (Bit 0) */ + #define R_ESC_SM_STATUS_INTWR_Msk (0x1UL) /*!< INTWR (Bitfield-Mask: 0x01) */ + #define R_ESC_SM_STATUS_INTRD_Pos (1UL) /*!< INTRD (Bit 1) */ + #define R_ESC_SM_STATUS_INTRD_Msk (0x2UL) /*!< INTRD (Bitfield-Mask: 0x01) */ + #define R_ESC_SM_STATUS_MAILBOX_Pos (3UL) /*!< MAILBOX (Bit 3) */ + #define R_ESC_SM_STATUS_MAILBOX_Msk (0x8UL) /*!< MAILBOX (Bitfield-Mask: 0x01) */ + #define R_ESC_SM_STATUS_BUFFERED_Pos (4UL) /*!< BUFFERED (Bit 4) */ + #define R_ESC_SM_STATUS_BUFFERED_Msk (0x30UL) /*!< BUFFERED (Bitfield-Mask: 0x03) */ + #define R_ESC_SM_STATUS_RDBUF_Pos (6UL) /*!< RDBUF (Bit 6) */ + #define R_ESC_SM_STATUS_RDBUF_Msk (0x40UL) /*!< RDBUF (Bitfield-Mask: 0x01) */ + #define R_ESC_SM_STATUS_WRBUF_Pos (7UL) /*!< WRBUF (Bit 7) */ + #define R_ESC_SM_STATUS_WRBUF_Msk (0x80UL) /*!< WRBUF (Bitfield-Mask: 0x01) */ +/* ========================================================== ACT ========================================================== */ + #define R_ESC_SM_ACT_SMEN_Pos (0UL) /*!< SMEN (Bit 0) */ + #define R_ESC_SM_ACT_SMEN_Msk (0x1UL) /*!< SMEN (Bitfield-Mask: 0x01) */ + #define R_ESC_SM_ACT_REPEATREQ_Pos (1UL) /*!< REPEATREQ (Bit 1) */ + #define R_ESC_SM_ACT_REPEATREQ_Msk (0x2UL) /*!< REPEATREQ (Bitfield-Mask: 0x01) */ + #define R_ESC_SM_ACT_LATCHECAT_Pos (6UL) /*!< LATCHECAT (Bit 6) */ + #define R_ESC_SM_ACT_LATCHECAT_Msk (0x40UL) /*!< LATCHECAT (Bitfield-Mask: 0x01) */ + #define R_ESC_SM_ACT_LATCHPDI_Pos (7UL) /*!< LATCHPDI (Bit 7) */ + #define R_ESC_SM_ACT_LATCHPDI_Msk (0x80UL) /*!< LATCHPDI (Bitfield-Mask: 0x01) */ +/* ======================================================= PDI_CONT ======================================================== */ + #define R_ESC_SM_PDI_CONT_DEACTIVE_Pos (0UL) /*!< DEACTIVE (Bit 0) */ + #define R_ESC_SM_PDI_CONT_DEACTIVE_Msk (0x1UL) /*!< DEACTIVE (Bitfield-Mask: 0x01) */ + #define R_ESC_SM_PDI_CONT_REPEATACK_Pos (1UL) /*!< REPEATACK (Bit 1) */ + #define R_ESC_SM_PDI_CONT_REPEATACK_Msk (0x2UL) /*!< REPEATACK (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ PIPE_TR ================ */ +/* =========================================================================================================================== */ + +/* =========================================================== E =========================================================== */ + #define R_USBF_PIPE_TR_E_TRCLR_Pos (8UL) /*!< TRCLR (Bit 8) */ + #define R_USBF_PIPE_TR_E_TRCLR_Msk (0x100UL) /*!< TRCLR (Bitfield-Mask: 0x01) */ + #define R_USBF_PIPE_TR_E_TRENB_Pos (9UL) /*!< TRENB (Bit 9) */ + #define R_USBF_PIPE_TR_E_TRENB_Msk (0x200UL) /*!< TRENB (Bitfield-Mask: 0x01) */ +/* =========================================================== N =========================================================== */ + #define R_USBF_PIPE_TR_N_TRNCNT_Pos (0UL) /*!< TRNCNT (Bit 0) */ + #define R_USBF_PIPE_TR_N_TRNCNT_Msk (0xffffUL) /*!< TRNCNT (Bitfield-Mask: 0xffff) */ + +/* =========================================================================================================================== */ +/* ================ N ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== SA =========================================================== */ + #define R_USBF_CHa_N_SA_SAWD_Pos (0UL) /*!< SAWD (Bit 0) */ + #define R_USBF_CHa_N_SA_SAWD_Msk (0xffffffffUL) /*!< SAWD (Bitfield-Mask: 0xffffffff) */ +/* ========================================================== DA =========================================================== */ + #define R_USBF_CHa_N_DA_DA_Pos (0UL) /*!< DA (Bit 0) */ + #define R_USBF_CHa_N_DA_DA_Msk (0xffffffffUL) /*!< DA (Bitfield-Mask: 0xffffffff) */ +/* ========================================================== TB =========================================================== */ + #define R_USBF_CHa_N_TB_TB_Pos (0UL) /*!< TB (Bit 0) */ + #define R_USBF_CHa_N_TB_TB_Msk (0xffffffffUL) /*!< TB (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ CHa ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= CRSA ========================================================== */ + #define R_USBF_CHa_CRSA_CRSA_Pos (0UL) /*!< CRSA (Bit 0) */ + #define R_USBF_CHa_CRSA_CRSA_Msk (0xffffffffUL) /*!< CRSA (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CRDA ========================================================== */ + #define R_USBF_CHa_CRDA_CRDA_Pos (0UL) /*!< CRDA (Bit 0) */ + #define R_USBF_CHa_CRDA_CRDA_Msk (0xffffffffUL) /*!< CRDA (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CRTB ========================================================== */ + #define R_USBF_CHa_CRTB_CRTB_Pos (0UL) /*!< CRTB (Bit 0) */ + #define R_USBF_CHa_CRTB_CRTB_Msk (0xffffffffUL) /*!< CRTB (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CHSTAT ========================================================= */ + #define R_USBF_CHa_CHSTAT_EN_Pos (0UL) /*!< EN (Bit 0) */ + #define R_USBF_CHa_CHSTAT_EN_Msk (0x1UL) /*!< EN (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHSTAT_RQST_Pos (1UL) /*!< RQST (Bit 1) */ + #define R_USBF_CHa_CHSTAT_RQST_Msk (0x2UL) /*!< RQST (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHSTAT_TACT_Pos (2UL) /*!< TACT (Bit 2) */ + #define R_USBF_CHa_CHSTAT_TACT_Msk (0x4UL) /*!< TACT (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHSTAT_SUS_Pos (3UL) /*!< SUS (Bit 3) */ + #define R_USBF_CHa_CHSTAT_SUS_Msk (0x8UL) /*!< SUS (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHSTAT_ER_Pos (4UL) /*!< ER (Bit 4) */ + #define R_USBF_CHa_CHSTAT_ER_Msk (0x10UL) /*!< ER (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHSTAT_END_Pos (5UL) /*!< END (Bit 5) */ + #define R_USBF_CHa_CHSTAT_END_Msk (0x20UL) /*!< END (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHSTAT_TC_Pos (6UL) /*!< TC (Bit 6) */ + #define R_USBF_CHa_CHSTAT_TC_Msk (0x40UL) /*!< TC (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHSTAT_SR_Pos (7UL) /*!< SR (Bit 7) */ + #define R_USBF_CHa_CHSTAT_SR_Msk (0x80UL) /*!< SR (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHSTAT_DL_Pos (8UL) /*!< DL (Bit 8) */ + #define R_USBF_CHa_CHSTAT_DL_Msk (0x100UL) /*!< DL (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHSTAT_DW_Pos (9UL) /*!< DW (Bit 9) */ + #define R_USBF_CHa_CHSTAT_DW_Msk (0x200UL) /*!< DW (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHSTAT_DER_Pos (10UL) /*!< DER (Bit 10) */ + #define R_USBF_CHa_CHSTAT_DER_Msk (0x400UL) /*!< DER (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHSTAT_MODE_Pos (11UL) /*!< MODE (Bit 11) */ + #define R_USBF_CHa_CHSTAT_MODE_Msk (0x800UL) /*!< MODE (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHSTAT_INTM_Pos (16UL) /*!< INTM (Bit 16) */ + #define R_USBF_CHa_CHSTAT_INTM_Msk (0x10000UL) /*!< INTM (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHSTAT_DMARQM_Pos (17UL) /*!< DMARQM (Bit 17) */ + #define R_USBF_CHa_CHSTAT_DMARQM_Msk (0x20000UL) /*!< DMARQM (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHSTAT_SWPRQ_Pos (18UL) /*!< SWPRQ (Bit 18) */ + #define R_USBF_CHa_CHSTAT_SWPRQ_Msk (0x40000UL) /*!< SWPRQ (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHSTAT_DNUM_Pos (24UL) /*!< DNUM (Bit 24) */ + #define R_USBF_CHa_CHSTAT_DNUM_Msk (0xff000000UL) /*!< DNUM (Bitfield-Mask: 0xff) */ +/* ======================================================== CHCTRL ========================================================= */ + #define R_USBF_CHa_CHCTRL_SETEN_Pos (0UL) /*!< SETEN (Bit 0) */ + #define R_USBF_CHa_CHCTRL_SETEN_Msk (0x1UL) /*!< SETEN (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCTRL_CLREN_Pos (1UL) /*!< CLREN (Bit 1) */ + #define R_USBF_CHa_CHCTRL_CLREN_Msk (0x2UL) /*!< CLREN (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCTRL_STG_Pos (2UL) /*!< STG (Bit 2) */ + #define R_USBF_CHa_CHCTRL_STG_Msk (0x4UL) /*!< STG (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCTRL_SWRST_Pos (3UL) /*!< SWRST (Bit 3) */ + #define R_USBF_CHa_CHCTRL_SWRST_Msk (0x8UL) /*!< SWRST (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCTRL_CLRRQ_Pos (4UL) /*!< CLRRQ (Bit 4) */ + #define R_USBF_CHa_CHCTRL_CLRRQ_Msk (0x10UL) /*!< CLRRQ (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCTRL_CLREND_Pos (5UL) /*!< CLREND (Bit 5) */ + #define R_USBF_CHa_CHCTRL_CLREND_Msk (0x20UL) /*!< CLREND (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCTRL_CLRTC_Pos (6UL) /*!< CLRTC (Bit 6) */ + #define R_USBF_CHa_CHCTRL_CLRTC_Msk (0x40UL) /*!< CLRTC (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCTRL_CLRDER_Pos (7UL) /*!< CLRDER (Bit 7) */ + #define R_USBF_CHa_CHCTRL_CLRDER_Msk (0x80UL) /*!< CLRDER (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCTRL_SETSUS_Pos (8UL) /*!< SETSUS (Bit 8) */ + #define R_USBF_CHa_CHCTRL_SETSUS_Msk (0x100UL) /*!< SETSUS (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCTRL_CLRSUS_Pos (9UL) /*!< CLRSUS (Bit 9) */ + #define R_USBF_CHa_CHCTRL_CLRSUS_Msk (0x200UL) /*!< CLRSUS (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCTRL_SETREN_Pos (12UL) /*!< SETREN (Bit 12) */ + #define R_USBF_CHa_CHCTRL_SETREN_Msk (0x1000UL) /*!< SETREN (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCTRL_SETSSWPRQ_Pos (14UL) /*!< SETSSWPRQ (Bit 14) */ + #define R_USBF_CHa_CHCTRL_SETSSWPRQ_Msk (0x4000UL) /*!< SETSSWPRQ (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCTRL_SETINTM_Pos (16UL) /*!< SETINTM (Bit 16) */ + #define R_USBF_CHa_CHCTRL_SETINTM_Msk (0x10000UL) /*!< SETINTM (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCTRL_CLRINTM_Pos (17UL) /*!< CLRINTM (Bit 17) */ + #define R_USBF_CHa_CHCTRL_CLRINTM_Msk (0x20000UL) /*!< CLRINTM (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCTRL_SETDMARQM_Pos (18UL) /*!< SETDMARQM (Bit 18) */ + #define R_USBF_CHa_CHCTRL_SETDMARQM_Msk (0x40000UL) /*!< SETDMARQM (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCTRL_CLRDMARQM_Pos (19UL) /*!< CLRDMARQM (Bit 19) */ + #define R_USBF_CHa_CHCTRL_CLRDMARQM_Msk (0x80000UL) /*!< CLRDMARQM (Bitfield-Mask: 0x01) */ +/* ========================================================= CHCFG ========================================================= */ + #define R_USBF_CHa_CHCFG_SEL_Pos (0UL) /*!< SEL (Bit 0) */ + #define R_USBF_CHa_CHCFG_SEL_Msk (0x1UL) /*!< SEL (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCFG_REQD_Pos (3UL) /*!< REQD (Bit 3) */ + #define R_USBF_CHa_CHCFG_REQD_Msk (0x8UL) /*!< REQD (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCFG_LOEN_Pos (4UL) /*!< LOEN (Bit 4) */ + #define R_USBF_CHa_CHCFG_LOEN_Msk (0x10UL) /*!< LOEN (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCFG_HIEN_Pos (5UL) /*!< HIEN (Bit 5) */ + #define R_USBF_CHa_CHCFG_HIEN_Msk (0x20UL) /*!< HIEN (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCFG_LVL_Pos (6UL) /*!< LVL (Bit 6) */ + #define R_USBF_CHa_CHCFG_LVL_Msk (0x40UL) /*!< LVL (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCFG_AM_Pos (8UL) /*!< AM (Bit 8) */ + #define R_USBF_CHa_CHCFG_AM_Msk (0x700UL) /*!< AM (Bitfield-Mask: 0x07) */ + #define R_USBF_CHa_CHCFG_DRRP_Pos (11UL) /*!< DRRP (Bit 11) */ + #define R_USBF_CHa_CHCFG_DRRP_Msk (0x800UL) /*!< DRRP (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCFG_SDS_Pos (12UL) /*!< SDS (Bit 12) */ + #define R_USBF_CHa_CHCFG_SDS_Msk (0xf000UL) /*!< SDS (Bitfield-Mask: 0x0f) */ + #define R_USBF_CHa_CHCFG_DDS_Pos (16UL) /*!< DDS (Bit 16) */ + #define R_USBF_CHa_CHCFG_DDS_Msk (0xf0000UL) /*!< DDS (Bitfield-Mask: 0x0f) */ + #define R_USBF_CHa_CHCFG_SAD_Pos (20UL) /*!< SAD (Bit 20) */ + #define R_USBF_CHa_CHCFG_SAD_Msk (0x100000UL) /*!< SAD (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCFG_DAD_Pos (21UL) /*!< DAD (Bit 21) */ + #define R_USBF_CHa_CHCFG_DAD_Msk (0x200000UL) /*!< DAD (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCFG_TM_Pos (22UL) /*!< TM (Bit 22) */ + #define R_USBF_CHa_CHCFG_TM_Msk (0x400000UL) /*!< TM (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCFG_WONLY_Pos (23UL) /*!< WONLY (Bit 23) */ + #define R_USBF_CHa_CHCFG_WONLY_Msk (0x800000UL) /*!< WONLY (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCFG_DEM_Pos (24UL) /*!< DEM (Bit 24) */ + #define R_USBF_CHa_CHCFG_DEM_Msk (0x1000000UL) /*!< DEM (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCFG_DIM_Pos (26UL) /*!< DIM (Bit 26) */ + #define R_USBF_CHa_CHCFG_DIM_Msk (0x4000000UL) /*!< DIM (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCFG_SBE_Pos (27UL) /*!< SBE (Bit 27) */ + #define R_USBF_CHa_CHCFG_SBE_Msk (0x8000000UL) /*!< SBE (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCFG_RSEL_Pos (28UL) /*!< RSEL (Bit 28) */ + #define R_USBF_CHa_CHCFG_RSEL_Msk (0x10000000UL) /*!< RSEL (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCFG_RSW_Pos (29UL) /*!< RSW (Bit 29) */ + #define R_USBF_CHa_CHCFG_RSW_Msk (0x20000000UL) /*!< RSW (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCFG_REN_Pos (30UL) /*!< REN (Bit 30) */ + #define R_USBF_CHa_CHCFG_REN_Msk (0x40000000UL) /*!< REN (Bitfield-Mask: 0x01) */ + #define R_USBF_CHa_CHCFG_DMS_Pos (31UL) /*!< DMS (Bit 31) */ + #define R_USBF_CHa_CHCFG_DMS_Msk (0x80000000UL) /*!< DMS (Bitfield-Mask: 0x01) */ +/* ======================================================== CHITVL ========================================================= */ + #define R_USBF_CHa_CHITVL_ITVL_Pos (0UL) /*!< ITVL (Bit 0) */ + #define R_USBF_CHa_CHITVL_ITVL_Msk (0xffffUL) /*!< ITVL (Bitfield-Mask: 0xffff) */ +/* ========================================================= CHEXT ========================================================= */ + #define R_USBF_CHa_CHEXT_SPR_Pos (0UL) /*!< SPR (Bit 0) */ + #define R_USBF_CHa_CHEXT_SPR_Msk (0xfUL) /*!< SPR (Bitfield-Mask: 0x0f) */ + #define R_USBF_CHa_CHEXT_DPR_Pos (8UL) /*!< DPR (Bit 8) */ + #define R_USBF_CHa_CHEXT_DPR_Msk (0xf00UL) /*!< DPR (Bitfield-Mask: 0x0f) */ +/* ========================================================= NXLA ========================================================== */ + #define R_USBF_CHa_NXLA_NXLA_Pos (0UL) /*!< NXLA (Bit 0) */ + #define R_USBF_CHa_NXLA_NXLA_Msk (0xffffffffUL) /*!< NXLA (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CRLA ========================================================== */ + #define R_USBF_CHa_CRLA_CRLA_Pos (0UL) /*!< CRLA (Bit 0) */ + #define R_USBF_CHa_CRLA_CRLA_Msk (0xffffffffUL) /*!< CRLA (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ CHb ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= SCNT ========================================================== */ + #define R_USBF_CHb_SCNT_SCNT_Pos (0UL) /*!< SCNT (Bit 0) */ + #define R_USBF_CHb_SCNT_SCNT_Msk (0xffffffffUL) /*!< SCNT (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= SSKP ========================================================== */ + #define R_USBF_CHb_SSKP_SSKP_Pos (0UL) /*!< SSKP (Bit 0) */ + #define R_USBF_CHb_SSKP_SSKP_Msk (0xffffffffUL) /*!< SSKP (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= DCNT ========================================================== */ + #define R_USBF_CHb_DCNT_DCNT_Pos (0UL) /*!< DCNT (Bit 0) */ + #define R_USBF_CHb_DCNT_DCNT_Msk (0xffffffffUL) /*!< DCNT (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= DSKP ========================================================== */ + #define R_USBF_CHb_DSKP_DSKP_Pos (0UL) /*!< DSKP (Bit 0) */ + #define R_USBF_CHb_DSKP_DSKP_Msk (0xffffffffUL) /*!< DSKP (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ CSa ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CMCFG0 ========================================================= */ + #define R_XSPI0_CSa_CMCFG0_FFMT_Pos (0UL) /*!< FFMT (Bit 0) */ + #define R_XSPI0_CSa_CMCFG0_FFMT_Msk (0x3UL) /*!< FFMT (Bitfield-Mask: 0x03) */ + #define R_XSPI0_CSa_CMCFG0_ADDSIZE_Pos (2UL) /*!< ADDSIZE (Bit 2) */ + #define R_XSPI0_CSa_CMCFG0_ADDSIZE_Msk (0xcUL) /*!< ADDSIZE (Bitfield-Mask: 0x03) */ + #define R_XSPI0_CSa_CMCFG0_ADDRPEN_Pos (16UL) /*!< ADDRPEN (Bit 16) */ + #define R_XSPI0_CSa_CMCFG0_ADDRPEN_Msk (0xff0000UL) /*!< ADDRPEN (Bitfield-Mask: 0xff) */ + #define R_XSPI0_CSa_CMCFG0_ADDRPCD_Pos (24UL) /*!< ADDRPCD (Bit 24) */ + #define R_XSPI0_CSa_CMCFG0_ADDRPCD_Msk (0xff000000UL) /*!< ADDRPCD (Bitfield-Mask: 0xff) */ +/* ======================================================== CMCFG1 ========================================================= */ + #define R_XSPI0_CSa_CMCFG1_RDCMD_Pos (0UL) /*!< RDCMD (Bit 0) */ + #define R_XSPI0_CSa_CMCFG1_RDCMD_Msk (0xffffUL) /*!< RDCMD (Bitfield-Mask: 0xffff) */ + #define R_XSPI0_CSa_CMCFG1_RDLATE_Pos (16UL) /*!< RDLATE (Bit 16) */ + #define R_XSPI0_CSa_CMCFG1_RDLATE_Msk (0x1f0000UL) /*!< RDLATE (Bitfield-Mask: 0x1f) */ +/* ======================================================== CMCFG2 ========================================================= */ + #define R_XSPI0_CSa_CMCFG2_WRCMD_Pos (0UL) /*!< WRCMD (Bit 0) */ + #define R_XSPI0_CSa_CMCFG2_WRCMD_Msk (0xffffUL) /*!< WRCMD (Bitfield-Mask: 0xffff) */ + #define R_XSPI0_CSa_CMCFG2_WRLATE_Pos (16UL) /*!< WRLATE (Bit 16) */ + #define R_XSPI0_CSa_CMCFG2_WRLATE_Msk (0x1f0000UL) /*!< WRLATE (Bitfield-Mask: 0x1f) */ + +/* =========================================================================================================================== */ +/* ================ BUF ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== CDT ========================================================== */ + #define R_XSPI0_BUF_CDT_CMDSIZE_Pos (0UL) /*!< CMDSIZE (Bit 0) */ + #define R_XSPI0_BUF_CDT_CMDSIZE_Msk (0x3UL) /*!< CMDSIZE (Bitfield-Mask: 0x03) */ + #define R_XSPI0_BUF_CDT_ADDSIZE_Pos (2UL) /*!< ADDSIZE (Bit 2) */ + #define R_XSPI0_BUF_CDT_ADDSIZE_Msk (0x1cUL) /*!< ADDSIZE (Bitfield-Mask: 0x07) */ + #define R_XSPI0_BUF_CDT_DATASIZE_Pos (5UL) /*!< DATASIZE (Bit 5) */ + #define R_XSPI0_BUF_CDT_DATASIZE_Msk (0x1e0UL) /*!< DATASIZE (Bitfield-Mask: 0x0f) */ + #define R_XSPI0_BUF_CDT_LATE_Pos (9UL) /*!< LATE (Bit 9) */ + #define R_XSPI0_BUF_CDT_LATE_Msk (0x3e00UL) /*!< LATE (Bitfield-Mask: 0x1f) */ + #define R_XSPI0_BUF_CDT_TRTYPE_Pos (15UL) /*!< TRTYPE (Bit 15) */ + #define R_XSPI0_BUF_CDT_TRTYPE_Msk (0x8000UL) /*!< TRTYPE (Bitfield-Mask: 0x01) */ + #define R_XSPI0_BUF_CDT_CMD_Pos (16UL) /*!< CMD (Bit 16) */ + #define R_XSPI0_BUF_CDT_CMD_Msk (0xffff0000UL) /*!< CMD (Bitfield-Mask: 0xffff) */ +/* ========================================================== CDA ========================================================== */ + #define R_XSPI0_BUF_CDA_ADD_Pos (0UL) /*!< ADD (Bit 0) */ + #define R_XSPI0_BUF_CDA_ADD_Msk (0xffffffffUL) /*!< ADD (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CDD0 ========================================================== */ + #define R_XSPI0_BUF_CDD0_DATA_Pos (0UL) /*!< DATA (Bit 0) */ + #define R_XSPI0_BUF_CDD0_DATA_Msk (0xffffffffUL) /*!< DATA (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= CDD1 ========================================================== */ + #define R_XSPI0_BUF_CDD1_DATA_Pos (0UL) /*!< DATA (Bit 0) */ + #define R_XSPI0_BUF_CDD1_DATA_Msk (0xffffffffUL) /*!< DATA (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ CSb ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CCCTL0 ========================================================= */ + #define R_XSPI0_CSb_CCCTL0_CAEN_Pos (0UL) /*!< CAEN (Bit 0) */ + #define R_XSPI0_CSb_CCCTL0_CAEN_Msk (0x1UL) /*!< CAEN (Bitfield-Mask: 0x01) */ + #define R_XSPI0_CSb_CCCTL0_CANOWR_Pos (1UL) /*!< CANOWR (Bit 1) */ + #define R_XSPI0_CSb_CCCTL0_CANOWR_Msk (0x2UL) /*!< CANOWR (Bitfield-Mask: 0x01) */ + #define R_XSPI0_CSb_CCCTL0_CAITV_Pos (8UL) /*!< CAITV (Bit 8) */ + #define R_XSPI0_CSb_CCCTL0_CAITV_Msk (0x1f00UL) /*!< CAITV (Bitfield-Mask: 0x1f) */ + #define R_XSPI0_CSb_CCCTL0_CASFTSTA_Pos (16UL) /*!< CASFTSTA (Bit 16) */ + #define R_XSPI0_CSb_CCCTL0_CASFTSTA_Msk (0x1f0000UL) /*!< CASFTSTA (Bitfield-Mask: 0x1f) */ + #define R_XSPI0_CSb_CCCTL0_CASFTEND_Pos (24UL) /*!< CASFTEND (Bit 24) */ + #define R_XSPI0_CSb_CCCTL0_CASFTEND_Msk (0x1f000000UL) /*!< CASFTEND (Bitfield-Mask: 0x1f) */ +/* ======================================================== CCCTL1 ========================================================= */ + #define R_XSPI0_CSb_CCCTL1_CACMDSIZE_Pos (0UL) /*!< CACMDSIZE (Bit 0) */ + #define R_XSPI0_CSb_CCCTL1_CACMDSIZE_Msk (0x3UL) /*!< CACMDSIZE (Bitfield-Mask: 0x03) */ + #define R_XSPI0_CSb_CCCTL1_CAADDSIZE_Pos (2UL) /*!< CAADDSIZE (Bit 2) */ + #define R_XSPI0_CSb_CCCTL1_CAADDSIZE_Msk (0x1cUL) /*!< CAADDSIZE (Bitfield-Mask: 0x07) */ + #define R_XSPI0_CSb_CCCTL1_CADATASIZE_Pos (5UL) /*!< CADATASIZE (Bit 5) */ + #define R_XSPI0_CSb_CCCTL1_CADATASIZE_Msk (0x1e0UL) /*!< CADATASIZE (Bitfield-Mask: 0x0f) */ + #define R_XSPI0_CSb_CCCTL1_CAWRLATE_Pos (16UL) /*!< CAWRLATE (Bit 16) */ + #define R_XSPI0_CSb_CCCTL1_CAWRLATE_Msk (0x1f0000UL) /*!< CAWRLATE (Bitfield-Mask: 0x1f) */ + #define R_XSPI0_CSb_CCCTL1_CARDLATE_Pos (24UL) /*!< CARDLATE (Bit 24) */ + #define R_XSPI0_CSb_CCCTL1_CARDLATE_Msk (0x1f000000UL) /*!< CARDLATE (Bitfield-Mask: 0x1f) */ +/* ======================================================== CCCTL2 ========================================================= */ + #define R_XSPI0_CSb_CCCTL2_CAWRCMD_Pos (0UL) /*!< CAWRCMD (Bit 0) */ + #define R_XSPI0_CSb_CCCTL2_CAWRCMD_Msk (0xffffUL) /*!< CAWRCMD (Bitfield-Mask: 0xffff) */ + #define R_XSPI0_CSb_CCCTL2_CARDCMD_Pos (16UL) /*!< CARDCMD (Bit 16) */ + #define R_XSPI0_CSb_CCCTL2_CARDCMD_Msk (0xffff0000UL) /*!< CARDCMD (Bitfield-Mask: 0xffff) */ +/* ======================================================== CCCTL3 ========================================================= */ + #define R_XSPI0_CSb_CCCTL3_CAADD_Pos (0UL) /*!< CAADD (Bit 0) */ + #define R_XSPI0_CSb_CCCTL3_CAADD_Msk (0xffffffffUL) /*!< CAADD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CCCTL4 ========================================================= */ + #define R_XSPI0_CSb_CCCTL4_CADATA_Pos (0UL) /*!< CADATA (Bit 0) */ + #define R_XSPI0_CSb_CCCTL4_CADATA_Msk (0xffffffffUL) /*!< CADATA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CCCTL5 ========================================================= */ + #define R_XSPI0_CSb_CCCTL5_CADATA_Pos (0UL) /*!< CADATA (Bit 0) */ + #define R_XSPI0_CSb_CCCTL5_CADATA_Msk (0xffffffffUL) /*!< CADATA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CCCTL6 ========================================================= */ + #define R_XSPI0_CSb_CCCTL6_CADATA_Pos (0UL) /*!< CADATA (Bit 0) */ + #define R_XSPI0_CSb_CCCTL6_CADATA_Msk (0xffffffffUL) /*!< CADATA (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CCCTL7 ========================================================= */ + #define R_XSPI0_CSb_CCCTL7_CADATA_Pos (0UL) /*!< CADATA (Bit 0) */ + #define R_XSPI0_CSb_CCCTL7_CADATA_Msk (0xffffffffUL) /*!< CADATA (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ W ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= EC710CTL ======================================================== */ + #define R_SYSRAM0_W_EC710CTL_ECEMF_Pos (0UL) /*!< ECEMF (Bit 0) */ + #define R_SYSRAM0_W_EC710CTL_ECEMF_Msk (0x1UL) /*!< ECEMF (Bitfield-Mask: 0x01) */ + #define R_SYSRAM0_W_EC710CTL_ECER1F_Pos (1UL) /*!< ECER1F (Bit 1) */ + #define R_SYSRAM0_W_EC710CTL_ECER1F_Msk (0x2UL) /*!< ECER1F (Bitfield-Mask: 0x01) */ + #define R_SYSRAM0_W_EC710CTL_ECER2F_Pos (2UL) /*!< ECER2F (Bit 2) */ + #define R_SYSRAM0_W_EC710CTL_ECER2F_Msk (0x4UL) /*!< ECER2F (Bitfield-Mask: 0x01) */ + #define R_SYSRAM0_W_EC710CTL_EC1EDIC_Pos (3UL) /*!< EC1EDIC (Bit 3) */ + #define R_SYSRAM0_W_EC710CTL_EC1EDIC_Msk (0x8UL) /*!< EC1EDIC (Bitfield-Mask: 0x01) */ + #define R_SYSRAM0_W_EC710CTL_EC2EDIC_Pos (4UL) /*!< EC2EDIC (Bit 4) */ + #define R_SYSRAM0_W_EC710CTL_EC2EDIC_Msk (0x10UL) /*!< EC2EDIC (Bitfield-Mask: 0x01) */ + #define R_SYSRAM0_W_EC710CTL_EC1ECP_Pos (5UL) /*!< EC1ECP (Bit 5) */ + #define R_SYSRAM0_W_EC710CTL_EC1ECP_Msk (0x20UL) /*!< EC1ECP (Bitfield-Mask: 0x01) */ + #define R_SYSRAM0_W_EC710CTL_ECERVF_Pos (6UL) /*!< ECERVF (Bit 6) */ + #define R_SYSRAM0_W_EC710CTL_ECERVF_Msk (0x40UL) /*!< ECERVF (Bitfield-Mask: 0x01) */ + #define R_SYSRAM0_W_EC710CTL_ECTHM_Pos (7UL) /*!< ECTHM (Bit 7) */ + #define R_SYSRAM0_W_EC710CTL_ECTHM_Msk (0x80UL) /*!< ECTHM (Bitfield-Mask: 0x01) */ + #define R_SYSRAM0_W_EC710CTL_ECER1C_Pos (9UL) /*!< ECER1C (Bit 9) */ + #define R_SYSRAM0_W_EC710CTL_ECER1C_Msk (0x200UL) /*!< ECER1C (Bitfield-Mask: 0x01) */ + #define R_SYSRAM0_W_EC710CTL_ECER2C_Pos (10UL) /*!< ECER2C (Bit 10) */ + #define R_SYSRAM0_W_EC710CTL_ECER2C_Msk (0x400UL) /*!< ECER2C (Bitfield-Mask: 0x01) */ + #define R_SYSRAM0_W_EC710CTL_ECOVFF_Pos (11UL) /*!< ECOVFF (Bit 11) */ + #define R_SYSRAM0_W_EC710CTL_ECOVFF_Msk (0x800UL) /*!< ECOVFF (Bitfield-Mask: 0x01) */ + #define R_SYSRAM0_W_EC710CTL_EMCA_Pos (14UL) /*!< EMCA (Bit 14) */ + #define R_SYSRAM0_W_EC710CTL_EMCA_Msk (0xc000UL) /*!< EMCA (Bitfield-Mask: 0x03) */ + #define R_SYSRAM0_W_EC710CTL_ECEDF0_Pos (16UL) /*!< ECEDF0 (Bit 16) */ + #define R_SYSRAM0_W_EC710CTL_ECEDF0_Msk (0x30000UL) /*!< ECEDF0 (Bitfield-Mask: 0x03) */ + #define R_SYSRAM0_W_EC710CTL_ECEDF1_Pos (18UL) /*!< ECEDF1 (Bit 18) */ + #define R_SYSRAM0_W_EC710CTL_ECEDF1_Msk (0xc0000UL) /*!< ECEDF1 (Bitfield-Mask: 0x03) */ + #define R_SYSRAM0_W_EC710CTL_ECEDF2_Pos (20UL) /*!< ECEDF2 (Bit 20) */ + #define R_SYSRAM0_W_EC710CTL_ECEDF2_Msk (0x300000UL) /*!< ECEDF2 (Bitfield-Mask: 0x03) */ + #define R_SYSRAM0_W_EC710CTL_ECEDF3_Pos (22UL) /*!< ECEDF3 (Bit 22) */ + #define R_SYSRAM0_W_EC710CTL_ECEDF3_Msk (0xc00000UL) /*!< ECEDF3 (Bitfield-Mask: 0x03) */ + #define R_SYSRAM0_W_EC710CTL_ECEDF4_Pos (24UL) /*!< ECEDF4 (Bit 24) */ + #define R_SYSRAM0_W_EC710CTL_ECEDF4_Msk (0x3000000UL) /*!< ECEDF4 (Bitfield-Mask: 0x03) */ + #define R_SYSRAM0_W_EC710CTL_ECEDF5_Pos (26UL) /*!< ECEDF5 (Bit 26) */ + #define R_SYSRAM0_W_EC710CTL_ECEDF5_Msk (0xc000000UL) /*!< ECEDF5 (Bitfield-Mask: 0x03) */ + #define R_SYSRAM0_W_EC710CTL_ECEDF6_Pos (28UL) /*!< ECEDF6 (Bit 28) */ + #define R_SYSRAM0_W_EC710CTL_ECEDF6_Msk (0x30000000UL) /*!< ECEDF6 (Bitfield-Mask: 0x03) */ + #define R_SYSRAM0_W_EC710CTL_ECEDF7_Pos (30UL) /*!< ECEDF7 (Bit 30) */ + #define R_SYSRAM0_W_EC710CTL_ECEDF7_Msk (0xc0000000UL) /*!< ECEDF7 (Bitfield-Mask: 0x03) */ +/* ======================================================= EC710TMC ======================================================== */ + #define R_SYSRAM0_W_EC710TMC_ECREIS_Pos (0UL) /*!< ECREIS (Bit 0) */ + #define R_SYSRAM0_W_EC710TMC_ECREIS_Msk (0x1UL) /*!< ECREIS (Bitfield-Mask: 0x01) */ + #define R_SYSRAM0_W_EC710TMC_ECDCS_Pos (1UL) /*!< ECDCS (Bit 1) */ + #define R_SYSRAM0_W_EC710TMC_ECDCS_Msk (0x2UL) /*!< ECDCS (Bitfield-Mask: 0x01) */ + #define R_SYSRAM0_W_EC710TMC_ECENS_Pos (2UL) /*!< ECENS (Bit 2) */ + #define R_SYSRAM0_W_EC710TMC_ECENS_Msk (0x4UL) /*!< ECENS (Bitfield-Mask: 0x01) */ + #define R_SYSRAM0_W_EC710TMC_ECREOS_Pos (3UL) /*!< ECREOS (Bit 3) */ + #define R_SYSRAM0_W_EC710TMC_ECREOS_Msk (0x8UL) /*!< ECREOS (Bitfield-Mask: 0x01) */ + #define R_SYSRAM0_W_EC710TMC_ECTRRS_Pos (4UL) /*!< ECTRRS (Bit 4) */ + #define R_SYSRAM0_W_EC710TMC_ECTRRS_Msk (0x10UL) /*!< ECTRRS (Bitfield-Mask: 0x01) */ + #define R_SYSRAM0_W_EC710TMC_ECTMCE_Pos (7UL) /*!< ECTMCE (Bit 7) */ + #define R_SYSRAM0_W_EC710TMC_ECTMCE_Msk (0x80UL) /*!< ECTMCE (Bitfield-Mask: 0x01) */ + #define R_SYSRAM0_W_EC710TMC_ETMA_Pos (14UL) /*!< ETMA (Bit 14) */ + #define R_SYSRAM0_W_EC710TMC_ETMA_Msk (0xc000UL) /*!< ETMA (Bitfield-Mask: 0x03) */ +/* ======================================================= EC710TRC ======================================================== */ + #define R_SYSRAM0_W_EC710TRC_ECERDB_Pos (0UL) /*!< ECERDB (Bit 0) */ + #define R_SYSRAM0_W_EC710TRC_ECERDB_Msk (0x7fUL) /*!< ECERDB (Bitfield-Mask: 0x7f) */ + #define R_SYSRAM0_W_EC710TRC_ECECRD_Pos (8UL) /*!< ECECRD (Bit 8) */ + #define R_SYSRAM0_W_EC710TRC_ECECRD_Msk (0x7f00UL) /*!< ECECRD (Bitfield-Mask: 0x7f) */ + #define R_SYSRAM0_W_EC710TRC_ECHORD_Pos (16UL) /*!< ECHORD (Bit 16) */ + #define R_SYSRAM0_W_EC710TRC_ECHORD_Msk (0x7f0000UL) /*!< ECHORD (Bitfield-Mask: 0x7f) */ + #define R_SYSRAM0_W_EC710TRC_ECSYND_Pos (24UL) /*!< ECSYND (Bit 24) */ + #define R_SYSRAM0_W_EC710TRC_ECSYND_Msk (0x7f000000UL) /*!< ECSYND (Bitfield-Mask: 0x7f) */ +/* ======================================================= EC710TED ======================================================== */ + #define R_SYSRAM0_W_EC710TED_ECEDB_Pos (0UL) /*!< ECEDB (Bit 0) */ + #define R_SYSRAM0_W_EC710TED_ECEDB_Msk (0xffffffffUL) /*!< ECEDB (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= EC710EAD ======================================================== */ + #define R_SYSRAM0_W_EC710EAD_ECEAD_Pos (0UL) /*!< ECEAD (Bit 0) */ + #define R_SYSRAM0_W_EC710EAD_ECEAD_Msk (0x7fffUL) /*!< ECEAD (Bitfield-Mask: 0x7fff) */ + +/* =========================================================================================================================== */ +/* ================ RGN ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= STADD ========================================================= */ + #define R_MPU0_RGN_STADD_RDPR_Pos (0UL) /*!< RDPR (Bit 0) */ + #define R_MPU0_RGN_STADD_RDPR_Msk (0x1UL) /*!< RDPR (Bitfield-Mask: 0x01) */ + #define R_MPU0_RGN_STADD_WRPR_Pos (1UL) /*!< WRPR (Bit 1) */ + #define R_MPU0_RGN_STADD_WRPR_Msk (0x2UL) /*!< WRPR (Bitfield-Mask: 0x01) */ + #define R_MPU0_RGN_STADD_STADDR_Pos (10UL) /*!< STADDR (Bit 10) */ + #define R_MPU0_RGN_STADD_STADDR_Msk (0xfffffc00UL) /*!< STADDR (Bitfield-Mask: 0x3fffff) */ +/* ======================================================== ENDADD ========================================================= */ + #define R_MPU0_RGN_ENDADD_ENDADDR_Pos (10UL) /*!< ENDADDR (Bit 10) */ + #define R_MPU0_RGN_ENDADD_ENDADDR_Msk (0xfffffc00UL) /*!< ENDADDR (Bitfield-Mask: 0x3fffff) */ + +/* =========================================================================================================================== */ +/* ================ CH ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= DSICR ========================================================= */ + #define R_DSMIF0_CH_DSICR_IOEL_Pos (0UL) /*!< IOEL (Bit 0) */ + #define R_DSMIF0_CH_DSICR_IOEL_Msk (0x1UL) /*!< IOEL (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_CH_DSICR_IOEH_Pos (1UL) /*!< IOEH (Bit 1) */ + #define R_DSMIF0_CH_DSICR_IOEH_Msk (0x2UL) /*!< IOEH (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_CH_DSICR_ISE_Pos (2UL) /*!< ISE (Bit 2) */ + #define R_DSMIF0_CH_DSICR_ISE_Msk (0x4UL) /*!< ISE (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_CH_DSICR_IUE_Pos (3UL) /*!< IUE (Bit 3) */ + #define R_DSMIF0_CH_DSICR_IUE_Msk (0x8UL) /*!< IUE (Bitfield-Mask: 0x01) */ +/* ======================================================== DSCMCCR ======================================================== */ + #define R_DSMIF0_CH_DSCMCCR_CKDIR_Pos (0UL) /*!< CKDIR (Bit 0) */ + #define R_DSMIF0_CH_DSCMCCR_CKDIR_Msk (0x1UL) /*!< CKDIR (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_CH_DSCMCCR_SEDGE_Pos (7UL) /*!< SEDGE (Bit 7) */ + #define R_DSMIF0_CH_DSCMCCR_SEDGE_Msk (0x80UL) /*!< SEDGE (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_CH_DSCMCCR_CKDIV_Pos (8UL) /*!< CKDIV (Bit 8) */ + #define R_DSMIF0_CH_DSCMCCR_CKDIV_Msk (0x3f00UL) /*!< CKDIV (Bitfield-Mask: 0x3f) */ +/* ======================================================== DSCMFCR ======================================================== */ + #define R_DSMIF0_CH_DSCMFCR_CMSINC_Pos (0UL) /*!< CMSINC (Bit 0) */ + #define R_DSMIF0_CH_DSCMFCR_CMSINC_Msk (0x3UL) /*!< CMSINC (Bitfield-Mask: 0x03) */ + #define R_DSMIF0_CH_DSCMFCR_CMDEC_Pos (8UL) /*!< CMDEC (Bit 8) */ + #define R_DSMIF0_CH_DSCMFCR_CMDEC_Msk (0xff00UL) /*!< CMDEC (Bitfield-Mask: 0xff) */ + #define R_DSMIF0_CH_DSCMFCR_CMSH_Pos (16UL) /*!< CMSH (Bit 16) */ + #define R_DSMIF0_CH_DSCMFCR_CMSH_Msk (0x1f0000UL) /*!< CMSH (Bitfield-Mask: 0x1f) */ +/* ======================================================= DSCMCTCR ======================================================== */ + #define R_DSMIF0_CH_DSCMCTCR_CTSELA_Pos (0UL) /*!< CTSELA (Bit 0) */ + #define R_DSMIF0_CH_DSCMCTCR_CTSELA_Msk (0x7UL) /*!< CTSELA (Bitfield-Mask: 0x07) */ + #define R_DSMIF0_CH_DSCMCTCR_CTSELB_Pos (8UL) /*!< CTSELB (Bit 8) */ + #define R_DSMIF0_CH_DSCMCTCR_CTSELB_Msk (0x700UL) /*!< CTSELB (Bitfield-Mask: 0x07) */ + #define R_DSMIF0_CH_DSCMCTCR_DITSEL_Pos (16UL) /*!< DITSEL (Bit 16) */ + #define R_DSMIF0_CH_DSCMCTCR_DITSEL_Msk (0x30000UL) /*!< DITSEL (Bitfield-Mask: 0x03) */ + #define R_DSMIF0_CH_DSCMCTCR_DEDGE_Pos (23UL) /*!< DEDGE (Bit 23) */ + #define R_DSMIF0_CH_DSCMCTCR_DEDGE_Msk (0x800000UL) /*!< DEDGE (Bitfield-Mask: 0x01) */ +/* ======================================================== DSEDCR ========================================================= */ + #define R_DSMIF0_CH_DSEDCR_SDE_Pos (0UL) /*!< SDE (Bit 0) */ + #define R_DSMIF0_CH_DSEDCR_SDE_Msk (0x1UL) /*!< SDE (Bitfield-Mask: 0x01) */ +/* ======================================================== DSOCFCR ======================================================== */ + #define R_DSMIF0_CH_DSOCFCR_OCSINC_Pos (0UL) /*!< OCSINC (Bit 0) */ + #define R_DSMIF0_CH_DSOCFCR_OCSINC_Msk (0x3UL) /*!< OCSINC (Bitfield-Mask: 0x03) */ + #define R_DSMIF0_CH_DSOCFCR_OCDEC_Pos (8UL) /*!< OCDEC (Bit 8) */ + #define R_DSMIF0_CH_DSOCFCR_OCDEC_Msk (0xff00UL) /*!< OCDEC (Bitfield-Mask: 0xff) */ + #define R_DSMIF0_CH_DSOCFCR_OCSH_Pos (16UL) /*!< OCSH (Bit 16) */ + #define R_DSMIF0_CH_DSOCFCR_OCSH_Msk (0x1f0000UL) /*!< OCSH (Bitfield-Mask: 0x1f) */ +/* ======================================================== DSOCLTR ======================================================== */ + #define R_DSMIF0_CH_DSOCLTR_OCMPTBL_Pos (0UL) /*!< OCMPTBL (Bit 0) */ + #define R_DSMIF0_CH_DSOCLTR_OCMPTBL_Msk (0xffffUL) /*!< OCMPTBL (Bitfield-Mask: 0xffff) */ +/* ======================================================== DSOCHTR ======================================================== */ + #define R_DSMIF0_CH_DSOCHTR_OCMPTBH_Pos (0UL) /*!< OCMPTBH (Bit 0) */ + #define R_DSMIF0_CH_DSOCHTR_OCMPTBH_Msk (0xffffUL) /*!< OCMPTBH (Bitfield-Mask: 0xffff) */ +/* ======================================================== DSSCTSR ======================================================== */ + #define R_DSMIF0_CH_DSSCTSR_SCNTL_Pos (0UL) /*!< SCNTL (Bit 0) */ + #define R_DSMIF0_CH_DSSCTSR_SCNTL_Msk (0x1fffUL) /*!< SCNTL (Bitfield-Mask: 0x1fff) */ + #define R_DSMIF0_CH_DSSCTSR_SCNTH_Pos (16UL) /*!< SCNTH (Bit 16) */ + #define R_DSMIF0_CH_DSSCTSR_SCNTH_Msk (0x1fff0000UL) /*!< SCNTH (Bitfield-Mask: 0x1fff) */ +/* ======================================================== DSODCR ========================================================= */ + #define R_DSMIF0_CH_DSODCR_ODEL_Pos (0UL) /*!< ODEL (Bit 0) */ + #define R_DSMIF0_CH_DSODCR_ODEL_Msk (0x1UL) /*!< ODEL (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_CH_DSODCR_ODEH_Pos (1UL) /*!< ODEH (Bit 1) */ + #define R_DSMIF0_CH_DSODCR_ODEH_Msk (0x2UL) /*!< ODEH (Bitfield-Mask: 0x01) */ +/* ======================================================= DSCSTRTR ======================================================== */ + #define R_DSMIF0_CH_DSCSTRTR_STRTRG_Pos (0UL) /*!< STRTRG (Bit 0) */ + #define R_DSMIF0_CH_DSCSTRTR_STRTRG_Msk (0x1UL) /*!< STRTRG (Bitfield-Mask: 0x01) */ +/* ======================================================= DSCSTPTR ======================================================== */ + #define R_DSMIF0_CH_DSCSTPTR_STPTRG_Pos (0UL) /*!< STPTRG (Bit 0) */ + #define R_DSMIF0_CH_DSCSTPTR_STPTRG_Msk (0x1UL) /*!< STPTRG (Bitfield-Mask: 0x01) */ +/* ========================================================= DSCDR ========================================================= */ + #define R_DSMIF0_CH_DSCDR_ADDR_Pos (0UL) /*!< ADDR (Bit 0) */ + #define R_DSMIF0_CH_DSCDR_ADDR_Msk (0xffffUL) /*!< ADDR (Bitfield-Mask: 0xffff) */ +/* ======================================================== DSCCDRA ======================================================== */ + #define R_DSMIF0_CH_DSCCDRA_CDRA_Pos (0UL) /*!< CDRA (Bit 0) */ + #define R_DSMIF0_CH_DSCCDRA_CDRA_Msk (0xffffUL) /*!< CDRA (Bitfield-Mask: 0xffff) */ +/* ======================================================== DSCCDRB ======================================================== */ + #define R_DSMIF0_CH_DSCCDRB_CDRB_Pos (0UL) /*!< CDRB (Bit 0) */ + #define R_DSMIF0_CH_DSCCDRB_CDRB_Msk (0xffffUL) /*!< CDRB (Bitfield-Mask: 0xffff) */ +/* ======================================================== DSOCDR ========================================================= */ + #define R_DSMIF0_CH_DSOCDR_ODR_Pos (0UL) /*!< ODR (Bit 0) */ + #define R_DSMIF0_CH_DSOCDR_ODR_Msk (0xffffUL) /*!< ODR (Bitfield-Mask: 0xffff) */ +/* ======================================================== DSCOCDR ======================================================== */ + #define R_DSMIF0_CH_DSCOCDR_CODR_Pos (0UL) /*!< CODR (Bit 0) */ + #define R_DSMIF0_CH_DSCOCDR_CODR_Msk (0xffffUL) /*!< CODR (Bitfield-Mask: 0xffff) */ +/* ========================================================= DSCSR ========================================================= */ + #define R_DSMIF0_CH_DSCSR_DUF_Pos (0UL) /*!< DUF (Bit 0) */ + #define R_DSMIF0_CH_DSCSR_DUF_Msk (0x1UL) /*!< DUF (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_CH_DSCSR_OCFL_Pos (1UL) /*!< OCFL (Bit 1) */ + #define R_DSMIF0_CH_DSCSR_OCFL_Msk (0x2UL) /*!< OCFL (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_CH_DSCSR_OCFH_Pos (2UL) /*!< OCFH (Bit 2) */ + #define R_DSMIF0_CH_DSCSR_OCFH_Msk (0x4UL) /*!< OCFH (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_CH_DSCSR_SCF_Pos (3UL) /*!< SCF (Bit 3) */ + #define R_DSMIF0_CH_DSCSR_SCF_Msk (0x8UL) /*!< SCF (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_CH_DSCSR_CHSTATE_Pos (16UL) /*!< CHSTATE (Bit 16) */ + #define R_DSMIF0_CH_DSCSR_CHSTATE_Msk (0x10000UL) /*!< CHSTATE (Bitfield-Mask: 0x01) */ +/* ======================================================== DSCSCR ========================================================= */ + #define R_DSMIF0_CH_DSCSCR_CLRDUF_Pos (0UL) /*!< CLRDUF (Bit 0) */ + #define R_DSMIF0_CH_DSCSCR_CLRDUF_Msk (0x1UL) /*!< CLRDUF (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_CH_DSCSCR_CLROCFL_Pos (1UL) /*!< CLROCFL (Bit 1) */ + #define R_DSMIF0_CH_DSCSCR_CLROCFL_Msk (0x2UL) /*!< CLROCFL (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_CH_DSCSCR_CLROCFH_Pos (2UL) /*!< CLROCFH (Bit 2) */ + #define R_DSMIF0_CH_DSCSCR_CLROCFH_Msk (0x4UL) /*!< CLROCFH (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_CH_DSCSCR_CLRSCF_Pos (3UL) /*!< CLRSCF (Bit 3) */ + #define R_DSMIF0_CH_DSCSCR_CLRSCF_Msk (0x8UL) /*!< CLRSCF (Bitfield-Mask: 0x01) */ + +/** @} */ /* End of group PosMask_clusters */ + +/* =========================================================================================================================== */ +/* ================ Pos/Mask Peripheral Section ================ */ +/* =========================================================================================================================== */ + +/** @addtogroup PosMask_peripherals + * @{ + */ + +/* =========================================================================================================================== */ +/* ================ R_GPT0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= GTWP ========================================================== */ + #define R_GPT7_GTWP_WP_Pos (0UL) /*!< WP (Bit 0) */ + #define R_GPT7_GTWP_WP_Msk (0x1UL) /*!< WP (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTWP_STRWP_Pos (1UL) /*!< STRWP (Bit 1) */ + #define R_GPT7_GTWP_STRWP_Msk (0x2UL) /*!< STRWP (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTWP_STPWP_Pos (2UL) /*!< STPWP (Bit 2) */ + #define R_GPT7_GTWP_STPWP_Msk (0x4UL) /*!< STPWP (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTWP_CLRWP_Pos (3UL) /*!< CLRWP (Bit 3) */ + #define R_GPT7_GTWP_CLRWP_Msk (0x8UL) /*!< CLRWP (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTWP_CMNWP_Pos (4UL) /*!< CMNWP (Bit 4) */ + #define R_GPT7_GTWP_CMNWP_Msk (0x10UL) /*!< CMNWP (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTWP_PRKEY_Pos (8UL) /*!< PRKEY (Bit 8) */ + #define R_GPT7_GTWP_PRKEY_Msk (0xff00UL) /*!< PRKEY (Bitfield-Mask: 0xff) */ +/* ========================================================= GTSTR ========================================================= */ + #define R_GPT7_GTSTR_CSTRT0_Pos (0UL) /*!< CSTRT0 (Bit 0) */ + #define R_GPT7_GTSTR_CSTRT0_Msk (0x1UL) /*!< CSTRT0 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSTR_CSTRT1_Pos (1UL) /*!< CSTRT1 (Bit 1) */ + #define R_GPT7_GTSTR_CSTRT1_Msk (0x2UL) /*!< CSTRT1 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSTR_CSTRT2_Pos (2UL) /*!< CSTRT2 (Bit 2) */ + #define R_GPT7_GTSTR_CSTRT2_Msk (0x4UL) /*!< CSTRT2 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSTR_CSTRT3_Pos (3UL) /*!< CSTRT3 (Bit 3) */ + #define R_GPT7_GTSTR_CSTRT3_Msk (0x8UL) /*!< CSTRT3 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSTR_CSTRT4_Pos (4UL) /*!< CSTRT4 (Bit 4) */ + #define R_GPT7_GTSTR_CSTRT4_Msk (0x10UL) /*!< CSTRT4 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSTR_CSTRT5_Pos (5UL) /*!< CSTRT5 (Bit 5) */ + #define R_GPT7_GTSTR_CSTRT5_Msk (0x20UL) /*!< CSTRT5 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSTR_CSTRT6_Pos (6UL) /*!< CSTRT6 (Bit 6) */ + #define R_GPT7_GTSTR_CSTRT6_Msk (0x40UL) /*!< CSTRT6 (Bitfield-Mask: 0x01) */ +/* ========================================================= GTSTP ========================================================= */ + #define R_GPT7_GTSTP_CSTOP0_Pos (0UL) /*!< CSTOP0 (Bit 0) */ + #define R_GPT7_GTSTP_CSTOP0_Msk (0x1UL) /*!< CSTOP0 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSTP_CSTOP1_Pos (1UL) /*!< CSTOP1 (Bit 1) */ + #define R_GPT7_GTSTP_CSTOP1_Msk (0x2UL) /*!< CSTOP1 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSTP_CSTOP2_Pos (2UL) /*!< CSTOP2 (Bit 2) */ + #define R_GPT7_GTSTP_CSTOP2_Msk (0x4UL) /*!< CSTOP2 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSTP_CSTOP3_Pos (3UL) /*!< CSTOP3 (Bit 3) */ + #define R_GPT7_GTSTP_CSTOP3_Msk (0x8UL) /*!< CSTOP3 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSTP_CSTOP4_Pos (4UL) /*!< CSTOP4 (Bit 4) */ + #define R_GPT7_GTSTP_CSTOP4_Msk (0x10UL) /*!< CSTOP4 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSTP_CSTOP5_Pos (5UL) /*!< CSTOP5 (Bit 5) */ + #define R_GPT7_GTSTP_CSTOP5_Msk (0x20UL) /*!< CSTOP5 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSTP_CSTOP6_Pos (6UL) /*!< CSTOP6 (Bit 6) */ + #define R_GPT7_GTSTP_CSTOP6_Msk (0x40UL) /*!< CSTOP6 (Bitfield-Mask: 0x01) */ +/* ========================================================= GTCLR ========================================================= */ + #define R_GPT7_GTCLR_CCLR0_Pos (0UL) /*!< CCLR0 (Bit 0) */ + #define R_GPT7_GTCLR_CCLR0_Msk (0x1UL) /*!< CCLR0 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTCLR_CCLR1_Pos (1UL) /*!< CCLR1 (Bit 1) */ + #define R_GPT7_GTCLR_CCLR1_Msk (0x2UL) /*!< CCLR1 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTCLR_CCLR2_Pos (2UL) /*!< CCLR2 (Bit 2) */ + #define R_GPT7_GTCLR_CCLR2_Msk (0x4UL) /*!< CCLR2 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTCLR_CCLR3_Pos (3UL) /*!< CCLR3 (Bit 3) */ + #define R_GPT7_GTCLR_CCLR3_Msk (0x8UL) /*!< CCLR3 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTCLR_CCLR4_Pos (4UL) /*!< CCLR4 (Bit 4) */ + #define R_GPT7_GTCLR_CCLR4_Msk (0x10UL) /*!< CCLR4 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTCLR_CCLR5_Pos (5UL) /*!< CCLR5 (Bit 5) */ + #define R_GPT7_GTCLR_CCLR5_Msk (0x20UL) /*!< CCLR5 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTCLR_CCLR6_Pos (6UL) /*!< CCLR6 (Bit 6) */ + #define R_GPT7_GTCLR_CCLR6_Msk (0x40UL) /*!< CCLR6 (Bitfield-Mask: 0x01) */ +/* ========================================================= GTSSR ========================================================= */ + #define R_GPT7_GTSSR_SSGTRGAFR_Pos (0UL) /*!< SSGTRGAFR (Bit 0) */ + #define R_GPT7_GTSSR_SSGTRGAFR_Msk (0x3UL) /*!< SSGTRGAFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTSSR_SSGTRGBFR_Pos (2UL) /*!< SSGTRGBFR (Bit 2) */ + #define R_GPT7_GTSSR_SSGTRGBFR_Msk (0xcUL) /*!< SSGTRGBFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTSSR_SSGTRGCFR_Pos (4UL) /*!< SSGTRGCFR (Bit 4) */ + #define R_GPT7_GTSSR_SSGTRGCFR_Msk (0x30UL) /*!< SSGTRGCFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTSSR_SSGTRGDFR_Pos (6UL) /*!< SSGTRGDFR (Bit 6) */ + #define R_GPT7_GTSSR_SSGTRGDFR_Msk (0xc0UL) /*!< SSGTRGDFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTSSR_SSCARBHL_Pos (8UL) /*!< SSCARBHL (Bit 8) */ + #define R_GPT7_GTSSR_SSCARBHL_Msk (0x300UL) /*!< SSCARBHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTSSR_SSCAFBHL_Pos (10UL) /*!< SSCAFBHL (Bit 10) */ + #define R_GPT7_GTSSR_SSCAFBHL_Msk (0xc00UL) /*!< SSCAFBHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTSSR_SSCBRAHL_Pos (12UL) /*!< SSCBRAHL (Bit 12) */ + #define R_GPT7_GTSSR_SSCBRAHL_Msk (0x3000UL) /*!< SSCBRAHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTSSR_SSCBFAHL_Pos (14UL) /*!< SSCBFAHL (Bit 14) */ + #define R_GPT7_GTSSR_SSCBFAHL_Msk (0xc000UL) /*!< SSCBFAHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTSSR_SSELCA_Pos (16UL) /*!< SSELCA (Bit 16) */ + #define R_GPT7_GTSSR_SSELCA_Msk (0x10000UL) /*!< SSELCA (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSSR_SSELCB_Pos (17UL) /*!< SSELCB (Bit 17) */ + #define R_GPT7_GTSSR_SSELCB_Msk (0x20000UL) /*!< SSELCB (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSSR_SSELCC_Pos (18UL) /*!< SSELCC (Bit 18) */ + #define R_GPT7_GTSSR_SSELCC_Msk (0x40000UL) /*!< SSELCC (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSSR_SSELCD_Pos (19UL) /*!< SSELCD (Bit 19) */ + #define R_GPT7_GTSSR_SSELCD_Msk (0x80000UL) /*!< SSELCD (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSSR_SSELCE_Pos (20UL) /*!< SSELCE (Bit 20) */ + #define R_GPT7_GTSSR_SSELCE_Msk (0x100000UL) /*!< SSELCE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSSR_SSELCF_Pos (21UL) /*!< SSELCF (Bit 21) */ + #define R_GPT7_GTSSR_SSELCF_Msk (0x200000UL) /*!< SSELCF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSSR_SSELCG_Pos (22UL) /*!< SSELCG (Bit 22) */ + #define R_GPT7_GTSSR_SSELCG_Msk (0x400000UL) /*!< SSELCG (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSSR_SSELCH_Pos (23UL) /*!< SSELCH (Bit 23) */ + #define R_GPT7_GTSSR_SSELCH_Msk (0x800000UL) /*!< SSELCH (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSSR_CSTRT_Pos (31UL) /*!< CSTRT (Bit 31) */ + #define R_GPT7_GTSSR_CSTRT_Msk (0x80000000UL) /*!< CSTRT (Bitfield-Mask: 0x01) */ +/* ========================================================= GTPSR ========================================================= */ + #define R_GPT7_GTPSR_PSGTRGAFR_Pos (0UL) /*!< PSGTRGAFR (Bit 0) */ + #define R_GPT7_GTPSR_PSGTRGAFR_Msk (0x3UL) /*!< PSGTRGAFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTPSR_PSGTRGBFR_Pos (2UL) /*!< PSGTRGBFR (Bit 2) */ + #define R_GPT7_GTPSR_PSGTRGBFR_Msk (0xcUL) /*!< PSGTRGBFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTPSR_PSGTRGCFR_Pos (4UL) /*!< PSGTRGCFR (Bit 4) */ + #define R_GPT7_GTPSR_PSGTRGCFR_Msk (0x30UL) /*!< PSGTRGCFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTPSR_PSGTRGDFR_Pos (6UL) /*!< PSGTRGDFR (Bit 6) */ + #define R_GPT7_GTPSR_PSGTRGDFR_Msk (0xc0UL) /*!< PSGTRGDFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTPSR_PSCARBHL_Pos (8UL) /*!< PSCARBHL (Bit 8) */ + #define R_GPT7_GTPSR_PSCARBHL_Msk (0x300UL) /*!< PSCARBHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTPSR_PSCAFBHL_Pos (10UL) /*!< PSCAFBHL (Bit 10) */ + #define R_GPT7_GTPSR_PSCAFBHL_Msk (0xc00UL) /*!< PSCAFBHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTPSR_PSCBRAHL_Pos (12UL) /*!< PSCBRAHL (Bit 12) */ + #define R_GPT7_GTPSR_PSCBRAHL_Msk (0x3000UL) /*!< PSCBRAHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTPSR_PSCBFAHL_Pos (14UL) /*!< PSCBFAHL (Bit 14) */ + #define R_GPT7_GTPSR_PSCBFAHL_Msk (0xc000UL) /*!< PSCBFAHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTPSR_PSELCA_Pos (16UL) /*!< PSELCA (Bit 16) */ + #define R_GPT7_GTPSR_PSELCA_Msk (0x10000UL) /*!< PSELCA (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTPSR_PSELCB_Pos (17UL) /*!< PSELCB (Bit 17) */ + #define R_GPT7_GTPSR_PSELCB_Msk (0x20000UL) /*!< PSELCB (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTPSR_PSELCC_Pos (18UL) /*!< PSELCC (Bit 18) */ + #define R_GPT7_GTPSR_PSELCC_Msk (0x40000UL) /*!< PSELCC (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTPSR_PSELCD_Pos (19UL) /*!< PSELCD (Bit 19) */ + #define R_GPT7_GTPSR_PSELCD_Msk (0x80000UL) /*!< PSELCD (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTPSR_PSELCE_Pos (20UL) /*!< PSELCE (Bit 20) */ + #define R_GPT7_GTPSR_PSELCE_Msk (0x100000UL) /*!< PSELCE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTPSR_PSELCF_Pos (21UL) /*!< PSELCF (Bit 21) */ + #define R_GPT7_GTPSR_PSELCF_Msk (0x200000UL) /*!< PSELCF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTPSR_PSELCG_Pos (22UL) /*!< PSELCG (Bit 22) */ + #define R_GPT7_GTPSR_PSELCG_Msk (0x400000UL) /*!< PSELCG (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTPSR_PSELCH_Pos (23UL) /*!< PSELCH (Bit 23) */ + #define R_GPT7_GTPSR_PSELCH_Msk (0x800000UL) /*!< PSELCH (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTPSR_CSTOP_Pos (31UL) /*!< CSTOP (Bit 31) */ + #define R_GPT7_GTPSR_CSTOP_Msk (0x80000000UL) /*!< CSTOP (Bitfield-Mask: 0x01) */ +/* ========================================================= GTCSR ========================================================= */ + #define R_GPT7_GTCSR_CSGTRGAFR_Pos (0UL) /*!< CSGTRGAFR (Bit 0) */ + #define R_GPT7_GTCSR_CSGTRGAFR_Msk (0x3UL) /*!< CSGTRGAFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTCSR_CSGTRGBFR_Pos (2UL) /*!< CSGTRGBFR (Bit 2) */ + #define R_GPT7_GTCSR_CSGTRGBFR_Msk (0xcUL) /*!< CSGTRGBFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTCSR_CSGTRGCFR_Pos (4UL) /*!< CSGTRGCFR (Bit 4) */ + #define R_GPT7_GTCSR_CSGTRGCFR_Msk (0x30UL) /*!< CSGTRGCFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTCSR_CSGTRGDFR_Pos (6UL) /*!< CSGTRGDFR (Bit 6) */ + #define R_GPT7_GTCSR_CSGTRGDFR_Msk (0xc0UL) /*!< CSGTRGDFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTCSR_CSCARBHL_Pos (8UL) /*!< CSCARBHL (Bit 8) */ + #define R_GPT7_GTCSR_CSCARBHL_Msk (0x300UL) /*!< CSCARBHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTCSR_CSCAFBHL_Pos (10UL) /*!< CSCAFBHL (Bit 10) */ + #define R_GPT7_GTCSR_CSCAFBHL_Msk (0xc00UL) /*!< CSCAFBHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTCSR_CSCBRAHL_Pos (12UL) /*!< CSCBRAHL (Bit 12) */ + #define R_GPT7_GTCSR_CSCBRAHL_Msk (0x3000UL) /*!< CSCBRAHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTCSR_CSCBFAHL_Pos (14UL) /*!< CSCBFAHL (Bit 14) */ + #define R_GPT7_GTCSR_CSCBFAHL_Msk (0xc000UL) /*!< CSCBFAHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTCSR_CSELCA_Pos (16UL) /*!< CSELCA (Bit 16) */ + #define R_GPT7_GTCSR_CSELCA_Msk (0x10000UL) /*!< CSELCA (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTCSR_CSELCB_Pos (17UL) /*!< CSELCB (Bit 17) */ + #define R_GPT7_GTCSR_CSELCB_Msk (0x20000UL) /*!< CSELCB (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTCSR_CSELCC_Pos (18UL) /*!< CSELCC (Bit 18) */ + #define R_GPT7_GTCSR_CSELCC_Msk (0x40000UL) /*!< CSELCC (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTCSR_CSELCD_Pos (19UL) /*!< CSELCD (Bit 19) */ + #define R_GPT7_GTCSR_CSELCD_Msk (0x80000UL) /*!< CSELCD (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTCSR_CSELCE_Pos (20UL) /*!< CSELCE (Bit 20) */ + #define R_GPT7_GTCSR_CSELCE_Msk (0x100000UL) /*!< CSELCE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTCSR_CSELCF_Pos (21UL) /*!< CSELCF (Bit 21) */ + #define R_GPT7_GTCSR_CSELCF_Msk (0x200000UL) /*!< CSELCF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTCSR_CSELCG_Pos (22UL) /*!< CSELCG (Bit 22) */ + #define R_GPT7_GTCSR_CSELCG_Msk (0x400000UL) /*!< CSELCG (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTCSR_CSELCH_Pos (23UL) /*!< CSELCH (Bit 23) */ + #define R_GPT7_GTCSR_CSELCH_Msk (0x800000UL) /*!< CSELCH (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTCSR_CCLR_Pos (31UL) /*!< CCLR (Bit 31) */ + #define R_GPT7_GTCSR_CCLR_Msk (0x80000000UL) /*!< CCLR (Bitfield-Mask: 0x01) */ +/* ======================================================== GTUPSR ========================================================= */ + #define R_GPT7_GTUPSR_USGTRGAFR_Pos (0UL) /*!< USGTRGAFR (Bit 0) */ + #define R_GPT7_GTUPSR_USGTRGAFR_Msk (0x3UL) /*!< USGTRGAFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTUPSR_USGTRGBFR_Pos (2UL) /*!< USGTRGBFR (Bit 2) */ + #define R_GPT7_GTUPSR_USGTRGBFR_Msk (0xcUL) /*!< USGTRGBFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTUPSR_USGTRGCFR_Pos (4UL) /*!< USGTRGCFR (Bit 4) */ + #define R_GPT7_GTUPSR_USGTRGCFR_Msk (0x30UL) /*!< USGTRGCFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTUPSR_USGTRGDFR_Pos (6UL) /*!< USGTRGDFR (Bit 6) */ + #define R_GPT7_GTUPSR_USGTRGDFR_Msk (0xc0UL) /*!< USGTRGDFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTUPSR_USCARBHL_Pos (8UL) /*!< USCARBHL (Bit 8) */ + #define R_GPT7_GTUPSR_USCARBHL_Msk (0x300UL) /*!< USCARBHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTUPSR_USCAFBHL_Pos (10UL) /*!< USCAFBHL (Bit 10) */ + #define R_GPT7_GTUPSR_USCAFBHL_Msk (0xc00UL) /*!< USCAFBHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTUPSR_USCBRAHL_Pos (12UL) /*!< USCBRAHL (Bit 12) */ + #define R_GPT7_GTUPSR_USCBRAHL_Msk (0x3000UL) /*!< USCBRAHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTUPSR_USCBFAHL_Pos (14UL) /*!< USCBFAHL (Bit 14) */ + #define R_GPT7_GTUPSR_USCBFAHL_Msk (0xc000UL) /*!< USCBFAHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTUPSR_USELCA_Pos (16UL) /*!< USELCA (Bit 16) */ + #define R_GPT7_GTUPSR_USELCA_Msk (0x10000UL) /*!< USELCA (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTUPSR_USELCB_Pos (17UL) /*!< USELCB (Bit 17) */ + #define R_GPT7_GTUPSR_USELCB_Msk (0x20000UL) /*!< USELCB (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTUPSR_USELCC_Pos (18UL) /*!< USELCC (Bit 18) */ + #define R_GPT7_GTUPSR_USELCC_Msk (0x40000UL) /*!< USELCC (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTUPSR_USELCD_Pos (19UL) /*!< USELCD (Bit 19) */ + #define R_GPT7_GTUPSR_USELCD_Msk (0x80000UL) /*!< USELCD (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTUPSR_USELCE_Pos (20UL) /*!< USELCE (Bit 20) */ + #define R_GPT7_GTUPSR_USELCE_Msk (0x100000UL) /*!< USELCE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTUPSR_USELCF_Pos (21UL) /*!< USELCF (Bit 21) */ + #define R_GPT7_GTUPSR_USELCF_Msk (0x200000UL) /*!< USELCF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTUPSR_USELCG_Pos (22UL) /*!< USELCG (Bit 22) */ + #define R_GPT7_GTUPSR_USELCG_Msk (0x400000UL) /*!< USELCG (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTUPSR_USELCH_Pos (23UL) /*!< USELCH (Bit 23) */ + #define R_GPT7_GTUPSR_USELCH_Msk (0x800000UL) /*!< USELCH (Bitfield-Mask: 0x01) */ +/* ======================================================== GTDNSR ========================================================= */ + #define R_GPT7_GTDNSR_DSGTRGAFR_Pos (0UL) /*!< DSGTRGAFR (Bit 0) */ + #define R_GPT7_GTDNSR_DSGTRGAFR_Msk (0x3UL) /*!< DSGTRGAFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTDNSR_DSGTRGBFR_Pos (2UL) /*!< DSGTRGBFR (Bit 2) */ + #define R_GPT7_GTDNSR_DSGTRGBFR_Msk (0xcUL) /*!< DSGTRGBFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTDNSR_DSGTRGCFR_Pos (4UL) /*!< DSGTRGCFR (Bit 4) */ + #define R_GPT7_GTDNSR_DSGTRGCFR_Msk (0x30UL) /*!< DSGTRGCFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTDNSR_DSGTRGDFR_Pos (6UL) /*!< DSGTRGDFR (Bit 6) */ + #define R_GPT7_GTDNSR_DSGTRGDFR_Msk (0xc0UL) /*!< DSGTRGDFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTDNSR_DSCARBHL_Pos (8UL) /*!< DSCARBHL (Bit 8) */ + #define R_GPT7_GTDNSR_DSCARBHL_Msk (0x300UL) /*!< DSCARBHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTDNSR_DSCAFBHL_Pos (10UL) /*!< DSCAFBHL (Bit 10) */ + #define R_GPT7_GTDNSR_DSCAFBHL_Msk (0xc00UL) /*!< DSCAFBHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTDNSR_DSCBRAHL_Pos (12UL) /*!< DSCBRAHL (Bit 12) */ + #define R_GPT7_GTDNSR_DSCBRAHL_Msk (0x3000UL) /*!< DSCBRAHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTDNSR_DSCBFAHL_Pos (14UL) /*!< DSCBFAHL (Bit 14) */ + #define R_GPT7_GTDNSR_DSCBFAHL_Msk (0xc000UL) /*!< DSCBFAHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTDNSR_DSELCA_Pos (16UL) /*!< DSELCA (Bit 16) */ + #define R_GPT7_GTDNSR_DSELCA_Msk (0x10000UL) /*!< DSELCA (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTDNSR_DSELCB_Pos (17UL) /*!< DSELCB (Bit 17) */ + #define R_GPT7_GTDNSR_DSELCB_Msk (0x20000UL) /*!< DSELCB (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTDNSR_DSELCC_Pos (18UL) /*!< DSELCC (Bit 18) */ + #define R_GPT7_GTDNSR_DSELCC_Msk (0x40000UL) /*!< DSELCC (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTDNSR_DSELCD_Pos (19UL) /*!< DSELCD (Bit 19) */ + #define R_GPT7_GTDNSR_DSELCD_Msk (0x80000UL) /*!< DSELCD (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTDNSR_DSELCE_Pos (20UL) /*!< DSELCE (Bit 20) */ + #define R_GPT7_GTDNSR_DSELCE_Msk (0x100000UL) /*!< DSELCE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTDNSR_DSELCF_Pos (21UL) /*!< DSELCF (Bit 21) */ + #define R_GPT7_GTDNSR_DSELCF_Msk (0x200000UL) /*!< DSELCF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTDNSR_DSELCG_Pos (22UL) /*!< DSELCG (Bit 22) */ + #define R_GPT7_GTDNSR_DSELCG_Msk (0x400000UL) /*!< DSELCG (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTDNSR_DSELCH_Pos (23UL) /*!< DSELCH (Bit 23) */ + #define R_GPT7_GTDNSR_DSELCH_Msk (0x800000UL) /*!< DSELCH (Bitfield-Mask: 0x01) */ +/* ======================================================== GTICASR ======================================================== */ + #define R_GPT7_GTICASR_ASGTRGAFR_Pos (0UL) /*!< ASGTRGAFR (Bit 0) */ + #define R_GPT7_GTICASR_ASGTRGAFR_Msk (0x3UL) /*!< ASGTRGAFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTICASR_ASGTRGBFR_Pos (2UL) /*!< ASGTRGBFR (Bit 2) */ + #define R_GPT7_GTICASR_ASGTRGBFR_Msk (0xcUL) /*!< ASGTRGBFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTICASR_ASGTRGCFR_Pos (4UL) /*!< ASGTRGCFR (Bit 4) */ + #define R_GPT7_GTICASR_ASGTRGCFR_Msk (0x30UL) /*!< ASGTRGCFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTICASR_ASGTRGDFR_Pos (6UL) /*!< ASGTRGDFR (Bit 6) */ + #define R_GPT7_GTICASR_ASGTRGDFR_Msk (0xc0UL) /*!< ASGTRGDFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTICASR_ASCARBHL_Pos (8UL) /*!< ASCARBHL (Bit 8) */ + #define R_GPT7_GTICASR_ASCARBHL_Msk (0x300UL) /*!< ASCARBHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTICASR_ASCAFBHL_Pos (10UL) /*!< ASCAFBHL (Bit 10) */ + #define R_GPT7_GTICASR_ASCAFBHL_Msk (0xc00UL) /*!< ASCAFBHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTICASR_ASCBRAHL_Pos (12UL) /*!< ASCBRAHL (Bit 12) */ + #define R_GPT7_GTICASR_ASCBRAHL_Msk (0x3000UL) /*!< ASCBRAHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTICASR_ASCBFAHL_Pos (14UL) /*!< ASCBFAHL (Bit 14) */ + #define R_GPT7_GTICASR_ASCBFAHL_Msk (0xc000UL) /*!< ASCBFAHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTICASR_ASELCA_Pos (16UL) /*!< ASELCA (Bit 16) */ + #define R_GPT7_GTICASR_ASELCA_Msk (0x10000UL) /*!< ASELCA (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTICASR_ASELCB_Pos (17UL) /*!< ASELCB (Bit 17) */ + #define R_GPT7_GTICASR_ASELCB_Msk (0x20000UL) /*!< ASELCB (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTICASR_ASELCC_Pos (18UL) /*!< ASELCC (Bit 18) */ + #define R_GPT7_GTICASR_ASELCC_Msk (0x40000UL) /*!< ASELCC (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTICASR_ASELCD_Pos (19UL) /*!< ASELCD (Bit 19) */ + #define R_GPT7_GTICASR_ASELCD_Msk (0x80000UL) /*!< ASELCD (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTICASR_ASELCE_Pos (20UL) /*!< ASELCE (Bit 20) */ + #define R_GPT7_GTICASR_ASELCE_Msk (0x100000UL) /*!< ASELCE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTICASR_ASELCF_Pos (21UL) /*!< ASELCF (Bit 21) */ + #define R_GPT7_GTICASR_ASELCF_Msk (0x200000UL) /*!< ASELCF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTICASR_ASELCG_Pos (22UL) /*!< ASELCG (Bit 22) */ + #define R_GPT7_GTICASR_ASELCG_Msk (0x400000UL) /*!< ASELCG (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTICASR_ASELCH_Pos (23UL) /*!< ASELCH (Bit 23) */ + #define R_GPT7_GTICASR_ASELCH_Msk (0x800000UL) /*!< ASELCH (Bitfield-Mask: 0x01) */ +/* ======================================================== GTICBSR ======================================================== */ + #define R_GPT7_GTICBSR_BSGTRGAFR_Pos (0UL) /*!< BSGTRGAFR (Bit 0) */ + #define R_GPT7_GTICBSR_BSGTRGAFR_Msk (0x3UL) /*!< BSGTRGAFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTICBSR_BSGTRGBFR_Pos (2UL) /*!< BSGTRGBFR (Bit 2) */ + #define R_GPT7_GTICBSR_BSGTRGBFR_Msk (0xcUL) /*!< BSGTRGBFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTICBSR_BSGTRGCFR_Pos (4UL) /*!< BSGTRGCFR (Bit 4) */ + #define R_GPT7_GTICBSR_BSGTRGCFR_Msk (0x30UL) /*!< BSGTRGCFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTICBSR_BSGTRGDFR_Pos (6UL) /*!< BSGTRGDFR (Bit 6) */ + #define R_GPT7_GTICBSR_BSGTRGDFR_Msk (0xc0UL) /*!< BSGTRGDFR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTICBSR_BSCARBHL_Pos (8UL) /*!< BSCARBHL (Bit 8) */ + #define R_GPT7_GTICBSR_BSCARBHL_Msk (0x300UL) /*!< BSCARBHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTICBSR_BSCAFBHL_Pos (10UL) /*!< BSCAFBHL (Bit 10) */ + #define R_GPT7_GTICBSR_BSCAFBHL_Msk (0xc00UL) /*!< BSCAFBHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTICBSR_BSCBRAHL_Pos (12UL) /*!< BSCBRAHL (Bit 12) */ + #define R_GPT7_GTICBSR_BSCBRAHL_Msk (0x3000UL) /*!< BSCBRAHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTICBSR_BSCBFAHL_Pos (14UL) /*!< BSCBFAHL (Bit 14) */ + #define R_GPT7_GTICBSR_BSCBFAHL_Msk (0xc000UL) /*!< BSCBFAHL (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTICBSR_BSELCA_Pos (16UL) /*!< BSELCA (Bit 16) */ + #define R_GPT7_GTICBSR_BSELCA_Msk (0x10000UL) /*!< BSELCA (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTICBSR_BSELCB_Pos (17UL) /*!< BSELCB (Bit 17) */ + #define R_GPT7_GTICBSR_BSELCB_Msk (0x20000UL) /*!< BSELCB (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTICBSR_BSELCC_Pos (18UL) /*!< BSELCC (Bit 18) */ + #define R_GPT7_GTICBSR_BSELCC_Msk (0x40000UL) /*!< BSELCC (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTICBSR_BSELCD_Pos (19UL) /*!< BSELCD (Bit 19) */ + #define R_GPT7_GTICBSR_BSELCD_Msk (0x80000UL) /*!< BSELCD (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTICBSR_BSELCE_Pos (20UL) /*!< BSELCE (Bit 20) */ + #define R_GPT7_GTICBSR_BSELCE_Msk (0x100000UL) /*!< BSELCE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTICBSR_BSELCF_Pos (21UL) /*!< BSELCF (Bit 21) */ + #define R_GPT7_GTICBSR_BSELCF_Msk (0x200000UL) /*!< BSELCF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTICBSR_BSELCG_Pos (22UL) /*!< BSELCG (Bit 22) */ + #define R_GPT7_GTICBSR_BSELCG_Msk (0x400000UL) /*!< BSELCG (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTICBSR_BSELCH_Pos (23UL) /*!< BSELCH (Bit 23) */ + #define R_GPT7_GTICBSR_BSELCH_Msk (0x800000UL) /*!< BSELCH (Bitfield-Mask: 0x01) */ +/* ========================================================= GTCR ========================================================== */ + #define R_GPT7_GTCR_CST_Pos (0UL) /*!< CST (Bit 0) */ + #define R_GPT7_GTCR_CST_Msk (0x1UL) /*!< CST (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTCR_ICDS_Pos (8UL) /*!< ICDS (Bit 8) */ + #define R_GPT7_GTCR_ICDS_Msk (0x100UL) /*!< ICDS (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTCR_MD_Pos (16UL) /*!< MD (Bit 16) */ + #define R_GPT7_GTCR_MD_Msk (0x70000UL) /*!< MD (Bitfield-Mask: 0x07) */ + #define R_GPT7_GTCR_TPCS_Pos (23UL) /*!< TPCS (Bit 23) */ + #define R_GPT7_GTCR_TPCS_Msk (0x7800000UL) /*!< TPCS (Bitfield-Mask: 0x0f) */ + #define R_GPT7_GTCR_SWMD_Pos (29UL) /*!< SWMD (Bit 29) */ + #define R_GPT7_GTCR_SWMD_Msk (0xe0000000UL) /*!< SWMD (Bitfield-Mask: 0x07) */ +/* ======================================================= GTUDDTYC ======================================================== */ + #define R_GPT7_GTUDDTYC_UD_Pos (0UL) /*!< UD (Bit 0) */ + #define R_GPT7_GTUDDTYC_UD_Msk (0x1UL) /*!< UD (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTUDDTYC_UDF_Pos (1UL) /*!< UDF (Bit 1) */ + #define R_GPT7_GTUDDTYC_UDF_Msk (0x2UL) /*!< UDF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTUDDTYC_OADTY_Pos (16UL) /*!< OADTY (Bit 16) */ + #define R_GPT7_GTUDDTYC_OADTY_Msk (0x30000UL) /*!< OADTY (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTUDDTYC_OADTYF_Pos (18UL) /*!< OADTYF (Bit 18) */ + #define R_GPT7_GTUDDTYC_OADTYF_Msk (0x40000UL) /*!< OADTYF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTUDDTYC_OADTYR_Pos (19UL) /*!< OADTYR (Bit 19) */ + #define R_GPT7_GTUDDTYC_OADTYR_Msk (0x80000UL) /*!< OADTYR (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTUDDTYC_OBDTY_Pos (24UL) /*!< OBDTY (Bit 24) */ + #define R_GPT7_GTUDDTYC_OBDTY_Msk (0x3000000UL) /*!< OBDTY (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTUDDTYC_OBDTYF_Pos (26UL) /*!< OBDTYF (Bit 26) */ + #define R_GPT7_GTUDDTYC_OBDTYF_Msk (0x4000000UL) /*!< OBDTYF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTUDDTYC_OBDTYR_Pos (27UL) /*!< OBDTYR (Bit 27) */ + #define R_GPT7_GTUDDTYC_OBDTYR_Msk (0x8000000UL) /*!< OBDTYR (Bitfield-Mask: 0x01) */ +/* ========================================================= GTIOR ========================================================= */ + #define R_GPT7_GTIOR_GTIOA_Pos (0UL) /*!< GTIOA (Bit 0) */ + #define R_GPT7_GTIOR_GTIOA_Msk (0x1fUL) /*!< GTIOA (Bitfield-Mask: 0x1f) */ + #define R_GPT7_GTIOR_OADFLT_Pos (6UL) /*!< OADFLT (Bit 6) */ + #define R_GPT7_GTIOR_OADFLT_Msk (0x40UL) /*!< OADFLT (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTIOR_OAHLD_Pos (7UL) /*!< OAHLD (Bit 7) */ + #define R_GPT7_GTIOR_OAHLD_Msk (0x80UL) /*!< OAHLD (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTIOR_OAE_Pos (8UL) /*!< OAE (Bit 8) */ + #define R_GPT7_GTIOR_OAE_Msk (0x100UL) /*!< OAE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTIOR_OADF_Pos (9UL) /*!< OADF (Bit 9) */ + #define R_GPT7_GTIOR_OADF_Msk (0x600UL) /*!< OADF (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTIOR_NFAEN_Pos (13UL) /*!< NFAEN (Bit 13) */ + #define R_GPT7_GTIOR_NFAEN_Msk (0x2000UL) /*!< NFAEN (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTIOR_NFCSA_Pos (14UL) /*!< NFCSA (Bit 14) */ + #define R_GPT7_GTIOR_NFCSA_Msk (0xc000UL) /*!< NFCSA (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTIOR_GTIOB_Pos (16UL) /*!< GTIOB (Bit 16) */ + #define R_GPT7_GTIOR_GTIOB_Msk (0x1f0000UL) /*!< GTIOB (Bitfield-Mask: 0x1f) */ + #define R_GPT7_GTIOR_OBDFLT_Pos (22UL) /*!< OBDFLT (Bit 22) */ + #define R_GPT7_GTIOR_OBDFLT_Msk (0x400000UL) /*!< OBDFLT (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTIOR_OBHLD_Pos (23UL) /*!< OBHLD (Bit 23) */ + #define R_GPT7_GTIOR_OBHLD_Msk (0x800000UL) /*!< OBHLD (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTIOR_OBE_Pos (24UL) /*!< OBE (Bit 24) */ + #define R_GPT7_GTIOR_OBE_Msk (0x1000000UL) /*!< OBE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTIOR_OBDF_Pos (25UL) /*!< OBDF (Bit 25) */ + #define R_GPT7_GTIOR_OBDF_Msk (0x6000000UL) /*!< OBDF (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTIOR_NFBEN_Pos (29UL) /*!< NFBEN (Bit 29) */ + #define R_GPT7_GTIOR_NFBEN_Msk (0x20000000UL) /*!< NFBEN (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTIOR_NFCSB_Pos (30UL) /*!< NFCSB (Bit 30) */ + #define R_GPT7_GTIOR_NFCSB_Msk (0xc0000000UL) /*!< NFCSB (Bitfield-Mask: 0x03) */ +/* ======================================================== GTINTAD ======================================================== */ + #define R_GPT7_GTINTAD_GTINTA_Pos (0UL) /*!< GTINTA (Bit 0) */ + #define R_GPT7_GTINTAD_GTINTA_Msk (0x1UL) /*!< GTINTA (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTINTAD_GTINTB_Pos (1UL) /*!< GTINTB (Bit 1) */ + #define R_GPT7_GTINTAD_GTINTB_Msk (0x2UL) /*!< GTINTB (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTINTAD_GTINTC_Pos (2UL) /*!< GTINTC (Bit 2) */ + #define R_GPT7_GTINTAD_GTINTC_Msk (0x4UL) /*!< GTINTC (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTINTAD_GTINTD_Pos (3UL) /*!< GTINTD (Bit 3) */ + #define R_GPT7_GTINTAD_GTINTD_Msk (0x8UL) /*!< GTINTD (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTINTAD_GTINTE_Pos (4UL) /*!< GTINTE (Bit 4) */ + #define R_GPT7_GTINTAD_GTINTE_Msk (0x10UL) /*!< GTINTE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTINTAD_GTINTF_Pos (5UL) /*!< GTINTF (Bit 5) */ + #define R_GPT7_GTINTAD_GTINTF_Msk (0x20UL) /*!< GTINTF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTINTAD_GTINTPR_Pos (6UL) /*!< GTINTPR (Bit 6) */ + #define R_GPT7_GTINTAD_GTINTPR_Msk (0xc0UL) /*!< GTINTPR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTINTAD_ADTRAUEN_Pos (16UL) /*!< ADTRAUEN (Bit 16) */ + #define R_GPT7_GTINTAD_ADTRAUEN_Msk (0x10000UL) /*!< ADTRAUEN (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTINTAD_ADTRADEN_Pos (17UL) /*!< ADTRADEN (Bit 17) */ + #define R_GPT7_GTINTAD_ADTRADEN_Msk (0x20000UL) /*!< ADTRADEN (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTINTAD_ADTRBUEN_Pos (18UL) /*!< ADTRBUEN (Bit 18) */ + #define R_GPT7_GTINTAD_ADTRBUEN_Msk (0x40000UL) /*!< ADTRBUEN (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTINTAD_ADTRBDEN_Pos (19UL) /*!< ADTRBDEN (Bit 19) */ + #define R_GPT7_GTINTAD_ADTRBDEN_Msk (0x80000UL) /*!< ADTRBDEN (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTINTAD_GRP_Pos (24UL) /*!< GRP (Bit 24) */ + #define R_GPT7_GTINTAD_GRP_Msk (0x3000000UL) /*!< GRP (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTINTAD_GRPDTE_Pos (28UL) /*!< GRPDTE (Bit 28) */ + #define R_GPT7_GTINTAD_GRPDTE_Msk (0x10000000UL) /*!< GRPDTE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTINTAD_GRPABH_Pos (29UL) /*!< GRPABH (Bit 29) */ + #define R_GPT7_GTINTAD_GRPABH_Msk (0x20000000UL) /*!< GRPABH (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTINTAD_GRPABL_Pos (30UL) /*!< GRPABL (Bit 30) */ + #define R_GPT7_GTINTAD_GRPABL_Msk (0x40000000UL) /*!< GRPABL (Bitfield-Mask: 0x01) */ +/* ========================================================= GTST ========================================================== */ + #define R_GPT7_GTST_ITCNT_Pos (8UL) /*!< ITCNT (Bit 8) */ + #define R_GPT7_GTST_ITCNT_Msk (0x700UL) /*!< ITCNT (Bitfield-Mask: 0x07) */ + #define R_GPT7_GTST_TUCF_Pos (15UL) /*!< TUCF (Bit 15) */ + #define R_GPT7_GTST_TUCF_Msk (0x8000UL) /*!< TUCF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTST_ADTRAUF_Pos (16UL) /*!< ADTRAUF (Bit 16) */ + #define R_GPT7_GTST_ADTRAUF_Msk (0x10000UL) /*!< ADTRAUF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTST_ADTRADF_Pos (17UL) /*!< ADTRADF (Bit 17) */ + #define R_GPT7_GTST_ADTRADF_Msk (0x20000UL) /*!< ADTRADF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTST_ADTRBUF_Pos (18UL) /*!< ADTRBUF (Bit 18) */ + #define R_GPT7_GTST_ADTRBUF_Msk (0x40000UL) /*!< ADTRBUF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTST_ADTRBDF_Pos (19UL) /*!< ADTRBDF (Bit 19) */ + #define R_GPT7_GTST_ADTRBDF_Msk (0x80000UL) /*!< ADTRBDF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTST_ODF_Pos (24UL) /*!< ODF (Bit 24) */ + #define R_GPT7_GTST_ODF_Msk (0x1000000UL) /*!< ODF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTST_DTEF_Pos (28UL) /*!< DTEF (Bit 28) */ + #define R_GPT7_GTST_DTEF_Msk (0x10000000UL) /*!< DTEF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTST_OABHF_Pos (29UL) /*!< OABHF (Bit 29) */ + #define R_GPT7_GTST_OABHF_Msk (0x20000000UL) /*!< OABHF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTST_OABLF_Pos (30UL) /*!< OABLF (Bit 30) */ + #define R_GPT7_GTST_OABLF_Msk (0x40000000UL) /*!< OABLF (Bitfield-Mask: 0x01) */ +/* ========================================================= GTBER ========================================================= */ + #define R_GPT7_GTBER_BD0_Pos (0UL) /*!< BD0 (Bit 0) */ + #define R_GPT7_GTBER_BD0_Msk (0x1UL) /*!< BD0 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTBER_BD1_Pos (1UL) /*!< BD1 (Bit 1) */ + #define R_GPT7_GTBER_BD1_Msk (0x2UL) /*!< BD1 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTBER_BD2_Pos (2UL) /*!< BD2 (Bit 2) */ + #define R_GPT7_GTBER_BD2_Msk (0x4UL) /*!< BD2 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTBER_BD3_Pos (3UL) /*!< BD3 (Bit 3) */ + #define R_GPT7_GTBER_BD3_Msk (0x8UL) /*!< BD3 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTBER_DBRTECA_Pos (8UL) /*!< DBRTECA (Bit 8) */ + #define R_GPT7_GTBER_DBRTECA_Msk (0x100UL) /*!< DBRTECA (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTBER_DBRTECB_Pos (10UL) /*!< DBRTECB (Bit 10) */ + #define R_GPT7_GTBER_DBRTECB_Msk (0x400UL) /*!< DBRTECB (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTBER_CCRA_Pos (16UL) /*!< CCRA (Bit 16) */ + #define R_GPT7_GTBER_CCRA_Msk (0x30000UL) /*!< CCRA (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTBER_CCRB_Pos (18UL) /*!< CCRB (Bit 18) */ + #define R_GPT7_GTBER_CCRB_Msk (0xc0000UL) /*!< CCRB (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTBER_PR_Pos (20UL) /*!< PR (Bit 20) */ + #define R_GPT7_GTBER_PR_Msk (0x300000UL) /*!< PR (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTBER_CCRSWT_Pos (22UL) /*!< CCRSWT (Bit 22) */ + #define R_GPT7_GTBER_CCRSWT_Msk (0x400000UL) /*!< CCRSWT (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTBER_ADTTA_Pos (24UL) /*!< ADTTA (Bit 24) */ + #define R_GPT7_GTBER_ADTTA_Msk (0x3000000UL) /*!< ADTTA (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTBER_ADTDA_Pos (26UL) /*!< ADTDA (Bit 26) */ + #define R_GPT7_GTBER_ADTDA_Msk (0x4000000UL) /*!< ADTDA (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTBER_ADTTB_Pos (28UL) /*!< ADTTB (Bit 28) */ + #define R_GPT7_GTBER_ADTTB_Msk (0x30000000UL) /*!< ADTTB (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTBER_ADTDB_Pos (30UL) /*!< ADTDB (Bit 30) */ + #define R_GPT7_GTBER_ADTDB_Msk (0x40000000UL) /*!< ADTDB (Bitfield-Mask: 0x01) */ +/* ========================================================= GTITC ========================================================= */ + #define R_GPT7_GTITC_ITLA_Pos (0UL) /*!< ITLA (Bit 0) */ + #define R_GPT7_GTITC_ITLA_Msk (0x1UL) /*!< ITLA (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTITC_ITLB_Pos (1UL) /*!< ITLB (Bit 1) */ + #define R_GPT7_GTITC_ITLB_Msk (0x2UL) /*!< ITLB (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTITC_ITLC_Pos (2UL) /*!< ITLC (Bit 2) */ + #define R_GPT7_GTITC_ITLC_Msk (0x4UL) /*!< ITLC (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTITC_ITLD_Pos (3UL) /*!< ITLD (Bit 3) */ + #define R_GPT7_GTITC_ITLD_Msk (0x8UL) /*!< ITLD (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTITC_ITLE_Pos (4UL) /*!< ITLE (Bit 4) */ + #define R_GPT7_GTITC_ITLE_Msk (0x10UL) /*!< ITLE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTITC_ITLF_Pos (5UL) /*!< ITLF (Bit 5) */ + #define R_GPT7_GTITC_ITLF_Msk (0x20UL) /*!< ITLF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTITC_IVTC_Pos (6UL) /*!< IVTC (Bit 6) */ + #define R_GPT7_GTITC_IVTC_Msk (0xc0UL) /*!< IVTC (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTITC_IVTT_Pos (8UL) /*!< IVTT (Bit 8) */ + #define R_GPT7_GTITC_IVTT_Msk (0x700UL) /*!< IVTT (Bitfield-Mask: 0x07) */ + #define R_GPT7_GTITC_ADTAL_Pos (12UL) /*!< ADTAL (Bit 12) */ + #define R_GPT7_GTITC_ADTAL_Msk (0x1000UL) /*!< ADTAL (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTITC_ADTBL_Pos (14UL) /*!< ADTBL (Bit 14) */ + #define R_GPT7_GTITC_ADTBL_Msk (0x4000UL) /*!< ADTBL (Bitfield-Mask: 0x01) */ +/* ========================================================= GTCNT ========================================================= */ +/* ========================================================= GTCCR ========================================================= */ +/* ========================================================= GTPR ========================================================== */ +/* ========================================================= GTPBR ========================================================= */ +/* ======================================================== GTPDBR ========================================================= */ +/* ======================================================== GTADTRA ======================================================== */ +/* ======================================================= GTADTBRA ======================================================== */ +/* ======================================================= GTADTDBRA ======================================================= */ +/* ======================================================== GTADTRB ======================================================== */ +/* ======================================================= GTADTBRB ======================================================== */ +/* ======================================================= GTADTDBRB ======================================================= */ +/* ======================================================== GTDTCR ========================================================= */ + #define R_GPT7_GTDTCR_TDE_Pos (0UL) /*!< TDE (Bit 0) */ + #define R_GPT7_GTDTCR_TDE_Msk (0x1UL) /*!< TDE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTDTCR_TDBUE_Pos (4UL) /*!< TDBUE (Bit 4) */ + #define R_GPT7_GTDTCR_TDBUE_Msk (0x10UL) /*!< TDBUE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTDTCR_TDBDE_Pos (5UL) /*!< TDBDE (Bit 5) */ + #define R_GPT7_GTDTCR_TDBDE_Msk (0x20UL) /*!< TDBDE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTDTCR_TDFER_Pos (8UL) /*!< TDFER (Bit 8) */ + #define R_GPT7_GTDTCR_TDFER_Msk (0x100UL) /*!< TDFER (Bitfield-Mask: 0x01) */ +/* ========================================================= GTDVU ========================================================= */ +/* ========================================================= GTDVD ========================================================= */ +/* ========================================================= GTDBU ========================================================= */ +/* ========================================================= GTDBD ========================================================= */ +/* ========================================================= GTSOS ========================================================= */ + #define R_GPT7_GTSOS_SOS_Pos (0UL) /*!< SOS (Bit 0) */ + #define R_GPT7_GTSOS_SOS_Msk (0x3UL) /*!< SOS (Bitfield-Mask: 0x03) */ +/* ======================================================== GTSOTR ========================================================= */ + #define R_GPT7_GTSOTR_SOTR_Pos (0UL) /*!< SOTR (Bit 0) */ + #define R_GPT7_GTSOTR_SOTR_Msk (0x1UL) /*!< SOTR (Bitfield-Mask: 0x01) */ +/* ======================================================== GTADSMR ======================================================== */ + #define R_GPT7_GTADSMR_ADSMS0_Pos (0UL) /*!< ADSMS0 (Bit 0) */ + #define R_GPT7_GTADSMR_ADSMS0_Msk (0x3UL) /*!< ADSMS0 (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTADSMR_ADSMEN0_Pos (8UL) /*!< ADSMEN0 (Bit 8) */ + #define R_GPT7_GTADSMR_ADSMEN0_Msk (0x100UL) /*!< ADSMEN0 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTADSMR_ADSMS1_Pos (16UL) /*!< ADSMS1 (Bit 16) */ + #define R_GPT7_GTADSMR_ADSMS1_Msk (0x30000UL) /*!< ADSMS1 (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTADSMR_ADSMEN1_Pos (24UL) /*!< ADSMEN1 (Bit 24) */ + #define R_GPT7_GTADSMR_ADSMEN1_Msk (0x1000000UL) /*!< ADSMEN1 (Bitfield-Mask: 0x01) */ +/* ======================================================== GTEITC ========================================================= */ + #define R_GPT7_GTEITC_EIVTC1_Pos (0UL) /*!< EIVTC1 (Bit 0) */ + #define R_GPT7_GTEITC_EIVTC1_Msk (0x3UL) /*!< EIVTC1 (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTEITC_EIVTT1_Pos (4UL) /*!< EIVTT1 (Bit 4) */ + #define R_GPT7_GTEITC_EIVTT1_Msk (0xf0UL) /*!< EIVTT1 (Bitfield-Mask: 0x0f) */ + #define R_GPT7_GTEITC_EITCNT1_Pos (12UL) /*!< EITCNT1 (Bit 12) */ + #define R_GPT7_GTEITC_EITCNT1_Msk (0xf000UL) /*!< EITCNT1 (Bitfield-Mask: 0x0f) */ + #define R_GPT7_GTEITC_EIVTC2_Pos (16UL) /*!< EIVTC2 (Bit 16) */ + #define R_GPT7_GTEITC_EIVTC2_Msk (0x30000UL) /*!< EIVTC2 (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTEITC_EIVTT2_Pos (20UL) /*!< EIVTT2 (Bit 20) */ + #define R_GPT7_GTEITC_EIVTT2_Msk (0xf00000UL) /*!< EIVTT2 (Bitfield-Mask: 0x0f) */ + #define R_GPT7_GTEITC_EITCNT2IV_Pos (24UL) /*!< EITCNT2IV (Bit 24) */ + #define R_GPT7_GTEITC_EITCNT2IV_Msk (0xf000000UL) /*!< EITCNT2IV (Bitfield-Mask: 0x0f) */ + #define R_GPT7_GTEITC_EITCNT2_Pos (28UL) /*!< EITCNT2 (Bit 28) */ + #define R_GPT7_GTEITC_EITCNT2_Msk (0xf0000000UL) /*!< EITCNT2 (Bitfield-Mask: 0x0f) */ +/* ======================================================= GTEITLI1 ======================================================== */ + #define R_GPT7_GTEITLI1_EITLA_Pos (0UL) /*!< EITLA (Bit 0) */ + #define R_GPT7_GTEITLI1_EITLA_Msk (0x7UL) /*!< EITLA (Bitfield-Mask: 0x07) */ + #define R_GPT7_GTEITLI1_EITLB_Pos (4UL) /*!< EITLB (Bit 4) */ + #define R_GPT7_GTEITLI1_EITLB_Msk (0x70UL) /*!< EITLB (Bitfield-Mask: 0x07) */ + #define R_GPT7_GTEITLI1_EITLC_Pos (8UL) /*!< EITLC (Bit 8) */ + #define R_GPT7_GTEITLI1_EITLC_Msk (0x700UL) /*!< EITLC (Bitfield-Mask: 0x07) */ + #define R_GPT7_GTEITLI1_EITLD_Pos (12UL) /*!< EITLD (Bit 12) */ + #define R_GPT7_GTEITLI1_EITLD_Msk (0x7000UL) /*!< EITLD (Bitfield-Mask: 0x07) */ + #define R_GPT7_GTEITLI1_EITLE_Pos (16UL) /*!< EITLE (Bit 16) */ + #define R_GPT7_GTEITLI1_EITLE_Msk (0x70000UL) /*!< EITLE (Bitfield-Mask: 0x07) */ + #define R_GPT7_GTEITLI1_EITLF_Pos (20UL) /*!< EITLF (Bit 20) */ + #define R_GPT7_GTEITLI1_EITLF_Msk (0x700000UL) /*!< EITLF (Bitfield-Mask: 0x07) */ + #define R_GPT7_GTEITLI1_EITLV_Pos (24UL) /*!< EITLV (Bit 24) */ + #define R_GPT7_GTEITLI1_EITLV_Msk (0x7000000UL) /*!< EITLV (Bitfield-Mask: 0x07) */ + #define R_GPT7_GTEITLI1_EITLU_Pos (28UL) /*!< EITLU (Bit 28) */ + #define R_GPT7_GTEITLI1_EITLU_Msk (0x70000000UL) /*!< EITLU (Bitfield-Mask: 0x07) */ +/* ======================================================= GTEITLI2 ======================================================== */ + #define R_GPT7_GTEITLI2_EADTAL_Pos (0UL) /*!< EADTAL (Bit 0) */ + #define R_GPT7_GTEITLI2_EADTAL_Msk (0x7UL) /*!< EADTAL (Bitfield-Mask: 0x07) */ + #define R_GPT7_GTEITLI2_EADTBL_Pos (4UL) /*!< EADTBL (Bit 4) */ + #define R_GPT7_GTEITLI2_EADTBL_Msk (0x70UL) /*!< EADTBL (Bitfield-Mask: 0x07) */ +/* ======================================================== GTEITLB ======================================================== */ + #define R_GPT7_GTEITLB_EBTLCA_Pos (0UL) /*!< EBTLCA (Bit 0) */ + #define R_GPT7_GTEITLB_EBTLCA_Msk (0x7UL) /*!< EBTLCA (Bitfield-Mask: 0x07) */ + #define R_GPT7_GTEITLB_EBTLCB_Pos (4UL) /*!< EBTLCB (Bit 4) */ + #define R_GPT7_GTEITLB_EBTLCB_Msk (0x70UL) /*!< EBTLCB (Bitfield-Mask: 0x07) */ + #define R_GPT7_GTEITLB_EBTLPR_Pos (8UL) /*!< EBTLPR (Bit 8) */ + #define R_GPT7_GTEITLB_EBTLPR_Msk (0x700UL) /*!< EBTLPR (Bitfield-Mask: 0x07) */ + #define R_GPT7_GTEITLB_EBTLADA_Pos (16UL) /*!< EBTLADA (Bit 16) */ + #define R_GPT7_GTEITLB_EBTLADA_Msk (0x70000UL) /*!< EBTLADA (Bitfield-Mask: 0x07) */ + #define R_GPT7_GTEITLB_EBTLADB_Pos (20UL) /*!< EBTLADB (Bit 20) */ + #define R_GPT7_GTEITLB_EBTLADB_Msk (0x700000UL) /*!< EBTLADB (Bitfield-Mask: 0x07) */ + #define R_GPT7_GTEITLB_EBTLDVU_Pos (24UL) /*!< EBTLDVU (Bit 24) */ + #define R_GPT7_GTEITLB_EBTLDVU_Msk (0x7000000UL) /*!< EBTLDVU (Bitfield-Mask: 0x07) */ + #define R_GPT7_GTEITLB_EBTLDVD_Pos (28UL) /*!< EBTLDVD (Bit 28) */ + #define R_GPT7_GTEITLB_EBTLDVD_Msk (0x70000000UL) /*!< EBTLDVD (Bitfield-Mask: 0x07) */ +/* ======================================================== GTSECSR ======================================================== */ + #define R_GPT7_GTSECSR_SECSEL0_Pos (0UL) /*!< SECSEL0 (Bit 0) */ + #define R_GPT7_GTSECSR_SECSEL0_Msk (0x1UL) /*!< SECSEL0 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSECSR_SECSEL1_Pos (1UL) /*!< SECSEL1 (Bit 1) */ + #define R_GPT7_GTSECSR_SECSEL1_Msk (0x2UL) /*!< SECSEL1 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSECSR_SECSEL2_Pos (2UL) /*!< SECSEL2 (Bit 2) */ + #define R_GPT7_GTSECSR_SECSEL2_Msk (0x4UL) /*!< SECSEL2 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSECSR_SECSEL3_Pos (3UL) /*!< SECSEL3 (Bit 3) */ + #define R_GPT7_GTSECSR_SECSEL3_Msk (0x8UL) /*!< SECSEL3 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSECSR_SECSEL4_Pos (4UL) /*!< SECSEL4 (Bit 4) */ + #define R_GPT7_GTSECSR_SECSEL4_Msk (0x10UL) /*!< SECSEL4 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSECSR_SECSEL5_Pos (5UL) /*!< SECSEL5 (Bit 5) */ + #define R_GPT7_GTSECSR_SECSEL5_Msk (0x20UL) /*!< SECSEL5 (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSECSR_SECSEL6_Pos (6UL) /*!< SECSEL6 (Bit 6) */ + #define R_GPT7_GTSECSR_SECSEL6_Msk (0x40UL) /*!< SECSEL6 (Bitfield-Mask: 0x01) */ +/* ======================================================== GTSECR ========================================================= */ + #define R_GPT7_GTSECR_SBDCE_Pos (0UL) /*!< SBDCE (Bit 0) */ + #define R_GPT7_GTSECR_SBDCE_Msk (0x1UL) /*!< SBDCE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSECR_SBDPE_Pos (1UL) /*!< SBDPE (Bit 1) */ + #define R_GPT7_GTSECR_SBDPE_Msk (0x2UL) /*!< SBDPE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSECR_SBDAE_Pos (2UL) /*!< SBDAE (Bit 2) */ + #define R_GPT7_GTSECR_SBDAE_Msk (0x4UL) /*!< SBDAE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSECR_SBDDE_Pos (3UL) /*!< SBDDE (Bit 3) */ + #define R_GPT7_GTSECR_SBDDE_Msk (0x8UL) /*!< SBDDE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSECR_SBDCD_Pos (8UL) /*!< SBDCD (Bit 8) */ + #define R_GPT7_GTSECR_SBDCD_Msk (0x100UL) /*!< SBDCD (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSECR_SBDPD_Pos (9UL) /*!< SBDPD (Bit 9) */ + #define R_GPT7_GTSECR_SBDPD_Msk (0x200UL) /*!< SBDPD (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSECR_SBDAD_Pos (10UL) /*!< SBDAD (Bit 10) */ + #define R_GPT7_GTSECR_SBDAD_Msk (0x400UL) /*!< SBDAD (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSECR_SBDDD_Pos (11UL) /*!< SBDDD (Bit 11) */ + #define R_GPT7_GTSECR_SBDDD_Msk (0x800UL) /*!< SBDDD (Bitfield-Mask: 0x01) */ +/* ======================================================== GTSWSR ========================================================= */ + #define R_GPT7_GTSWSR_WSGTRGA_Pos (0UL) /*!< WSGTRGA (Bit 0) */ + #define R_GPT7_GTSWSR_WSGTRGA_Msk (0x3UL) /*!< WSGTRGA (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTSWSR_WSGTRGB_Pos (2UL) /*!< WSGTRGB (Bit 2) */ + #define R_GPT7_GTSWSR_WSGTRGB_Msk (0xcUL) /*!< WSGTRGB (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTSWSR_WSGTRGC_Pos (4UL) /*!< WSGTRGC (Bit 4) */ + #define R_GPT7_GTSWSR_WSGTRGC_Msk (0x30UL) /*!< WSGTRGC (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTSWSR_WSGTRGD_Pos (6UL) /*!< WSGTRGD (Bit 6) */ + #define R_GPT7_GTSWSR_WSGTRGD_Msk (0xc0UL) /*!< WSGTRGD (Bitfield-Mask: 0x03) */ + #define R_GPT7_GTSWSR_WSELCA_Pos (16UL) /*!< WSELCA (Bit 16) */ + #define R_GPT7_GTSWSR_WSELCA_Msk (0x10000UL) /*!< WSELCA (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSWSR_WSELCB_Pos (17UL) /*!< WSELCB (Bit 17) */ + #define R_GPT7_GTSWSR_WSELCB_Msk (0x20000UL) /*!< WSELCB (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSWSR_WSELCC_Pos (18UL) /*!< WSELCC (Bit 18) */ + #define R_GPT7_GTSWSR_WSELCC_Msk (0x40000UL) /*!< WSELCC (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSWSR_WSELCD_Pos (19UL) /*!< WSELCD (Bit 19) */ + #define R_GPT7_GTSWSR_WSELCD_Msk (0x80000UL) /*!< WSELCD (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSWSR_WSELCE_Pos (20UL) /*!< WSELCE (Bit 20) */ + #define R_GPT7_GTSWSR_WSELCE_Msk (0x100000UL) /*!< WSELCE (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSWSR_WSELCF_Pos (21UL) /*!< WSELCF (Bit 21) */ + #define R_GPT7_GTSWSR_WSELCF_Msk (0x200000UL) /*!< WSELCF (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSWSR_WSELCG_Pos (22UL) /*!< WSELCG (Bit 22) */ + #define R_GPT7_GTSWSR_WSELCG_Msk (0x400000UL) /*!< WSELCG (Bitfield-Mask: 0x01) */ + #define R_GPT7_GTSWSR_CSELCH_Pos (23UL) /*!< CSELCH (Bit 23) */ + #define R_GPT7_GTSWSR_CSELCH_Msk (0x800000UL) /*!< CSELCH (Bitfield-Mask: 0x01) */ +/* ======================================================== GTSWOS ========================================================= */ + +/* =========================================================================================================================== */ +/* ================ R_SCI0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== RDR ========================================================== */ + #define R_SCI0_RDR_RDAT_Pos (0UL) /*!< RDAT (Bit 0) */ + #define R_SCI0_RDR_RDAT_Msk (0x1ffUL) /*!< RDAT (Bitfield-Mask: 0x1ff) */ + #define R_SCI0_RDR_MPB_Pos (9UL) /*!< MPB (Bit 9) */ + #define R_SCI0_RDR_MPB_Msk (0x200UL) /*!< MPB (Bitfield-Mask: 0x01) */ + #define R_SCI0_RDR_DR_Pos (10UL) /*!< DR (Bit 10) */ + #define R_SCI0_RDR_DR_Msk (0x400UL) /*!< DR (Bitfield-Mask: 0x01) */ + #define R_SCI0_RDR_FPER_Pos (11UL) /*!< FPER (Bit 11) */ + #define R_SCI0_RDR_FPER_Msk (0x800UL) /*!< FPER (Bitfield-Mask: 0x01) */ + #define R_SCI0_RDR_FFER_Pos (12UL) /*!< FFER (Bit 12) */ + #define R_SCI0_RDR_FFER_Msk (0x1000UL) /*!< FFER (Bitfield-Mask: 0x01) */ + #define R_SCI0_RDR_ORER_Pos (24UL) /*!< ORER (Bit 24) */ + #define R_SCI0_RDR_ORER_Msk (0x1000000UL) /*!< ORER (Bitfield-Mask: 0x01) */ + #define R_SCI0_RDR_PER_Pos (27UL) /*!< PER (Bit 27) */ + #define R_SCI0_RDR_PER_Msk (0x8000000UL) /*!< PER (Bitfield-Mask: 0x01) */ + #define R_SCI0_RDR_FER_Pos (28UL) /*!< FER (Bit 28) */ + #define R_SCI0_RDR_FER_Msk (0x10000000UL) /*!< FER (Bitfield-Mask: 0x01) */ +/* ========================================================== TDR ========================================================== */ + #define R_SCI0_TDR_TDAT_Pos (0UL) /*!< TDAT (Bit 0) */ + #define R_SCI0_TDR_TDAT_Msk (0x1ffUL) /*!< TDAT (Bitfield-Mask: 0x1ff) */ + #define R_SCI0_TDR_MPBT_Pos (9UL) /*!< MPBT (Bit 9) */ + #define R_SCI0_TDR_MPBT_Msk (0x200UL) /*!< MPBT (Bitfield-Mask: 0x01) */ +/* ========================================================= CCR0 ========================================================== */ + #define R_SCI0_CCR0_RE_Pos (0UL) /*!< RE (Bit 0) */ + #define R_SCI0_CCR0_RE_Msk (0x1UL) /*!< RE (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR0_TE_Pos (4UL) /*!< TE (Bit 4) */ + #define R_SCI0_CCR0_TE_Msk (0x10UL) /*!< TE (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR0_MPIE_Pos (8UL) /*!< MPIE (Bit 8) */ + #define R_SCI0_CCR0_MPIE_Msk (0x100UL) /*!< MPIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR0_DCME_Pos (9UL) /*!< DCME (Bit 9) */ + #define R_SCI0_CCR0_DCME_Msk (0x200UL) /*!< DCME (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR0_IDSEL_Pos (10UL) /*!< IDSEL (Bit 10) */ + #define R_SCI0_CCR0_IDSEL_Msk (0x400UL) /*!< IDSEL (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR0_RIE_Pos (16UL) /*!< RIE (Bit 16) */ + #define R_SCI0_CCR0_RIE_Msk (0x10000UL) /*!< RIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR0_TIE_Pos (20UL) /*!< TIE (Bit 20) */ + #define R_SCI0_CCR0_TIE_Msk (0x100000UL) /*!< TIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR0_TEIE_Pos (21UL) /*!< TEIE (Bit 21) */ + #define R_SCI0_CCR0_TEIE_Msk (0x200000UL) /*!< TEIE (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR0_SSE_Pos (24UL) /*!< SSE (Bit 24) */ + #define R_SCI0_CCR0_SSE_Msk (0x1000000UL) /*!< SSE (Bitfield-Mask: 0x01) */ +/* ========================================================= CCR1 ========================================================== */ + #define R_SCI0_CCR1_CTSE_Pos (0UL) /*!< CTSE (Bit 0) */ + #define R_SCI0_CCR1_CTSE_Msk (0x1UL) /*!< CTSE (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR1_CTSPEN_Pos (1UL) /*!< CTSPEN (Bit 1) */ + #define R_SCI0_CCR1_CTSPEN_Msk (0x2UL) /*!< CTSPEN (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR1_SPB2DT_Pos (4UL) /*!< SPB2DT (Bit 4) */ + #define R_SCI0_CCR1_SPB2DT_Msk (0x10UL) /*!< SPB2DT (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR1_SPB2IO_Pos (5UL) /*!< SPB2IO (Bit 5) */ + #define R_SCI0_CCR1_SPB2IO_Msk (0x20UL) /*!< SPB2IO (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR1_PE_Pos (8UL) /*!< PE (Bit 8) */ + #define R_SCI0_CCR1_PE_Msk (0x100UL) /*!< PE (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR1_PM_Pos (9UL) /*!< PM (Bit 9) */ + #define R_SCI0_CCR1_PM_Msk (0x200UL) /*!< PM (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR1_TINV_Pos (12UL) /*!< TINV (Bit 12) */ + #define R_SCI0_CCR1_TINV_Msk (0x1000UL) /*!< TINV (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR1_RINV_Pos (13UL) /*!< RINV (Bit 13) */ + #define R_SCI0_CCR1_RINV_Msk (0x2000UL) /*!< RINV (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR1_SPLP_Pos (16UL) /*!< SPLP (Bit 16) */ + #define R_SCI0_CCR1_SPLP_Msk (0x10000UL) /*!< SPLP (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR1_SHARPS_Pos (20UL) /*!< SHARPS (Bit 20) */ + #define R_SCI0_CCR1_SHARPS_Msk (0x100000UL) /*!< SHARPS (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR1_NFCS_Pos (24UL) /*!< NFCS (Bit 24) */ + #define R_SCI0_CCR1_NFCS_Msk (0x7000000UL) /*!< NFCS (Bitfield-Mask: 0x07) */ + #define R_SCI0_CCR1_NFEN_Pos (28UL) /*!< NFEN (Bit 28) */ + #define R_SCI0_CCR1_NFEN_Msk (0x10000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ +/* ========================================================= CCR2 ========================================================== */ + #define R_SCI0_CCR2_BCP_Pos (0UL) /*!< BCP (Bit 0) */ + #define R_SCI0_CCR2_BCP_Msk (0x7UL) /*!< BCP (Bitfield-Mask: 0x07) */ + #define R_SCI0_CCR2_BGDM_Pos (4UL) /*!< BGDM (Bit 4) */ + #define R_SCI0_CCR2_BGDM_Msk (0x10UL) /*!< BGDM (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR2_ABCS_Pos (5UL) /*!< ABCS (Bit 5) */ + #define R_SCI0_CCR2_ABCS_Msk (0x20UL) /*!< ABCS (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR2_ABCSE_Pos (6UL) /*!< ABCSE (Bit 6) */ + #define R_SCI0_CCR2_ABCSE_Msk (0x40UL) /*!< ABCSE (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR2_BRR_Pos (8UL) /*!< BRR (Bit 8) */ + #define R_SCI0_CCR2_BRR_Msk (0xff00UL) /*!< BRR (Bitfield-Mask: 0xff) */ + #define R_SCI0_CCR2_BRME_Pos (16UL) /*!< BRME (Bit 16) */ + #define R_SCI0_CCR2_BRME_Msk (0x10000UL) /*!< BRME (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR2_CKS_Pos (20UL) /*!< CKS (Bit 20) */ + #define R_SCI0_CCR2_CKS_Msk (0x300000UL) /*!< CKS (Bitfield-Mask: 0x03) */ + #define R_SCI0_CCR2_MDDR_Pos (24UL) /*!< MDDR (Bit 24) */ + #define R_SCI0_CCR2_MDDR_Msk (0xff000000UL) /*!< MDDR (Bitfield-Mask: 0xff) */ +/* ========================================================= CCR3 ========================================================== */ + #define R_SCI0_CCR3_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SCI0_CCR3_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR3_CPOL_Pos (1UL) /*!< CPOL (Bit 1) */ + #define R_SCI0_CCR3_CPOL_Msk (0x2UL) /*!< CPOL (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR3_BPEN_Pos (7UL) /*!< BPEN (Bit 7) */ + #define R_SCI0_CCR3_BPEN_Msk (0x80UL) /*!< BPEN (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR3_CHR_Pos (8UL) /*!< CHR (Bit 8) */ + #define R_SCI0_CCR3_CHR_Msk (0x300UL) /*!< CHR (Bitfield-Mask: 0x03) */ + #define R_SCI0_CCR3_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SCI0_CCR3_LSBF_Msk (0x1000UL) /*!< LSBF (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR3_SINV_Pos (13UL) /*!< SINV (Bit 13) */ + #define R_SCI0_CCR3_SINV_Msk (0x2000UL) /*!< SINV (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR3_STP_Pos (14UL) /*!< STP (Bit 14) */ + #define R_SCI0_CCR3_STP_Msk (0x4000UL) /*!< STP (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR3_RXDESEL_Pos (15UL) /*!< RXDESEL (Bit 15) */ + #define R_SCI0_CCR3_RXDESEL_Msk (0x8000UL) /*!< RXDESEL (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR3_MOD_Pos (16UL) /*!< MOD (Bit 16) */ + #define R_SCI0_CCR3_MOD_Msk (0x70000UL) /*!< MOD (Bitfield-Mask: 0x07) */ + #define R_SCI0_CCR3_MP_Pos (19UL) /*!< MP (Bit 19) */ + #define R_SCI0_CCR3_MP_Msk (0x80000UL) /*!< MP (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR3_FM_Pos (20UL) /*!< FM (Bit 20) */ + #define R_SCI0_CCR3_FM_Msk (0x100000UL) /*!< FM (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR3_DEN_Pos (21UL) /*!< DEN (Bit 21) */ + #define R_SCI0_CCR3_DEN_Msk (0x200000UL) /*!< DEN (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR3_CKE_Pos (24UL) /*!< CKE (Bit 24) */ + #define R_SCI0_CCR3_CKE_Msk (0x3000000UL) /*!< CKE (Bitfield-Mask: 0x03) */ + #define R_SCI0_CCR3_GM_Pos (28UL) /*!< GM (Bit 28) */ + #define R_SCI0_CCR3_GM_Msk (0x10000000UL) /*!< GM (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR3_BLK_Pos (29UL) /*!< BLK (Bit 29) */ + #define R_SCI0_CCR3_BLK_Msk (0x20000000UL) /*!< BLK (Bitfield-Mask: 0x01) */ +/* ========================================================= CCR4 ========================================================== */ + #define R_SCI0_CCR4_CMPD_Pos (0UL) /*!< CMPD (Bit 0) */ + #define R_SCI0_CCR4_CMPD_Msk (0x1ffUL) /*!< CMPD (Bitfield-Mask: 0x1ff) */ + #define R_SCI0_CCR4_ASEN_Pos (16UL) /*!< ASEN (Bit 16) */ + #define R_SCI0_CCR4_ASEN_Msk (0x10000UL) /*!< ASEN (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR4_ATEN_Pos (17UL) /*!< ATEN (Bit 17) */ + #define R_SCI0_CCR4_ATEN_Msk (0x20000UL) /*!< ATEN (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR4_AST_Pos (24UL) /*!< AST (Bit 24) */ + #define R_SCI0_CCR4_AST_Msk (0x7000000UL) /*!< AST (Bitfield-Mask: 0x07) */ + #define R_SCI0_CCR4_AJD_Pos (27UL) /*!< AJD (Bit 27) */ + #define R_SCI0_CCR4_AJD_Msk (0x8000000UL) /*!< AJD (Bitfield-Mask: 0x01) */ + #define R_SCI0_CCR4_ATT_Pos (28UL) /*!< ATT (Bit 28) */ + #define R_SCI0_CCR4_ATT_Msk (0x70000000UL) /*!< ATT (Bitfield-Mask: 0x07) */ + #define R_SCI0_CCR4_AET_Pos (31UL) /*!< AET (Bit 31) */ + #define R_SCI0_CCR4_AET_Msk (0x80000000UL) /*!< AET (Bitfield-Mask: 0x01) */ +/* ========================================================== ICR ========================================================== */ + #define R_SCI0_ICR_IICDL_Pos (0UL) /*!< IICDL (Bit 0) */ + #define R_SCI0_ICR_IICDL_Msk (0x1fUL) /*!< IICDL (Bitfield-Mask: 0x1f) */ + #define R_SCI0_ICR_IICINTM_Pos (8UL) /*!< IICINTM (Bit 8) */ + #define R_SCI0_ICR_IICINTM_Msk (0x100UL) /*!< IICINTM (Bitfield-Mask: 0x01) */ + #define R_SCI0_ICR_IICCSC_Pos (9UL) /*!< IICCSC (Bit 9) */ + #define R_SCI0_ICR_IICCSC_Msk (0x200UL) /*!< IICCSC (Bitfield-Mask: 0x01) */ + #define R_SCI0_ICR_IICACKT_Pos (13UL) /*!< IICACKT (Bit 13) */ + #define R_SCI0_ICR_IICACKT_Msk (0x2000UL) /*!< IICACKT (Bitfield-Mask: 0x01) */ + #define R_SCI0_ICR_IICSTAREQ_Pos (16UL) /*!< IICSTAREQ (Bit 16) */ + #define R_SCI0_ICR_IICSTAREQ_Msk (0x10000UL) /*!< IICSTAREQ (Bitfield-Mask: 0x01) */ + #define R_SCI0_ICR_IICRSTAREQ_Pos (17UL) /*!< IICRSTAREQ (Bit 17) */ + #define R_SCI0_ICR_IICRSTAREQ_Msk (0x20000UL) /*!< IICRSTAREQ (Bitfield-Mask: 0x01) */ + #define R_SCI0_ICR_IICSTPREQ_Pos (18UL) /*!< IICSTPREQ (Bit 18) */ + #define R_SCI0_ICR_IICSTPREQ_Msk (0x40000UL) /*!< IICSTPREQ (Bitfield-Mask: 0x01) */ + #define R_SCI0_ICR_IICSDAS_Pos (20UL) /*!< IICSDAS (Bit 20) */ + #define R_SCI0_ICR_IICSDAS_Msk (0x300000UL) /*!< IICSDAS (Bitfield-Mask: 0x03) */ + #define R_SCI0_ICR_IICSCLS_Pos (22UL) /*!< IICSCLS (Bit 22) */ + #define R_SCI0_ICR_IICSCLS_Msk (0xc00000UL) /*!< IICSCLS (Bitfield-Mask: 0x03) */ +/* ========================================================== FCR ========================================================== */ + #define R_SCI0_FCR_DRES_Pos (0UL) /*!< DRES (Bit 0) */ + #define R_SCI0_FCR_DRES_Msk (0x1UL) /*!< DRES (Bitfield-Mask: 0x01) */ + #define R_SCI0_FCR_TTRG_Pos (8UL) /*!< TTRG (Bit 8) */ + #define R_SCI0_FCR_TTRG_Msk (0x1f00UL) /*!< TTRG (Bitfield-Mask: 0x1f) */ + #define R_SCI0_FCR_TFRST_Pos (15UL) /*!< TFRST (Bit 15) */ + #define R_SCI0_FCR_TFRST_Msk (0x8000UL) /*!< TFRST (Bitfield-Mask: 0x01) */ + #define R_SCI0_FCR_RTRG_Pos (16UL) /*!< RTRG (Bit 16) */ + #define R_SCI0_FCR_RTRG_Msk (0x1f0000UL) /*!< RTRG (Bitfield-Mask: 0x1f) */ + #define R_SCI0_FCR_RFRST_Pos (23UL) /*!< RFRST (Bit 23) */ + #define R_SCI0_FCR_RFRST_Msk (0x800000UL) /*!< RFRST (Bitfield-Mask: 0x01) */ + #define R_SCI0_FCR_RSTRG_Pos (24UL) /*!< RSTRG (Bit 24) */ + #define R_SCI0_FCR_RSTRG_Msk (0x1f000000UL) /*!< RSTRG (Bitfield-Mask: 0x1f) */ +/* ========================================================== DCR ========================================================== */ + #define R_SCI0_DCR_DEPOL_Pos (0UL) /*!< DEPOL (Bit 0) */ + #define R_SCI0_DCR_DEPOL_Msk (0x1UL) /*!< DEPOL (Bitfield-Mask: 0x01) */ + #define R_SCI0_DCR_DEAST_Pos (8UL) /*!< DEAST (Bit 8) */ + #define R_SCI0_DCR_DEAST_Msk (0x1f00UL) /*!< DEAST (Bitfield-Mask: 0x1f) */ + #define R_SCI0_DCR_DENGT_Pos (16UL) /*!< DENGT (Bit 16) */ + #define R_SCI0_DCR_DENGT_Msk (0x1f0000UL) /*!< DENGT (Bitfield-Mask: 0x1f) */ +/* ========================================================== CSR ========================================================== */ + #define R_SCI0_CSR_ERS_Pos (4UL) /*!< ERS (Bit 4) */ + #define R_SCI0_CSR_ERS_Msk (0x10UL) /*!< ERS (Bitfield-Mask: 0x01) */ + #define R_SCI0_CSR_RXDMON_Pos (15UL) /*!< RXDMON (Bit 15) */ + #define R_SCI0_CSR_RXDMON_Msk (0x8000UL) /*!< RXDMON (Bitfield-Mask: 0x01) */ + #define R_SCI0_CSR_DCMF_Pos (16UL) /*!< DCMF (Bit 16) */ + #define R_SCI0_CSR_DCMF_Msk (0x10000UL) /*!< DCMF (Bitfield-Mask: 0x01) */ + #define R_SCI0_CSR_DPER_Pos (17UL) /*!< DPER (Bit 17) */ + #define R_SCI0_CSR_DPER_Msk (0x20000UL) /*!< DPER (Bitfield-Mask: 0x01) */ + #define R_SCI0_CSR_DFER_Pos (18UL) /*!< DFER (Bit 18) */ + #define R_SCI0_CSR_DFER_Msk (0x40000UL) /*!< DFER (Bitfield-Mask: 0x01) */ + #define R_SCI0_CSR_ORER_Pos (24UL) /*!< ORER (Bit 24) */ + #define R_SCI0_CSR_ORER_Msk (0x1000000UL) /*!< ORER (Bitfield-Mask: 0x01) */ + #define R_SCI0_CSR_MFF_Pos (26UL) /*!< MFF (Bit 26) */ + #define R_SCI0_CSR_MFF_Msk (0x4000000UL) /*!< MFF (Bitfield-Mask: 0x01) */ + #define R_SCI0_CSR_PER_Pos (27UL) /*!< PER (Bit 27) */ + #define R_SCI0_CSR_PER_Msk (0x8000000UL) /*!< PER (Bitfield-Mask: 0x01) */ + #define R_SCI0_CSR_FER_Pos (28UL) /*!< FER (Bit 28) */ + #define R_SCI0_CSR_FER_Msk (0x10000000UL) /*!< FER (Bitfield-Mask: 0x01) */ + #define R_SCI0_CSR_TDRE_Pos (29UL) /*!< TDRE (Bit 29) */ + #define R_SCI0_CSR_TDRE_Msk (0x20000000UL) /*!< TDRE (Bitfield-Mask: 0x01) */ + #define R_SCI0_CSR_TEND_Pos (30UL) /*!< TEND (Bit 30) */ + #define R_SCI0_CSR_TEND_Msk (0x40000000UL) /*!< TEND (Bitfield-Mask: 0x01) */ + #define R_SCI0_CSR_RDRF_Pos (31UL) /*!< RDRF (Bit 31) */ + #define R_SCI0_CSR_RDRF_Msk (0x80000000UL) /*!< RDRF (Bitfield-Mask: 0x01) */ +/* ========================================================== ISR ========================================================== */ + #define R_SCI0_ISR_IICACKR_Pos (0UL) /*!< IICACKR (Bit 0) */ + #define R_SCI0_ISR_IICACKR_Msk (0x1UL) /*!< IICACKR (Bitfield-Mask: 0x01) */ + #define R_SCI0_ISR_IICSTIF_Pos (3UL) /*!< IICSTIF (Bit 3) */ + #define R_SCI0_ISR_IICSTIF_Msk (0x8UL) /*!< IICSTIF (Bitfield-Mask: 0x01) */ +/* ========================================================= FRSR ========================================================== */ + #define R_SCI0_FRSR_DR_Pos (0UL) /*!< DR (Bit 0) */ + #define R_SCI0_FRSR_DR_Msk (0x1UL) /*!< DR (Bitfield-Mask: 0x01) */ + #define R_SCI0_FRSR_R_Pos (8UL) /*!< R (Bit 8) */ + #define R_SCI0_FRSR_R_Msk (0x3f00UL) /*!< R (Bitfield-Mask: 0x3f) */ + #define R_SCI0_FRSR_PNUM_Pos (16UL) /*!< PNUM (Bit 16) */ + #define R_SCI0_FRSR_PNUM_Msk (0x3f0000UL) /*!< PNUM (Bitfield-Mask: 0x3f) */ + #define R_SCI0_FRSR_FNUM_Pos (24UL) /*!< FNUM (Bit 24) */ + #define R_SCI0_FRSR_FNUM_Msk (0x3f000000UL) /*!< FNUM (Bitfield-Mask: 0x3f) */ +/* ========================================================= FTSR ========================================================== */ + #define R_SCI0_FTSR_T_Pos (0UL) /*!< T (Bit 0) */ + #define R_SCI0_FTSR_T_Msk (0x3fUL) /*!< T (Bitfield-Mask: 0x3f) */ +/* ========================================================= CFCLR ========================================================= */ + #define R_SCI0_CFCLR_ERSC_Pos (4UL) /*!< ERSC (Bit 4) */ + #define R_SCI0_CFCLR_ERSC_Msk (0x10UL) /*!< ERSC (Bitfield-Mask: 0x01) */ + #define R_SCI0_CFCLR_DCMFC_Pos (16UL) /*!< DCMFC (Bit 16) */ + #define R_SCI0_CFCLR_DCMFC_Msk (0x10000UL) /*!< DCMFC (Bitfield-Mask: 0x01) */ + #define R_SCI0_CFCLR_DPERC_Pos (17UL) /*!< DPERC (Bit 17) */ + #define R_SCI0_CFCLR_DPERC_Msk (0x20000UL) /*!< DPERC (Bitfield-Mask: 0x01) */ + #define R_SCI0_CFCLR_DFERC_Pos (18UL) /*!< DFERC (Bit 18) */ + #define R_SCI0_CFCLR_DFERC_Msk (0x40000UL) /*!< DFERC (Bitfield-Mask: 0x01) */ + #define R_SCI0_CFCLR_ORERC_Pos (24UL) /*!< ORERC (Bit 24) */ + #define R_SCI0_CFCLR_ORERC_Msk (0x1000000UL) /*!< ORERC (Bitfield-Mask: 0x01) */ + #define R_SCI0_CFCLR_MFFC_Pos (26UL) /*!< MFFC (Bit 26) */ + #define R_SCI0_CFCLR_MFFC_Msk (0x4000000UL) /*!< MFFC (Bitfield-Mask: 0x01) */ + #define R_SCI0_CFCLR_PERC_Pos (27UL) /*!< PERC (Bit 27) */ + #define R_SCI0_CFCLR_PERC_Msk (0x8000000UL) /*!< PERC (Bitfield-Mask: 0x01) */ + #define R_SCI0_CFCLR_FERC_Pos (28UL) /*!< FERC (Bit 28) */ + #define R_SCI0_CFCLR_FERC_Msk (0x10000000UL) /*!< FERC (Bitfield-Mask: 0x01) */ + #define R_SCI0_CFCLR_TDREC_Pos (29UL) /*!< TDREC (Bit 29) */ + #define R_SCI0_CFCLR_TDREC_Msk (0x20000000UL) /*!< TDREC (Bitfield-Mask: 0x01) */ + #define R_SCI0_CFCLR_RDRFC_Pos (31UL) /*!< RDRFC (Bit 31) */ + #define R_SCI0_CFCLR_RDRFC_Msk (0x80000000UL) /*!< RDRFC (Bitfield-Mask: 0x01) */ +/* ======================================================== ICFCLR ========================================================= */ + #define R_SCI0_ICFCLR_IICSTIFC_Pos (3UL) /*!< IICSTIFC (Bit 3) */ + #define R_SCI0_ICFCLR_IICSTIFC_Msk (0x8UL) /*!< IICSTIFC (Bitfield-Mask: 0x01) */ +/* ========================================================= FFCLR ========================================================= */ + #define R_SCI0_FFCLR_DRC_Pos (0UL) /*!< DRC (Bit 0) */ + #define R_SCI0_FFCLR_DRC_Msk (0x1UL) /*!< DRC (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_SPI0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= SPDR ========================================================== */ + #define R_SPI0_SPDR_SPD_Pos (0UL) /*!< SPD (Bit 0) */ + #define R_SPI0_SPDR_SPD_Msk (0xffffffffUL) /*!< SPD (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== SPDR_HA ======================================================== */ +/* ======================================================== SPDR_BY ======================================================== */ +/* ========================================================= 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) */ +/* ========================================================= MRCKD ========================================================= */ + #define R_SPI0_MRCKD_ARST_Pos (0UL) /*!< ARST (Bit 0) */ + #define R_SPI0_MRCKD_ARST_Msk (0x7UL) /*!< ARST (Bitfield-Mask: 0x07) */ +/* ========================================================= SPCR ========================================================== */ + #define R_SPI0_SPCR_SPE_Pos (0UL) /*!< SPE (Bit 0) */ + #define R_SPI0_SPCR_SPE_Msk (0x1UL) /*!< SPE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SPSCKSEL_Pos (7UL) /*!< SPSCKSEL (Bit 7) */ + #define R_SPI0_SPCR_SPSCKSEL_Msk (0x80UL) /*!< SPSCKSEL (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SPPE_Pos (8UL) /*!< SPPE (Bit 8) */ + #define R_SPI0_SPCR_SPPE_Msk (0x100UL) /*!< SPPE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SPOE_Pos (9UL) /*!< SPOE (Bit 9) */ + #define R_SPI0_SPCR_SPOE_Msk (0x200UL) /*!< SPOE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_PTE_Pos (11UL) /*!< PTE (Bit 11) */ + #define R_SPI0_SPCR_PTE_Msk (0x800UL) /*!< PTE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SCKASE_Pos (12UL) /*!< SCKASE (Bit 12) */ + #define R_SPI0_SPCR_SCKASE_Msk (0x1000UL) /*!< SCKASE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_BFDS_Pos (13UL) /*!< BFDS (Bit 13) */ + #define R_SPI0_SPCR_BFDS_Msk (0x2000UL) /*!< BFDS (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_MODFEN_Pos (14UL) /*!< MODFEN (Bit 14) */ + #define R_SPI0_SPCR_MODFEN_Msk (0x4000UL) /*!< MODFEN (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SPEIE_Pos (16UL) /*!< SPEIE (Bit 16) */ + #define R_SPI0_SPCR_SPEIE_Msk (0x10000UL) /*!< SPEIE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SPRIE_Pos (17UL) /*!< SPRIE (Bit 17) */ + #define R_SPI0_SPCR_SPRIE_Msk (0x20000UL) /*!< SPRIE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SPIIE_Pos (18UL) /*!< SPIIE (Bit 18) */ + #define R_SPI0_SPCR_SPIIE_Msk (0x40000UL) /*!< SPIIE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SPDRES_Pos (19UL) /*!< SPDRES (Bit 19) */ + #define R_SPI0_SPCR_SPDRES_Msk (0x80000UL) /*!< SPDRES (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SPTIE_Pos (20UL) /*!< SPTIE (Bit 20) */ + #define R_SPI0_SPCR_SPTIE_Msk (0x100000UL) /*!< SPTIE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_CENDIE_Pos (21UL) /*!< CENDIE (Bit 21) */ + #define R_SPI0_SPCR_CENDIE_Msk (0x200000UL) /*!< CENDIE (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SPMS_Pos (24UL) /*!< SPMS (Bit 24) */ + #define R_SPI0_SPCR_SPMS_Msk (0x1000000UL) /*!< SPMS (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_SPFRF_Pos (25UL) /*!< SPFRF (Bit 25) */ + #define R_SPI0_SPCR_SPFRF_Msk (0x2000000UL) /*!< SPFRF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_TXMD_Pos (28UL) /*!< TXMD (Bit 28) */ + #define R_SPI0_SPCR_TXMD_Msk (0x30000000UL) /*!< TXMD (Bitfield-Mask: 0x03) */ + #define R_SPI0_SPCR_MSTR_Pos (30UL) /*!< MSTR (Bit 30) */ + #define R_SPI0_SPCR_MSTR_Msk (0x40000000UL) /*!< MSTR (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCR_BPEN_Pos (31UL) /*!< BPEN (Bit 31) */ + #define R_SPI0_SPCR_BPEN_Msk (0x80000000UL) /*!< BPEN (Bitfield-Mask: 0x01) */ +/* ======================================================== SPCRRM ========================================================= */ + #define R_SPI0_SPCRRM_RMFM_Pos (0UL) /*!< RMFM (Bit 0) */ + #define R_SPI0_SPCRRM_RMFM_Msk (0x1fUL) /*!< RMFM (Bitfield-Mask: 0x1f) */ + #define R_SPI0_SPCRRM_RMEDTG_Pos (6UL) /*!< RMEDTG (Bit 6) */ + #define R_SPI0_SPCRRM_RMEDTG_Msk (0x40UL) /*!< RMEDTG (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPCRRM_RMSTTG_Pos (7UL) /*!< RMSTTG (Bit 7) */ + #define R_SPI0_SPCRRM_RMSTTG_Msk (0x80UL) /*!< RMSTTG (Bitfield-Mask: 0x01) */ +/* ======================================================== SPDRCR ========================================================= */ + #define R_SPI0_SPDRCR_SPDRC_Pos (0UL) /*!< SPDRC (Bit 0) */ + #define R_SPI0_SPDRCR_SPDRC_Msk (0xffUL) /*!< SPDRC (Bitfield-Mask: 0xff) */ +/* ========================================================= SPPCR ========================================================= */ + #define R_SPI0_SPPCR_SPLP_Pos (0UL) /*!< SPLP (Bit 0) */ + #define R_SPI0_SPPCR_SPLP_Msk (0x1UL) /*!< SPLP (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_SPOM_Pos (2UL) /*!< SPOM (Bit 2) */ + #define R_SPI0_SPPCR_SPOM_Msk (0x4UL) /*!< SPOM (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_MOIFE_Pos (5UL) /*!< MOIFE (Bit 5) */ + #define R_SPI0_SPPCR_MOIFE_Msk (0x20UL) /*!< MOIFE (Bitfield-Mask: 0x01) */ +/* ========================================================= SPCR2 ========================================================= */ + #define R_SPI0_SPCR2_SPSCKDL_Pos (0UL) /*!< SPSCKDL (Bit 0) */ + #define R_SPI0_SPCR2_SPSCKDL_Msk (0x7UL) /*!< SPSCKDL (Bitfield-Mask: 0x07) */ +/* ========================================================= SSLP ========================================================== */ + #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_SSL1P_Pos (1UL) /*!< SSL1P (Bit 1) */ + #define R_SPI0_SSLP_SSL1P_Msk (0x2UL) /*!< SSL1P (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_SSL3P_Pos (3UL) /*!< SSL3P (Bit 3) */ + #define R_SPI0_SSLP_SSL3P_Msk (0x8UL) /*!< SSL3P (Bitfield-Mask: 0x01) */ +/* ========================================================= SPBR ========================================================== */ + #define R_SPI0_SPBR_SPR_Pos (0UL) /*!< SPR (Bit 0) */ + #define R_SPI0_SPBR_SPR_Msk (0xffUL) /*!< SPR (Bitfield-Mask: 0xff) */ +/* ========================================================= SPSCR ========================================================= */ + #define R_SPI0_SPSCR_SPSLN_Pos (0UL) /*!< SPSLN (Bit 0) */ + #define R_SPI0_SPSCR_SPSLN_Msk (0x7UL) /*!< SPSLN (Bitfield-Mask: 0x07) */ +/* ========================================================= SPCMD ========================================================= */ + #define R_SPI0_SPCMD_CPHA_Pos (0UL) /*!< CPHA (Bit 0) */ + #define R_SPI0_SPCMD_CPHA_Msk (0x1UL) /*!< CPHA (Bitfield-Mask: 0x01) */ + #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_BRDV_Pos (2UL) /*!< BRDV (Bit 2) */ + #define R_SPI0_SPCMD_BRDV_Msk (0xcUL) /*!< BRDV (Bitfield-Mask: 0x03) */ + #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_LSBF_Pos (12UL) /*!< LSBF (Bit 12) */ + #define R_SPI0_SPCMD_LSBF_Msk (0x1000UL) /*!< LSBF (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_SLNDEN_Pos (14UL) /*!< SLNDEN (Bit 14) */ + #define R_SPI0_SPCMD_SLNDEN_Msk (0x4000UL) /*!< SLNDEN (Bitfield-Mask: 0x01) */ + #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_SPB_Pos (16UL) /*!< SPB (Bit 16) */ + #define R_SPI0_SPCMD_SPB_Msk (0x1f0000UL) /*!< SPB (Bitfield-Mask: 0x1f) */ + #define R_SPI0_SPCMD_SSLA_Pos (24UL) /*!< SSLA (Bit 24) */ + #define R_SPI0_SPCMD_SSLA_Msk (0x3000000UL) /*!< SSLA (Bitfield-Mask: 0x03) */ +/* ========================================================= SPDCR ========================================================= */ + #define R_SPI0_SPDCR_BYSW_Pos (0UL) /*!< BYSW (Bit 0) */ + #define R_SPI0_SPDCR_BYSW_Msk (0x1UL) /*!< BYSW (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPDCR_SLSEL_Pos (1UL) /*!< SLSEL (Bit 1) */ + #define R_SPI0_SPDCR_SLSEL_Msk (0x6UL) /*!< SLSEL (Bitfield-Mask: 0x03) */ + #define R_SPI0_SPDCR_SPRDTD_Pos (3UL) /*!< SPRDTD (Bit 3) */ + #define R_SPI0_SPDCR_SPRDTD_Msk (0x8UL) /*!< SPRDTD (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPDCR_SINV_Pos (4UL) /*!< SINV (Bit 4) */ + #define R_SPI0_SPDCR_SINV_Msk (0x10UL) /*!< SINV (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPDCR_SPFC_Pos (8UL) /*!< SPFC (Bit 8) */ + #define R_SPI0_SPDCR_SPFC_Msk (0x300UL) /*!< SPFC (Bitfield-Mask: 0x03) */ +/* ======================================================== SPDCR2 ========================================================= */ + #define R_SPI0_SPDCR2_RTRG_Pos (0UL) /*!< RTRG (Bit 0) */ + #define R_SPI0_SPDCR2_RTRG_Msk (0x3UL) /*!< RTRG (Bitfield-Mask: 0x03) */ + #define R_SPI0_SPDCR2_TTRG_Pos (8UL) /*!< TTRG (Bit 8) */ + #define R_SPI0_SPDCR2_TTRG_Msk (0x300UL) /*!< TTRG (Bitfield-Mask: 0x03) */ +/* ========================================================= 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) */ +/* ========================================================= SPSR ========================================================== */ + #define R_SPI0_SPSR_SPDRF_Pos (7UL) /*!< SPDRF (Bit 7) */ + #define R_SPI0_SPSR_SPDRF_Msk (0x80UL) /*!< SPDRF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_OVRF_Pos (8UL) /*!< OVRF (Bit 8) */ + #define R_SPI0_SPSR_OVRF_Msk (0x100UL) /*!< OVRF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_IDLNF_Pos (9UL) /*!< IDLNF (Bit 9) */ + #define R_SPI0_SPSR_IDLNF_Msk (0x200UL) /*!< IDLNF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_MODF_Pos (10UL) /*!< MODF (Bit 10) */ + #define R_SPI0_SPSR_MODF_Msk (0x400UL) /*!< MODF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_PERF_Pos (11UL) /*!< PERF (Bit 11) */ + #define R_SPI0_SPSR_PERF_Msk (0x800UL) /*!< PERF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_UDRF_Pos (12UL) /*!< UDRF (Bit 12) */ + #define R_SPI0_SPSR_UDRF_Msk (0x1000UL) /*!< UDRF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_SPTEF_Pos (13UL) /*!< SPTEF (Bit 13) */ + #define R_SPI0_SPSR_SPTEF_Msk (0x2000UL) /*!< SPTEF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_CENDF_Pos (14UL) /*!< CENDF (Bit 14) */ + #define R_SPI0_SPSR_CENDF_Msk (0x4000UL) /*!< CENDF (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSR_SPRF_Pos (15UL) /*!< SPRF (Bit 15) */ + #define R_SPI0_SPSR_SPRF_Msk (0x8000UL) /*!< SPRF (Bitfield-Mask: 0x01) */ +/* ======================================================== SPTFSR ========================================================= */ + #define R_SPI0_SPTFSR_TFDN_Pos (0UL) /*!< TFDN (Bit 0) */ + #define R_SPI0_SPTFSR_TFDN_Msk (0x7UL) /*!< TFDN (Bitfield-Mask: 0x07) */ +/* ======================================================== SPRFSR ========================================================= */ + #define R_SPI0_SPRFSR_RFDN_Pos (0UL) /*!< RFDN (Bit 0) */ + #define R_SPI0_SPRFSR_RFDN_Msk (0x7UL) /*!< RFDN (Bitfield-Mask: 0x07) */ +/* ========================================================= SPPSR ========================================================= */ + #define R_SPI0_SPPSR_SPEPS_Pos (0UL) /*!< SPEPS (Bit 0) */ + #define R_SPI0_SPPSR_SPEPS_Msk (0x1UL) /*!< SPEPS (Bitfield-Mask: 0x01) */ +/* ========================================================= SPSRC ========================================================= */ + #define R_SPI0_SPSRC_SPDRFC_Pos (7UL) /*!< SPDRFC (Bit 7) */ + #define R_SPI0_SPSRC_SPDRFC_Msk (0x80UL) /*!< SPDRFC (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSRC_OVRFC_Pos (8UL) /*!< OVRFC (Bit 8) */ + #define R_SPI0_SPSRC_OVRFC_Msk (0x100UL) /*!< OVRFC (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSRC_MODFC_Pos (10UL) /*!< MODFC (Bit 10) */ + #define R_SPI0_SPSRC_MODFC_Msk (0x400UL) /*!< MODFC (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSRC_PERFC_Pos (11UL) /*!< PERFC (Bit 11) */ + #define R_SPI0_SPSRC_PERFC_Msk (0x800UL) /*!< PERFC (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSRC_UDRFC_Pos (12UL) /*!< UDRFC (Bit 12) */ + #define R_SPI0_SPSRC_UDRFC_Msk (0x1000UL) /*!< UDRFC (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSRC_SPTEFC_Pos (13UL) /*!< SPTEFC (Bit 13) */ + #define R_SPI0_SPSRC_SPTEFC_Msk (0x2000UL) /*!< SPTEFC (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSRC_CENDFC_Pos (14UL) /*!< CENDFC (Bit 14) */ + #define R_SPI0_SPSRC_CENDFC_Msk (0x4000UL) /*!< CENDFC (Bitfield-Mask: 0x01) */ + #define R_SPI0_SPSRC_SPRFC_Pos (15UL) /*!< SPRFC (Bit 15) */ + #define R_SPI0_SPSRC_SPRFC_Msk (0x8000UL) /*!< SPRFC (Bitfield-Mask: 0x01) */ +/* ========================================================= SPFCR ========================================================= */ + #define R_SPI0_SPFCR_SPFRST_Pos (0UL) /*!< SPFRST (Bit 0) */ + #define R_SPI0_SPFCR_SPFRST_Msk (0x1UL) /*!< SPFRST (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_CRC0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CRCCR0 ========================================================= */ + #define R_CRC0_CRCCR0_GPS_Pos (0UL) /*!< GPS (Bit 0) */ + #define R_CRC0_CRCCR0_GPS_Msk (0x7UL) /*!< GPS (Bitfield-Mask: 0x07) */ + #define R_CRC0_CRCCR0_LMS_Pos (6UL) /*!< LMS (Bit 6) */ + #define R_CRC0_CRCCR0_LMS_Msk (0x40UL) /*!< LMS (Bitfield-Mask: 0x01) */ + #define R_CRC0_CRCCR0_DORCLR_Pos (7UL) /*!< DORCLR (Bit 7) */ + #define R_CRC0_CRCCR0_DORCLR_Msk (0x80UL) /*!< DORCLR (Bitfield-Mask: 0x01) */ +/* ======================================================== CRCDIR ========================================================= */ +/* ======================================================= CRCDIR_BY ======================================================= */ +/* ======================================================== CRCDOR ========================================================= */ +/* ======================================================= CRCDOR_HA ======================================================= */ +/* ======================================================= CRCDOR_BY ======================================================= */ + +/* =========================================================================================================================== */ +/* ================ R_CANFD ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CFDGIPV ======================================================== */ + #define R_CANFD_CFDGIPV_IPV_Pos (0UL) /*!< IPV (Bit 0) */ + #define R_CANFD_CFDGIPV_IPV_Msk (0xffUL) /*!< IPV (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDGIPV_IPT_Pos (8UL) /*!< IPT (Bit 8) */ + #define R_CANFD_CFDGIPV_IPT_Msk (0x300UL) /*!< IPT (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDGIPV_PSI_Pos (16UL) /*!< PSI (Bit 16) */ + #define R_CANFD_CFDGIPV_PSI_Msk (0x3fff0000UL) /*!< PSI (Bitfield-Mask: 0x3fff) */ +/* ======================================================== 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_TSBTCS_Pos (13UL) /*!< TSBTCS (Bit 13) */ + #define R_CANFD_CFDGCFG_TSBTCS_Msk (0xe000UL) /*!< TSBTCS (Bitfield-Mask: 0x07) */ + #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_QOWEIE_Pos (12UL) /*!< QOWEIE (Bit 12) */ + #define R_CANFD_CFDGCTR_QOWEIE_Msk (0x1000UL) /*!< QOWEIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCTR_QMEIE_Pos (14UL) /*!< QMEIE (Bit 14) */ + #define R_CANFD_CFDGCTR_QMEIE_Msk (0x4000UL) /*!< QMEIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGCTR_MOWEIE_Pos (15UL) /*!< MOWEIE (Bit 15) */ + #define R_CANFD_CFDGCTR_MOWEIE_Msk (0x8000UL) /*!< MOWEIE (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_QOWES_Pos (4UL) /*!< QOWES (Bit 4) */ + #define R_CANFD_CFDGERFL_QOWES_Msk (0x10UL) /*!< QOWES (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGERFL_QMES_Pos (6UL) /*!< QMES (Bit 6) */ + #define R_CANFD_CFDGERFL_QMES_Msk (0x40UL) /*!< QMES (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGERFL_MOWES_Pos (7UL) /*!< MOWES (Bit 7) */ + #define R_CANFD_CFDGERFL_MOWES_Msk (0x80UL) /*!< MOWES (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGERFL_EEF0_Pos (16UL) /*!< EEF0 (Bit 16) */ + #define R_CANFD_CFDGERFL_EEF0_Msk (0x10000UL) /*!< EEF0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGERFL_EEF1_Pos (17UL) /*!< EEF1 (Bit 17) */ + #define R_CANFD_CFDGERFL_EEF1_Msk (0x20000UL) /*!< EEF1 (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_RMNS_Pos (0UL) /*!< RMNS (Bit 0) */ + #define R_CANFD_CFDRMND0_RMNS_Msk (0xffffffffUL) /*!< RMNS (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) */ + #define R_CANFD_CFDRFCC_RFFIE_Pos (16UL) /*!< RFFIE (Bit 16) */ + #define R_CANFD_CFDRFCC_RFFIE_Msk (0x10000UL) /*!< RFFIE (Bitfield-Mask: 0x01) */ +/* ======================================================= 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) */ + #define R_CANFD_CFDRFSTS_RFFIF_Pos (16UL) /*!< RFFIF (Bit 16) */ + #define R_CANFD_CFDRFSTS_RFFIF_Msk (0x10000UL) /*!< RFFIF (Bitfield-Mask: 0x01) */ +/* ======================================================= 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) */ +/* ======================================================= CFDCFCCE ======================================================== */ + #define R_CANFD_CFDCFCCE_CFFIE_Pos (0UL) /*!< CFFIE (Bit 0) */ + #define R_CANFD_CFDCFCCE_CFFIE_Msk (0x1UL) /*!< CFFIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCCE_CFOFRXIE_Pos (1UL) /*!< CFOFRXIE (Bit 1) */ + #define R_CANFD_CFDCFCCE_CFOFRXIE_Msk (0x2UL) /*!< CFOFRXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCCE_CFOFTXIE_Pos (2UL) /*!< CFOFTXIE (Bit 2) */ + #define R_CANFD_CFDCFCCE_CFOFTXIE_Msk (0x4UL) /*!< CFOFTXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCCE_CFMOWM_Pos (8UL) /*!< CFMOWM (Bit 8) */ + #define R_CANFD_CFDCFCCE_CFMOWM_Msk (0x100UL) /*!< CFMOWM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFCCE_CFBME_Pos (16UL) /*!< CFBME (Bit 16) */ + #define R_CANFD_CFDCFCCE_CFBME_Msk (0x10000UL) /*!< CFBME (Bitfield-Mask: 0x01) */ +/* ======================================================= 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) */ + #define R_CANFD_CFDCFSTS_CFFIF_Pos (16UL) /*!< CFFIF (Bit 16) */ + #define R_CANFD_CFDCFSTS_CFFIF_Msk (0x10000UL) /*!< CFFIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFSTS_CFOFRXIF_Pos (17UL) /*!< CFOFRXIF (Bit 17) */ + #define R_CANFD_CFDCFSTS_CFOFRXIF_Msk (0x20000UL) /*!< CFOFRXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFSTS_CFOFTXIF_Pos (18UL) /*!< CFOFTXIF (Bit 18) */ + #define R_CANFD_CFDCFSTS_CFOFTXIF_Msk (0x40000UL) /*!< CFOFTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCFSTS_CFMOW_Pos (24UL) /*!< CFMOW (Bit 24) */ + #define R_CANFD_CFDCFSTS_CFMOW_Msk (0x1000000UL) /*!< CFMOW (Bitfield-Mask: 0x01) */ +/* ======================================================= 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 (0xffUL) /*!< RFXEMP (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDFESTS_CFXEMP_Pos (8UL) /*!< CFXEMP (Bit 8) */ + #define R_CANFD_CFDFESTS_CFXEMP_Msk (0x3f00UL) /*!< CFXEMP (Bitfield-Mask: 0x3f) */ +/* ======================================================= CFDFFSTS ======================================================== */ + #define R_CANFD_CFDFFSTS_RFXFLL_Pos (0UL) /*!< RFXFLL (Bit 0) */ + #define R_CANFD_CFDFFSTS_RFXFLL_Msk (0xffUL) /*!< RFXFLL (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDFFSTS_CFXFLL_Pos (8UL) /*!< CFXFLL (Bit 8) */ + #define R_CANFD_CFDFFSTS_CFXFLL_Msk (0x3f00UL) /*!< CFXFLL (Bitfield-Mask: 0x3f) */ +/* ======================================================= CFDFMSTS ======================================================== */ + #define R_CANFD_CFDFMSTS_RFXMLT_Pos (0UL) /*!< RFXMLT (Bit 0) */ + #define R_CANFD_CFDFMSTS_RFXMLT_Msk (0xffUL) /*!< RFXMLT (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDFMSTS_CFXMLT_Pos (8UL) /*!< CFXMLT (Bit 8) */ + #define R_CANFD_CFDFMSTS_CFXMLT_Msk (0x3f00UL) /*!< CFXMLT (Bitfield-Mask: 0x3f) */ +/* ======================================================= CFDRFISTS ======================================================= */ + #define R_CANFD_CFDRFISTS_RFXIF_Pos (0UL) /*!< RFXIF (Bit 0) */ + #define R_CANFD_CFDRFISTS_RFXIF_Msk (0xffUL) /*!< RFXIF (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDRFISTS_RFXFFLL_Pos (16UL) /*!< RFXFFLL (Bit 16) */ + #define R_CANFD_CFDRFISTS_RFXFFLL_Msk (0xff0000UL) /*!< RFXFFLL (Bitfield-Mask: 0xff) */ +/* ====================================================== CFDCFRISTS ======================================================= */ + #define R_CANFD_CFDCFRISTS_CFXRXIF_Pos (0UL) /*!< CFXRXIF (Bit 0) */ + #define R_CANFD_CFDCFRISTS_CFXRXIF_Msk (0x3fUL) /*!< CFXRXIF (Bitfield-Mask: 0x3f) */ +/* ====================================================== CFDCFTISTS ======================================================= */ + #define R_CANFD_CFDCFTISTS_CFXTXIF_Pos (0UL) /*!< CFXTXIF (Bit 0) */ + #define R_CANFD_CFDCFTISTS_CFXTXIF_Msk (0x3fUL) /*!< CFXTXIF (Bitfield-Mask: 0x3f) */ +/* ===================================================== CFDCFOFRISTS ====================================================== */ + #define R_CANFD_CFDCFOFRISTS_CFXOFRXIF_Pos (0UL) /*!< CFXOFRXIF (Bit 0) */ + #define R_CANFD_CFDCFOFRISTS_CFXOFRXIF_Msk (0x3fUL) /*!< CFXOFRXIF (Bitfield-Mask: 0x3f) */ +/* ===================================================== CFDCFOFTISTS ====================================================== */ + #define R_CANFD_CFDCFOFTISTS_CFXOFTXIF_Pos (0UL) /*!< CFXOFTXIF (Bit 0) */ + #define R_CANFD_CFDCFOFTISTS_CFXOFTXIF_Msk (0x3fUL) /*!< CFXOFTXIF (Bitfield-Mask: 0x3f) */ +/* ====================================================== CFDCFMOWSTS ====================================================== */ + #define R_CANFD_CFDCFMOWSTS_CFXMOW_Pos (0UL) /*!< CFXMOW (Bit 0) */ + #define R_CANFD_CFDCFMOWSTS_CFXMOW_Msk (0x3fUL) /*!< CFXMOW (Bitfield-Mask: 0x3f) */ +/* ======================================================= CFDFFFSTS ======================================================= */ + #define R_CANFD_CFDFFFSTS_RFXFFLL_Pos (0UL) /*!< RFXFFLL (Bit 0) */ + #define R_CANFD_CFDFFFSTS_RFXFFLL_Msk (0xffUL) /*!< RFXFFLL (Bitfield-Mask: 0xff) */ + #define R_CANFD_CFDFFFSTS_CFXFFLL_Pos (8UL) /*!< CFXFFLL (Bit 8) */ + #define R_CANFD_CFDFFFSTS_CFXFFLL_Msk (0x3f00UL) /*!< CFXFFLL (Bitfield-Mask: 0x3f) */ +/* ======================================================== 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_TMTRSTS_Pos (0UL) /*!< TMTRSTS (Bit 0) */ + #define R_CANFD_CFDTMTRSTS_TMTRSTS_Msk (0xffffUL) /*!< TMTRSTS (Bitfield-Mask: 0xffff) */ +/* ====================================================== CFDTMTARSTS ====================================================== */ + #define R_CANFD_CFDTMTARSTS_TMTARSTS_Pos (0UL) /*!< TMTARSTS (Bit 0) */ + #define R_CANFD_CFDTMTARSTS_TMTARSTS_Msk (0xffffUL) /*!< TMTARSTS (Bitfield-Mask: 0xffff) */ +/* ====================================================== CFDTMTCSTS ======================================================= */ + #define R_CANFD_CFDTMTCSTS_TMTCSTS_Pos (0UL) /*!< TMTCSTS (Bit 0) */ + #define R_CANFD_CFDTMTCSTS_TMTCSTS_Msk (0xffffUL) /*!< TMTCSTS (Bitfield-Mask: 0xffff) */ +/* ====================================================== CFDTMTASTS ======================================================= */ + #define R_CANFD_CFDTMTASTS_TMTASTS_Pos (0UL) /*!< TMTASTS (Bit 0) */ + #define R_CANFD_CFDTMTASTS_TMTASTS_Msk (0xffffUL) /*!< TMTASTS (Bitfield-Mask: 0xffff) */ +/* ======================================================= CFDTMIEC ======================================================== */ + #define R_CANFD_CFDTMIEC_TMIE_Pos (0UL) /*!< TMIE (Bit 0) */ + #define R_CANFD_CFDTMIEC_TMIE_Msk (0xffffUL) /*!< TMIE (Bitfield-Mask: 0xffff) */ +/* ======================================================= 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_TXQGWE_Pos (1UL) /*!< TXQGWE (Bit 1) */ + #define R_CANFD_CFDTXQCC0_TXQGWE_Msk (0x2UL) /*!< TXQGWE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC0_TXQOWE_Pos (2UL) /*!< TXQOWE (Bit 2) */ + #define R_CANFD_CFDTXQCC0_TXQOWE_Msk (0x4UL) /*!< TXQOWE (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 (0x1f00UL) /*!< TXQDC (Bitfield-Mask: 0x1f) */ + #define R_CANFD_CFDTXQCC0_TXQFIE_Pos (16UL) /*!< TXQFIE (Bit 16) */ + #define R_CANFD_CFDTXQCC0_TXQFIE_Msk (0x10000UL) /*!< TXQFIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC0_TXQOFRXIE_Pos (17UL) /*!< TXQOFRXIE (Bit 17) */ + #define R_CANFD_CFDTXQCC0_TXQOFRXIE_Msk (0x20000UL) /*!< TXQOFRXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC0_TXQOFTXIE_Pos (18UL) /*!< TXQOFTXIE (Bit 18) */ + #define R_CANFD_CFDTXQCC0_TXQOFTXIE_Msk (0x40000UL) /*!< TXQOFTXIE (Bitfield-Mask: 0x01) */ +/* ====================================================== 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) */ + #define R_CANFD_CFDTXQSTS0_TXQFIF_Pos (16UL) /*!< TXQFIF (Bit 16) */ + #define R_CANFD_CFDTXQSTS0_TXQFIF_Msk (0x10000UL) /*!< TXQFIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS0_TXQOFRXIF_Pos (17UL) /*!< TXQOFRXIF (Bit 17) */ + #define R_CANFD_CFDTXQSTS0_TXQOFRXIF_Msk (0x20000UL) /*!< TXQOFRXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS0_TXQOFTXIF_Pos (18UL) /*!< TXQOFTXIF (Bit 18) */ + #define R_CANFD_CFDTXQSTS0_TXQOFTXIF_Msk (0x40000UL) /*!< TXQOFTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS0_TXQMLT_Pos (19UL) /*!< TXQMLT (Bit 19) */ + #define R_CANFD_CFDTXQSTS0_TXQMLT_Msk (0x80000UL) /*!< TXQMLT (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS0_TXQMOW_Pos (20UL) /*!< TXQMOW (Bit 20) */ + #define R_CANFD_CFDTXQSTS0_TXQMOW_Msk (0x100000UL) /*!< TXQMOW (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDTXQPCTR0 ====================================================== */ + #define R_CANFD_CFDTXQPCTR0_TXQPC_Pos (0UL) /*!< TXQPC (Bit 0) */ + #define R_CANFD_CFDTXQPCTR0_TXQPC_Msk (0xffUL) /*!< TXQPC (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDTXQCC1 ======================================================= */ + #define R_CANFD_CFDTXQCC1_TXQE_Pos (0UL) /*!< TXQE (Bit 0) */ + #define R_CANFD_CFDTXQCC1_TXQE_Msk (0x1UL) /*!< TXQE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC1_TXQGWE_Pos (1UL) /*!< TXQGWE (Bit 1) */ + #define R_CANFD_CFDTXQCC1_TXQGWE_Msk (0x2UL) /*!< TXQGWE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC1_TXQOWE_Pos (2UL) /*!< TXQOWE (Bit 2) */ + #define R_CANFD_CFDTXQCC1_TXQOWE_Msk (0x4UL) /*!< TXQOWE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC1_TXQTXIE_Pos (5UL) /*!< TXQTXIE (Bit 5) */ + #define R_CANFD_CFDTXQCC1_TXQTXIE_Msk (0x20UL) /*!< TXQTXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC1_TXQIM_Pos (7UL) /*!< TXQIM (Bit 7) */ + #define R_CANFD_CFDTXQCC1_TXQIM_Msk (0x80UL) /*!< TXQIM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC1_TXQDC_Pos (8UL) /*!< TXQDC (Bit 8) */ + #define R_CANFD_CFDTXQCC1_TXQDC_Msk (0x1f00UL) /*!< TXQDC (Bitfield-Mask: 0x1f) */ + #define R_CANFD_CFDTXQCC1_TXQFIE_Pos (16UL) /*!< TXQFIE (Bit 16) */ + #define R_CANFD_CFDTXQCC1_TXQFIE_Msk (0x10000UL) /*!< TXQFIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC1_TXQOFRXIE_Pos (17UL) /*!< TXQOFRXIE (Bit 17) */ + #define R_CANFD_CFDTXQCC1_TXQOFRXIE_Msk (0x20000UL) /*!< TXQOFRXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC1_TXQOFTXIE_Pos (18UL) /*!< TXQOFTXIE (Bit 18) */ + #define R_CANFD_CFDTXQCC1_TXQOFTXIE_Msk (0x40000UL) /*!< TXQOFTXIE (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDTXQSTS1 ======================================================= */ + #define R_CANFD_CFDTXQSTS1_TXQEMP_Pos (0UL) /*!< TXQEMP (Bit 0) */ + #define R_CANFD_CFDTXQSTS1_TXQEMP_Msk (0x1UL) /*!< TXQEMP (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS1_TXQFLL_Pos (1UL) /*!< TXQFLL (Bit 1) */ + #define R_CANFD_CFDTXQSTS1_TXQFLL_Msk (0x2UL) /*!< TXQFLL (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS1_TXQTXIF_Pos (2UL) /*!< TXQTXIF (Bit 2) */ + #define R_CANFD_CFDTXQSTS1_TXQTXIF_Msk (0x4UL) /*!< TXQTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS1_TXQMC_Pos (8UL) /*!< TXQMC (Bit 8) */ + #define R_CANFD_CFDTXQSTS1_TXQMC_Msk (0x3f00UL) /*!< TXQMC (Bitfield-Mask: 0x3f) */ + #define R_CANFD_CFDTXQSTS1_TXQFIF_Pos (16UL) /*!< TXQFIF (Bit 16) */ + #define R_CANFD_CFDTXQSTS1_TXQFIF_Msk (0x10000UL) /*!< TXQFIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS1_TXQOFRXIF_Pos (17UL) /*!< TXQOFRXIF (Bit 17) */ + #define R_CANFD_CFDTXQSTS1_TXQOFRXIF_Msk (0x20000UL) /*!< TXQOFRXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS1_TXQOFTXIF_Pos (18UL) /*!< TXQOFTXIF (Bit 18) */ + #define R_CANFD_CFDTXQSTS1_TXQOFTXIF_Msk (0x40000UL) /*!< TXQOFTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS1_TXQMLT_Pos (19UL) /*!< TXQMLT (Bit 19) */ + #define R_CANFD_CFDTXQSTS1_TXQMLT_Msk (0x80000UL) /*!< TXQMLT (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS1_TXQMOW_Pos (20UL) /*!< TXQMOW (Bit 20) */ + #define R_CANFD_CFDTXQSTS1_TXQMOW_Msk (0x100000UL) /*!< TXQMOW (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDTXQPCTR1 ====================================================== */ + #define R_CANFD_CFDTXQPCTR1_TXQPC_Pos (0UL) /*!< TXQPC (Bit 0) */ + #define R_CANFD_CFDTXQPCTR1_TXQPC_Msk (0xffUL) /*!< TXQPC (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDTXQCC2 ======================================================= */ + #define R_CANFD_CFDTXQCC2_TXQE_Pos (0UL) /*!< TXQE (Bit 0) */ + #define R_CANFD_CFDTXQCC2_TXQE_Msk (0x1UL) /*!< TXQE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC2_TXQGWE_Pos (1UL) /*!< TXQGWE (Bit 1) */ + #define R_CANFD_CFDTXQCC2_TXQGWE_Msk (0x2UL) /*!< TXQGWE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC2_TXQOWE_Pos (2UL) /*!< TXQOWE (Bit 2) */ + #define R_CANFD_CFDTXQCC2_TXQOWE_Msk (0x4UL) /*!< TXQOWE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC2_TXQTXIE_Pos (5UL) /*!< TXQTXIE (Bit 5) */ + #define R_CANFD_CFDTXQCC2_TXQTXIE_Msk (0x20UL) /*!< TXQTXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC2_TXQIM_Pos (7UL) /*!< TXQIM (Bit 7) */ + #define R_CANFD_CFDTXQCC2_TXQIM_Msk (0x80UL) /*!< TXQIM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC2_TXQDC_Pos (8UL) /*!< TXQDC (Bit 8) */ + #define R_CANFD_CFDTXQCC2_TXQDC_Msk (0x1f00UL) /*!< TXQDC (Bitfield-Mask: 0x1f) */ + #define R_CANFD_CFDTXQCC2_TXQFIE_Pos (16UL) /*!< TXQFIE (Bit 16) */ + #define R_CANFD_CFDTXQCC2_TXQFIE_Msk (0x10000UL) /*!< TXQFIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC2_TXQOFRXIE_Pos (17UL) /*!< TXQOFRXIE (Bit 17) */ + #define R_CANFD_CFDTXQCC2_TXQOFRXIE_Msk (0x20000UL) /*!< TXQOFRXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC2_TXQOFTXIE_Pos (18UL) /*!< TXQOFTXIE (Bit 18) */ + #define R_CANFD_CFDTXQCC2_TXQOFTXIE_Msk (0x40000UL) /*!< TXQOFTXIE (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDTXQSTS2 ======================================================= */ + #define R_CANFD_CFDTXQSTS2_TXQEMP_Pos (0UL) /*!< TXQEMP (Bit 0) */ + #define R_CANFD_CFDTXQSTS2_TXQEMP_Msk (0x1UL) /*!< TXQEMP (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS2_TXQFLL_Pos (1UL) /*!< TXQFLL (Bit 1) */ + #define R_CANFD_CFDTXQSTS2_TXQFLL_Msk (0x2UL) /*!< TXQFLL (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS2_TXQTXIF_Pos (2UL) /*!< TXQTXIF (Bit 2) */ + #define R_CANFD_CFDTXQSTS2_TXQTXIF_Msk (0x4UL) /*!< TXQTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS2_TXQMC_Pos (8UL) /*!< TXQMC (Bit 8) */ + #define R_CANFD_CFDTXQSTS2_TXQMC_Msk (0x3f00UL) /*!< TXQMC (Bitfield-Mask: 0x3f) */ + #define R_CANFD_CFDTXQSTS2_TXQFIF_Pos (16UL) /*!< TXQFIF (Bit 16) */ + #define R_CANFD_CFDTXQSTS2_TXQFIF_Msk (0x10000UL) /*!< TXQFIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS2_TXQOFRXIF_Pos (17UL) /*!< TXQOFRXIF (Bit 17) */ + #define R_CANFD_CFDTXQSTS2_TXQOFRXIF_Msk (0x20000UL) /*!< TXQOFRXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS2_TXQOFTXIF_Pos (18UL) /*!< TXQOFTXIF (Bit 18) */ + #define R_CANFD_CFDTXQSTS2_TXQOFTXIF_Msk (0x40000UL) /*!< TXQOFTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS2_TXQMLT_Pos (19UL) /*!< TXQMLT (Bit 19) */ + #define R_CANFD_CFDTXQSTS2_TXQMLT_Msk (0x80000UL) /*!< TXQMLT (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS2_TXQMOW_Pos (20UL) /*!< TXQMOW (Bit 20) */ + #define R_CANFD_CFDTXQSTS2_TXQMOW_Msk (0x100000UL) /*!< TXQMOW (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDTXQPCTR2 ====================================================== */ + #define R_CANFD_CFDTXQPCTR2_TXQPC_Pos (0UL) /*!< TXQPC (Bit 0) */ + #define R_CANFD_CFDTXQPCTR2_TXQPC_Msk (0xffUL) /*!< TXQPC (Bitfield-Mask: 0xff) */ +/* ======================================================= CFDTXQCC3 ======================================================= */ + #define R_CANFD_CFDTXQCC3_TXQE_Pos (0UL) /*!< TXQE (Bit 0) */ + #define R_CANFD_CFDTXQCC3_TXQE_Msk (0x1UL) /*!< TXQE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC3_TXQOWE_Pos (2UL) /*!< TXQOWE (Bit 2) */ + #define R_CANFD_CFDTXQCC3_TXQOWE_Msk (0x4UL) /*!< TXQOWE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC3_TXQTXIE_Pos (5UL) /*!< TXQTXIE (Bit 5) */ + #define R_CANFD_CFDTXQCC3_TXQTXIE_Msk (0x20UL) /*!< TXQTXIE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC3_TXQIM_Pos (7UL) /*!< TXQIM (Bit 7) */ + #define R_CANFD_CFDTXQCC3_TXQIM_Msk (0x80UL) /*!< TXQIM (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQCC3_TXQDC_Pos (8UL) /*!< TXQDC (Bit 8) */ + #define R_CANFD_CFDTXQCC3_TXQDC_Msk (0x1f00UL) /*!< TXQDC (Bitfield-Mask: 0x1f) */ + #define R_CANFD_CFDTXQCC3_TXQOFTXIE_Pos (18UL) /*!< TXQOFTXIE (Bit 18) */ + #define R_CANFD_CFDTXQCC3_TXQOFTXIE_Msk (0x40000UL) /*!< TXQOFTXIE (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDTXQSTS3 ======================================================= */ + #define R_CANFD_CFDTXQSTS3_TXQEMP_Pos (0UL) /*!< TXQEMP (Bit 0) */ + #define R_CANFD_CFDTXQSTS3_TXQEMP_Msk (0x1UL) /*!< TXQEMP (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS3_TXQFLL_Pos (1UL) /*!< TXQFLL (Bit 1) */ + #define R_CANFD_CFDTXQSTS3_TXQFLL_Msk (0x2UL) /*!< TXQFLL (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS3_TXQTXIF_Pos (2UL) /*!< TXQTXIF (Bit 2) */ + #define R_CANFD_CFDTXQSTS3_TXQTXIF_Msk (0x4UL) /*!< TXQTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS3_TXQMC_Pos (8UL) /*!< TXQMC (Bit 8) */ + #define R_CANFD_CFDTXQSTS3_TXQMC_Msk (0x3f00UL) /*!< TXQMC (Bitfield-Mask: 0x3f) */ + #define R_CANFD_CFDTXQSTS3_TXQOFTXIF_Pos (18UL) /*!< TXQOFTXIF (Bit 18) */ + #define R_CANFD_CFDTXQSTS3_TXQOFTXIF_Msk (0x40000UL) /*!< TXQOFTXIF (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDTXQSTS3_TXQMOW_Pos (20UL) /*!< TXQMOW (Bit 20) */ + #define R_CANFD_CFDTXQSTS3_TXQMOW_Msk (0x100000UL) /*!< TXQMOW (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDTXQPCTR3 ====================================================== */ + #define R_CANFD_CFDTXQPCTR3_TXQPC_Pos (0UL) /*!< TXQPC (Bit 0) */ + #define R_CANFD_CFDTXQPCTR3_TXQPC_Msk (0xffUL) /*!< TXQPC (Bitfield-Mask: 0xff) */ +/* ====================================================== CFDTXQESTS ======================================================= */ + #define R_CANFD_CFDTXQESTS_TXQxEMP_Pos (0UL) /*!< TXQxEMP (Bit 0) */ + #define R_CANFD_CFDTXQESTS_TXQxEMP_Msk (0xffUL) /*!< TXQxEMP (Bitfield-Mask: 0xff) */ +/* ====================================================== CFDTXQFISTS ====================================================== */ + #define R_CANFD_CFDTXQFISTS_TXQ0FULL_Pos (0UL) /*!< TXQ0FULL (Bit 0) */ + #define R_CANFD_CFDTXQFISTS_TXQ0FULL_Msk (0x7UL) /*!< TXQ0FULL (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDTXQFISTS_TXQ1FULL_Pos (4UL) /*!< TXQ1FULL (Bit 4) */ + #define R_CANFD_CFDTXQFISTS_TXQ1FULL_Msk (0x70UL) /*!< TXQ1FULL (Bitfield-Mask: 0x07) */ +/* ====================================================== CFDTXQMSTS ======================================================= */ + #define R_CANFD_CFDTXQMSTS_TXQ0ML_Pos (0UL) /*!< TXQ0ML (Bit 0) */ + #define R_CANFD_CFDTXQMSTS_TXQ0ML_Msk (0x7UL) /*!< TXQ0ML (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDTXQMSTS_TXQ1ML_Pos (4UL) /*!< TXQ1ML (Bit 4) */ + #define R_CANFD_CFDTXQMSTS_TXQ1ML_Msk (0x70UL) /*!< TXQ1ML (Bitfield-Mask: 0x07) */ +/* ====================================================== CFDTXQISTS ======================================================= */ + #define R_CANFD_CFDTXQISTS_TXQ0ISF_Pos (0UL) /*!< TXQ0ISF (Bit 0) */ + #define R_CANFD_CFDTXQISTS_TXQ0ISF_Msk (0xfUL) /*!< TXQ0ISF (Bitfield-Mask: 0x0f) */ + #define R_CANFD_CFDTXQISTS_TXQ1ISF_Pos (4UL) /*!< TXQ1ISF (Bit 4) */ + #define R_CANFD_CFDTXQISTS_TXQ1ISF_Msk (0xf0UL) /*!< TXQ1ISF (Bitfield-Mask: 0x0f) */ +/* ===================================================== CFDTXQOFTISTS ===================================================== */ + #define R_CANFD_CFDTXQOFTISTS_TXQ0OFTISF_Pos (0UL) /*!< TXQ0OFTISF (Bit 0) */ + #define R_CANFD_CFDTXQOFTISTS_TXQ0OFTISF_Msk (0xfUL) /*!< TXQ0OFTISF (Bitfield-Mask: 0x0f) */ + #define R_CANFD_CFDTXQOFTISTS_TXQ1OFTISF_Pos (4UL) /*!< TXQ1OFTISF (Bit 4) */ + #define R_CANFD_CFDTXQOFTISTS_TXQ1OFTISF_Msk (0xf0UL) /*!< TXQ1OFTISF (Bitfield-Mask: 0x0f) */ +/* ===================================================== CFDTXQOFRISTS ===================================================== */ + #define R_CANFD_CFDTXQOFRISTS_TXQ0OFRISF_Pos (0UL) /*!< TXQ0OFRISF (Bit 0) */ + #define R_CANFD_CFDTXQOFRISTS_TXQ0OFRISF_Msk (0x7UL) /*!< TXQ0OFRISF (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDTXQOFRISTS_TXQ1OFRISF_Pos (4UL) /*!< TXQ1OFRISF (Bit 4) */ + #define R_CANFD_CFDTXQOFRISTS_TXQ1OFRISF_Msk (0x70UL) /*!< TXQ1OFRISF (Bitfield-Mask: 0x07) */ +/* ====================================================== CFDTXQFSTS ======================================================= */ + #define R_CANFD_CFDTXQFSTS_TXQ0FSF_Pos (0UL) /*!< TXQ0FSF (Bit 0) */ + #define R_CANFD_CFDTXQFSTS_TXQ0FSF_Msk (0xfUL) /*!< TXQ0FSF (Bitfield-Mask: 0x0f) */ + #define R_CANFD_CFDTXQFSTS_TXQ1FSF_Pos (4UL) /*!< TXQ1FSF (Bit 4) */ + #define R_CANFD_CFDTXQFSTS_TXQ1FSF_Msk (0xf0UL) /*!< TXQ1FSF (Bitfield-Mask: 0x0f) */ +/* ======================================================= 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) */ + #define R_CANFD_CFDTHLCC_THLDGE_Pos (11UL) /*!< THLDGE (Bit 11) */ + #define R_CANFD_CFDTHLCC_THLDGE_Msk (0x800UL) /*!< THLDGE (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) */ + #define R_CANFD_CFDGTINTSTS0_TQOFIF0_Pos (5UL) /*!< TQOFIF0 (Bit 5) */ + #define R_CANFD_CFDGTINTSTS0_TQOFIF0_Msk (0x20UL) /*!< TQOFIF0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_CFOTIF0_Pos (6UL) /*!< CFOTIF0 (Bit 6) */ + #define R_CANFD_CFDGTINTSTS0_CFOTIF0_Msk (0x40UL) /*!< CFOTIF0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_TSIF1_Pos (8UL) /*!< TSIF1 (Bit 8) */ + #define R_CANFD_CFDGTINTSTS0_TSIF1_Msk (0x100UL) /*!< TSIF1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_TAIF1_Pos (9UL) /*!< TAIF1 (Bit 9) */ + #define R_CANFD_CFDGTINTSTS0_TAIF1_Msk (0x200UL) /*!< TAIF1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_TQIF1_Pos (10UL) /*!< TQIF1 (Bit 10) */ + #define R_CANFD_CFDGTINTSTS0_TQIF1_Msk (0x400UL) /*!< TQIF1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_CFTIF1_Pos (11UL) /*!< CFTIF1 (Bit 11) */ + #define R_CANFD_CFDGTINTSTS0_CFTIF1_Msk (0x800UL) /*!< CFTIF1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_THIF1_Pos (12UL) /*!< THIF1 (Bit 12) */ + #define R_CANFD_CFDGTINTSTS0_THIF1_Msk (0x1000UL) /*!< THIF1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_TQOFIF1_Pos (13UL) /*!< TQOFIF1 (Bit 13) */ + #define R_CANFD_CFDGTINTSTS0_TQOFIF1_Msk (0x2000UL) /*!< TQOFIF1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTINTSTS0_CFOTIF1_Pos (14UL) /*!< CFOTIF1 (Bit 14) */ + #define R_CANFD_CFDGTINTSTS0_CFOTIF1_Msk (0x4000UL) /*!< CFOTIF1 (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDGTSTCFG ======================================================= */ + #define R_CANFD_CFDGTSTCFG_C0ICBCE_Pos (0UL) /*!< C0ICBCE (Bit 0) */ + #define R_CANFD_CFDGTSTCFG_C0ICBCE_Msk (0x1UL) /*!< C0ICBCE (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDGTSTCFG_C1ICBCE_Pos (1UL) /*!< C1ICBCE (Bit 1) */ + #define R_CANFD_CFDGTSTCFG_C1ICBCE_Msk (0x2UL) /*!< C1ICBCE (Bitfield-Mask: 0x01) */ + #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_ICBCTME_Pos (0UL) /*!< ICBCTME (Bit 0) */ + #define R_CANFD_CFDGTSTCTR_ICBCTME_Msk (0x1UL) /*!< ICBCTME (Bitfield-Mask: 0x01) */ + #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) */ +/* ======================================================= 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_RFDMAE2_Pos (2UL) /*!< RFDMAE2 (Bit 2) */ + #define R_CANFD_CFDCDTCT_RFDMAE2_Msk (0x4UL) /*!< RFDMAE2 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTCT_RFDMAE3_Pos (3UL) /*!< RFDMAE3 (Bit 3) */ + #define R_CANFD_CFDCDTCT_RFDMAE3_Msk (0x8UL) /*!< RFDMAE3 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTCT_RFDMAE4_Pos (4UL) /*!< RFDMAE4 (Bit 4) */ + #define R_CANFD_CFDCDTCT_RFDMAE4_Msk (0x10UL) /*!< RFDMAE4 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTCT_RFDMAE5_Pos (5UL) /*!< RFDMAE5 (Bit 5) */ + #define R_CANFD_CFDCDTCT_RFDMAE5_Msk (0x20UL) /*!< RFDMAE5 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTCT_RFDMAE6_Pos (6UL) /*!< RFDMAE6 (Bit 6) */ + #define R_CANFD_CFDCDTCT_RFDMAE6_Msk (0x40UL) /*!< RFDMAE6 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTCT_RFDMAE7_Pos (7UL) /*!< RFDMAE7 (Bit 7) */ + #define R_CANFD_CFDCDTCT_RFDMAE7_Msk (0x80UL) /*!< RFDMAE7 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTCT_CFDMAE0_Pos (8UL) /*!< CFDMAE0 (Bit 8) */ + #define R_CANFD_CFDCDTCT_CFDMAE0_Msk (0x100UL) /*!< CFDMAE0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTCT_CFDMAE1_Pos (9UL) /*!< CFDMAE1 (Bit 9) */ + #define R_CANFD_CFDCDTCT_CFDMAE1_Msk (0x200UL) /*!< CFDMAE1 (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_RFDMASTS2_Pos (2UL) /*!< RFDMASTS2 (Bit 2) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS2_Msk (0x4UL) /*!< RFDMASTS2 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS3_Pos (3UL) /*!< RFDMASTS3 (Bit 3) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS3_Msk (0x8UL) /*!< RFDMASTS3 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS4_Pos (4UL) /*!< RFDMASTS4 (Bit 4) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS4_Msk (0x10UL) /*!< RFDMASTS4 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS5_Pos (5UL) /*!< RFDMASTS5 (Bit 5) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS5_Msk (0x20UL) /*!< RFDMASTS5 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS6_Pos (6UL) /*!< RFDMASTS6 (Bit 6) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS6_Msk (0x40UL) /*!< RFDMASTS6 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS7_Pos (7UL) /*!< RFDMASTS7 (Bit 7) */ + #define R_CANFD_CFDCDTSTS_RFDMASTS7_Msk (0x80UL) /*!< RFDMASTS7 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTSTS_CFDMASTS0_Pos (8UL) /*!< CFDMASTS0 (Bit 8) */ + #define R_CANFD_CFDCDTSTS_CFDMASTS0_Msk (0x100UL) /*!< CFDMASTS0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTSTS_CFDMASTS1_Pos (9UL) /*!< CFDMASTS1 (Bit 9) */ + #define R_CANFD_CFDCDTSTS_CFDMASTS1_Msk (0x200UL) /*!< CFDMASTS1 (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDCDTTCT ======================================================= */ + #define R_CANFD_CFDCDTTCT_TQ0DMAE0_Pos (0UL) /*!< TQ0DMAE0 (Bit 0) */ + #define R_CANFD_CFDCDTTCT_TQ0DMAE0_Msk (0x1UL) /*!< TQ0DMAE0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTCT_TQ0DMAE1_Pos (1UL) /*!< TQ0DMAE1 (Bit 1) */ + #define R_CANFD_CFDCDTTCT_TQ0DMAE1_Msk (0x2UL) /*!< TQ0DMAE1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTCT_TQ3DMAE0_Pos (8UL) /*!< TQ3DMAE0 (Bit 8) */ + #define R_CANFD_CFDCDTTCT_TQ3DMAE0_Msk (0x100UL) /*!< TQ3DMAE0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTCT_TQ3DMAE1_Pos (9UL) /*!< TQ3DMAE1 (Bit 9) */ + #define R_CANFD_CFDCDTTCT_TQ3DMAE1_Msk (0x200UL) /*!< TQ3DMAE1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTCT_CFDMAE0_Pos (16UL) /*!< CFDMAE0 (Bit 16) */ + #define R_CANFD_CFDCDTTCT_CFDMAE0_Msk (0x10000UL) /*!< CFDMAE0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTCT_CFDMAE1_Pos (17UL) /*!< CFDMAE1 (Bit 17) */ + #define R_CANFD_CFDCDTTCT_CFDMAE1_Msk (0x20000UL) /*!< CFDMAE1 (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDCDTTSTS ======================================================= */ + #define R_CANFD_CFDCDTTSTS_TQ0DMASTS0_Pos (0UL) /*!< TQ0DMASTS0 (Bit 0) */ + #define R_CANFD_CFDCDTTSTS_TQ0DMASTS0_Msk (0x1UL) /*!< TQ0DMASTS0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTSTS_TQ0DMASTS1_Pos (1UL) /*!< TQ0DMASTS1 (Bit 1) */ + #define R_CANFD_CFDCDTTSTS_TQ0DMASTS1_Msk (0x2UL) /*!< TQ0DMASTS1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTSTS_TQ3DMASTS0_Pos (8UL) /*!< TQ3DMASTS0 (Bit 8) */ + #define R_CANFD_CFDCDTTSTS_TQ3DMASTS0_Msk (0x100UL) /*!< TQ3DMASTS0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTSTS_TQ3DMASTS1_Pos (9UL) /*!< TQ3DMASTS1 (Bit 9) */ + #define R_CANFD_CFDCDTTSTS_TQ3DMASTS1_Msk (0x200UL) /*!< TQ3DMASTS1 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTSTS_CFDMASTS0_Pos (16UL) /*!< CFDMASTS0 (Bit 16) */ + #define R_CANFD_CFDCDTTSTS_CFDMASTS0_Msk (0x10000UL) /*!< CFDMASTS0 (Bitfield-Mask: 0x01) */ + #define R_CANFD_CFDCDTTSTS_CFDMASTS1_Pos (17UL) /*!< CFDMASTS1 (Bit 17) */ + #define R_CANFD_CFDCDTTSTS_CFDMASTS1_Msk (0x20000UL) /*!< CFDMASTS1 (Bitfield-Mask: 0x01) */ +/* ====================================================== CFDGRINTSTS ====================================================== */ + #define R_CANFD_CFDGRINTSTS_QFIF_Pos (0UL) /*!< QFIF (Bit 0) */ + #define R_CANFD_CFDGRINTSTS_QFIF_Msk (0x7UL) /*!< QFIF (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDGRINTSTS_BQFIF_Pos (4UL) /*!< BQFIF (Bit 4) */ + #define R_CANFD_CFDGRINTSTS_BQFIF_Msk (0x30UL) /*!< BQFIF (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDGRINTSTS_QOFRIF_Pos (8UL) /*!< QOFRIF (Bit 8) */ + #define R_CANFD_CFDGRINTSTS_QOFRIF_Msk (0x700UL) /*!< QOFRIF (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDGRINTSTS_BQOFRIF_Pos (12UL) /*!< BQOFRIF (Bit 12) */ + #define R_CANFD_CFDGRINTSTS_BQOFRIF_Msk (0x3000UL) /*!< BQOFRIF (Bitfield-Mask: 0x03) */ + #define R_CANFD_CFDGRINTSTS_CFRIF_Pos (16UL) /*!< CFRIF (Bit 16) */ + #define R_CANFD_CFDGRINTSTS_CFRIF_Msk (0x70000UL) /*!< CFRIF (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDGRINTSTS_CFRFIF_Pos (24UL) /*!< CFRFIF (Bit 24) */ + #define R_CANFD_CFDGRINTSTS_CFRFIF_Msk (0x7000000UL) /*!< CFRFIF (Bitfield-Mask: 0x07) */ + #define R_CANFD_CFDGRINTSTS_CFOFRIF_Pos (28UL) /*!< CFOFRIF (Bit 28) */ + #define R_CANFD_CFDGRINTSTS_CFOFRIF_Msk (0x70000000UL) /*!< CFOFRIF (Bitfield-Mask: 0x07) */ +/* ======================================================= 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) */ +/* ======================================================= CFDGFCMC ======================================================== */ + #define R_CANFD_CFDGFCMC_FLXC0_Pos (0UL) /*!< FLXC0 (Bit 0) */ + #define R_CANFD_CFDGFCMC_FLXC0_Msk (0x1UL) /*!< FLXC0 (Bitfield-Mask: 0x01) */ +/* ======================================================= CFDGFTBAC ======================================================= */ + #define R_CANFD_CFDGFTBAC_FLXMB0_Pos (0UL) /*!< FLXMB0 (Bit 0) */ + #define R_CANFD_CFDGFTBAC_FLXMB0_Msk (0xfUL) /*!< FLXMB0 (Bitfield-Mask: 0x0f) */ +/* ======================================================= CFDRPGACC ======================================================= */ + #define R_CANFD_CFDRPGACC_RDTA_Pos (0UL) /*!< RDTA (Bit 0) */ + #define R_CANFD_CFDRPGACC_RDTA_Msk (0xffffffffUL) /*!< RDTA (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_CMT ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_CMTW0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CMWSTR ========================================================= */ + #define R_CMTW0_CMWSTR_STR_Pos (0UL) /*!< STR (Bit 0) */ + #define R_CMTW0_CMWSTR_STR_Msk (0x1UL) /*!< STR (Bitfield-Mask: 0x01) */ +/* ========================================================= CMWCR ========================================================= */ + #define R_CMTW0_CMWCR_CKS_Pos (0UL) /*!< CKS (Bit 0) */ + #define R_CMTW0_CMWCR_CKS_Msk (0x3UL) /*!< CKS (Bitfield-Mask: 0x03) */ + #define R_CMTW0_CMWCR_CMWIE_Pos (3UL) /*!< CMWIE (Bit 3) */ + #define R_CMTW0_CMWCR_CMWIE_Msk (0x8UL) /*!< CMWIE (Bitfield-Mask: 0x01) */ + #define R_CMTW0_CMWCR_IC0IE_Pos (4UL) /*!< IC0IE (Bit 4) */ + #define R_CMTW0_CMWCR_IC0IE_Msk (0x10UL) /*!< IC0IE (Bitfield-Mask: 0x01) */ + #define R_CMTW0_CMWCR_IC1IE_Pos (5UL) /*!< IC1IE (Bit 5) */ + #define R_CMTW0_CMWCR_IC1IE_Msk (0x20UL) /*!< IC1IE (Bitfield-Mask: 0x01) */ + #define R_CMTW0_CMWCR_OC0IE_Pos (6UL) /*!< OC0IE (Bit 6) */ + #define R_CMTW0_CMWCR_OC0IE_Msk (0x40UL) /*!< OC0IE (Bitfield-Mask: 0x01) */ + #define R_CMTW0_CMWCR_OC1IE_Pos (7UL) /*!< OC1IE (Bit 7) */ + #define R_CMTW0_CMWCR_OC1IE_Msk (0x80UL) /*!< OC1IE (Bitfield-Mask: 0x01) */ + #define R_CMTW0_CMWCR_CMS_Pos (9UL) /*!< CMS (Bit 9) */ + #define R_CMTW0_CMWCR_CMS_Msk (0x200UL) /*!< CMS (Bitfield-Mask: 0x01) */ + #define R_CMTW0_CMWCR_CCLR_Pos (13UL) /*!< CCLR (Bit 13) */ + #define R_CMTW0_CMWCR_CCLR_Msk (0xe000UL) /*!< CCLR (Bitfield-Mask: 0x07) */ +/* ======================================================== CMWIOR ========================================================= */ + #define R_CMTW0_CMWIOR_IC0_Pos (0UL) /*!< IC0 (Bit 0) */ + #define R_CMTW0_CMWIOR_IC0_Msk (0x3UL) /*!< IC0 (Bitfield-Mask: 0x03) */ + #define R_CMTW0_CMWIOR_IC1_Pos (2UL) /*!< IC1 (Bit 2) */ + #define R_CMTW0_CMWIOR_IC1_Msk (0xcUL) /*!< IC1 (Bitfield-Mask: 0x03) */ + #define R_CMTW0_CMWIOR_IC0E_Pos (4UL) /*!< IC0E (Bit 4) */ + #define R_CMTW0_CMWIOR_IC0E_Msk (0x10UL) /*!< IC0E (Bitfield-Mask: 0x01) */ + #define R_CMTW0_CMWIOR_IC1E_Pos (5UL) /*!< IC1E (Bit 5) */ + #define R_CMTW0_CMWIOR_IC1E_Msk (0x20UL) /*!< IC1E (Bitfield-Mask: 0x01) */ + #define R_CMTW0_CMWIOR_OC0_Pos (8UL) /*!< OC0 (Bit 8) */ + #define R_CMTW0_CMWIOR_OC0_Msk (0x300UL) /*!< OC0 (Bitfield-Mask: 0x03) */ + #define R_CMTW0_CMWIOR_OC1_Pos (10UL) /*!< OC1 (Bit 10) */ + #define R_CMTW0_CMWIOR_OC1_Msk (0xc00UL) /*!< OC1 (Bitfield-Mask: 0x03) */ + #define R_CMTW0_CMWIOR_OC0E_Pos (12UL) /*!< OC0E (Bit 12) */ + #define R_CMTW0_CMWIOR_OC0E_Msk (0x1000UL) /*!< OC0E (Bitfield-Mask: 0x01) */ + #define R_CMTW0_CMWIOR_OC1E_Pos (13UL) /*!< OC1E (Bit 13) */ + #define R_CMTW0_CMWIOR_OC1E_Msk (0x2000UL) /*!< OC1E (Bitfield-Mask: 0x01) */ + #define R_CMTW0_CMWIOR_CMWE_Pos (15UL) /*!< CMWE (Bit 15) */ + #define R_CMTW0_CMWIOR_CMWE_Msk (0x8000UL) /*!< CMWE (Bitfield-Mask: 0x01) */ +/* ======================================================== CMWCNT ========================================================= */ +/* ======================================================== CMWCOR ========================================================= */ +/* ======================================================== CMWICR0 ======================================================== */ +/* ======================================================== CMWICR1 ======================================================== */ +/* ======================================================== CMWOCR0 ======================================================== */ +/* ======================================================== CMWOCR1 ======================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_WDT0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= WDTRR ========================================================= */ +/* ========================================================= WDTCR ========================================================= */ + #define R_WDT0_WDTCR_TOPS_Pos (0UL) /*!< TOPS (Bit 0) */ + #define R_WDT0_WDTCR_TOPS_Msk (0x3UL) /*!< TOPS (Bitfield-Mask: 0x03) */ + #define R_WDT0_WDTCR_CKS_Pos (4UL) /*!< CKS (Bit 4) */ + #define R_WDT0_WDTCR_CKS_Msk (0xf0UL) /*!< CKS (Bitfield-Mask: 0x0f) */ + #define R_WDT0_WDTCR_RPES_Pos (8UL) /*!< RPES (Bit 8) */ + #define R_WDT0_WDTCR_RPES_Msk (0x300UL) /*!< RPES (Bitfield-Mask: 0x03) */ + #define R_WDT0_WDTCR_RPSS_Pos (12UL) /*!< RPSS (Bit 12) */ + #define R_WDT0_WDTCR_RPSS_Msk (0x3000UL) /*!< RPSS (Bitfield-Mask: 0x03) */ +/* ========================================================= WDTSR ========================================================= */ + #define R_WDT0_WDTSR_CNTVAL_Pos (0UL) /*!< CNTVAL (Bit 0) */ + #define R_WDT0_WDTSR_CNTVAL_Msk (0x3fffUL) /*!< CNTVAL (Bitfield-Mask: 0x3fff) */ + #define R_WDT0_WDTSR_UNDFF_Pos (14UL) /*!< UNDFF (Bit 14) */ + #define R_WDT0_WDTSR_UNDFF_Msk (0x4000UL) /*!< UNDFF (Bitfield-Mask: 0x01) */ + #define R_WDT0_WDTSR_REFEF_Pos (15UL) /*!< REFEF (Bit 15) */ + #define R_WDT0_WDTSR_REFEF_Msk (0x8000UL) /*!< REFEF (Bitfield-Mask: 0x01) */ +/* ======================================================== WDTRCR ========================================================= */ + #define R_WDT0_WDTRCR_RSTIRQS_Pos (7UL) /*!< RSTIRQS (Bit 7) */ + #define R_WDT0_WDTRCR_RSTIRQS_Msk (0x80UL) /*!< RSTIRQS (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_IIC0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= ICCR1 ========================================================= */ + #define R_IIC0_ICCR1_SDAI_Pos (0UL) /*!< SDAI (Bit 0) */ + #define R_IIC0_ICCR1_SDAI_Msk (0x1UL) /*!< SDAI (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_SDAO_Pos (2UL) /*!< SDAO (Bit 2) */ + #define R_IIC0_ICCR1_SDAO_Msk (0x4UL) /*!< SDAO (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_SOWP_Pos (4UL) /*!< SOWP (Bit 4) */ + #define R_IIC0_ICCR1_SOWP_Msk (0x10UL) /*!< SOWP (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_IICRST_Pos (6UL) /*!< IICRST (Bit 6) */ + #define R_IIC0_ICCR1_IICRST_Msk (0x40UL) /*!< IICRST (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR1_ICE_Pos (7UL) /*!< ICE (Bit 7) */ + #define R_IIC0_ICCR1_ICE_Msk (0x80UL) /*!< ICE (Bitfield-Mask: 0x01) */ +/* ========================================================= ICCR2 ========================================================= */ + #define R_IIC0_ICCR2_ST_Pos (1UL) /*!< ST (Bit 1) */ + #define R_IIC0_ICCR2_ST_Msk (0x2UL) /*!< ST (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_SP_Pos (3UL) /*!< SP (Bit 3) */ + #define R_IIC0_ICCR2_SP_Msk (0x8UL) /*!< SP (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_MST_Pos (6UL) /*!< MST (Bit 6) */ + #define R_IIC0_ICCR2_MST_Msk (0x40UL) /*!< MST (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICCR2_BBSY_Pos (7UL) /*!< BBSY (Bit 7) */ + #define R_IIC0_ICCR2_BBSY_Msk (0x80UL) /*!< BBSY (Bitfield-Mask: 0x01) */ +/* ========================================================= ICMR1 ========================================================= */ + #define R_IIC0_ICMR1_BC_Pos (0UL) /*!< BC (Bit 0) */ + #define R_IIC0_ICMR1_BC_Msk (0x7UL) /*!< BC (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_CKS_Pos (4UL) /*!< CKS (Bit 4) */ + #define R_IIC0_ICMR1_CKS_Msk (0x70UL) /*!< CKS (Bitfield-Mask: 0x07) */ + #define R_IIC0_ICMR1_MTWP_Pos (7UL) /*!< MTWP (Bit 7) */ + #define R_IIC0_ICMR1_MTWP_Msk (0x80UL) /*!< MTWP (Bitfield-Mask: 0x01) */ +/* ========================================================= ICMR2 ========================================================= */ + #define R_IIC0_ICMR2_TMOS_Pos (0UL) /*!< TMOS (Bit 0) */ + #define R_IIC0_ICMR2_TMOS_Msk (0x1UL) /*!< TMOS (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_TMOH_Pos (2UL) /*!< TMOH (Bit 2) */ + #define R_IIC0_ICMR2_TMOH_Msk (0x4UL) /*!< TMOH (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_DLCS_Pos (7UL) /*!< DLCS (Bit 7) */ + #define R_IIC0_ICMR2_DLCS_Msk (0x80UL) /*!< DLCS (Bitfield-Mask: 0x01) */ +/* ========================================================= ICMR3 ========================================================= */ + #define R_IIC0_ICMR3_NF_Pos (0UL) /*!< NF (Bit 0) */ + #define R_IIC0_ICMR3_NF_Msk (0x3UL) /*!< NF (Bitfield-Mask: 0x03) */ + #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_ACKBT_Pos (3UL) /*!< ACKBT (Bit 3) */ + #define R_IIC0_ICMR3_ACKBT_Msk (0x8UL) /*!< ACKBT (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_RDRFS_Pos (5UL) /*!< RDRFS (Bit 5) */ + #define R_IIC0_ICMR3_RDRFS_Msk (0x20UL) /*!< RDRFS (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_SMBS_Pos (7UL) /*!< SMBS (Bit 7) */ + #define R_IIC0_ICMR3_SMBS_Msk (0x80UL) /*!< SMBS (Bitfield-Mask: 0x01) */ +/* ========================================================= ICFER ========================================================= */ + #define R_IIC0_ICFER_TMOE_Pos (0UL) /*!< TMOE (Bit 0) */ + #define R_IIC0_ICFER_TMOE_Msk (0x1UL) /*!< TMOE (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_NALE_Pos (2UL) /*!< NALE (Bit 2) */ + #define R_IIC0_ICFER_NALE_Msk (0x4UL) /*!< NALE (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_NACKE_Pos (4UL) /*!< NACKE (Bit 4) */ + #define R_IIC0_ICFER_NACKE_Msk (0x10UL) /*!< NACKE (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_SCLE_Pos (6UL) /*!< SCLE (Bit 6) */ + #define R_IIC0_ICFER_SCLE_Msk (0x40UL) /*!< SCLE (Bitfield-Mask: 0x01) */ +/* ========================================================= ICSER ========================================================= */ + #define R_IIC0_ICSER_SAR0E_Pos (0UL) /*!< SAR0E (Bit 0) */ + #define R_IIC0_ICSER_SAR0E_Msk (0x1UL) /*!< SAR0E (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_SAR2E_Pos (2UL) /*!< SAR2E (Bit 2) */ + #define R_IIC0_ICSER_SAR2E_Msk (0x4UL) /*!< SAR2E (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_DIDE_Pos (5UL) /*!< DIDE (Bit 5) */ + #define R_IIC0_ICSER_DIDE_Msk (0x20UL) /*!< DIDE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSER_HOAE_Pos (7UL) /*!< HOAE (Bit 7) */ + #define R_IIC0_ICSER_HOAE_Msk (0x80UL) /*!< HOAE (Bitfield-Mask: 0x01) */ +/* ========================================================= ICIER ========================================================= */ + #define R_IIC0_ICIER_TMOIE_Pos (0UL) /*!< TMOIE (Bit 0) */ + #define R_IIC0_ICIER_TMOIE_Msk (0x1UL) /*!< TMOIE (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_STIE_Pos (2UL) /*!< STIE (Bit 2) */ + #define R_IIC0_ICIER_STIE_Msk (0x4UL) /*!< STIE (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_NAKIE_Pos (4UL) /*!< NAKIE (Bit 4) */ + #define R_IIC0_ICIER_NAKIE_Msk (0x10UL) /*!< NAKIE (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_TEIE_Pos (6UL) /*!< TEIE (Bit 6) */ + #define R_IIC0_ICIER_TEIE_Msk (0x40UL) /*!< TEIE (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICIER_TIE_Pos (7UL) /*!< TIE (Bit 7) */ + #define R_IIC0_ICIER_TIE_Msk (0x80UL) /*!< TIE (Bitfield-Mask: 0x01) */ +/* ========================================================= ICSR1 ========================================================= */ + #define R_IIC0_ICSR1_AAS0_Pos (0UL) /*!< AAS0 (Bit 0) */ + #define R_IIC0_ICSR1_AAS0_Msk (0x1UL) /*!< AAS0 (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_AAS2_Pos (2UL) /*!< AAS2 (Bit 2) */ + #define R_IIC0_ICSR1_AAS2_Msk (0x4UL) /*!< AAS2 (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_DID_Pos (5UL) /*!< DID (Bit 5) */ + #define R_IIC0_ICSR1_DID_Msk (0x20UL) /*!< DID (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR1_HOA_Pos (7UL) /*!< HOA (Bit 7) */ + #define R_IIC0_ICSR1_HOA_Msk (0x80UL) /*!< HOA (Bitfield-Mask: 0x01) */ +/* ========================================================= ICSR2 ========================================================= */ + #define R_IIC0_ICSR2_TMOF_Pos (0UL) /*!< TMOF (Bit 0) */ + #define R_IIC0_ICSR2_TMOF_Msk (0x1UL) /*!< TMOF (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_START_Pos (2UL) /*!< START (Bit 2) */ + #define R_IIC0_ICSR2_START_Msk (0x4UL) /*!< START (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_NACKF_Pos (4UL) /*!< NACKF (Bit 4) */ + #define R_IIC0_ICSR2_NACKF_Msk (0x10UL) /*!< NACKF (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_TEND_Pos (6UL) /*!< TEND (Bit 6) */ + #define R_IIC0_ICSR2_TEND_Msk (0x40UL) /*!< TEND (Bitfield-Mask: 0x01) */ + #define R_IIC0_ICSR2_TDRE_Pos (7UL) /*!< TDRE (Bit 7) */ + #define R_IIC0_ICSR2_TDRE_Msk (0x80UL) /*!< TDRE (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 ========================================================= */ +/* ========================================================= ICDRR ========================================================= */ + +/* =========================================================================================================================== */ +/* ================ R_DOC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= DOCR ========================================================== */ + #define R_DOC_DOCR_OMS_Pos (0UL) /*!< OMS (Bit 0) */ + #define R_DOC_DOCR_OMS_Msk (0x3UL) /*!< OMS (Bitfield-Mask: 0x03) */ + #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_DOPCIE_Pos (4UL) /*!< DOPCIE (Bit 4) */ + #define R_DOC_DOCR_DOPCIE_Msk (0x10UL) /*!< DOPCIE (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_DOPCFCL_Pos (6UL) /*!< DOPCFCL (Bit 6) */ + #define R_DOC_DOCR_DOPCFCL_Msk (0x40UL) /*!< DOPCFCL (Bitfield-Mask: 0x01) */ +/* ========================================================= DODIR ========================================================= */ +/* ========================================================= DODSR ========================================================= */ + +/* =========================================================================================================================== */ +/* ================ R_ADC121 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= ADCSR ========================================================= */ + #define R_ADC121_ADCSR_DBLANS_Pos (0UL) /*!< DBLANS (Bit 0) */ + #define R_ADC121_ADCSR_DBLANS_Msk (0x1fUL) /*!< DBLANS (Bitfield-Mask: 0x1f) */ + #define R_ADC121_ADCSR_GBADIE_Pos (6UL) /*!< GBADIE (Bit 6) */ + #define R_ADC121_ADCSR_GBADIE_Msk (0x40UL) /*!< GBADIE (Bitfield-Mask: 0x01) */ + #define R_ADC121_ADCSR_DBLE_Pos (7UL) /*!< DBLE (Bit 7) */ + #define R_ADC121_ADCSR_DBLE_Msk (0x80UL) /*!< DBLE (Bitfield-Mask: 0x01) */ + #define R_ADC121_ADCSR_EXTRG_Pos (8UL) /*!< EXTRG (Bit 8) */ + #define R_ADC121_ADCSR_EXTRG_Msk (0x100UL) /*!< EXTRG (Bitfield-Mask: 0x01) */ + #define R_ADC121_ADCSR_TRGE_Pos (9UL) /*!< TRGE (Bit 9) */ + #define R_ADC121_ADCSR_TRGE_Msk (0x200UL) /*!< TRGE (Bitfield-Mask: 0x01) */ + #define R_ADC121_ADCSR_ADIE_Pos (12UL) /*!< ADIE (Bit 12) */ + #define R_ADC121_ADCSR_ADIE_Msk (0x1000UL) /*!< ADIE (Bitfield-Mask: 0x01) */ + #define R_ADC121_ADCSR_ADCS_Pos (13UL) /*!< ADCS (Bit 13) */ + #define R_ADC121_ADCSR_ADCS_Msk (0x6000UL) /*!< ADCS (Bitfield-Mask: 0x03) */ + #define R_ADC121_ADCSR_ADST_Pos (15UL) /*!< ADST (Bit 15) */ + #define R_ADC121_ADCSR_ADST_Msk (0x8000UL) /*!< ADST (Bitfield-Mask: 0x01) */ +/* ======================================================== ADANSA0 ======================================================== */ + #define R_ADC121_ADANSA0_ANSA0_Pos (0UL) /*!< ANSA0 (Bit 0) */ + #define R_ADC121_ADANSA0_ANSA0_Msk (0xffUL) /*!< ANSA0 (Bitfield-Mask: 0xff) */ +/* ======================================================== ADADS0 ========================================================= */ + #define R_ADC121_ADADS0_ADS0_Pos (0UL) /*!< ADS0 (Bit 0) */ + #define R_ADC121_ADADS0_ADS0_Msk (0xffUL) /*!< ADS0 (Bitfield-Mask: 0xff) */ +/* ========================================================= ADADC ========================================================= */ + #define R_ADC121_ADADC_ADC_Pos (0UL) /*!< ADC (Bit 0) */ + #define R_ADC121_ADADC_ADC_Msk (0x7UL) /*!< ADC (Bitfield-Mask: 0x07) */ + #define R_ADC121_ADADC_AVEE_Pos (7UL) /*!< AVEE (Bit 7) */ + #define R_ADC121_ADADC_AVEE_Msk (0x80UL) /*!< AVEE (Bitfield-Mask: 0x01) */ +/* ========================================================= ADCER ========================================================= */ + #define R_ADC121_ADCER_ADPRC_Pos (1UL) /*!< ADPRC (Bit 1) */ + #define R_ADC121_ADCER_ADPRC_Msk (0x6UL) /*!< ADPRC (Bitfield-Mask: 0x03) */ + #define R_ADC121_ADCER_ACE_Pos (5UL) /*!< ACE (Bit 5) */ + #define R_ADC121_ADCER_ACE_Msk (0x20UL) /*!< ACE (Bitfield-Mask: 0x01) */ + #define R_ADC121_ADCER_ADRFMT_Pos (15UL) /*!< ADRFMT (Bit 15) */ + #define R_ADC121_ADCER_ADRFMT_Msk (0x8000UL) /*!< ADRFMT (Bitfield-Mask: 0x01) */ +/* ======================================================== ADSTRGR ======================================================== */ + #define R_ADC121_ADSTRGR_TRSB_Pos (0UL) /*!< TRSB (Bit 0) */ + #define R_ADC121_ADSTRGR_TRSB_Msk (0x3fUL) /*!< TRSB (Bitfield-Mask: 0x3f) */ + #define R_ADC121_ADSTRGR_TRSA_Pos (8UL) /*!< TRSA (Bit 8) */ + #define R_ADC121_ADSTRGR_TRSA_Msk (0x3f00UL) /*!< TRSA (Bitfield-Mask: 0x3f) */ +/* ======================================================== ADANSB0 ======================================================== */ + #define R_ADC121_ADANSB0_ANSB0_Pos (0UL) /*!< ANSB0 (Bit 0) */ + #define R_ADC121_ADANSB0_ANSB0_Msk (0xffUL) /*!< ANSB0 (Bitfield-Mask: 0xff) */ +/* ======================================================== ADDBLDR ======================================================== */ + #define R_ADC121_ADDBLDR_DBLDR_Pos (0UL) /*!< DBLDR (Bit 0) */ + #define R_ADC121_ADDBLDR_DBLDR_Msk (0xffffUL) /*!< DBLDR (Bitfield-Mask: 0xffff) */ +/* ========================================================= ADDR ========================================================== */ + #define R_ADC121_ADDR_DR_Pos (0UL) /*!< DR (Bit 0) */ + #define R_ADC121_ADDR_DR_Msk (0xffffUL) /*!< DR (Bitfield-Mask: 0xffff) */ +/* ======================================================== ADSHCR ========================================================= */ + #define R_ADC121_ADSHCR_SSTSH_Pos (0UL) /*!< SSTSH (Bit 0) */ + #define R_ADC121_ADSHCR_SSTSH_Msk (0xffUL) /*!< SSTSH (Bitfield-Mask: 0xff) */ + #define R_ADC121_ADSHCR_SHANS_Pos (8UL) /*!< SHANS (Bit 8) */ + #define R_ADC121_ADSHCR_SHANS_Msk (0x700UL) /*!< SHANS (Bitfield-Mask: 0x07) */ +/* ======================================================== ADELCCR ======================================================== */ + #define R_ADC121_ADELCCR_ELCC_Pos (0UL) /*!< ELCC (Bit 0) */ + #define R_ADC121_ADELCCR_ELCC_Msk (0x3UL) /*!< ELCC (Bitfield-Mask: 0x03) */ + #define R_ADC121_ADELCCR_GCELC_Pos (2UL) /*!< GCELC (Bit 2) */ + #define R_ADC121_ADELCCR_GCELC_Msk (0x4UL) /*!< GCELC (Bitfield-Mask: 0x01) */ +/* ======================================================== ADGSPCR ======================================================== */ + #define R_ADC121_ADGSPCR_PGS_Pos (0UL) /*!< PGS (Bit 0) */ + #define R_ADC121_ADGSPCR_PGS_Msk (0x1UL) /*!< PGS (Bitfield-Mask: 0x01) */ + #define R_ADC121_ADGSPCR_GBRSCN_Pos (1UL) /*!< GBRSCN (Bit 1) */ + #define R_ADC121_ADGSPCR_GBRSCN_Msk (0x2UL) /*!< GBRSCN (Bitfield-Mask: 0x01) */ + #define R_ADC121_ADGSPCR_LGRRS_Pos (14UL) /*!< LGRRS (Bit 14) */ + #define R_ADC121_ADGSPCR_LGRRS_Msk (0x4000UL) /*!< LGRRS (Bitfield-Mask: 0x01) */ + #define R_ADC121_ADGSPCR_GBRP_Pos (15UL) /*!< GBRP (Bit 15) */ + #define R_ADC121_ADGSPCR_GBRP_Msk (0x8000UL) /*!< GBRP (Bitfield-Mask: 0x01) */ +/* ======================================================= ADDBLDRA ======================================================== */ + #define R_ADC121_ADDBLDRA_DBLDRA_Pos (0UL) /*!< DBLDRA (Bit 0) */ + #define R_ADC121_ADDBLDRA_DBLDRA_Msk (0xffffUL) /*!< DBLDRA (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADDBLDRB ======================================================== */ + #define R_ADC121_ADDBLDRB_DBLDRB_Pos (0UL) /*!< DBLDRB (Bit 0) */ + #define R_ADC121_ADDBLDRB_DBLDRB_Msk (0xffffUL) /*!< DBLDRB (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADWINMON ======================================================== */ + #define R_ADC121_ADWINMON_MONCOMB_Pos (0UL) /*!< MONCOMB (Bit 0) */ + #define R_ADC121_ADWINMON_MONCOMB_Msk (0x1UL) /*!< MONCOMB (Bitfield-Mask: 0x01) */ + #define R_ADC121_ADWINMON_MONCMPA_Pos (4UL) /*!< MONCMPA (Bit 4) */ + #define R_ADC121_ADWINMON_MONCMPA_Msk (0x10UL) /*!< MONCMPA (Bitfield-Mask: 0x01) */ + #define R_ADC121_ADWINMON_MONCMPB_Pos (5UL) /*!< MONCMPB (Bit 5) */ + #define R_ADC121_ADWINMON_MONCMPB_Msk (0x20UL) /*!< MONCMPB (Bitfield-Mask: 0x01) */ +/* ======================================================== ADCMPCR ======================================================== */ + #define R_ADC121_ADCMPCR_CMPAB_Pos (0UL) /*!< CMPAB (Bit 0) */ + #define R_ADC121_ADCMPCR_CMPAB_Msk (0x3UL) /*!< CMPAB (Bitfield-Mask: 0x03) */ + #define R_ADC121_ADCMPCR_CMPBE_Pos (9UL) /*!< CMPBE (Bit 9) */ + #define R_ADC121_ADCMPCR_CMPBE_Msk (0x200UL) /*!< CMPBE (Bitfield-Mask: 0x01) */ + #define R_ADC121_ADCMPCR_CMPAE_Pos (11UL) /*!< CMPAE (Bit 11) */ + #define R_ADC121_ADCMPCR_CMPAE_Msk (0x800UL) /*!< CMPAE (Bitfield-Mask: 0x01) */ + #define R_ADC121_ADCMPCR_CMPBIE_Pos (13UL) /*!< CMPBIE (Bit 13) */ + #define R_ADC121_ADCMPCR_CMPBIE_Msk (0x2000UL) /*!< CMPBIE (Bitfield-Mask: 0x01) */ + #define R_ADC121_ADCMPCR_WCMPE_Pos (14UL) /*!< WCMPE (Bit 14) */ + #define R_ADC121_ADCMPCR_WCMPE_Msk (0x4000UL) /*!< WCMPE (Bitfield-Mask: 0x01) */ + #define R_ADC121_ADCMPCR_CMPAIE_Pos (15UL) /*!< CMPAIE (Bit 15) */ + #define R_ADC121_ADCMPCR_CMPAIE_Msk (0x8000UL) /*!< CMPAIE (Bitfield-Mask: 0x01) */ +/* ====================================================== ADCMPANSR0 ======================================================= */ + #define R_ADC121_ADCMPANSR0_CMPCHA0_Pos (0UL) /*!< CMPCHA0 (Bit 0) */ + #define R_ADC121_ADCMPANSR0_CMPCHA0_Msk (0xffUL) /*!< CMPCHA0 (Bitfield-Mask: 0xff) */ +/* ======================================================= ADCMPLR0 ======================================================== */ + #define R_ADC121_ADCMPLR0_CMPLCHA0_Pos (0UL) /*!< CMPLCHA0 (Bit 0) */ + #define R_ADC121_ADCMPLR0_CMPLCHA0_Msk (0xffUL) /*!< CMPLCHA0 (Bitfield-Mask: 0xff) */ +/* ======================================================= ADCMPDR0 ======================================================== */ + #define R_ADC121_ADCMPDR0_CMPLLA_Pos (0UL) /*!< CMPLLA (Bit 0) */ + #define R_ADC121_ADCMPDR0_CMPLLA_Msk (0xffffUL) /*!< CMPLLA (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADCMPDR1 ======================================================== */ + #define R_ADC121_ADCMPDR1_CMPULA_Pos (0UL) /*!< CMPULA (Bit 0) */ + #define R_ADC121_ADCMPDR1_CMPULA_Msk (0xffffUL) /*!< CMPULA (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADCMPSR0 ======================================================== */ + #define R_ADC121_ADCMPSR0_CMPSTCHA0_Pos (0UL) /*!< CMPSTCHA0 (Bit 0) */ + #define R_ADC121_ADCMPSR0_CMPSTCHA0_Msk (0xffUL) /*!< CMPSTCHA0 (Bitfield-Mask: 0xff) */ +/* ======================================================= ADCMPBNSR ======================================================= */ + #define R_ADC121_ADCMPBNSR_CMPCHB_Pos (0UL) /*!< CMPCHB (Bit 0) */ + #define R_ADC121_ADCMPBNSR_CMPCHB_Msk (0x3fUL) /*!< CMPCHB (Bitfield-Mask: 0x3f) */ + #define R_ADC121_ADCMPBNSR_CMPLB_Pos (7UL) /*!< CMPLB (Bit 7) */ + #define R_ADC121_ADCMPBNSR_CMPLB_Msk (0x80UL) /*!< CMPLB (Bitfield-Mask: 0x01) */ +/* ======================================================= ADWINLLB ======================================================== */ + #define R_ADC121_ADWINLLB_CMPLLB_Pos (0UL) /*!< CMPLLB (Bit 0) */ + #define R_ADC121_ADWINLLB_CMPLLB_Msk (0xffffUL) /*!< CMPLLB (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADWINULB ======================================================== */ + #define R_ADC121_ADWINULB_CMPULB_Pos (0UL) /*!< CMPULB (Bit 0) */ + #define R_ADC121_ADWINULB_CMPULB_Msk (0xffffUL) /*!< CMPULB (Bitfield-Mask: 0xffff) */ +/* ======================================================= ADCMPBSR ======================================================== */ + #define R_ADC121_ADCMPBSR_CMPSTB_Pos (0UL) /*!< CMPSTB (Bit 0) */ + #define R_ADC121_ADCMPBSR_CMPSTB_Msk (0x1UL) /*!< CMPSTB (Bitfield-Mask: 0x01) */ +/* ======================================================== ADANSC0 ======================================================== */ + #define R_ADC121_ADANSC0_ANSC0_Pos (0UL) /*!< ANSC0 (Bit 0) */ + #define R_ADC121_ADANSC0_ANSC0_Msk (0xffUL) /*!< ANSC0 (Bitfield-Mask: 0xff) */ +/* ======================================================= ADGCTRGR ======================================================== */ + #define R_ADC121_ADGCTRGR_TRSC_Pos (0UL) /*!< TRSC (Bit 0) */ + #define R_ADC121_ADGCTRGR_TRSC_Msk (0x3fUL) /*!< TRSC (Bitfield-Mask: 0x3f) */ + #define R_ADC121_ADGCTRGR_GCADIE_Pos (6UL) /*!< GCADIE (Bit 6) */ + #define R_ADC121_ADGCTRGR_GCADIE_Msk (0x40UL) /*!< GCADIE (Bitfield-Mask: 0x01) */ + #define R_ADC121_ADGCTRGR_GRCE_Pos (7UL) /*!< GRCE (Bit 7) */ + #define R_ADC121_ADGCTRGR_GRCE_Msk (0x80UL) /*!< GRCE (Bitfield-Mask: 0x01) */ +/* ======================================================== ADSSTR ========================================================= */ + #define R_ADC121_ADSSTR_SST_Pos (0UL) /*!< SST (Bit 0) */ + #define R_ADC121_ADSSTR_SST_Msk (0xffUL) /*!< SST (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_TSU ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= TSUSM ========================================================= */ + #define R_TSU_TSUSM_TSEN_Pos (0UL) /*!< TSEN (Bit 0) */ + #define R_TSU_TSUSM_TSEN_Msk (0x1UL) /*!< TSEN (Bitfield-Mask: 0x01) */ + #define R_TSU_TSUSM_ADCEN_Pos (1UL) /*!< ADCEN (Bit 1) */ + #define R_TSU_TSUSM_ADCEN_Msk (0x2UL) /*!< ADCEN (Bitfield-Mask: 0x01) */ +/* ========================================================= TSUST ========================================================= */ + #define R_TSU_TSUST_START_Pos (0UL) /*!< START (Bit 0) */ + #define R_TSU_TSUST_START_Msk (0x1UL) /*!< START (Bitfield-Mask: 0x01) */ +/* ======================================================== TSUSCS ========================================================= */ + #define R_TSU_TSUSCS_CKDIV_Pos (3UL) /*!< CKDIV (Bit 3) */ + #define R_TSU_TSUSCS_CKDIV_Msk (0x8UL) /*!< CKDIV (Bitfield-Mask: 0x01) */ +/* ======================================================== TSUSAD ========================================================= */ + #define R_TSU_TSUSAD_DOUT_Pos (0UL) /*!< DOUT (Bit 0) */ + #define R_TSU_TSUSAD_DOUT_Msk (0xfffUL) /*!< DOUT (Bitfield-Mask: 0xfff) */ +/* ========================================================= TSUSS ========================================================= */ + #define R_TSU_TSUSS_CONV_Pos (0UL) /*!< CONV (Bit 0) */ + #define R_TSU_TSUSS_CONV_Msk (0x1UL) /*!< CONV (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_POEG1 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== POEG1GA ======================================================== */ + #define R_POEG1_POEG1GA_PIDF_Pos (0UL) /*!< PIDF (Bit 0) */ + #define R_POEG1_POEG1GA_PIDF_Msk (0x1UL) /*!< PIDF (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GA_IOCF_Pos (1UL) /*!< IOCF (Bit 1) */ + #define R_POEG1_POEG1GA_IOCF_Msk (0x2UL) /*!< IOCF (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GA_OSTPF_Pos (2UL) /*!< OSTPF (Bit 2) */ + #define R_POEG1_POEG1GA_OSTPF_Msk (0x4UL) /*!< OSTPF (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GA_SSF_Pos (3UL) /*!< SSF (Bit 3) */ + #define R_POEG1_POEG1GA_SSF_Msk (0x8UL) /*!< SSF (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GA_PIDE_Pos (4UL) /*!< PIDE (Bit 4) */ + #define R_POEG1_POEG1GA_PIDE_Msk (0x10UL) /*!< PIDE (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GA_IOCE_Pos (5UL) /*!< IOCE (Bit 5) */ + #define R_POEG1_POEG1GA_IOCE_Msk (0x20UL) /*!< IOCE (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GA_OSTPE_Pos (6UL) /*!< OSTPE (Bit 6) */ + #define R_POEG1_POEG1GA_OSTPE_Msk (0x40UL) /*!< OSTPE (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GA_ST_Pos (16UL) /*!< ST (Bit 16) */ + #define R_POEG1_POEG1GA_ST_Msk (0x10000UL) /*!< ST (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GA_INV_Pos (28UL) /*!< INV (Bit 28) */ + #define R_POEG1_POEG1GA_INV_Msk (0x10000000UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GA_NFEN_Pos (29UL) /*!< NFEN (Bit 29) */ + #define R_POEG1_POEG1GA_NFEN_Msk (0x20000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GA_NFCS_Pos (30UL) /*!< NFCS (Bit 30) */ + #define R_POEG1_POEG1GA_NFCS_Msk (0xc0000000UL) /*!< NFCS (Bitfield-Mask: 0x03) */ +/* ======================================================== POEG1GB ======================================================== */ + #define R_POEG1_POEG1GB_PIDF_Pos (0UL) /*!< PIDF (Bit 0) */ + #define R_POEG1_POEG1GB_PIDF_Msk (0x1UL) /*!< PIDF (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GB_IOCF_Pos (1UL) /*!< IOCF (Bit 1) */ + #define R_POEG1_POEG1GB_IOCF_Msk (0x2UL) /*!< IOCF (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GB_OSTPF_Pos (2UL) /*!< OSTPF (Bit 2) */ + #define R_POEG1_POEG1GB_OSTPF_Msk (0x4UL) /*!< OSTPF (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GB_SSF_Pos (3UL) /*!< SSF (Bit 3) */ + #define R_POEG1_POEG1GB_SSF_Msk (0x8UL) /*!< SSF (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GB_PIDE_Pos (4UL) /*!< PIDE (Bit 4) */ + #define R_POEG1_POEG1GB_PIDE_Msk (0x10UL) /*!< PIDE (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GB_IOCE_Pos (5UL) /*!< IOCE (Bit 5) */ + #define R_POEG1_POEG1GB_IOCE_Msk (0x20UL) /*!< IOCE (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GB_OSTPE_Pos (6UL) /*!< OSTPE (Bit 6) */ + #define R_POEG1_POEG1GB_OSTPE_Msk (0x40UL) /*!< OSTPE (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GB_ST_Pos (16UL) /*!< ST (Bit 16) */ + #define R_POEG1_POEG1GB_ST_Msk (0x10000UL) /*!< ST (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GB_INV_Pos (28UL) /*!< INV (Bit 28) */ + #define R_POEG1_POEG1GB_INV_Msk (0x10000000UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GB_NFEN_Pos (29UL) /*!< NFEN (Bit 29) */ + #define R_POEG1_POEG1GB_NFEN_Msk (0x20000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GB_NFCS_Pos (30UL) /*!< NFCS (Bit 30) */ + #define R_POEG1_POEG1GB_NFCS_Msk (0xc0000000UL) /*!< NFCS (Bitfield-Mask: 0x03) */ +/* ======================================================== POEG1GC ======================================================== */ + #define R_POEG1_POEG1GC_PIDF_Pos (0UL) /*!< PIDF (Bit 0) */ + #define R_POEG1_POEG1GC_PIDF_Msk (0x1UL) /*!< PIDF (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GC_IOCF_Pos (1UL) /*!< IOCF (Bit 1) */ + #define R_POEG1_POEG1GC_IOCF_Msk (0x2UL) /*!< IOCF (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GC_OSTPF_Pos (2UL) /*!< OSTPF (Bit 2) */ + #define R_POEG1_POEG1GC_OSTPF_Msk (0x4UL) /*!< OSTPF (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GC_SSF_Pos (3UL) /*!< SSF (Bit 3) */ + #define R_POEG1_POEG1GC_SSF_Msk (0x8UL) /*!< SSF (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GC_PIDE_Pos (4UL) /*!< PIDE (Bit 4) */ + #define R_POEG1_POEG1GC_PIDE_Msk (0x10UL) /*!< PIDE (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GC_IOCE_Pos (5UL) /*!< IOCE (Bit 5) */ + #define R_POEG1_POEG1GC_IOCE_Msk (0x20UL) /*!< IOCE (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GC_OSTPE_Pos (6UL) /*!< OSTPE (Bit 6) */ + #define R_POEG1_POEG1GC_OSTPE_Msk (0x40UL) /*!< OSTPE (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GC_ST_Pos (16UL) /*!< ST (Bit 16) */ + #define R_POEG1_POEG1GC_ST_Msk (0x10000UL) /*!< ST (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GC_INV_Pos (28UL) /*!< INV (Bit 28) */ + #define R_POEG1_POEG1GC_INV_Msk (0x10000000UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GC_NFEN_Pos (29UL) /*!< NFEN (Bit 29) */ + #define R_POEG1_POEG1GC_NFEN_Msk (0x20000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GC_NFCS_Pos (30UL) /*!< NFCS (Bit 30) */ + #define R_POEG1_POEG1GC_NFCS_Msk (0xc0000000UL) /*!< NFCS (Bitfield-Mask: 0x03) */ +/* ======================================================== POEG1GD ======================================================== */ + #define R_POEG1_POEG1GD_PIDF_Pos (0UL) /*!< PIDF (Bit 0) */ + #define R_POEG1_POEG1GD_PIDF_Msk (0x1UL) /*!< PIDF (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GD_IOCF_Pos (1UL) /*!< IOCF (Bit 1) */ + #define R_POEG1_POEG1GD_IOCF_Msk (0x2UL) /*!< IOCF (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GD_OSTPF_Pos (2UL) /*!< OSTPF (Bit 2) */ + #define R_POEG1_POEG1GD_OSTPF_Msk (0x4UL) /*!< OSTPF (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GD_SSF_Pos (3UL) /*!< SSF (Bit 3) */ + #define R_POEG1_POEG1GD_SSF_Msk (0x8UL) /*!< SSF (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GD_PIDE_Pos (4UL) /*!< PIDE (Bit 4) */ + #define R_POEG1_POEG1GD_PIDE_Msk (0x10UL) /*!< PIDE (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GD_IOCE_Pos (5UL) /*!< IOCE (Bit 5) */ + #define R_POEG1_POEG1GD_IOCE_Msk (0x20UL) /*!< IOCE (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GD_OSTPE_Pos (6UL) /*!< OSTPE (Bit 6) */ + #define R_POEG1_POEG1GD_OSTPE_Msk (0x40UL) /*!< OSTPE (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GD_ST_Pos (16UL) /*!< ST (Bit 16) */ + #define R_POEG1_POEG1GD_ST_Msk (0x10000UL) /*!< ST (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GD_INV_Pos (28UL) /*!< INV (Bit 28) */ + #define R_POEG1_POEG1GD_INV_Msk (0x10000000UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GD_NFEN_Pos (29UL) /*!< NFEN (Bit 29) */ + #define R_POEG1_POEG1GD_NFEN_Msk (0x20000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ + #define R_POEG1_POEG1GD_NFCS_Pos (30UL) /*!< NFCS (Bit 30) */ + #define R_POEG1_POEG1GD_NFCS_Msk (0xc0000000UL) /*!< NFCS (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ R_DMAC0 ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_ICU_NS ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= NS_SWINT ======================================================== */ + #define R_ICU_NS_NS_SWINT_IC0_Pos (0UL) /*!< IC0 (Bit 0) */ + #define R_ICU_NS_NS_SWINT_IC0_Msk (0x1UL) /*!< IC0 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_SWINT_IC1_Pos (1UL) /*!< IC1 (Bit 1) */ + #define R_ICU_NS_NS_SWINT_IC1_Msk (0x2UL) /*!< IC1 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_SWINT_IC2_Pos (2UL) /*!< IC2 (Bit 2) */ + #define R_ICU_NS_NS_SWINT_IC2_Msk (0x4UL) /*!< IC2 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_SWINT_IC3_Pos (3UL) /*!< IC3 (Bit 3) */ + #define R_ICU_NS_NS_SWINT_IC3_Msk (0x8UL) /*!< IC3 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_SWINT_IC4_Pos (4UL) /*!< IC4 (Bit 4) */ + #define R_ICU_NS_NS_SWINT_IC4_Msk (0x10UL) /*!< IC4 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_SWINT_IC5_Pos (5UL) /*!< IC5 (Bit 5) */ + #define R_ICU_NS_NS_SWINT_IC5_Msk (0x20UL) /*!< IC5 (Bitfield-Mask: 0x01) */ +/* =================================================== NS_PORTNF_FLTSEL ==================================================== */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT0_Pos (0UL) /*!< FLT0 (Bit 0) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT0_Msk (0x1UL) /*!< FLT0 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT1_Pos (1UL) /*!< FLT1 (Bit 1) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT1_Msk (0x2UL) /*!< FLT1 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT2_Pos (2UL) /*!< FLT2 (Bit 2) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT2_Msk (0x4UL) /*!< FLT2 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT3_Pos (3UL) /*!< FLT3 (Bit 3) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT3_Msk (0x8UL) /*!< FLT3 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT4_Pos (4UL) /*!< FLT4 (Bit 4) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT4_Msk (0x10UL) /*!< FLT4 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT5_Pos (5UL) /*!< FLT5 (Bit 5) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT5_Msk (0x20UL) /*!< FLT5 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT6_Pos (6UL) /*!< FLT6 (Bit 6) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT6_Msk (0x40UL) /*!< FLT6 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT7_Pos (7UL) /*!< FLT7 (Bit 7) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT7_Msk (0x80UL) /*!< FLT7 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT8_Pos (8UL) /*!< FLT8 (Bit 8) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT8_Msk (0x100UL) /*!< FLT8 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT9_Pos (9UL) /*!< FLT9 (Bit 9) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT9_Msk (0x200UL) /*!< FLT9 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT10_Pos (10UL) /*!< FLT10 (Bit 10) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT10_Msk (0x400UL) /*!< FLT10 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT11_Pos (11UL) /*!< FLT11 (Bit 11) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT11_Msk (0x800UL) /*!< FLT11 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT12_Pos (12UL) /*!< FLT12 (Bit 12) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT12_Msk (0x1000UL) /*!< FLT12 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT13_Pos (13UL) /*!< FLT13 (Bit 13) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLT13_Msk (0x2000UL) /*!< FLT13 (Bitfield-Mask: 0x01) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLTDRQ_Pos (14UL) /*!< FLTDRQ (Bit 14) */ + #define R_ICU_NS_NS_PORTNF_FLTSEL_FLTDRQ_Msk (0x4000UL) /*!< FLTDRQ (Bitfield-Mask: 0x01) */ +/* =================================================== NS_PORTNF_CLKSEL ==================================================== */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL0_Pos (0UL) /*!< CKSEL0 (Bit 0) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL0_Msk (0x3UL) /*!< CKSEL0 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL1_Pos (2UL) /*!< CKSEL1 (Bit 2) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL1_Msk (0xcUL) /*!< CKSEL1 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL2_Pos (4UL) /*!< CKSEL2 (Bit 4) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL2_Msk (0x30UL) /*!< CKSEL2 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL3_Pos (6UL) /*!< CKSEL3 (Bit 6) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL3_Msk (0xc0UL) /*!< CKSEL3 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL4_Pos (8UL) /*!< CKSEL4 (Bit 8) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL4_Msk (0x300UL) /*!< CKSEL4 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL5_Pos (10UL) /*!< CKSEL5 (Bit 10) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL5_Msk (0xc00UL) /*!< CKSEL5 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL6_Pos (12UL) /*!< CKSEL6 (Bit 12) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL6_Msk (0x3000UL) /*!< CKSEL6 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL7_Pos (14UL) /*!< CKSEL7 (Bit 14) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL7_Msk (0xc000UL) /*!< CKSEL7 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL8_Pos (16UL) /*!< CKSEL8 (Bit 16) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL8_Msk (0x30000UL) /*!< CKSEL8 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL9_Pos (18UL) /*!< CKSEL9 (Bit 18) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL9_Msk (0xc0000UL) /*!< CKSEL9 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL10_Pos (20UL) /*!< CKSEL10 (Bit 20) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL10_Msk (0x300000UL) /*!< CKSEL10 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL11_Pos (22UL) /*!< CKSEL11 (Bit 22) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL11_Msk (0xc00000UL) /*!< CKSEL11 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL12_Pos (24UL) /*!< CKSEL12 (Bit 24) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL12_Msk (0x3000000UL) /*!< CKSEL12 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL13_Pos (26UL) /*!< CKSEL13 (Bit 26) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSEL13_Msk (0xc000000UL) /*!< CKSEL13 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSELDREQ_Pos (28UL) /*!< CKSELDREQ (Bit 28) */ + #define R_ICU_NS_NS_PORTNF_CLKSEL_CKSELDREQ_Msk (0x30000000UL) /*!< CKSELDREQ (Bitfield-Mask: 0x03) */ +/* ===================================================== NS_PORTNF_MD ====================================================== */ + #define R_ICU_NS_NS_PORTNF_MD_MD0_Pos (0UL) /*!< MD0 (Bit 0) */ + #define R_ICU_NS_NS_PORTNF_MD_MD0_Msk (0x3UL) /*!< MD0 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_MD_MD1_Pos (2UL) /*!< MD1 (Bit 2) */ + #define R_ICU_NS_NS_PORTNF_MD_MD1_Msk (0xcUL) /*!< MD1 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_MD_MD2_Pos (4UL) /*!< MD2 (Bit 4) */ + #define R_ICU_NS_NS_PORTNF_MD_MD2_Msk (0x30UL) /*!< MD2 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_MD_MD3_Pos (6UL) /*!< MD3 (Bit 6) */ + #define R_ICU_NS_NS_PORTNF_MD_MD3_Msk (0xc0UL) /*!< MD3 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_MD_MD4_Pos (8UL) /*!< MD4 (Bit 8) */ + #define R_ICU_NS_NS_PORTNF_MD_MD4_Msk (0x300UL) /*!< MD4 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_MD_MD5_Pos (10UL) /*!< MD5 (Bit 10) */ + #define R_ICU_NS_NS_PORTNF_MD_MD5_Msk (0xc00UL) /*!< MD5 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_MD_MD6_Pos (12UL) /*!< MD6 (Bit 12) */ + #define R_ICU_NS_NS_PORTNF_MD_MD6_Msk (0x3000UL) /*!< MD6 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_MD_MD7_Pos (14UL) /*!< MD7 (Bit 14) */ + #define R_ICU_NS_NS_PORTNF_MD_MD7_Msk (0xc000UL) /*!< MD7 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_MD_MD8_Pos (16UL) /*!< MD8 (Bit 16) */ + #define R_ICU_NS_NS_PORTNF_MD_MD8_Msk (0x30000UL) /*!< MD8 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_MD_MD9_Pos (18UL) /*!< MD9 (Bit 18) */ + #define R_ICU_NS_NS_PORTNF_MD_MD9_Msk (0xc0000UL) /*!< MD9 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_MD_MD10_Pos (20UL) /*!< MD10 (Bit 20) */ + #define R_ICU_NS_NS_PORTNF_MD_MD10_Msk (0x300000UL) /*!< MD10 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_MD_MD11_Pos (22UL) /*!< MD11 (Bit 22) */ + #define R_ICU_NS_NS_PORTNF_MD_MD11_Msk (0xc00000UL) /*!< MD11 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_MD_MD12_Pos (24UL) /*!< MD12 (Bit 24) */ + #define R_ICU_NS_NS_PORTNF_MD_MD12_Msk (0x3000000UL) /*!< MD12 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_MD_MD13_Pos (26UL) /*!< MD13 (Bit 26) */ + #define R_ICU_NS_NS_PORTNF_MD_MD13_Msk (0xc000000UL) /*!< MD13 (Bitfield-Mask: 0x03) */ + #define R_ICU_NS_NS_PORTNF_MD_MDDRQ_Pos (28UL) /*!< MDDRQ (Bit 28) */ + #define R_ICU_NS_NS_PORTNF_MD_MDDRQ_Msk (0x30000000UL) /*!< MDDRQ (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ R_ELC ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= ELC_SSEL ======================================================== */ + #define R_ELC_ELC_SSEL_ELC_SEL0_Pos (0UL) /*!< ELC_SEL0 (Bit 0) */ + #define R_ELC_ELC_SSEL_ELC_SEL0_Msk (0x3ffUL) /*!< ELC_SEL0 (Bitfield-Mask: 0x3ff) */ + #define R_ELC_ELC_SSEL_ELC_SEL1_Pos (10UL) /*!< ELC_SEL1 (Bit 10) */ + #define R_ELC_ELC_SSEL_ELC_SEL1_Msk (0xffc00UL) /*!< ELC_SEL1 (Bitfield-Mask: 0x3ff) */ + #define R_ELC_ELC_SSEL_ELC_SEL2_Pos (20UL) /*!< ELC_SEL2 (Bit 20) */ + #define R_ELC_ELC_SSEL_ELC_SEL2_Msk (0x3ff00000UL) /*!< ELC_SEL2 (Bitfield-Mask: 0x3ff) */ + +/* =========================================================================================================================== */ +/* ================ R_DMA ================ */ +/* =========================================================================================================================== */ + +/* ====================================================== DMAC0_RSSEL ====================================================== */ + #define R_DMA_DMAC0_RSSEL_REQ_SELA_Pos (0UL) /*!< REQ_SELA (Bit 0) */ + #define R_DMA_DMAC0_RSSEL_REQ_SELA_Msk (0x1ffUL) /*!< REQ_SELA (Bitfield-Mask: 0x1ff) */ + #define R_DMA_DMAC0_RSSEL_REQ_SELB_Pos (10UL) /*!< REQ_SELB (Bit 10) */ + #define R_DMA_DMAC0_RSSEL_REQ_SELB_Msk (0x7fc00UL) /*!< REQ_SELB (Bitfield-Mask: 0x1ff) */ + #define R_DMA_DMAC0_RSSEL_REQ_SELC_Pos (20UL) /*!< REQ_SELC (Bit 20) */ + #define R_DMA_DMAC0_RSSEL_REQ_SELC_Msk (0x1ff00000UL) /*!< REQ_SELC (Bitfield-Mask: 0x1ff) */ +/* ====================================================== DMAC1_RSSEL ====================================================== */ + #define R_DMA_DMAC1_RSSEL_REQ_SELA_Pos (0UL) /*!< REQ_SELA (Bit 0) */ + #define R_DMA_DMAC1_RSSEL_REQ_SELA_Msk (0x1ffUL) /*!< REQ_SELA (Bitfield-Mask: 0x1ff) */ + #define R_DMA_DMAC1_RSSEL_REQ_SELB_Pos (10UL) /*!< REQ_SELB (Bit 10) */ + #define R_DMA_DMAC1_RSSEL_REQ_SELB_Msk (0x7fc00UL) /*!< REQ_SELB (Bitfield-Mask: 0x1ff) */ + #define R_DMA_DMAC1_RSSEL_REQ_SELC_Pos (20UL) /*!< REQ_SELC (Bit 20) */ + #define R_DMA_DMAC1_RSSEL_REQ_SELC_Msk (0x1ff00000UL) /*!< REQ_SELC (Bitfield-Mask: 0x1ff) */ + +/* =========================================================================================================================== */ +/* ================ R_PORT_COMMON ================ */ +/* =========================================================================================================================== */ + +/* =========================================================== P =========================================================== */ + #define R_PORT_NSR_P_POUT_0_Pos (0UL) /*!< POUT_0 (Bit 0) */ + #define R_PORT_NSR_P_POUT_0_Msk (0x1UL) /*!< POUT_0 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_P_POUT_1_Pos (1UL) /*!< POUT_1 (Bit 1) */ + #define R_PORT_NSR_P_POUT_1_Msk (0x2UL) /*!< POUT_1 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_P_POUT_2_Pos (2UL) /*!< POUT_2 (Bit 2) */ + #define R_PORT_NSR_P_POUT_2_Msk (0x4UL) /*!< POUT_2 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_P_POUT_3_Pos (3UL) /*!< POUT_3 (Bit 3) */ + #define R_PORT_NSR_P_POUT_3_Msk (0x8UL) /*!< POUT_3 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_P_POUT_4_Pos (4UL) /*!< POUT_4 (Bit 4) */ + #define R_PORT_NSR_P_POUT_4_Msk (0x10UL) /*!< POUT_4 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_P_POUT_5_Pos (5UL) /*!< POUT_5 (Bit 5) */ + #define R_PORT_NSR_P_POUT_5_Msk (0x20UL) /*!< POUT_5 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_P_POUT_6_Pos (6UL) /*!< POUT_6 (Bit 6) */ + #define R_PORT_NSR_P_POUT_6_Msk (0x40UL) /*!< POUT_6 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_P_POUT_7_Pos (7UL) /*!< POUT_7 (Bit 7) */ + #define R_PORT_NSR_P_POUT_7_Msk (0x80UL) /*!< POUT_7 (Bitfield-Mask: 0x01) */ +/* ========================================================== PM =========================================================== */ + #define R_PORT_NSR_PM_PM0_Pos (0UL) /*!< PM0 (Bit 0) */ + #define R_PORT_NSR_PM_PM0_Msk (0x3UL) /*!< PM0 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_PM_PM1_Pos (2UL) /*!< PM1 (Bit 2) */ + #define R_PORT_NSR_PM_PM1_Msk (0xcUL) /*!< PM1 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_PM_PM2_Pos (4UL) /*!< PM2 (Bit 4) */ + #define R_PORT_NSR_PM_PM2_Msk (0x30UL) /*!< PM2 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_PM_PM3_Pos (6UL) /*!< PM3 (Bit 6) */ + #define R_PORT_NSR_PM_PM3_Msk (0xc0UL) /*!< PM3 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_PM_PM4_Pos (8UL) /*!< PM4 (Bit 8) */ + #define R_PORT_NSR_PM_PM4_Msk (0x300UL) /*!< PM4 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_PM_PM5_Pos (10UL) /*!< PM5 (Bit 10) */ + #define R_PORT_NSR_PM_PM5_Msk (0xc00UL) /*!< PM5 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_PM_PM6_Pos (12UL) /*!< PM6 (Bit 12) */ + #define R_PORT_NSR_PM_PM6_Msk (0x3000UL) /*!< PM6 (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_PM_PM7_Pos (14UL) /*!< PM7 (Bit 14) */ + #define R_PORT_NSR_PM_PM7_Msk (0xc000UL) /*!< PM7 (Bitfield-Mask: 0x03) */ +/* ========================================================== PMC ========================================================== */ + #define R_PORT_NSR_PMC_PMC0_Pos (0UL) /*!< PMC0 (Bit 0) */ + #define R_PORT_NSR_PMC_PMC0_Msk (0x1UL) /*!< PMC0 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_PMC_PMC1_Pos (1UL) /*!< PMC1 (Bit 1) */ + #define R_PORT_NSR_PMC_PMC1_Msk (0x2UL) /*!< PMC1 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_PMC_PMC2_Pos (2UL) /*!< PMC2 (Bit 2) */ + #define R_PORT_NSR_PMC_PMC2_Msk (0x4UL) /*!< PMC2 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_PMC_PMC3_Pos (3UL) /*!< PMC3 (Bit 3) */ + #define R_PORT_NSR_PMC_PMC3_Msk (0x8UL) /*!< PMC3 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_PMC_PMC4_Pos (4UL) /*!< PMC4 (Bit 4) */ + #define R_PORT_NSR_PMC_PMC4_Msk (0x10UL) /*!< PMC4 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_PMC_PMC5_Pos (5UL) /*!< PMC5 (Bit 5) */ + #define R_PORT_NSR_PMC_PMC5_Msk (0x20UL) /*!< PMC5 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_PMC_PMC6_Pos (6UL) /*!< PMC6 (Bit 6) */ + #define R_PORT_NSR_PMC_PMC6_Msk (0x40UL) /*!< PMC6 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_PMC_PMC7_Pos (7UL) /*!< PMC7 (Bit 7) */ + #define R_PORT_NSR_PMC_PMC7_Msk (0x80UL) /*!< PMC7 (Bitfield-Mask: 0x01) */ +/* ========================================================== PFC ========================================================== */ + #define R_PORT_NSR_PFC_PFC0_Pos (0UL) /*!< PFC0 (Bit 0) */ + #define R_PORT_NSR_PFC_PFC0_Msk (0xfUL) /*!< PFC0 (Bitfield-Mask: 0x0f) */ + #define R_PORT_NSR_PFC_PFC1_Pos (4UL) /*!< PFC1 (Bit 4) */ + #define R_PORT_NSR_PFC_PFC1_Msk (0xf0UL) /*!< PFC1 (Bitfield-Mask: 0x0f) */ + #define R_PORT_NSR_PFC_PFC2_Pos (8UL) /*!< PFC2 (Bit 8) */ + #define R_PORT_NSR_PFC_PFC2_Msk (0xf00UL) /*!< PFC2 (Bitfield-Mask: 0x0f) */ + #define R_PORT_NSR_PFC_PFC3_Pos (12UL) /*!< PFC3 (Bit 12) */ + #define R_PORT_NSR_PFC_PFC3_Msk (0xf000UL) /*!< PFC3 (Bitfield-Mask: 0x0f) */ + #define R_PORT_NSR_PFC_PFC4_Pos (16UL) /*!< PFC4 (Bit 16) */ + #define R_PORT_NSR_PFC_PFC4_Msk (0xf0000UL) /*!< PFC4 (Bitfield-Mask: 0x0f) */ + #define R_PORT_NSR_PFC_PFC5_Pos (20UL) /*!< PFC5 (Bit 20) */ + #define R_PORT_NSR_PFC_PFC5_Msk (0xf00000UL) /*!< PFC5 (Bitfield-Mask: 0x0f) */ + #define R_PORT_NSR_PFC_PFC6_Pos (24UL) /*!< PFC6 (Bit 24) */ + #define R_PORT_NSR_PFC_PFC6_Msk (0xf000000UL) /*!< PFC6 (Bitfield-Mask: 0x0f) */ + #define R_PORT_NSR_PFC_PFC7_Pos (28UL) /*!< PFC7 (Bit 28) */ + #define R_PORT_NSR_PFC_PFC7_Msk (0xf0000000UL) /*!< PFC7 (Bitfield-Mask: 0x0f) */ +/* ========================================================== PIN ========================================================== */ + #define R_PORT_NSR_PIN_PIN0_Pos (0UL) /*!< PIN0 (Bit 0) */ + #define R_PORT_NSR_PIN_PIN0_Msk (0x1UL) /*!< PIN0 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_PIN_PIN1_Pos (1UL) /*!< PIN1 (Bit 1) */ + #define R_PORT_NSR_PIN_PIN1_Msk (0x2UL) /*!< PIN1 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_PIN_PIN2_Pos (2UL) /*!< PIN2 (Bit 2) */ + #define R_PORT_NSR_PIN_PIN2_Msk (0x4UL) /*!< PIN2 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_PIN_PIN3_Pos (3UL) /*!< PIN3 (Bit 3) */ + #define R_PORT_NSR_PIN_PIN3_Msk (0x8UL) /*!< PIN3 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_PIN_PIN4_Pos (4UL) /*!< PIN4 (Bit 4) */ + #define R_PORT_NSR_PIN_PIN4_Msk (0x10UL) /*!< PIN4 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_PIN_PIN5_Pos (5UL) /*!< PIN5 (Bit 5) */ + #define R_PORT_NSR_PIN_PIN5_Msk (0x20UL) /*!< PIN5 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_PIN_PIN6_Pos (6UL) /*!< PIN6 (Bit 6) */ + #define R_PORT_NSR_PIN_PIN6_Msk (0x40UL) /*!< PIN6 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_PIN_PIN7_Pos (7UL) /*!< PIN7 (Bit 7) */ + #define R_PORT_NSR_PIN_PIN7_Msk (0x80UL) /*!< PIN7 (Bitfield-Mask: 0x01) */ +/* ======================================================== ELC_PGR ======================================================== */ + #define R_PORT_NSR_ELC_PGR_PG0_Pos (0UL) /*!< PG0 (Bit 0) */ + #define R_PORT_NSR_ELC_PGR_PG0_Msk (0x1UL) /*!< PG0 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_PGR_PG1_Pos (1UL) /*!< PG1 (Bit 1) */ + #define R_PORT_NSR_ELC_PGR_PG1_Msk (0x2UL) /*!< PG1 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_PGR_PG2_Pos (2UL) /*!< PG2 (Bit 2) */ + #define R_PORT_NSR_ELC_PGR_PG2_Msk (0x4UL) /*!< PG2 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_PGR_PG3_Pos (3UL) /*!< PG3 (Bit 3) */ + #define R_PORT_NSR_ELC_PGR_PG3_Msk (0x8UL) /*!< PG3 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_PGR_PG4_Pos (4UL) /*!< PG4 (Bit 4) */ + #define R_PORT_NSR_ELC_PGR_PG4_Msk (0x10UL) /*!< PG4 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_PGR_PG5_Pos (5UL) /*!< PG5 (Bit 5) */ + #define R_PORT_NSR_ELC_PGR_PG5_Msk (0x20UL) /*!< PG5 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_PGR_PG6_Pos (6UL) /*!< PG6 (Bit 6) */ + #define R_PORT_NSR_ELC_PGR_PG6_Msk (0x40UL) /*!< PG6 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_PGR_PG7_Pos (7UL) /*!< PG7 (Bit 7) */ + #define R_PORT_NSR_ELC_PGR_PG7_Msk (0x80UL) /*!< PG7 (Bitfield-Mask: 0x01) */ +/* ======================================================== ELC_PGC ======================================================== */ + #define R_PORT_NSR_ELC_PGC_PGCI_Pos (0UL) /*!< PGCI (Bit 0) */ + #define R_PORT_NSR_ELC_PGC_PGCI_Msk (0x3UL) /*!< PGCI (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_ELC_PGC_PGCOVE_Pos (2UL) /*!< PGCOVE (Bit 2) */ + #define R_PORT_NSR_ELC_PGC_PGCOVE_Msk (0x4UL) /*!< PGCOVE (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_PGC_PGCO_Pos (4UL) /*!< PGCO (Bit 4) */ + #define R_PORT_NSR_ELC_PGC_PGCO_Msk (0x70UL) /*!< PGCO (Bitfield-Mask: 0x07) */ +/* ======================================================== ELC_PEL ======================================================== */ + #define R_PORT_NSR_ELC_PEL_PSB_Pos (0UL) /*!< PSB (Bit 0) */ + #define R_PORT_NSR_ELC_PEL_PSB_Msk (0x7UL) /*!< PSB (Bitfield-Mask: 0x07) */ + #define R_PORT_NSR_ELC_PEL_PSP_Pos (3UL) /*!< PSP (Bit 3) */ + #define R_PORT_NSR_ELC_PEL_PSP_Msk (0x18UL) /*!< PSP (Bitfield-Mask: 0x03) */ + #define R_PORT_NSR_ELC_PEL_PSM_Pos (5UL) /*!< PSM (Bit 5) */ + #define R_PORT_NSR_ELC_PEL_PSM_Msk (0x60UL) /*!< PSM (Bitfield-Mask: 0x03) */ +/* ======================================================= ELC_DPTC ======================================================== */ + #define R_PORT_NSR_ELC_DPTC_PTC0_Pos (0UL) /*!< PTC0 (Bit 0) */ + #define R_PORT_NSR_ELC_DPTC_PTC0_Msk (0x1UL) /*!< PTC0 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_DPTC_PTC1_Pos (1UL) /*!< PTC1 (Bit 1) */ + #define R_PORT_NSR_ELC_DPTC_PTC1_Msk (0x2UL) /*!< PTC1 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_DPTC_PTC2_Pos (2UL) /*!< PTC2 (Bit 2) */ + #define R_PORT_NSR_ELC_DPTC_PTC2_Msk (0x4UL) /*!< PTC2 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_DPTC_PTC3_Pos (3UL) /*!< PTC3 (Bit 3) */ + #define R_PORT_NSR_ELC_DPTC_PTC3_Msk (0x8UL) /*!< PTC3 (Bitfield-Mask: 0x01) */ +/* ======================================================= ELC_ELSR2 ======================================================= */ + #define R_PORT_NSR_ELC_ELSR2_PEG1_Pos (2UL) /*!< PEG1 (Bit 2) */ + #define R_PORT_NSR_ELC_ELSR2_PEG1_Msk (0x4UL) /*!< PEG1 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_ELSR2_PEG2_Pos (3UL) /*!< PEG2 (Bit 3) */ + #define R_PORT_NSR_ELC_ELSR2_PEG2_Msk (0x8UL) /*!< PEG2 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_ELSR2_PES0_Pos (4UL) /*!< PES0 (Bit 4) */ + #define R_PORT_NSR_ELC_ELSR2_PES0_Msk (0x10UL) /*!< PES0 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_ELSR2_PES1_Pos (5UL) /*!< PES1 (Bit 5) */ + #define R_PORT_NSR_ELC_ELSR2_PES1_Msk (0x20UL) /*!< PES1 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_ELSR2_PES2_Pos (6UL) /*!< PES2 (Bit 6) */ + #define R_PORT_NSR_ELC_ELSR2_PES2_Msk (0x40UL) /*!< PES2 (Bitfield-Mask: 0x01) */ + #define R_PORT_NSR_ELC_ELSR2_PES3_Pos (7UL) /*!< PES3 (Bit 7) */ + #define R_PORT_NSR_ELC_ELSR2_PES3_Msk (0x80UL) /*!< PES3 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_GMAC ================ */ +/* =========================================================================================================================== */ + +/* =================================================== MAC_Configuration =================================================== */ + #define R_GMAC_MAC_Configuration_PRELEN_Pos (0UL) /*!< PRELEN (Bit 0) */ + #define R_GMAC_MAC_Configuration_PRELEN_Msk (0x3UL) /*!< PRELEN (Bitfield-Mask: 0x03) */ + #define R_GMAC_MAC_Configuration_RE_Pos (2UL) /*!< RE (Bit 2) */ + #define R_GMAC_MAC_Configuration_RE_Msk (0x4UL) /*!< RE (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Configuration_TE_Pos (3UL) /*!< TE (Bit 3) */ + #define R_GMAC_MAC_Configuration_TE_Msk (0x8UL) /*!< TE (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Configuration_DC_Pos (4UL) /*!< DC (Bit 4) */ + #define R_GMAC_MAC_Configuration_DC_Msk (0x10UL) /*!< DC (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Configuration_BL_Pos (5UL) /*!< BL (Bit 5) */ + #define R_GMAC_MAC_Configuration_BL_Msk (0x60UL) /*!< BL (Bitfield-Mask: 0x03) */ + #define R_GMAC_MAC_Configuration_ACS_Pos (7UL) /*!< ACS (Bit 7) */ + #define R_GMAC_MAC_Configuration_ACS_Msk (0x80UL) /*!< ACS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Configuration_DR_Pos (9UL) /*!< DR (Bit 9) */ + #define R_GMAC_MAC_Configuration_DR_Msk (0x200UL) /*!< DR (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Configuration_IPC_Pos (10UL) /*!< IPC (Bit 10) */ + #define R_GMAC_MAC_Configuration_IPC_Msk (0x400UL) /*!< IPC (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Configuration_DM_Pos (11UL) /*!< DM (Bit 11) */ + #define R_GMAC_MAC_Configuration_DM_Msk (0x800UL) /*!< DM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Configuration_LM_Pos (12UL) /*!< LM (Bit 12) */ + #define R_GMAC_MAC_Configuration_LM_Msk (0x1000UL) /*!< LM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Configuration_DO_Pos (13UL) /*!< DO (Bit 13) */ + #define R_GMAC_MAC_Configuration_DO_Msk (0x2000UL) /*!< DO (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Configuration_FES_Pos (14UL) /*!< FES (Bit 14) */ + #define R_GMAC_MAC_Configuration_FES_Msk (0x4000UL) /*!< FES (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Configuration_PS_Pos (15UL) /*!< PS (Bit 15) */ + #define R_GMAC_MAC_Configuration_PS_Msk (0x8000UL) /*!< PS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Configuration_DCRS_Pos (16UL) /*!< DCRS (Bit 16) */ + #define R_GMAC_MAC_Configuration_DCRS_Msk (0x10000UL) /*!< DCRS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Configuration_IFG_Pos (17UL) /*!< IFG (Bit 17) */ + #define R_GMAC_MAC_Configuration_IFG_Msk (0xe0000UL) /*!< IFG (Bitfield-Mask: 0x07) */ + #define R_GMAC_MAC_Configuration_JE_Pos (20UL) /*!< JE (Bit 20) */ + #define R_GMAC_MAC_Configuration_JE_Msk (0x100000UL) /*!< JE (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Configuration_BE_Pos (21UL) /*!< BE (Bit 21) */ + #define R_GMAC_MAC_Configuration_BE_Msk (0x200000UL) /*!< BE (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Configuration_JD_Pos (22UL) /*!< JD (Bit 22) */ + #define R_GMAC_MAC_Configuration_JD_Msk (0x400000UL) /*!< JD (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Configuration_WD_Pos (23UL) /*!< WD (Bit 23) */ + #define R_GMAC_MAC_Configuration_WD_Msk (0x800000UL) /*!< WD (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Configuration_CST_Pos (25UL) /*!< CST (Bit 25) */ + #define R_GMAC_MAC_Configuration_CST_Msk (0x2000000UL) /*!< CST (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Configuration_TWOKPE_Pos (27UL) /*!< TWOKPE (Bit 27) */ + #define R_GMAC_MAC_Configuration_TWOKPE_Msk (0x8000000UL) /*!< TWOKPE (Bitfield-Mask: 0x01) */ +/* =================================================== MAC_Frame_Filter ==================================================== */ + #define R_GMAC_MAC_Frame_Filter_PR_Pos (0UL) /*!< PR (Bit 0) */ + #define R_GMAC_MAC_Frame_Filter_PR_Msk (0x1UL) /*!< PR (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Frame_Filter_HUC_Pos (1UL) /*!< HUC (Bit 1) */ + #define R_GMAC_MAC_Frame_Filter_HUC_Msk (0x2UL) /*!< HUC (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Frame_Filter_HMC_Pos (2UL) /*!< HMC (Bit 2) */ + #define R_GMAC_MAC_Frame_Filter_HMC_Msk (0x4UL) /*!< HMC (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Frame_Filter_DAIF_Pos (3UL) /*!< DAIF (Bit 3) */ + #define R_GMAC_MAC_Frame_Filter_DAIF_Msk (0x8UL) /*!< DAIF (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Frame_Filter_PM_Pos (4UL) /*!< PM (Bit 4) */ + #define R_GMAC_MAC_Frame_Filter_PM_Msk (0x10UL) /*!< PM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Frame_Filter_DBF_Pos (5UL) /*!< DBF (Bit 5) */ + #define R_GMAC_MAC_Frame_Filter_DBF_Msk (0x20UL) /*!< DBF (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Frame_Filter_PCF_Pos (6UL) /*!< PCF (Bit 6) */ + #define R_GMAC_MAC_Frame_Filter_PCF_Msk (0xc0UL) /*!< PCF (Bitfield-Mask: 0x03) */ + #define R_GMAC_MAC_Frame_Filter_SAIF_Pos (8UL) /*!< SAIF (Bit 8) */ + #define R_GMAC_MAC_Frame_Filter_SAIF_Msk (0x100UL) /*!< SAIF (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Frame_Filter_SAF_Pos (9UL) /*!< SAF (Bit 9) */ + #define R_GMAC_MAC_Frame_Filter_SAF_Msk (0x200UL) /*!< SAF (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Frame_Filter_HPF_Pos (10UL) /*!< HPF (Bit 10) */ + #define R_GMAC_MAC_Frame_Filter_HPF_Msk (0x400UL) /*!< HPF (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Frame_Filter_VTFE_Pos (16UL) /*!< VTFE (Bit 16) */ + #define R_GMAC_MAC_Frame_Filter_VTFE_Msk (0x10000UL) /*!< VTFE (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAC_Frame_Filter_RA_Pos (31UL) /*!< RA (Bit 31) */ + #define R_GMAC_MAC_Frame_Filter_RA_Msk (0x80000000UL) /*!< RA (Bitfield-Mask: 0x01) */ +/* ===================================================== GMII_Address ====================================================== */ + #define R_GMAC_GMII_Address_GB_Pos (0UL) /*!< GB (Bit 0) */ + #define R_GMAC_GMII_Address_GB_Msk (0x1UL) /*!< GB (Bitfield-Mask: 0x01) */ + #define R_GMAC_GMII_Address_GW_Pos (1UL) /*!< GW (Bit 1) */ + #define R_GMAC_GMII_Address_GW_Msk (0x2UL) /*!< GW (Bitfield-Mask: 0x01) */ + #define R_GMAC_GMII_Address_CR_Pos (2UL) /*!< CR (Bit 2) */ + #define R_GMAC_GMII_Address_CR_Msk (0x3cUL) /*!< CR (Bitfield-Mask: 0x0f) */ + #define R_GMAC_GMII_Address_GR_Pos (6UL) /*!< GR (Bit 6) */ + #define R_GMAC_GMII_Address_GR_Msk (0x7c0UL) /*!< GR (Bitfield-Mask: 0x1f) */ + #define R_GMAC_GMII_Address_PA_Pos (11UL) /*!< PA (Bit 11) */ + #define R_GMAC_GMII_Address_PA_Msk (0xf800UL) /*!< PA (Bitfield-Mask: 0x1f) */ +/* ======================================================= GMII_Data ======================================================= */ + #define R_GMAC_GMII_Data_GD_Pos (0UL) /*!< GD (Bit 0) */ + #define R_GMAC_GMII_Data_GD_Msk (0xffffUL) /*!< GD (Bitfield-Mask: 0xffff) */ +/* ===================================================== Flow_Control ====================================================== */ + #define R_GMAC_Flow_Control_FCA_BPA_Pos (0UL) /*!< FCA_BPA (Bit 0) */ + #define R_GMAC_Flow_Control_FCA_BPA_Msk (0x1UL) /*!< FCA_BPA (Bitfield-Mask: 0x01) */ + #define R_GMAC_Flow_Control_TFE_Pos (1UL) /*!< TFE (Bit 1) */ + #define R_GMAC_Flow_Control_TFE_Msk (0x2UL) /*!< TFE (Bitfield-Mask: 0x01) */ + #define R_GMAC_Flow_Control_RFE_Pos (2UL) /*!< RFE (Bit 2) */ + #define R_GMAC_Flow_Control_RFE_Msk (0x4UL) /*!< RFE (Bitfield-Mask: 0x01) */ + #define R_GMAC_Flow_Control_UP_Pos (3UL) /*!< UP (Bit 3) */ + #define R_GMAC_Flow_Control_UP_Msk (0x8UL) /*!< UP (Bitfield-Mask: 0x01) */ + #define R_GMAC_Flow_Control_PLT_Pos (4UL) /*!< PLT (Bit 4) */ + #define R_GMAC_Flow_Control_PLT_Msk (0x30UL) /*!< PLT (Bitfield-Mask: 0x03) */ + #define R_GMAC_Flow_Control_DZPQ_Pos (7UL) /*!< DZPQ (Bit 7) */ + #define R_GMAC_Flow_Control_DZPQ_Msk (0x80UL) /*!< DZPQ (Bitfield-Mask: 0x01) */ + #define R_GMAC_Flow_Control_PT_Pos (16UL) /*!< PT (Bit 16) */ + #define R_GMAC_Flow_Control_PT_Msk (0xffff0000UL) /*!< PT (Bitfield-Mask: 0xffff) */ +/* ======================================================= VLAN_Tag ======================================================== */ + #define R_GMAC_VLAN_Tag_VL_Pos (0UL) /*!< VL (Bit 0) */ + #define R_GMAC_VLAN_Tag_VL_Msk (0xffffUL) /*!< VL (Bitfield-Mask: 0xffff) */ + #define R_GMAC_VLAN_Tag_ETV_Pos (16UL) /*!< ETV (Bit 16) */ + #define R_GMAC_VLAN_Tag_ETV_Msk (0x10000UL) /*!< ETV (Bitfield-Mask: 0x01) */ + #define R_GMAC_VLAN_Tag_VTIM_Pos (17UL) /*!< VTIM (Bit 17) */ + #define R_GMAC_VLAN_Tag_VTIM_Msk (0x20000UL) /*!< VTIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_VLAN_Tag_ESVL_Pos (18UL) /*!< ESVL (Bit 18) */ + #define R_GMAC_VLAN_Tag_ESVL_Msk (0x40000UL) /*!< ESVL (Bitfield-Mask: 0x01) */ + #define R_GMAC_VLAN_Tag_VTHM_Pos (19UL) /*!< VTHM (Bit 19) */ + #define R_GMAC_VLAN_Tag_VTHM_Msk (0x80000UL) /*!< VTHM (Bitfield-Mask: 0x01) */ +/* ======================================================== Version ======================================================== */ + #define R_GMAC_Version_VER_Pos (0UL) /*!< VER (Bit 0) */ + #define R_GMAC_Version_VER_Msk (0xffffUL) /*!< VER (Bitfield-Mask: 0xffff) */ +/* ========================================================= Debug ========================================================= */ + #define R_GMAC_Debug_RPESTS_Pos (0UL) /*!< RPESTS (Bit 0) */ + #define R_GMAC_Debug_RPESTS_Msk (0x1UL) /*!< RPESTS (Bitfield-Mask: 0x01) */ + #define R_GMAC_Debug_RFCFCSTS_Pos (1UL) /*!< RFCFCSTS (Bit 1) */ + #define R_GMAC_Debug_RFCFCSTS_Msk (0x6UL) /*!< RFCFCSTS (Bitfield-Mask: 0x03) */ + #define R_GMAC_Debug_RWCSTS_Pos (4UL) /*!< RWCSTS (Bit 4) */ + #define R_GMAC_Debug_RWCSTS_Msk (0x10UL) /*!< RWCSTS (Bitfield-Mask: 0x01) */ + #define R_GMAC_Debug_RRCSTS_Pos (5UL) /*!< RRCSTS (Bit 5) */ + #define R_GMAC_Debug_RRCSTS_Msk (0x60UL) /*!< RRCSTS (Bitfield-Mask: 0x03) */ + #define R_GMAC_Debug_RXFSTS_Pos (8UL) /*!< RXFSTS (Bit 8) */ + #define R_GMAC_Debug_RXFSTS_Msk (0x300UL) /*!< RXFSTS (Bitfield-Mask: 0x03) */ + #define R_GMAC_Debug_TPESTS_Pos (16UL) /*!< TPESTS (Bit 16) */ + #define R_GMAC_Debug_TPESTS_Msk (0x10000UL) /*!< TPESTS (Bitfield-Mask: 0x01) */ + #define R_GMAC_Debug_TFCSTS_Pos (17UL) /*!< TFCSTS (Bit 17) */ + #define R_GMAC_Debug_TFCSTS_Msk (0x60000UL) /*!< TFCSTS (Bitfield-Mask: 0x03) */ + #define R_GMAC_Debug_TXPAUSED_Pos (19UL) /*!< TXPAUSED (Bit 19) */ + #define R_GMAC_Debug_TXPAUSED_Msk (0x80000UL) /*!< TXPAUSED (Bitfield-Mask: 0x01) */ + #define R_GMAC_Debug_TRCSTS_Pos (20UL) /*!< TRCSTS (Bit 20) */ + #define R_GMAC_Debug_TRCSTS_Msk (0x300000UL) /*!< TRCSTS (Bitfield-Mask: 0x03) */ + #define R_GMAC_Debug_TWCSTS_Pos (22UL) /*!< TWCSTS (Bit 22) */ + #define R_GMAC_Debug_TWCSTS_Msk (0x400000UL) /*!< TWCSTS (Bitfield-Mask: 0x01) */ + #define R_GMAC_Debug_TXFSTS_Pos (24UL) /*!< TXFSTS (Bit 24) */ + #define R_GMAC_Debug_TXFSTS_Msk (0x1000000UL) /*!< TXFSTS (Bitfield-Mask: 0x01) */ + #define R_GMAC_Debug_TXSTSFSTS_Pos (25UL) /*!< TXSTSFSTS (Bit 25) */ + #define R_GMAC_Debug_TXSTSFSTS_Msk (0x2000000UL) /*!< TXSTSFSTS (Bitfield-Mask: 0x01) */ +/* ============================================== Remote_Wake_Up_Frame_Filter ============================================== */ + #define R_GMAC_Remote_Wake_Up_Frame_Filter_WKUPFRMFTR_Pos (0UL) /*!< WKUPFRMFTR (Bit 0) */ + #define R_GMAC_Remote_Wake_Up_Frame_Filter_WKUPFRMFTR_Msk (0xffffffffUL) /*!< WKUPFRMFTR (Bitfield-Mask: 0xffffffff) */ +/* ================================================== PMT_Control_Status =================================================== */ + #define R_GMAC_PMT_Control_Status_PWRDWN_Pos (0UL) /*!< PWRDWN (Bit 0) */ + #define R_GMAC_PMT_Control_Status_PWRDWN_Msk (0x1UL) /*!< PWRDWN (Bitfield-Mask: 0x01) */ + #define R_GMAC_PMT_Control_Status_MGKPKTEN_Pos (1UL) /*!< MGKPKTEN (Bit 1) */ + #define R_GMAC_PMT_Control_Status_MGKPKTEN_Msk (0x2UL) /*!< MGKPKTEN (Bitfield-Mask: 0x01) */ + #define R_GMAC_PMT_Control_Status_RWKPKTEN_Pos (2UL) /*!< RWKPKTEN (Bit 2) */ + #define R_GMAC_PMT_Control_Status_RWKPKTEN_Msk (0x4UL) /*!< RWKPKTEN (Bitfield-Mask: 0x01) */ + #define R_GMAC_PMT_Control_Status_MGKPRCVD_Pos (5UL) /*!< MGKPRCVD (Bit 5) */ + #define R_GMAC_PMT_Control_Status_MGKPRCVD_Msk (0x20UL) /*!< MGKPRCVD (Bitfield-Mask: 0x01) */ + #define R_GMAC_PMT_Control_Status_RWKPRCVD_Pos (6UL) /*!< RWKPRCVD (Bit 6) */ + #define R_GMAC_PMT_Control_Status_RWKPRCVD_Msk (0x40UL) /*!< RWKPRCVD (Bitfield-Mask: 0x01) */ + #define R_GMAC_PMT_Control_Status_GLBLUCAST_Pos (9UL) /*!< GLBLUCAST (Bit 9) */ + #define R_GMAC_PMT_Control_Status_GLBLUCAST_Msk (0x200UL) /*!< GLBLUCAST (Bitfield-Mask: 0x01) */ + #define R_GMAC_PMT_Control_Status_RWKPTR_Pos (24UL) /*!< RWKPTR (Bit 24) */ + #define R_GMAC_PMT_Control_Status_RWKPTR_Msk (0x7000000UL) /*!< RWKPTR (Bitfield-Mask: 0x07) */ + #define R_GMAC_PMT_Control_Status_RWKFILTRST_Pos (31UL) /*!< RWKFILTRST (Bit 31) */ + #define R_GMAC_PMT_Control_Status_RWKFILTRST_Msk (0x80000000UL) /*!< RWKFILTRST (Bitfield-Mask: 0x01) */ +/* ================================================== LPI_Control_Status =================================================== */ + #define R_GMAC_LPI_Control_Status_TLPIEN_Pos (0UL) /*!< TLPIEN (Bit 0) */ + #define R_GMAC_LPI_Control_Status_TLPIEN_Msk (0x1UL) /*!< TLPIEN (Bitfield-Mask: 0x01) */ + #define R_GMAC_LPI_Control_Status_TLPIEX_Pos (1UL) /*!< TLPIEX (Bit 1) */ + #define R_GMAC_LPI_Control_Status_TLPIEX_Msk (0x2UL) /*!< TLPIEX (Bitfield-Mask: 0x01) */ + #define R_GMAC_LPI_Control_Status_RLPIEN_Pos (2UL) /*!< RLPIEN (Bit 2) */ + #define R_GMAC_LPI_Control_Status_RLPIEN_Msk (0x4UL) /*!< RLPIEN (Bitfield-Mask: 0x01) */ + #define R_GMAC_LPI_Control_Status_RLPIEX_Pos (3UL) /*!< RLPIEX (Bit 3) */ + #define R_GMAC_LPI_Control_Status_RLPIEX_Msk (0x8UL) /*!< RLPIEX (Bitfield-Mask: 0x01) */ + #define R_GMAC_LPI_Control_Status_TLPIST_Pos (8UL) /*!< TLPIST (Bit 8) */ + #define R_GMAC_LPI_Control_Status_TLPIST_Msk (0x100UL) /*!< TLPIST (Bitfield-Mask: 0x01) */ + #define R_GMAC_LPI_Control_Status_RLPIST_Pos (9UL) /*!< RLPIST (Bit 9) */ + #define R_GMAC_LPI_Control_Status_RLPIST_Msk (0x200UL) /*!< RLPIST (Bitfield-Mask: 0x01) */ + #define R_GMAC_LPI_Control_Status_LPIEN_Pos (16UL) /*!< LPIEN (Bit 16) */ + #define R_GMAC_LPI_Control_Status_LPIEN_Msk (0x10000UL) /*!< LPIEN (Bitfield-Mask: 0x01) */ + #define R_GMAC_LPI_Control_Status_PLS_Pos (17UL) /*!< PLS (Bit 17) */ + #define R_GMAC_LPI_Control_Status_PLS_Msk (0x20000UL) /*!< PLS (Bitfield-Mask: 0x01) */ + #define R_GMAC_LPI_Control_Status_LPITXA_Pos (19UL) /*!< LPITXA (Bit 19) */ + #define R_GMAC_LPI_Control_Status_LPITXA_Msk (0x80000UL) /*!< LPITXA (Bitfield-Mask: 0x01) */ +/* ================================================== LPI_Timers_Control =================================================== */ + #define R_GMAC_LPI_Timers_Control_TWT_Pos (0UL) /*!< TWT (Bit 0) */ + #define R_GMAC_LPI_Timers_Control_TWT_Msk (0xffffUL) /*!< TWT (Bitfield-Mask: 0xffff) */ + #define R_GMAC_LPI_Timers_Control_LST_Pos (16UL) /*!< LST (Bit 16) */ + #define R_GMAC_LPI_Timers_Control_LST_Msk (0x3ff0000UL) /*!< LST (Bitfield-Mask: 0x3ff) */ +/* =================================================== Interrupt_Status ==================================================== */ + #define R_GMAC_Interrupt_Status_PMTIS_Pos (3UL) /*!< PMTIS (Bit 3) */ + #define R_GMAC_Interrupt_Status_PMTIS_Msk (0x8UL) /*!< PMTIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Status_MMCIS_Pos (4UL) /*!< MMCIS (Bit 4) */ + #define R_GMAC_Interrupt_Status_MMCIS_Msk (0x10UL) /*!< MMCIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Status_MMCRXIS_Pos (5UL) /*!< MMCRXIS (Bit 5) */ + #define R_GMAC_Interrupt_Status_MMCRXIS_Msk (0x20UL) /*!< MMCRXIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Status_MMCTXIS_Pos (6UL) /*!< MMCTXIS (Bit 6) */ + #define R_GMAC_Interrupt_Status_MMCTXIS_Msk (0x40UL) /*!< MMCTXIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Status_MMCRXIPIS_Pos (7UL) /*!< MMCRXIPIS (Bit 7) */ + #define R_GMAC_Interrupt_Status_MMCRXIPIS_Msk (0x80UL) /*!< MMCRXIPIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Status_TSIS_Pos (9UL) /*!< TSIS (Bit 9) */ + #define R_GMAC_Interrupt_Status_TSIS_Msk (0x200UL) /*!< TSIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Status_LPIIS_Pos (10UL) /*!< LPIIS (Bit 10) */ + #define R_GMAC_Interrupt_Status_LPIIS_Msk (0x400UL) /*!< LPIIS (Bitfield-Mask: 0x01) */ +/* ==================================================== Interrupt_Mask ===================================================== */ + #define R_GMAC_Interrupt_Mask_PMTIM_Pos (3UL) /*!< PMTIM (Bit 3) */ + #define R_GMAC_Interrupt_Mask_PMTIM_Msk (0x8UL) /*!< PMTIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Mask_TSIM_Pos (9UL) /*!< TSIM (Bit 9) */ + #define R_GMAC_Interrupt_Mask_TSIM_Msk (0x200UL) /*!< TSIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Mask_LPIIM_Pos (10UL) /*!< LPIIM (Bit 10) */ + #define R_GMAC_Interrupt_Mask_LPIIM_Msk (0x400UL) /*!< LPIIM (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR0_H ========================================================= */ + #define R_GMAC_MAR0_H_ADDRHI_Pos (0UL) /*!< ADDRHI (Bit 0) */ + #define R_GMAC_MAR0_H_ADDRHI_Msk (0xffffUL) /*!< ADDRHI (Bitfield-Mask: 0xffff) */ + #define R_GMAC_MAR0_H_AE_Pos (31UL) /*!< AE (Bit 31) */ + #define R_GMAC_MAR0_H_AE_Msk (0x80000000UL) /*!< AE (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR0_L ========================================================= */ + #define R_GMAC_MAR0_L_ADDRLO_Pos (0UL) /*!< ADDRLO (Bit 0) */ + #define R_GMAC_MAR0_L_ADDRLO_Msk (0xffffffffUL) /*!< ADDRLO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MAR1_H ========================================================= */ + #define R_GMAC_MAR1_H_ADDRHI_Pos (0UL) /*!< ADDRHI (Bit 0) */ + #define R_GMAC_MAR1_H_ADDRHI_Msk (0xffffUL) /*!< ADDRHI (Bitfield-Mask: 0xffff) */ + #define R_GMAC_MAR1_H_MBC_Pos (24UL) /*!< MBC (Bit 24) */ + #define R_GMAC_MAR1_H_MBC_Msk (0x3f000000UL) /*!< MBC (Bitfield-Mask: 0x3f) */ + #define R_GMAC_MAR1_H_SA_Pos (30UL) /*!< SA (Bit 30) */ + #define R_GMAC_MAR1_H_SA_Msk (0x40000000UL) /*!< SA (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAR1_H_AE_Pos (31UL) /*!< AE (Bit 31) */ + #define R_GMAC_MAR1_H_AE_Msk (0x80000000UL) /*!< AE (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR2_H ========================================================= */ + #define R_GMAC_MAR2_H_ADDRHI_Pos (0UL) /*!< ADDRHI (Bit 0) */ + #define R_GMAC_MAR2_H_ADDRHI_Msk (0xffffUL) /*!< ADDRHI (Bitfield-Mask: 0xffff) */ + #define R_GMAC_MAR2_H_MBC_Pos (24UL) /*!< MBC (Bit 24) */ + #define R_GMAC_MAR2_H_MBC_Msk (0x3f000000UL) /*!< MBC (Bitfield-Mask: 0x3f) */ + #define R_GMAC_MAR2_H_SA_Pos (30UL) /*!< SA (Bit 30) */ + #define R_GMAC_MAR2_H_SA_Msk (0x40000000UL) /*!< SA (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAR2_H_AE_Pos (31UL) /*!< AE (Bit 31) */ + #define R_GMAC_MAR2_H_AE_Msk (0x80000000UL) /*!< AE (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR3_H ========================================================= */ + #define R_GMAC_MAR3_H_ADDRHI_Pos (0UL) /*!< ADDRHI (Bit 0) */ + #define R_GMAC_MAR3_H_ADDRHI_Msk (0xffffUL) /*!< ADDRHI (Bitfield-Mask: 0xffff) */ + #define R_GMAC_MAR3_H_MBC_Pos (24UL) /*!< MBC (Bit 24) */ + #define R_GMAC_MAR3_H_MBC_Msk (0x3f000000UL) /*!< MBC (Bitfield-Mask: 0x3f) */ + #define R_GMAC_MAR3_H_SA_Pos (30UL) /*!< SA (Bit 30) */ + #define R_GMAC_MAR3_H_SA_Msk (0x40000000UL) /*!< SA (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAR3_H_AE_Pos (31UL) /*!< AE (Bit 31) */ + #define R_GMAC_MAR3_H_AE_Msk (0x80000000UL) /*!< AE (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR4_H ========================================================= */ + #define R_GMAC_MAR4_H_ADDRHI_Pos (0UL) /*!< ADDRHI (Bit 0) */ + #define R_GMAC_MAR4_H_ADDRHI_Msk (0xffffUL) /*!< ADDRHI (Bitfield-Mask: 0xffff) */ + #define R_GMAC_MAR4_H_MBC_Pos (24UL) /*!< MBC (Bit 24) */ + #define R_GMAC_MAR4_H_MBC_Msk (0x3f000000UL) /*!< MBC (Bitfield-Mask: 0x3f) */ + #define R_GMAC_MAR4_H_SA_Pos (30UL) /*!< SA (Bit 30) */ + #define R_GMAC_MAR4_H_SA_Msk (0x40000000UL) /*!< SA (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAR4_H_AE_Pos (31UL) /*!< AE (Bit 31) */ + #define R_GMAC_MAR4_H_AE_Msk (0x80000000UL) /*!< AE (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR5_H ========================================================= */ + #define R_GMAC_MAR5_H_ADDRHI_Pos (0UL) /*!< ADDRHI (Bit 0) */ + #define R_GMAC_MAR5_H_ADDRHI_Msk (0xffffUL) /*!< ADDRHI (Bitfield-Mask: 0xffff) */ + #define R_GMAC_MAR5_H_MBC_Pos (24UL) /*!< MBC (Bit 24) */ + #define R_GMAC_MAR5_H_MBC_Msk (0x3f000000UL) /*!< MBC (Bitfield-Mask: 0x3f) */ + #define R_GMAC_MAR5_H_SA_Pos (30UL) /*!< SA (Bit 30) */ + #define R_GMAC_MAR5_H_SA_Msk (0x40000000UL) /*!< SA (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAR5_H_AE_Pos (31UL) /*!< AE (Bit 31) */ + #define R_GMAC_MAR5_H_AE_Msk (0x80000000UL) /*!< AE (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR6_H ========================================================= */ + #define R_GMAC_MAR6_H_ADDRHI_Pos (0UL) /*!< ADDRHI (Bit 0) */ + #define R_GMAC_MAR6_H_ADDRHI_Msk (0xffffUL) /*!< ADDRHI (Bitfield-Mask: 0xffff) */ + #define R_GMAC_MAR6_H_MBC_Pos (24UL) /*!< MBC (Bit 24) */ + #define R_GMAC_MAR6_H_MBC_Msk (0x3f000000UL) /*!< MBC (Bitfield-Mask: 0x3f) */ + #define R_GMAC_MAR6_H_SA_Pos (30UL) /*!< SA (Bit 30) */ + #define R_GMAC_MAR6_H_SA_Msk (0x40000000UL) /*!< SA (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAR6_H_AE_Pos (31UL) /*!< AE (Bit 31) */ + #define R_GMAC_MAR6_H_AE_Msk (0x80000000UL) /*!< AE (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR7_H ========================================================= */ + #define R_GMAC_MAR7_H_ADDRHI_Pos (0UL) /*!< ADDRHI (Bit 0) */ + #define R_GMAC_MAR7_H_ADDRHI_Msk (0xffffUL) /*!< ADDRHI (Bitfield-Mask: 0xffff) */ + #define R_GMAC_MAR7_H_MBC_Pos (24UL) /*!< MBC (Bit 24) */ + #define R_GMAC_MAR7_H_MBC_Msk (0x3f000000UL) /*!< MBC (Bitfield-Mask: 0x3f) */ + #define R_GMAC_MAR7_H_SA_Pos (30UL) /*!< SA (Bit 30) */ + #define R_GMAC_MAR7_H_SA_Msk (0x40000000UL) /*!< SA (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAR7_H_AE_Pos (31UL) /*!< AE (Bit 31) */ + #define R_GMAC_MAR7_H_AE_Msk (0x80000000UL) /*!< AE (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR8_H ========================================================= */ + #define R_GMAC_MAR8_H_ADDRHI_Pos (0UL) /*!< ADDRHI (Bit 0) */ + #define R_GMAC_MAR8_H_ADDRHI_Msk (0xffffUL) /*!< ADDRHI (Bitfield-Mask: 0xffff) */ + #define R_GMAC_MAR8_H_MBC_Pos (24UL) /*!< MBC (Bit 24) */ + #define R_GMAC_MAR8_H_MBC_Msk (0x3f000000UL) /*!< MBC (Bitfield-Mask: 0x3f) */ + #define R_GMAC_MAR8_H_SA_Pos (30UL) /*!< SA (Bit 30) */ + #define R_GMAC_MAR8_H_SA_Msk (0x40000000UL) /*!< SA (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAR8_H_AE_Pos (31UL) /*!< AE (Bit 31) */ + #define R_GMAC_MAR8_H_AE_Msk (0x80000000UL) /*!< AE (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR9_H ========================================================= */ + #define R_GMAC_MAR9_H_ADDRHI_Pos (0UL) /*!< ADDRHI (Bit 0) */ + #define R_GMAC_MAR9_H_ADDRHI_Msk (0xffffUL) /*!< ADDRHI (Bitfield-Mask: 0xffff) */ + #define R_GMAC_MAR9_H_MBC_Pos (24UL) /*!< MBC (Bit 24) */ + #define R_GMAC_MAR9_H_MBC_Msk (0x3f000000UL) /*!< MBC (Bitfield-Mask: 0x3f) */ + #define R_GMAC_MAR9_H_SA_Pos (30UL) /*!< SA (Bit 30) */ + #define R_GMAC_MAR9_H_SA_Msk (0x40000000UL) /*!< SA (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAR9_H_AE_Pos (31UL) /*!< AE (Bit 31) */ + #define R_GMAC_MAR9_H_AE_Msk (0x80000000UL) /*!< AE (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR10_H ======================================================== */ + #define R_GMAC_MAR10_H_ADDRHI_Pos (0UL) /*!< ADDRHI (Bit 0) */ + #define R_GMAC_MAR10_H_ADDRHI_Msk (0xffffUL) /*!< ADDRHI (Bitfield-Mask: 0xffff) */ + #define R_GMAC_MAR10_H_MBC_Pos (24UL) /*!< MBC (Bit 24) */ + #define R_GMAC_MAR10_H_MBC_Msk (0x3f000000UL) /*!< MBC (Bitfield-Mask: 0x3f) */ + #define R_GMAC_MAR10_H_SA_Pos (30UL) /*!< SA (Bit 30) */ + #define R_GMAC_MAR10_H_SA_Msk (0x40000000UL) /*!< SA (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAR10_H_AE_Pos (31UL) /*!< AE (Bit 31) */ + #define R_GMAC_MAR10_H_AE_Msk (0x80000000UL) /*!< AE (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR11_H ======================================================== */ + #define R_GMAC_MAR11_H_ADDRHI_Pos (0UL) /*!< ADDRHI (Bit 0) */ + #define R_GMAC_MAR11_H_ADDRHI_Msk (0xffffUL) /*!< ADDRHI (Bitfield-Mask: 0xffff) */ + #define R_GMAC_MAR11_H_MBC_Pos (24UL) /*!< MBC (Bit 24) */ + #define R_GMAC_MAR11_H_MBC_Msk (0x3f000000UL) /*!< MBC (Bitfield-Mask: 0x3f) */ + #define R_GMAC_MAR11_H_SA_Pos (30UL) /*!< SA (Bit 30) */ + #define R_GMAC_MAR11_H_SA_Msk (0x40000000UL) /*!< SA (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAR11_H_AE_Pos (31UL) /*!< AE (Bit 31) */ + #define R_GMAC_MAR11_H_AE_Msk (0x80000000UL) /*!< AE (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR12_H ======================================================== */ + #define R_GMAC_MAR12_H_ADDRHI_Pos (0UL) /*!< ADDRHI (Bit 0) */ + #define R_GMAC_MAR12_H_ADDRHI_Msk (0xffffUL) /*!< ADDRHI (Bitfield-Mask: 0xffff) */ + #define R_GMAC_MAR12_H_MBC_Pos (24UL) /*!< MBC (Bit 24) */ + #define R_GMAC_MAR12_H_MBC_Msk (0x3f000000UL) /*!< MBC (Bitfield-Mask: 0x3f) */ + #define R_GMAC_MAR12_H_SA_Pos (30UL) /*!< SA (Bit 30) */ + #define R_GMAC_MAR12_H_SA_Msk (0x40000000UL) /*!< SA (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAR12_H_AE_Pos (31UL) /*!< AE (Bit 31) */ + #define R_GMAC_MAR12_H_AE_Msk (0x80000000UL) /*!< AE (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR13_H ======================================================== */ + #define R_GMAC_MAR13_H_ADDRHI_Pos (0UL) /*!< ADDRHI (Bit 0) */ + #define R_GMAC_MAR13_H_ADDRHI_Msk (0xffffUL) /*!< ADDRHI (Bitfield-Mask: 0xffff) */ + #define R_GMAC_MAR13_H_MBC_Pos (24UL) /*!< MBC (Bit 24) */ + #define R_GMAC_MAR13_H_MBC_Msk (0x3f000000UL) /*!< MBC (Bitfield-Mask: 0x3f) */ + #define R_GMAC_MAR13_H_SA_Pos (30UL) /*!< SA (Bit 30) */ + #define R_GMAC_MAR13_H_SA_Msk (0x40000000UL) /*!< SA (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAR13_H_AE_Pos (31UL) /*!< AE (Bit 31) */ + #define R_GMAC_MAR13_H_AE_Msk (0x80000000UL) /*!< AE (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR14_H ======================================================== */ + #define R_GMAC_MAR14_H_ADDRHI_Pos (0UL) /*!< ADDRHI (Bit 0) */ + #define R_GMAC_MAR14_H_ADDRHI_Msk (0xffffUL) /*!< ADDRHI (Bitfield-Mask: 0xffff) */ + #define R_GMAC_MAR14_H_MBC_Pos (24UL) /*!< MBC (Bit 24) */ + #define R_GMAC_MAR14_H_MBC_Msk (0x3f000000UL) /*!< MBC (Bitfield-Mask: 0x3f) */ + #define R_GMAC_MAR14_H_SA_Pos (30UL) /*!< SA (Bit 30) */ + #define R_GMAC_MAR14_H_SA_Msk (0x40000000UL) /*!< SA (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAR14_H_AE_Pos (31UL) /*!< AE (Bit 31) */ + #define R_GMAC_MAR14_H_AE_Msk (0x80000000UL) /*!< AE (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR15_H ======================================================== */ + #define R_GMAC_MAR15_H_ADDRHI_Pos (0UL) /*!< ADDRHI (Bit 0) */ + #define R_GMAC_MAR15_H_ADDRHI_Msk (0xffffUL) /*!< ADDRHI (Bitfield-Mask: 0xffff) */ + #define R_GMAC_MAR15_H_MBC_Pos (24UL) /*!< MBC (Bit 24) */ + #define R_GMAC_MAR15_H_MBC_Msk (0x3f000000UL) /*!< MBC (Bitfield-Mask: 0x3f) */ + #define R_GMAC_MAR15_H_SA_Pos (30UL) /*!< SA (Bit 30) */ + #define R_GMAC_MAR15_H_SA_Msk (0x40000000UL) /*!< SA (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAR15_H_AE_Pos (31UL) /*!< AE (Bit 31) */ + #define R_GMAC_MAR15_H_AE_Msk (0x80000000UL) /*!< AE (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR1_L ========================================================= */ + #define R_GMAC_MAR1_L_ADDRLO_Pos (0UL) /*!< ADDRLO (Bit 0) */ + #define R_GMAC_MAR1_L_ADDRLO_Msk (0xffffffffUL) /*!< ADDRLO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MAR2_L ========================================================= */ + #define R_GMAC_MAR2_L_ADDRLO_Pos (0UL) /*!< ADDRLO (Bit 0) */ + #define R_GMAC_MAR2_L_ADDRLO_Msk (0xffffffffUL) /*!< ADDRLO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MAR3_L ========================================================= */ + #define R_GMAC_MAR3_L_ADDRLO_Pos (0UL) /*!< ADDRLO (Bit 0) */ + #define R_GMAC_MAR3_L_ADDRLO_Msk (0xffffffffUL) /*!< ADDRLO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MAR4_L ========================================================= */ + #define R_GMAC_MAR4_L_ADDRLO_Pos (0UL) /*!< ADDRLO (Bit 0) */ + #define R_GMAC_MAR4_L_ADDRLO_Msk (0xffffffffUL) /*!< ADDRLO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MAR5_L ========================================================= */ + #define R_GMAC_MAR5_L_ADDRLO_Pos (0UL) /*!< ADDRLO (Bit 0) */ + #define R_GMAC_MAR5_L_ADDRLO_Msk (0xffffffffUL) /*!< ADDRLO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MAR6_L ========================================================= */ + #define R_GMAC_MAR6_L_ADDRLO_Pos (0UL) /*!< ADDRLO (Bit 0) */ + #define R_GMAC_MAR6_L_ADDRLO_Msk (0xffffffffUL) /*!< ADDRLO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MAR7_L ========================================================= */ + #define R_GMAC_MAR7_L_ADDRLO_Pos (0UL) /*!< ADDRLO (Bit 0) */ + #define R_GMAC_MAR7_L_ADDRLO_Msk (0xffffffffUL) /*!< ADDRLO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MAR8_L ========================================================= */ + #define R_GMAC_MAR8_L_ADDRLO_Pos (0UL) /*!< ADDRLO (Bit 0) */ + #define R_GMAC_MAR8_L_ADDRLO_Msk (0xffffffffUL) /*!< ADDRLO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MAR9_L ========================================================= */ + #define R_GMAC_MAR9_L_ADDRLO_Pos (0UL) /*!< ADDRLO (Bit 0) */ + #define R_GMAC_MAR9_L_ADDRLO_Msk (0xffffffffUL) /*!< ADDRLO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MAR10_L ======================================================== */ + #define R_GMAC_MAR10_L_ADDRLO_Pos (0UL) /*!< ADDRLO (Bit 0) */ + #define R_GMAC_MAR10_L_ADDRLO_Msk (0xffffffffUL) /*!< ADDRLO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MAR11_L ======================================================== */ + #define R_GMAC_MAR11_L_ADDRLO_Pos (0UL) /*!< ADDRLO (Bit 0) */ + #define R_GMAC_MAR11_L_ADDRLO_Msk (0xffffffffUL) /*!< ADDRLO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MAR12_L ======================================================== */ + #define R_GMAC_MAR12_L_ADDRLO_Pos (0UL) /*!< ADDRLO (Bit 0) */ + #define R_GMAC_MAR12_L_ADDRLO_Msk (0xffffffffUL) /*!< ADDRLO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MAR13_L ======================================================== */ + #define R_GMAC_MAR13_L_ADDRLO_Pos (0UL) /*!< ADDRLO (Bit 0) */ + #define R_GMAC_MAR13_L_ADDRLO_Msk (0xffffffffUL) /*!< ADDRLO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MAR14_L ======================================================== */ + #define R_GMAC_MAR14_L_ADDRLO_Pos (0UL) /*!< ADDRLO (Bit 0) */ + #define R_GMAC_MAR14_L_ADDRLO_Msk (0xffffffffUL) /*!< ADDRLO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MAR15_L ======================================================== */ + #define R_GMAC_MAR15_L_ADDRLO_Pos (0UL) /*!< ADDRLO (Bit 0) */ + #define R_GMAC_MAR15_L_ADDRLO_Msk (0xffffffffUL) /*!< ADDRLO (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== WDog_Timeout ====================================================== */ + #define R_GMAC_WDog_Timeout_WTO_Pos (0UL) /*!< WTO (Bit 0) */ + #define R_GMAC_WDog_Timeout_WTO_Msk (0x3fffUL) /*!< WTO (Bitfield-Mask: 0x3fff) */ + #define R_GMAC_WDog_Timeout_PWE_Pos (16UL) /*!< PWE (Bit 16) */ + #define R_GMAC_WDog_Timeout_PWE_Msk (0x10000UL) /*!< PWE (Bitfield-Mask: 0x01) */ +/* ====================================================== MMC_Control ====================================================== */ + #define R_GMAC_MMC_Control_CNTRST_Pos (0UL) /*!< CNTRST (Bit 0) */ + #define R_GMAC_MMC_Control_CNTRST_Msk (0x1UL) /*!< CNTRST (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Control_CNTSTOPRO_Pos (1UL) /*!< CNTSTOPRO (Bit 1) */ + #define R_GMAC_MMC_Control_CNTSTOPRO_Msk (0x2UL) /*!< CNTSTOPRO (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Control_RSTONRD_Pos (2UL) /*!< RSTONRD (Bit 2) */ + #define R_GMAC_MMC_Control_RSTONRD_Msk (0x4UL) /*!< RSTONRD (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Control_CNTFREEZ_Pos (3UL) /*!< CNTFREEZ (Bit 3) */ + #define R_GMAC_MMC_Control_CNTFREEZ_Msk (0x8UL) /*!< CNTFREEZ (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Control_CNTPRST_Pos (4UL) /*!< CNTPRST (Bit 4) */ + #define R_GMAC_MMC_Control_CNTPRST_Msk (0x10UL) /*!< CNTPRST (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Control_CNTPRSTLVL_Pos (5UL) /*!< CNTPRSTLVL (Bit 5) */ + #define R_GMAC_MMC_Control_CNTPRSTLVL_Msk (0x20UL) /*!< CNTPRSTLVL (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Control_UCDBC_Pos (8UL) /*!< UCDBC (Bit 8) */ + #define R_GMAC_MMC_Control_UCDBC_Msk (0x100UL) /*!< UCDBC (Bitfield-Mask: 0x01) */ +/* ================================================= MMC_Receive_Interrupt ================================================= */ + #define R_GMAC_MMC_Receive_Interrupt_RXGBFRMIS_Pos (0UL) /*!< RXGBFRMIS (Bit 0) */ + #define R_GMAC_MMC_Receive_Interrupt_RXGBFRMIS_Msk (0x1UL) /*!< RXGBFRMIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXGBOCTIS_Pos (1UL) /*!< RXGBOCTIS (Bit 1) */ + #define R_GMAC_MMC_Receive_Interrupt_RXGBOCTIS_Msk (0x2UL) /*!< RXGBOCTIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXGOCTIS_Pos (2UL) /*!< RXGOCTIS (Bit 2) */ + #define R_GMAC_MMC_Receive_Interrupt_RXGOCTIS_Msk (0x4UL) /*!< RXGOCTIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXBCGFIS_Pos (3UL) /*!< RXBCGFIS (Bit 3) */ + #define R_GMAC_MMC_Receive_Interrupt_RXBCGFIS_Msk (0x8UL) /*!< RXBCGFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXMCGFIS_Pos (4UL) /*!< RXMCGFIS (Bit 4) */ + #define R_GMAC_MMC_Receive_Interrupt_RXMCGFIS_Msk (0x10UL) /*!< RXMCGFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXCRCERFIS_Pos (5UL) /*!< RXCRCERFIS (Bit 5) */ + #define R_GMAC_MMC_Receive_Interrupt_RXCRCERFIS_Msk (0x20UL) /*!< RXCRCERFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXALGNERFIS_Pos (6UL) /*!< RXALGNERFIS (Bit 6) */ + #define R_GMAC_MMC_Receive_Interrupt_RXALGNERFIS_Msk (0x40UL) /*!< RXALGNERFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXRUNTFIS_Pos (7UL) /*!< RXRUNTFIS (Bit 7) */ + #define R_GMAC_MMC_Receive_Interrupt_RXRUNTFIS_Msk (0x80UL) /*!< RXRUNTFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXJABERFIS_Pos (8UL) /*!< RXJABERFIS (Bit 8) */ + #define R_GMAC_MMC_Receive_Interrupt_RXJABERFIS_Msk (0x100UL) /*!< RXJABERFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXUSIZEGFIS_Pos (9UL) /*!< RXUSIZEGFIS (Bit 9) */ + #define R_GMAC_MMC_Receive_Interrupt_RXUSIZEGFIS_Msk (0x200UL) /*!< RXUSIZEGFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXOSIZEGFIS_Pos (10UL) /*!< RXOSIZEGFIS (Bit 10) */ + #define R_GMAC_MMC_Receive_Interrupt_RXOSIZEGFIS_Msk (0x400UL) /*!< RXOSIZEGFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RX64OCTGBFIS_Pos (11UL) /*!< RX64OCTGBFIS (Bit 11) */ + #define R_GMAC_MMC_Receive_Interrupt_RX64OCTGBFIS_Msk (0x800UL) /*!< RX64OCTGBFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RX65T127OCTGBFIS_Pos (12UL) /*!< RX65T127OCTGBFIS (Bit 12) */ + #define R_GMAC_MMC_Receive_Interrupt_RX65T127OCTGBFIS_Msk (0x1000UL) /*!< RX65T127OCTGBFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RX128T255OCTGBFIS_Pos (13UL) /*!< RX128T255OCTGBFIS (Bit 13) */ + #define R_GMAC_MMC_Receive_Interrupt_RX128T255OCTGBFIS_Msk (0x2000UL) /*!< RX128T255OCTGBFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RX256T511OCTGBFIS_Pos (14UL) /*!< RX256T511OCTGBFIS (Bit 14) */ + #define R_GMAC_MMC_Receive_Interrupt_RX256T511OCTGBFIS_Msk (0x4000UL) /*!< RX256T511OCTGBFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RX512T1023OCTGBFIS_Pos (15UL) /*!< RX512T1023OCTGBFIS (Bit 15) */ + #define R_GMAC_MMC_Receive_Interrupt_RX512T1023OCTGBFIS_Msk (0x8000UL) /*!< RX512T1023OCTGBFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RX1024TMAXOCTGBFIS_Pos (16UL) /*!< RX1024TMAXOCTGBFIS (Bit 16) */ + #define R_GMAC_MMC_Receive_Interrupt_RX1024TMAXOCTGBFIS_Msk (0x10000UL) /*!< RX1024TMAXOCTGBFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXUCGFIS_Pos (17UL) /*!< RXUCGFIS (Bit 17) */ + #define R_GMAC_MMC_Receive_Interrupt_RXUCGFIS_Msk (0x20000UL) /*!< RXUCGFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXLENERFIS_Pos (18UL) /*!< RXLENERFIS (Bit 18) */ + #define R_GMAC_MMC_Receive_Interrupt_RXLENERFIS_Msk (0x40000UL) /*!< RXLENERFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXORANGEFIS_Pos (19UL) /*!< RXORANGEFIS (Bit 19) */ + #define R_GMAC_MMC_Receive_Interrupt_RXORANGEFIS_Msk (0x80000UL) /*!< RXORANGEFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXPAUSFIS_Pos (20UL) /*!< RXPAUSFIS (Bit 20) */ + #define R_GMAC_MMC_Receive_Interrupt_RXPAUSFIS_Msk (0x100000UL) /*!< RXPAUSFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXFOVFIS_Pos (21UL) /*!< RXFOVFIS (Bit 21) */ + #define R_GMAC_MMC_Receive_Interrupt_RXFOVFIS_Msk (0x200000UL) /*!< RXFOVFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXVLANGBFIS_Pos (22UL) /*!< RXVLANGBFIS (Bit 22) */ + #define R_GMAC_MMC_Receive_Interrupt_RXVLANGBFIS_Msk (0x400000UL) /*!< RXVLANGBFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXWDOGFIS_Pos (23UL) /*!< RXWDOGFIS (Bit 23) */ + #define R_GMAC_MMC_Receive_Interrupt_RXWDOGFIS_Msk (0x800000UL) /*!< RXWDOGFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXRCVERRFIS_Pos (24UL) /*!< RXRCVERRFIS (Bit 24) */ + #define R_GMAC_MMC_Receive_Interrupt_RXRCVERRFIS_Msk (0x1000000UL) /*!< RXRCVERRFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_RXCTRLFIS_Pos (25UL) /*!< RXCTRLFIS (Bit 25) */ + #define R_GMAC_MMC_Receive_Interrupt_RXCTRLFIS_Msk (0x2000000UL) /*!< RXCTRLFIS (Bitfield-Mask: 0x01) */ +/* ================================================ MMC_Transmit_Interrupt ================================================= */ + #define R_GMAC_MMC_Transmit_Interrupt_TXGBOCTIS_Pos (0UL) /*!< TXGBOCTIS (Bit 0) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXGBOCTIS_Msk (0x1UL) /*!< TXGBOCTIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXGBFRMIS_Pos (1UL) /*!< TXGBFRMIS (Bit 1) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXGBFRMIS_Msk (0x2UL) /*!< TXGBFRMIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXBCGFIS_Pos (2UL) /*!< TXBCGFIS (Bit 2) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXBCGFIS_Msk (0x4UL) /*!< TXBCGFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXMCGFIS_Pos (3UL) /*!< TXMCGFIS (Bit 3) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXMCGFIS_Msk (0x8UL) /*!< TXMCGFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TX64OCTGBFIS_Pos (4UL) /*!< TX64OCTGBFIS (Bit 4) */ + #define R_GMAC_MMC_Transmit_Interrupt_TX64OCTGBFIS_Msk (0x10UL) /*!< TX64OCTGBFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TX65T127OCTGBFIS_Pos (5UL) /*!< TX65T127OCTGBFIS (Bit 5) */ + #define R_GMAC_MMC_Transmit_Interrupt_TX65T127OCTGBFIS_Msk (0x20UL) /*!< TX65T127OCTGBFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TX128T255OCTGBFIS_Pos (6UL) /*!< TX128T255OCTGBFIS (Bit 6) */ + #define R_GMAC_MMC_Transmit_Interrupt_TX128T255OCTGBFIS_Msk (0x40UL) /*!< TX128T255OCTGBFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TX256T511OCTGBFIS_Pos (7UL) /*!< TX256T511OCTGBFIS (Bit 7) */ + #define R_GMAC_MMC_Transmit_Interrupt_TX256T511OCTGBFIS_Msk (0x80UL) /*!< TX256T511OCTGBFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TX512T1023OCTGBFIS_Pos (8UL) /*!< TX512T1023OCTGBFIS (Bit 8) */ + #define R_GMAC_MMC_Transmit_Interrupt_TX512T1023OCTGBFIS_Msk (0x100UL) /*!< TX512T1023OCTGBFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TX1024TMAXOCTGBFIS_Pos (9UL) /*!< TX1024TMAXOCTGBFIS (Bit 9) */ + #define R_GMAC_MMC_Transmit_Interrupt_TX1024TMAXOCTGBFIS_Msk (0x200UL) /*!< TX1024TMAXOCTGBFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXUCGBFIS_Pos (10UL) /*!< TXUCGBFIS (Bit 10) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXUCGBFIS_Msk (0x400UL) /*!< TXUCGBFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXMCGBFIS_Pos (11UL) /*!< TXMCGBFIS (Bit 11) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXMCGBFIS_Msk (0x800UL) /*!< TXMCGBFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXBCGBFIS_Pos (12UL) /*!< TXBCGBFIS (Bit 12) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXBCGBFIS_Msk (0x1000UL) /*!< TXBCGBFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXUFLOWERFIS_Pos (13UL) /*!< TXUFLOWERFIS (Bit 13) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXUFLOWERFIS_Msk (0x2000UL) /*!< TXUFLOWERFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXSCOLGFIS_Pos (14UL) /*!< TXSCOLGFIS (Bit 14) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXSCOLGFIS_Msk (0x4000UL) /*!< TXSCOLGFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXMCOLGFIS_Pos (15UL) /*!< TXMCOLGFIS (Bit 15) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXMCOLGFIS_Msk (0x8000UL) /*!< TXMCOLGFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXDEFFIS_Pos (16UL) /*!< TXDEFFIS (Bit 16) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXDEFFIS_Msk (0x10000UL) /*!< TXDEFFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXLATCOLFIS_Pos (17UL) /*!< TXLATCOLFIS (Bit 17) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXLATCOLFIS_Msk (0x20000UL) /*!< TXLATCOLFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXEXCOLFIS_Pos (18UL) /*!< TXEXCOLFIS (Bit 18) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXEXCOLFIS_Msk (0x40000UL) /*!< TXEXCOLFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXCARERFIS_Pos (19UL) /*!< TXCARERFIS (Bit 19) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXCARERFIS_Msk (0x80000UL) /*!< TXCARERFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXGOCTIS_Pos (20UL) /*!< TXGOCTIS (Bit 20) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXGOCTIS_Msk (0x100000UL) /*!< TXGOCTIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXGFRMIS_Pos (21UL) /*!< TXGFRMIS (Bit 21) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXGFRMIS_Msk (0x200000UL) /*!< TXGFRMIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXEXDEFFIS_Pos (22UL) /*!< TXEXDEFFIS (Bit 22) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXEXDEFFIS_Msk (0x400000UL) /*!< TXEXDEFFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXPAUSFIS_Pos (23UL) /*!< TXPAUSFIS (Bit 23) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXPAUSFIS_Msk (0x800000UL) /*!< TXPAUSFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXVLANGFIS_Pos (24UL) /*!< TXVLANGFIS (Bit 24) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXVLANGFIS_Msk (0x1000000UL) /*!< TXVLANGFIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXOSIZEGFIS_Pos (25UL) /*!< TXOSIZEGFIS (Bit 25) */ + #define R_GMAC_MMC_Transmit_Interrupt_TXOSIZEGFIS_Msk (0x2000000UL) /*!< TXOSIZEGFIS (Bitfield-Mask: 0x01) */ +/* ============================================== MMC_Receive_Interrupt_Mask =============================================== */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXGBFRMIM_Pos (0UL) /*!< RXGBFRMIM (Bit 0) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXGBFRMIM_Msk (0x1UL) /*!< RXGBFRMIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXGBOCTIM_Pos (1UL) /*!< RXGBOCTIM (Bit 1) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXGBOCTIM_Msk (0x2UL) /*!< RXGBOCTIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXGOCTIM_Pos (2UL) /*!< RXGOCTIM (Bit 2) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXGOCTIM_Msk (0x4UL) /*!< RXGOCTIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXBCGFIM_Pos (3UL) /*!< RXBCGFIM (Bit 3) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXBCGFIM_Msk (0x8UL) /*!< RXBCGFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXMCGFIM_Pos (4UL) /*!< RXMCGFIM (Bit 4) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXMCGFIM_Msk (0x10UL) /*!< RXMCGFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXCRCERFIM_Pos (5UL) /*!< RXCRCERFIM (Bit 5) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXCRCERFIM_Msk (0x20UL) /*!< RXCRCERFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXALGNERFIM_Pos (6UL) /*!< RXALGNERFIM (Bit 6) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXALGNERFIM_Msk (0x40UL) /*!< RXALGNERFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXRUNTFIM_Pos (7UL) /*!< RXRUNTFIM (Bit 7) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXRUNTFIM_Msk (0x80UL) /*!< RXRUNTFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXJABERFIM_Pos (8UL) /*!< RXJABERFIM (Bit 8) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXJABERFIM_Msk (0x100UL) /*!< RXJABERFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXUSIZEGFIM_Pos (9UL) /*!< RXUSIZEGFIM (Bit 9) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXUSIZEGFIM_Msk (0x200UL) /*!< RXUSIZEGFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXOSIZEGFIM_Pos (10UL) /*!< RXOSIZEGFIM (Bit 10) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXOSIZEGFIM_Msk (0x400UL) /*!< RXOSIZEGFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RX64OCTGBFIM_Pos (11UL) /*!< RX64OCTGBFIM (Bit 11) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RX64OCTGBFIM_Msk (0x800UL) /*!< RX64OCTGBFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RX65T127OCTGBFIM_Pos (12UL) /*!< RX65T127OCTGBFIM (Bit 12) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RX65T127OCTGBFIM_Msk (0x1000UL) /*!< RX65T127OCTGBFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RX128T255OCTGBFIM_Pos (13UL) /*!< RX128T255OCTGBFIM (Bit 13) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RX128T255OCTGBFIM_Msk (0x2000UL) /*!< RX128T255OCTGBFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RX256T511OCTGBFIM_Pos (14UL) /*!< RX256T511OCTGBFIM (Bit 14) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RX256T511OCTGBFIM_Msk (0x4000UL) /*!< RX256T511OCTGBFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RX512T1023OCTGBFIM_Pos (15UL) /*!< RX512T1023OCTGBFIM (Bit 15) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RX512T1023OCTGBFIM_Msk (0x8000UL) /*!< RX512T1023OCTGBFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RX1024TMAXOCTGBFIM_Pos (16UL) /*!< RX1024TMAXOCTGBFIM (Bit 16) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RX1024TMAXOCTGBFIM_Msk (0x10000UL) /*!< RX1024TMAXOCTGBFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXUCGFIM_Pos (17UL) /*!< RXUCGFIM (Bit 17) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXUCGFIM_Msk (0x20000UL) /*!< RXUCGFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXLENERFIM_Pos (18UL) /*!< RXLENERFIM (Bit 18) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXLENERFIM_Msk (0x40000UL) /*!< RXLENERFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXORANGEFIM_Pos (19UL) /*!< RXORANGEFIM (Bit 19) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXORANGEFIM_Msk (0x80000UL) /*!< RXORANGEFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXPAUSFIM_Pos (20UL) /*!< RXPAUSFIM (Bit 20) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXPAUSFIM_Msk (0x100000UL) /*!< RXPAUSFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXFOVFIM_Pos (21UL) /*!< RXFOVFIM (Bit 21) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXFOVFIM_Msk (0x200000UL) /*!< RXFOVFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXVLANGBFIM_Pos (22UL) /*!< RXVLANGBFIM (Bit 22) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXVLANGBFIM_Msk (0x400000UL) /*!< RXVLANGBFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXWDOGFIM_Pos (23UL) /*!< RXWDOGFIM (Bit 23) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXWDOGFIM_Msk (0x800000UL) /*!< RXWDOGFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXRCVERRFIM_Pos (24UL) /*!< RXRCVERRFIM (Bit 24) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXRCVERRFIM_Msk (0x1000000UL) /*!< RXRCVERRFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXCTRLFIM_Pos (25UL) /*!< RXCTRLFIM (Bit 25) */ + #define R_GMAC_MMC_Receive_Interrupt_Mask_RXCTRLFIM_Msk (0x2000000UL) /*!< RXCTRLFIM (Bitfield-Mask: 0x01) */ +/* ============================================== MMC_Transmit_Interrupt_Mask ============================================== */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXGBOCTIM_Pos (0UL) /*!< TXGBOCTIM (Bit 0) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXGBOCTIM_Msk (0x1UL) /*!< TXGBOCTIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXGBFRMIM_Pos (1UL) /*!< TXGBFRMIM (Bit 1) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXGBFRMIM_Msk (0x2UL) /*!< TXGBFRMIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXBCGFIM_Pos (2UL) /*!< TXBCGFIM (Bit 2) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXBCGFIM_Msk (0x4UL) /*!< TXBCGFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXMCGFIM_Pos (3UL) /*!< TXMCGFIM (Bit 3) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXMCGFIM_Msk (0x8UL) /*!< TXMCGFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TX64OCTGBFIM_Pos (4UL) /*!< TX64OCTGBFIM (Bit 4) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TX64OCTGBFIM_Msk (0x10UL) /*!< TX64OCTGBFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TX65T127OCTGBFIM_Pos (5UL) /*!< TX65T127OCTGBFIM (Bit 5) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TX65T127OCTGBFIM_Msk (0x20UL) /*!< TX65T127OCTGBFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TX128T255OCTGBFIM_Pos (6UL) /*!< TX128T255OCTGBFIM (Bit 6) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TX128T255OCTGBFIM_Msk (0x40UL) /*!< TX128T255OCTGBFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TX256T511OCTGBFIM_Pos (7UL) /*!< TX256T511OCTGBFIM (Bit 7) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TX256T511OCTGBFIM_Msk (0x80UL) /*!< TX256T511OCTGBFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TX512T1023OCTGBFIM_Pos (8UL) /*!< TX512T1023OCTGBFIM (Bit 8) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TX512T1023OCTGBFIM_Msk (0x100UL) /*!< TX512T1023OCTGBFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TX1024TMAXOCTGBFIM_Pos (9UL) /*!< TX1024TMAXOCTGBFIM (Bit 9) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TX1024TMAXOCTGBFIM_Msk (0x200UL) /*!< TX1024TMAXOCTGBFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXUCGBFIM_Pos (10UL) /*!< TXUCGBFIM (Bit 10) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXUCGBFIM_Msk (0x400UL) /*!< TXUCGBFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXMCGBFIM_Pos (11UL) /*!< TXMCGBFIM (Bit 11) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXMCGBFIM_Msk (0x800UL) /*!< TXMCGBFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXBCGBFIM_Pos (12UL) /*!< TXBCGBFIM (Bit 12) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXBCGBFIM_Msk (0x1000UL) /*!< TXBCGBFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXUFLOWERFIM_Pos (13UL) /*!< TXUFLOWERFIM (Bit 13) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXUFLOWERFIM_Msk (0x2000UL) /*!< TXUFLOWERFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXSCOLGFIM_Pos (14UL) /*!< TXSCOLGFIM (Bit 14) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXSCOLGFIM_Msk (0x4000UL) /*!< TXSCOLGFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXMCOLGFIM_Pos (15UL) /*!< TXMCOLGFIM (Bit 15) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXMCOLGFIM_Msk (0x8000UL) /*!< TXMCOLGFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXDEFFIM_Pos (16UL) /*!< TXDEFFIM (Bit 16) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXDEFFIM_Msk (0x10000UL) /*!< TXDEFFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXLATCOLFIM_Pos (17UL) /*!< TXLATCOLFIM (Bit 17) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXLATCOLFIM_Msk (0x20000UL) /*!< TXLATCOLFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXEXCOLFIM_Pos (18UL) /*!< TXEXCOLFIM (Bit 18) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXEXCOLFIM_Msk (0x40000UL) /*!< TXEXCOLFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXCARERFIM_Pos (19UL) /*!< TXCARERFIM (Bit 19) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXCARERFIM_Msk (0x80000UL) /*!< TXCARERFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXGOCTIM_Pos (20UL) /*!< TXGOCTIM (Bit 20) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXGOCTIM_Msk (0x100000UL) /*!< TXGOCTIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXGFRMIM_Pos (21UL) /*!< TXGFRMIM (Bit 21) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXGFRMIM_Msk (0x200000UL) /*!< TXGFRMIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXEXDEFFIM_Pos (22UL) /*!< TXEXDEFFIM (Bit 22) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXEXDEFFIM_Msk (0x400000UL) /*!< TXEXDEFFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXPAUSFIM_Pos (23UL) /*!< TXPAUSFIM (Bit 23) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXPAUSFIM_Msk (0x800000UL) /*!< TXPAUSFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXVLANGFIM_Pos (24UL) /*!< TXVLANGFIM (Bit 24) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXVLANGFIM_Msk (0x1000000UL) /*!< TXVLANGFIM (Bitfield-Mask: 0x01) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXOSIZEGFIM_Pos (25UL) /*!< TXOSIZEGFIM (Bit 25) */ + #define R_GMAC_MMC_Transmit_Interrupt_Mask_TXOSIZEGFIM_Msk (0x2000000UL) /*!< TXOSIZEGFIM (Bitfield-Mask: 0x01) */ +/* ================================================ Tx_Octet_Count_Good_Bad ================================================ */ + #define R_GMAC_Tx_Octet_Count_Good_Bad_TXOCTGB_Pos (0UL) /*!< TXOCTGB (Bit 0) */ + #define R_GMAC_Tx_Octet_Count_Good_Bad_TXOCTGB_Msk (0xffffffffUL) /*!< TXOCTGB (Bitfield-Mask: 0xffffffff) */ +/* ================================================ Tx_Frame_Count_Good_Bad ================================================ */ + #define R_GMAC_Tx_Frame_Count_Good_Bad_TXFRMGB_Pos (0UL) /*!< TXFRMGB (Bit 0) */ + #define R_GMAC_Tx_Frame_Count_Good_Bad_TXFRMGB_Msk (0xffffffffUL) /*!< TXFRMGB (Bitfield-Mask: 0xffffffff) */ +/* =============================================== Tx_Broadcast_Frames_Good ================================================ */ + #define R_GMAC_Tx_Broadcast_Frames_Good_TXBCASTG_Pos (0UL) /*!< TXBCASTG (Bit 0) */ + #define R_GMAC_Tx_Broadcast_Frames_Good_TXBCASTG_Msk (0xffffffffUL) /*!< TXBCASTG (Bitfield-Mask: 0xffffffff) */ +/* =============================================== Tx_Multicast_Frames_Good ================================================ */ + #define R_GMAC_Tx_Multicast_Frames_Good_TXMCASTG_Pos (0UL) /*!< TXMCASTG (Bit 0) */ + #define R_GMAC_Tx_Multicast_Frames_Good_TXMCASTG_Msk (0xffffffffUL) /*!< TXMCASTG (Bitfield-Mask: 0xffffffff) */ +/* ============================================== Tx_64Octets_Frames_Good_Bad ============================================== */ + #define R_GMAC_Tx_64Octets_Frames_Good_Bad_TX64OCTGB_Pos (0UL) /*!< TX64OCTGB (Bit 0) */ + #define R_GMAC_Tx_64Octets_Frames_Good_Bad_TX64OCTGB_Msk (0xffffffffUL) /*!< TX64OCTGB (Bitfield-Mask: 0xffffffff) */ +/* =========================================== Tx_65To127Octets_Frames_Good_Bad ============================================ */ + #define R_GMAC_Tx_65To127Octets_Frames_Good_Bad_TX65_127OCTGB_Pos (0UL) /*!< TX65_127OCTGB (Bit 0) */ + #define R_GMAC_Tx_65To127Octets_Frames_Good_Bad_TX65_127OCTGB_Msk (0xffffffffUL) /*!< TX65_127OCTGB (Bitfield-Mask: 0xffffffff) */ +/* =========================================== Tx_128To255Octets_Frames_Good_Bad =========================================== */ + #define R_GMAC_Tx_128To255Octets_Frames_Good_Bad_TX128_255OCTGB_Pos (0UL) /*!< TX128_255OCTGB (Bit 0) */ + #define R_GMAC_Tx_128To255Octets_Frames_Good_Bad_TX128_255OCTGB_Msk (0xffffffffUL) /*!< TX128_255OCTGB (Bitfield-Mask: 0xffffffff) */ +/* =========================================== Tx_256To511Octets_Frames_Good_Bad =========================================== */ + #define R_GMAC_Tx_256To511Octets_Frames_Good_Bad_TX256_511OCTGB_Pos (0UL) /*!< TX256_511OCTGB (Bit 0) */ + #define R_GMAC_Tx_256To511Octets_Frames_Good_Bad_TX256_511OCTGB_Msk (0xffffffffUL) /*!< TX256_511OCTGB (Bitfield-Mask: 0xffffffff) */ +/* ========================================== Tx_512To1023Octets_Frames_Good_Bad =========================================== */ + #define R_GMAC_Tx_512To1023Octets_Frames_Good_Bad_TX512_1023OCTGB_Pos (0UL) /*!< TX512_1023OCTGB (Bit 0) */ + #define R_GMAC_Tx_512To1023Octets_Frames_Good_Bad_TX512_1023OCTGB_Msk (0xffffffffUL) /*!< TX512_1023OCTGB (Bitfield-Mask: 0xffffffff) */ +/* ========================================== Tx_1024ToMaxOctets_Frames_Good_Bad =========================================== */ + #define R_GMAC_Tx_1024ToMaxOctets_Frames_Good_Bad_TX1024_MAXOCTGB_Pos (0UL) /*!< TX1024_MAXOCTGB (Bit 0) */ + #define R_GMAC_Tx_1024ToMaxOctets_Frames_Good_Bad_TX1024_MAXOCTGB_Msk (0xffffffffUL) /*!< TX1024_MAXOCTGB (Bitfield-Mask: 0xffffffff) */ +/* ============================================== Tx_Unicast_Frames_Good_Bad =============================================== */ + #define R_GMAC_Tx_Unicast_Frames_Good_Bad_TXUCASTGB_Pos (0UL) /*!< TXUCASTGB (Bit 0) */ + #define R_GMAC_Tx_Unicast_Frames_Good_Bad_TXUCASTGB_Msk (0xffffffffUL) /*!< TXUCASTGB (Bitfield-Mask: 0xffffffff) */ +/* ============================================= Tx_Multicast_Frames_Good_Bad ============================================== */ + #define R_GMAC_Tx_Multicast_Frames_Good_Bad_TXMCASTGB_Pos (0UL) /*!< TXMCASTGB (Bit 0) */ + #define R_GMAC_Tx_Multicast_Frames_Good_Bad_TXMCASTGB_Msk (0xffffffffUL) /*!< TXMCASTGB (Bitfield-Mask: 0xffffffff) */ +/* ============================================= Tx_Broadcast_Frames_Good_Bad ============================================== */ + #define R_GMAC_Tx_Broadcast_Frames_Good_Bad_TXBCASTGB_Pos (0UL) /*!< TXBCASTGB (Bit 0) */ + #define R_GMAC_Tx_Broadcast_Frames_Good_Bad_TXBCASTGB_Msk (0xffffffffUL) /*!< TXBCASTGB (Bitfield-Mask: 0xffffffff) */ +/* =============================================== Tx_Underflow_Error_Frames =============================================== */ + #define R_GMAC_Tx_Underflow_Error_Frames_TXUNDRFLW_Pos (0UL) /*!< TXUNDRFLW (Bit 0) */ + #define R_GMAC_Tx_Underflow_Error_Frames_TXUNDRFLW_Msk (0xffffUL) /*!< TXUNDRFLW (Bitfield-Mask: 0xffff) */ +/* ============================================ Tx_Single_Collision_Good_Frames ============================================ */ + #define R_GMAC_Tx_Single_Collision_Good_Frames_TXSNGLCOLG_Pos (0UL) /*!< TXSNGLCOLG (Bit 0) */ + #define R_GMAC_Tx_Single_Collision_Good_Frames_TXSNGLCOLG_Msk (0xffffUL) /*!< TXSNGLCOLG (Bitfield-Mask: 0xffff) */ +/* =========================================== Tx_Multiple_Collision_Good_Frames =========================================== */ + #define R_GMAC_Tx_Multiple_Collision_Good_Frames_TXMULTCOLG_Pos (0UL) /*!< TXMULTCOLG (Bit 0) */ + #define R_GMAC_Tx_Multiple_Collision_Good_Frames_TXMULTCOLG_Msk (0xffffUL) /*!< TXMULTCOLG (Bitfield-Mask: 0xffff) */ +/* ================================================== Tx_Deferred_Frames =================================================== */ + #define R_GMAC_Tx_Deferred_Frames_TXDEFRD_Pos (0UL) /*!< TXDEFRD (Bit 0) */ + #define R_GMAC_Tx_Deferred_Frames_TXDEFRD_Msk (0xffffUL) /*!< TXDEFRD (Bitfield-Mask: 0xffff) */ +/* =============================================== Tx_Late_Collision_Frames ================================================ */ + #define R_GMAC_Tx_Late_Collision_Frames_TXLATECOL_Pos (0UL) /*!< TXLATECOL (Bit 0) */ + #define R_GMAC_Tx_Late_Collision_Frames_TXLATECOL_Msk (0xffffUL) /*!< TXLATECOL (Bitfield-Mask: 0xffff) */ +/* ============================================= Tx_Excessive_Collision_Frames ============================================= */ + #define R_GMAC_Tx_Excessive_Collision_Frames_TXEXSCOL_Pos (0UL) /*!< TXEXSCOL (Bit 0) */ + #define R_GMAC_Tx_Excessive_Collision_Frames_TXEXSCOL_Msk (0xffffUL) /*!< TXEXSCOL (Bitfield-Mask: 0xffff) */ +/* ================================================ Tx_Carrier_Error_Frames ================================================ */ + #define R_GMAC_Tx_Carrier_Error_Frames_TXCARR_Pos (0UL) /*!< TXCARR (Bit 0) */ + #define R_GMAC_Tx_Carrier_Error_Frames_TXCARR_Msk (0xffffUL) /*!< TXCARR (Bitfield-Mask: 0xffff) */ +/* ================================================== Tx_Octet_Count_Good ================================================== */ + #define R_GMAC_Tx_Octet_Count_Good_TXOCTG_Pos (0UL) /*!< TXOCTG (Bit 0) */ + #define R_GMAC_Tx_Octet_Count_Good_TXOCTG_Msk (0xffffffffUL) /*!< TXOCTG (Bitfield-Mask: 0xffffffff) */ +/* ================================================== Tx_Frame_Count_Good ================================================== */ + #define R_GMAC_Tx_Frame_Count_Good_TXFRMG_Pos (0UL) /*!< TXFRMG (Bit 0) */ + #define R_GMAC_Tx_Frame_Count_Good_TXFRMG_Msk (0xffffffffUL) /*!< TXFRMG (Bitfield-Mask: 0xffffffff) */ +/* ============================================== Tx_Excessive_Deferral_Error ============================================== */ + #define R_GMAC_Tx_Excessive_Deferral_Error_TXEXSDEF_Pos (0UL) /*!< TXEXSDEF (Bit 0) */ + #define R_GMAC_Tx_Excessive_Deferral_Error_TXEXSDEF_Msk (0xffffUL) /*!< TXEXSDEF (Bitfield-Mask: 0xffff) */ +/* ==================================================== Tx_Pause_Frames ==================================================== */ + #define R_GMAC_Tx_Pause_Frames_TXPAUSE_Pos (0UL) /*!< TXPAUSE (Bit 0) */ + #define R_GMAC_Tx_Pause_Frames_TXPAUSE_Msk (0xffffUL) /*!< TXPAUSE (Bitfield-Mask: 0xffff) */ +/* ================================================== Tx_VLAN_Frames_Good ================================================== */ + #define R_GMAC_Tx_VLAN_Frames_Good_TXVLANG_Pos (0UL) /*!< TXVLANG (Bit 0) */ + #define R_GMAC_Tx_VLAN_Frames_Good_TXVLANG_Msk (0xffffffffUL) /*!< TXVLANG (Bitfield-Mask: 0xffffffff) */ +/* ================================================= Tx_OSize_Frames_Good ================================================== */ + #define R_GMAC_Tx_OSize_Frames_Good_TXOSIZG_Pos (0UL) /*!< TXOSIZG (Bit 0) */ + #define R_GMAC_Tx_OSize_Frames_Good_TXOSIZG_Msk (0xffffUL) /*!< TXOSIZG (Bitfield-Mask: 0xffff) */ +/* =============================================== Rx_Frames_Count_Good_Bad ================================================ */ + #define R_GMAC_Rx_Frames_Count_Good_Bad_RXFRMGB_Pos (0UL) /*!< RXFRMGB (Bit 0) */ + #define R_GMAC_Rx_Frames_Count_Good_Bad_RXFRMGB_Msk (0xffffffffUL) /*!< RXFRMGB (Bitfield-Mask: 0xffffffff) */ +/* ================================================ Rx_Octet_Count_Good_Bad ================================================ */ + #define R_GMAC_Rx_Octet_Count_Good_Bad_RXOCTGB_Pos (0UL) /*!< RXOCTGB (Bit 0) */ + #define R_GMAC_Rx_Octet_Count_Good_Bad_RXOCTGB_Msk (0xffffffffUL) /*!< RXOCTGB (Bitfield-Mask: 0xffffffff) */ +/* ================================================== Rx_Octet_Count_Good ================================================== */ + #define R_GMAC_Rx_Octet_Count_Good_RXOCTG_Pos (0UL) /*!< RXOCTG (Bit 0) */ + #define R_GMAC_Rx_Octet_Count_Good_RXOCTG_Msk (0xffffffffUL) /*!< RXOCTG (Bitfield-Mask: 0xffffffff) */ +/* =============================================== Rx_Broadcast_Frames_Good ================================================ */ + #define R_GMAC_Rx_Broadcast_Frames_Good_RXBCASTG_Pos (0UL) /*!< RXBCASTG (Bit 0) */ + #define R_GMAC_Rx_Broadcast_Frames_Good_RXBCASTG_Msk (0xffffffffUL) /*!< RXBCASTG (Bitfield-Mask: 0xffffffff) */ +/* =============================================== Rx_Multicast_Frames_Good ================================================ */ + #define R_GMAC_Rx_Multicast_Frames_Good_RXMCASTG_Pos (0UL) /*!< RXMCASTG (Bit 0) */ + #define R_GMAC_Rx_Multicast_Frames_Good_RXMCASTG_Msk (0xffffffffUL) /*!< RXMCASTG (Bitfield-Mask: 0xffffffff) */ +/* ================================================== Rx_CRC_Error_Frames ================================================== */ + #define R_GMAC_Rx_CRC_Error_Frames_RXCRCERR_Pos (0UL) /*!< RXCRCERR (Bit 0) */ + #define R_GMAC_Rx_CRC_Error_Frames_RXCRCERR_Msk (0xffffUL) /*!< RXCRCERR (Bitfield-Mask: 0xffff) */ +/* =============================================== Rx_Alignment_Error_Frames =============================================== */ + #define R_GMAC_Rx_Alignment_Error_Frames_RXALGNERR_Pos (0UL) /*!< RXALGNERR (Bit 0) */ + #define R_GMAC_Rx_Alignment_Error_Frames_RXALGNERR_Msk (0xffffUL) /*!< RXALGNERR (Bitfield-Mask: 0xffff) */ +/* ================================================= Rx_Runt_Error_Frames ================================================== */ + #define R_GMAC_Rx_Runt_Error_Frames_RXRUNTERR_Pos (0UL) /*!< RXRUNTERR (Bit 0) */ + #define R_GMAC_Rx_Runt_Error_Frames_RXRUNTERR_Msk (0xffffUL) /*!< RXRUNTERR (Bitfield-Mask: 0xffff) */ +/* ================================================ Rx_Jabber_Error_Frames ================================================= */ + #define R_GMAC_Rx_Jabber_Error_Frames_RXJABERR_Pos (0UL) /*!< RXJABERR (Bit 0) */ + #define R_GMAC_Rx_Jabber_Error_Frames_RXJABERR_Msk (0xffffUL) /*!< RXJABERR (Bitfield-Mask: 0xffff) */ +/* =============================================== Rx_Undersize_Frames_Good ================================================ */ + #define R_GMAC_Rx_Undersize_Frames_Good_RXUNDERSZG_Pos (0UL) /*!< RXUNDERSZG (Bit 0) */ + #define R_GMAC_Rx_Undersize_Frames_Good_RXUNDERSZG_Msk (0xffffUL) /*!< RXUNDERSZG (Bitfield-Mask: 0xffff) */ +/* ================================================ Rx_Oversize_Frames_Good ================================================ */ + #define R_GMAC_Rx_Oversize_Frames_Good_RXOVERSZG_Pos (0UL) /*!< RXOVERSZG (Bit 0) */ + #define R_GMAC_Rx_Oversize_Frames_Good_RXOVERSZG_Msk (0xffffUL) /*!< RXOVERSZG (Bitfield-Mask: 0xffff) */ +/* ============================================== Rx_64Octets_Frames_Good_Bad ============================================== */ + #define R_GMAC_Rx_64Octets_Frames_Good_Bad_RX64OCTGB_Pos (0UL) /*!< RX64OCTGB (Bit 0) */ + #define R_GMAC_Rx_64Octets_Frames_Good_Bad_RX64OCTGB_Msk (0xffffffffUL) /*!< RX64OCTGB (Bitfield-Mask: 0xffffffff) */ +/* =========================================== Rx_65To127Octets_Frames_Good_Bad ============================================ */ + #define R_GMAC_Rx_65To127Octets_Frames_Good_Bad_RX65_127OCTGB_Pos (0UL) /*!< RX65_127OCTGB (Bit 0) */ + #define R_GMAC_Rx_65To127Octets_Frames_Good_Bad_RX65_127OCTGB_Msk (0xffffffffUL) /*!< RX65_127OCTGB (Bitfield-Mask: 0xffffffff) */ +/* =========================================== Rx_128To255Octets_Frames_Good_Bad =========================================== */ + #define R_GMAC_Rx_128To255Octets_Frames_Good_Bad_RX128_255OCTGB_Pos (0UL) /*!< RX128_255OCTGB (Bit 0) */ + #define R_GMAC_Rx_128To255Octets_Frames_Good_Bad_RX128_255OCTGB_Msk (0xffffffffUL) /*!< RX128_255OCTGB (Bitfield-Mask: 0xffffffff) */ +/* =========================================== Rx_256To511Octets_Frames_Good_Bad =========================================== */ + #define R_GMAC_Rx_256To511Octets_Frames_Good_Bad_RX256_511OCTGB_Pos (0UL) /*!< RX256_511OCTGB (Bit 0) */ + #define R_GMAC_Rx_256To511Octets_Frames_Good_Bad_RX256_511OCTGB_Msk (0xffffffffUL) /*!< RX256_511OCTGB (Bitfield-Mask: 0xffffffff) */ +/* ========================================== Rx_512To1023Octets_Frames_Good_Bad =========================================== */ + #define R_GMAC_Rx_512To1023Octets_Frames_Good_Bad_RX512_1023OCTGB_Pos (0UL) /*!< RX512_1023OCTGB (Bit 0) */ + #define R_GMAC_Rx_512To1023Octets_Frames_Good_Bad_RX512_1023OCTGB_Msk (0xffffffffUL) /*!< RX512_1023OCTGB (Bitfield-Mask: 0xffffffff) */ +/* ========================================== Rx_1024ToMaxOctets_Frames_Good_Bad =========================================== */ + #define R_GMAC_Rx_1024ToMaxOctets_Frames_Good_Bad_RX1024_MAXOCTGB_Pos (0UL) /*!< RX1024_MAXOCTGB (Bit 0) */ + #define R_GMAC_Rx_1024ToMaxOctets_Frames_Good_Bad_RX1024_MAXOCTGB_Msk (0xffffffffUL) /*!< RX1024_MAXOCTGB (Bitfield-Mask: 0xffffffff) */ +/* ================================================ Rx_Unicast_Frames_Good ================================================= */ + #define R_GMAC_Rx_Unicast_Frames_Good_RXUCASTG_Pos (0UL) /*!< RXUCASTG (Bit 0) */ + #define R_GMAC_Rx_Unicast_Frames_Good_RXUCASTG_Msk (0xffffffffUL) /*!< RXUCASTG (Bitfield-Mask: 0xffffffff) */ +/* ================================================ Rx_Length_Error_Frames ================================================= */ + #define R_GMAC_Rx_Length_Error_Frames_RXLENERR_Pos (0UL) /*!< RXLENERR (Bit 0) */ + #define R_GMAC_Rx_Length_Error_Frames_RXLENERR_Msk (0xffffUL) /*!< RXLENERR (Bitfield-Mask: 0xffff) */ +/* ============================================== Rx_Out_Of_Range_Type_Frames ============================================== */ + #define R_GMAC_Rx_Out_Of_Range_Type_Frames_RXOUTOFRNG_Pos (0UL) /*!< RXOUTOFRNG (Bit 0) */ + #define R_GMAC_Rx_Out_Of_Range_Type_Frames_RXOUTOFRNG_Msk (0xffffUL) /*!< RXOUTOFRNG (Bitfield-Mask: 0xffff) */ +/* ==================================================== Rx_Pause_Frames ==================================================== */ + #define R_GMAC_Rx_Pause_Frames_RXPAUSEFRM_Pos (0UL) /*!< RXPAUSEFRM (Bit 0) */ + #define R_GMAC_Rx_Pause_Frames_RXPAUSEFRM_Msk (0xffffUL) /*!< RXPAUSEFRM (Bitfield-Mask: 0xffff) */ +/* ================================================ Rx_FIFO_Overflow_Frames ================================================ */ + #define R_GMAC_Rx_FIFO_Overflow_Frames_RXFIFOOVFL_Pos (0UL) /*!< RXFIFOOVFL (Bit 0) */ + #define R_GMAC_Rx_FIFO_Overflow_Frames_RXFIFOOVFL_Msk (0xffffUL) /*!< RXFIFOOVFL (Bitfield-Mask: 0xffff) */ +/* ================================================ Rx_VLAN_Frames_Good_Bad ================================================ */ + #define R_GMAC_Rx_VLAN_Frames_Good_Bad_RXVLANFRGB_Pos (0UL) /*!< RXVLANFRGB (Bit 0) */ + #define R_GMAC_Rx_VLAN_Frames_Good_Bad_RXVLANFRGB_Msk (0xffffffffUL) /*!< RXVLANFRGB (Bitfield-Mask: 0xffffffff) */ +/* =============================================== Rx_Watchdog_Error_Frames ================================================ */ + #define R_GMAC_Rx_Watchdog_Error_Frames_RXWDGERR_Pos (0UL) /*!< RXWDGERR (Bit 0) */ + #define R_GMAC_Rx_Watchdog_Error_Frames_RXWDGERR_Msk (0xffffUL) /*!< RXWDGERR (Bitfield-Mask: 0xffff) */ +/* ================================================ Rx_Receive_Error_Frames ================================================ */ + #define R_GMAC_Rx_Receive_Error_Frames_RXRCVERR_Pos (0UL) /*!< RXRCVERR (Bit 0) */ + #define R_GMAC_Rx_Receive_Error_Frames_RXRCVERR_Msk (0xffffUL) /*!< RXRCVERR (Bitfield-Mask: 0xffff) */ +/* ================================================ Rx_Control_Frames_Good ================================================= */ + #define R_GMAC_Rx_Control_Frames_Good_RXCTRLG_Pos (0UL) /*!< RXCTRLG (Bit 0) */ + #define R_GMAC_Rx_Control_Frames_Good_RXCTRLG_Msk (0xffffffffUL) /*!< RXCTRLG (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== GMACTRGSEL ======================================================= */ + #define R_GMAC_GMACTRGSEL_TRGSEL_Pos (0UL) /*!< TRGSEL (Bit 0) */ + #define R_GMAC_GMACTRGSEL_TRGSEL_Msk (0x3UL) /*!< TRGSEL (Bitfield-Mask: 0x03) */ +/* ==================================================== HASH_TABLE_REG ===================================================== */ + #define R_GMAC_HASH_TABLE_REG_HT_Pos (0UL) /*!< HT (Bit 0) */ + #define R_GMAC_HASH_TABLE_REG_HT_Msk (0xffffffffUL) /*!< HT (Bitfield-Mask: 0xffffffff) */ +/* ================================================== VLAN_Hash_Table_Reg ================================================== */ + #define R_GMAC_VLAN_Hash_Table_Reg_VLHT_Pos (0UL) /*!< VLHT (Bit 0) */ + #define R_GMAC_VLAN_Hash_Table_Reg_VLHT_Msk (0xffffUL) /*!< VLHT (Bitfield-Mask: 0xffff) */ +/* =================================================== Timestamp_Control =================================================== */ + #define R_GMAC_Timestamp_Control_TSENA_Pos (0UL) /*!< TSENA (Bit 0) */ + #define R_GMAC_Timestamp_Control_TSENA_Msk (0x1UL) /*!< TSENA (Bitfield-Mask: 0x01) */ + #define R_GMAC_Timestamp_Control_TSENALL_Pos (8UL) /*!< TSENALL (Bit 8) */ + #define R_GMAC_Timestamp_Control_TSENALL_Msk (0x100UL) /*!< TSENALL (Bitfield-Mask: 0x01) */ + #define R_GMAC_Timestamp_Control_TSCTRLSSR_Pos (9UL) /*!< TSCTRLSSR (Bit 9) */ + #define R_GMAC_Timestamp_Control_TSCTRLSSR_Msk (0x200UL) /*!< TSCTRLSSR (Bitfield-Mask: 0x01) */ + #define R_GMAC_Timestamp_Control_TSVER2ENA_Pos (10UL) /*!< TSVER2ENA (Bit 10) */ + #define R_GMAC_Timestamp_Control_TSVER2ENA_Msk (0x400UL) /*!< TSVER2ENA (Bitfield-Mask: 0x01) */ + #define R_GMAC_Timestamp_Control_TSIPENA_Pos (11UL) /*!< TSIPENA (Bit 11) */ + #define R_GMAC_Timestamp_Control_TSIPENA_Msk (0x800UL) /*!< TSIPENA (Bitfield-Mask: 0x01) */ + #define R_GMAC_Timestamp_Control_TSIPV6ENA_Pos (12UL) /*!< TSIPV6ENA (Bit 12) */ + #define R_GMAC_Timestamp_Control_TSIPV6ENA_Msk (0x1000UL) /*!< TSIPV6ENA (Bitfield-Mask: 0x01) */ + #define R_GMAC_Timestamp_Control_TSIPV4ENA_Pos (13UL) /*!< TSIPV4ENA (Bit 13) */ + #define R_GMAC_Timestamp_Control_TSIPV4ENA_Msk (0x2000UL) /*!< TSIPV4ENA (Bitfield-Mask: 0x01) */ + #define R_GMAC_Timestamp_Control_TSEVNTENA_Pos (14UL) /*!< TSEVNTENA (Bit 14) */ + #define R_GMAC_Timestamp_Control_TSEVNTENA_Msk (0x4000UL) /*!< TSEVNTENA (Bitfield-Mask: 0x01) */ + #define R_GMAC_Timestamp_Control_TSMSTRENA_Pos (15UL) /*!< TSMSTRENA (Bit 15) */ + #define R_GMAC_Timestamp_Control_TSMSTRENA_Msk (0x8000UL) /*!< TSMSTRENA (Bitfield-Mask: 0x01) */ + #define R_GMAC_Timestamp_Control_SNAPTYPSEL_Pos (16UL) /*!< SNAPTYPSEL (Bit 16) */ + #define R_GMAC_Timestamp_Control_SNAPTYPSEL_Msk (0x30000UL) /*!< SNAPTYPSEL (Bitfield-Mask: 0x03) */ + #define R_GMAC_Timestamp_Control_TSENMACADDR_Pos (18UL) /*!< TSENMACADDR (Bit 18) */ + #define R_GMAC_Timestamp_Control_TSENMACADDR_Msk (0x40000UL) /*!< TSENMACADDR (Bitfield-Mask: 0x01) */ + #define R_GMAC_Timestamp_Control_ATSFC_Pos (24UL) /*!< ATSFC (Bit 24) */ + #define R_GMAC_Timestamp_Control_ATSFC_Msk (0x1000000UL) /*!< ATSFC (Bitfield-Mask: 0x01) */ + #define R_GMAC_Timestamp_Control_ATSEN0_Pos (25UL) /*!< ATSEN0 (Bit 25) */ + #define R_GMAC_Timestamp_Control_ATSEN0_Msk (0x2000000UL) /*!< ATSEN0 (Bitfield-Mask: 0x01) */ + #define R_GMAC_Timestamp_Control_ATSEN1_Pos (26UL) /*!< ATSEN1 (Bit 26) */ + #define R_GMAC_Timestamp_Control_ATSEN1_Msk (0x4000000UL) /*!< ATSEN1 (Bitfield-Mask: 0x01) */ +/* =================================================== Timestamp_Status ==================================================== */ + #define R_GMAC_Timestamp_Status_AUXTSTRIG_Pos (2UL) /*!< AUXTSTRIG (Bit 2) */ + #define R_GMAC_Timestamp_Status_AUXTSTRIG_Msk (0x4UL) /*!< AUXTSTRIG (Bitfield-Mask: 0x01) */ + #define R_GMAC_Timestamp_Status_ATSSTN_Pos (16UL) /*!< ATSSTN (Bit 16) */ + #define R_GMAC_Timestamp_Status_ATSSTN_Msk (0xf0000UL) /*!< ATSSTN (Bitfield-Mask: 0x0f) */ + #define R_GMAC_Timestamp_Status_ATSSTM_Pos (24UL) /*!< ATSSTM (Bit 24) */ + #define R_GMAC_Timestamp_Status_ATSSTM_Msk (0x1000000UL) /*!< ATSSTM (Bitfield-Mask: 0x01) */ + #define R_GMAC_Timestamp_Status_ATSNS_Pos (25UL) /*!< ATSNS (Bit 25) */ + #define R_GMAC_Timestamp_Status_ATSNS_Msk (0x3e000000UL) /*!< ATSNS (Bitfield-Mask: 0x1f) */ +/* ============================================ Auxiliary_Timestamp_Nanoseconds ============================================ */ + #define R_GMAC_Auxiliary_Timestamp_Nanoseconds_AUXTSLO_Pos (0UL) /*!< AUXTSLO (Bit 0) */ + #define R_GMAC_Auxiliary_Timestamp_Nanoseconds_AUXTSLO_Msk (0x7fffffffUL) /*!< AUXTSLO (Bitfield-Mask: 0x7fffffff) */ +/* ============================================== Auxiliary_Timestamp_Seconds ============================================== */ + #define R_GMAC_Auxiliary_Timestamp_Seconds_AUXTSHI_Pos (0UL) /*!< AUXTSHI (Bit 0) */ + #define R_GMAC_Auxiliary_Timestamp_Seconds_AUXTSHI_Msk (0xffffffffUL) /*!< AUXTSHI (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MAR16_H ======================================================== */ + #define R_GMAC_MAR16_H_ADDRHI_Pos (0UL) /*!< ADDRHI (Bit 0) */ + #define R_GMAC_MAR16_H_ADDRHI_Msk (0xffffUL) /*!< ADDRHI (Bitfield-Mask: 0xffff) */ + #define R_GMAC_MAR16_H_MBC_Pos (24UL) /*!< MBC (Bit 24) */ + #define R_GMAC_MAR16_H_MBC_Msk (0x3f000000UL) /*!< MBC (Bitfield-Mask: 0x3f) */ + #define R_GMAC_MAR16_H_SA_Pos (30UL) /*!< SA (Bit 30) */ + #define R_GMAC_MAR16_H_SA_Msk (0x40000000UL) /*!< SA (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAR16_H_AE_Pos (31UL) /*!< AE (Bit 31) */ + #define R_GMAC_MAR16_H_AE_Msk (0x80000000UL) /*!< AE (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR16_L ======================================================== */ + #define R_GMAC_MAR16_L_ADDRLO_Pos (0UL) /*!< ADDRLO (Bit 0) */ + #define R_GMAC_MAR16_L_ADDRLO_Msk (0xffffffffUL) /*!< ADDRLO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MAR17_H ======================================================== */ + #define R_GMAC_MAR17_H_ADDRHI_Pos (0UL) /*!< ADDRHI (Bit 0) */ + #define R_GMAC_MAR17_H_ADDRHI_Msk (0xffffUL) /*!< ADDRHI (Bitfield-Mask: 0xffff) */ + #define R_GMAC_MAR17_H_MBC_Pos (24UL) /*!< MBC (Bit 24) */ + #define R_GMAC_MAR17_H_MBC_Msk (0x3f000000UL) /*!< MBC (Bitfield-Mask: 0x3f) */ + #define R_GMAC_MAR17_H_SA_Pos (30UL) /*!< SA (Bit 30) */ + #define R_GMAC_MAR17_H_SA_Msk (0x40000000UL) /*!< SA (Bitfield-Mask: 0x01) */ + #define R_GMAC_MAR17_H_AE_Pos (31UL) /*!< AE (Bit 31) */ + #define R_GMAC_MAR17_H_AE_Msk (0x80000000UL) /*!< AE (Bitfield-Mask: 0x01) */ +/* ======================================================== MAR17_L ======================================================== */ + #define R_GMAC_MAR17_L_ADDRLO_Pos (0UL) /*!< ADDRLO (Bit 0) */ + #define R_GMAC_MAR17_L_ADDRLO_Msk (0xffffffffUL) /*!< ADDRLO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= Bus_Mode ======================================================== */ + #define R_GMAC_Bus_Mode_SWR_Pos (0UL) /*!< SWR (Bit 0) */ + #define R_GMAC_Bus_Mode_SWR_Msk (0x1UL) /*!< SWR (Bitfield-Mask: 0x01) */ + #define R_GMAC_Bus_Mode_DA_Pos (1UL) /*!< DA (Bit 1) */ + #define R_GMAC_Bus_Mode_DA_Msk (0x2UL) /*!< DA (Bitfield-Mask: 0x01) */ + #define R_GMAC_Bus_Mode_DSL_Pos (2UL) /*!< DSL (Bit 2) */ + #define R_GMAC_Bus_Mode_DSL_Msk (0x7cUL) /*!< DSL (Bitfield-Mask: 0x1f) */ + #define R_GMAC_Bus_Mode_ATDS_Pos (7UL) /*!< ATDS (Bit 7) */ + #define R_GMAC_Bus_Mode_ATDS_Msk (0x80UL) /*!< ATDS (Bitfield-Mask: 0x01) */ + #define R_GMAC_Bus_Mode_PBL_Pos (8UL) /*!< PBL (Bit 8) */ + #define R_GMAC_Bus_Mode_PBL_Msk (0x3f00UL) /*!< PBL (Bitfield-Mask: 0x3f) */ + #define R_GMAC_Bus_Mode_PR_Pos (14UL) /*!< PR (Bit 14) */ + #define R_GMAC_Bus_Mode_PR_Msk (0xc000UL) /*!< PR (Bitfield-Mask: 0x03) */ + #define R_GMAC_Bus_Mode_FB_Pos (16UL) /*!< FB (Bit 16) */ + #define R_GMAC_Bus_Mode_FB_Msk (0x10000UL) /*!< FB (Bitfield-Mask: 0x01) */ + #define R_GMAC_Bus_Mode_RPBL_Pos (17UL) /*!< RPBL (Bit 17) */ + #define R_GMAC_Bus_Mode_RPBL_Msk (0x7e0000UL) /*!< RPBL (Bitfield-Mask: 0x3f) */ + #define R_GMAC_Bus_Mode_USP_Pos (23UL) /*!< USP (Bit 23) */ + #define R_GMAC_Bus_Mode_USP_Msk (0x800000UL) /*!< USP (Bitfield-Mask: 0x01) */ + #define R_GMAC_Bus_Mode_PBLx8_Pos (24UL) /*!< PBLx8 (Bit 24) */ + #define R_GMAC_Bus_Mode_PBLx8_Msk (0x1000000UL) /*!< PBLx8 (Bitfield-Mask: 0x01) */ + #define R_GMAC_Bus_Mode_AAL_Pos (25UL) /*!< AAL (Bit 25) */ + #define R_GMAC_Bus_Mode_AAL_Msk (0x2000000UL) /*!< AAL (Bitfield-Mask: 0x01) */ + #define R_GMAC_Bus_Mode_MB_Pos (26UL) /*!< MB (Bit 26) */ + #define R_GMAC_Bus_Mode_MB_Msk (0x4000000UL) /*!< MB (Bitfield-Mask: 0x01) */ + #define R_GMAC_Bus_Mode_TXPR_Pos (27UL) /*!< TXPR (Bit 27) */ + #define R_GMAC_Bus_Mode_TXPR_Msk (0x8000000UL) /*!< TXPR (Bitfield-Mask: 0x01) */ + #define R_GMAC_Bus_Mode_PRWG_Pos (28UL) /*!< PRWG (Bit 28) */ + #define R_GMAC_Bus_Mode_PRWG_Msk (0x30000000UL) /*!< PRWG (Bitfield-Mask: 0x03) */ + #define R_GMAC_Bus_Mode_RIB_Pos (31UL) /*!< RIB (Bit 31) */ + #define R_GMAC_Bus_Mode_RIB_Msk (0x80000000UL) /*!< RIB (Bitfield-Mask: 0x01) */ +/* ================================================= Transmit_Poll_Demand ================================================== */ + #define R_GMAC_Transmit_Poll_Demand_TPD_Pos (0UL) /*!< TPD (Bit 0) */ + #define R_GMAC_Transmit_Poll_Demand_TPD_Msk (0xffffffffUL) /*!< TPD (Bitfield-Mask: 0xffffffff) */ +/* ================================================== Receive_Poll_Demand ================================================== */ + #define R_GMAC_Receive_Poll_Demand_RPD_Pos (0UL) /*!< RPD (Bit 0) */ + #define R_GMAC_Receive_Poll_Demand_RPD_Msk (0xffffffffUL) /*!< RPD (Bitfield-Mask: 0xffffffff) */ +/* ============================================ Receive_Descriptor_List_Address ============================================ */ + #define R_GMAC_Receive_Descriptor_List_Address_RDESLA_32bit_Pos (2UL) /*!< RDESLA_32bit (Bit 2) */ + #define R_GMAC_Receive_Descriptor_List_Address_RDESLA_32bit_Msk (0xfffffffcUL) /*!< RDESLA_32bit (Bitfield-Mask: 0x3fffffff) */ +/* =========================================== Transmit_Descriptor_List_Address ============================================ */ + #define R_GMAC_Transmit_Descriptor_List_Address_TDESLA_32bit_Pos (2UL) /*!< TDESLA_32bit (Bit 2) */ + #define R_GMAC_Transmit_Descriptor_List_Address_TDESLA_32bit_Msk (0xfffffffcUL) /*!< TDESLA_32bit (Bitfield-Mask: 0x3fffffff) */ +/* ======================================================== Status ========================================================= */ + #define R_GMAC_Status_TI_Pos (0UL) /*!< TI (Bit 0) */ + #define R_GMAC_Status_TI_Msk (0x1UL) /*!< TI (Bitfield-Mask: 0x01) */ + #define R_GMAC_Status_TPS_Pos (1UL) /*!< TPS (Bit 1) */ + #define R_GMAC_Status_TPS_Msk (0x2UL) /*!< TPS (Bitfield-Mask: 0x01) */ + #define R_GMAC_Status_TU_Pos (2UL) /*!< TU (Bit 2) */ + #define R_GMAC_Status_TU_Msk (0x4UL) /*!< TU (Bitfield-Mask: 0x01) */ + #define R_GMAC_Status_TJT_Pos (3UL) /*!< TJT (Bit 3) */ + #define R_GMAC_Status_TJT_Msk (0x8UL) /*!< TJT (Bitfield-Mask: 0x01) */ + #define R_GMAC_Status_OVF_Pos (4UL) /*!< OVF (Bit 4) */ + #define R_GMAC_Status_OVF_Msk (0x10UL) /*!< OVF (Bitfield-Mask: 0x01) */ + #define R_GMAC_Status_UNF_Pos (5UL) /*!< UNF (Bit 5) */ + #define R_GMAC_Status_UNF_Msk (0x20UL) /*!< UNF (Bitfield-Mask: 0x01) */ + #define R_GMAC_Status_RI_Pos (6UL) /*!< RI (Bit 6) */ + #define R_GMAC_Status_RI_Msk (0x40UL) /*!< RI (Bitfield-Mask: 0x01) */ + #define R_GMAC_Status_RU_Pos (7UL) /*!< RU (Bit 7) */ + #define R_GMAC_Status_RU_Msk (0x80UL) /*!< RU (Bitfield-Mask: 0x01) */ + #define R_GMAC_Status_RPS_Pos (8UL) /*!< RPS (Bit 8) */ + #define R_GMAC_Status_RPS_Msk (0x100UL) /*!< RPS (Bitfield-Mask: 0x01) */ + #define R_GMAC_Status_RWT_Pos (9UL) /*!< RWT (Bit 9) */ + #define R_GMAC_Status_RWT_Msk (0x200UL) /*!< RWT (Bitfield-Mask: 0x01) */ + #define R_GMAC_Status_ETI_Pos (10UL) /*!< ETI (Bit 10) */ + #define R_GMAC_Status_ETI_Msk (0x400UL) /*!< ETI (Bitfield-Mask: 0x01) */ + #define R_GMAC_Status_FBI_Pos (13UL) /*!< FBI (Bit 13) */ + #define R_GMAC_Status_FBI_Msk (0x2000UL) /*!< FBI (Bitfield-Mask: 0x01) */ + #define R_GMAC_Status_ERI_Pos (14UL) /*!< ERI (Bit 14) */ + #define R_GMAC_Status_ERI_Msk (0x4000UL) /*!< ERI (Bitfield-Mask: 0x01) */ + #define R_GMAC_Status_AIS_Pos (15UL) /*!< AIS (Bit 15) */ + #define R_GMAC_Status_AIS_Msk (0x8000UL) /*!< AIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_Status_NIS_Pos (16UL) /*!< NIS (Bit 16) */ + #define R_GMAC_Status_NIS_Msk (0x10000UL) /*!< NIS (Bitfield-Mask: 0x01) */ + #define R_GMAC_Status_RS_Pos (17UL) /*!< RS (Bit 17) */ + #define R_GMAC_Status_RS_Msk (0xe0000UL) /*!< RS (Bitfield-Mask: 0x07) */ + #define R_GMAC_Status_TS_Pos (20UL) /*!< TS (Bit 20) */ + #define R_GMAC_Status_TS_Msk (0x700000UL) /*!< TS (Bitfield-Mask: 0x07) */ + #define R_GMAC_Status_EB_Pos (23UL) /*!< EB (Bit 23) */ + #define R_GMAC_Status_EB_Msk (0x3800000UL) /*!< EB (Bitfield-Mask: 0x07) */ + #define R_GMAC_Status_GMI_Pos (27UL) /*!< GMI (Bit 27) */ + #define R_GMAC_Status_GMI_Msk (0x8000000UL) /*!< GMI (Bitfield-Mask: 0x01) */ + #define R_GMAC_Status_GPI_Pos (28UL) /*!< GPI (Bit 28) */ + #define R_GMAC_Status_GPI_Msk (0x10000000UL) /*!< GPI (Bitfield-Mask: 0x01) */ + #define R_GMAC_Status_TTI_Pos (29UL) /*!< TTI (Bit 29) */ + #define R_GMAC_Status_TTI_Msk (0x20000000UL) /*!< TTI (Bitfield-Mask: 0x01) */ + #define R_GMAC_Status_GLPII_Pos (30UL) /*!< GLPII (Bit 30) */ + #define R_GMAC_Status_GLPII_Msk (0x40000000UL) /*!< GLPII (Bitfield-Mask: 0x01) */ +/* ==================================================== Operation_Mode ===================================================== */ + #define R_GMAC_Operation_Mode_SR_Pos (1UL) /*!< SR (Bit 1) */ + #define R_GMAC_Operation_Mode_SR_Msk (0x2UL) /*!< SR (Bitfield-Mask: 0x01) */ + #define R_GMAC_Operation_Mode_OSF_Pos (2UL) /*!< OSF (Bit 2) */ + #define R_GMAC_Operation_Mode_OSF_Msk (0x4UL) /*!< OSF (Bitfield-Mask: 0x01) */ + #define R_GMAC_Operation_Mode_RTC_Pos (3UL) /*!< RTC (Bit 3) */ + #define R_GMAC_Operation_Mode_RTC_Msk (0x18UL) /*!< RTC (Bitfield-Mask: 0x03) */ + #define R_GMAC_Operation_Mode_DGF_Pos (5UL) /*!< DGF (Bit 5) */ + #define R_GMAC_Operation_Mode_DGF_Msk (0x20UL) /*!< DGF (Bitfield-Mask: 0x01) */ + #define R_GMAC_Operation_Mode_FUF_Pos (6UL) /*!< FUF (Bit 6) */ + #define R_GMAC_Operation_Mode_FUF_Msk (0x40UL) /*!< FUF (Bitfield-Mask: 0x01) */ + #define R_GMAC_Operation_Mode_FEF_Pos (7UL) /*!< FEF (Bit 7) */ + #define R_GMAC_Operation_Mode_FEF_Msk (0x80UL) /*!< FEF (Bitfield-Mask: 0x01) */ + #define R_GMAC_Operation_Mode_EFC_Pos (8UL) /*!< EFC (Bit 8) */ + #define R_GMAC_Operation_Mode_EFC_Msk (0x100UL) /*!< EFC (Bitfield-Mask: 0x01) */ + #define R_GMAC_Operation_Mode_RFA_Pos (9UL) /*!< RFA (Bit 9) */ + #define R_GMAC_Operation_Mode_RFA_Msk (0x600UL) /*!< RFA (Bitfield-Mask: 0x03) */ + #define R_GMAC_Operation_Mode_RFD_Pos (11UL) /*!< RFD (Bit 11) */ + #define R_GMAC_Operation_Mode_RFD_Msk (0x1800UL) /*!< RFD (Bitfield-Mask: 0x03) */ + #define R_GMAC_Operation_Mode_ST_Pos (13UL) /*!< ST (Bit 13) */ + #define R_GMAC_Operation_Mode_ST_Msk (0x2000UL) /*!< ST (Bitfield-Mask: 0x01) */ + #define R_GMAC_Operation_Mode_TTC_Pos (14UL) /*!< TTC (Bit 14) */ + #define R_GMAC_Operation_Mode_TTC_Msk (0x1c000UL) /*!< TTC (Bitfield-Mask: 0x07) */ + #define R_GMAC_Operation_Mode_FTF_Pos (20UL) /*!< FTF (Bit 20) */ + #define R_GMAC_Operation_Mode_FTF_Msk (0x100000UL) /*!< FTF (Bitfield-Mask: 0x01) */ + #define R_GMAC_Operation_Mode_TSF_Pos (21UL) /*!< TSF (Bit 21) */ + #define R_GMAC_Operation_Mode_TSF_Msk (0x200000UL) /*!< TSF (Bitfield-Mask: 0x01) */ + #define R_GMAC_Operation_Mode_RSF_Pos (25UL) /*!< RSF (Bit 25) */ + #define R_GMAC_Operation_Mode_RSF_Msk (0x2000000UL) /*!< RSF (Bitfield-Mask: 0x01) */ + #define R_GMAC_Operation_Mode_DT_Pos (26UL) /*!< DT (Bit 26) */ + #define R_GMAC_Operation_Mode_DT_Msk (0x4000000UL) /*!< DT (Bitfield-Mask: 0x01) */ +/* =================================================== Interrupt_Enable ==================================================== */ + #define R_GMAC_Interrupt_Enable_TIE_Pos (0UL) /*!< TIE (Bit 0) */ + #define R_GMAC_Interrupt_Enable_TIE_Msk (0x1UL) /*!< TIE (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Enable_TSE_Pos (1UL) /*!< TSE (Bit 1) */ + #define R_GMAC_Interrupt_Enable_TSE_Msk (0x2UL) /*!< TSE (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Enable_TUE_Pos (2UL) /*!< TUE (Bit 2) */ + #define R_GMAC_Interrupt_Enable_TUE_Msk (0x4UL) /*!< TUE (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Enable_TJE_Pos (3UL) /*!< TJE (Bit 3) */ + #define R_GMAC_Interrupt_Enable_TJE_Msk (0x8UL) /*!< TJE (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Enable_OVE_Pos (4UL) /*!< OVE (Bit 4) */ + #define R_GMAC_Interrupt_Enable_OVE_Msk (0x10UL) /*!< OVE (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Enable_UNE_Pos (5UL) /*!< UNE (Bit 5) */ + #define R_GMAC_Interrupt_Enable_UNE_Msk (0x20UL) /*!< UNE (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Enable_RIE_Pos (6UL) /*!< RIE (Bit 6) */ + #define R_GMAC_Interrupt_Enable_RIE_Msk (0x40UL) /*!< RIE (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Enable_RUE_Pos (7UL) /*!< RUE (Bit 7) */ + #define R_GMAC_Interrupt_Enable_RUE_Msk (0x80UL) /*!< RUE (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Enable_RSE_Pos (8UL) /*!< RSE (Bit 8) */ + #define R_GMAC_Interrupt_Enable_RSE_Msk (0x100UL) /*!< RSE (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Enable_RWE_Pos (9UL) /*!< RWE (Bit 9) */ + #define R_GMAC_Interrupt_Enable_RWE_Msk (0x200UL) /*!< RWE (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Enable_ETE_Pos (10UL) /*!< ETE (Bit 10) */ + #define R_GMAC_Interrupt_Enable_ETE_Msk (0x400UL) /*!< ETE (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Enable_FBE_Pos (13UL) /*!< FBE (Bit 13) */ + #define R_GMAC_Interrupt_Enable_FBE_Msk (0x2000UL) /*!< FBE (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Enable_ERE_Pos (14UL) /*!< ERE (Bit 14) */ + #define R_GMAC_Interrupt_Enable_ERE_Msk (0x4000UL) /*!< ERE (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Enable_AIE_Pos (15UL) /*!< AIE (Bit 15) */ + #define R_GMAC_Interrupt_Enable_AIE_Msk (0x8000UL) /*!< AIE (Bitfield-Mask: 0x01) */ + #define R_GMAC_Interrupt_Enable_NIE_Pos (16UL) /*!< NIE (Bit 16) */ + #define R_GMAC_Interrupt_Enable_NIE_Msk (0x10000UL) /*!< NIE (Bitfield-Mask: 0x01) */ +/* ======================================= Missed_Frame_And_Buffer_Overflow_Counter ======================================== */ + #define R_GMAC_Missed_Frame_And_Buffer_Overflow_Counter_MISFRMCNT_Pos (0UL) /*!< MISFRMCNT (Bit 0) */ + #define R_GMAC_Missed_Frame_And_Buffer_Overflow_Counter_MISFRMCNT_Msk (0xffffUL) /*!< MISFRMCNT (Bitfield-Mask: 0xffff) */ + #define R_GMAC_Missed_Frame_And_Buffer_Overflow_Counter_MISCNTOVF_Pos (16UL) /*!< MISCNTOVF (Bit 16) */ + #define R_GMAC_Missed_Frame_And_Buffer_Overflow_Counter_MISCNTOVF_Msk (0x10000UL) /*!< MISCNTOVF (Bitfield-Mask: 0x01) */ + #define R_GMAC_Missed_Frame_And_Buffer_Overflow_Counter_OVFFRMCNT_Pos (17UL) /*!< OVFFRMCNT (Bit 17) */ + #define R_GMAC_Missed_Frame_And_Buffer_Overflow_Counter_OVFFRMCNT_Msk (0xffe0000UL) /*!< OVFFRMCNT (Bitfield-Mask: 0x7ff) */ + #define R_GMAC_Missed_Frame_And_Buffer_Overflow_Counter_OVFCNTOVF_Pos (28UL) /*!< OVFCNTOVF (Bit 28) */ + #define R_GMAC_Missed_Frame_And_Buffer_Overflow_Counter_OVFCNTOVF_Msk (0x10000000UL) /*!< OVFCNTOVF (Bitfield-Mask: 0x01) */ +/* =========================================== Receive_Interrupt_Watchdog_Timer ============================================ */ + #define R_GMAC_Receive_Interrupt_Watchdog_Timer_RIWT_Pos (0UL) /*!< RIWT (Bit 0) */ + #define R_GMAC_Receive_Interrupt_Watchdog_Timer_RIWT_Msk (0xffUL) /*!< RIWT (Bitfield-Mask: 0xff) */ +/* ===================================================== AXI_Bus_Mode ====================================================== */ + #define R_GMAC_AXI_Bus_Mode_UNDEF_Pos (0UL) /*!< UNDEF (Bit 0) */ + #define R_GMAC_AXI_Bus_Mode_UNDEF_Msk (0x1UL) /*!< UNDEF (Bitfield-Mask: 0x01) */ + #define R_GMAC_AXI_Bus_Mode_BLEN4_Pos (1UL) /*!< BLEN4 (Bit 1) */ + #define R_GMAC_AXI_Bus_Mode_BLEN4_Msk (0x2UL) /*!< BLEN4 (Bitfield-Mask: 0x01) */ + #define R_GMAC_AXI_Bus_Mode_BLEN8_Pos (2UL) /*!< BLEN8 (Bit 2) */ + #define R_GMAC_AXI_Bus_Mode_BLEN8_Msk (0x4UL) /*!< BLEN8 (Bitfield-Mask: 0x01) */ + #define R_GMAC_AXI_Bus_Mode_BLEN16_Pos (3UL) /*!< BLEN16 (Bit 3) */ + #define R_GMAC_AXI_Bus_Mode_BLEN16_Msk (0x8UL) /*!< BLEN16 (Bitfield-Mask: 0x01) */ + #define R_GMAC_AXI_Bus_Mode_AXI_AAL_Pos (12UL) /*!< AXI_AAL (Bit 12) */ + #define R_GMAC_AXI_Bus_Mode_AXI_AAL_Msk (0x1000UL) /*!< AXI_AAL (Bitfield-Mask: 0x01) */ + #define R_GMAC_AXI_Bus_Mode_ONEKBBE_Pos (13UL) /*!< ONEKBBE (Bit 13) */ + #define R_GMAC_AXI_Bus_Mode_ONEKBBE_Msk (0x2000UL) /*!< ONEKBBE (Bitfield-Mask: 0x01) */ + #define R_GMAC_AXI_Bus_Mode_RD_OSR_LMT_Pos (16UL) /*!< RD_OSR_LMT (Bit 16) */ + #define R_GMAC_AXI_Bus_Mode_RD_OSR_LMT_Msk (0x30000UL) /*!< RD_OSR_LMT (Bitfield-Mask: 0x03) */ + #define R_GMAC_AXI_Bus_Mode_WR_OSR_LMT_Pos (20UL) /*!< WR_OSR_LMT (Bit 20) */ + #define R_GMAC_AXI_Bus_Mode_WR_OSR_LMT_Msk (0x300000UL) /*!< WR_OSR_LMT (Bitfield-Mask: 0x03) */ + #define R_GMAC_AXI_Bus_Mode_LPI_XIT_FRM_Pos (30UL) /*!< LPI_XIT_FRM (Bit 30) */ + #define R_GMAC_AXI_Bus_Mode_LPI_XIT_FRM_Msk (0x40000000UL) /*!< LPI_XIT_FRM (Bitfield-Mask: 0x01) */ + #define R_GMAC_AXI_Bus_Mode_EN_LPI_Pos (31UL) /*!< EN_LPI (Bit 31) */ + #define R_GMAC_AXI_Bus_Mode_EN_LPI_Msk (0x80000000UL) /*!< EN_LPI (Bitfield-Mask: 0x01) */ +/* ====================================================== AXI_Status ======================================================= */ + #define R_GMAC_AXI_Status_AXWHSTS_Pos (0UL) /*!< AXWHSTS (Bit 0) */ + #define R_GMAC_AXI_Status_AXWHSTS_Msk (0x1UL) /*!< AXWHSTS (Bitfield-Mask: 0x01) */ + #define R_GMAC_AXI_Status_AXIRDSTS_Pos (1UL) /*!< AXIRDSTS (Bit 1) */ + #define R_GMAC_AXI_Status_AXIRDSTS_Msk (0x2UL) /*!< AXIRDSTS (Bitfield-Mask: 0x01) */ +/* =========================================== Current_Host_Transmit_Descriptor ============================================ */ + #define R_GMAC_Current_Host_Transmit_Descriptor_CURTDESAPTR_Pos (0UL) /*!< CURTDESAPTR (Bit 0) */ + #define R_GMAC_Current_Host_Transmit_Descriptor_CURTDESAPTR_Msk (0xffffffffUL) /*!< CURTDESAPTR (Bitfield-Mask: 0xffffffff) */ +/* ============================================ Current_Host_Receive_Descriptor ============================================ */ + #define R_GMAC_Current_Host_Receive_Descriptor_CURRDESAPTR_Pos (0UL) /*!< CURRDESAPTR (Bit 0) */ + #define R_GMAC_Current_Host_Receive_Descriptor_CURRDESAPTR_Msk (0xffffffffUL) /*!< CURRDESAPTR (Bitfield-Mask: 0xffffffff) */ +/* ========================================= Current_Host_Transmit_Buffer_Address ========================================== */ + #define R_GMAC_Current_Host_Transmit_Buffer_Address_CURTBUFAPTR_Pos (0UL) /*!< CURTBUFAPTR (Bit 0) */ + #define R_GMAC_Current_Host_Transmit_Buffer_Address_CURTBUFAPTR_Msk (0xffffffffUL) /*!< CURTBUFAPTR (Bitfield-Mask: 0xffffffff) */ +/* ========================================== Current_Host_Receive_Buffer_Address ========================================== */ + #define R_GMAC_Current_Host_Receive_Buffer_Address_CURRBUFAPTR_Pos (0UL) /*!< CURRBUFAPTR (Bit 0) */ + #define R_GMAC_Current_Host_Receive_Buffer_Address_CURRBUFAPTR_Msk (0xffffffffUL) /*!< CURRBUFAPTR (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== HW_Feature ======================================================= */ + #define R_GMAC_HW_Feature_MIISEL_Pos (0UL) /*!< MIISEL (Bit 0) */ + #define R_GMAC_HW_Feature_MIISEL_Msk (0x1UL) /*!< MIISEL (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_GMIISEL_Pos (1UL) /*!< GMIISEL (Bit 1) */ + #define R_GMAC_HW_Feature_GMIISEL_Msk (0x2UL) /*!< GMIISEL (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_HDSEL_Pos (2UL) /*!< HDSEL (Bit 2) */ + #define R_GMAC_HW_Feature_HDSEL_Msk (0x4UL) /*!< HDSEL (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_EXTHASHEN_Pos (3UL) /*!< EXTHASHEN (Bit 3) */ + #define R_GMAC_HW_Feature_EXTHASHEN_Msk (0x8UL) /*!< EXTHASHEN (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_HASHSEL_Pos (4UL) /*!< HASHSEL (Bit 4) */ + #define R_GMAC_HW_Feature_HASHSEL_Msk (0x10UL) /*!< HASHSEL (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_ADDMACADRSEL_Pos (5UL) /*!< ADDMACADRSEL (Bit 5) */ + #define R_GMAC_HW_Feature_ADDMACADRSEL_Msk (0x20UL) /*!< ADDMACADRSEL (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_L3L4FLTREN_Pos (7UL) /*!< L3L4FLTREN (Bit 7) */ + #define R_GMAC_HW_Feature_L3L4FLTREN_Msk (0x80UL) /*!< L3L4FLTREN (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_SMASEL_Pos (8UL) /*!< SMASEL (Bit 8) */ + #define R_GMAC_HW_Feature_SMASEL_Msk (0x100UL) /*!< SMASEL (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_RWKSEL_Pos (9UL) /*!< RWKSEL (Bit 9) */ + #define R_GMAC_HW_Feature_RWKSEL_Msk (0x200UL) /*!< RWKSEL (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_MGKSEL_Pos (10UL) /*!< MGKSEL (Bit 10) */ + #define R_GMAC_HW_Feature_MGKSEL_Msk (0x400UL) /*!< MGKSEL (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_MMCSEL_Pos (11UL) /*!< MMCSEL (Bit 11) */ + #define R_GMAC_HW_Feature_MMCSEL_Msk (0x800UL) /*!< MMCSEL (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_TSVER1SEL_Pos (12UL) /*!< TSVER1SEL (Bit 12) */ + #define R_GMAC_HW_Feature_TSVER1SEL_Msk (0x1000UL) /*!< TSVER1SEL (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_TSVER2SEL_Pos (13UL) /*!< TSVER2SEL (Bit 13) */ + #define R_GMAC_HW_Feature_TSVER2SEL_Msk (0x2000UL) /*!< TSVER2SEL (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_EEESEL_Pos (14UL) /*!< EEESEL (Bit 14) */ + #define R_GMAC_HW_Feature_EEESEL_Msk (0x4000UL) /*!< EEESEL (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_AVSEL_Pos (15UL) /*!< AVSEL (Bit 15) */ + #define R_GMAC_HW_Feature_AVSEL_Msk (0x8000UL) /*!< AVSEL (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_TXCOESEL_Pos (16UL) /*!< TXCOESEL (Bit 16) */ + #define R_GMAC_HW_Feature_TXCOESEL_Msk (0x10000UL) /*!< TXCOESEL (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_RXTYP1COE_Pos (17UL) /*!< RXTYP1COE (Bit 17) */ + #define R_GMAC_HW_Feature_RXTYP1COE_Msk (0x20000UL) /*!< RXTYP1COE (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_RXTYP2COE_Pos (18UL) /*!< RXTYP2COE (Bit 18) */ + #define R_GMAC_HW_Feature_RXTYP2COE_Msk (0x40000UL) /*!< RXTYP2COE (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_RXFIFOSIZE_Pos (19UL) /*!< RXFIFOSIZE (Bit 19) */ + #define R_GMAC_HW_Feature_RXFIFOSIZE_Msk (0x80000UL) /*!< RXFIFOSIZE (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_RXCHCNT_Pos (20UL) /*!< RXCHCNT (Bit 20) */ + #define R_GMAC_HW_Feature_RXCHCNT_Msk (0x300000UL) /*!< RXCHCNT (Bitfield-Mask: 0x03) */ + #define R_GMAC_HW_Feature_TXCHCNT_Pos (22UL) /*!< TXCHCNT (Bit 22) */ + #define R_GMAC_HW_Feature_TXCHCNT_Msk (0xc00000UL) /*!< TXCHCNT (Bitfield-Mask: 0x03) */ + #define R_GMAC_HW_Feature_ENHDESSEL_Pos (24UL) /*!< ENHDESSEL (Bit 24) */ + #define R_GMAC_HW_Feature_ENHDESSEL_Msk (0x1000000UL) /*!< ENHDESSEL (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_INTTSEN_Pos (25UL) /*!< INTTSEN (Bit 25) */ + #define R_GMAC_HW_Feature_INTTSEN_Msk (0x2000000UL) /*!< INTTSEN (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_FLEXIPPSEN_Pos (26UL) /*!< FLEXIPPSEN (Bit 26) */ + #define R_GMAC_HW_Feature_FLEXIPPSEN_Msk (0x4000000UL) /*!< FLEXIPPSEN (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_SAVLANINS_Pos (27UL) /*!< SAVLANINS (Bit 27) */ + #define R_GMAC_HW_Feature_SAVLANINS_Msk (0x8000000UL) /*!< SAVLANINS (Bitfield-Mask: 0x01) */ + #define R_GMAC_HW_Feature_ACTPHYIF_Pos (28UL) /*!< ACTPHYIF (Bit 28) */ + #define R_GMAC_HW_Feature_ACTPHYIF_Msk (0x70000000UL) /*!< ACTPHYIF (Bitfield-Mask: 0x07) */ + +/* =========================================================================================================================== */ +/* ================ R_ETHSS ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= PRCMD ========================================================= */ +/* ======================================================== MODCTRL ======================================================== */ + #define R_ETHSS_MODCTRL_SW_MODE_Pos (0UL) /*!< SW_MODE (Bit 0) */ + #define R_ETHSS_MODCTRL_SW_MODE_Msk (0x7UL) /*!< SW_MODE (Bitfield-Mask: 0x07) */ +/* ======================================================= PTPMCTRL ======================================================== */ + #define R_ETHSS_PTPMCTRL_PTP_MODE_Pos (0UL) /*!< PTP_MODE (Bit 0) */ + #define R_ETHSS_PTPMCTRL_PTP_MODE_Msk (0x1UL) /*!< PTP_MODE (Bitfield-Mask: 0x01) */ + #define R_ETHSS_PTPMCTRL_PTP_PLS_RSTn_Pos (16UL) /*!< PTP_PLS_RSTn (Bit 16) */ + #define R_ETHSS_PTPMCTRL_PTP_PLS_RSTn_Msk (0x10000UL) /*!< PTP_PLS_RSTn (Bitfield-Mask: 0x01) */ +/* ======================================================== PHYLNK ========================================================= */ + #define R_ETHSS_PHYLNK_SWLINK_Pos (0UL) /*!< SWLINK (Bit 0) */ + #define R_ETHSS_PHYLNK_SWLINK_Msk (0x7UL) /*!< SWLINK (Bitfield-Mask: 0x07) */ + #define R_ETHSS_PHYLNK_CATLNK_Pos (4UL) /*!< CATLNK (Bit 4) */ + #define R_ETHSS_PHYLNK_CATLNK_Msk (0x70UL) /*!< CATLNK (Bitfield-Mask: 0x07) */ +/* ======================================================= CONVCTRL ======================================================== */ + #define R_ETHSS_CONVCTRL_CONV_MODE_Pos (0UL) /*!< CONV_MODE (Bit 0) */ + #define R_ETHSS_CONVCTRL_CONV_MODE_Msk (0x1fUL) /*!< CONV_MODE (Bitfield-Mask: 0x1f) */ + #define R_ETHSS_CONVCTRL_FULLD_Pos (8UL) /*!< FULLD (Bit 8) */ + #define R_ETHSS_CONVCTRL_FULLD_Msk (0x100UL) /*!< FULLD (Bitfield-Mask: 0x01) */ + #define R_ETHSS_CONVCTRL_RMII_RX_ER_EN_Pos (9UL) /*!< RMII_RX_ER_EN (Bit 9) */ + #define R_ETHSS_CONVCTRL_RMII_RX_ER_EN_Msk (0x200UL) /*!< RMII_RX_ER_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSS_CONVCTRL_RMII_CRS_MODE_Pos (10UL) /*!< RMII_CRS_MODE (Bit 10) */ + #define R_ETHSS_CONVCTRL_RMII_CRS_MODE_Msk (0x400UL) /*!< RMII_CRS_MODE (Bitfield-Mask: 0x01) */ + #define R_ETHSS_CONVCTRL_RGMII_LINK_Pos (12UL) /*!< RGMII_LINK (Bit 12) */ + #define R_ETHSS_CONVCTRL_RGMII_LINK_Msk (0x1000UL) /*!< RGMII_LINK (Bitfield-Mask: 0x01) */ + #define R_ETHSS_CONVCTRL_RGMII_DUPLEX_Pos (13UL) /*!< RGMII_DUPLEX (Bit 13) */ + #define R_ETHSS_CONVCTRL_RGMII_DUPLEX_Msk (0x2000UL) /*!< RGMII_DUPLEX (Bitfield-Mask: 0x01) */ + #define R_ETHSS_CONVCTRL_RGMII_SPEED_Pos (14UL) /*!< RGMII_SPEED (Bit 14) */ + #define R_ETHSS_CONVCTRL_RGMII_SPEED_Msk (0xc000UL) /*!< RGMII_SPEED (Bitfield-Mask: 0x03) */ +/* ======================================================== CONVRST ======================================================== */ + #define R_ETHSS_CONVRST_PHYIR_Pos (0UL) /*!< PHYIR (Bit 0) */ + #define R_ETHSS_CONVRST_PHYIR_Msk (0x7UL) /*!< PHYIR (Bitfield-Mask: 0x07) */ +/* ======================================================== SWCTRL ========================================================= */ + #define R_ETHSS_SWCTRL_SET10_Pos (0UL) /*!< SET10 (Bit 0) */ + #define R_ETHSS_SWCTRL_SET10_Msk (0x7UL) /*!< SET10 (Bitfield-Mask: 0x07) */ + #define R_ETHSS_SWCTRL_SET1000_Pos (4UL) /*!< SET1000 (Bit 4) */ + #define R_ETHSS_SWCTRL_SET1000_Msk (0x70UL) /*!< SET1000 (Bitfield-Mask: 0x07) */ + #define R_ETHSS_SWCTRL_STRAP_SX_ENB_Pos (16UL) /*!< STRAP_SX_ENB (Bit 16) */ + #define R_ETHSS_SWCTRL_STRAP_SX_ENB_Msk (0x10000UL) /*!< STRAP_SX_ENB (Bitfield-Mask: 0x01) */ + #define R_ETHSS_SWCTRL_STRAP_HUB_ENB_Pos (17UL) /*!< STRAP_HUB_ENB (Bit 17) */ + #define R_ETHSS_SWCTRL_STRAP_HUB_ENB_Msk (0x20000UL) /*!< STRAP_HUB_ENB (Bitfield-Mask: 0x01) */ +/* ======================================================== SWDUPC ========================================================= */ + #define R_ETHSS_SWDUPC_PHY_DUPLEX_Pos (0UL) /*!< PHY_DUPLEX (Bit 0) */ + #define R_ETHSS_SWDUPC_PHY_DUPLEX_Msk (0x7UL) /*!< PHY_DUPLEX (Bitfield-Mask: 0x07) */ +/* ========================================================= CDCR ========================================================== */ + #define R_ETHSS_CDCR_RXDLYEN_Pos (0UL) /*!< RXDLYEN (Bit 0) */ + #define R_ETHSS_CDCR_RXDLYEN_Msk (0x1UL) /*!< RXDLYEN (Bitfield-Mask: 0x01) */ + #define R_ETHSS_CDCR_TXDLYEN_Pos (1UL) /*!< TXDLYEN (Bit 1) */ + #define R_ETHSS_CDCR_TXDLYEN_Msk (0x2UL) /*!< TXDLYEN (Bitfield-Mask: 0x01) */ + #define R_ETHSS_CDCR_OSCCLKEN_Pos (2UL) /*!< OSCCLKEN (Bit 2) */ + #define R_ETHSS_CDCR_OSCCLKEN_Msk (0x4UL) /*!< OSCCLKEN (Bitfield-Mask: 0x01) */ + #define R_ETHSS_CDCR_CLKINEN_Pos (3UL) /*!< CLKINEN (Bit 3) */ + #define R_ETHSS_CDCR_CLKINEN_Msk (0x8UL) /*!< CLKINEN (Bitfield-Mask: 0x01) */ +/* ======================================================== RXFCNT ========================================================= */ + #define R_ETHSS_RXFCNT_RXFCNT_Pos (0UL) /*!< RXFCNT (Bit 0) */ + #define R_ETHSS_RXFCNT_RXFCNT_Msk (0xffffUL) /*!< RXFCNT (Bitfield-Mask: 0xffff) */ +/* ======================================================== TXFCNT ========================================================= */ + #define R_ETHSS_TXFCNT_TXFCNT_Pos (0UL) /*!< TXFCNT (Bit 0) */ + #define R_ETHSS_TXFCNT_TXFCNT_Msk (0xffffUL) /*!< TXFCNT (Bitfield-Mask: 0xffff) */ +/* ======================================================= RXTAPSEL ======================================================== */ + #define R_ETHSS_RXTAPSEL_RXTAPSEL_Pos (0UL) /*!< RXTAPSEL (Bit 0) */ + #define R_ETHSS_RXTAPSEL_RXTAPSEL_Msk (0x7fUL) /*!< RXTAPSEL (Bitfield-Mask: 0x7f) */ +/* ======================================================= TXTAPSEL ======================================================== */ + #define R_ETHSS_TXTAPSEL_TXTAPSEL_Pos (0UL) /*!< TXTAPSEL (Bit 0) */ + #define R_ETHSS_TXTAPSEL_TXTAPSEL_Msk (0x7fUL) /*!< TXTAPSEL (Bitfield-Mask: 0x7f) */ +/* ======================================================== MIIMCR ========================================================= */ + #define R_ETHSS_MIIMCR_MIIM2MEN_Pos (0UL) /*!< MIIM2MEN (Bit 0) */ + #define R_ETHSS_MIIMCR_MIIM2MEN_Msk (0x1UL) /*!< MIIM2MEN (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_ESC_INI ================ */ +/* =========================================================================================================================== */ + +/* ====================================================== ECATOFFADR ======================================================= */ + #define R_ESC_INI_ECATOFFADR_OADD_Pos (0UL) /*!< OADD (Bit 0) */ + #define R_ESC_INI_ECATOFFADR_OADD_Msk (0x1fUL) /*!< OADD (Bitfield-Mask: 0x1f) */ +/* ======================================================= ECATOPMOD ======================================================= */ + #define R_ESC_INI_ECATOPMOD_EEPROMSIZE_Pos (0UL) /*!< EEPROMSIZE (Bit 0) */ + #define R_ESC_INI_ECATOPMOD_EEPROMSIZE_Msk (0x1UL) /*!< EEPROMSIZE (Bitfield-Mask: 0x01) */ +/* ======================================================= ECATDBGC ======================================================== */ + #define R_ESC_INI_ECATDBGC_TXSFT0_Pos (0UL) /*!< TXSFT0 (Bit 0) */ + #define R_ESC_INI_ECATDBGC_TXSFT0_Msk (0x3UL) /*!< TXSFT0 (Bitfield-Mask: 0x03) */ + #define R_ESC_INI_ECATDBGC_TXSFT1_Pos (2UL) /*!< TXSFT1 (Bit 2) */ + #define R_ESC_INI_ECATDBGC_TXSFT1_Msk (0xcUL) /*!< TXSFT1 (Bitfield-Mask: 0x03) */ + #define R_ESC_INI_ECATDBGC_TXSFT2_Pos (4UL) /*!< TXSFT2 (Bit 4) */ + #define R_ESC_INI_ECATDBGC_TXSFT2_Msk (0x30UL) /*!< TXSFT2 (Bitfield-Mask: 0x03) */ +/* ====================================================== ECATTRGSEL ======================================================= */ + #define R_ESC_INI_ECATTRGSEL_TRGSEL0_Pos (0UL) /*!< TRGSEL0 (Bit 0) */ + #define R_ESC_INI_ECATTRGSEL_TRGSEL0_Msk (0x1UL) /*!< TRGSEL0 (Bitfield-Mask: 0x01) */ + #define R_ESC_INI_ECATTRGSEL_TRGSEL1_Pos (1UL) /*!< TRGSEL1 (Bit 1) */ + #define R_ESC_INI_ECATTRGSEL_TRGSEL1_Msk (0x2UL) /*!< TRGSEL1 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_ETHSW_PTP ================ */ +/* =========================================================================================================================== */ + +/* ====================================================== SWPTPOUTSEL ====================================================== */ + #define R_ETHSW_PTP_SWPTPOUTSEL_IOSEL0_Pos (0UL) /*!< IOSEL0 (Bit 0) */ + #define R_ETHSW_PTP_SWPTPOUTSEL_IOSEL0_Msk (0x1UL) /*!< IOSEL0 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PTP_SWPTPOUTSEL_IOSEL1_Pos (1UL) /*!< IOSEL1 (Bit 1) */ + #define R_ETHSW_PTP_SWPTPOUTSEL_IOSEL1_Msk (0x2UL) /*!< IOSEL1 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PTP_SWPTPOUTSEL_IOSEL2_Pos (2UL) /*!< IOSEL2 (Bit 2) */ + #define R_ETHSW_PTP_SWPTPOUTSEL_IOSEL2_Msk (0x4UL) /*!< IOSEL2 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PTP_SWPTPOUTSEL_IOSEL3_Pos (3UL) /*!< IOSEL3 (Bit 3) */ + #define R_ETHSW_PTP_SWPTPOUTSEL_IOSEL3_Msk (0x8UL) /*!< IOSEL3 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PTP_SWPTPOUTSEL_EVTSEL0_Pos (4UL) /*!< EVTSEL0 (Bit 4) */ + #define R_ETHSW_PTP_SWPTPOUTSEL_EVTSEL0_Msk (0x10UL) /*!< EVTSEL0 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PTP_SWPTPOUTSEL_EVTSEL1_Pos (5UL) /*!< EVTSEL1 (Bit 5) */ + #define R_ETHSW_PTP_SWPTPOUTSEL_EVTSEL1_Msk (0x20UL) /*!< EVTSEL1 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PTP_SWPTPOUTSEL_EVTSEL2_Pos (6UL) /*!< EVTSEL2 (Bit 6) */ + #define R_ETHSW_PTP_SWPTPOUTSEL_EVTSEL2_Msk (0x40UL) /*!< EVTSEL2 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PTP_SWPTPOUTSEL_EVTSEL3_Pos (7UL) /*!< EVTSEL3 (Bit 7) */ + #define R_ETHSW_PTP_SWPTPOUTSEL_EVTSEL3_Msk (0x80UL) /*!< EVTSEL3 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_ETHSW ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= REVISION ======================================================== */ + #define R_ETHSW_REVISION_REV_Pos (0UL) /*!< REV (Bit 0) */ + #define R_ETHSW_REVISION_REV_Msk (0xffffffffUL) /*!< REV (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== SCRATCH ======================================================== */ + #define R_ETHSW_SCRATCH_SCRATCH_Pos (0UL) /*!< SCRATCH (Bit 0) */ + #define R_ETHSW_SCRATCH_SCRATCH_Msk (0xffffffffUL) /*!< SCRATCH (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= PORT_ENA ======================================================== */ + #define R_ETHSW_PORT_ENA_TXENA_Pos (0UL) /*!< TXENA (Bit 0) */ + #define R_ETHSW_PORT_ENA_TXENA_Msk (0xfUL) /*!< TXENA (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_PORT_ENA_RXENA_Pos (16UL) /*!< RXENA (Bit 16) */ + #define R_ETHSW_PORT_ENA_RXENA_Msk (0xf0000UL) /*!< RXENA (Bitfield-Mask: 0x0f) */ +/* ================================================== UCAST_DEFAULT_MASK0 ================================================== */ + #define R_ETHSW_UCAST_DEFAULT_MASK0_UCASTDM_Pos (0UL) /*!< UCASTDM (Bit 0) */ + #define R_ETHSW_UCAST_DEFAULT_MASK0_UCASTDM_Msk (0xfUL) /*!< UCASTDM (Bitfield-Mask: 0x0f) */ +/* ====================================================== VLAN_VERIFY ====================================================== */ + #define R_ETHSW_VLAN_VERIFY_VLANVERI_Pos (0UL) /*!< VLANVERI (Bit 0) */ + #define R_ETHSW_VLAN_VERIFY_VLANVERI_Msk (0xfUL) /*!< VLANVERI (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_VLAN_VERIFY_VLANDISC_Pos (16UL) /*!< VLANDISC (Bit 16) */ + #define R_ETHSW_VLAN_VERIFY_VLANDISC_Msk (0xf0000UL) /*!< VLANDISC (Bitfield-Mask: 0x0f) */ +/* ================================================== BCAST_DEFAULT_MASK0 ================================================== */ + #define R_ETHSW_BCAST_DEFAULT_MASK0_BCASTDM_Pos (0UL) /*!< BCASTDM (Bit 0) */ + #define R_ETHSW_BCAST_DEFAULT_MASK0_BCASTDM_Msk (0xfUL) /*!< BCASTDM (Bitfield-Mask: 0x0f) */ +/* ================================================== MCAST_DEFAULT_MASK0 ================================================== */ + #define R_ETHSW_MCAST_DEFAULT_MASK0_MCASTDM_Pos (0UL) /*!< MCASTDM (Bit 0) */ + #define R_ETHSW_MCAST_DEFAULT_MASK0_MCASTDM_Msk (0xfUL) /*!< MCASTDM (Bitfield-Mask: 0x0f) */ +/* =================================================== INPUT_LEARN_BLOCK =================================================== */ + #define R_ETHSW_INPUT_LEARN_BLOCK_BLOCKEN_Pos (0UL) /*!< BLOCKEN (Bit 0) */ + #define R_ETHSW_INPUT_LEARN_BLOCK_BLOCKEN_Msk (0xfUL) /*!< BLOCKEN (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_INPUT_LEARN_BLOCK_LEARNDIS_Pos (16UL) /*!< LEARNDIS (Bit 16) */ + #define R_ETHSW_INPUT_LEARN_BLOCK_LEARNDIS_Msk (0xf0000UL) /*!< LEARNDIS (Bitfield-Mask: 0x0f) */ +/* ====================================================== MGMT_CONFIG ====================================================== */ + #define R_ETHSW_MGMT_CONFIG_PORT_Pos (0UL) /*!< PORT (Bit 0) */ + #define R_ETHSW_MGMT_CONFIG_PORT_Msk (0xfUL) /*!< PORT (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_MGMT_CONFIG_MSG_TRANS_Pos (5UL) /*!< MSG_TRANS (Bit 5) */ + #define R_ETHSW_MGMT_CONFIG_MSG_TRANS_Msk (0x20UL) /*!< MSG_TRANS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MGMT_CONFIG_ENABLE_Pos (6UL) /*!< ENABLE (Bit 6) */ + #define R_ETHSW_MGMT_CONFIG_ENABLE_Msk (0x40UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MGMT_CONFIG_DISCARD_Pos (7UL) /*!< DISCARD (Bit 7) */ + #define R_ETHSW_MGMT_CONFIG_DISCARD_Msk (0x80UL) /*!< DISCARD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MGMT_CONFIG_MGMT_EN_Pos (8UL) /*!< MGMT_EN (Bit 8) */ + #define R_ETHSW_MGMT_CONFIG_MGMT_EN_Msk (0x100UL) /*!< MGMT_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MGMT_CONFIG_MGMT_DISC_Pos (9UL) /*!< MGMT_DISC (Bit 9) */ + #define R_ETHSW_MGMT_CONFIG_MGMT_DISC_Msk (0x200UL) /*!< MGMT_DISC (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MGMT_CONFIG_PRIORITY_Pos (13UL) /*!< PRIORITY (Bit 13) */ + #define R_ETHSW_MGMT_CONFIG_PRIORITY_Msk (0xe000UL) /*!< PRIORITY (Bitfield-Mask: 0x07) */ + #define R_ETHSW_MGMT_CONFIG_PORTMASK_Pos (16UL) /*!< PORTMASK (Bit 16) */ + #define R_ETHSW_MGMT_CONFIG_PORTMASK_Msk (0xf0000UL) /*!< PORTMASK (Bitfield-Mask: 0x0f) */ +/* ====================================================== MODE_CONFIG ====================================================== */ + #define R_ETHSW_MODE_CONFIG_CUT_THRU_EN_Pos (8UL) /*!< CUT_THRU_EN (Bit 8) */ + #define R_ETHSW_MODE_CONFIG_CUT_THRU_EN_Msk (0xf00UL) /*!< CUT_THRU_EN (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_MODE_CONFIG_STATSRESET_Pos (31UL) /*!< STATSRESET (Bit 31) */ + #define R_ETHSW_MODE_CONFIG_STATSRESET_Msk (0x80000000UL) /*!< STATSRESET (Bitfield-Mask: 0x01) */ +/* ===================================================== VLAN_IN_MODE ====================================================== */ + #define R_ETHSW_VLAN_IN_MODE_P0VLANINMD_Pos (0UL) /*!< P0VLANINMD (Bit 0) */ + #define R_ETHSW_VLAN_IN_MODE_P0VLANINMD_Msk (0x3UL) /*!< P0VLANINMD (Bitfield-Mask: 0x03) */ + #define R_ETHSW_VLAN_IN_MODE_P1VLANINMD_Pos (2UL) /*!< P1VLANINMD (Bit 2) */ + #define R_ETHSW_VLAN_IN_MODE_P1VLANINMD_Msk (0xcUL) /*!< P1VLANINMD (Bitfield-Mask: 0x03) */ + #define R_ETHSW_VLAN_IN_MODE_P2VLANINMD_Pos (4UL) /*!< P2VLANINMD (Bit 4) */ + #define R_ETHSW_VLAN_IN_MODE_P2VLANINMD_Msk (0x30UL) /*!< P2VLANINMD (Bitfield-Mask: 0x03) */ + #define R_ETHSW_VLAN_IN_MODE_P3VLANINMD_Pos (6UL) /*!< P3VLANINMD (Bit 6) */ + #define R_ETHSW_VLAN_IN_MODE_P3VLANINMD_Msk (0xc0UL) /*!< P3VLANINMD (Bitfield-Mask: 0x03) */ +/* ===================================================== VLAN_OUT_MODE ===================================================== */ + #define R_ETHSW_VLAN_OUT_MODE_P0VLANOUTMD_Pos (0UL) /*!< P0VLANOUTMD (Bit 0) */ + #define R_ETHSW_VLAN_OUT_MODE_P0VLANOUTMD_Msk (0x3UL) /*!< P0VLANOUTMD (Bitfield-Mask: 0x03) */ + #define R_ETHSW_VLAN_OUT_MODE_P1VLANOUTMD_Pos (2UL) /*!< P1VLANOUTMD (Bit 2) */ + #define R_ETHSW_VLAN_OUT_MODE_P1VLANOUTMD_Msk (0xcUL) /*!< P1VLANOUTMD (Bitfield-Mask: 0x03) */ + #define R_ETHSW_VLAN_OUT_MODE_P2VLANOUTMD_Pos (4UL) /*!< P2VLANOUTMD (Bit 4) */ + #define R_ETHSW_VLAN_OUT_MODE_P2VLANOUTMD_Msk (0x30UL) /*!< P2VLANOUTMD (Bitfield-Mask: 0x03) */ + #define R_ETHSW_VLAN_OUT_MODE_P3VLANOUTMD_Pos (6UL) /*!< P3VLANOUTMD (Bit 6) */ + #define R_ETHSW_VLAN_OUT_MODE_P3VLANOUTMD_Msk (0xc0UL) /*!< P3VLANOUTMD (Bitfield-Mask: 0x03) */ +/* =================================================== VLAN_IN_MODE_ENA ==================================================== */ + #define R_ETHSW_VLAN_IN_MODE_ENA_VLANINMDEN_Pos (0UL) /*!< VLANINMDEN (Bit 0) */ + #define R_ETHSW_VLAN_IN_MODE_ENA_VLANINMDEN_Msk (0xfUL) /*!< VLANINMDEN (Bitfield-Mask: 0x0f) */ +/* ====================================================== VLAN_TAG_ID ====================================================== */ + #define R_ETHSW_VLAN_TAG_ID_VLANTAGID_Pos (0UL) /*!< VLANTAGID (Bit 0) */ + #define R_ETHSW_VLAN_TAG_ID_VLANTAGID_Msk (0xffffUL) /*!< VLANTAGID (Bitfield-Mask: 0xffff) */ +/* =================================================== BCAST_STORM_LIMIT =================================================== */ + #define R_ETHSW_BCAST_STORM_LIMIT_TMOUT_Pos (0UL) /*!< TMOUT (Bit 0) */ + #define R_ETHSW_BCAST_STORM_LIMIT_TMOUT_Msk (0xffffUL) /*!< TMOUT (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_BCAST_STORM_LIMIT_BCASTLIMIT_Pos (16UL) /*!< BCASTLIMIT (Bit 16) */ + #define R_ETHSW_BCAST_STORM_LIMIT_BCASTLIMIT_Msk (0xffff0000UL) /*!< BCASTLIMIT (Bitfield-Mask: 0xffff) */ +/* =================================================== MCAST_STORM_LIMIT =================================================== */ + #define R_ETHSW_MCAST_STORM_LIMIT_MCASTLIMIT_Pos (16UL) /*!< MCASTLIMIT (Bit 16) */ + #define R_ETHSW_MCAST_STORM_LIMIT_MCASTLIMIT_Msk (0xffff0000UL) /*!< MCASTLIMIT (Bitfield-Mask: 0xffff) */ +/* ==================================================== MIRROR_CONTROL ===================================================== */ + #define R_ETHSW_MIRROR_CONTROL_PORT_Pos (0UL) /*!< PORT (Bit 0) */ + #define R_ETHSW_MIRROR_CONTROL_PORT_Msk (0x3UL) /*!< PORT (Bitfield-Mask: 0x03) */ + #define R_ETHSW_MIRROR_CONTROL_MIRROR_EN_Pos (4UL) /*!< MIRROR_EN (Bit 4) */ + #define R_ETHSW_MIRROR_CONTROL_MIRROR_EN_Msk (0x10UL) /*!< MIRROR_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MIRROR_CONTROL_ING_MAP_EN_Pos (5UL) /*!< ING_MAP_EN (Bit 5) */ + #define R_ETHSW_MIRROR_CONTROL_ING_MAP_EN_Msk (0x20UL) /*!< ING_MAP_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MIRROR_CONTROL_EG_MAP_EN_Pos (6UL) /*!< EG_MAP_EN (Bit 6) */ + #define R_ETHSW_MIRROR_CONTROL_EG_MAP_EN_Msk (0x40UL) /*!< EG_MAP_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MIRROR_CONTROL_ING_SA_MATCH_Pos (7UL) /*!< ING_SA_MATCH (Bit 7) */ + #define R_ETHSW_MIRROR_CONTROL_ING_SA_MATCH_Msk (0x80UL) /*!< ING_SA_MATCH (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MIRROR_CONTROL_ING_DA_MATCH_Pos (8UL) /*!< ING_DA_MATCH (Bit 8) */ + #define R_ETHSW_MIRROR_CONTROL_ING_DA_MATCH_Msk (0x100UL) /*!< ING_DA_MATCH (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MIRROR_CONTROL_EG_SA_MATCH_Pos (9UL) /*!< EG_SA_MATCH (Bit 9) */ + #define R_ETHSW_MIRROR_CONTROL_EG_SA_MATCH_Msk (0x200UL) /*!< EG_SA_MATCH (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MIRROR_CONTROL_EG_DA_MATCH_Pos (10UL) /*!< EG_DA_MATCH (Bit 10) */ + #define R_ETHSW_MIRROR_CONTROL_EG_DA_MATCH_Msk (0x400UL) /*!< EG_DA_MATCH (Bitfield-Mask: 0x01) */ +/* ===================================================== MIRROR_EG_MAP ===================================================== */ + #define R_ETHSW_MIRROR_EG_MAP_EMAP_Pos (0UL) /*!< EMAP (Bit 0) */ + #define R_ETHSW_MIRROR_EG_MAP_EMAP_Msk (0xfUL) /*!< EMAP (Bitfield-Mask: 0x0f) */ +/* ==================================================== MIRROR_ING_MAP ===================================================== */ + #define R_ETHSW_MIRROR_ING_MAP_IMAP_Pos (0UL) /*!< IMAP (Bit 0) */ + #define R_ETHSW_MIRROR_ING_MAP_IMAP_Msk (0xfUL) /*!< IMAP (Bitfield-Mask: 0x0f) */ +/* ===================================================== MIRROR_ISRC_0 ===================================================== */ + #define R_ETHSW_MIRROR_ISRC_0_ISRC_Pos (0UL) /*!< ISRC (Bit 0) */ + #define R_ETHSW_MIRROR_ISRC_0_ISRC_Msk (0xffffffffUL) /*!< ISRC (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== MIRROR_ISRC_1 ===================================================== */ + #define R_ETHSW_MIRROR_ISRC_1_ISRC_Pos (0UL) /*!< ISRC (Bit 0) */ + #define R_ETHSW_MIRROR_ISRC_1_ISRC_Msk (0xffffUL) /*!< ISRC (Bitfield-Mask: 0xffff) */ +/* ===================================================== MIRROR_IDST_0 ===================================================== */ + #define R_ETHSW_MIRROR_IDST_0_IDST_Pos (0UL) /*!< IDST (Bit 0) */ + #define R_ETHSW_MIRROR_IDST_0_IDST_Msk (0xffffffffUL) /*!< IDST (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== MIRROR_IDST_1 ===================================================== */ + #define R_ETHSW_MIRROR_IDST_1_IDST_Pos (0UL) /*!< IDST (Bit 0) */ + #define R_ETHSW_MIRROR_IDST_1_IDST_Msk (0xffffUL) /*!< IDST (Bitfield-Mask: 0xffff) */ +/* ===================================================== MIRROR_ESRC_0 ===================================================== */ + #define R_ETHSW_MIRROR_ESRC_0_ESRC_Pos (0UL) /*!< ESRC (Bit 0) */ + #define R_ETHSW_MIRROR_ESRC_0_ESRC_Msk (0xffffffffUL) /*!< ESRC (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== MIRROR_ESRC_1 ===================================================== */ + #define R_ETHSW_MIRROR_ESRC_1_ESRC_Pos (0UL) /*!< ESRC (Bit 0) */ + #define R_ETHSW_MIRROR_ESRC_1_ESRC_Msk (0xffffUL) /*!< ESRC (Bitfield-Mask: 0xffff) */ +/* ===================================================== MIRROR_EDST_0 ===================================================== */ + #define R_ETHSW_MIRROR_EDST_0_EDST_Pos (0UL) /*!< EDST (Bit 0) */ + #define R_ETHSW_MIRROR_EDST_0_EDST_Msk (0xffffffffUL) /*!< EDST (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== MIRROR_EDST_1 ===================================================== */ + #define R_ETHSW_MIRROR_EDST_1_EDST_Pos (0UL) /*!< EDST (Bit 0) */ + #define R_ETHSW_MIRROR_EDST_1_EDST_Msk (0xffffUL) /*!< EDST (Bitfield-Mask: 0xffff) */ +/* ====================================================== MIRROR_CNT ======================================================= */ + #define R_ETHSW_MIRROR_CNT_CNT_Pos (0UL) /*!< CNT (Bit 0) */ + #define R_ETHSW_MIRROR_CNT_CNT_Msk (0xffUL) /*!< CNT (Bitfield-Mask: 0xff) */ +/* ================================================== UCAST_DEFAULT_MASK1 ================================================== */ + #define R_ETHSW_UCAST_DEFAULT_MASK1_UCASTDM1_Pos (0UL) /*!< UCASTDM1 (Bit 0) */ + #define R_ETHSW_UCAST_DEFAULT_MASK1_UCASTDM1_Msk (0xfUL) /*!< UCASTDM1 (Bitfield-Mask: 0x0f) */ +/* ================================================== BCAST_DEFAULT_MASK1 ================================================== */ + #define R_ETHSW_BCAST_DEFAULT_MASK1_BCASTDM1_Pos (0UL) /*!< BCASTDM1 (Bit 0) */ + #define R_ETHSW_BCAST_DEFAULT_MASK1_BCASTDM1_Msk (0xfUL) /*!< BCASTDM1 (Bitfield-Mask: 0x0f) */ +/* ================================================== MCAST_DEFAULT_MASK1 ================================================== */ + #define R_ETHSW_MCAST_DEFAULT_MASK1_MCASTDM1_Pos (0UL) /*!< MCASTDM1 (Bit 0) */ + #define R_ETHSW_MCAST_DEFAULT_MASK1_MCASTDM1_Msk (0xfUL) /*!< MCASTDM1 (Bitfield-Mask: 0x0f) */ +/* ================================================== PORT_XCAST_MASK_SEL ================================================== */ + #define R_ETHSW_PORT_XCAST_MASK_SEL_MSEL_Pos (0UL) /*!< MSEL (Bit 0) */ + #define R_ETHSW_PORT_XCAST_MASK_SEL_MSEL_Msk (0xfUL) /*!< MSEL (Bitfield-Mask: 0x0f) */ +/* =================================================== QMGR_ST_MINCELLS ==================================================== */ + #define R_ETHSW_QMGR_ST_MINCELLS_STMINCELLS_Pos (0UL) /*!< STMINCELLS (Bit 0) */ + #define R_ETHSW_QMGR_ST_MINCELLS_STMINCELLS_Msk (0x7ffUL) /*!< STMINCELLS (Bitfield-Mask: 0x7ff) */ +/* ===================================================== QMGR_RED_MIN4 ===================================================== */ + #define R_ETHSW_QMGR_RED_MIN4_CFGRED_MINTH4_Pos (0UL) /*!< CFGRED_MINTH4 (Bit 0) */ + #define R_ETHSW_QMGR_RED_MIN4_CFGRED_MINTH4_Msk (0xffffffffUL) /*!< CFGRED_MINTH4 (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== QMGR_RED_MAX4 ===================================================== */ + #define R_ETHSW_QMGR_RED_MAX4_CFGRED_MAXTH4_Pos (0UL) /*!< CFGRED_MAXTH4 (Bit 0) */ + #define R_ETHSW_QMGR_RED_MAX4_CFGRED_MAXTH4_Msk (0xffffffffUL) /*!< CFGRED_MAXTH4 (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== QMGR_RED_CONFIG ==================================================== */ + #define R_ETHSW_QMGR_RED_CONFIG_QUEUE_RED_EN_Pos (0UL) /*!< QUEUE_RED_EN (Bit 0) */ + #define R_ETHSW_QMGR_RED_CONFIG_QUEUE_RED_EN_Msk (0xfUL) /*!< QUEUE_RED_EN (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_QMGR_RED_CONFIG_GACTIVITY_EN_Pos (8UL) /*!< GACTIVITY_EN (Bit 8) */ + #define R_ETHSW_QMGR_RED_CONFIG_GACTIVITY_EN_Msk (0x100UL) /*!< GACTIVITY_EN (Bitfield-Mask: 0x01) */ +/* ====================================================== IMC_STATUS ======================================================= */ + #define R_ETHSW_IMC_STATUS_CELLS_AVAILABLE_Pos (0UL) /*!< CELLS_AVAILABLE (Bit 0) */ + #define R_ETHSW_IMC_STATUS_CELLS_AVAILABLE_Msk (0xffffffUL) /*!< CELLS_AVAILABLE (Bitfield-Mask: 0xffffff) */ + #define R_ETHSW_IMC_STATUS_CF_ERR_Pos (24UL) /*!< CF_ERR (Bit 24) */ + #define R_ETHSW_IMC_STATUS_CF_ERR_Msk (0x1000000UL) /*!< CF_ERR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_IMC_STATUS_DE_ERR_Pos (25UL) /*!< DE_ERR (Bit 25) */ + #define R_ETHSW_IMC_STATUS_DE_ERR_Msk (0x2000000UL) /*!< DE_ERR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_IMC_STATUS_DE_INIT_Pos (26UL) /*!< DE_INIT (Bit 26) */ + #define R_ETHSW_IMC_STATUS_DE_INIT_Msk (0x4000000UL) /*!< DE_INIT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_IMC_STATUS_MEM_FULL_Pos (27UL) /*!< MEM_FULL (Bit 27) */ + #define R_ETHSW_IMC_STATUS_MEM_FULL_Msk (0x8000000UL) /*!< MEM_FULL (Bitfield-Mask: 0x01) */ +/* ===================================================== IMC_ERR_FULL ====================================================== */ + #define R_ETHSW_IMC_ERR_FULL_IPC_ERR_FULL_Pos (0UL) /*!< IPC_ERR_FULL (Bit 0) */ + #define R_ETHSW_IMC_ERR_FULL_IPC_ERR_FULL_Msk (0xfUL) /*!< IPC_ERR_FULL (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_IMC_ERR_FULL_IPC_ERR_TRUNC_Pos (16UL) /*!< IPC_ERR_TRUNC (Bit 16) */ + #define R_ETHSW_IMC_ERR_FULL_IPC_ERR_TRUNC_Msk (0xf0000UL) /*!< IPC_ERR_TRUNC (Bitfield-Mask: 0x0f) */ +/* ===================================================== IMC_ERR_IFACE ===================================================== */ + #define R_ETHSW_IMC_ERR_IFACE_IPC_ERR_IFACE_Pos (0UL) /*!< IPC_ERR_IFACE (Bit 0) */ + #define R_ETHSW_IMC_ERR_IFACE_IPC_ERR_IFACE_Msk (0xfUL) /*!< IPC_ERR_IFACE (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_IMC_ERR_IFACE_WBUF_OVF_Pos (16UL) /*!< WBUF_OVF (Bit 16) */ + #define R_ETHSW_IMC_ERR_IFACE_WBUF_OVF_Msk (0xf0000UL) /*!< WBUF_OVF (Bitfield-Mask: 0x0f) */ +/* ==================================================== IMC_ERR_QOFLOW ===================================================== */ + #define R_ETHSW_IMC_ERR_QOFLOW_OP_ERR_Pos (0UL) /*!< OP_ERR (Bit 0) */ + #define R_ETHSW_IMC_ERR_QOFLOW_OP_ERR_Msk (0xfUL) /*!< OP_ERR (Bitfield-Mask: 0x0f) */ +/* ====================================================== IMC_CONFIG ======================================================= */ + #define R_ETHSW_IMC_CONFIG_WFQ_EN_Pos (0UL) /*!< WFQ_EN (Bit 0) */ + #define R_ETHSW_IMC_CONFIG_WFQ_EN_Msk (0x1UL) /*!< WFQ_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_IMC_CONFIG_RSV_ENA_Pos (1UL) /*!< RSV_ENA (Bit 1) */ + #define R_ETHSW_IMC_CONFIG_RSV_ENA_Msk (0x2UL) /*!< RSV_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_IMC_CONFIG_SPEED_HIPRI_THR_Pos (2UL) /*!< SPEED_HIPRI_THR (Bit 2) */ + #define R_ETHSW_IMC_CONFIG_SPEED_HIPRI_THR_Msk (0x1cUL) /*!< SPEED_HIPRI_THR (Bitfield-Mask: 0x07) */ + #define R_ETHSW_IMC_CONFIG_CTFL_EMPTY_MD_Pos (5UL) /*!< CTFL_EMPTY_MD (Bit 5) */ + #define R_ETHSW_IMC_CONFIG_CTFL_EMPTY_MD_Msk (0x20UL) /*!< CTFL_EMPTY_MD (Bitfield-Mask: 0x01) */ +/* ===================================================== IMC_ERR_ALLOC ===================================================== */ + #define R_ETHSW_IMC_ERR_ALLOC_DISC_FULL_Pos (0UL) /*!< DISC_FULL (Bit 0) */ + #define R_ETHSW_IMC_ERR_ALLOC_DISC_FULL_Msk (0xfUL) /*!< DISC_FULL (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_IMC_ERR_ALLOC_DISC_LATE_Pos (16UL) /*!< DISC_LATE (Bit 16) */ + #define R_ETHSW_IMC_ERR_ALLOC_DISC_LATE_Msk (0xf0000UL) /*!< DISC_LATE (Bitfield-Mask: 0x0f) */ +/* ======================================================= GPARSER0 ======================================================== */ + #define R_ETHSW_GPARSER0_MASK_VAL2_Pos (0UL) /*!< MASK_VAL2 (Bit 0) */ + #define R_ETHSW_GPARSER0_MASK_VAL2_Msk (0xffUL) /*!< MASK_VAL2 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_GPARSER0_COMPARE_VAL_Pos (8UL) /*!< COMPARE_VAL (Bit 8) */ + #define R_ETHSW_GPARSER0_COMPARE_VAL_Msk (0xff00UL) /*!< COMPARE_VAL (Bitfield-Mask: 0xff) */ + #define R_ETHSW_GPARSER0_OFFSET_Pos (16UL) /*!< OFFSET (Bit 16) */ + #define R_ETHSW_GPARSER0_OFFSET_Msk (0x3f0000UL) /*!< OFFSET (Bitfield-Mask: 0x3f) */ + #define R_ETHSW_GPARSER0_OFFSET_DA_Pos (23UL) /*!< OFFSET_DA (Bit 23) */ + #define R_ETHSW_GPARSER0_OFFSET_DA_Msk (0x800000UL) /*!< OFFSET_DA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER0_VALID_Pos (24UL) /*!< VALID (Bit 24) */ + #define R_ETHSW_GPARSER0_VALID_Msk (0x1000000UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER0_SKIPVLAN_Pos (25UL) /*!< SKIPVLAN (Bit 25) */ + #define R_ETHSW_GPARSER0_SKIPVLAN_Msk (0x2000000UL) /*!< SKIPVLAN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER0_IPDATA_Pos (26UL) /*!< IPDATA (Bit 26) */ + #define R_ETHSW_GPARSER0_IPDATA_Msk (0x4000000UL) /*!< IPDATA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER0_IPPROTOCOL_Pos (27UL) /*!< IPPROTOCOL (Bit 27) */ + #define R_ETHSW_GPARSER0_IPPROTOCOL_Msk (0x8000000UL) /*!< IPPROTOCOL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER0_CMP16_Pos (28UL) /*!< CMP16 (Bit 28) */ + #define R_ETHSW_GPARSER0_CMP16_Msk (0x10000000UL) /*!< CMP16 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER0_OFFSET_PLUS2_Pos (29UL) /*!< OFFSET_PLUS2 (Bit 29) */ + #define R_ETHSW_GPARSER0_OFFSET_PLUS2_Msk (0x20000000UL) /*!< OFFSET_PLUS2 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER0_CMP_MASK_OR_Pos (30UL) /*!< CMP_MASK_OR (Bit 30) */ + #define R_ETHSW_GPARSER0_CMP_MASK_OR_Msk (0x40000000UL) /*!< CMP_MASK_OR (Bitfield-Mask: 0x01) */ +/* ======================================================= GPARSER1 ======================================================== */ + #define R_ETHSW_GPARSER1_MASK_VAL2_Pos (0UL) /*!< MASK_VAL2 (Bit 0) */ + #define R_ETHSW_GPARSER1_MASK_VAL2_Msk (0xffUL) /*!< MASK_VAL2 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_GPARSER1_COMPARE_VAL_Pos (8UL) /*!< COMPARE_VAL (Bit 8) */ + #define R_ETHSW_GPARSER1_COMPARE_VAL_Msk (0xff00UL) /*!< COMPARE_VAL (Bitfield-Mask: 0xff) */ + #define R_ETHSW_GPARSER1_OFFSET_Pos (16UL) /*!< OFFSET (Bit 16) */ + #define R_ETHSW_GPARSER1_OFFSET_Msk (0x3f0000UL) /*!< OFFSET (Bitfield-Mask: 0x3f) */ + #define R_ETHSW_GPARSER1_OFFSET_DA_Pos (23UL) /*!< OFFSET_DA (Bit 23) */ + #define R_ETHSW_GPARSER1_OFFSET_DA_Msk (0x800000UL) /*!< OFFSET_DA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER1_VALID_Pos (24UL) /*!< VALID (Bit 24) */ + #define R_ETHSW_GPARSER1_VALID_Msk (0x1000000UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER1_SKIPVLAN_Pos (25UL) /*!< SKIPVLAN (Bit 25) */ + #define R_ETHSW_GPARSER1_SKIPVLAN_Msk (0x2000000UL) /*!< SKIPVLAN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER1_IPDATA_Pos (26UL) /*!< IPDATA (Bit 26) */ + #define R_ETHSW_GPARSER1_IPDATA_Msk (0x4000000UL) /*!< IPDATA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER1_IPPROTOCOL_Pos (27UL) /*!< IPPROTOCOL (Bit 27) */ + #define R_ETHSW_GPARSER1_IPPROTOCOL_Msk (0x8000000UL) /*!< IPPROTOCOL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER1_CMP16_Pos (28UL) /*!< CMP16 (Bit 28) */ + #define R_ETHSW_GPARSER1_CMP16_Msk (0x10000000UL) /*!< CMP16 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER1_OFFSET_PLUS2_Pos (29UL) /*!< OFFSET_PLUS2 (Bit 29) */ + #define R_ETHSW_GPARSER1_OFFSET_PLUS2_Msk (0x20000000UL) /*!< OFFSET_PLUS2 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER1_CMP_MASK_OR_Pos (30UL) /*!< CMP_MASK_OR (Bit 30) */ + #define R_ETHSW_GPARSER1_CMP_MASK_OR_Msk (0x40000000UL) /*!< CMP_MASK_OR (Bitfield-Mask: 0x01) */ +/* ======================================================= GPARSER2 ======================================================== */ + #define R_ETHSW_GPARSER2_MASK_VAL2_Pos (0UL) /*!< MASK_VAL2 (Bit 0) */ + #define R_ETHSW_GPARSER2_MASK_VAL2_Msk (0xffUL) /*!< MASK_VAL2 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_GPARSER2_COMPARE_VAL_Pos (8UL) /*!< COMPARE_VAL (Bit 8) */ + #define R_ETHSW_GPARSER2_COMPARE_VAL_Msk (0xff00UL) /*!< COMPARE_VAL (Bitfield-Mask: 0xff) */ + #define R_ETHSW_GPARSER2_OFFSET_Pos (16UL) /*!< OFFSET (Bit 16) */ + #define R_ETHSW_GPARSER2_OFFSET_Msk (0x3f0000UL) /*!< OFFSET (Bitfield-Mask: 0x3f) */ + #define R_ETHSW_GPARSER2_OFFSET_DA_Pos (23UL) /*!< OFFSET_DA (Bit 23) */ + #define R_ETHSW_GPARSER2_OFFSET_DA_Msk (0x800000UL) /*!< OFFSET_DA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER2_VALID_Pos (24UL) /*!< VALID (Bit 24) */ + #define R_ETHSW_GPARSER2_VALID_Msk (0x1000000UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER2_SKIPVLAN_Pos (25UL) /*!< SKIPVLAN (Bit 25) */ + #define R_ETHSW_GPARSER2_SKIPVLAN_Msk (0x2000000UL) /*!< SKIPVLAN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER2_IPDATA_Pos (26UL) /*!< IPDATA (Bit 26) */ + #define R_ETHSW_GPARSER2_IPDATA_Msk (0x4000000UL) /*!< IPDATA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER2_IPPROTOCOL_Pos (27UL) /*!< IPPROTOCOL (Bit 27) */ + #define R_ETHSW_GPARSER2_IPPROTOCOL_Msk (0x8000000UL) /*!< IPPROTOCOL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER2_CMP16_Pos (28UL) /*!< CMP16 (Bit 28) */ + #define R_ETHSW_GPARSER2_CMP16_Msk (0x10000000UL) /*!< CMP16 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER2_OFFSET_PLUS2_Pos (29UL) /*!< OFFSET_PLUS2 (Bit 29) */ + #define R_ETHSW_GPARSER2_OFFSET_PLUS2_Msk (0x20000000UL) /*!< OFFSET_PLUS2 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER2_CMP_MASK_OR_Pos (30UL) /*!< CMP_MASK_OR (Bit 30) */ + #define R_ETHSW_GPARSER2_CMP_MASK_OR_Msk (0x40000000UL) /*!< CMP_MASK_OR (Bitfield-Mask: 0x01) */ +/* ======================================================= GPARSER3 ======================================================== */ + #define R_ETHSW_GPARSER3_MASK_VAL2_Pos (0UL) /*!< MASK_VAL2 (Bit 0) */ + #define R_ETHSW_GPARSER3_MASK_VAL2_Msk (0xffUL) /*!< MASK_VAL2 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_GPARSER3_COMPARE_VAL_Pos (8UL) /*!< COMPARE_VAL (Bit 8) */ + #define R_ETHSW_GPARSER3_COMPARE_VAL_Msk (0xff00UL) /*!< COMPARE_VAL (Bitfield-Mask: 0xff) */ + #define R_ETHSW_GPARSER3_OFFSET_Pos (16UL) /*!< OFFSET (Bit 16) */ + #define R_ETHSW_GPARSER3_OFFSET_Msk (0x3f0000UL) /*!< OFFSET (Bitfield-Mask: 0x3f) */ + #define R_ETHSW_GPARSER3_OFFSET_DA_Pos (23UL) /*!< OFFSET_DA (Bit 23) */ + #define R_ETHSW_GPARSER3_OFFSET_DA_Msk (0x800000UL) /*!< OFFSET_DA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER3_VALID_Pos (24UL) /*!< VALID (Bit 24) */ + #define R_ETHSW_GPARSER3_VALID_Msk (0x1000000UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER3_SKIPVLAN_Pos (25UL) /*!< SKIPVLAN (Bit 25) */ + #define R_ETHSW_GPARSER3_SKIPVLAN_Msk (0x2000000UL) /*!< SKIPVLAN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER3_IPDATA_Pos (26UL) /*!< IPDATA (Bit 26) */ + #define R_ETHSW_GPARSER3_IPDATA_Msk (0x4000000UL) /*!< IPDATA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER3_IPPROTOCOL_Pos (27UL) /*!< IPPROTOCOL (Bit 27) */ + #define R_ETHSW_GPARSER3_IPPROTOCOL_Msk (0x8000000UL) /*!< IPPROTOCOL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER3_CMP16_Pos (28UL) /*!< CMP16 (Bit 28) */ + #define R_ETHSW_GPARSER3_CMP16_Msk (0x10000000UL) /*!< CMP16 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER3_OFFSET_PLUS2_Pos (29UL) /*!< OFFSET_PLUS2 (Bit 29) */ + #define R_ETHSW_GPARSER3_OFFSET_PLUS2_Msk (0x20000000UL) /*!< OFFSET_PLUS2 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER3_CMP_MASK_OR_Pos (30UL) /*!< CMP_MASK_OR (Bit 30) */ + #define R_ETHSW_GPARSER3_CMP_MASK_OR_Msk (0x40000000UL) /*!< CMP_MASK_OR (Bitfield-Mask: 0x01) */ +/* ======================================================== GARITH0 ======================================================== */ + #define R_ETHSW_GARITH0_NOT_INP_Pos (0UL) /*!< NOT_INP (Bit 0) */ + #define R_ETHSW_GARITH0_NOT_INP_Msk (0xfUL) /*!< NOT_INP (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_GARITH0_SEL_MATCH_Pos (8UL) /*!< SEL_MATCH (Bit 8) */ + #define R_ETHSW_GARITH0_SEL_MATCH_Msk (0xf00UL) /*!< SEL_MATCH (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_GARITH0_SEL_ARITH0_Pos (12UL) /*!< SEL_ARITH0 (Bit 12) */ + #define R_ETHSW_GARITH0_SEL_ARITH0_Msk (0x1000UL) /*!< SEL_ARITH0 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH0_SEL_ARITH1_Pos (13UL) /*!< SEL_ARITH1 (Bit 13) */ + #define R_ETHSW_GARITH0_SEL_ARITH1_Msk (0x2000UL) /*!< SEL_ARITH1 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH0_SEL_ARITH2_Pos (14UL) /*!< SEL_ARITH2 (Bit 14) */ + #define R_ETHSW_GARITH0_SEL_ARITH2_Msk (0x4000UL) /*!< SEL_ARITH2 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH0_OP_Pos (16UL) /*!< OP (Bit 16) */ + #define R_ETHSW_GARITH0_OP_Msk (0x10000UL) /*!< OP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH0_RESULT_INV_Pos (17UL) /*!< RESULT_INV (Bit 17) */ + #define R_ETHSW_GARITH0_RESULT_INV_Msk (0x20000UL) /*!< RESULT_INV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH0_SNP_MD_Pos (20UL) /*!< SNP_MD (Bit 20) */ + #define R_ETHSW_GARITH0_SNP_MD_Msk (0x300000UL) /*!< SNP_MD (Bitfield-Mask: 0x03) */ +/* ======================================================== GARITH1 ======================================================== */ + #define R_ETHSW_GARITH1_NOT_INP_Pos (0UL) /*!< NOT_INP (Bit 0) */ + #define R_ETHSW_GARITH1_NOT_INP_Msk (0xfUL) /*!< NOT_INP (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_GARITH1_SEL_MATCH_Pos (8UL) /*!< SEL_MATCH (Bit 8) */ + #define R_ETHSW_GARITH1_SEL_MATCH_Msk (0xf00UL) /*!< SEL_MATCH (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_GARITH1_SEL_ARITH0_Pos (12UL) /*!< SEL_ARITH0 (Bit 12) */ + #define R_ETHSW_GARITH1_SEL_ARITH0_Msk (0x1000UL) /*!< SEL_ARITH0 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH1_SEL_ARITH1_Pos (13UL) /*!< SEL_ARITH1 (Bit 13) */ + #define R_ETHSW_GARITH1_SEL_ARITH1_Msk (0x2000UL) /*!< SEL_ARITH1 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH1_SEL_ARITH2_Pos (14UL) /*!< SEL_ARITH2 (Bit 14) */ + #define R_ETHSW_GARITH1_SEL_ARITH2_Msk (0x4000UL) /*!< SEL_ARITH2 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH1_OP_Pos (16UL) /*!< OP (Bit 16) */ + #define R_ETHSW_GARITH1_OP_Msk (0x10000UL) /*!< OP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH1_RESULT_INV_Pos (17UL) /*!< RESULT_INV (Bit 17) */ + #define R_ETHSW_GARITH1_RESULT_INV_Msk (0x20000UL) /*!< RESULT_INV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH1_SNP_MD_Pos (20UL) /*!< SNP_MD (Bit 20) */ + #define R_ETHSW_GARITH1_SNP_MD_Msk (0x300000UL) /*!< SNP_MD (Bitfield-Mask: 0x03) */ +/* ======================================================== GARITH2 ======================================================== */ + #define R_ETHSW_GARITH2_NOT_INP_Pos (0UL) /*!< NOT_INP (Bit 0) */ + #define R_ETHSW_GARITH2_NOT_INP_Msk (0xfUL) /*!< NOT_INP (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_GARITH2_SEL_MATCH_Pos (8UL) /*!< SEL_MATCH (Bit 8) */ + #define R_ETHSW_GARITH2_SEL_MATCH_Msk (0xf00UL) /*!< SEL_MATCH (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_GARITH2_SEL_ARITH0_Pos (12UL) /*!< SEL_ARITH0 (Bit 12) */ + #define R_ETHSW_GARITH2_SEL_ARITH0_Msk (0x1000UL) /*!< SEL_ARITH0 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH2_SEL_ARITH1_Pos (13UL) /*!< SEL_ARITH1 (Bit 13) */ + #define R_ETHSW_GARITH2_SEL_ARITH1_Msk (0x2000UL) /*!< SEL_ARITH1 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH2_SEL_ARITH2_Pos (14UL) /*!< SEL_ARITH2 (Bit 14) */ + #define R_ETHSW_GARITH2_SEL_ARITH2_Msk (0x4000UL) /*!< SEL_ARITH2 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH2_OP_Pos (16UL) /*!< OP (Bit 16) */ + #define R_ETHSW_GARITH2_OP_Msk (0x10000UL) /*!< OP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH2_RESULT_INV_Pos (17UL) /*!< RESULT_INV (Bit 17) */ + #define R_ETHSW_GARITH2_RESULT_INV_Msk (0x20000UL) /*!< RESULT_INV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH2_SNP_MD_Pos (20UL) /*!< SNP_MD (Bit 20) */ + #define R_ETHSW_GARITH2_SNP_MD_Msk (0x300000UL) /*!< SNP_MD (Bitfield-Mask: 0x03) */ +/* ======================================================== GARITH3 ======================================================== */ + #define R_ETHSW_GARITH3_NOT_INP_Pos (0UL) /*!< NOT_INP (Bit 0) */ + #define R_ETHSW_GARITH3_NOT_INP_Msk (0xfUL) /*!< NOT_INP (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_GARITH3_SEL_MATCH_Pos (8UL) /*!< SEL_MATCH (Bit 8) */ + #define R_ETHSW_GARITH3_SEL_MATCH_Msk (0xf00UL) /*!< SEL_MATCH (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_GARITH3_SEL_ARITH0_Pos (12UL) /*!< SEL_ARITH0 (Bit 12) */ + #define R_ETHSW_GARITH3_SEL_ARITH0_Msk (0x1000UL) /*!< SEL_ARITH0 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH3_SEL_ARITH1_Pos (13UL) /*!< SEL_ARITH1 (Bit 13) */ + #define R_ETHSW_GARITH3_SEL_ARITH1_Msk (0x2000UL) /*!< SEL_ARITH1 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH3_SEL_ARITH2_Pos (14UL) /*!< SEL_ARITH2 (Bit 14) */ + #define R_ETHSW_GARITH3_SEL_ARITH2_Msk (0x4000UL) /*!< SEL_ARITH2 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH3_OP_Pos (16UL) /*!< OP (Bit 16) */ + #define R_ETHSW_GARITH3_OP_Msk (0x10000UL) /*!< OP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH3_RESULT_INV_Pos (17UL) /*!< RESULT_INV (Bit 17) */ + #define R_ETHSW_GARITH3_RESULT_INV_Msk (0x20000UL) /*!< RESULT_INV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH3_SNP_MD_Pos (20UL) /*!< SNP_MD (Bit 20) */ + #define R_ETHSW_GARITH3_SNP_MD_Msk (0x300000UL) /*!< SNP_MD (Bitfield-Mask: 0x03) */ +/* ======================================================= GPARSER4 ======================================================== */ + #define R_ETHSW_GPARSER4_MASK_VAL2_Pos (0UL) /*!< MASK_VAL2 (Bit 0) */ + #define R_ETHSW_GPARSER4_MASK_VAL2_Msk (0xffUL) /*!< MASK_VAL2 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_GPARSER4_COMPARE_VAL_Pos (8UL) /*!< COMPARE_VAL (Bit 8) */ + #define R_ETHSW_GPARSER4_COMPARE_VAL_Msk (0xff00UL) /*!< COMPARE_VAL (Bitfield-Mask: 0xff) */ + #define R_ETHSW_GPARSER4_OFFSET_Pos (16UL) /*!< OFFSET (Bit 16) */ + #define R_ETHSW_GPARSER4_OFFSET_Msk (0x3f0000UL) /*!< OFFSET (Bitfield-Mask: 0x3f) */ + #define R_ETHSW_GPARSER4_OFFSET_DA_Pos (23UL) /*!< OFFSET_DA (Bit 23) */ + #define R_ETHSW_GPARSER4_OFFSET_DA_Msk (0x800000UL) /*!< OFFSET_DA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER4_VALID_Pos (24UL) /*!< VALID (Bit 24) */ + #define R_ETHSW_GPARSER4_VALID_Msk (0x1000000UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER4_SKIPVLAN_Pos (25UL) /*!< SKIPVLAN (Bit 25) */ + #define R_ETHSW_GPARSER4_SKIPVLAN_Msk (0x2000000UL) /*!< SKIPVLAN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER4_IPDATA_Pos (26UL) /*!< IPDATA (Bit 26) */ + #define R_ETHSW_GPARSER4_IPDATA_Msk (0x4000000UL) /*!< IPDATA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER4_IPPROTOCOL_Pos (27UL) /*!< IPPROTOCOL (Bit 27) */ + #define R_ETHSW_GPARSER4_IPPROTOCOL_Msk (0x8000000UL) /*!< IPPROTOCOL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER4_CMP16_Pos (28UL) /*!< CMP16 (Bit 28) */ + #define R_ETHSW_GPARSER4_CMP16_Msk (0x10000000UL) /*!< CMP16 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER4_OFFSET_PLUS2_Pos (29UL) /*!< OFFSET_PLUS2 (Bit 29) */ + #define R_ETHSW_GPARSER4_OFFSET_PLUS2_Msk (0x20000000UL) /*!< OFFSET_PLUS2 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER4_CMP_MASK_OR_Pos (30UL) /*!< CMP_MASK_OR (Bit 30) */ + #define R_ETHSW_GPARSER4_CMP_MASK_OR_Msk (0x40000000UL) /*!< CMP_MASK_OR (Bitfield-Mask: 0x01) */ +/* ======================================================= GPARSER5 ======================================================== */ + #define R_ETHSW_GPARSER5_MASK_VAL2_Pos (0UL) /*!< MASK_VAL2 (Bit 0) */ + #define R_ETHSW_GPARSER5_MASK_VAL2_Msk (0xffUL) /*!< MASK_VAL2 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_GPARSER5_COMPARE_VAL_Pos (8UL) /*!< COMPARE_VAL (Bit 8) */ + #define R_ETHSW_GPARSER5_COMPARE_VAL_Msk (0xff00UL) /*!< COMPARE_VAL (Bitfield-Mask: 0xff) */ + #define R_ETHSW_GPARSER5_OFFSET_Pos (16UL) /*!< OFFSET (Bit 16) */ + #define R_ETHSW_GPARSER5_OFFSET_Msk (0x3f0000UL) /*!< OFFSET (Bitfield-Mask: 0x3f) */ + #define R_ETHSW_GPARSER5_OFFSET_DA_Pos (23UL) /*!< OFFSET_DA (Bit 23) */ + #define R_ETHSW_GPARSER5_OFFSET_DA_Msk (0x800000UL) /*!< OFFSET_DA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER5_VALID_Pos (24UL) /*!< VALID (Bit 24) */ + #define R_ETHSW_GPARSER5_VALID_Msk (0x1000000UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER5_SKIPVLAN_Pos (25UL) /*!< SKIPVLAN (Bit 25) */ + #define R_ETHSW_GPARSER5_SKIPVLAN_Msk (0x2000000UL) /*!< SKIPVLAN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER5_IPDATA_Pos (26UL) /*!< IPDATA (Bit 26) */ + #define R_ETHSW_GPARSER5_IPDATA_Msk (0x4000000UL) /*!< IPDATA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER5_IPPROTOCOL_Pos (27UL) /*!< IPPROTOCOL (Bit 27) */ + #define R_ETHSW_GPARSER5_IPPROTOCOL_Msk (0x8000000UL) /*!< IPPROTOCOL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER5_CMP16_Pos (28UL) /*!< CMP16 (Bit 28) */ + #define R_ETHSW_GPARSER5_CMP16_Msk (0x10000000UL) /*!< CMP16 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER5_OFFSET_PLUS2_Pos (29UL) /*!< OFFSET_PLUS2 (Bit 29) */ + #define R_ETHSW_GPARSER5_OFFSET_PLUS2_Msk (0x20000000UL) /*!< OFFSET_PLUS2 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER5_CMP_MASK_OR_Pos (30UL) /*!< CMP_MASK_OR (Bit 30) */ + #define R_ETHSW_GPARSER5_CMP_MASK_OR_Msk (0x40000000UL) /*!< CMP_MASK_OR (Bitfield-Mask: 0x01) */ +/* ======================================================= GPARSER6 ======================================================== */ + #define R_ETHSW_GPARSER6_MASK_VAL2_Pos (0UL) /*!< MASK_VAL2 (Bit 0) */ + #define R_ETHSW_GPARSER6_MASK_VAL2_Msk (0xffUL) /*!< MASK_VAL2 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_GPARSER6_COMPARE_VAL_Pos (8UL) /*!< COMPARE_VAL (Bit 8) */ + #define R_ETHSW_GPARSER6_COMPARE_VAL_Msk (0xff00UL) /*!< COMPARE_VAL (Bitfield-Mask: 0xff) */ + #define R_ETHSW_GPARSER6_OFFSET_Pos (16UL) /*!< OFFSET (Bit 16) */ + #define R_ETHSW_GPARSER6_OFFSET_Msk (0x3f0000UL) /*!< OFFSET (Bitfield-Mask: 0x3f) */ + #define R_ETHSW_GPARSER6_OFFSET_DA_Pos (23UL) /*!< OFFSET_DA (Bit 23) */ + #define R_ETHSW_GPARSER6_OFFSET_DA_Msk (0x800000UL) /*!< OFFSET_DA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER6_VALID_Pos (24UL) /*!< VALID (Bit 24) */ + #define R_ETHSW_GPARSER6_VALID_Msk (0x1000000UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER6_SKIPVLAN_Pos (25UL) /*!< SKIPVLAN (Bit 25) */ + #define R_ETHSW_GPARSER6_SKIPVLAN_Msk (0x2000000UL) /*!< SKIPVLAN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER6_IPDATA_Pos (26UL) /*!< IPDATA (Bit 26) */ + #define R_ETHSW_GPARSER6_IPDATA_Msk (0x4000000UL) /*!< IPDATA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER6_IPPROTOCOL_Pos (27UL) /*!< IPPROTOCOL (Bit 27) */ + #define R_ETHSW_GPARSER6_IPPROTOCOL_Msk (0x8000000UL) /*!< IPPROTOCOL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER6_CMP16_Pos (28UL) /*!< CMP16 (Bit 28) */ + #define R_ETHSW_GPARSER6_CMP16_Msk (0x10000000UL) /*!< CMP16 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER6_OFFSET_PLUS2_Pos (29UL) /*!< OFFSET_PLUS2 (Bit 29) */ + #define R_ETHSW_GPARSER6_OFFSET_PLUS2_Msk (0x20000000UL) /*!< OFFSET_PLUS2 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER6_CMP_MASK_OR_Pos (30UL) /*!< CMP_MASK_OR (Bit 30) */ + #define R_ETHSW_GPARSER6_CMP_MASK_OR_Msk (0x40000000UL) /*!< CMP_MASK_OR (Bitfield-Mask: 0x01) */ +/* ======================================================= GPARSER7 ======================================================== */ + #define R_ETHSW_GPARSER7_MASK_VAL2_Pos (0UL) /*!< MASK_VAL2 (Bit 0) */ + #define R_ETHSW_GPARSER7_MASK_VAL2_Msk (0xffUL) /*!< MASK_VAL2 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_GPARSER7_COMPARE_VAL_Pos (8UL) /*!< COMPARE_VAL (Bit 8) */ + #define R_ETHSW_GPARSER7_COMPARE_VAL_Msk (0xff00UL) /*!< COMPARE_VAL (Bitfield-Mask: 0xff) */ + #define R_ETHSW_GPARSER7_OFFSET_Pos (16UL) /*!< OFFSET (Bit 16) */ + #define R_ETHSW_GPARSER7_OFFSET_Msk (0x3f0000UL) /*!< OFFSET (Bitfield-Mask: 0x3f) */ + #define R_ETHSW_GPARSER7_OFFSET_DA_Pos (23UL) /*!< OFFSET_DA (Bit 23) */ + #define R_ETHSW_GPARSER7_OFFSET_DA_Msk (0x800000UL) /*!< OFFSET_DA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER7_VALID_Pos (24UL) /*!< VALID (Bit 24) */ + #define R_ETHSW_GPARSER7_VALID_Msk (0x1000000UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER7_SKIPVLAN_Pos (25UL) /*!< SKIPVLAN (Bit 25) */ + #define R_ETHSW_GPARSER7_SKIPVLAN_Msk (0x2000000UL) /*!< SKIPVLAN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER7_IPDATA_Pos (26UL) /*!< IPDATA (Bit 26) */ + #define R_ETHSW_GPARSER7_IPDATA_Msk (0x4000000UL) /*!< IPDATA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER7_IPPROTOCOL_Pos (27UL) /*!< IPPROTOCOL (Bit 27) */ + #define R_ETHSW_GPARSER7_IPPROTOCOL_Msk (0x8000000UL) /*!< IPPROTOCOL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER7_CMP16_Pos (28UL) /*!< CMP16 (Bit 28) */ + #define R_ETHSW_GPARSER7_CMP16_Msk (0x10000000UL) /*!< CMP16 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER7_OFFSET_PLUS2_Pos (29UL) /*!< OFFSET_PLUS2 (Bit 29) */ + #define R_ETHSW_GPARSER7_OFFSET_PLUS2_Msk (0x20000000UL) /*!< OFFSET_PLUS2 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GPARSER7_CMP_MASK_OR_Pos (30UL) /*!< CMP_MASK_OR (Bit 30) */ + #define R_ETHSW_GPARSER7_CMP_MASK_OR_Msk (0x40000000UL) /*!< CMP_MASK_OR (Bitfield-Mask: 0x01) */ +/* ======================================================== GARITH4 ======================================================== */ + #define R_ETHSW_GARITH4_NOT_INP_Pos (0UL) /*!< NOT_INP (Bit 0) */ + #define R_ETHSW_GARITH4_NOT_INP_Msk (0xfUL) /*!< NOT_INP (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_GARITH4_SEL_MATCH_Pos (8UL) /*!< SEL_MATCH (Bit 8) */ + #define R_ETHSW_GARITH4_SEL_MATCH_Msk (0xf00UL) /*!< SEL_MATCH (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_GARITH4_SEL_ARITH0_Pos (12UL) /*!< SEL_ARITH0 (Bit 12) */ + #define R_ETHSW_GARITH4_SEL_ARITH0_Msk (0x1000UL) /*!< SEL_ARITH0 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH4_SEL_ARITH1_Pos (13UL) /*!< SEL_ARITH1 (Bit 13) */ + #define R_ETHSW_GARITH4_SEL_ARITH1_Msk (0x2000UL) /*!< SEL_ARITH1 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH4_SEL_ARITH2_Pos (14UL) /*!< SEL_ARITH2 (Bit 14) */ + #define R_ETHSW_GARITH4_SEL_ARITH2_Msk (0x4000UL) /*!< SEL_ARITH2 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH4_OP_Pos (16UL) /*!< OP (Bit 16) */ + #define R_ETHSW_GARITH4_OP_Msk (0x10000UL) /*!< OP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH4_RESULT_INV_Pos (17UL) /*!< RESULT_INV (Bit 17) */ + #define R_ETHSW_GARITH4_RESULT_INV_Msk (0x20000UL) /*!< RESULT_INV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH4_SNP_MD_Pos (20UL) /*!< SNP_MD (Bit 20) */ + #define R_ETHSW_GARITH4_SNP_MD_Msk (0x300000UL) /*!< SNP_MD (Bitfield-Mask: 0x03) */ +/* ======================================================== GARITH5 ======================================================== */ + #define R_ETHSW_GARITH5_NOT_INP_Pos (0UL) /*!< NOT_INP (Bit 0) */ + #define R_ETHSW_GARITH5_NOT_INP_Msk (0xfUL) /*!< NOT_INP (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_GARITH5_SEL_MATCH_Pos (8UL) /*!< SEL_MATCH (Bit 8) */ + #define R_ETHSW_GARITH5_SEL_MATCH_Msk (0xf00UL) /*!< SEL_MATCH (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_GARITH5_SEL_ARITH0_Pos (12UL) /*!< SEL_ARITH0 (Bit 12) */ + #define R_ETHSW_GARITH5_SEL_ARITH0_Msk (0x1000UL) /*!< SEL_ARITH0 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH5_SEL_ARITH1_Pos (13UL) /*!< SEL_ARITH1 (Bit 13) */ + #define R_ETHSW_GARITH5_SEL_ARITH1_Msk (0x2000UL) /*!< SEL_ARITH1 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH5_SEL_ARITH2_Pos (14UL) /*!< SEL_ARITH2 (Bit 14) */ + #define R_ETHSW_GARITH5_SEL_ARITH2_Msk (0x4000UL) /*!< SEL_ARITH2 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH5_OP_Pos (16UL) /*!< OP (Bit 16) */ + #define R_ETHSW_GARITH5_OP_Msk (0x10000UL) /*!< OP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH5_RESULT_INV_Pos (17UL) /*!< RESULT_INV (Bit 17) */ + #define R_ETHSW_GARITH5_RESULT_INV_Msk (0x20000UL) /*!< RESULT_INV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH5_SNP_MD_Pos (20UL) /*!< SNP_MD (Bit 20) */ + #define R_ETHSW_GARITH5_SNP_MD_Msk (0x300000UL) /*!< SNP_MD (Bitfield-Mask: 0x03) */ +/* ======================================================== GARITH6 ======================================================== */ + #define R_ETHSW_GARITH6_NOT_INP_Pos (0UL) /*!< NOT_INP (Bit 0) */ + #define R_ETHSW_GARITH6_NOT_INP_Msk (0xfUL) /*!< NOT_INP (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_GARITH6_SEL_MATCH_Pos (8UL) /*!< SEL_MATCH (Bit 8) */ + #define R_ETHSW_GARITH6_SEL_MATCH_Msk (0xf00UL) /*!< SEL_MATCH (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_GARITH6_SEL_ARITH0_Pos (12UL) /*!< SEL_ARITH0 (Bit 12) */ + #define R_ETHSW_GARITH6_SEL_ARITH0_Msk (0x1000UL) /*!< SEL_ARITH0 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH6_SEL_ARITH1_Pos (13UL) /*!< SEL_ARITH1 (Bit 13) */ + #define R_ETHSW_GARITH6_SEL_ARITH1_Msk (0x2000UL) /*!< SEL_ARITH1 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH6_SEL_ARITH2_Pos (14UL) /*!< SEL_ARITH2 (Bit 14) */ + #define R_ETHSW_GARITH6_SEL_ARITH2_Msk (0x4000UL) /*!< SEL_ARITH2 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH6_OP_Pos (16UL) /*!< OP (Bit 16) */ + #define R_ETHSW_GARITH6_OP_Msk (0x10000UL) /*!< OP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH6_RESULT_INV_Pos (17UL) /*!< RESULT_INV (Bit 17) */ + #define R_ETHSW_GARITH6_RESULT_INV_Msk (0x20000UL) /*!< RESULT_INV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH6_SNP_MD_Pos (20UL) /*!< SNP_MD (Bit 20) */ + #define R_ETHSW_GARITH6_SNP_MD_Msk (0x300000UL) /*!< SNP_MD (Bitfield-Mask: 0x03) */ +/* ======================================================== GARITH7 ======================================================== */ + #define R_ETHSW_GARITH7_NOT_INP_Pos (0UL) /*!< NOT_INP (Bit 0) */ + #define R_ETHSW_GARITH7_NOT_INP_Msk (0xfUL) /*!< NOT_INP (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_GARITH7_SEL_MATCH_Pos (8UL) /*!< SEL_MATCH (Bit 8) */ + #define R_ETHSW_GARITH7_SEL_MATCH_Msk (0xf00UL) /*!< SEL_MATCH (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_GARITH7_SEL_ARITH0_Pos (12UL) /*!< SEL_ARITH0 (Bit 12) */ + #define R_ETHSW_GARITH7_SEL_ARITH0_Msk (0x1000UL) /*!< SEL_ARITH0 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH7_SEL_ARITH1_Pos (13UL) /*!< SEL_ARITH1 (Bit 13) */ + #define R_ETHSW_GARITH7_SEL_ARITH1_Msk (0x2000UL) /*!< SEL_ARITH1 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH7_SEL_ARITH2_Pos (14UL) /*!< SEL_ARITH2 (Bit 14) */ + #define R_ETHSW_GARITH7_SEL_ARITH2_Msk (0x4000UL) /*!< SEL_ARITH2 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH7_OP_Pos (16UL) /*!< OP (Bit 16) */ + #define R_ETHSW_GARITH7_OP_Msk (0x10000UL) /*!< OP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH7_RESULT_INV_Pos (17UL) /*!< RESULT_INV (Bit 17) */ + #define R_ETHSW_GARITH7_RESULT_INV_Msk (0x20000UL) /*!< RESULT_INV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_GARITH7_SNP_MD_Pos (20UL) /*!< SNP_MD (Bit 20) */ + #define R_ETHSW_GARITH7_SNP_MD_Msk (0x300000UL) /*!< SNP_MD (Bitfield-Mask: 0x03) */ +/* ===================================================== VLAN_PRIORITY ===================================================== */ + #define R_ETHSW_VLAN_PRIORITY_PRIORITY0_Pos (0UL) /*!< PRIORITY0 (Bit 0) */ + #define R_ETHSW_VLAN_PRIORITY_PRIORITY0_Msk (0x7UL) /*!< PRIORITY0 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_VLAN_PRIORITY_PRIORITY1_Pos (3UL) /*!< PRIORITY1 (Bit 3) */ + #define R_ETHSW_VLAN_PRIORITY_PRIORITY1_Msk (0x38UL) /*!< PRIORITY1 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_VLAN_PRIORITY_PRIORITY2_Pos (6UL) /*!< PRIORITY2 (Bit 6) */ + #define R_ETHSW_VLAN_PRIORITY_PRIORITY2_Msk (0x1c0UL) /*!< PRIORITY2 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_VLAN_PRIORITY_PRIORITY3_Pos (9UL) /*!< PRIORITY3 (Bit 9) */ + #define R_ETHSW_VLAN_PRIORITY_PRIORITY3_Msk (0xe00UL) /*!< PRIORITY3 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_VLAN_PRIORITY_PRIORITY4_Pos (12UL) /*!< PRIORITY4 (Bit 12) */ + #define R_ETHSW_VLAN_PRIORITY_PRIORITY4_Msk (0x7000UL) /*!< PRIORITY4 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_VLAN_PRIORITY_PRIORITY5_Pos (15UL) /*!< PRIORITY5 (Bit 15) */ + #define R_ETHSW_VLAN_PRIORITY_PRIORITY5_Msk (0x38000UL) /*!< PRIORITY5 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_VLAN_PRIORITY_PRIORITY6_Pos (18UL) /*!< PRIORITY6 (Bit 18) */ + #define R_ETHSW_VLAN_PRIORITY_PRIORITY6_Msk (0x1c0000UL) /*!< PRIORITY6 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_VLAN_PRIORITY_PRIORITY7_Pos (21UL) /*!< PRIORITY7 (Bit 21) */ + #define R_ETHSW_VLAN_PRIORITY_PRIORITY7_Msk (0xe00000UL) /*!< PRIORITY7 (Bitfield-Mask: 0x07) */ +/* ====================================================== IP_PRIORITY ====================================================== */ + #define R_ETHSW_IP_PRIORITY_ADDRESS_Pos (0UL) /*!< ADDRESS (Bit 0) */ + #define R_ETHSW_IP_PRIORITY_ADDRESS_Msk (0xffUL) /*!< ADDRESS (Bitfield-Mask: 0xff) */ + #define R_ETHSW_IP_PRIORITY_IPV6SELECT_Pos (8UL) /*!< IPV6SELECT (Bit 8) */ + #define R_ETHSW_IP_PRIORITY_IPV6SELECT_Msk (0x100UL) /*!< IPV6SELECT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_IP_PRIORITY_PRIORITY_Pos (9UL) /*!< PRIORITY (Bit 9) */ + #define R_ETHSW_IP_PRIORITY_PRIORITY_Msk (0xe00UL) /*!< PRIORITY (Bitfield-Mask: 0x07) */ + #define R_ETHSW_IP_PRIORITY_READ_Pos (31UL) /*!< READ (Bit 31) */ + #define R_ETHSW_IP_PRIORITY_READ_Msk (0x80000000UL) /*!< READ (Bitfield-Mask: 0x01) */ +/* ===================================================== PRIORITY_CFG ====================================================== */ + #define R_ETHSW_PRIORITY_CFG_VLANEN_Pos (0UL) /*!< VLANEN (Bit 0) */ + #define R_ETHSW_PRIORITY_CFG_VLANEN_Msk (0x1UL) /*!< VLANEN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRIORITY_CFG_IPEN_Pos (1UL) /*!< IPEN (Bit 1) */ + #define R_ETHSW_PRIORITY_CFG_IPEN_Msk (0x2UL) /*!< IPEN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRIORITY_CFG_MACEN_Pos (2UL) /*!< MACEN (Bit 2) */ + #define R_ETHSW_PRIORITY_CFG_MACEN_Msk (0x4UL) /*!< MACEN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRIORITY_CFG_TYPE_EN_Pos (3UL) /*!< TYPE_EN (Bit 3) */ + #define R_ETHSW_PRIORITY_CFG_TYPE_EN_Msk (0x8UL) /*!< TYPE_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRIORITY_CFG_DEFAULTPRI_Pos (4UL) /*!< DEFAULTPRI (Bit 4) */ + #define R_ETHSW_PRIORITY_CFG_DEFAULTPRI_Msk (0x70UL) /*!< DEFAULTPRI (Bitfield-Mask: 0x07) */ + #define R_ETHSW_PRIORITY_CFG_PCP_REMAP_DIS_Pos (7UL) /*!< PCP_REMAP_DIS (Bit 7) */ + #define R_ETHSW_PRIORITY_CFG_PCP_REMAP_DIS_Msk (0x80UL) /*!< PCP_REMAP_DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRIORITY_CFG_PCP_REMAP_Pos (8UL) /*!< PCP_REMAP (Bit 8) */ + #define R_ETHSW_PRIORITY_CFG_PCP_REMAP_Msk (0xffffff00UL) /*!< PCP_REMAP (Bitfield-Mask: 0xffffff) */ +/* ==================================================== PRIORITY_TYPE1 ===================================================== */ + #define R_ETHSW_PRIORITY_TYPE1_TYPEVAL_Pos (0UL) /*!< TYPEVAL (Bit 0) */ + #define R_ETHSW_PRIORITY_TYPE1_TYPEVAL_Msk (0xffffUL) /*!< TYPEVAL (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_PRIORITY_TYPE1_VALID_Pos (16UL) /*!< VALID (Bit 16) */ + #define R_ETHSW_PRIORITY_TYPE1_VALID_Msk (0x10000UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRIORITY_TYPE1_PRIORITY_Pos (17UL) /*!< PRIORITY (Bit 17) */ + #define R_ETHSW_PRIORITY_TYPE1_PRIORITY_Msk (0xe0000UL) /*!< PRIORITY (Bitfield-Mask: 0x07) */ +/* ==================================================== PRIORITY_TYPE2 ===================================================== */ + #define R_ETHSW_PRIORITY_TYPE2_TYPEVAL_Pos (0UL) /*!< TYPEVAL (Bit 0) */ + #define R_ETHSW_PRIORITY_TYPE2_TYPEVAL_Msk (0xffffUL) /*!< TYPEVAL (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_PRIORITY_TYPE2_VALID_Pos (16UL) /*!< VALID (Bit 16) */ + #define R_ETHSW_PRIORITY_TYPE2_VALID_Msk (0x10000UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRIORITY_TYPE2_PRIORITY_Pos (17UL) /*!< PRIORITY (Bit 17) */ + #define R_ETHSW_PRIORITY_TYPE2_PRIORITY_Msk (0xe0000UL) /*!< PRIORITY (Bitfield-Mask: 0x07) */ +/* ====================================================== SRCFLT_ENA ======================================================= */ + #define R_ETHSW_SRCFLT_ENA_SRCENA_Pos (0UL) /*!< SRCENA (Bit 0) */ + #define R_ETHSW_SRCFLT_ENA_SRCENA_Msk (0x7UL) /*!< SRCENA (Bitfield-Mask: 0x07) */ + #define R_ETHSW_SRCFLT_ENA_DSTENA_Pos (16UL) /*!< DSTENA (Bit 16) */ + #define R_ETHSW_SRCFLT_ENA_DSTENA_Msk (0xf0000UL) /*!< DSTENA (Bitfield-Mask: 0x0f) */ +/* ==================================================== SRCFLT_CONTROL ===================================================== */ + #define R_ETHSW_SRCFLT_CONTROL_MGMT_FWD_Pos (0UL) /*!< MGMT_FWD (Bit 0) */ + #define R_ETHSW_SRCFLT_CONTROL_MGMT_FWD_Msk (0x1UL) /*!< MGMT_FWD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_SRCFLT_CONTROL_WATCHDOG_ENA_Pos (1UL) /*!< WATCHDOG_ENA (Bit 1) */ + #define R_ETHSW_SRCFLT_CONTROL_WATCHDOG_ENA_Msk (0x2UL) /*!< WATCHDOG_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_SRCFLT_CONTROL_WATCHDOG_TIME_Pos (16UL) /*!< WATCHDOG_TIME (Bit 16) */ + #define R_ETHSW_SRCFLT_CONTROL_WATCHDOG_TIME_Msk (0xffff0000UL) /*!< WATCHDOG_TIME (Bitfield-Mask: 0xffff) */ +/* =================================================== SRCFLT_MACADDR_LO =================================================== */ + #define R_ETHSW_SRCFLT_MACADDR_LO_SRCFLT_MACADDR_Pos (0UL) /*!< SRCFLT_MACADDR (Bit 0) */ + #define R_ETHSW_SRCFLT_MACADDR_LO_SRCFLT_MACADDR_Msk (0xffffffffUL) /*!< SRCFLT_MACADDR (Bitfield-Mask: 0xffffffff) */ +/* =================================================== SRCFLT_MACADDR_HI =================================================== */ + #define R_ETHSW_SRCFLT_MACADDR_HI_SRCFLT_MACADDR_Pos (0UL) /*!< SRCFLT_MACADDR (Bit 0) */ + #define R_ETHSW_SRCFLT_MACADDR_HI_SRCFLT_MACADDR_Msk (0xffffUL) /*!< SRCFLT_MACADDR (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_SRCFLT_MACADDR_HI_MASK_Pos (16UL) /*!< MASK (Bit 16) */ + #define R_ETHSW_SRCFLT_MACADDR_HI_MASK_Msk (0xffff0000UL) /*!< MASK (Bitfield-Mask: 0xffff) */ +/* ==================================================== PHY_FILTER_CFG ===================================================== */ + #define R_ETHSW_PHY_FILTER_CFG_FILTER_DURATION_Pos (0UL) /*!< FILTER_DURATION (Bit 0) */ + #define R_ETHSW_PHY_FILTER_CFG_FILTER_DURATION_Msk (0x1ffUL) /*!< FILTER_DURATION (Bitfield-Mask: 0x1ff) */ + #define R_ETHSW_PHY_FILTER_CFG_FLT_EN_Pos (16UL) /*!< FLT_EN (Bit 16) */ + #define R_ETHSW_PHY_FILTER_CFG_FLT_EN_Msk (0x70000UL) /*!< FLT_EN (Bitfield-Mask: 0x07) */ +/* ==================================================== SYSTEM_TAGINFO ===================================================== */ + #define R_ETHSW_SYSTEM_TAGINFO_SYSVLANINFO_Pos (0UL) /*!< SYSVLANINFO (Bit 0) */ + #define R_ETHSW_SYSTEM_TAGINFO_SYSVLANINFO_Msk (0xffffUL) /*!< SYSVLANINFO (Bitfield-Mask: 0xffff) */ +/* ======================================================= AUTH_PORT ======================================================= */ + #define R_ETHSW_AUTH_PORT_AUTH_Pos (0UL) /*!< AUTH (Bit 0) */ + #define R_ETHSW_AUTH_PORT_AUTH_Msk (0x1UL) /*!< AUTH (Bitfield-Mask: 0x01) */ + #define R_ETHSW_AUTH_PORT_CTRL_BOTH_Pos (1UL) /*!< CTRL_BOTH (Bit 1) */ + #define R_ETHSW_AUTH_PORT_CTRL_BOTH_Msk (0x2UL) /*!< CTRL_BOTH (Bitfield-Mask: 0x01) */ + #define R_ETHSW_AUTH_PORT_EAPOL_EN_Pos (2UL) /*!< EAPOL_EN (Bit 2) */ + #define R_ETHSW_AUTH_PORT_EAPOL_EN_Msk (0x4UL) /*!< EAPOL_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_AUTH_PORT_GUEST_EN_Pos (3UL) /*!< GUEST_EN (Bit 3) */ + #define R_ETHSW_AUTH_PORT_GUEST_EN_Msk (0x8UL) /*!< GUEST_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_AUTH_PORT_BPDU_EN_Pos (4UL) /*!< BPDU_EN (Bit 4) */ + #define R_ETHSW_AUTH_PORT_BPDU_EN_Msk (0x10UL) /*!< BPDU_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_AUTH_PORT_EAPOL_UC_EN_Pos (5UL) /*!< EAPOL_UC_EN (Bit 5) */ + #define R_ETHSW_AUTH_PORT_EAPOL_UC_EN_Msk (0x20UL) /*!< EAPOL_UC_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_AUTH_PORT_ACHG_UNAUTH_Pos (11UL) /*!< ACHG_UNAUTH (Bit 11) */ + #define R_ETHSW_AUTH_PORT_ACHG_UNAUTH_Msk (0x800UL) /*!< ACHG_UNAUTH (Bitfield-Mask: 0x01) */ + #define R_ETHSW_AUTH_PORT_EAPOL_PNUM_Pos (12UL) /*!< EAPOL_PNUM (Bit 12) */ + #define R_ETHSW_AUTH_PORT_EAPOL_PNUM_Msk (0xf000UL) /*!< EAPOL_PNUM (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_AUTH_PORT_GUEST_MASK_Pos (16UL) /*!< GUEST_MASK (Bit 16) */ + #define R_ETHSW_AUTH_PORT_GUEST_MASK_Msk (0xf0000UL) /*!< GUEST_MASK (Bitfield-Mask: 0x0f) */ +/* ==================================================== VLAN_RES_TABLE ===================================================== */ + #define R_ETHSW_VLAN_RES_TABLE_PORTMASK_Pos (0UL) /*!< PORTMASK (Bit 0) */ + #define R_ETHSW_VLAN_RES_TABLE_PORTMASK_Msk (0xfUL) /*!< PORTMASK (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_VLAN_RES_TABLE_VLANID_Pos (4UL) /*!< VLANID (Bit 4) */ + #define R_ETHSW_VLAN_RES_TABLE_VLANID_Msk (0xfff0UL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_VLAN_RES_TABLE_RD_TAGMSK_Pos (28UL) /*!< RD_TAGMSK (Bit 28) */ + #define R_ETHSW_VLAN_RES_TABLE_RD_TAGMSK_Msk (0x10000000UL) /*!< RD_TAGMSK (Bitfield-Mask: 0x01) */ + #define R_ETHSW_VLAN_RES_TABLE_WT_TAGMSK_Pos (29UL) /*!< WT_TAGMSK (Bit 29) */ + #define R_ETHSW_VLAN_RES_TABLE_WT_TAGMSK_Msk (0x20000000UL) /*!< WT_TAGMSK (Bitfield-Mask: 0x01) */ + #define R_ETHSW_VLAN_RES_TABLE_WT_PRTMSK_Pos (30UL) /*!< WT_PRTMSK (Bit 30) */ + #define R_ETHSW_VLAN_RES_TABLE_WT_PRTMSK_Msk (0x40000000UL) /*!< WT_PRTMSK (Bitfield-Mask: 0x01) */ +/* ====================================================== TOTAL_DISC ======================================================= */ + #define R_ETHSW_TOTAL_DISC_TOTAL_DISC_Pos (0UL) /*!< TOTAL_DISC (Bit 0) */ + #define R_ETHSW_TOTAL_DISC_TOTAL_DISC_Msk (0xffffffffUL) /*!< TOTAL_DISC (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== TOTAL_BYT_DISC ===================================================== */ + #define R_ETHSW_TOTAL_BYT_DISC_TOTAL_BYT_DISC_Pos (0UL) /*!< TOTAL_BYT_DISC (Bit 0) */ + #define R_ETHSW_TOTAL_BYT_DISC_TOTAL_BYT_DISC_Msk (0xffffffffUL) /*!< TOTAL_BYT_DISC (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= TOTAL_FRM ======================================================= */ + #define R_ETHSW_TOTAL_FRM_TOTAL_FRM_Pos (0UL) /*!< TOTAL_FRM (Bit 0) */ + #define R_ETHSW_TOTAL_FRM_TOTAL_FRM_Msk (0xffffffffUL) /*!< TOTAL_FRM (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== TOTAL_BYT_FRM ===================================================== */ + #define R_ETHSW_TOTAL_BYT_FRM_TOTAL_BYT_FRM_Pos (0UL) /*!< TOTAL_BYT_FRM (Bit 0) */ + #define R_ETHSW_TOTAL_BYT_FRM_TOTAL_BYT_FRM_Msk (0xffffffffUL) /*!< TOTAL_BYT_FRM (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== IALK_CONTROL ====================================================== */ + #define R_ETHSW_IALK_CONTROL_IA_LKUP_ENA_Pos (0UL) /*!< IA_LKUP_ENA (Bit 0) */ + #define R_ETHSW_IALK_CONTROL_IA_LKUP_ENA_Msk (0xfUL) /*!< IA_LKUP_ENA (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_IALK_CONTROL_CT_ENA_Pos (16UL) /*!< CT_ENA (Bit 16) */ + #define R_ETHSW_IALK_CONTROL_CT_ENA_Msk (0xf0000UL) /*!< CT_ENA (Bitfield-Mask: 0x0f) */ +/* ======================================================= IALK_OUI ======================================================== */ + #define R_ETHSW_IALK_OUI_IALK_OUI_Pos (0UL) /*!< IALK_OUI (Bit 0) */ + #define R_ETHSW_IALK_OUI_IALK_OUI_Msk (0xffffffUL) /*!< IALK_OUI (Bitfield-Mask: 0xffffff) */ +/* ====================================================== IALK_ID_MIN ====================================================== */ + #define R_ETHSW_IALK_ID_MIN_IALK_ID_MIN_Pos (0UL) /*!< IALK_ID_MIN (Bit 0) */ + #define R_ETHSW_IALK_ID_MIN_IALK_ID_MIN_Msk (0xffffffUL) /*!< IALK_ID_MIN (Bitfield-Mask: 0xffffff) */ +/* ====================================================== IALK_ID_MAX ====================================================== */ + #define R_ETHSW_IALK_ID_MAX_IALK_ID_MAX_Pos (0UL) /*!< IALK_ID_MAX (Bit 0) */ + #define R_ETHSW_IALK_ID_MAX_IALK_ID_MAX_Msk (0xffffffUL) /*!< IALK_ID_MAX (Bitfield-Mask: 0xffffff) */ +/* ====================================================== IALK_ID_SUB ====================================================== */ + #define R_ETHSW_IALK_ID_SUB_IALK_ID_SUB_Pos (0UL) /*!< IALK_ID_SUB (Bit 0) */ + #define R_ETHSW_IALK_ID_SUB_IALK_ID_SUB_Msk (0xffffffUL) /*!< IALK_ID_SUB (Bitfield-Mask: 0xffffff) */ +/* ==================================================== IALK_ID_CONFIG ===================================================== */ + #define R_ETHSW_IALK_ID_CONFIG_INVLD_ID_FLOOD_Pos (0UL) /*!< INVLD_ID_FLOOD (Bit 0) */ + #define R_ETHSW_IALK_ID_CONFIG_INVLD_ID_FLOOD_Msk (0x1UL) /*!< INVLD_ID_FLOOD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_IALK_ID_CONFIG_INVLD_ID_LRN_ENA_Pos (1UL) /*!< INVLD_ID_LRN_ENA (Bit 1) */ + #define R_ETHSW_IALK_ID_CONFIG_INVLD_ID_LRN_ENA_Msk (0x2UL) /*!< INVLD_ID_LRN_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_IALK_ID_CONFIG_INVLD_ID_PRIO_Pos (4UL) /*!< INVLD_ID_PRIO (Bit 4) */ + #define R_ETHSW_IALK_ID_CONFIG_INVLD_ID_PRIO_Msk (0x70UL) /*!< INVLD_ID_PRIO (Bitfield-Mask: 0x07) */ + #define R_ETHSW_IALK_ID_CONFIG_INVLD_ID_PRIO_VLD_Pos (7UL) /*!< INVLD_ID_PRIO_VLD (Bit 7) */ + #define R_ETHSW_IALK_ID_CONFIG_INVLD_ID_PRIO_VLD_Msk (0x80UL) /*!< INVLD_ID_PRIO_VLD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_IALK_ID_CONFIG_INVLD_ID_FLOOD_MASK_Pos (16UL) /*!< INVLD_ID_FLOOD_MASK (Bit 16) */ + #define R_ETHSW_IALK_ID_CONFIG_INVLD_ID_FLOOD_MASK_Msk (0xf0000UL) /*!< INVLD_ID_FLOOD_MASK (Bitfield-Mask: 0x0f) */ +/* =================================================== IALK_VLAN_CONFIG ==================================================== */ + #define R_ETHSW_IALK_VLAN_CONFIG_UNKWN_VLAN_FLOOD_Pos (0UL) /*!< UNKWN_VLAN_FLOOD (Bit 0) */ + #define R_ETHSW_IALK_VLAN_CONFIG_UNKWN_VLAN_FLOOD_Msk (0x1UL) /*!< UNKWN_VLAN_FLOOD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_IALK_VLAN_CONFIG_UNKWN_VLAN_LRN_ENA_Pos (1UL) /*!< UNKWN_VLAN_LRN_ENA (Bit 1) */ + #define R_ETHSW_IALK_VLAN_CONFIG_UNKWN_VLAN_LRN_ENA_Msk (0x2UL) /*!< UNKWN_VLAN_LRN_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_IALK_VLAN_CONFIG_UNKWN_VLAN_PRIO_Pos (4UL) /*!< UNKWN_VLAN_PRIO (Bit 4) */ + #define R_ETHSW_IALK_VLAN_CONFIG_UNKWN_VLAN_PRIO_Msk (0x70UL) /*!< UNKWN_VLAN_PRIO (Bitfield-Mask: 0x07) */ + #define R_ETHSW_IALK_VLAN_CONFIG_UNKWN_VLAN_PRIO_VLD_Pos (7UL) /*!< UNKWN_VLAN_PRIO_VLD (Bit 7) */ + #define R_ETHSW_IALK_VLAN_CONFIG_UNKWN_VLAN_PRIO_VLD_Msk (0x80UL) /*!< UNKWN_VLAN_PRIO_VLD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_IALK_VLAN_CONFIG_VLANS_ENABLED_Pos (8UL) /*!< VLANS_ENABLED (Bit 8) */ + #define R_ETHSW_IALK_VLAN_CONFIG_VLANS_ENABLED_Msk (0x700UL) /*!< VLANS_ENABLED (Bitfield-Mask: 0x07) */ + #define R_ETHSW_IALK_VLAN_CONFIG_UNKWN_VLAN_FLOOD_MASK_Pos (16UL) /*!< UNKWN_VLAN_FLOOD_MASK (Bit 16) */ + #define R_ETHSW_IALK_VLAN_CONFIG_UNKWN_VLAN_FLOOD_MASK_Msk (0xf0000UL) /*!< UNKWN_VLAN_FLOOD_MASK (Bitfield-Mask: 0x0f) */ +/* ===================================================== IALK_TBL_ADDR ===================================================== */ + #define R_ETHSW_IALK_TBL_ADDR_ADDR_Pos (0UL) /*!< ADDR (Bit 0) */ + #define R_ETHSW_IALK_TBL_ADDR_ADDR_Msk (0x1fffUL) /*!< ADDR (Bitfield-Mask: 0x1fff) */ + #define R_ETHSW_IALK_TBL_ADDR_AINC_Pos (28UL) /*!< AINC (Bit 28) */ + #define R_ETHSW_IALK_TBL_ADDR_AINC_Msk (0xf0000000UL) /*!< AINC (Bitfield-Mask: 0x0f) */ +/* ===================================================== IALK_TBL_DATA ===================================================== */ + #define R_ETHSW_IALK_TBL_DATA_VALID_Pos (0UL) /*!< VALID (Bit 0) */ + #define R_ETHSW_IALK_TBL_DATA_VALID_Msk (0x1UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_ETHSW_IALK_TBL_DATA_FWD_MASK_Pos (1UL) /*!< FWD_MASK (Bit 1) */ + #define R_ETHSW_IALK_TBL_DATA_FWD_MASK_Msk (0x1eUL) /*!< FWD_MASK (Bitfield-Mask: 0x0f) */ +/* ====================================================== IALK_VLANID ====================================================== */ + #define R_ETHSW_IALK_VLANID_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_IALK_VLANID_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_IALK_VLANID_VLANID_ENA_Pos (12UL) /*!< VLANID_ENA (Bit 12) */ + #define R_ETHSW_IALK_VLANID_VLANID_ENA_Msk (0x1000UL) /*!< VLANID_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_IALK_VLANID_VLANID_LRN_ENA_Pos (13UL) /*!< VLANID_LRN_ENA (Bit 13) */ + #define R_ETHSW_IALK_VLANID_VLANID_LRN_ENA_Msk (0x2000UL) /*!< VLANID_LRN_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_IALK_VLANID_VLANID_FLOOD_MASK_Pos (16UL) /*!< VLANID_FLOOD_MASK (Bit 16) */ + #define R_ETHSW_IALK_VLANID_VLANID_FLOOD_MASK_Msk (0xf0000UL) /*!< VLANID_FLOOD_MASK (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_IALK_VLANID_VLANID_PRIO_Pos (28UL) /*!< VLANID_PRIO (Bit 28) */ + #define R_ETHSW_IALK_VLANID_VLANID_PRIO_Msk (0x70000000UL) /*!< VLANID_PRIO (Bitfield-Mask: 0x07) */ + #define R_ETHSW_IALK_VLANID_VLANID_PRIO_VLD_Pos (31UL) /*!< VLANID_PRIO_VLD (Bit 31) */ + #define R_ETHSW_IALK_VLANID_VLANID_PRIO_VLD_Msk (0x80000000UL) /*!< VLANID_PRIO_VLD (Bitfield-Mask: 0x01) */ +/* ===================================================== IMC_QLEVEL_P ====================================================== */ + #define R_ETHSW_IMC_QLEVEL_P_QUEUE0_Pos (0UL) /*!< QUEUE0 (Bit 0) */ + #define R_ETHSW_IMC_QLEVEL_P_QUEUE0_Msk (0xfUL) /*!< QUEUE0 (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_IMC_QLEVEL_P_QUEUE1_Pos (4UL) /*!< QUEUE1 (Bit 4) */ + #define R_ETHSW_IMC_QLEVEL_P_QUEUE1_Msk (0xf0UL) /*!< QUEUE1 (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_IMC_QLEVEL_P_QUEUE2_Pos (8UL) /*!< QUEUE2 (Bit 8) */ + #define R_ETHSW_IMC_QLEVEL_P_QUEUE2_Msk (0xf00UL) /*!< QUEUE2 (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_IMC_QLEVEL_P_QUEUE3_Pos (12UL) /*!< QUEUE3 (Bit 12) */ + #define R_ETHSW_IMC_QLEVEL_P_QUEUE3_Msk (0xf000UL) /*!< QUEUE3 (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_IMC_QLEVEL_P_QUEUE4_Pos (16UL) /*!< QUEUE4 (Bit 16) */ + #define R_ETHSW_IMC_QLEVEL_P_QUEUE4_Msk (0xf0000UL) /*!< QUEUE4 (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_IMC_QLEVEL_P_QUEUE5_Pos (20UL) /*!< QUEUE5 (Bit 20) */ + #define R_ETHSW_IMC_QLEVEL_P_QUEUE5_Msk (0xf00000UL) /*!< QUEUE5 (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_IMC_QLEVEL_P_QUEUE6_Pos (24UL) /*!< QUEUE6 (Bit 24) */ + #define R_ETHSW_IMC_QLEVEL_P_QUEUE6_Msk (0xf000000UL) /*!< QUEUE6 (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_IMC_QLEVEL_P_QUEUE7_Pos (28UL) /*!< QUEUE7 (Bit 28) */ + #define R_ETHSW_IMC_QLEVEL_P_QUEUE7_Msk (0xf0000000UL) /*!< QUEUE7 (Bitfield-Mask: 0x0f) */ +/* ======================================================== LK_CTRL ======================================================== */ + #define R_ETHSW_LK_CTRL_LKUP_EN_Pos (0UL) /*!< LKUP_EN (Bit 0) */ + #define R_ETHSW_LK_CTRL_LKUP_EN_Msk (0x1UL) /*!< LKUP_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_LK_CTRL_LEARN_EN_Pos (1UL) /*!< LEARN_EN (Bit 1) */ + #define R_ETHSW_LK_CTRL_LEARN_EN_Msk (0x2UL) /*!< LEARN_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_LK_CTRL_AGING_EN_Pos (2UL) /*!< AGING_EN (Bit 2) */ + #define R_ETHSW_LK_CTRL_AGING_EN_Msk (0x4UL) /*!< AGING_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_LK_CTRL_ALW_MGRT_Pos (3UL) /*!< ALW_MGRT (Bit 3) */ + #define R_ETHSW_LK_CTRL_ALW_MGRT_Msk (0x8UL) /*!< ALW_MGRT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_LK_CTRL_DISC_UNK_DEST_Pos (4UL) /*!< DISC_UNK_DEST (Bit 4) */ + #define R_ETHSW_LK_CTRL_DISC_UNK_DEST_Msk (0x10UL) /*!< DISC_UNK_DEST (Bitfield-Mask: 0x01) */ + #define R_ETHSW_LK_CTRL_CLRTBL_Pos (6UL) /*!< CLRTBL (Bit 6) */ + #define R_ETHSW_LK_CTRL_CLRTBL_Msk (0x40UL) /*!< CLRTBL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_LK_CTRL_IND_VLAN_Pos (7UL) /*!< IND_VLAN (Bit 7) */ + #define R_ETHSW_LK_CTRL_IND_VLAN_Msk (0x80UL) /*!< IND_VLAN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_LK_CTRL_DISC_UNK_SRC_Pos (16UL) /*!< DISC_UNK_SRC (Bit 16) */ + #define R_ETHSW_LK_CTRL_DISC_UNK_SRC_Msk (0xf0000UL) /*!< DISC_UNK_SRC (Bitfield-Mask: 0x0f) */ +/* ======================================================= LK_STATUS ======================================================= */ + #define R_ETHSW_LK_STATUS_AGEADDR_Pos (0UL) /*!< AGEADDR (Bit 0) */ + #define R_ETHSW_LK_STATUS_AGEADDR_Msk (0xffffUL) /*!< AGEADDR (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_LK_STATUS_OVRF_Pos (16UL) /*!< OVRF (Bit 16) */ + #define R_ETHSW_LK_STATUS_OVRF_Msk (0x3fff0000UL) /*!< OVRF (Bitfield-Mask: 0x3fff) */ + #define R_ETHSW_LK_STATUS_LRNEVNT_Pos (31UL) /*!< LRNEVNT (Bit 31) */ + #define R_ETHSW_LK_STATUS_LRNEVNT_Msk (0x80000000UL) /*!< LRNEVNT (Bitfield-Mask: 0x01) */ +/* ===================================================== LK_ADDR_CTRL ====================================================== */ + #define R_ETHSW_LK_ADDR_CTRL_ADDR_MSK_Pos (0UL) /*!< ADDR_MSK (Bit 0) */ + #define R_ETHSW_LK_ADDR_CTRL_ADDR_MSK_Msk (0xfffUL) /*!< ADDR_MSK (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_LK_ADDR_CTRL_CLR_DYNAMIC_Pos (22UL) /*!< CLR_DYNAMIC (Bit 22) */ + #define R_ETHSW_LK_ADDR_CTRL_CLR_DYNAMIC_Msk (0x400000UL) /*!< CLR_DYNAMIC (Bitfield-Mask: 0x01) */ + #define R_ETHSW_LK_ADDR_CTRL_CLR_STATIC_Pos (23UL) /*!< CLR_STATIC (Bit 23) */ + #define R_ETHSW_LK_ADDR_CTRL_CLR_STATIC_Msk (0x800000UL) /*!< CLR_STATIC (Bitfield-Mask: 0x01) */ + #define R_ETHSW_LK_ADDR_CTRL_GETLASTNEW_Pos (24UL) /*!< GETLASTNEW (Bit 24) */ + #define R_ETHSW_LK_ADDR_CTRL_GETLASTNEW_Msk (0x1000000UL) /*!< GETLASTNEW (Bitfield-Mask: 0x01) */ + #define R_ETHSW_LK_ADDR_CTRL_WRITE_Pos (25UL) /*!< WRITE (Bit 25) */ + #define R_ETHSW_LK_ADDR_CTRL_WRITE_Msk (0x2000000UL) /*!< WRITE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_LK_ADDR_CTRL_READ_Pos (26UL) /*!< READ (Bit 26) */ + #define R_ETHSW_LK_ADDR_CTRL_READ_Msk (0x4000000UL) /*!< READ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_LK_ADDR_CTRL_WAIT_COMP_Pos (27UL) /*!< WAIT_COMP (Bit 27) */ + #define R_ETHSW_LK_ADDR_CTRL_WAIT_COMP_Msk (0x8000000UL) /*!< WAIT_COMP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_LK_ADDR_CTRL_LOOKUP_Pos (28UL) /*!< LOOKUP (Bit 28) */ + #define R_ETHSW_LK_ADDR_CTRL_LOOKUP_Msk (0x10000000UL) /*!< LOOKUP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_LK_ADDR_CTRL_CLEAR_Pos (29UL) /*!< CLEAR (Bit 29) */ + #define R_ETHSW_LK_ADDR_CTRL_CLEAR_Msk (0x20000000UL) /*!< CLEAR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_LK_ADDR_CTRL_DEL_PORT_Pos (30UL) /*!< DEL_PORT (Bit 30) */ + #define R_ETHSW_LK_ADDR_CTRL_DEL_PORT_Msk (0x40000000UL) /*!< DEL_PORT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_LK_ADDR_CTRL_BUSY_Pos (31UL) /*!< BUSY (Bit 31) */ + #define R_ETHSW_LK_ADDR_CTRL_BUSY_Msk (0x80000000UL) /*!< BUSY (Bitfield-Mask: 0x01) */ +/* ====================================================== LK_DATA_LO ======================================================= */ + #define R_ETHSW_LK_DATA_LO_MEMDATA_Pos (0UL) /*!< MEMDATA (Bit 0) */ + #define R_ETHSW_LK_DATA_LO_MEMDATA_Msk (0xffffffffUL) /*!< MEMDATA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== LK_DATA_HI ======================================================= */ + #define R_ETHSW_LK_DATA_HI_MEMDATA_Pos (0UL) /*!< MEMDATA (Bit 0) */ + #define R_ETHSW_LK_DATA_HI_MEMDATA_Msk (0x1ffffffUL) /*!< MEMDATA (Bitfield-Mask: 0x1ffffff) */ +/* ====================================================== LK_DATA_HI2 ====================================================== */ + #define R_ETHSW_LK_DATA_HI2_MEMDATA_Pos (8UL) /*!< MEMDATA (Bit 8) */ + #define R_ETHSW_LK_DATA_HI2_MEMDATA_Msk (0xfff00UL) /*!< MEMDATA (Bitfield-Mask: 0xfff) */ +/* ===================================================== LK_LEARNCOUNT ===================================================== */ + #define R_ETHSW_LK_LEARNCOUNT_LEARNCOUNT_Pos (0UL) /*!< LEARNCOUNT (Bit 0) */ + #define R_ETHSW_LK_LEARNCOUNT_LEARNCOUNT_Msk (0x1fffUL) /*!< LEARNCOUNT (Bitfield-Mask: 0x1fff) */ + #define R_ETHSW_LK_LEARNCOUNT_WRITE_MD_Pos (30UL) /*!< WRITE_MD (Bit 30) */ + #define R_ETHSW_LK_LEARNCOUNT_WRITE_MD_Msk (0xc0000000UL) /*!< WRITE_MD (Bitfield-Mask: 0x03) */ +/* ====================================================== LK_AGETIME ======================================================= */ + #define R_ETHSW_LK_AGETIME_AGETIME_Pos (0UL) /*!< AGETIME (Bit 0) */ + #define R_ETHSW_LK_AGETIME_AGETIME_Msk (0xffffffUL) /*!< AGETIME (Bitfield-Mask: 0xffffff) */ +/* ==================================================== MGMT_TAG_CONFIG ==================================================== */ + #define R_ETHSW_MGMT_TAG_CONFIG_ENABLE_Pos (0UL) /*!< ENABLE (Bit 0) */ + #define R_ETHSW_MGMT_TAG_CONFIG_ENABLE_Msk (0x1UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MGMT_TAG_CONFIG_AL_FRAMES_Pos (1UL) /*!< AL_FRAMES (Bit 1) */ + #define R_ETHSW_MGMT_TAG_CONFIG_AL_FRAMES_Msk (0x2UL) /*!< AL_FRAMES (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MGMT_TAG_CONFIG_TYPE1_EN_Pos (4UL) /*!< TYPE1_EN (Bit 4) */ + #define R_ETHSW_MGMT_TAG_CONFIG_TYPE1_EN_Msk (0x10UL) /*!< TYPE1_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MGMT_TAG_CONFIG_TYPE2_EN_Pos (5UL) /*!< TYPE2_EN (Bit 5) */ + #define R_ETHSW_MGMT_TAG_CONFIG_TYPE2_EN_Msk (0x20UL) /*!< TYPE2_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MGMT_TAG_CONFIG_TAGFIELD_Pos (16UL) /*!< TAGFIELD (Bit 16) */ + #define R_ETHSW_MGMT_TAG_CONFIG_TAGFIELD_Msk (0xffff0000UL) /*!< TAGFIELD (Bitfield-Mask: 0xffff) */ +/* ====================================================== TSM_CONFIG ======================================================= */ + #define R_ETHSW_TSM_CONFIG_IRQ_EN_Pos (0UL) /*!< IRQ_EN (Bit 0) */ + #define R_ETHSW_TSM_CONFIG_IRQ_EN_Msk (0x1UL) /*!< IRQ_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TSM_CONFIG_IRQ_TEST_Pos (1UL) /*!< IRQ_TEST (Bit 1) */ + #define R_ETHSW_TSM_CONFIG_IRQ_TEST_Msk (0x2UL) /*!< IRQ_TEST (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TSM_CONFIG_IRQ_TSFIFO_OVR_Pos (2UL) /*!< IRQ_TSFIFO_OVR (Bit 2) */ + #define R_ETHSW_TSM_CONFIG_IRQ_TSFIFO_OVR_Msk (0x4UL) /*!< IRQ_TSFIFO_OVR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TSM_CONFIG_IRQ_EVT_OFFSET_Pos (4UL) /*!< IRQ_EVT_OFFSET (Bit 4) */ + #define R_ETHSW_TSM_CONFIG_IRQ_EVT_OFFSET_Msk (0x30UL) /*!< IRQ_EVT_OFFSET (Bitfield-Mask: 0x03) */ + #define R_ETHSW_TSM_CONFIG_IRQ_EVT_PERIOD_Pos (8UL) /*!< IRQ_EVT_PERIOD (Bit 8) */ + #define R_ETHSW_TSM_CONFIG_IRQ_EVT_PERIOD_Msk (0x300UL) /*!< IRQ_EVT_PERIOD (Bitfield-Mask: 0x03) */ + #define R_ETHSW_TSM_CONFIG_IRQ_ATIME_OVER_Pos (12UL) /*!< IRQ_ATIME_OVER (Bit 12) */ + #define R_ETHSW_TSM_CONFIG_IRQ_ATIME_OVER_Msk (0x3000UL) /*!< IRQ_ATIME_OVER (Bitfield-Mask: 0x03) */ + #define R_ETHSW_TSM_CONFIG_IRQ_TX_EN_Pos (16UL) /*!< IRQ_TX_EN (Bit 16) */ + #define R_ETHSW_TSM_CONFIG_IRQ_TX_EN_Msk (0xf0000UL) /*!< IRQ_TX_EN (Bitfield-Mask: 0x0f) */ +/* =================================================== TSM_IRQ_STAT_ACK ==================================================== */ + #define R_ETHSW_TSM_IRQ_STAT_ACK_IRQ_STAT_Pos (0UL) /*!< IRQ_STAT (Bit 0) */ + #define R_ETHSW_TSM_IRQ_STAT_ACK_IRQ_STAT_Msk (0x1UL) /*!< IRQ_STAT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TSM_IRQ_STAT_ACK_IRQ_TEST_Pos (1UL) /*!< IRQ_TEST (Bit 1) */ + #define R_ETHSW_TSM_IRQ_STAT_ACK_IRQ_TEST_Msk (0x2UL) /*!< IRQ_TEST (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TSM_IRQ_STAT_ACK_IRQ_TSFIFO_OVR_Pos (2UL) /*!< IRQ_TSFIFO_OVR (Bit 2) */ + #define R_ETHSW_TSM_IRQ_STAT_ACK_IRQ_TSFIFO_OVR_Msk (0x4UL) /*!< IRQ_TSFIFO_OVR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TSM_IRQ_STAT_ACK_IRQ_EVT_OFFSET_Pos (4UL) /*!< IRQ_EVT_OFFSET (Bit 4) */ + #define R_ETHSW_TSM_IRQ_STAT_ACK_IRQ_EVT_OFFSET_Msk (0x30UL) /*!< IRQ_EVT_OFFSET (Bitfield-Mask: 0x03) */ + #define R_ETHSW_TSM_IRQ_STAT_ACK_IRQ_EVT_PERIOD_Pos (8UL) /*!< IRQ_EVT_PERIOD (Bit 8) */ + #define R_ETHSW_TSM_IRQ_STAT_ACK_IRQ_EVT_PERIOD_Msk (0x300UL) /*!< IRQ_EVT_PERIOD (Bitfield-Mask: 0x03) */ + #define R_ETHSW_TSM_IRQ_STAT_ACK_IRQ_ATIME_OVER_Pos (12UL) /*!< IRQ_ATIME_OVER (Bit 12) */ + #define R_ETHSW_TSM_IRQ_STAT_ACK_IRQ_ATIME_OVER_Msk (0x3000UL) /*!< IRQ_ATIME_OVER (Bitfield-Mask: 0x03) */ + #define R_ETHSW_TSM_IRQ_STAT_ACK_IRQ_TX_Pos (16UL) /*!< IRQ_TX (Bit 16) */ + #define R_ETHSW_TSM_IRQ_STAT_ACK_IRQ_TX_Msk (0xf0000UL) /*!< IRQ_TX (Bitfield-Mask: 0x0f) */ +/* ====================================================== PTP_DOMAIN ======================================================= */ + #define R_ETHSW_PTP_DOMAIN_DOMAIN0_Pos (0UL) /*!< DOMAIN0 (Bit 0) */ + #define R_ETHSW_PTP_DOMAIN_DOMAIN0_Msk (0xffUL) /*!< DOMAIN0 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTP_DOMAIN_DOMAIN1_Pos (8UL) /*!< DOMAIN1 (Bit 8) */ + #define R_ETHSW_PTP_DOMAIN_DOMAIN1_Msk (0xff00UL) /*!< DOMAIN1 (Bitfield-Mask: 0xff) */ +/* ==================================================== PEERDELAY_P0_T0 ==================================================== */ + #define R_ETHSW_PEERDELAY_P0_T0_PEERDELAY_Pos (0UL) /*!< PEERDELAY (Bit 0) */ + #define R_ETHSW_PEERDELAY_P0_T0_PEERDELAY_Msk (0x3fffffffUL) /*!< PEERDELAY (Bitfield-Mask: 0x3fffffff) */ +/* ==================================================== PEERDELAY_P1_T0 ==================================================== */ + #define R_ETHSW_PEERDELAY_P1_T0_PEERDELAY_Pos (0UL) /*!< PEERDELAY (Bit 0) */ + #define R_ETHSW_PEERDELAY_P1_T0_PEERDELAY_Msk (0x3fffffffUL) /*!< PEERDELAY (Bitfield-Mask: 0x3fffffff) */ +/* ==================================================== PEERDELAY_P2_T0 ==================================================== */ + #define R_ETHSW_PEERDELAY_P2_T0_PEERDELAY_Pos (0UL) /*!< PEERDELAY (Bit 0) */ + #define R_ETHSW_PEERDELAY_P2_T0_PEERDELAY_Msk (0x3fffffffUL) /*!< PEERDELAY (Bitfield-Mask: 0x3fffffff) */ +/* ==================================================== PEERDELAY_P3_T0 ==================================================== */ + #define R_ETHSW_PEERDELAY_P3_T0_PEERDELAY_Pos (0UL) /*!< PEERDELAY (Bit 0) */ + #define R_ETHSW_PEERDELAY_P3_T0_PEERDELAY_Msk (0x3fffffffUL) /*!< PEERDELAY (Bitfield-Mask: 0x3fffffff) */ +/* ==================================================== PEERDELAY_P0_T1 ==================================================== */ + #define R_ETHSW_PEERDELAY_P0_T1_PEERDELAY_Pos (0UL) /*!< PEERDELAY (Bit 0) */ + #define R_ETHSW_PEERDELAY_P0_T1_PEERDELAY_Msk (0x3fffffffUL) /*!< PEERDELAY (Bitfield-Mask: 0x3fffffff) */ +/* ==================================================== PEERDELAY_P1_T1 ==================================================== */ + #define R_ETHSW_PEERDELAY_P1_T1_PEERDELAY_Pos (0UL) /*!< PEERDELAY (Bit 0) */ + #define R_ETHSW_PEERDELAY_P1_T1_PEERDELAY_Msk (0x3fffffffUL) /*!< PEERDELAY (Bitfield-Mask: 0x3fffffff) */ +/* ==================================================== PEERDELAY_P2_T1 ==================================================== */ + #define R_ETHSW_PEERDELAY_P2_T1_PEERDELAY_Pos (0UL) /*!< PEERDELAY (Bit 0) */ + #define R_ETHSW_PEERDELAY_P2_T1_PEERDELAY_Msk (0x3fffffffUL) /*!< PEERDELAY (Bitfield-Mask: 0x3fffffff) */ +/* ==================================================== PEERDELAY_P3_T1 ==================================================== */ + #define R_ETHSW_PEERDELAY_P3_T1_PEERDELAY_Pos (0UL) /*!< PEERDELAY (Bit 0) */ + #define R_ETHSW_PEERDELAY_P3_T1_PEERDELAY_Msk (0x3fffffffUL) /*!< PEERDELAY (Bitfield-Mask: 0x3fffffff) */ +/* ==================================================== TS_FIFO_STATUS ===================================================== */ + #define R_ETHSW_TS_FIFO_STATUS_FF_VALID_Pos (0UL) /*!< FF_VALID (Bit 0) */ + #define R_ETHSW_TS_FIFO_STATUS_FF_VALID_Msk (0xfUL) /*!< FF_VALID (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_TS_FIFO_STATUS_FF_OVR_Pos (16UL) /*!< FF_OVR (Bit 16) */ + #define R_ETHSW_TS_FIFO_STATUS_FF_OVR_Msk (0xf0000UL) /*!< FF_OVR (Bitfield-Mask: 0x0f) */ +/* =================================================== TS_FIFO_READ_CTRL =================================================== */ + #define R_ETHSW_TS_FIFO_READ_CTRL_PORT_NUM_Pos (0UL) /*!< PORT_NUM (Bit 0) */ + #define R_ETHSW_TS_FIFO_READ_CTRL_PORT_NUM_Msk (0x3UL) /*!< PORT_NUM (Bitfield-Mask: 0x03) */ + #define R_ETHSW_TS_FIFO_READ_CTRL_TS_VALID_Pos (4UL) /*!< TS_VALID (Bit 4) */ + #define R_ETHSW_TS_FIFO_READ_CTRL_TS_VALID_Msk (0x10UL) /*!< TS_VALID (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TS_FIFO_READ_CTRL_TS_SEL_Pos (6UL) /*!< TS_SEL (Bit 6) */ + #define R_ETHSW_TS_FIFO_READ_CTRL_TS_SEL_Msk (0x40UL) /*!< TS_SEL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TS_FIFO_READ_CTRL_TS_ID_Pos (8UL) /*!< TS_ID (Bit 8) */ + #define R_ETHSW_TS_FIFO_READ_CTRL_TS_ID_Msk (0x7f00UL) /*!< TS_ID (Bitfield-Mask: 0x7f) */ +/* ================================================ TS_FIFO_READ_TIMESTAMP ================================================= */ + #define R_ETHSW_TS_FIFO_READ_TIMESTAMP_TIMESTAMP_Pos (0UL) /*!< TIMESTAMP (Bit 0) */ + #define R_ETHSW_TS_FIFO_READ_TIMESTAMP_TIMESTAMP_Msk (0xffffffffUL) /*!< TIMESTAMP (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== INT_CONFIG ======================================================= */ + #define R_ETHSW_INT_CONFIG_IRQ_EN_Pos (0UL) /*!< IRQ_EN (Bit 0) */ + #define R_ETHSW_INT_CONFIG_IRQ_EN_Msk (0x1UL) /*!< IRQ_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_CONFIG_MDIO1_Pos (1UL) /*!< MDIO1 (Bit 1) */ + #define R_ETHSW_INT_CONFIG_MDIO1_Msk (0x2UL) /*!< MDIO1 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_CONFIG_LK_NEW_SRC_Pos (3UL) /*!< LK_NEW_SRC (Bit 3) */ + #define R_ETHSW_INT_CONFIG_LK_NEW_SRC_Msk (0x8UL) /*!< LK_NEW_SRC (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_CONFIG_IRQ_TEST_Pos (4UL) /*!< IRQ_TEST (Bit 4) */ + #define R_ETHSW_INT_CONFIG_IRQ_TEST_Msk (0x10UL) /*!< IRQ_TEST (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_CONFIG_DLR_INT_Pos (5UL) /*!< DLR_INT (Bit 5) */ + #define R_ETHSW_INT_CONFIG_DLR_INT_Msk (0x20UL) /*!< DLR_INT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_CONFIG_PRP_INT_Pos (6UL) /*!< PRP_INT (Bit 6) */ + #define R_ETHSW_INT_CONFIG_PRP_INT_Msk (0x40UL) /*!< PRP_INT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_CONFIG_HUB_INT_Pos (7UL) /*!< HUB_INT (Bit 7) */ + #define R_ETHSW_INT_CONFIG_HUB_INT_Msk (0x80UL) /*!< HUB_INT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_CONFIG_IRQ_LINK_Pos (8UL) /*!< IRQ_LINK (Bit 8) */ + #define R_ETHSW_INT_CONFIG_IRQ_LINK_Msk (0x700UL) /*!< IRQ_LINK (Bitfield-Mask: 0x07) */ + #define R_ETHSW_INT_CONFIG_IRQ_MAC_EEE_Pos (16UL) /*!< IRQ_MAC_EEE (Bit 16) */ + #define R_ETHSW_INT_CONFIG_IRQ_MAC_EEE_Msk (0x70000UL) /*!< IRQ_MAC_EEE (Bitfield-Mask: 0x07) */ + #define R_ETHSW_INT_CONFIG_EFP_INT_Pos (27UL) /*!< EFP_INT (Bit 27) */ + #define R_ETHSW_INT_CONFIG_EFP_INT_Msk (0x8000000UL) /*!< EFP_INT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_CONFIG_SRCFLT_WD_INT_Pos (28UL) /*!< SRCFLT_WD_INT (Bit 28) */ + #define R_ETHSW_INT_CONFIG_SRCFLT_WD_INT_Msk (0x10000000UL) /*!< SRCFLT_WD_INT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_CONFIG_TSM_INT_Pos (29UL) /*!< TSM_INT (Bit 29) */ + #define R_ETHSW_INT_CONFIG_TSM_INT_Msk (0x20000000UL) /*!< TSM_INT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_CONFIG_TDMA_INT_Pos (30UL) /*!< TDMA_INT (Bit 30) */ + #define R_ETHSW_INT_CONFIG_TDMA_INT_Msk (0x40000000UL) /*!< TDMA_INT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_CONFIG_PATTERN_INT_Pos (31UL) /*!< PATTERN_INT (Bit 31) */ + #define R_ETHSW_INT_CONFIG_PATTERN_INT_Msk (0x80000000UL) /*!< PATTERN_INT (Bitfield-Mask: 0x01) */ +/* ===================================================== INT_STAT_ACK ====================================================== */ + #define R_ETHSW_INT_STAT_ACK_IRQ_PEND_Pos (0UL) /*!< IRQ_PEND (Bit 0) */ + #define R_ETHSW_INT_STAT_ACK_IRQ_PEND_Msk (0x1UL) /*!< IRQ_PEND (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_STAT_ACK_MDIO1_Pos (1UL) /*!< MDIO1 (Bit 1) */ + #define R_ETHSW_INT_STAT_ACK_MDIO1_Msk (0x2UL) /*!< MDIO1 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_STAT_ACK_LK_NEW_SRC_Pos (3UL) /*!< LK_NEW_SRC (Bit 3) */ + #define R_ETHSW_INT_STAT_ACK_LK_NEW_SRC_Msk (0x8UL) /*!< LK_NEW_SRC (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_STAT_ACK_IRQ_TEST_Pos (4UL) /*!< IRQ_TEST (Bit 4) */ + #define R_ETHSW_INT_STAT_ACK_IRQ_TEST_Msk (0x10UL) /*!< IRQ_TEST (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_STAT_ACK_DLR_INT_Pos (5UL) /*!< DLR_INT (Bit 5) */ + #define R_ETHSW_INT_STAT_ACK_DLR_INT_Msk (0x20UL) /*!< DLR_INT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_STAT_ACK_PRP_INT_Pos (6UL) /*!< PRP_INT (Bit 6) */ + #define R_ETHSW_INT_STAT_ACK_PRP_INT_Msk (0x40UL) /*!< PRP_INT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_STAT_ACK_HUB_INT_Pos (7UL) /*!< HUB_INT (Bit 7) */ + #define R_ETHSW_INT_STAT_ACK_HUB_INT_Msk (0x80UL) /*!< HUB_INT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_STAT_ACK_IRQ_LINK_Pos (8UL) /*!< IRQ_LINK (Bit 8) */ + #define R_ETHSW_INT_STAT_ACK_IRQ_LINK_Msk (0x700UL) /*!< IRQ_LINK (Bitfield-Mask: 0x07) */ + #define R_ETHSW_INT_STAT_ACK_IRQ_MAC_EEE_Pos (16UL) /*!< IRQ_MAC_EEE (Bit 16) */ + #define R_ETHSW_INT_STAT_ACK_IRQ_MAC_EEE_Msk (0x70000UL) /*!< IRQ_MAC_EEE (Bitfield-Mask: 0x07) */ + #define R_ETHSW_INT_STAT_ACK_EFP_INT_Pos (27UL) /*!< EFP_INT (Bit 27) */ + #define R_ETHSW_INT_STAT_ACK_EFP_INT_Msk (0x8000000UL) /*!< EFP_INT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_STAT_ACK_SRCFLT_WD_INT_Pos (28UL) /*!< SRCFLT_WD_INT (Bit 28) */ + #define R_ETHSW_INT_STAT_ACK_SRCFLT_WD_INT_Msk (0x10000000UL) /*!< SRCFLT_WD_INT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_STAT_ACK_TSM_INT_Pos (29UL) /*!< TSM_INT (Bit 29) */ + #define R_ETHSW_INT_STAT_ACK_TSM_INT_Msk (0x20000000UL) /*!< TSM_INT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_STAT_ACK_TDMA_INT_Pos (30UL) /*!< TDMA_INT (Bit 30) */ + #define R_ETHSW_INT_STAT_ACK_TDMA_INT_Msk (0x40000000UL) /*!< TDMA_INT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_INT_STAT_ACK_PATTERN_INT_Pos (31UL) /*!< PATTERN_INT (Bit 31) */ + #define R_ETHSW_INT_STAT_ACK_PATTERN_INT_Msk (0x80000000UL) /*!< PATTERN_INT (Bitfield-Mask: 0x01) */ +/* ====================================================== ATIME_CTRL0 ====================================================== */ + #define R_ETHSW_ATIME_CTRL0_ENABLE_Pos (0UL) /*!< ENABLE (Bit 0) */ + #define R_ETHSW_ATIME_CTRL0_ENABLE_Msk (0x1UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_ATIME_CTRL0_ONE_SHOT_Pos (1UL) /*!< ONE_SHOT (Bit 1) */ + #define R_ETHSW_ATIME_CTRL0_ONE_SHOT_Msk (0x2UL) /*!< ONE_SHOT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_ATIME_CTRL0_EVT_OFFSET_ENA_Pos (2UL) /*!< EVT_OFFSET_ENA (Bit 2) */ + #define R_ETHSW_ATIME_CTRL0_EVT_OFFSET_ENA_Msk (0x4UL) /*!< EVT_OFFSET_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_ATIME_CTRL0_EVT_PERIOD_ENA_Pos (4UL) /*!< EVT_PERIOD_ENA (Bit 4) */ + #define R_ETHSW_ATIME_CTRL0_EVT_PERIOD_ENA_Msk (0x10UL) /*!< EVT_PERIOD_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_ATIME_CTRL0_EVT_PERIOD_RST_Pos (5UL) /*!< EVT_PERIOD_RST (Bit 5) */ + #define R_ETHSW_ATIME_CTRL0_EVT_PERIOD_RST_Msk (0x20UL) /*!< EVT_PERIOD_RST (Bitfield-Mask: 0x01) */ + #define R_ETHSW_ATIME_CTRL0_RESTART_Pos (9UL) /*!< RESTART (Bit 9) */ + #define R_ETHSW_ATIME_CTRL0_RESTART_Msk (0x200UL) /*!< RESTART (Bitfield-Mask: 0x01) */ + #define R_ETHSW_ATIME_CTRL0_CAPTURE_Pos (11UL) /*!< CAPTURE (Bit 11) */ + #define R_ETHSW_ATIME_CTRL0_CAPTURE_Msk (0x800UL) /*!< CAPTURE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_ATIME_CTRL0_CAPTURE_ALL_Pos (12UL) /*!< CAPTURE_ALL (Bit 12) */ + #define R_ETHSW_ATIME_CTRL0_CAPTURE_ALL_Msk (0x1000UL) /*!< CAPTURE_ALL (Bitfield-Mask: 0x01) */ +/* ====================================================== ATIME_CTRL1 ====================================================== */ + #define R_ETHSW_ATIME_CTRL1_ENABLE_Pos (0UL) /*!< ENABLE (Bit 0) */ + #define R_ETHSW_ATIME_CTRL1_ENABLE_Msk (0x1UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_ATIME_CTRL1_ONE_SHOT_Pos (1UL) /*!< ONE_SHOT (Bit 1) */ + #define R_ETHSW_ATIME_CTRL1_ONE_SHOT_Msk (0x2UL) /*!< ONE_SHOT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_ATIME_CTRL1_EVT_OFFSET_ENA_Pos (2UL) /*!< EVT_OFFSET_ENA (Bit 2) */ + #define R_ETHSW_ATIME_CTRL1_EVT_OFFSET_ENA_Msk (0x4UL) /*!< EVT_OFFSET_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_ATIME_CTRL1_EVT_PERIOD_ENA_Pos (4UL) /*!< EVT_PERIOD_ENA (Bit 4) */ + #define R_ETHSW_ATIME_CTRL1_EVT_PERIOD_ENA_Msk (0x10UL) /*!< EVT_PERIOD_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_ATIME_CTRL1_EVT_PERIOD_RST_Pos (5UL) /*!< EVT_PERIOD_RST (Bit 5) */ + #define R_ETHSW_ATIME_CTRL1_EVT_PERIOD_RST_Msk (0x20UL) /*!< EVT_PERIOD_RST (Bitfield-Mask: 0x01) */ + #define R_ETHSW_ATIME_CTRL1_RESTART_Pos (9UL) /*!< RESTART (Bit 9) */ + #define R_ETHSW_ATIME_CTRL1_RESTART_Msk (0x200UL) /*!< RESTART (Bitfield-Mask: 0x01) */ + #define R_ETHSW_ATIME_CTRL1_CAPTURE_Pos (11UL) /*!< CAPTURE (Bit 11) */ + #define R_ETHSW_ATIME_CTRL1_CAPTURE_Msk (0x800UL) /*!< CAPTURE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_ATIME_CTRL1_CAPTURE_ALL_Pos (12UL) /*!< CAPTURE_ALL (Bit 12) */ + #define R_ETHSW_ATIME_CTRL1_CAPTURE_ALL_Msk (0x1000UL) /*!< CAPTURE_ALL (Bitfield-Mask: 0x01) */ +/* ======================================================== ATIME0 ========================================================= */ + #define R_ETHSW_ATIME0_TIMER_VAL_Pos (0UL) /*!< TIMER_VAL (Bit 0) */ + #define R_ETHSW_ATIME0_TIMER_VAL_Msk (0xffffffffUL) /*!< TIMER_VAL (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== ATIME1 ========================================================= */ + #define R_ETHSW_ATIME1_TIMER_VAL_Pos (0UL) /*!< TIMER_VAL (Bit 0) */ + #define R_ETHSW_ATIME1_TIMER_VAL_Msk (0xffffffffUL) /*!< TIMER_VAL (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== ATIME_OFFSET0 ===================================================== */ + #define R_ETHSW_ATIME_OFFSET0_OFFSET_Pos (0UL) /*!< OFFSET (Bit 0) */ + #define R_ETHSW_ATIME_OFFSET0_OFFSET_Msk (0xffffffffUL) /*!< OFFSET (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== ATIME_OFFSET1 ===================================================== */ + #define R_ETHSW_ATIME_OFFSET1_OFFSET_Pos (0UL) /*!< OFFSET (Bit 0) */ + #define R_ETHSW_ATIME_OFFSET1_OFFSET_Msk (0xffffffffUL) /*!< OFFSET (Bitfield-Mask: 0xffffffff) */ +/* =================================================== ATIME_EVT_PERIOD0 =================================================== */ + #define R_ETHSW_ATIME_EVT_PERIOD0_PERIOD_Pos (0UL) /*!< PERIOD (Bit 0) */ + #define R_ETHSW_ATIME_EVT_PERIOD0_PERIOD_Msk (0xffffffffUL) /*!< PERIOD (Bitfield-Mask: 0xffffffff) */ +/* =================================================== ATIME_EVT_PERIOD1 =================================================== */ + #define R_ETHSW_ATIME_EVT_PERIOD1_PERIOD_Pos (0UL) /*!< PERIOD (Bit 0) */ + #define R_ETHSW_ATIME_EVT_PERIOD1_PERIOD_Msk (0xffffffffUL) /*!< PERIOD (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== ATIME_CORR0 ====================================================== */ + #define R_ETHSW_ATIME_CORR0_CORR_PERIOD_Pos (0UL) /*!< CORR_PERIOD (Bit 0) */ + #define R_ETHSW_ATIME_CORR0_CORR_PERIOD_Msk (0x7fffffffUL) /*!< CORR_PERIOD (Bitfield-Mask: 0x7fffffff) */ +/* ====================================================== ATIME_CORR1 ====================================================== */ + #define R_ETHSW_ATIME_CORR1_CORR_PERIOD_Pos (0UL) /*!< CORR_PERIOD (Bit 0) */ + #define R_ETHSW_ATIME_CORR1_CORR_PERIOD_Msk (0x7fffffffUL) /*!< CORR_PERIOD (Bitfield-Mask: 0x7fffffff) */ +/* ====================================================== ATIME_INC0 ======================================================= */ + #define R_ETHSW_ATIME_INC0_CLK_PERIOD_Pos (0UL) /*!< CLK_PERIOD (Bit 0) */ + #define R_ETHSW_ATIME_INC0_CLK_PERIOD_Msk (0x7fUL) /*!< CLK_PERIOD (Bitfield-Mask: 0x7f) */ + #define R_ETHSW_ATIME_INC0_CORR_INC_Pos (8UL) /*!< CORR_INC (Bit 8) */ + #define R_ETHSW_ATIME_INC0_CORR_INC_Msk (0x7f00UL) /*!< CORR_INC (Bitfield-Mask: 0x7f) */ + #define R_ETHSW_ATIME_INC0_OFFS_CORR_INC_Pos (16UL) /*!< OFFS_CORR_INC (Bit 16) */ + #define R_ETHSW_ATIME_INC0_OFFS_CORR_INC_Msk (0x7f0000UL) /*!< OFFS_CORR_INC (Bitfield-Mask: 0x7f) */ +/* ====================================================== ATIME_INC1 ======================================================= */ + #define R_ETHSW_ATIME_INC1_CLK_PERIOD_Pos (0UL) /*!< CLK_PERIOD (Bit 0) */ + #define R_ETHSW_ATIME_INC1_CLK_PERIOD_Msk (0x7fUL) /*!< CLK_PERIOD (Bitfield-Mask: 0x7f) */ + #define R_ETHSW_ATIME_INC1_CORR_INC_Pos (8UL) /*!< CORR_INC (Bit 8) */ + #define R_ETHSW_ATIME_INC1_CORR_INC_Msk (0x7f00UL) /*!< CORR_INC (Bitfield-Mask: 0x7f) */ + #define R_ETHSW_ATIME_INC1_OFFS_CORR_INC_Pos (16UL) /*!< OFFS_CORR_INC (Bit 16) */ + #define R_ETHSW_ATIME_INC1_OFFS_CORR_INC_Msk (0x7f0000UL) /*!< OFFS_CORR_INC (Bitfield-Mask: 0x7f) */ +/* ====================================================== ATIME_SEC0 ======================================================= */ + #define R_ETHSW_ATIME_SEC0_SEC_TIME_Pos (0UL) /*!< SEC_TIME (Bit 0) */ + #define R_ETHSW_ATIME_SEC0_SEC_TIME_Msk (0xffffffffUL) /*!< SEC_TIME (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== ATIME_SEC1 ======================================================= */ + #define R_ETHSW_ATIME_SEC1_SEC_TIME_Pos (0UL) /*!< SEC_TIME (Bit 0) */ + #define R_ETHSW_ATIME_SEC1_SEC_TIME_Msk (0xffffffffUL) /*!< SEC_TIME (Bitfield-Mask: 0xffffffff) */ +/* =================================================== ATIME_OFFS_CORR0 ==================================================== */ + #define R_ETHSW_ATIME_OFFS_CORR0_OFFS_CORR_CNT_Pos (0UL) /*!< OFFS_CORR_CNT (Bit 0) */ + #define R_ETHSW_ATIME_OFFS_CORR0_OFFS_CORR_CNT_Msk (0xffffffffUL) /*!< OFFS_CORR_CNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== ATIME_OFFS_CORR1 ==================================================== */ + #define R_ETHSW_ATIME_OFFS_CORR1_OFFS_CORR_CNT_Pos (0UL) /*!< OFFS_CORR_CNT (Bit 0) */ + #define R_ETHSW_ATIME_OFFS_CORR1_OFFS_CORR_CNT_Msk (0xffffffffUL) /*!< OFFS_CORR_CNT (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== MDIO_CFG_STATUS ==================================================== */ + #define R_ETHSW_MDIO_CFG_STATUS_BUSY_Pos (0UL) /*!< BUSY (Bit 0) */ + #define R_ETHSW_MDIO_CFG_STATUS_BUSY_Msk (0x1UL) /*!< BUSY (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MDIO_CFG_STATUS_READERR_Pos (1UL) /*!< READERR (Bit 1) */ + #define R_ETHSW_MDIO_CFG_STATUS_READERR_Msk (0x2UL) /*!< READERR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MDIO_CFG_STATUS_HOLD_Pos (2UL) /*!< HOLD (Bit 2) */ + #define R_ETHSW_MDIO_CFG_STATUS_HOLD_Msk (0x1cUL) /*!< HOLD (Bitfield-Mask: 0x07) */ + #define R_ETHSW_MDIO_CFG_STATUS_DISPREAM_Pos (5UL) /*!< DISPREAM (Bit 5) */ + #define R_ETHSW_MDIO_CFG_STATUS_DISPREAM_Msk (0x20UL) /*!< DISPREAM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MDIO_CFG_STATUS_CLKDIV_Pos (7UL) /*!< CLKDIV (Bit 7) */ + #define R_ETHSW_MDIO_CFG_STATUS_CLKDIV_Msk (0xff80UL) /*!< CLKDIV (Bitfield-Mask: 0x1ff) */ +/* ===================================================== MDIO_COMMAND ====================================================== */ + #define R_ETHSW_MDIO_COMMAND_REGADDR_Pos (0UL) /*!< REGADDR (Bit 0) */ + #define R_ETHSW_MDIO_COMMAND_REGADDR_Msk (0x1fUL) /*!< REGADDR (Bitfield-Mask: 0x1f) */ + #define R_ETHSW_MDIO_COMMAND_PHYADDR_Pos (5UL) /*!< PHYADDR (Bit 5) */ + #define R_ETHSW_MDIO_COMMAND_PHYADDR_Msk (0x3e0UL) /*!< PHYADDR (Bitfield-Mask: 0x1f) */ + #define R_ETHSW_MDIO_COMMAND_TRANINIT_Pos (15UL) /*!< TRANINIT (Bit 15) */ + #define R_ETHSW_MDIO_COMMAND_TRANINIT_Msk (0x8000UL) /*!< TRANINIT (Bitfield-Mask: 0x01) */ +/* ======================================================= MDIO_DATA ======================================================= */ + #define R_ETHSW_MDIO_DATA_MDIO_DATA_Pos (0UL) /*!< MDIO_DATA (Bit 0) */ + #define R_ETHSW_MDIO_DATA_MDIO_DATA_Msk (0xffffUL) /*!< MDIO_DATA (Bitfield-Mask: 0xffff) */ +/* ======================================================== REV_P0 ========================================================= */ + #define R_ETHSW_REV_P0_REV_Pos (0UL) /*!< REV (Bit 0) */ + #define R_ETHSW_REV_P0_REV_Msk (0xffffffffUL) /*!< REV (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== REV_P1 ========================================================= */ + #define R_ETHSW_REV_P1_REV_Pos (0UL) /*!< REV (Bit 0) */ + #define R_ETHSW_REV_P1_REV_Msk (0xffffffffUL) /*!< REV (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== REV_P2 ========================================================= */ + #define R_ETHSW_REV_P2_REV_Pos (0UL) /*!< REV (Bit 0) */ + #define R_ETHSW_REV_P2_REV_Msk (0xffffffffUL) /*!< REV (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== REV_P3 ========================================================= */ + #define R_ETHSW_REV_P3_REV_Pos (0UL) /*!< REV (Bit 0) */ + #define R_ETHSW_REV_P3_REV_Msk (0xffffffffUL) /*!< REV (Bitfield-Mask: 0xffffffff) */ +/* =================================================== COMMAND_CONFIG_P0 =================================================== */ + #define R_ETHSW_COMMAND_CONFIG_P0_TX_ENA_Pos (0UL) /*!< TX_ENA (Bit 0) */ + #define R_ETHSW_COMMAND_CONFIG_P0_TX_ENA_Msk (0x1UL) /*!< TX_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P0_RX_ENA_Pos (1UL) /*!< RX_ENA (Bit 1) */ + #define R_ETHSW_COMMAND_CONFIG_P0_RX_ENA_Msk (0x2UL) /*!< RX_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P0_TDMA_PREBUF_DIS_Pos (2UL) /*!< TDMA_PREBUF_DIS (Bit 2) */ + #define R_ETHSW_COMMAND_CONFIG_P0_TDMA_PREBUF_DIS_Msk (0x4UL) /*!< TDMA_PREBUF_DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P0_ETH_SPEED_Pos (3UL) /*!< ETH_SPEED (Bit 3) */ + #define R_ETHSW_COMMAND_CONFIG_P0_ETH_SPEED_Msk (0x8UL) /*!< ETH_SPEED (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P0_PROMIS_EN_Pos (4UL) /*!< PROMIS_EN (Bit 4) */ + #define R_ETHSW_COMMAND_CONFIG_P0_PROMIS_EN_Msk (0x10UL) /*!< PROMIS_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P0_PAD_EN_Pos (5UL) /*!< PAD_EN (Bit 5) */ + #define R_ETHSW_COMMAND_CONFIG_P0_PAD_EN_Msk (0x20UL) /*!< PAD_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P0_PAUSE_FWD_Pos (7UL) /*!< PAUSE_FWD (Bit 7) */ + #define R_ETHSW_COMMAND_CONFIG_P0_PAUSE_FWD_Msk (0x80UL) /*!< PAUSE_FWD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P0_PAUSE_IGNORE_Pos (8UL) /*!< PAUSE_IGNORE (Bit 8) */ + #define R_ETHSW_COMMAND_CONFIG_P0_PAUSE_IGNORE_Msk (0x100UL) /*!< PAUSE_IGNORE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P0_TX_ADDR_INS_Pos (9UL) /*!< TX_ADDR_INS (Bit 9) */ + #define R_ETHSW_COMMAND_CONFIG_P0_TX_ADDR_INS_Msk (0x200UL) /*!< TX_ADDR_INS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P0_HD_ENA_Pos (10UL) /*!< HD_ENA (Bit 10) */ + #define R_ETHSW_COMMAND_CONFIG_P0_HD_ENA_Msk (0x400UL) /*!< HD_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P0_TX_CRC_APPEND_Pos (11UL) /*!< TX_CRC_APPEND (Bit 11) */ + #define R_ETHSW_COMMAND_CONFIG_P0_TX_CRC_APPEND_Msk (0x800UL) /*!< TX_CRC_APPEND (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P0_SW_RESET_Pos (13UL) /*!< SW_RESET (Bit 13) */ + #define R_ETHSW_COMMAND_CONFIG_P0_SW_RESET_Msk (0x2000UL) /*!< SW_RESET (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P0_CNTL_FRM_ENA_Pos (23UL) /*!< CNTL_FRM_ENA (Bit 23) */ + #define R_ETHSW_COMMAND_CONFIG_P0_CNTL_FRM_ENA_Msk (0x800000UL) /*!< CNTL_FRM_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P0_NO_LGTH_CHK_Pos (24UL) /*!< NO_LGTH_CHK (Bit 24) */ + #define R_ETHSW_COMMAND_CONFIG_P0_NO_LGTH_CHK_Msk (0x1000000UL) /*!< NO_LGTH_CHK (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P0_ENA_10_Pos (25UL) /*!< ENA_10 (Bit 25) */ + #define R_ETHSW_COMMAND_CONFIG_P0_ENA_10_Msk (0x2000000UL) /*!< ENA_10 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P0_EFPI_SELECT_Pos (26UL) /*!< EFPI_SELECT (Bit 26) */ + #define R_ETHSW_COMMAND_CONFIG_P0_EFPI_SELECT_Msk (0x4000000UL) /*!< EFPI_SELECT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P0_TX_TRUNCATE_Pos (27UL) /*!< TX_TRUNCATE (Bit 27) */ + #define R_ETHSW_COMMAND_CONFIG_P0_TX_TRUNCATE_Msk (0x8000000UL) /*!< TX_TRUNCATE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P0_TIMER_SEL_Pos (30UL) /*!< TIMER_SEL (Bit 30) */ + #define R_ETHSW_COMMAND_CONFIG_P0_TIMER_SEL_Msk (0x40000000UL) /*!< TIMER_SEL (Bitfield-Mask: 0x01) */ +/* =================================================== COMMAND_CONFIG_P1 =================================================== */ + #define R_ETHSW_COMMAND_CONFIG_P1_TX_ENA_Pos (0UL) /*!< TX_ENA (Bit 0) */ + #define R_ETHSW_COMMAND_CONFIG_P1_TX_ENA_Msk (0x1UL) /*!< TX_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P1_RX_ENA_Pos (1UL) /*!< RX_ENA (Bit 1) */ + #define R_ETHSW_COMMAND_CONFIG_P1_RX_ENA_Msk (0x2UL) /*!< RX_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P1_TDMA_PREBUF_DIS_Pos (2UL) /*!< TDMA_PREBUF_DIS (Bit 2) */ + #define R_ETHSW_COMMAND_CONFIG_P1_TDMA_PREBUF_DIS_Msk (0x4UL) /*!< TDMA_PREBUF_DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P1_ETH_SPEED_Pos (3UL) /*!< ETH_SPEED (Bit 3) */ + #define R_ETHSW_COMMAND_CONFIG_P1_ETH_SPEED_Msk (0x8UL) /*!< ETH_SPEED (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P1_PROMIS_EN_Pos (4UL) /*!< PROMIS_EN (Bit 4) */ + #define R_ETHSW_COMMAND_CONFIG_P1_PROMIS_EN_Msk (0x10UL) /*!< PROMIS_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P1_PAD_EN_Pos (5UL) /*!< PAD_EN (Bit 5) */ + #define R_ETHSW_COMMAND_CONFIG_P1_PAD_EN_Msk (0x20UL) /*!< PAD_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P1_PAUSE_FWD_Pos (7UL) /*!< PAUSE_FWD (Bit 7) */ + #define R_ETHSW_COMMAND_CONFIG_P1_PAUSE_FWD_Msk (0x80UL) /*!< PAUSE_FWD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P1_PAUSE_IGNORE_Pos (8UL) /*!< PAUSE_IGNORE (Bit 8) */ + #define R_ETHSW_COMMAND_CONFIG_P1_PAUSE_IGNORE_Msk (0x100UL) /*!< PAUSE_IGNORE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P1_TX_ADDR_INS_Pos (9UL) /*!< TX_ADDR_INS (Bit 9) */ + #define R_ETHSW_COMMAND_CONFIG_P1_TX_ADDR_INS_Msk (0x200UL) /*!< TX_ADDR_INS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P1_HD_ENA_Pos (10UL) /*!< HD_ENA (Bit 10) */ + #define R_ETHSW_COMMAND_CONFIG_P1_HD_ENA_Msk (0x400UL) /*!< HD_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P1_TX_CRC_APPEND_Pos (11UL) /*!< TX_CRC_APPEND (Bit 11) */ + #define R_ETHSW_COMMAND_CONFIG_P1_TX_CRC_APPEND_Msk (0x800UL) /*!< TX_CRC_APPEND (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P1_SW_RESET_Pos (13UL) /*!< SW_RESET (Bit 13) */ + #define R_ETHSW_COMMAND_CONFIG_P1_SW_RESET_Msk (0x2000UL) /*!< SW_RESET (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P1_CNTL_FRM_ENA_Pos (23UL) /*!< CNTL_FRM_ENA (Bit 23) */ + #define R_ETHSW_COMMAND_CONFIG_P1_CNTL_FRM_ENA_Msk (0x800000UL) /*!< CNTL_FRM_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P1_NO_LGTH_CHK_Pos (24UL) /*!< NO_LGTH_CHK (Bit 24) */ + #define R_ETHSW_COMMAND_CONFIG_P1_NO_LGTH_CHK_Msk (0x1000000UL) /*!< NO_LGTH_CHK (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P1_ENA_10_Pos (25UL) /*!< ENA_10 (Bit 25) */ + #define R_ETHSW_COMMAND_CONFIG_P1_ENA_10_Msk (0x2000000UL) /*!< ENA_10 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P1_EFPI_SELECT_Pos (26UL) /*!< EFPI_SELECT (Bit 26) */ + #define R_ETHSW_COMMAND_CONFIG_P1_EFPI_SELECT_Msk (0x4000000UL) /*!< EFPI_SELECT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P1_TX_TRUNCATE_Pos (27UL) /*!< TX_TRUNCATE (Bit 27) */ + #define R_ETHSW_COMMAND_CONFIG_P1_TX_TRUNCATE_Msk (0x8000000UL) /*!< TX_TRUNCATE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P1_TIMER_SEL_Pos (30UL) /*!< TIMER_SEL (Bit 30) */ + #define R_ETHSW_COMMAND_CONFIG_P1_TIMER_SEL_Msk (0x40000000UL) /*!< TIMER_SEL (Bitfield-Mask: 0x01) */ +/* =================================================== COMMAND_CONFIG_P2 =================================================== */ + #define R_ETHSW_COMMAND_CONFIG_P2_TX_ENA_Pos (0UL) /*!< TX_ENA (Bit 0) */ + #define R_ETHSW_COMMAND_CONFIG_P2_TX_ENA_Msk (0x1UL) /*!< TX_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P2_RX_ENA_Pos (1UL) /*!< RX_ENA (Bit 1) */ + #define R_ETHSW_COMMAND_CONFIG_P2_RX_ENA_Msk (0x2UL) /*!< RX_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P2_TDMA_PREBUF_DIS_Pos (2UL) /*!< TDMA_PREBUF_DIS (Bit 2) */ + #define R_ETHSW_COMMAND_CONFIG_P2_TDMA_PREBUF_DIS_Msk (0x4UL) /*!< TDMA_PREBUF_DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P2_ETH_SPEED_Pos (3UL) /*!< ETH_SPEED (Bit 3) */ + #define R_ETHSW_COMMAND_CONFIG_P2_ETH_SPEED_Msk (0x8UL) /*!< ETH_SPEED (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P2_PROMIS_EN_Pos (4UL) /*!< PROMIS_EN (Bit 4) */ + #define R_ETHSW_COMMAND_CONFIG_P2_PROMIS_EN_Msk (0x10UL) /*!< PROMIS_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P2_PAD_EN_Pos (5UL) /*!< PAD_EN (Bit 5) */ + #define R_ETHSW_COMMAND_CONFIG_P2_PAD_EN_Msk (0x20UL) /*!< PAD_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P2_PAUSE_FWD_Pos (7UL) /*!< PAUSE_FWD (Bit 7) */ + #define R_ETHSW_COMMAND_CONFIG_P2_PAUSE_FWD_Msk (0x80UL) /*!< PAUSE_FWD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P2_PAUSE_IGNORE_Pos (8UL) /*!< PAUSE_IGNORE (Bit 8) */ + #define R_ETHSW_COMMAND_CONFIG_P2_PAUSE_IGNORE_Msk (0x100UL) /*!< PAUSE_IGNORE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P2_TX_ADDR_INS_Pos (9UL) /*!< TX_ADDR_INS (Bit 9) */ + #define R_ETHSW_COMMAND_CONFIG_P2_TX_ADDR_INS_Msk (0x200UL) /*!< TX_ADDR_INS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P2_HD_ENA_Pos (10UL) /*!< HD_ENA (Bit 10) */ + #define R_ETHSW_COMMAND_CONFIG_P2_HD_ENA_Msk (0x400UL) /*!< HD_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P2_TX_CRC_APPEND_Pos (11UL) /*!< TX_CRC_APPEND (Bit 11) */ + #define R_ETHSW_COMMAND_CONFIG_P2_TX_CRC_APPEND_Msk (0x800UL) /*!< TX_CRC_APPEND (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P2_SW_RESET_Pos (13UL) /*!< SW_RESET (Bit 13) */ + #define R_ETHSW_COMMAND_CONFIG_P2_SW_RESET_Msk (0x2000UL) /*!< SW_RESET (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P2_CNTL_FRM_ENA_Pos (23UL) /*!< CNTL_FRM_ENA (Bit 23) */ + #define R_ETHSW_COMMAND_CONFIG_P2_CNTL_FRM_ENA_Msk (0x800000UL) /*!< CNTL_FRM_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P2_NO_LGTH_CHK_Pos (24UL) /*!< NO_LGTH_CHK (Bit 24) */ + #define R_ETHSW_COMMAND_CONFIG_P2_NO_LGTH_CHK_Msk (0x1000000UL) /*!< NO_LGTH_CHK (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P2_ENA_10_Pos (25UL) /*!< ENA_10 (Bit 25) */ + #define R_ETHSW_COMMAND_CONFIG_P2_ENA_10_Msk (0x2000000UL) /*!< ENA_10 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P2_EFPI_SELECT_Pos (26UL) /*!< EFPI_SELECT (Bit 26) */ + #define R_ETHSW_COMMAND_CONFIG_P2_EFPI_SELECT_Msk (0x4000000UL) /*!< EFPI_SELECT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P2_TX_TRUNCATE_Pos (27UL) /*!< TX_TRUNCATE (Bit 27) */ + #define R_ETHSW_COMMAND_CONFIG_P2_TX_TRUNCATE_Msk (0x8000000UL) /*!< TX_TRUNCATE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P2_TIMER_SEL_Pos (30UL) /*!< TIMER_SEL (Bit 30) */ + #define R_ETHSW_COMMAND_CONFIG_P2_TIMER_SEL_Msk (0x40000000UL) /*!< TIMER_SEL (Bitfield-Mask: 0x01) */ +/* =================================================== COMMAND_CONFIG_P3 =================================================== */ + #define R_ETHSW_COMMAND_CONFIG_P3_TX_ENA_Pos (0UL) /*!< TX_ENA (Bit 0) */ + #define R_ETHSW_COMMAND_CONFIG_P3_TX_ENA_Msk (0x1UL) /*!< TX_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P3_RX_ENA_Pos (1UL) /*!< RX_ENA (Bit 1) */ + #define R_ETHSW_COMMAND_CONFIG_P3_RX_ENA_Msk (0x2UL) /*!< RX_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P3_TDMA_PREBUF_DIS_Pos (2UL) /*!< TDMA_PREBUF_DIS (Bit 2) */ + #define R_ETHSW_COMMAND_CONFIG_P3_TDMA_PREBUF_DIS_Msk (0x4UL) /*!< TDMA_PREBUF_DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P3_ETH_SPEED_Pos (3UL) /*!< ETH_SPEED (Bit 3) */ + #define R_ETHSW_COMMAND_CONFIG_P3_ETH_SPEED_Msk (0x8UL) /*!< ETH_SPEED (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P3_PROMIS_EN_Pos (4UL) /*!< PROMIS_EN (Bit 4) */ + #define R_ETHSW_COMMAND_CONFIG_P3_PROMIS_EN_Msk (0x10UL) /*!< PROMIS_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P3_PAD_EN_Pos (5UL) /*!< PAD_EN (Bit 5) */ + #define R_ETHSW_COMMAND_CONFIG_P3_PAD_EN_Msk (0x20UL) /*!< PAD_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P3_PAUSE_FWD_Pos (7UL) /*!< PAUSE_FWD (Bit 7) */ + #define R_ETHSW_COMMAND_CONFIG_P3_PAUSE_FWD_Msk (0x80UL) /*!< PAUSE_FWD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P3_PAUSE_IGNORE_Pos (8UL) /*!< PAUSE_IGNORE (Bit 8) */ + #define R_ETHSW_COMMAND_CONFIG_P3_PAUSE_IGNORE_Msk (0x100UL) /*!< PAUSE_IGNORE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P3_TX_ADDR_INS_Pos (9UL) /*!< TX_ADDR_INS (Bit 9) */ + #define R_ETHSW_COMMAND_CONFIG_P3_TX_ADDR_INS_Msk (0x200UL) /*!< TX_ADDR_INS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P3_HD_ENA_Pos (10UL) /*!< HD_ENA (Bit 10) */ + #define R_ETHSW_COMMAND_CONFIG_P3_HD_ENA_Msk (0x400UL) /*!< HD_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P3_TX_CRC_APPEND_Pos (11UL) /*!< TX_CRC_APPEND (Bit 11) */ + #define R_ETHSW_COMMAND_CONFIG_P3_TX_CRC_APPEND_Msk (0x800UL) /*!< TX_CRC_APPEND (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P3_SW_RESET_Pos (13UL) /*!< SW_RESET (Bit 13) */ + #define R_ETHSW_COMMAND_CONFIG_P3_SW_RESET_Msk (0x2000UL) /*!< SW_RESET (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P3_CNTL_FRM_ENA_Pos (23UL) /*!< CNTL_FRM_ENA (Bit 23) */ + #define R_ETHSW_COMMAND_CONFIG_P3_CNTL_FRM_ENA_Msk (0x800000UL) /*!< CNTL_FRM_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P3_NO_LGTH_CHK_Pos (24UL) /*!< NO_LGTH_CHK (Bit 24) */ + #define R_ETHSW_COMMAND_CONFIG_P3_NO_LGTH_CHK_Msk (0x1000000UL) /*!< NO_LGTH_CHK (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P3_ENA_10_Pos (25UL) /*!< ENA_10 (Bit 25) */ + #define R_ETHSW_COMMAND_CONFIG_P3_ENA_10_Msk (0x2000000UL) /*!< ENA_10 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P3_EFPI_SELECT_Pos (26UL) /*!< EFPI_SELECT (Bit 26) */ + #define R_ETHSW_COMMAND_CONFIG_P3_EFPI_SELECT_Msk (0x4000000UL) /*!< EFPI_SELECT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P3_TX_TRUNCATE_Pos (27UL) /*!< TX_TRUNCATE (Bit 27) */ + #define R_ETHSW_COMMAND_CONFIG_P3_TX_TRUNCATE_Msk (0x8000000UL) /*!< TX_TRUNCATE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_COMMAND_CONFIG_P3_TIMER_SEL_Pos (30UL) /*!< TIMER_SEL (Bit 30) */ + #define R_ETHSW_COMMAND_CONFIG_P3_TIMER_SEL_Msk (0x40000000UL) /*!< TIMER_SEL (Bitfield-Mask: 0x01) */ +/* ===================================================== MAC_ADDR_0_P0 ===================================================== */ + #define R_ETHSW_MAC_ADDR_0_P0_MAC_ADDR_Pos (0UL) /*!< MAC_ADDR (Bit 0) */ + #define R_ETHSW_MAC_ADDR_0_P0_MAC_ADDR_Msk (0xffffffffUL) /*!< MAC_ADDR (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== MAC_ADDR_0_P1 ===================================================== */ + #define R_ETHSW_MAC_ADDR_0_P1_MAC_ADDR_Pos (0UL) /*!< MAC_ADDR (Bit 0) */ + #define R_ETHSW_MAC_ADDR_0_P1_MAC_ADDR_Msk (0xffffffffUL) /*!< MAC_ADDR (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== MAC_ADDR_0_P2 ===================================================== */ + #define R_ETHSW_MAC_ADDR_0_P2_MAC_ADDR_Pos (0UL) /*!< MAC_ADDR (Bit 0) */ + #define R_ETHSW_MAC_ADDR_0_P2_MAC_ADDR_Msk (0xffffffffUL) /*!< MAC_ADDR (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== MAC_ADDR_1_P0 ===================================================== */ + #define R_ETHSW_MAC_ADDR_1_P0_MAC_ADDR_Pos (0UL) /*!< MAC_ADDR (Bit 0) */ + #define R_ETHSW_MAC_ADDR_1_P0_MAC_ADDR_Msk (0xffffUL) /*!< MAC_ADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== MAC_ADDR_1_P1 ===================================================== */ + #define R_ETHSW_MAC_ADDR_1_P1_MAC_ADDR_Pos (0UL) /*!< MAC_ADDR (Bit 0) */ + #define R_ETHSW_MAC_ADDR_1_P1_MAC_ADDR_Msk (0xffffUL) /*!< MAC_ADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== MAC_ADDR_1_P2 ===================================================== */ + #define R_ETHSW_MAC_ADDR_1_P2_MAC_ADDR_Pos (0UL) /*!< MAC_ADDR (Bit 0) */ + #define R_ETHSW_MAC_ADDR_1_P2_MAC_ADDR_Msk (0xffffUL) /*!< MAC_ADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== FRM_LENGTH_P0 ===================================================== */ + #define R_ETHSW_FRM_LENGTH_P0_FRM_LENGTH_Pos (0UL) /*!< FRM_LENGTH (Bit 0) */ + #define R_ETHSW_FRM_LENGTH_P0_FRM_LENGTH_Msk (0x3fffUL) /*!< FRM_LENGTH (Bitfield-Mask: 0x3fff) */ +/* ===================================================== FRM_LENGTH_P1 ===================================================== */ + #define R_ETHSW_FRM_LENGTH_P1_FRM_LENGTH_Pos (0UL) /*!< FRM_LENGTH (Bit 0) */ + #define R_ETHSW_FRM_LENGTH_P1_FRM_LENGTH_Msk (0x3fffUL) /*!< FRM_LENGTH (Bitfield-Mask: 0x3fff) */ +/* ===================================================== FRM_LENGTH_P2 ===================================================== */ + #define R_ETHSW_FRM_LENGTH_P2_FRM_LENGTH_Pos (0UL) /*!< FRM_LENGTH (Bit 0) */ + #define R_ETHSW_FRM_LENGTH_P2_FRM_LENGTH_Msk (0x3fffUL) /*!< FRM_LENGTH (Bitfield-Mask: 0x3fff) */ +/* ===================================================== FRM_LENGTH_P3 ===================================================== */ + #define R_ETHSW_FRM_LENGTH_P3_FRM_LENGTH_Pos (0UL) /*!< FRM_LENGTH (Bit 0) */ + #define R_ETHSW_FRM_LENGTH_P3_FRM_LENGTH_Msk (0x3fffUL) /*!< FRM_LENGTH (Bitfield-Mask: 0x3fff) */ +/* ==================================================== PAUSE_QUANT_P0 ===================================================== */ + #define R_ETHSW_PAUSE_QUANT_P0_PAUSE_QUANT_Pos (0UL) /*!< PAUSE_QUANT (Bit 0) */ + #define R_ETHSW_PAUSE_QUANT_P0_PAUSE_QUANT_Msk (0xffffUL) /*!< PAUSE_QUANT (Bitfield-Mask: 0xffff) */ +/* ==================================================== PAUSE_QUANT_P1 ===================================================== */ + #define R_ETHSW_PAUSE_QUANT_P1_PAUSE_QUANT_Pos (0UL) /*!< PAUSE_QUANT (Bit 0) */ + #define R_ETHSW_PAUSE_QUANT_P1_PAUSE_QUANT_Msk (0xffffUL) /*!< PAUSE_QUANT (Bitfield-Mask: 0xffff) */ +/* ==================================================== PAUSE_QUANT_P2 ===================================================== */ + #define R_ETHSW_PAUSE_QUANT_P2_PAUSE_QUANT_Pos (0UL) /*!< PAUSE_QUANT (Bit 0) */ + #define R_ETHSW_PAUSE_QUANT_P2_PAUSE_QUANT_Msk (0xffffUL) /*!< PAUSE_QUANT (Bitfield-Mask: 0xffff) */ +/* ==================================================== PAUSE_QUANT_P3 ===================================================== */ + #define R_ETHSW_PAUSE_QUANT_P3_PAUSE_QUANT_Pos (0UL) /*!< PAUSE_QUANT (Bit 0) */ + #define R_ETHSW_PAUSE_QUANT_P3_PAUSE_QUANT_Msk (0xffffUL) /*!< PAUSE_QUANT (Bitfield-Mask: 0xffff) */ +/* =================================================== MAC_LINK_QTRIG_P0 =================================================== */ + #define R_ETHSW_MAC_LINK_QTRIG_P0_PORT_MASK_Pos (0UL) /*!< PORT_MASK (Bit 0) */ + #define R_ETHSW_MAC_LINK_QTRIG_P0_PORT_MASK_Msk (0xfUL) /*!< PORT_MASK (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_MAC_LINK_QTRIG_P0_QUEUE_MASK_Pos (16UL) /*!< QUEUE_MASK (Bit 16) */ + #define R_ETHSW_MAC_LINK_QTRIG_P0_QUEUE_MASK_Msk (0xff0000UL) /*!< QUEUE_MASK (Bitfield-Mask: 0xff) */ + #define R_ETHSW_MAC_LINK_QTRIG_P0_TRIGGERED_Pos (28UL) /*!< TRIGGERED (Bit 28) */ + #define R_ETHSW_MAC_LINK_QTRIG_P0_TRIGGERED_Msk (0x10000000UL) /*!< TRIGGERED (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MAC_LINK_QTRIG_P0_DLR_MODE_Pos (29UL) /*!< DLR_MODE (Bit 29) */ + #define R_ETHSW_MAC_LINK_QTRIG_P0_DLR_MODE_Msk (0x20000000UL) /*!< DLR_MODE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MAC_LINK_QTRIG_P0_MODE_Pos (30UL) /*!< MODE (Bit 30) */ + #define R_ETHSW_MAC_LINK_QTRIG_P0_MODE_Msk (0x40000000UL) /*!< MODE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MAC_LINK_QTRIG_P0_ENABLE_Pos (31UL) /*!< ENABLE (Bit 31) */ + #define R_ETHSW_MAC_LINK_QTRIG_P0_ENABLE_Msk (0x80000000UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ +/* =================================================== MAC_LINK_QTRIG_P1 =================================================== */ + #define R_ETHSW_MAC_LINK_QTRIG_P1_PORT_MASK_Pos (0UL) /*!< PORT_MASK (Bit 0) */ + #define R_ETHSW_MAC_LINK_QTRIG_P1_PORT_MASK_Msk (0xfUL) /*!< PORT_MASK (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_MAC_LINK_QTRIG_P1_QUEUE_MASK_Pos (16UL) /*!< QUEUE_MASK (Bit 16) */ + #define R_ETHSW_MAC_LINK_QTRIG_P1_QUEUE_MASK_Msk (0xff0000UL) /*!< QUEUE_MASK (Bitfield-Mask: 0xff) */ + #define R_ETHSW_MAC_LINK_QTRIG_P1_TRIGGERED_Pos (28UL) /*!< TRIGGERED (Bit 28) */ + #define R_ETHSW_MAC_LINK_QTRIG_P1_TRIGGERED_Msk (0x10000000UL) /*!< TRIGGERED (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MAC_LINK_QTRIG_P1_DLR_MODE_Pos (29UL) /*!< DLR_MODE (Bit 29) */ + #define R_ETHSW_MAC_LINK_QTRIG_P1_DLR_MODE_Msk (0x20000000UL) /*!< DLR_MODE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MAC_LINK_QTRIG_P1_MODE_Pos (30UL) /*!< MODE (Bit 30) */ + #define R_ETHSW_MAC_LINK_QTRIG_P1_MODE_Msk (0x40000000UL) /*!< MODE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MAC_LINK_QTRIG_P1_ENABLE_Pos (31UL) /*!< ENABLE (Bit 31) */ + #define R_ETHSW_MAC_LINK_QTRIG_P1_ENABLE_Msk (0x80000000UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ +/* =================================================== MAC_LINK_QTRIG_P2 =================================================== */ + #define R_ETHSW_MAC_LINK_QTRIG_P2_PORT_MASK_Pos (0UL) /*!< PORT_MASK (Bit 0) */ + #define R_ETHSW_MAC_LINK_QTRIG_P2_PORT_MASK_Msk (0xfUL) /*!< PORT_MASK (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_MAC_LINK_QTRIG_P2_QUEUE_MASK_Pos (16UL) /*!< QUEUE_MASK (Bit 16) */ + #define R_ETHSW_MAC_LINK_QTRIG_P2_QUEUE_MASK_Msk (0xff0000UL) /*!< QUEUE_MASK (Bitfield-Mask: 0xff) */ + #define R_ETHSW_MAC_LINK_QTRIG_P2_TRIGGERED_Pos (28UL) /*!< TRIGGERED (Bit 28) */ + #define R_ETHSW_MAC_LINK_QTRIG_P2_TRIGGERED_Msk (0x10000000UL) /*!< TRIGGERED (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MAC_LINK_QTRIG_P2_DLR_MODE_Pos (29UL) /*!< DLR_MODE (Bit 29) */ + #define R_ETHSW_MAC_LINK_QTRIG_P2_DLR_MODE_Msk (0x20000000UL) /*!< DLR_MODE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MAC_LINK_QTRIG_P2_MODE_Pos (30UL) /*!< MODE (Bit 30) */ + #define R_ETHSW_MAC_LINK_QTRIG_P2_MODE_Msk (0x40000000UL) /*!< MODE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MAC_LINK_QTRIG_P2_ENABLE_Pos (31UL) /*!< ENABLE (Bit 31) */ + #define R_ETHSW_MAC_LINK_QTRIG_P2_ENABLE_Msk (0x80000000UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ +/* ================================================= PTPCLOCKIDENTITY1_P0 ================================================== */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P0_CLK_IDENTITY0_Pos (0UL) /*!< CLK_IDENTITY0 (Bit 0) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P0_CLK_IDENTITY0_Msk (0xffUL) /*!< CLK_IDENTITY0 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P0_CLK_IDENTITY1_Pos (8UL) /*!< CLK_IDENTITY1 (Bit 8) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P0_CLK_IDENTITY1_Msk (0xff00UL) /*!< CLK_IDENTITY1 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P0_CLK_IDENTITY2_Pos (16UL) /*!< CLK_IDENTITY2 (Bit 16) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P0_CLK_IDENTITY2_Msk (0xff0000UL) /*!< CLK_IDENTITY2 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P0_CLK_IDENTITY3_Pos (24UL) /*!< CLK_IDENTITY3 (Bit 24) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P0_CLK_IDENTITY3_Msk (0xff000000UL) /*!< CLK_IDENTITY3 (Bitfield-Mask: 0xff) */ +/* ================================================= PTPCLOCKIDENTITY1_P1 ================================================== */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P1_CLK_IDENTITY0_Pos (0UL) /*!< CLK_IDENTITY0 (Bit 0) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P1_CLK_IDENTITY0_Msk (0xffUL) /*!< CLK_IDENTITY0 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P1_CLK_IDENTITY1_Pos (8UL) /*!< CLK_IDENTITY1 (Bit 8) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P1_CLK_IDENTITY1_Msk (0xff00UL) /*!< CLK_IDENTITY1 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P1_CLK_IDENTITY2_Pos (16UL) /*!< CLK_IDENTITY2 (Bit 16) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P1_CLK_IDENTITY2_Msk (0xff0000UL) /*!< CLK_IDENTITY2 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P1_CLK_IDENTITY3_Pos (24UL) /*!< CLK_IDENTITY3 (Bit 24) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P1_CLK_IDENTITY3_Msk (0xff000000UL) /*!< CLK_IDENTITY3 (Bitfield-Mask: 0xff) */ +/* ================================================= PTPCLOCKIDENTITY1_P2 ================================================== */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P2_CLK_IDENTITY0_Pos (0UL) /*!< CLK_IDENTITY0 (Bit 0) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P2_CLK_IDENTITY0_Msk (0xffUL) /*!< CLK_IDENTITY0 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P2_CLK_IDENTITY1_Pos (8UL) /*!< CLK_IDENTITY1 (Bit 8) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P2_CLK_IDENTITY1_Msk (0xff00UL) /*!< CLK_IDENTITY1 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P2_CLK_IDENTITY2_Pos (16UL) /*!< CLK_IDENTITY2 (Bit 16) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P2_CLK_IDENTITY2_Msk (0xff0000UL) /*!< CLK_IDENTITY2 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P2_CLK_IDENTITY3_Pos (24UL) /*!< CLK_IDENTITY3 (Bit 24) */ + #define R_ETHSW_PTPCLOCKIDENTITY1_P2_CLK_IDENTITY3_Msk (0xff000000UL) /*!< CLK_IDENTITY3 (Bitfield-Mask: 0xff) */ +/* ================================================= PTPCLOCKIDENTITY2_P0 ================================================== */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P0_CLK_IDENTITY4_Pos (0UL) /*!< CLK_IDENTITY4 (Bit 0) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P0_CLK_IDENTITY4_Msk (0xffUL) /*!< CLK_IDENTITY4 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P0_CLK_IDENTITY5_Pos (8UL) /*!< CLK_IDENTITY5 (Bit 8) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P0_CLK_IDENTITY5_Msk (0xff00UL) /*!< CLK_IDENTITY5 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P0_CLK_IDENTITY6_Pos (16UL) /*!< CLK_IDENTITY6 (Bit 16) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P0_CLK_IDENTITY6_Msk (0xff0000UL) /*!< CLK_IDENTITY6 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P0_CLK_IDENTITY7_Pos (24UL) /*!< CLK_IDENTITY7 (Bit 24) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P0_CLK_IDENTITY7_Msk (0xff000000UL) /*!< CLK_IDENTITY7 (Bitfield-Mask: 0xff) */ +/* ================================================= PTPCLOCKIDENTITY2_P1 ================================================== */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P1_CLK_IDENTITY4_Pos (0UL) /*!< CLK_IDENTITY4 (Bit 0) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P1_CLK_IDENTITY4_Msk (0xffUL) /*!< CLK_IDENTITY4 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P1_CLK_IDENTITY5_Pos (8UL) /*!< CLK_IDENTITY5 (Bit 8) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P1_CLK_IDENTITY5_Msk (0xff00UL) /*!< CLK_IDENTITY5 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P1_CLK_IDENTITY6_Pos (16UL) /*!< CLK_IDENTITY6 (Bit 16) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P1_CLK_IDENTITY6_Msk (0xff0000UL) /*!< CLK_IDENTITY6 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P1_CLK_IDENTITY7_Pos (24UL) /*!< CLK_IDENTITY7 (Bit 24) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P1_CLK_IDENTITY7_Msk (0xff000000UL) /*!< CLK_IDENTITY7 (Bitfield-Mask: 0xff) */ +/* ================================================= PTPCLOCKIDENTITY2_P2 ================================================== */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P2_CLK_IDENTITY4_Pos (0UL) /*!< CLK_IDENTITY4 (Bit 0) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P2_CLK_IDENTITY4_Msk (0xffUL) /*!< CLK_IDENTITY4 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P2_CLK_IDENTITY5_Pos (8UL) /*!< CLK_IDENTITY5 (Bit 8) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P2_CLK_IDENTITY5_Msk (0xff00UL) /*!< CLK_IDENTITY5 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P2_CLK_IDENTITY6_Pos (16UL) /*!< CLK_IDENTITY6 (Bit 16) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P2_CLK_IDENTITY6_Msk (0xff0000UL) /*!< CLK_IDENTITY6 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P2_CLK_IDENTITY7_Pos (24UL) /*!< CLK_IDENTITY7 (Bit 24) */ + #define R_ETHSW_PTPCLOCKIDENTITY2_P2_CLK_IDENTITY7_Msk (0xff000000UL) /*!< CLK_IDENTITY7 (Bitfield-Mask: 0xff) */ +/* ================================================== PTPAUTORESPONSE_P0 =================================================== */ + #define R_ETHSW_PTPAUTORESPONSE_P0_ARSP_EN_Pos (0UL) /*!< ARSP_EN (Bit 0) */ + #define R_ETHSW_PTPAUTORESPONSE_P0_ARSP_EN_Msk (0x1UL) /*!< ARSP_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PTPAUTORESPONSE_P0_D_TIMER_Pos (1UL) /*!< D_TIMER (Bit 1) */ + #define R_ETHSW_PTPAUTORESPONSE_P0_D_TIMER_Msk (0x2UL) /*!< D_TIMER (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PTPAUTORESPONSE_P0_PORTNUM1_Pos (16UL) /*!< PORTNUM1 (Bit 16) */ + #define R_ETHSW_PTPAUTORESPONSE_P0_PORTNUM1_Msk (0xff0000UL) /*!< PORTNUM1 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPAUTORESPONSE_P0_PORTNUM0_Pos (24UL) /*!< PORTNUM0 (Bit 24) */ + #define R_ETHSW_PTPAUTORESPONSE_P0_PORTNUM0_Msk (0xff000000UL) /*!< PORTNUM0 (Bitfield-Mask: 0xff) */ +/* ================================================== PTPAUTORESPONSE_P1 =================================================== */ + #define R_ETHSW_PTPAUTORESPONSE_P1_ARSP_EN_Pos (0UL) /*!< ARSP_EN (Bit 0) */ + #define R_ETHSW_PTPAUTORESPONSE_P1_ARSP_EN_Msk (0x1UL) /*!< ARSP_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PTPAUTORESPONSE_P1_D_TIMER_Pos (1UL) /*!< D_TIMER (Bit 1) */ + #define R_ETHSW_PTPAUTORESPONSE_P1_D_TIMER_Msk (0x2UL) /*!< D_TIMER (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PTPAUTORESPONSE_P1_PORTNUM1_Pos (16UL) /*!< PORTNUM1 (Bit 16) */ + #define R_ETHSW_PTPAUTORESPONSE_P1_PORTNUM1_Msk (0xff0000UL) /*!< PORTNUM1 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPAUTORESPONSE_P1_PORTNUM0_Pos (24UL) /*!< PORTNUM0 (Bit 24) */ + #define R_ETHSW_PTPAUTORESPONSE_P1_PORTNUM0_Msk (0xff000000UL) /*!< PORTNUM0 (Bitfield-Mask: 0xff) */ +/* ================================================== PTPAUTORESPONSE_P2 =================================================== */ + #define R_ETHSW_PTPAUTORESPONSE_P2_ARSP_EN_Pos (0UL) /*!< ARSP_EN (Bit 0) */ + #define R_ETHSW_PTPAUTORESPONSE_P2_ARSP_EN_Msk (0x1UL) /*!< ARSP_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PTPAUTORESPONSE_P2_D_TIMER_Pos (1UL) /*!< D_TIMER (Bit 1) */ + #define R_ETHSW_PTPAUTORESPONSE_P2_D_TIMER_Msk (0x2UL) /*!< D_TIMER (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PTPAUTORESPONSE_P2_PORTNUM1_Pos (16UL) /*!< PORTNUM1 (Bit 16) */ + #define R_ETHSW_PTPAUTORESPONSE_P2_PORTNUM1_Msk (0xff0000UL) /*!< PORTNUM1 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_PTPAUTORESPONSE_P2_PORTNUM0_Pos (24UL) /*!< PORTNUM0 (Bit 24) */ + #define R_ETHSW_PTPAUTORESPONSE_P2_PORTNUM0_Msk (0xff000000UL) /*!< PORTNUM0 (Bitfield-Mask: 0xff) */ +/* ======================================================= STATUS_P0 ======================================================= */ + #define R_ETHSW_STATUS_P0_PHYSPEED_Pos (0UL) /*!< PHYSPEED (Bit 0) */ + #define R_ETHSW_STATUS_P0_PHYSPEED_Msk (0x3UL) /*!< PHYSPEED (Bitfield-Mask: 0x03) */ + #define R_ETHSW_STATUS_P0_PHYLINK_Pos (2UL) /*!< PHYLINK (Bit 2) */ + #define R_ETHSW_STATUS_P0_PHYLINK_Msk (0x4UL) /*!< PHYLINK (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATUS_P0_PHYDUPLEX_Pos (3UL) /*!< PHYDUPLEX (Bit 3) */ + #define R_ETHSW_STATUS_P0_PHYDUPLEX_Msk (0x8UL) /*!< PHYDUPLEX (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATUS_P0_TX_UNDFLW_Pos (4UL) /*!< TX_UNDFLW (Bit 4) */ + #define R_ETHSW_STATUS_P0_TX_UNDFLW_Msk (0x10UL) /*!< TX_UNDFLW (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATUS_P0_LK_DST_ERR_Pos (5UL) /*!< LK_DST_ERR (Bit 5) */ + #define R_ETHSW_STATUS_P0_LK_DST_ERR_Msk (0x20UL) /*!< LK_DST_ERR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATUS_P0_BR_VERIF_ST_Pos (6UL) /*!< BR_VERIF_ST (Bit 6) */ + #define R_ETHSW_STATUS_P0_BR_VERIF_ST_Msk (0x1c0UL) /*!< BR_VERIF_ST (Bitfield-Mask: 0x07) */ +/* ======================================================= STATUS_P1 ======================================================= */ + #define R_ETHSW_STATUS_P1_PHYSPEED_Pos (0UL) /*!< PHYSPEED (Bit 0) */ + #define R_ETHSW_STATUS_P1_PHYSPEED_Msk (0x3UL) /*!< PHYSPEED (Bitfield-Mask: 0x03) */ + #define R_ETHSW_STATUS_P1_PHYLINK_Pos (2UL) /*!< PHYLINK (Bit 2) */ + #define R_ETHSW_STATUS_P1_PHYLINK_Msk (0x4UL) /*!< PHYLINK (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATUS_P1_PHYDUPLEX_Pos (3UL) /*!< PHYDUPLEX (Bit 3) */ + #define R_ETHSW_STATUS_P1_PHYDUPLEX_Msk (0x8UL) /*!< PHYDUPLEX (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATUS_P1_TX_UNDFLW_Pos (4UL) /*!< TX_UNDFLW (Bit 4) */ + #define R_ETHSW_STATUS_P1_TX_UNDFLW_Msk (0x10UL) /*!< TX_UNDFLW (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATUS_P1_LK_DST_ERR_Pos (5UL) /*!< LK_DST_ERR (Bit 5) */ + #define R_ETHSW_STATUS_P1_LK_DST_ERR_Msk (0x20UL) /*!< LK_DST_ERR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATUS_P1_BR_VERIF_ST_Pos (6UL) /*!< BR_VERIF_ST (Bit 6) */ + #define R_ETHSW_STATUS_P1_BR_VERIF_ST_Msk (0x1c0UL) /*!< BR_VERIF_ST (Bitfield-Mask: 0x07) */ +/* ======================================================= STATUS_P2 ======================================================= */ + #define R_ETHSW_STATUS_P2_PHYSPEED_Pos (0UL) /*!< PHYSPEED (Bit 0) */ + #define R_ETHSW_STATUS_P2_PHYSPEED_Msk (0x3UL) /*!< PHYSPEED (Bitfield-Mask: 0x03) */ + #define R_ETHSW_STATUS_P2_PHYLINK_Pos (2UL) /*!< PHYLINK (Bit 2) */ + #define R_ETHSW_STATUS_P2_PHYLINK_Msk (0x4UL) /*!< PHYLINK (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATUS_P2_PHYDUPLEX_Pos (3UL) /*!< PHYDUPLEX (Bit 3) */ + #define R_ETHSW_STATUS_P2_PHYDUPLEX_Msk (0x8UL) /*!< PHYDUPLEX (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATUS_P2_TX_UNDFLW_Pos (4UL) /*!< TX_UNDFLW (Bit 4) */ + #define R_ETHSW_STATUS_P2_TX_UNDFLW_Msk (0x10UL) /*!< TX_UNDFLW (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATUS_P2_LK_DST_ERR_Pos (5UL) /*!< LK_DST_ERR (Bit 5) */ + #define R_ETHSW_STATUS_P2_LK_DST_ERR_Msk (0x20UL) /*!< LK_DST_ERR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATUS_P2_BR_VERIF_ST_Pos (6UL) /*!< BR_VERIF_ST (Bit 6) */ + #define R_ETHSW_STATUS_P2_BR_VERIF_ST_Msk (0x1c0UL) /*!< BR_VERIF_ST (Bitfield-Mask: 0x07) */ +/* ======================================================= STATUS_P3 ======================================================= */ + #define R_ETHSW_STATUS_P3_PHYSPEED_Pos (0UL) /*!< PHYSPEED (Bit 0) */ + #define R_ETHSW_STATUS_P3_PHYSPEED_Msk (0x3UL) /*!< PHYSPEED (Bitfield-Mask: 0x03) */ + #define R_ETHSW_STATUS_P3_PHYLINK_Pos (2UL) /*!< PHYLINK (Bit 2) */ + #define R_ETHSW_STATUS_P3_PHYLINK_Msk (0x4UL) /*!< PHYLINK (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATUS_P3_PHYDUPLEX_Pos (3UL) /*!< PHYDUPLEX (Bit 3) */ + #define R_ETHSW_STATUS_P3_PHYDUPLEX_Msk (0x8UL) /*!< PHYDUPLEX (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATUS_P3_TX_UNDFLW_Pos (4UL) /*!< TX_UNDFLW (Bit 4) */ + #define R_ETHSW_STATUS_P3_TX_UNDFLW_Msk (0x10UL) /*!< TX_UNDFLW (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATUS_P3_LK_DST_ERR_Pos (5UL) /*!< LK_DST_ERR (Bit 5) */ + #define R_ETHSW_STATUS_P3_LK_DST_ERR_Msk (0x20UL) /*!< LK_DST_ERR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATUS_P3_BR_VERIF_ST_Pos (6UL) /*!< BR_VERIF_ST (Bit 6) */ + #define R_ETHSW_STATUS_P3_BR_VERIF_ST_Msk (0x1c0UL) /*!< BR_VERIF_ST (Bitfield-Mask: 0x07) */ +/* =================================================== TX_IPG_LENGTH_P0 ==================================================== */ + #define R_ETHSW_TX_IPG_LENGTH_P0_TX_IPG_LENGTH_Pos (0UL) /*!< TX_IPG_LENGTH (Bit 0) */ + #define R_ETHSW_TX_IPG_LENGTH_P0_TX_IPG_LENGTH_Msk (0x1fUL) /*!< TX_IPG_LENGTH (Bitfield-Mask: 0x1f) */ + #define R_ETHSW_TX_IPG_LENGTH_P0_MINRTC3GAP_Pos (16UL) /*!< MINRTC3GAP (Bit 16) */ + #define R_ETHSW_TX_IPG_LENGTH_P0_MINRTC3GAP_Msk (0x1f0000UL) /*!< MINRTC3GAP (Bitfield-Mask: 0x1f) */ +/* =================================================== TX_IPG_LENGTH_P1 ==================================================== */ + #define R_ETHSW_TX_IPG_LENGTH_P1_TX_IPG_LENGTH_Pos (0UL) /*!< TX_IPG_LENGTH (Bit 0) */ + #define R_ETHSW_TX_IPG_LENGTH_P1_TX_IPG_LENGTH_Msk (0x1fUL) /*!< TX_IPG_LENGTH (Bitfield-Mask: 0x1f) */ + #define R_ETHSW_TX_IPG_LENGTH_P1_MINRTC3GAP_Pos (16UL) /*!< MINRTC3GAP (Bit 16) */ + #define R_ETHSW_TX_IPG_LENGTH_P1_MINRTC3GAP_Msk (0x1f0000UL) /*!< MINRTC3GAP (Bitfield-Mask: 0x1f) */ +/* =================================================== TX_IPG_LENGTH_P2 ==================================================== */ + #define R_ETHSW_TX_IPG_LENGTH_P2_TX_IPG_LENGTH_Pos (0UL) /*!< TX_IPG_LENGTH (Bit 0) */ + #define R_ETHSW_TX_IPG_LENGTH_P2_TX_IPG_LENGTH_Msk (0x1fUL) /*!< TX_IPG_LENGTH (Bitfield-Mask: 0x1f) */ + #define R_ETHSW_TX_IPG_LENGTH_P2_MINRTC3GAP_Pos (16UL) /*!< MINRTC3GAP (Bit 16) */ + #define R_ETHSW_TX_IPG_LENGTH_P2_MINRTC3GAP_Msk (0x1f0000UL) /*!< MINRTC3GAP (Bitfield-Mask: 0x1f) */ +/* =================================================== TX_IPG_LENGTH_P3 ==================================================== */ + #define R_ETHSW_TX_IPG_LENGTH_P3_TX_IPG_LENGTH_Pos (0UL) /*!< TX_IPG_LENGTH (Bit 0) */ + #define R_ETHSW_TX_IPG_LENGTH_P3_TX_IPG_LENGTH_Msk (0x1fUL) /*!< TX_IPG_LENGTH (Bitfield-Mask: 0x1f) */ + #define R_ETHSW_TX_IPG_LENGTH_P3_MINRTC3GAP_Pos (16UL) /*!< MINRTC3GAP (Bit 16) */ + #define R_ETHSW_TX_IPG_LENGTH_P3_MINRTC3GAP_Msk (0x1f0000UL) /*!< MINRTC3GAP (Bitfield-Mask: 0x1f) */ +/* ==================================================== EEE_CTL_STAT_P0 ==================================================== */ + #define R_ETHSW_EEE_CTL_STAT_P0_EEE_AUTO_Pos (0UL) /*!< EEE_AUTO (Bit 0) */ + #define R_ETHSW_EEE_CTL_STAT_P0_EEE_AUTO_Msk (0x1UL) /*!< EEE_AUTO (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P0_LPI_REQ_Pos (1UL) /*!< LPI_REQ (Bit 1) */ + #define R_ETHSW_EEE_CTL_STAT_P0_LPI_REQ_Msk (0x2UL) /*!< LPI_REQ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P0_LPI_TXHOLD_Pos (2UL) /*!< LPI_TXHOLD (Bit 2) */ + #define R_ETHSW_EEE_CTL_STAT_P0_LPI_TXHOLD_Msk (0x4UL) /*!< LPI_TXHOLD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P0_ST_LPI_REQ_Pos (8UL) /*!< ST_LPI_REQ (Bit 8) */ + #define R_ETHSW_EEE_CTL_STAT_P0_ST_LPI_REQ_Msk (0x100UL) /*!< ST_LPI_REQ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P0_ST_LPI_TXHOLD_Pos (9UL) /*!< ST_LPI_TXHOLD (Bit 9) */ + #define R_ETHSW_EEE_CTL_STAT_P0_ST_LPI_TXHOLD_Msk (0x200UL) /*!< ST_LPI_TXHOLD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P0_ST_TXBUSY_Pos (10UL) /*!< ST_TXBUSY (Bit 10) */ + #define R_ETHSW_EEE_CTL_STAT_P0_ST_TXBUSY_Msk (0x400UL) /*!< ST_TXBUSY (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P0_ST_TXAVAIL_Pos (11UL) /*!< ST_TXAVAIL (Bit 11) */ + #define R_ETHSW_EEE_CTL_STAT_P0_ST_TXAVAIL_Msk (0x800UL) /*!< ST_TXAVAIL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P0_ST_LPI_IND_Pos (12UL) /*!< ST_LPI_IND (Bit 12) */ + #define R_ETHSW_EEE_CTL_STAT_P0_ST_LPI_IND_Msk (0x1000UL) /*!< ST_LPI_IND (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P0_STLH_LPI_REQ_Pos (16UL) /*!< STLH_LPI_REQ (Bit 16) */ + #define R_ETHSW_EEE_CTL_STAT_P0_STLH_LPI_REQ_Msk (0x10000UL) /*!< STLH_LPI_REQ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P0_STLH_LPI_TXHOLD_Pos (17UL) /*!< STLH_LPI_TXHOLD (Bit 17) */ + #define R_ETHSW_EEE_CTL_STAT_P0_STLH_LPI_TXHOLD_Msk (0x20000UL) /*!< STLH_LPI_TXHOLD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P0_STLH_TXBUSY_Pos (18UL) /*!< STLH_TXBUSY (Bit 18) */ + #define R_ETHSW_EEE_CTL_STAT_P0_STLH_TXBUSY_Msk (0x40000UL) /*!< STLH_TXBUSY (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P0_STLH_LPI_IND_Pos (20UL) /*!< STLH_LPI_IND (Bit 20) */ + #define R_ETHSW_EEE_CTL_STAT_P0_STLH_LPI_IND_Msk (0x100000UL) /*!< STLH_LPI_IND (Bitfield-Mask: 0x01) */ +/* ==================================================== EEE_CTL_STAT_P1 ==================================================== */ + #define R_ETHSW_EEE_CTL_STAT_P1_EEE_AUTO_Pos (0UL) /*!< EEE_AUTO (Bit 0) */ + #define R_ETHSW_EEE_CTL_STAT_P1_EEE_AUTO_Msk (0x1UL) /*!< EEE_AUTO (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P1_LPI_REQ_Pos (1UL) /*!< LPI_REQ (Bit 1) */ + #define R_ETHSW_EEE_CTL_STAT_P1_LPI_REQ_Msk (0x2UL) /*!< LPI_REQ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P1_LPI_TXHOLD_Pos (2UL) /*!< LPI_TXHOLD (Bit 2) */ + #define R_ETHSW_EEE_CTL_STAT_P1_LPI_TXHOLD_Msk (0x4UL) /*!< LPI_TXHOLD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P1_ST_LPI_REQ_Pos (8UL) /*!< ST_LPI_REQ (Bit 8) */ + #define R_ETHSW_EEE_CTL_STAT_P1_ST_LPI_REQ_Msk (0x100UL) /*!< ST_LPI_REQ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P1_ST_LPI_TXHOLD_Pos (9UL) /*!< ST_LPI_TXHOLD (Bit 9) */ + #define R_ETHSW_EEE_CTL_STAT_P1_ST_LPI_TXHOLD_Msk (0x200UL) /*!< ST_LPI_TXHOLD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P1_ST_TXBUSY_Pos (10UL) /*!< ST_TXBUSY (Bit 10) */ + #define R_ETHSW_EEE_CTL_STAT_P1_ST_TXBUSY_Msk (0x400UL) /*!< ST_TXBUSY (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P1_ST_TXAVAIL_Pos (11UL) /*!< ST_TXAVAIL (Bit 11) */ + #define R_ETHSW_EEE_CTL_STAT_P1_ST_TXAVAIL_Msk (0x800UL) /*!< ST_TXAVAIL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P1_ST_LPI_IND_Pos (12UL) /*!< ST_LPI_IND (Bit 12) */ + #define R_ETHSW_EEE_CTL_STAT_P1_ST_LPI_IND_Msk (0x1000UL) /*!< ST_LPI_IND (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P1_STLH_LPI_REQ_Pos (16UL) /*!< STLH_LPI_REQ (Bit 16) */ + #define R_ETHSW_EEE_CTL_STAT_P1_STLH_LPI_REQ_Msk (0x10000UL) /*!< STLH_LPI_REQ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P1_STLH_LPI_TXHOLD_Pos (17UL) /*!< STLH_LPI_TXHOLD (Bit 17) */ + #define R_ETHSW_EEE_CTL_STAT_P1_STLH_LPI_TXHOLD_Msk (0x20000UL) /*!< STLH_LPI_TXHOLD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P1_STLH_TXBUSY_Pos (18UL) /*!< STLH_TXBUSY (Bit 18) */ + #define R_ETHSW_EEE_CTL_STAT_P1_STLH_TXBUSY_Msk (0x40000UL) /*!< STLH_TXBUSY (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P1_STLH_LPI_IND_Pos (20UL) /*!< STLH_LPI_IND (Bit 20) */ + #define R_ETHSW_EEE_CTL_STAT_P1_STLH_LPI_IND_Msk (0x100000UL) /*!< STLH_LPI_IND (Bitfield-Mask: 0x01) */ +/* ==================================================== EEE_CTL_STAT_P2 ==================================================== */ + #define R_ETHSW_EEE_CTL_STAT_P2_EEE_AUTO_Pos (0UL) /*!< EEE_AUTO (Bit 0) */ + #define R_ETHSW_EEE_CTL_STAT_P2_EEE_AUTO_Msk (0x1UL) /*!< EEE_AUTO (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P2_LPI_REQ_Pos (1UL) /*!< LPI_REQ (Bit 1) */ + #define R_ETHSW_EEE_CTL_STAT_P2_LPI_REQ_Msk (0x2UL) /*!< LPI_REQ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P2_LPI_TXHOLD_Pos (2UL) /*!< LPI_TXHOLD (Bit 2) */ + #define R_ETHSW_EEE_CTL_STAT_P2_LPI_TXHOLD_Msk (0x4UL) /*!< LPI_TXHOLD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P2_ST_LPI_REQ_Pos (8UL) /*!< ST_LPI_REQ (Bit 8) */ + #define R_ETHSW_EEE_CTL_STAT_P2_ST_LPI_REQ_Msk (0x100UL) /*!< ST_LPI_REQ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P2_ST_LPI_TXHOLD_Pos (9UL) /*!< ST_LPI_TXHOLD (Bit 9) */ + #define R_ETHSW_EEE_CTL_STAT_P2_ST_LPI_TXHOLD_Msk (0x200UL) /*!< ST_LPI_TXHOLD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P2_ST_TXBUSY_Pos (10UL) /*!< ST_TXBUSY (Bit 10) */ + #define R_ETHSW_EEE_CTL_STAT_P2_ST_TXBUSY_Msk (0x400UL) /*!< ST_TXBUSY (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P2_ST_TXAVAIL_Pos (11UL) /*!< ST_TXAVAIL (Bit 11) */ + #define R_ETHSW_EEE_CTL_STAT_P2_ST_TXAVAIL_Msk (0x800UL) /*!< ST_TXAVAIL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P2_ST_LPI_IND_Pos (12UL) /*!< ST_LPI_IND (Bit 12) */ + #define R_ETHSW_EEE_CTL_STAT_P2_ST_LPI_IND_Msk (0x1000UL) /*!< ST_LPI_IND (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P2_STLH_LPI_REQ_Pos (16UL) /*!< STLH_LPI_REQ (Bit 16) */ + #define R_ETHSW_EEE_CTL_STAT_P2_STLH_LPI_REQ_Msk (0x10000UL) /*!< STLH_LPI_REQ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P2_STLH_LPI_TXHOLD_Pos (17UL) /*!< STLH_LPI_TXHOLD (Bit 17) */ + #define R_ETHSW_EEE_CTL_STAT_P2_STLH_LPI_TXHOLD_Msk (0x20000UL) /*!< STLH_LPI_TXHOLD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P2_STLH_TXBUSY_Pos (18UL) /*!< STLH_TXBUSY (Bit 18) */ + #define R_ETHSW_EEE_CTL_STAT_P2_STLH_TXBUSY_Msk (0x40000UL) /*!< STLH_TXBUSY (Bitfield-Mask: 0x01) */ + #define R_ETHSW_EEE_CTL_STAT_P2_STLH_LPI_IND_Pos (20UL) /*!< STLH_LPI_IND (Bit 20) */ + #define R_ETHSW_EEE_CTL_STAT_P2_STLH_LPI_IND_Msk (0x100000UL) /*!< STLH_LPI_IND (Bitfield-Mask: 0x01) */ +/* =================================================== EEE_IDLE_TIME_P0 ==================================================== */ + #define R_ETHSW_EEE_IDLE_TIME_P0_EEE_IDLE_TIME_Pos (0UL) /*!< EEE_IDLE_TIME (Bit 0) */ + #define R_ETHSW_EEE_IDLE_TIME_P0_EEE_IDLE_TIME_Msk (0xffffffffUL) /*!< EEE_IDLE_TIME (Bitfield-Mask: 0xffffffff) */ +/* =================================================== EEE_IDLE_TIME_P1 ==================================================== */ + #define R_ETHSW_EEE_IDLE_TIME_P1_EEE_IDLE_TIME_Pos (0UL) /*!< EEE_IDLE_TIME (Bit 0) */ + #define R_ETHSW_EEE_IDLE_TIME_P1_EEE_IDLE_TIME_Msk (0xffffffffUL) /*!< EEE_IDLE_TIME (Bitfield-Mask: 0xffffffff) */ +/* =================================================== EEE_IDLE_TIME_P2 ==================================================== */ + #define R_ETHSW_EEE_IDLE_TIME_P2_EEE_IDLE_TIME_Pos (0UL) /*!< EEE_IDLE_TIME (Bit 0) */ + #define R_ETHSW_EEE_IDLE_TIME_P2_EEE_IDLE_TIME_Msk (0xffffffffUL) /*!< EEE_IDLE_TIME (Bitfield-Mask: 0xffffffff) */ +/* =================================================== EEE_TWSYS_TIME_P0 =================================================== */ + #define R_ETHSW_EEE_TWSYS_TIME_P0_EEE_WKUP_TIME_Pos (0UL) /*!< EEE_WKUP_TIME (Bit 0) */ + #define R_ETHSW_EEE_TWSYS_TIME_P0_EEE_WKUP_TIME_Msk (0xffffffffUL) /*!< EEE_WKUP_TIME (Bitfield-Mask: 0xffffffff) */ +/* =================================================== EEE_TWSYS_TIME_P1 =================================================== */ + #define R_ETHSW_EEE_TWSYS_TIME_P1_EEE_WKUP_TIME_Pos (0UL) /*!< EEE_WKUP_TIME (Bit 0) */ + #define R_ETHSW_EEE_TWSYS_TIME_P1_EEE_WKUP_TIME_Msk (0xffffffffUL) /*!< EEE_WKUP_TIME (Bitfield-Mask: 0xffffffff) */ +/* =================================================== EEE_TWSYS_TIME_P2 =================================================== */ + #define R_ETHSW_EEE_TWSYS_TIME_P2_EEE_WKUP_TIME_Pos (0UL) /*!< EEE_WKUP_TIME (Bit 0) */ + #define R_ETHSW_EEE_TWSYS_TIME_P2_EEE_WKUP_TIME_Msk (0xffffffffUL) /*!< EEE_WKUP_TIME (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== IDLE_SLOPE_P0 ===================================================== */ + #define R_ETHSW_IDLE_SLOPE_P0_IDLE_SLOPE_Pos (0UL) /*!< IDLE_SLOPE (Bit 0) */ + #define R_ETHSW_IDLE_SLOPE_P0_IDLE_SLOPE_Msk (0x7ffUL) /*!< IDLE_SLOPE (Bitfield-Mask: 0x7ff) */ +/* ===================================================== IDLE_SLOPE_P1 ===================================================== */ + #define R_ETHSW_IDLE_SLOPE_P1_IDLE_SLOPE_Pos (0UL) /*!< IDLE_SLOPE (Bit 0) */ + #define R_ETHSW_IDLE_SLOPE_P1_IDLE_SLOPE_Msk (0x7ffUL) /*!< IDLE_SLOPE (Bitfield-Mask: 0x7ff) */ +/* ===================================================== IDLE_SLOPE_P2 ===================================================== */ + #define R_ETHSW_IDLE_SLOPE_P2_IDLE_SLOPE_Pos (0UL) /*!< IDLE_SLOPE (Bit 0) */ + #define R_ETHSW_IDLE_SLOPE_P2_IDLE_SLOPE_Msk (0x7ffUL) /*!< IDLE_SLOPE (Bitfield-Mask: 0x7ff) */ +/* ===================================================== IDLE_SLOPE_P3 ===================================================== */ + #define R_ETHSW_IDLE_SLOPE_P3_IDLE_SLOPE_Pos (0UL) /*!< IDLE_SLOPE (Bit 0) */ + #define R_ETHSW_IDLE_SLOPE_P3_IDLE_SLOPE_Msk (0x7ffUL) /*!< IDLE_SLOPE (Bitfield-Mask: 0x7ff) */ +/* ====================================================== CT_DELAY_P0 ====================================================== */ + #define R_ETHSW_CT_DELAY_P0_CT_DELAY_Pos (0UL) /*!< CT_DELAY (Bit 0) */ + #define R_ETHSW_CT_DELAY_P0_CT_DELAY_Msk (0x1ffUL) /*!< CT_DELAY (Bitfield-Mask: 0x1ff) */ +/* ====================================================== CT_DELAY_P1 ====================================================== */ + #define R_ETHSW_CT_DELAY_P1_CT_DELAY_Pos (0UL) /*!< CT_DELAY (Bit 0) */ + #define R_ETHSW_CT_DELAY_P1_CT_DELAY_Msk (0x1ffUL) /*!< CT_DELAY (Bitfield-Mask: 0x1ff) */ +/* ====================================================== CT_DELAY_P2 ====================================================== */ + #define R_ETHSW_CT_DELAY_P2_CT_DELAY_Pos (0UL) /*!< CT_DELAY (Bit 0) */ + #define R_ETHSW_CT_DELAY_P2_CT_DELAY_Msk (0x1ffUL) /*!< CT_DELAY (Bitfield-Mask: 0x1ff) */ +/* ===================================================== BR_CONTROL_P0 ===================================================== */ + #define R_ETHSW_BR_CONTROL_P0_PREEMPT_ENA_Pos (0UL) /*!< PREEMPT_ENA (Bit 0) */ + #define R_ETHSW_BR_CONTROL_P0_PREEMPT_ENA_Msk (0x1UL) /*!< PREEMPT_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P0_VERIFY_DIS_Pos (1UL) /*!< VERIFY_DIS (Bit 1) */ + #define R_ETHSW_BR_CONTROL_P0_VERIFY_DIS_Msk (0x2UL) /*!< VERIFY_DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P0_RESPONSE_DIS_Pos (2UL) /*!< RESPONSE_DIS (Bit 2) */ + #define R_ETHSW_BR_CONTROL_P0_RESPONSE_DIS_Msk (0x4UL) /*!< RESPONSE_DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P0_ADDFRAGSIZE_Pos (4UL) /*!< ADDFRAGSIZE (Bit 4) */ + #define R_ETHSW_BR_CONTROL_P0_ADDFRAGSIZE_Msk (0x30UL) /*!< ADDFRAGSIZE (Bitfield-Mask: 0x03) */ + #define R_ETHSW_BR_CONTROL_P0_TX_VERIFY_TIME_Pos (8UL) /*!< TX_VERIFY_TIME (Bit 8) */ + #define R_ETHSW_BR_CONTROL_P0_TX_VERIFY_TIME_Msk (0x7f00UL) /*!< TX_VERIFY_TIME (Bitfield-Mask: 0x7f) */ + #define R_ETHSW_BR_CONTROL_P0_RX_STRICT_PRE_Pos (16UL) /*!< RX_STRICT_PRE (Bit 16) */ + #define R_ETHSW_BR_CONTROL_P0_RX_STRICT_PRE_Msk (0x10000UL) /*!< RX_STRICT_PRE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P0_RX_BR_SMD_DIS_Pos (17UL) /*!< RX_BR_SMD_DIS (Bit 17) */ + #define R_ETHSW_BR_CONTROL_P0_RX_BR_SMD_DIS_Msk (0x20000UL) /*!< RX_BR_SMD_DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P0_RX_STRICT_BR_CTL_Pos (18UL) /*!< RX_STRICT_BR_CTL (Bit 18) */ + #define R_ETHSW_BR_CONTROL_P0_RX_STRICT_BR_CTL_Msk (0x40000UL) /*!< RX_STRICT_BR_CTL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P0_TX_MCRC_INV_Pos (19UL) /*!< TX_MCRC_INV (Bit 19) */ + #define R_ETHSW_BR_CONTROL_P0_TX_MCRC_INV_Msk (0x80000UL) /*!< TX_MCRC_INV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P0_RX_MCRC_INV_Pos (20UL) /*!< RX_MCRC_INV (Bit 20) */ + #define R_ETHSW_BR_CONTROL_P0_RX_MCRC_INV_Msk (0x100000UL) /*!< RX_MCRC_INV (Bitfield-Mask: 0x01) */ +/* ===================================================== BR_CONTROL_P1 ===================================================== */ + #define R_ETHSW_BR_CONTROL_P1_PREEMPT_ENA_Pos (0UL) /*!< PREEMPT_ENA (Bit 0) */ + #define R_ETHSW_BR_CONTROL_P1_PREEMPT_ENA_Msk (0x1UL) /*!< PREEMPT_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P1_VERIFY_DIS_Pos (1UL) /*!< VERIFY_DIS (Bit 1) */ + #define R_ETHSW_BR_CONTROL_P1_VERIFY_DIS_Msk (0x2UL) /*!< VERIFY_DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P1_RESPONSE_DIS_Pos (2UL) /*!< RESPONSE_DIS (Bit 2) */ + #define R_ETHSW_BR_CONTROL_P1_RESPONSE_DIS_Msk (0x4UL) /*!< RESPONSE_DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P1_ADDFRAGSIZE_Pos (4UL) /*!< ADDFRAGSIZE (Bit 4) */ + #define R_ETHSW_BR_CONTROL_P1_ADDFRAGSIZE_Msk (0x30UL) /*!< ADDFRAGSIZE (Bitfield-Mask: 0x03) */ + #define R_ETHSW_BR_CONTROL_P1_TX_VERIFY_TIME_Pos (8UL) /*!< TX_VERIFY_TIME (Bit 8) */ + #define R_ETHSW_BR_CONTROL_P1_TX_VERIFY_TIME_Msk (0x7f00UL) /*!< TX_VERIFY_TIME (Bitfield-Mask: 0x7f) */ + #define R_ETHSW_BR_CONTROL_P1_RX_STRICT_PRE_Pos (16UL) /*!< RX_STRICT_PRE (Bit 16) */ + #define R_ETHSW_BR_CONTROL_P1_RX_STRICT_PRE_Msk (0x10000UL) /*!< RX_STRICT_PRE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P1_RX_BR_SMD_DIS_Pos (17UL) /*!< RX_BR_SMD_DIS (Bit 17) */ + #define R_ETHSW_BR_CONTROL_P1_RX_BR_SMD_DIS_Msk (0x20000UL) /*!< RX_BR_SMD_DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P1_RX_STRICT_BR_CTL_Pos (18UL) /*!< RX_STRICT_BR_CTL (Bit 18) */ + #define R_ETHSW_BR_CONTROL_P1_RX_STRICT_BR_CTL_Msk (0x40000UL) /*!< RX_STRICT_BR_CTL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P1_TX_MCRC_INV_Pos (19UL) /*!< TX_MCRC_INV (Bit 19) */ + #define R_ETHSW_BR_CONTROL_P1_TX_MCRC_INV_Msk (0x80000UL) /*!< TX_MCRC_INV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P1_RX_MCRC_INV_Pos (20UL) /*!< RX_MCRC_INV (Bit 20) */ + #define R_ETHSW_BR_CONTROL_P1_RX_MCRC_INV_Msk (0x100000UL) /*!< RX_MCRC_INV (Bitfield-Mask: 0x01) */ +/* ===================================================== BR_CONTROL_P2 ===================================================== */ + #define R_ETHSW_BR_CONTROL_P2_PREEMPT_ENA_Pos (0UL) /*!< PREEMPT_ENA (Bit 0) */ + #define R_ETHSW_BR_CONTROL_P2_PREEMPT_ENA_Msk (0x1UL) /*!< PREEMPT_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P2_VERIFY_DIS_Pos (1UL) /*!< VERIFY_DIS (Bit 1) */ + #define R_ETHSW_BR_CONTROL_P2_VERIFY_DIS_Msk (0x2UL) /*!< VERIFY_DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P2_RESPONSE_DIS_Pos (2UL) /*!< RESPONSE_DIS (Bit 2) */ + #define R_ETHSW_BR_CONTROL_P2_RESPONSE_DIS_Msk (0x4UL) /*!< RESPONSE_DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P2_ADDFRAGSIZE_Pos (4UL) /*!< ADDFRAGSIZE (Bit 4) */ + #define R_ETHSW_BR_CONTROL_P2_ADDFRAGSIZE_Msk (0x30UL) /*!< ADDFRAGSIZE (Bitfield-Mask: 0x03) */ + #define R_ETHSW_BR_CONTROL_P2_TX_VERIFY_TIME_Pos (8UL) /*!< TX_VERIFY_TIME (Bit 8) */ + #define R_ETHSW_BR_CONTROL_P2_TX_VERIFY_TIME_Msk (0x7f00UL) /*!< TX_VERIFY_TIME (Bitfield-Mask: 0x7f) */ + #define R_ETHSW_BR_CONTROL_P2_RX_STRICT_PRE_Pos (16UL) /*!< RX_STRICT_PRE (Bit 16) */ + #define R_ETHSW_BR_CONTROL_P2_RX_STRICT_PRE_Msk (0x10000UL) /*!< RX_STRICT_PRE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P2_RX_BR_SMD_DIS_Pos (17UL) /*!< RX_BR_SMD_DIS (Bit 17) */ + #define R_ETHSW_BR_CONTROL_P2_RX_BR_SMD_DIS_Msk (0x20000UL) /*!< RX_BR_SMD_DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P2_RX_STRICT_BR_CTL_Pos (18UL) /*!< RX_STRICT_BR_CTL (Bit 18) */ + #define R_ETHSW_BR_CONTROL_P2_RX_STRICT_BR_CTL_Msk (0x40000UL) /*!< RX_STRICT_BR_CTL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P2_TX_MCRC_INV_Pos (19UL) /*!< TX_MCRC_INV (Bit 19) */ + #define R_ETHSW_BR_CONTROL_P2_TX_MCRC_INV_Msk (0x80000UL) /*!< TX_MCRC_INV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_BR_CONTROL_P2_RX_MCRC_INV_Pos (20UL) /*!< RX_MCRC_INV (Bit 20) */ + #define R_ETHSW_BR_CONTROL_P2_RX_MCRC_INV_Msk (0x100000UL) /*!< RX_MCRC_INV (Bitfield-Mask: 0x01) */ +/* ================================================ AFRAMESTRANSMITTEDOK_P0 ================================================ */ + #define R_ETHSW_AFRAMESTRANSMITTEDOK_P0_TXVALIDCOUNT_Pos (0UL) /*!< TXVALIDCOUNT (Bit 0) */ + #define R_ETHSW_AFRAMESTRANSMITTEDOK_P0_TXVALIDCOUNT_Msk (0xffffffffUL) /*!< TXVALIDCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ AFRAMESTRANSMITTEDOK_P1 ================================================ */ + #define R_ETHSW_AFRAMESTRANSMITTEDOK_P1_TXVALIDCOUNT_Pos (0UL) /*!< TXVALIDCOUNT (Bit 0) */ + #define R_ETHSW_AFRAMESTRANSMITTEDOK_P1_TXVALIDCOUNT_Msk (0xffffffffUL) /*!< TXVALIDCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ AFRAMESTRANSMITTEDOK_P2 ================================================ */ + #define R_ETHSW_AFRAMESTRANSMITTEDOK_P2_TXVALIDCOUNT_Pos (0UL) /*!< TXVALIDCOUNT (Bit 0) */ + #define R_ETHSW_AFRAMESTRANSMITTEDOK_P2_TXVALIDCOUNT_Msk (0xffffffffUL) /*!< TXVALIDCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ AFRAMESTRANSMITTEDOK_P3 ================================================ */ + #define R_ETHSW_AFRAMESTRANSMITTEDOK_P3_TXVALIDCOUNT_Pos (0UL) /*!< TXVALIDCOUNT (Bit 0) */ + #define R_ETHSW_AFRAMESTRANSMITTEDOK_P3_TXVALIDCOUNT_Msk (0xffffffffUL) /*!< TXVALIDCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= AFRAMESRECEIVEDOK_P0 ================================================== */ + #define R_ETHSW_AFRAMESRECEIVEDOK_P0_RXVALIDCOUNT_Pos (0UL) /*!< RXVALIDCOUNT (Bit 0) */ + #define R_ETHSW_AFRAMESRECEIVEDOK_P0_RXVALIDCOUNT_Msk (0xffffffffUL) /*!< RXVALIDCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= AFRAMESRECEIVEDOK_P1 ================================================== */ + #define R_ETHSW_AFRAMESRECEIVEDOK_P1_RXVALIDCOUNT_Pos (0UL) /*!< RXVALIDCOUNT (Bit 0) */ + #define R_ETHSW_AFRAMESRECEIVEDOK_P1_RXVALIDCOUNT_Msk (0xffffffffUL) /*!< RXVALIDCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= AFRAMESRECEIVEDOK_P2 ================================================== */ + #define R_ETHSW_AFRAMESRECEIVEDOK_P2_RXVALIDCOUNT_Pos (0UL) /*!< RXVALIDCOUNT (Bit 0) */ + #define R_ETHSW_AFRAMESRECEIVEDOK_P2_RXVALIDCOUNT_Msk (0xffffffffUL) /*!< RXVALIDCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= AFRAMESRECEIVEDOK_P3 ================================================== */ + #define R_ETHSW_AFRAMESRECEIVEDOK_P3_RXVALIDCOUNT_Pos (0UL) /*!< RXVALIDCOUNT (Bit 0) */ + #define R_ETHSW_AFRAMESRECEIVEDOK_P3_RXVALIDCOUNT_Msk (0xffffffffUL) /*!< RXVALIDCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ============================================= AFRAMECHECKSEQUENCEERRORS_P0 ============================================== */ + #define R_ETHSW_AFRAMECHECKSEQUENCEERRORS_P0_FCSERRCOUNT_Pos (0UL) /*!< FCSERRCOUNT (Bit 0) */ + #define R_ETHSW_AFRAMECHECKSEQUENCEERRORS_P0_FCSERRCOUNT_Msk (0xffffffffUL) /*!< FCSERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ============================================= AFRAMECHECKSEQUENCEERRORS_P1 ============================================== */ + #define R_ETHSW_AFRAMECHECKSEQUENCEERRORS_P1_FCSERRCOUNT_Pos (0UL) /*!< FCSERRCOUNT (Bit 0) */ + #define R_ETHSW_AFRAMECHECKSEQUENCEERRORS_P1_FCSERRCOUNT_Msk (0xffffffffUL) /*!< FCSERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ============================================= AFRAMECHECKSEQUENCEERRORS_P2 ============================================== */ + #define R_ETHSW_AFRAMECHECKSEQUENCEERRORS_P2_FCSERRCOUNT_Pos (0UL) /*!< FCSERRCOUNT (Bit 0) */ + #define R_ETHSW_AFRAMECHECKSEQUENCEERRORS_P2_FCSERRCOUNT_Msk (0xffffffffUL) /*!< FCSERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ============================================= AFRAMECHECKSEQUENCEERRORS_P3 ============================================== */ + #define R_ETHSW_AFRAMECHECKSEQUENCEERRORS_P3_FCSERRCOUNT_Pos (0UL) /*!< FCSERRCOUNT (Bit 0) */ + #define R_ETHSW_AFRAMECHECKSEQUENCEERRORS_P3_FCSERRCOUNT_Msk (0xffffffffUL) /*!< FCSERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================== AALIGNMENTERRORS_P0 ================================================== */ + #define R_ETHSW_AALIGNMENTERRORS_P0_ALGNERRCOUNT_Pos (0UL) /*!< ALGNERRCOUNT (Bit 0) */ + #define R_ETHSW_AALIGNMENTERRORS_P0_ALGNERRCOUNT_Msk (0xffffffffUL) /*!< ALGNERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================== AALIGNMENTERRORS_P1 ================================================== */ + #define R_ETHSW_AALIGNMENTERRORS_P1_ALGNERRCOUNT_Pos (0UL) /*!< ALGNERRCOUNT (Bit 0) */ + #define R_ETHSW_AALIGNMENTERRORS_P1_ALGNERRCOUNT_Msk (0xffffffffUL) /*!< ALGNERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================== AALIGNMENTERRORS_P2 ================================================== */ + #define R_ETHSW_AALIGNMENTERRORS_P2_ALGNERRCOUNT_Pos (0UL) /*!< ALGNERRCOUNT (Bit 0) */ + #define R_ETHSW_AALIGNMENTERRORS_P2_ALGNERRCOUNT_Msk (0xffffffffUL) /*!< ALGNERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================== AALIGNMENTERRORS_P3 ================================================== */ + #define R_ETHSW_AALIGNMENTERRORS_P3_ALGNERRCOUNT_Pos (0UL) /*!< ALGNERRCOUNT (Bit 0) */ + #define R_ETHSW_AALIGNMENTERRORS_P3_ALGNERRCOUNT_Msk (0xffffffffUL) /*!< ALGNERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ AOCTETSTRANSMITTEDOK_P0 ================================================ */ + #define R_ETHSW_AOCTETSTRANSMITTEDOK_P0_TXVALIDOCTETS_Pos (0UL) /*!< TXVALIDOCTETS (Bit 0) */ + #define R_ETHSW_AOCTETSTRANSMITTEDOK_P0_TXVALIDOCTETS_Msk (0xffffffffUL) /*!< TXVALIDOCTETS (Bitfield-Mask: 0xffffffff) */ +/* ================================================ AOCTETSTRANSMITTEDOK_P1 ================================================ */ + #define R_ETHSW_AOCTETSTRANSMITTEDOK_P1_TXVALIDOCTETS_Pos (0UL) /*!< TXVALIDOCTETS (Bit 0) */ + #define R_ETHSW_AOCTETSTRANSMITTEDOK_P1_TXVALIDOCTETS_Msk (0xffffffffUL) /*!< TXVALIDOCTETS (Bitfield-Mask: 0xffffffff) */ +/* ================================================ AOCTETSTRANSMITTEDOK_P2 ================================================ */ + #define R_ETHSW_AOCTETSTRANSMITTEDOK_P2_TXVALIDOCTETS_Pos (0UL) /*!< TXVALIDOCTETS (Bit 0) */ + #define R_ETHSW_AOCTETSTRANSMITTEDOK_P2_TXVALIDOCTETS_Msk (0xffffffffUL) /*!< TXVALIDOCTETS (Bitfield-Mask: 0xffffffff) */ +/* ================================================ AOCTETSTRANSMITTEDOK_P3 ================================================ */ + #define R_ETHSW_AOCTETSTRANSMITTEDOK_P3_TXVALIDOCTETS_Pos (0UL) /*!< TXVALIDOCTETS (Bit 0) */ + #define R_ETHSW_AOCTETSTRANSMITTEDOK_P3_TXVALIDOCTETS_Msk (0xffffffffUL) /*!< TXVALIDOCTETS (Bitfield-Mask: 0xffffffff) */ +/* ================================================= AOCTETSRECEIVEDOK_P0 ================================================== */ + #define R_ETHSW_AOCTETSRECEIVEDOK_P0_RXVALIDOCTETS_Pos (0UL) /*!< RXVALIDOCTETS (Bit 0) */ + #define R_ETHSW_AOCTETSRECEIVEDOK_P0_RXVALIDOCTETS_Msk (0xffffffffUL) /*!< RXVALIDOCTETS (Bitfield-Mask: 0xffffffff) */ +/* ================================================= AOCTETSRECEIVEDOK_P1 ================================================== */ + #define R_ETHSW_AOCTETSRECEIVEDOK_P1_RXVALIDOCTETS_Pos (0UL) /*!< RXVALIDOCTETS (Bit 0) */ + #define R_ETHSW_AOCTETSRECEIVEDOK_P1_RXVALIDOCTETS_Msk (0xffffffffUL) /*!< RXVALIDOCTETS (Bitfield-Mask: 0xffffffff) */ +/* ================================================= AOCTETSRECEIVEDOK_P2 ================================================== */ + #define R_ETHSW_AOCTETSRECEIVEDOK_P2_RXVALIDOCTETS_Pos (0UL) /*!< RXVALIDOCTETS (Bit 0) */ + #define R_ETHSW_AOCTETSRECEIVEDOK_P2_RXVALIDOCTETS_Msk (0xffffffffUL) /*!< RXVALIDOCTETS (Bitfield-Mask: 0xffffffff) */ +/* ================================================= AOCTETSRECEIVEDOK_P3 ================================================== */ + #define R_ETHSW_AOCTETSRECEIVEDOK_P3_RXVALIDOCTETS_Pos (0UL) /*!< RXVALIDOCTETS (Bit 0) */ + #define R_ETHSW_AOCTETSRECEIVEDOK_P3_RXVALIDOCTETS_Msk (0xffffffffUL) /*!< RXVALIDOCTETS (Bitfield-Mask: 0xffffffff) */ +/* =============================================== ATXPAUSEMACCTRLFRAMES_P0 ================================================ */ + #define R_ETHSW_ATXPAUSEMACCTRLFRAMES_P0_TXPAUSECOUNT_Pos (0UL) /*!< TXPAUSECOUNT (Bit 0) */ + #define R_ETHSW_ATXPAUSEMACCTRLFRAMES_P0_TXPAUSECOUNT_Msk (0xffffffffUL) /*!< TXPAUSECOUNT (Bitfield-Mask: 0xffffffff) */ +/* =============================================== ATXPAUSEMACCTRLFRAMES_P1 ================================================ */ + #define R_ETHSW_ATXPAUSEMACCTRLFRAMES_P1_TXPAUSECOUNT_Pos (0UL) /*!< TXPAUSECOUNT (Bit 0) */ + #define R_ETHSW_ATXPAUSEMACCTRLFRAMES_P1_TXPAUSECOUNT_Msk (0xffffffffUL) /*!< TXPAUSECOUNT (Bitfield-Mask: 0xffffffff) */ +/* =============================================== ATXPAUSEMACCTRLFRAMES_P2 ================================================ */ + #define R_ETHSW_ATXPAUSEMACCTRLFRAMES_P2_TXPAUSECOUNT_Pos (0UL) /*!< TXPAUSECOUNT (Bit 0) */ + #define R_ETHSW_ATXPAUSEMACCTRLFRAMES_P2_TXPAUSECOUNT_Msk (0xffffffffUL) /*!< TXPAUSECOUNT (Bitfield-Mask: 0xffffffff) */ +/* =============================================== ATXPAUSEMACCTRLFRAMES_P3 ================================================ */ + #define R_ETHSW_ATXPAUSEMACCTRLFRAMES_P3_TXPAUSECOUNT_Pos (0UL) /*!< TXPAUSECOUNT (Bit 0) */ + #define R_ETHSW_ATXPAUSEMACCTRLFRAMES_P3_TXPAUSECOUNT_Msk (0xffffffffUL) /*!< TXPAUSECOUNT (Bitfield-Mask: 0xffffffff) */ +/* =============================================== ARXPAUSEMACCTRLFRAMES_P0 ================================================ */ + #define R_ETHSW_ARXPAUSEMACCTRLFRAMES_P0_RXPAUSECOUNT_Pos (0UL) /*!< RXPAUSECOUNT (Bit 0) */ + #define R_ETHSW_ARXPAUSEMACCTRLFRAMES_P0_RXPAUSECOUNT_Msk (0xffffffffUL) /*!< RXPAUSECOUNT (Bitfield-Mask: 0xffffffff) */ +/* =============================================== ARXPAUSEMACCTRLFRAMES_P1 ================================================ */ + #define R_ETHSW_ARXPAUSEMACCTRLFRAMES_P1_RXPAUSECOUNT_Pos (0UL) /*!< RXPAUSECOUNT (Bit 0) */ + #define R_ETHSW_ARXPAUSEMACCTRLFRAMES_P1_RXPAUSECOUNT_Msk (0xffffffffUL) /*!< RXPAUSECOUNT (Bitfield-Mask: 0xffffffff) */ +/* =============================================== ARXPAUSEMACCTRLFRAMES_P2 ================================================ */ + #define R_ETHSW_ARXPAUSEMACCTRLFRAMES_P2_RXPAUSECOUNT_Pos (0UL) /*!< RXPAUSECOUNT (Bit 0) */ + #define R_ETHSW_ARXPAUSEMACCTRLFRAMES_P2_RXPAUSECOUNT_Msk (0xffffffffUL) /*!< RXPAUSECOUNT (Bitfield-Mask: 0xffffffff) */ +/* =============================================== ARXPAUSEMACCTRLFRAMES_P3 ================================================ */ + #define R_ETHSW_ARXPAUSEMACCTRLFRAMES_P3_RXPAUSECOUNT_Pos (0UL) /*!< RXPAUSECOUNT (Bit 0) */ + #define R_ETHSW_ARXPAUSEMACCTRLFRAMES_P3_RXPAUSECOUNT_Msk (0xffffffffUL) /*!< RXPAUSECOUNT (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== IFINERRORS_P0 ===================================================== */ + #define R_ETHSW_IFINERRORS_P0_INERRCOUNT_Pos (0UL) /*!< INERRCOUNT (Bit 0) */ + #define R_ETHSW_IFINERRORS_P0_INERRCOUNT_Msk (0xffffffffUL) /*!< INERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== IFINERRORS_P1 ===================================================== */ + #define R_ETHSW_IFINERRORS_P1_INERRCOUNT_Pos (0UL) /*!< INERRCOUNT (Bit 0) */ + #define R_ETHSW_IFINERRORS_P1_INERRCOUNT_Msk (0xffffffffUL) /*!< INERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== IFINERRORS_P2 ===================================================== */ + #define R_ETHSW_IFINERRORS_P2_INERRCOUNT_Pos (0UL) /*!< INERRCOUNT (Bit 0) */ + #define R_ETHSW_IFINERRORS_P2_INERRCOUNT_Msk (0xffffffffUL) /*!< INERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== IFINERRORS_P3 ===================================================== */ + #define R_ETHSW_IFINERRORS_P3_INERRCOUNT_Pos (0UL) /*!< INERRCOUNT (Bit 0) */ + #define R_ETHSW_IFINERRORS_P3_INERRCOUNT_Msk (0xffffffffUL) /*!< INERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== IFOUTERRORS_P0 ===================================================== */ + #define R_ETHSW_IFOUTERRORS_P0_OUTERRCOUNT_Pos (0UL) /*!< OUTERRCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTERRORS_P0_OUTERRCOUNT_Msk (0xffffffffUL) /*!< OUTERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== IFOUTERRORS_P1 ===================================================== */ + #define R_ETHSW_IFOUTERRORS_P1_OUTERRCOUNT_Pos (0UL) /*!< OUTERRCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTERRORS_P1_OUTERRCOUNT_Msk (0xffffffffUL) /*!< OUTERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== IFOUTERRORS_P2 ===================================================== */ + #define R_ETHSW_IFOUTERRORS_P2_OUTERRCOUNT_Pos (0UL) /*!< OUTERRCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTERRORS_P2_OUTERRCOUNT_Msk (0xffffffffUL) /*!< OUTERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== IFOUTERRORS_P3 ===================================================== */ + #define R_ETHSW_IFOUTERRORS_P3_OUTERRCOUNT_Pos (0UL) /*!< OUTERRCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTERRORS_P3_OUTERRCOUNT_Msk (0xffffffffUL) /*!< OUTERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== IFINUCASTPKTS_P0 ==================================================== */ + #define R_ETHSW_IFINUCASTPKTS_P0_RXUCASTCOUNT_Pos (0UL) /*!< RXUCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFINUCASTPKTS_P0_RXUCASTCOUNT_Msk (0xffffffffUL) /*!< RXUCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== IFINUCASTPKTS_P1 ==================================================== */ + #define R_ETHSW_IFINUCASTPKTS_P1_RXUCASTCOUNT_Pos (0UL) /*!< RXUCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFINUCASTPKTS_P1_RXUCASTCOUNT_Msk (0xffffffffUL) /*!< RXUCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== IFINUCASTPKTS_P2 ==================================================== */ + #define R_ETHSW_IFINUCASTPKTS_P2_RXUCASTCOUNT_Pos (0UL) /*!< RXUCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFINUCASTPKTS_P2_RXUCASTCOUNT_Msk (0xffffffffUL) /*!< RXUCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== IFINUCASTPKTS_P3 ==================================================== */ + #define R_ETHSW_IFINUCASTPKTS_P3_RXUCASTCOUNT_Pos (0UL) /*!< RXUCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFINUCASTPKTS_P3_RXUCASTCOUNT_Msk (0xffffffffUL) /*!< RXUCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= IFINMULTICASTPKTS_P0 ================================================== */ + #define R_ETHSW_IFINMULTICASTPKTS_P0_RXMCASTCOUNT_Pos (0UL) /*!< RXMCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFINMULTICASTPKTS_P0_RXMCASTCOUNT_Msk (0xffffffffUL) /*!< RXMCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= IFINMULTICASTPKTS_P1 ================================================== */ + #define R_ETHSW_IFINMULTICASTPKTS_P1_RXMCASTCOUNT_Pos (0UL) /*!< RXMCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFINMULTICASTPKTS_P1_RXMCASTCOUNT_Msk (0xffffffffUL) /*!< RXMCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= IFINMULTICASTPKTS_P2 ================================================== */ + #define R_ETHSW_IFINMULTICASTPKTS_P2_RXMCASTCOUNT_Pos (0UL) /*!< RXMCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFINMULTICASTPKTS_P2_RXMCASTCOUNT_Msk (0xffffffffUL) /*!< RXMCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= IFINMULTICASTPKTS_P3 ================================================== */ + #define R_ETHSW_IFINMULTICASTPKTS_P3_RXMCASTCOUNT_Pos (0UL) /*!< RXMCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFINMULTICASTPKTS_P3_RXMCASTCOUNT_Msk (0xffffffffUL) /*!< RXMCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= IFINBROADCASTPKTS_P0 ================================================== */ + #define R_ETHSW_IFINBROADCASTPKTS_P0_RXBCASTCOUNT_Pos (0UL) /*!< RXBCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFINBROADCASTPKTS_P0_RXBCASTCOUNT_Msk (0xffffffffUL) /*!< RXBCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= IFINBROADCASTPKTS_P1 ================================================== */ + #define R_ETHSW_IFINBROADCASTPKTS_P1_RXBCASTCOUNT_Pos (0UL) /*!< RXBCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFINBROADCASTPKTS_P1_RXBCASTCOUNT_Msk (0xffffffffUL) /*!< RXBCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= IFINBROADCASTPKTS_P2 ================================================== */ + #define R_ETHSW_IFINBROADCASTPKTS_P2_RXBCASTCOUNT_Pos (0UL) /*!< RXBCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFINBROADCASTPKTS_P2_RXBCASTCOUNT_Msk (0xffffffffUL) /*!< RXBCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= IFINBROADCASTPKTS_P3 ================================================== */ + #define R_ETHSW_IFINBROADCASTPKTS_P3_RXBCASTCOUNT_Pos (0UL) /*!< RXBCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFINBROADCASTPKTS_P3_RXBCASTCOUNT_Msk (0xffffffffUL) /*!< RXBCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== IFOUTDISCARDS_P0 ==================================================== */ + #define R_ETHSW_IFOUTDISCARDS_P0_DISCOBCOUNT_Pos (0UL) /*!< DISCOBCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTDISCARDS_P0_DISCOBCOUNT_Msk (0xffffffffUL) /*!< DISCOBCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== IFOUTDISCARDS_P1 ==================================================== */ + #define R_ETHSW_IFOUTDISCARDS_P1_DISCOBCOUNT_Pos (0UL) /*!< DISCOBCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTDISCARDS_P1_DISCOBCOUNT_Msk (0xffffffffUL) /*!< DISCOBCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== IFOUTDISCARDS_P2 ==================================================== */ + #define R_ETHSW_IFOUTDISCARDS_P2_DISCOBCOUNT_Pos (0UL) /*!< DISCOBCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTDISCARDS_P2_DISCOBCOUNT_Msk (0xffffffffUL) /*!< DISCOBCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== IFOUTDISCARDS_P3 ==================================================== */ + #define R_ETHSW_IFOUTDISCARDS_P3_DISCOBCOUNT_Pos (0UL) /*!< DISCOBCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTDISCARDS_P3_DISCOBCOUNT_Msk (0xffffffffUL) /*!< DISCOBCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== IFOUTUCASTPKTS_P0 =================================================== */ + #define R_ETHSW_IFOUTUCASTPKTS_P0_TXUCASTCOUNT_Pos (0UL) /*!< TXUCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTUCASTPKTS_P0_TXUCASTCOUNT_Msk (0xffffffffUL) /*!< TXUCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== IFOUTUCASTPKTS_P1 =================================================== */ + #define R_ETHSW_IFOUTUCASTPKTS_P1_TXUCASTCOUNT_Pos (0UL) /*!< TXUCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTUCASTPKTS_P1_TXUCASTCOUNT_Msk (0xffffffffUL) /*!< TXUCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== IFOUTUCASTPKTS_P2 =================================================== */ + #define R_ETHSW_IFOUTUCASTPKTS_P2_TXUCASTCOUNT_Pos (0UL) /*!< TXUCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTUCASTPKTS_P2_TXUCASTCOUNT_Msk (0xffffffffUL) /*!< TXUCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== IFOUTUCASTPKTS_P3 =================================================== */ + #define R_ETHSW_IFOUTUCASTPKTS_P3_TXUCASTCOUNT_Pos (0UL) /*!< TXUCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTUCASTPKTS_P3_TXUCASTCOUNT_Msk (0xffffffffUL) /*!< TXUCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= IFOUTMULTICASTPKTS_P0 ================================================= */ + #define R_ETHSW_IFOUTMULTICASTPKTS_P0_TXMCASTCOUNT_Pos (0UL) /*!< TXMCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTMULTICASTPKTS_P0_TXMCASTCOUNT_Msk (0xffffffffUL) /*!< TXMCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= IFOUTMULTICASTPKTS_P1 ================================================= */ + #define R_ETHSW_IFOUTMULTICASTPKTS_P1_TXMCASTCOUNT_Pos (0UL) /*!< TXMCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTMULTICASTPKTS_P1_TXMCASTCOUNT_Msk (0xffffffffUL) /*!< TXMCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= IFOUTMULTICASTPKTS_P2 ================================================= */ + #define R_ETHSW_IFOUTMULTICASTPKTS_P2_TXMCASTCOUNT_Pos (0UL) /*!< TXMCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTMULTICASTPKTS_P2_TXMCASTCOUNT_Msk (0xffffffffUL) /*!< TXMCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= IFOUTMULTICASTPKTS_P3 ================================================= */ + #define R_ETHSW_IFOUTMULTICASTPKTS_P3_TXMCASTCOUNT_Pos (0UL) /*!< TXMCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTMULTICASTPKTS_P3_TXMCASTCOUNT_Msk (0xffffffffUL) /*!< TXMCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= IFOUTBROADCASTPKTS_P0 ================================================= */ + #define R_ETHSW_IFOUTBROADCASTPKTS_P0_TXBCASTCOUNT_Pos (0UL) /*!< TXBCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTBROADCASTPKTS_P0_TXBCASTCOUNT_Msk (0xffffffffUL) /*!< TXBCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= IFOUTBROADCASTPKTS_P1 ================================================= */ + #define R_ETHSW_IFOUTBROADCASTPKTS_P1_TXBCASTCOUNT_Pos (0UL) /*!< TXBCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTBROADCASTPKTS_P1_TXBCASTCOUNT_Msk (0xffffffffUL) /*!< TXBCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= IFOUTBROADCASTPKTS_P2 ================================================= */ + #define R_ETHSW_IFOUTBROADCASTPKTS_P2_TXBCASTCOUNT_Pos (0UL) /*!< TXBCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTBROADCASTPKTS_P2_TXBCASTCOUNT_Msk (0xffffffffUL) /*!< TXBCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= IFOUTBROADCASTPKTS_P3 ================================================= */ + #define R_ETHSW_IFOUTBROADCASTPKTS_P3_TXBCASTCOUNT_Pos (0UL) /*!< TXBCASTCOUNT (Bit 0) */ + #define R_ETHSW_IFOUTBROADCASTPKTS_P3_TXBCASTCOUNT_Msk (0xffffffffUL) /*!< TXBCASTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ ETHERSTATSDROPEVENTS_P0 ================================================ */ + #define R_ETHSW_ETHERSTATSDROPEVENTS_P0_DROPCOUNT_Pos (0UL) /*!< DROPCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSDROPEVENTS_P0_DROPCOUNT_Msk (0xffffffffUL) /*!< DROPCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ ETHERSTATSDROPEVENTS_P1 ================================================ */ + #define R_ETHSW_ETHERSTATSDROPEVENTS_P1_DROPCOUNT_Pos (0UL) /*!< DROPCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSDROPEVENTS_P1_DROPCOUNT_Msk (0xffffffffUL) /*!< DROPCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ ETHERSTATSDROPEVENTS_P2 ================================================ */ + #define R_ETHSW_ETHERSTATSDROPEVENTS_P2_DROPCOUNT_Pos (0UL) /*!< DROPCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSDROPEVENTS_P2_DROPCOUNT_Msk (0xffffffffUL) /*!< DROPCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ ETHERSTATSDROPEVENTS_P3 ================================================ */ + #define R_ETHSW_ETHERSTATSDROPEVENTS_P3_DROPCOUNT_Pos (0UL) /*!< DROPCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSDROPEVENTS_P3_DROPCOUNT_Msk (0xffffffffUL) /*!< DROPCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================== ETHERSTATSOCTETS_P0 ================================================== */ + #define R_ETHSW_ETHERSTATSOCTETS_P0_ALLOCTETS_Pos (0UL) /*!< ALLOCTETS (Bit 0) */ + #define R_ETHSW_ETHERSTATSOCTETS_P0_ALLOCTETS_Msk (0xffffffffUL) /*!< ALLOCTETS (Bitfield-Mask: 0xffffffff) */ +/* ================================================== ETHERSTATSOCTETS_P1 ================================================== */ + #define R_ETHSW_ETHERSTATSOCTETS_P1_ALLOCTETS_Pos (0UL) /*!< ALLOCTETS (Bit 0) */ + #define R_ETHSW_ETHERSTATSOCTETS_P1_ALLOCTETS_Msk (0xffffffffUL) /*!< ALLOCTETS (Bitfield-Mask: 0xffffffff) */ +/* ================================================== ETHERSTATSOCTETS_P2 ================================================== */ + #define R_ETHSW_ETHERSTATSOCTETS_P2_ALLOCTETS_Pos (0UL) /*!< ALLOCTETS (Bit 0) */ + #define R_ETHSW_ETHERSTATSOCTETS_P2_ALLOCTETS_Msk (0xffffffffUL) /*!< ALLOCTETS (Bitfield-Mask: 0xffffffff) */ +/* ================================================== ETHERSTATSOCTETS_P3 ================================================== */ + #define R_ETHSW_ETHERSTATSOCTETS_P3_ALLOCTETS_Pos (0UL) /*!< ALLOCTETS (Bit 0) */ + #define R_ETHSW_ETHERSTATSOCTETS_P3_ALLOCTETS_Msk (0xffffffffUL) /*!< ALLOCTETS (Bitfield-Mask: 0xffffffff) */ +/* =================================================== ETHERSTATSPKTS_P0 =================================================== */ + #define R_ETHSW_ETHERSTATSPKTS_P0_ALLCOUNT_Pos (0UL) /*!< ALLCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS_P0_ALLCOUNT_Msk (0xffffffffUL) /*!< ALLCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== ETHERSTATSPKTS_P1 =================================================== */ + #define R_ETHSW_ETHERSTATSPKTS_P1_ALLCOUNT_Pos (0UL) /*!< ALLCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS_P1_ALLCOUNT_Msk (0xffffffffUL) /*!< ALLCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== ETHERSTATSPKTS_P2 =================================================== */ + #define R_ETHSW_ETHERSTATSPKTS_P2_ALLCOUNT_Pos (0UL) /*!< ALLCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS_P2_ALLCOUNT_Msk (0xffffffffUL) /*!< ALLCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== ETHERSTATSPKTS_P3 =================================================== */ + #define R_ETHSW_ETHERSTATSPKTS_P3_ALLCOUNT_Pos (0UL) /*!< ALLCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS_P3_ALLCOUNT_Msk (0xffffffffUL) /*!< ALLCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ============================================== ETHERSTATSUNDERSIZEPKTS_P0 =============================================== */ + #define R_ETHSW_ETHERSTATSUNDERSIZEPKTS_P0_TOOSHRTCOUNT_Pos (0UL) /*!< TOOSHRTCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSUNDERSIZEPKTS_P0_TOOSHRTCOUNT_Msk (0xffffffffUL) /*!< TOOSHRTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ============================================== ETHERSTATSUNDERSIZEPKTS_P1 =============================================== */ + #define R_ETHSW_ETHERSTATSUNDERSIZEPKTS_P1_TOOSHRTCOUNT_Pos (0UL) /*!< TOOSHRTCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSUNDERSIZEPKTS_P1_TOOSHRTCOUNT_Msk (0xffffffffUL) /*!< TOOSHRTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ============================================== ETHERSTATSUNDERSIZEPKTS_P2 =============================================== */ + #define R_ETHSW_ETHERSTATSUNDERSIZEPKTS_P2_TOOSHRTCOUNT_Pos (0UL) /*!< TOOSHRTCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSUNDERSIZEPKTS_P2_TOOSHRTCOUNT_Msk (0xffffffffUL) /*!< TOOSHRTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ============================================== ETHERSTATSUNDERSIZEPKTS_P3 =============================================== */ + #define R_ETHSW_ETHERSTATSUNDERSIZEPKTS_P3_TOOSHRTCOUNT_Pos (0UL) /*!< TOOSHRTCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSUNDERSIZEPKTS_P3_TOOSHRTCOUNT_Msk (0xffffffffUL) /*!< TOOSHRTCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =============================================== ETHERSTATSOVERSIZEPKTS_P0 =============================================== */ + #define R_ETHSW_ETHERSTATSOVERSIZEPKTS_P0_TOOLONGCOUNT_Pos (0UL) /*!< TOOLONGCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSOVERSIZEPKTS_P0_TOOLONGCOUNT_Msk (0xffffffffUL) /*!< TOOLONGCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =============================================== ETHERSTATSOVERSIZEPKTS_P1 =============================================== */ + #define R_ETHSW_ETHERSTATSOVERSIZEPKTS_P1_TOOLONGCOUNT_Pos (0UL) /*!< TOOLONGCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSOVERSIZEPKTS_P1_TOOLONGCOUNT_Msk (0xffffffffUL) /*!< TOOLONGCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =============================================== ETHERSTATSOVERSIZEPKTS_P2 =============================================== */ + #define R_ETHSW_ETHERSTATSOVERSIZEPKTS_P2_TOOLONGCOUNT_Pos (0UL) /*!< TOOLONGCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSOVERSIZEPKTS_P2_TOOLONGCOUNT_Msk (0xffffffffUL) /*!< TOOLONGCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =============================================== ETHERSTATSOVERSIZEPKTS_P3 =============================================== */ + #define R_ETHSW_ETHERSTATSOVERSIZEPKTS_P3_TOOLONGCOUNT_Pos (0UL) /*!< TOOLONGCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSOVERSIZEPKTS_P3_TOOLONGCOUNT_Msk (0xffffffffUL) /*!< TOOLONGCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =============================================== ETHERSTATSPKTS64OCTETS_P0 =============================================== */ + #define R_ETHSW_ETHERSTATSPKTS64OCTETS_P0_OCTCNT64_Pos (0UL) /*!< OCTCNT64 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS64OCTETS_P0_OCTCNT64_Msk (0xffffffffUL) /*!< OCTCNT64 (Bitfield-Mask: 0xffffffff) */ +/* =============================================== ETHERSTATSPKTS64OCTETS_P1 =============================================== */ + #define R_ETHSW_ETHERSTATSPKTS64OCTETS_P1_OCTCNT64_Pos (0UL) /*!< OCTCNT64 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS64OCTETS_P1_OCTCNT64_Msk (0xffffffffUL) /*!< OCTCNT64 (Bitfield-Mask: 0xffffffff) */ +/* =============================================== ETHERSTATSPKTS64OCTETS_P2 =============================================== */ + #define R_ETHSW_ETHERSTATSPKTS64OCTETS_P2_OCTCNT64_Pos (0UL) /*!< OCTCNT64 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS64OCTETS_P2_OCTCNT64_Msk (0xffffffffUL) /*!< OCTCNT64 (Bitfield-Mask: 0xffffffff) */ +/* =============================================== ETHERSTATSPKTS64OCTETS_P3 =============================================== */ + #define R_ETHSW_ETHERSTATSPKTS64OCTETS_P3_OCTCNT64_Pos (0UL) /*!< OCTCNT64 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS64OCTETS_P3_OCTCNT64_Msk (0xffffffffUL) /*!< OCTCNT64 (Bitfield-Mask: 0xffffffff) */ +/* ============================================ ETHERSTATSPKTS65TO127OCTETS_P0 ============================================= */ + #define R_ETHSW_ETHERSTATSPKTS65TO127OCTETS_P0_OCTCNT65T127_Pos (0UL) /*!< OCTCNT65T127 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS65TO127OCTETS_P0_OCTCNT65T127_Msk (0xffffffffUL) /*!< OCTCNT65T127 (Bitfield-Mask: 0xffffffff) */ +/* ============================================ ETHERSTATSPKTS65TO127OCTETS_P1 ============================================= */ + #define R_ETHSW_ETHERSTATSPKTS65TO127OCTETS_P1_OCTCNT65T127_Pos (0UL) /*!< OCTCNT65T127 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS65TO127OCTETS_P1_OCTCNT65T127_Msk (0xffffffffUL) /*!< OCTCNT65T127 (Bitfield-Mask: 0xffffffff) */ +/* ============================================ ETHERSTATSPKTS65TO127OCTETS_P2 ============================================= */ + #define R_ETHSW_ETHERSTATSPKTS65TO127OCTETS_P2_OCTCNT65T127_Pos (0UL) /*!< OCTCNT65T127 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS65TO127OCTETS_P2_OCTCNT65T127_Msk (0xffffffffUL) /*!< OCTCNT65T127 (Bitfield-Mask: 0xffffffff) */ +/* ============================================ ETHERSTATSPKTS65TO127OCTETS_P3 ============================================= */ + #define R_ETHSW_ETHERSTATSPKTS65TO127OCTETS_P3_OCTCNT65T127_Pos (0UL) /*!< OCTCNT65T127 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS65TO127OCTETS_P3_OCTCNT65T127_Msk (0xffffffffUL) /*!< OCTCNT65T127 (Bitfield-Mask: 0xffffffff) */ +/* ============================================ ETHERSTATSPKTS128TO255OCTETS_P0 ============================================ */ + #define R_ETHSW_ETHERSTATSPKTS128TO255OCTETS_P0_OCTCNT128T255_Pos (0UL) /*!< OCTCNT128T255 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS128TO255OCTETS_P0_OCTCNT128T255_Msk (0xffffffffUL) /*!< OCTCNT128T255 (Bitfield-Mask: 0xffffffff) */ +/* ============================================ ETHERSTATSPKTS128TO255OCTETS_P1 ============================================ */ + #define R_ETHSW_ETHERSTATSPKTS128TO255OCTETS_P1_OCTCNT128T255_Pos (0UL) /*!< OCTCNT128T255 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS128TO255OCTETS_P1_OCTCNT128T255_Msk (0xffffffffUL) /*!< OCTCNT128T255 (Bitfield-Mask: 0xffffffff) */ +/* ============================================ ETHERSTATSPKTS128TO255OCTETS_P2 ============================================ */ + #define R_ETHSW_ETHERSTATSPKTS128TO255OCTETS_P2_OCTCNT128T255_Pos (0UL) /*!< OCTCNT128T255 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS128TO255OCTETS_P2_OCTCNT128T255_Msk (0xffffffffUL) /*!< OCTCNT128T255 (Bitfield-Mask: 0xffffffff) */ +/* ============================================ ETHERSTATSPKTS128TO255OCTETS_P3 ============================================ */ + #define R_ETHSW_ETHERSTATSPKTS128TO255OCTETS_P3_OCTCNT128T255_Pos (0UL) /*!< OCTCNT128T255 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS128TO255OCTETS_P3_OCTCNT128T255_Msk (0xffffffffUL) /*!< OCTCNT128T255 (Bitfield-Mask: 0xffffffff) */ +/* ============================================ ETHERSTATSPKTS256TO511OCTETS_P0 ============================================ */ + #define R_ETHSW_ETHERSTATSPKTS256TO511OCTETS_P0_OCTCNT256T511_Pos (0UL) /*!< OCTCNT256T511 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS256TO511OCTETS_P0_OCTCNT256T511_Msk (0xffffffffUL) /*!< OCTCNT256T511 (Bitfield-Mask: 0xffffffff) */ +/* ============================================ ETHERSTATSPKTS256TO511OCTETS_P1 ============================================ */ + #define R_ETHSW_ETHERSTATSPKTS256TO511OCTETS_P1_OCTCNT256T511_Pos (0UL) /*!< OCTCNT256T511 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS256TO511OCTETS_P1_OCTCNT256T511_Msk (0xffffffffUL) /*!< OCTCNT256T511 (Bitfield-Mask: 0xffffffff) */ +/* ============================================ ETHERSTATSPKTS256TO511OCTETS_P2 ============================================ */ + #define R_ETHSW_ETHERSTATSPKTS256TO511OCTETS_P2_OCTCNT256T511_Pos (0UL) /*!< OCTCNT256T511 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS256TO511OCTETS_P2_OCTCNT256T511_Msk (0xffffffffUL) /*!< OCTCNT256T511 (Bitfield-Mask: 0xffffffff) */ +/* ============================================ ETHERSTATSPKTS256TO511OCTETS_P3 ============================================ */ + #define R_ETHSW_ETHERSTATSPKTS256TO511OCTETS_P3_OCTCNT256T511_Pos (0UL) /*!< OCTCNT256T511 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS256TO511OCTETS_P3_OCTCNT256T511_Msk (0xffffffffUL) /*!< OCTCNT256T511 (Bitfield-Mask: 0xffffffff) */ +/* =========================================== ETHERSTATSPKTS512TO1023OCTETS_P0 ============================================ */ + #define R_ETHSW_ETHERSTATSPKTS512TO1023OCTETS_P0_OCTCNT512T1023_Pos (0UL) /*!< OCTCNT512T1023 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS512TO1023OCTETS_P0_OCTCNT512T1023_Msk (0xffffffffUL) /*!< OCTCNT512T1023 (Bitfield-Mask: 0xffffffff) */ +/* =========================================== ETHERSTATSPKTS512TO1023OCTETS_P1 ============================================ */ + #define R_ETHSW_ETHERSTATSPKTS512TO1023OCTETS_P1_OCTCNT512T1023_Pos (0UL) /*!< OCTCNT512T1023 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS512TO1023OCTETS_P1_OCTCNT512T1023_Msk (0xffffffffUL) /*!< OCTCNT512T1023 (Bitfield-Mask: 0xffffffff) */ +/* =========================================== ETHERSTATSPKTS512TO1023OCTETS_P2 ============================================ */ + #define R_ETHSW_ETHERSTATSPKTS512TO1023OCTETS_P2_OCTCNT512T1023_Pos (0UL) /*!< OCTCNT512T1023 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS512TO1023OCTETS_P2_OCTCNT512T1023_Msk (0xffffffffUL) /*!< OCTCNT512T1023 (Bitfield-Mask: 0xffffffff) */ +/* =========================================== ETHERSTATSPKTS512TO1023OCTETS_P3 ============================================ */ + #define R_ETHSW_ETHERSTATSPKTS512TO1023OCTETS_P3_OCTCNT512T1023_Pos (0UL) /*!< OCTCNT512T1023 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS512TO1023OCTETS_P3_OCTCNT512T1023_Msk (0xffffffffUL) /*!< OCTCNT512T1023 (Bitfield-Mask: 0xffffffff) */ +/* =========================================== ETHERSTATSPKTS1024TO1518OCTETS_P0 =========================================== */ + #define R_ETHSW_ETHERSTATSPKTS1024TO1518OCTETS_P0_OCTCNT1024T1518_Pos (0UL) /*!< OCTCNT1024T1518 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS1024TO1518OCTETS_P0_OCTCNT1024T1518_Msk (0xffffffffUL) /*!< OCTCNT1024T1518 (Bitfield-Mask: 0xffffffff) */ +/* =========================================== ETHERSTATSPKTS1024TO1518OCTETS_P1 =========================================== */ + #define R_ETHSW_ETHERSTATSPKTS1024TO1518OCTETS_P1_OCTCNT1024T1518_Pos (0UL) /*!< OCTCNT1024T1518 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS1024TO1518OCTETS_P1_OCTCNT1024T1518_Msk (0xffffffffUL) /*!< OCTCNT1024T1518 (Bitfield-Mask: 0xffffffff) */ +/* =========================================== ETHERSTATSPKTS1024TO1518OCTETS_P2 =========================================== */ + #define R_ETHSW_ETHERSTATSPKTS1024TO1518OCTETS_P2_OCTCNT1024T1518_Pos (0UL) /*!< OCTCNT1024T1518 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS1024TO1518OCTETS_P2_OCTCNT1024T1518_Msk (0xffffffffUL) /*!< OCTCNT1024T1518 (Bitfield-Mask: 0xffffffff) */ +/* =========================================== ETHERSTATSPKTS1024TO1518OCTETS_P3 =========================================== */ + #define R_ETHSW_ETHERSTATSPKTS1024TO1518OCTETS_P3_OCTCNT1024T1518_Pos (0UL) /*!< OCTCNT1024T1518 (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS1024TO1518OCTETS_P3_OCTCNT1024T1518_Msk (0xffffffffUL) /*!< OCTCNT1024T1518 (Bitfield-Mask: 0xffffffff) */ +/* ============================================ ETHERSTATSPKTS1519TOXOCTETS_P0 ============================================= */ + #define R_ETHSW_ETHERSTATSPKTS1519TOXOCTETS_P0_OCTCNT1519TX_Pos (0UL) /*!< OCTCNT1519TX (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS1519TOXOCTETS_P0_OCTCNT1519TX_Msk (0xffffffffUL) /*!< OCTCNT1519TX (Bitfield-Mask: 0xffffffff) */ +/* ============================================ ETHERSTATSPKTS1519TOXOCTETS_P1 ============================================= */ + #define R_ETHSW_ETHERSTATSPKTS1519TOXOCTETS_P1_OCTCNT1519TX_Pos (0UL) /*!< OCTCNT1519TX (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS1519TOXOCTETS_P1_OCTCNT1519TX_Msk (0xffffffffUL) /*!< OCTCNT1519TX (Bitfield-Mask: 0xffffffff) */ +/* ============================================ ETHERSTATSPKTS1519TOXOCTETS_P2 ============================================= */ + #define R_ETHSW_ETHERSTATSPKTS1519TOXOCTETS_P2_OCTCNT1519TX_Pos (0UL) /*!< OCTCNT1519TX (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS1519TOXOCTETS_P2_OCTCNT1519TX_Msk (0xffffffffUL) /*!< OCTCNT1519TX (Bitfield-Mask: 0xffffffff) */ +/* ============================================ ETHERSTATSPKTS1519TOXOCTETS_P3 ============================================= */ + #define R_ETHSW_ETHERSTATSPKTS1519TOXOCTETS_P3_OCTCNT1519TX_Pos (0UL) /*!< OCTCNT1519TX (Bit 0) */ + #define R_ETHSW_ETHERSTATSPKTS1519TOXOCTETS_P3_OCTCNT1519TX_Msk (0xffffffffUL) /*!< OCTCNT1519TX (Bitfield-Mask: 0xffffffff) */ +/* ================================================= ETHERSTATSJABBERS_P0 ================================================== */ + #define R_ETHSW_ETHERSTATSJABBERS_P0_JABBERCOUNT_Pos (0UL) /*!< JABBERCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSJABBERS_P0_JABBERCOUNT_Msk (0xffffffffUL) /*!< JABBERCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= ETHERSTATSJABBERS_P1 ================================================== */ + #define R_ETHSW_ETHERSTATSJABBERS_P1_JABBERCOUNT_Pos (0UL) /*!< JABBERCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSJABBERS_P1_JABBERCOUNT_Msk (0xffffffffUL) /*!< JABBERCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= ETHERSTATSJABBERS_P2 ================================================== */ + #define R_ETHSW_ETHERSTATSJABBERS_P2_JABBERCOUNT_Pos (0UL) /*!< JABBERCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSJABBERS_P2_JABBERCOUNT_Msk (0xffffffffUL) /*!< JABBERCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= ETHERSTATSJABBERS_P3 ================================================== */ + #define R_ETHSW_ETHERSTATSJABBERS_P3_JABBERCOUNT_Pos (0UL) /*!< JABBERCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSJABBERS_P3_JABBERCOUNT_Msk (0xffffffffUL) /*!< JABBERCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ ETHERSTATSFRAGMENTS_P0 ================================================= */ + #define R_ETHSW_ETHERSTATSFRAGMENTS_P0_FRAGCOUNT_Pos (0UL) /*!< FRAGCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSFRAGMENTS_P0_FRAGCOUNT_Msk (0xffffffffUL) /*!< FRAGCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ ETHERSTATSFRAGMENTS_P1 ================================================= */ + #define R_ETHSW_ETHERSTATSFRAGMENTS_P1_FRAGCOUNT_Pos (0UL) /*!< FRAGCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSFRAGMENTS_P1_FRAGCOUNT_Msk (0xffffffffUL) /*!< FRAGCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ ETHERSTATSFRAGMENTS_P2 ================================================= */ + #define R_ETHSW_ETHERSTATSFRAGMENTS_P2_FRAGCOUNT_Pos (0UL) /*!< FRAGCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSFRAGMENTS_P2_FRAGCOUNT_Msk (0xffffffffUL) /*!< FRAGCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ ETHERSTATSFRAGMENTS_P3 ================================================= */ + #define R_ETHSW_ETHERSTATSFRAGMENTS_P3_FRAGCOUNT_Pos (0UL) /*!< FRAGCOUNT (Bit 0) */ + #define R_ETHSW_ETHERSTATSFRAGMENTS_P3_FRAGCOUNT_Msk (0xffffffffUL) /*!< FRAGCOUNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== VLANRECEIVEDOK_P0 =================================================== */ + #define R_ETHSW_VLANRECEIVEDOK_P0_RXVLANTAGCNT_Pos (0UL) /*!< RXVLANTAGCNT (Bit 0) */ + #define R_ETHSW_VLANRECEIVEDOK_P0_RXVLANTAGCNT_Msk (0xffffffffUL) /*!< RXVLANTAGCNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== VLANRECEIVEDOK_P1 =================================================== */ + #define R_ETHSW_VLANRECEIVEDOK_P1_RXVLANTAGCNT_Pos (0UL) /*!< RXVLANTAGCNT (Bit 0) */ + #define R_ETHSW_VLANRECEIVEDOK_P1_RXVLANTAGCNT_Msk (0xffffffffUL) /*!< RXVLANTAGCNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== VLANRECEIVEDOK_P2 =================================================== */ + #define R_ETHSW_VLANRECEIVEDOK_P2_RXVLANTAGCNT_Pos (0UL) /*!< RXVLANTAGCNT (Bit 0) */ + #define R_ETHSW_VLANRECEIVEDOK_P2_RXVLANTAGCNT_Msk (0xffffffffUL) /*!< RXVLANTAGCNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== VLANRECEIVEDOK_P3 =================================================== */ + #define R_ETHSW_VLANRECEIVEDOK_P3_RXVLANTAGCNT_Pos (0UL) /*!< RXVLANTAGCNT (Bit 0) */ + #define R_ETHSW_VLANRECEIVEDOK_P3_RXVLANTAGCNT_Msk (0xffffffffUL) /*!< RXVLANTAGCNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= VLANTRANSMITTEDOK_P0 ================================================== */ + #define R_ETHSW_VLANTRANSMITTEDOK_P0_TXVLANTAGCNT_Pos (0UL) /*!< TXVLANTAGCNT (Bit 0) */ + #define R_ETHSW_VLANTRANSMITTEDOK_P0_TXVLANTAGCNT_Msk (0xffffffffUL) /*!< TXVLANTAGCNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= VLANTRANSMITTEDOK_P1 ================================================== */ + #define R_ETHSW_VLANTRANSMITTEDOK_P1_TXVLANTAGCNT_Pos (0UL) /*!< TXVLANTAGCNT (Bit 0) */ + #define R_ETHSW_VLANTRANSMITTEDOK_P1_TXVLANTAGCNT_Msk (0xffffffffUL) /*!< TXVLANTAGCNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= VLANTRANSMITTEDOK_P2 ================================================== */ + #define R_ETHSW_VLANTRANSMITTEDOK_P2_TXVLANTAGCNT_Pos (0UL) /*!< TXVLANTAGCNT (Bit 0) */ + #define R_ETHSW_VLANTRANSMITTEDOK_P2_TXVLANTAGCNT_Msk (0xffffffffUL) /*!< TXVLANTAGCNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================= VLANTRANSMITTEDOK_P3 ================================================== */ + #define R_ETHSW_VLANTRANSMITTEDOK_P3_TXVLANTAGCNT_Pos (0UL) /*!< TXVLANTAGCNT (Bit 0) */ + #define R_ETHSW_VLANTRANSMITTEDOK_P3_TXVLANTAGCNT_Msk (0xffffffffUL) /*!< TXVLANTAGCNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ FRAMESRETRANSMITTED_P0 ================================================= */ + #define R_ETHSW_FRAMESRETRANSMITTED_P0_RETXCOUNT_Pos (0UL) /*!< RETXCOUNT (Bit 0) */ + #define R_ETHSW_FRAMESRETRANSMITTED_P0_RETXCOUNT_Msk (0xffffffffUL) /*!< RETXCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ FRAMESRETRANSMITTED_P1 ================================================= */ + #define R_ETHSW_FRAMESRETRANSMITTED_P1_RETXCOUNT_Pos (0UL) /*!< RETXCOUNT (Bit 0) */ + #define R_ETHSW_FRAMESRETRANSMITTED_P1_RETXCOUNT_Msk (0xffffffffUL) /*!< RETXCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ FRAMESRETRANSMITTED_P2 ================================================= */ + #define R_ETHSW_FRAMESRETRANSMITTED_P2_RETXCOUNT_Pos (0UL) /*!< RETXCOUNT (Bit 0) */ + #define R_ETHSW_FRAMESRETRANSMITTED_P2_RETXCOUNT_Msk (0xffffffffUL) /*!< RETXCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ FRAMESRETRANSMITTED_P3 ================================================= */ + #define R_ETHSW_FRAMESRETRANSMITTED_P3_RETXCOUNT_Pos (0UL) /*!< RETXCOUNT (Bit 0) */ + #define R_ETHSW_FRAMESRETRANSMITTED_P3_RETXCOUNT_Msk (0xffffffffUL) /*!< RETXCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== STATS_HIWORD_P0 ==================================================== */ + #define R_ETHSW_STATS_HIWORD_P0_STATS_HIWORD_Pos (0UL) /*!< STATS_HIWORD (Bit 0) */ + #define R_ETHSW_STATS_HIWORD_P0_STATS_HIWORD_Msk (0xffffffffUL) /*!< STATS_HIWORD (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== STATS_HIWORD_P1 ==================================================== */ + #define R_ETHSW_STATS_HIWORD_P1_STATS_HIWORD_Pos (0UL) /*!< STATS_HIWORD (Bit 0) */ + #define R_ETHSW_STATS_HIWORD_P1_STATS_HIWORD_Msk (0xffffffffUL) /*!< STATS_HIWORD (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== STATS_HIWORD_P2 ==================================================== */ + #define R_ETHSW_STATS_HIWORD_P2_STATS_HIWORD_Pos (0UL) /*!< STATS_HIWORD (Bit 0) */ + #define R_ETHSW_STATS_HIWORD_P2_STATS_HIWORD_Msk (0xffffffffUL) /*!< STATS_HIWORD (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== STATS_HIWORD_P3 ==================================================== */ + #define R_ETHSW_STATS_HIWORD_P3_STATS_HIWORD_Pos (0UL) /*!< STATS_HIWORD (Bit 0) */ + #define R_ETHSW_STATS_HIWORD_P3_STATS_HIWORD_Msk (0xffffffffUL) /*!< STATS_HIWORD (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== STATS_CTRL_P0 ===================================================== */ + #define R_ETHSW_STATS_CTRL_P0_CLRALL_Pos (0UL) /*!< CLRALL (Bit 0) */ + #define R_ETHSW_STATS_CTRL_P0_CLRALL_Msk (0x1UL) /*!< CLRALL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATS_CTRL_P0_CLRBUSY_Pos (1UL) /*!< CLRBUSY (Bit 1) */ + #define R_ETHSW_STATS_CTRL_P0_CLRBUSY_Msk (0x2UL) /*!< CLRBUSY (Bitfield-Mask: 0x01) */ +/* ===================================================== STATS_CTRL_P1 ===================================================== */ + #define R_ETHSW_STATS_CTRL_P1_CLRALL_Pos (0UL) /*!< CLRALL (Bit 0) */ + #define R_ETHSW_STATS_CTRL_P1_CLRALL_Msk (0x1UL) /*!< CLRALL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATS_CTRL_P1_CLRBUSY_Pos (1UL) /*!< CLRBUSY (Bit 1) */ + #define R_ETHSW_STATS_CTRL_P1_CLRBUSY_Msk (0x2UL) /*!< CLRBUSY (Bitfield-Mask: 0x01) */ +/* ===================================================== STATS_CTRL_P2 ===================================================== */ + #define R_ETHSW_STATS_CTRL_P2_CLRALL_Pos (0UL) /*!< CLRALL (Bit 0) */ + #define R_ETHSW_STATS_CTRL_P2_CLRALL_Msk (0x1UL) /*!< CLRALL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATS_CTRL_P2_CLRBUSY_Pos (1UL) /*!< CLRBUSY (Bit 1) */ + #define R_ETHSW_STATS_CTRL_P2_CLRBUSY_Msk (0x2UL) /*!< CLRBUSY (Bitfield-Mask: 0x01) */ +/* ===================================================== STATS_CTRL_P3 ===================================================== */ + #define R_ETHSW_STATS_CTRL_P3_CLRALL_Pos (0UL) /*!< CLRALL (Bit 0) */ + #define R_ETHSW_STATS_CTRL_P3_CLRALL_Msk (0x1UL) /*!< CLRALL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATS_CTRL_P3_CLRBUSY_Pos (1UL) /*!< CLRBUSY (Bit 1) */ + #define R_ETHSW_STATS_CTRL_P3_CLRBUSY_Msk (0x2UL) /*!< CLRBUSY (Bitfield-Mask: 0x01) */ +/* ================================================ STATS_CLEAR_VALUELO_P0 ================================================= */ + #define R_ETHSW_STATS_CLEAR_VALUELO_P0_STATS_CLEAR_VALUELO_Pos (0UL) /*!< STATS_CLEAR_VALUELO (Bit 0) */ + #define R_ETHSW_STATS_CLEAR_VALUELO_P0_STATS_CLEAR_VALUELO_Msk (0xffffffffUL) /*!< STATS_CLEAR_VALUELO (Bitfield-Mask: 0xffffffff) */ +/* ================================================ STATS_CLEAR_VALUELO_P1 ================================================= */ + #define R_ETHSW_STATS_CLEAR_VALUELO_P1_STATS_CLEAR_VALUELO_Pos (0UL) /*!< STATS_CLEAR_VALUELO (Bit 0) */ + #define R_ETHSW_STATS_CLEAR_VALUELO_P1_STATS_CLEAR_VALUELO_Msk (0xffffffffUL) /*!< STATS_CLEAR_VALUELO (Bitfield-Mask: 0xffffffff) */ +/* ================================================ STATS_CLEAR_VALUELO_P2 ================================================= */ + #define R_ETHSW_STATS_CLEAR_VALUELO_P2_STATS_CLEAR_VALUELO_Pos (0UL) /*!< STATS_CLEAR_VALUELO (Bit 0) */ + #define R_ETHSW_STATS_CLEAR_VALUELO_P2_STATS_CLEAR_VALUELO_Msk (0xffffffffUL) /*!< STATS_CLEAR_VALUELO (Bitfield-Mask: 0xffffffff) */ +/* ================================================ STATS_CLEAR_VALUELO_P3 ================================================= */ + #define R_ETHSW_STATS_CLEAR_VALUELO_P3_STATS_CLEAR_VALUELO_Pos (0UL) /*!< STATS_CLEAR_VALUELO (Bit 0) */ + #define R_ETHSW_STATS_CLEAR_VALUELO_P3_STATS_CLEAR_VALUELO_Msk (0xffffffffUL) /*!< STATS_CLEAR_VALUELO (Bitfield-Mask: 0xffffffff) */ +/* ================================================ STATS_CLEAR_VALUEHI_P0 ================================================= */ + #define R_ETHSW_STATS_CLEAR_VALUEHI_P0_STATS_CLEAR_VALUEHI_Pos (0UL) /*!< STATS_CLEAR_VALUEHI (Bit 0) */ + #define R_ETHSW_STATS_CLEAR_VALUEHI_P0_STATS_CLEAR_VALUEHI_Msk (0xffffffffUL) /*!< STATS_CLEAR_VALUEHI (Bitfield-Mask: 0xffffffff) */ +/* ================================================ STATS_CLEAR_VALUEHI_P1 ================================================= */ + #define R_ETHSW_STATS_CLEAR_VALUEHI_P1_STATS_CLEAR_VALUEHI_Pos (0UL) /*!< STATS_CLEAR_VALUEHI (Bit 0) */ + #define R_ETHSW_STATS_CLEAR_VALUEHI_P1_STATS_CLEAR_VALUEHI_Msk (0xffffffffUL) /*!< STATS_CLEAR_VALUEHI (Bitfield-Mask: 0xffffffff) */ +/* ================================================ STATS_CLEAR_VALUEHI_P2 ================================================= */ + #define R_ETHSW_STATS_CLEAR_VALUEHI_P2_STATS_CLEAR_VALUEHI_Pos (0UL) /*!< STATS_CLEAR_VALUEHI (Bit 0) */ + #define R_ETHSW_STATS_CLEAR_VALUEHI_P2_STATS_CLEAR_VALUEHI_Msk (0xffffffffUL) /*!< STATS_CLEAR_VALUEHI (Bitfield-Mask: 0xffffffff) */ +/* ================================================ STATS_CLEAR_VALUEHI_P3 ================================================= */ + #define R_ETHSW_STATS_CLEAR_VALUEHI_P3_STATS_CLEAR_VALUEHI_Pos (0UL) /*!< STATS_CLEAR_VALUEHI (Bit 0) */ + #define R_ETHSW_STATS_CLEAR_VALUEHI_P3_STATS_CLEAR_VALUEHI_Msk (0xffffffffUL) /*!< STATS_CLEAR_VALUEHI (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== ADEFERRED_P0 ====================================================== */ + #define R_ETHSW_ADEFERRED_P0_DEFERCOUNT_Pos (0UL) /*!< DEFERCOUNT (Bit 0) */ + #define R_ETHSW_ADEFERRED_P0_DEFERCOUNT_Msk (0xffffffffUL) /*!< DEFERCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== ADEFERRED_P1 ====================================================== */ + #define R_ETHSW_ADEFERRED_P1_DEFERCOUNT_Pos (0UL) /*!< DEFERCOUNT (Bit 0) */ + #define R_ETHSW_ADEFERRED_P1_DEFERCOUNT_Msk (0xffffffffUL) /*!< DEFERCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== ADEFERRED_P2 ====================================================== */ + #define R_ETHSW_ADEFERRED_P2_DEFERCOUNT_Pos (0UL) /*!< DEFERCOUNT (Bit 0) */ + #define R_ETHSW_ADEFERRED_P2_DEFERCOUNT_Msk (0xffffffffUL) /*!< DEFERCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== ADEFERRED_P3 ====================================================== */ + #define R_ETHSW_ADEFERRED_P3_DEFERCOUNT_Pos (0UL) /*!< DEFERCOUNT (Bit 0) */ + #define R_ETHSW_ADEFERRED_P3_DEFERCOUNT_Msk (0xffffffffUL) /*!< DEFERCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ AMULTIPLECOLLISIONS_P0 ================================================= */ + #define R_ETHSW_AMULTIPLECOLLISIONS_P0_COUNTAFTMLTCOLL_Pos (0UL) /*!< COUNTAFTMLTCOLL (Bit 0) */ + #define R_ETHSW_AMULTIPLECOLLISIONS_P0_COUNTAFTMLTCOLL_Msk (0xffffffffUL) /*!< COUNTAFTMLTCOLL (Bitfield-Mask: 0xffffffff) */ +/* ================================================ AMULTIPLECOLLISIONS_P1 ================================================= */ + #define R_ETHSW_AMULTIPLECOLLISIONS_P1_COUNTAFTMLTCOLL_Pos (0UL) /*!< COUNTAFTMLTCOLL (Bit 0) */ + #define R_ETHSW_AMULTIPLECOLLISIONS_P1_COUNTAFTMLTCOLL_Msk (0xffffffffUL) /*!< COUNTAFTMLTCOLL (Bitfield-Mask: 0xffffffff) */ +/* ================================================ AMULTIPLECOLLISIONS_P2 ================================================= */ + #define R_ETHSW_AMULTIPLECOLLISIONS_P2_COUNTAFTMLTCOLL_Pos (0UL) /*!< COUNTAFTMLTCOLL (Bit 0) */ + #define R_ETHSW_AMULTIPLECOLLISIONS_P2_COUNTAFTMLTCOLL_Msk (0xffffffffUL) /*!< COUNTAFTMLTCOLL (Bitfield-Mask: 0xffffffff) */ +/* ================================================ AMULTIPLECOLLISIONS_P3 ================================================= */ + #define R_ETHSW_AMULTIPLECOLLISIONS_P3_COUNTAFTMLTCOLL_Pos (0UL) /*!< COUNTAFTMLTCOLL (Bit 0) */ + #define R_ETHSW_AMULTIPLECOLLISIONS_P3_COUNTAFTMLTCOLL_Msk (0xffffffffUL) /*!< COUNTAFTMLTCOLL (Bitfield-Mask: 0xffffffff) */ +/* ================================================= ASINGLECOLLISIONS_P0 ================================================== */ + #define R_ETHSW_ASINGLECOLLISIONS_P0_COUNTAFTSNGLCOLL_Pos (0UL) /*!< COUNTAFTSNGLCOLL (Bit 0) */ + #define R_ETHSW_ASINGLECOLLISIONS_P0_COUNTAFTSNGLCOLL_Msk (0xffffffffUL) /*!< COUNTAFTSNGLCOLL (Bitfield-Mask: 0xffffffff) */ +/* ================================================= ASINGLECOLLISIONS_P1 ================================================== */ + #define R_ETHSW_ASINGLECOLLISIONS_P1_COUNTAFTSNGLCOLL_Pos (0UL) /*!< COUNTAFTSNGLCOLL (Bit 0) */ + #define R_ETHSW_ASINGLECOLLISIONS_P1_COUNTAFTSNGLCOLL_Msk (0xffffffffUL) /*!< COUNTAFTSNGLCOLL (Bitfield-Mask: 0xffffffff) */ +/* ================================================= ASINGLECOLLISIONS_P2 ================================================== */ + #define R_ETHSW_ASINGLECOLLISIONS_P2_COUNTAFTSNGLCOLL_Pos (0UL) /*!< COUNTAFTSNGLCOLL (Bit 0) */ + #define R_ETHSW_ASINGLECOLLISIONS_P2_COUNTAFTSNGLCOLL_Msk (0xffffffffUL) /*!< COUNTAFTSNGLCOLL (Bitfield-Mask: 0xffffffff) */ +/* ================================================= ASINGLECOLLISIONS_P3 ================================================== */ + #define R_ETHSW_ASINGLECOLLISIONS_P3_COUNTAFTSNGLCOLL_Pos (0UL) /*!< COUNTAFTSNGLCOLL (Bit 0) */ + #define R_ETHSW_ASINGLECOLLISIONS_P3_COUNTAFTSNGLCOLL_Msk (0xffffffffUL) /*!< COUNTAFTSNGLCOLL (Bitfield-Mask: 0xffffffff) */ +/* ================================================== ALATECOLLISIONS_P0 =================================================== */ + #define R_ETHSW_ALATECOLLISIONS_P0_LATECOLLCOUNT_Pos (0UL) /*!< LATECOLLCOUNT (Bit 0) */ + #define R_ETHSW_ALATECOLLISIONS_P0_LATECOLLCOUNT_Msk (0xffffffffUL) /*!< LATECOLLCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================== ALATECOLLISIONS_P1 =================================================== */ + #define R_ETHSW_ALATECOLLISIONS_P1_LATECOLLCOUNT_Pos (0UL) /*!< LATECOLLCOUNT (Bit 0) */ + #define R_ETHSW_ALATECOLLISIONS_P1_LATECOLLCOUNT_Msk (0xffffffffUL) /*!< LATECOLLCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================== ALATECOLLISIONS_P2 =================================================== */ + #define R_ETHSW_ALATECOLLISIONS_P2_LATECOLLCOUNT_Pos (0UL) /*!< LATECOLLCOUNT (Bit 0) */ + #define R_ETHSW_ALATECOLLISIONS_P2_LATECOLLCOUNT_Msk (0xffffffffUL) /*!< LATECOLLCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================== ALATECOLLISIONS_P3 =================================================== */ + #define R_ETHSW_ALATECOLLISIONS_P3_LATECOLLCOUNT_Pos (0UL) /*!< LATECOLLCOUNT (Bit 0) */ + #define R_ETHSW_ALATECOLLISIONS_P3_LATECOLLCOUNT_Msk (0xffffffffUL) /*!< LATECOLLCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ AEXCESSIVECOLLISIONS_P0 ================================================ */ + #define R_ETHSW_AEXCESSIVECOLLISIONS_P0_EXCCOLLCOUNT_Pos (0UL) /*!< EXCCOLLCOUNT (Bit 0) */ + #define R_ETHSW_AEXCESSIVECOLLISIONS_P0_EXCCOLLCOUNT_Msk (0xffffffffUL) /*!< EXCCOLLCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ AEXCESSIVECOLLISIONS_P1 ================================================ */ + #define R_ETHSW_AEXCESSIVECOLLISIONS_P1_EXCCOLLCOUNT_Pos (0UL) /*!< EXCCOLLCOUNT (Bit 0) */ + #define R_ETHSW_AEXCESSIVECOLLISIONS_P1_EXCCOLLCOUNT_Msk (0xffffffffUL) /*!< EXCCOLLCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ AEXCESSIVECOLLISIONS_P2 ================================================ */ + #define R_ETHSW_AEXCESSIVECOLLISIONS_P2_EXCCOLLCOUNT_Pos (0UL) /*!< EXCCOLLCOUNT (Bit 0) */ + #define R_ETHSW_AEXCESSIVECOLLISIONS_P2_EXCCOLLCOUNT_Msk (0xffffffffUL) /*!< EXCCOLLCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ AEXCESSIVECOLLISIONS_P3 ================================================ */ + #define R_ETHSW_AEXCESSIVECOLLISIONS_P3_EXCCOLLCOUNT_Pos (0UL) /*!< EXCCOLLCOUNT (Bit 0) */ + #define R_ETHSW_AEXCESSIVECOLLISIONS_P3_EXCCOLLCOUNT_Msk (0xffffffffUL) /*!< EXCCOLLCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ ACARRIERSENSEERRORS_P0 ================================================= */ + #define R_ETHSW_ACARRIERSENSEERRORS_P0_CSERRCOUNT_Pos (0UL) /*!< CSERRCOUNT (Bit 0) */ + #define R_ETHSW_ACARRIERSENSEERRORS_P0_CSERRCOUNT_Msk (0xffffffffUL) /*!< CSERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ ACARRIERSENSEERRORS_P1 ================================================= */ + #define R_ETHSW_ACARRIERSENSEERRORS_P1_CSERRCOUNT_Pos (0UL) /*!< CSERRCOUNT (Bit 0) */ + #define R_ETHSW_ACARRIERSENSEERRORS_P1_CSERRCOUNT_Msk (0xffffffffUL) /*!< CSERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ ACARRIERSENSEERRORS_P2 ================================================= */ + #define R_ETHSW_ACARRIERSENSEERRORS_P2_CSERRCOUNT_Pos (0UL) /*!< CSERRCOUNT (Bit 0) */ + #define R_ETHSW_ACARRIERSENSEERRORS_P2_CSERRCOUNT_Msk (0xffffffffUL) /*!< CSERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ================================================ ACARRIERSENSEERRORS_P3 ================================================= */ + #define R_ETHSW_ACARRIERSENSEERRORS_P3_CSERRCOUNT_Pos (0UL) /*!< CSERRCOUNT (Bit 0) */ + #define R_ETHSW_ACARRIERSENSEERRORS_P3_CSERRCOUNT_Msk (0xffffffffUL) /*!< CSERRCOUNT (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P0_QSTMACU0 ====================================================== */ + #define R_ETHSW_P0_QSTMACU0_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P0_QSTMACU0_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P0_QSTMACU0_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P0_QSTMACU0_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QSTMACU1 ====================================================== */ + #define R_ETHSW_P0_QSTMACU1_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P0_QSTMACU1_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P0_QSTMACU1_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P0_QSTMACU1_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QSTMACU2 ====================================================== */ + #define R_ETHSW_P0_QSTMACU2_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P0_QSTMACU2_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P0_QSTMACU2_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P0_QSTMACU2_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QSTMACU3 ====================================================== */ + #define R_ETHSW_P0_QSTMACU3_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P0_QSTMACU3_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P0_QSTMACU3_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P0_QSTMACU3_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QSTMACU4 ====================================================== */ + #define R_ETHSW_P0_QSTMACU4_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P0_QSTMACU4_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P0_QSTMACU4_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P0_QSTMACU4_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QSTMACU5 ====================================================== */ + #define R_ETHSW_P0_QSTMACU5_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P0_QSTMACU5_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P0_QSTMACU5_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P0_QSTMACU5_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QSTMACU6 ====================================================== */ + #define R_ETHSW_P0_QSTMACU6_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P0_QSTMACU6_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P0_QSTMACU6_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P0_QSTMACU6_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QSTMACU7 ====================================================== */ + #define R_ETHSW_P0_QSTMACU7_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P0_QSTMACU7_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P0_QSTMACU7_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P0_QSTMACU7_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QSTMACD0 ====================================================== */ + #define R_ETHSW_P0_QSTMACD0_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P0_QSTMACD0_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P0_QSTMACD1 ====================================================== */ + #define R_ETHSW_P0_QSTMACD1_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P0_QSTMACD1_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P0_QSTMACD2 ====================================================== */ + #define R_ETHSW_P0_QSTMACD2_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P0_QSTMACD2_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P0_QSTMACD3 ====================================================== */ + #define R_ETHSW_P0_QSTMACD3_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P0_QSTMACD3_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P0_QSTMACD4 ====================================================== */ + #define R_ETHSW_P0_QSTMACD4_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P0_QSTMACD4_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P0_QSTMACD5 ====================================================== */ + #define R_ETHSW_P0_QSTMACD5_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P0_QSTMACD5_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P0_QSTMACD6 ====================================================== */ + #define R_ETHSW_P0_QSTMACD6_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P0_QSTMACD6_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P0_QSTMACD7 ====================================================== */ + #define R_ETHSW_P0_QSTMACD7_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P0_QSTMACD7_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P0_QSTMAMU0 ====================================================== */ + #define R_ETHSW_P0_QSTMAMU0_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P0_QSTMAMU0_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QSTMAMU1 ====================================================== */ + #define R_ETHSW_P0_QSTMAMU1_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P0_QSTMAMU1_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QSTMAMU2 ====================================================== */ + #define R_ETHSW_P0_QSTMAMU2_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P0_QSTMAMU2_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QSTMAMU3 ====================================================== */ + #define R_ETHSW_P0_QSTMAMU3_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P0_QSTMAMU3_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QSTMAMU4 ====================================================== */ + #define R_ETHSW_P0_QSTMAMU4_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P0_QSTMAMU4_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QSTMAMU5 ====================================================== */ + #define R_ETHSW_P0_QSTMAMU5_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P0_QSTMAMU5_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QSTMAMU6 ====================================================== */ + #define R_ETHSW_P0_QSTMAMU6_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P0_QSTMAMU6_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QSTMAMU7 ====================================================== */ + #define R_ETHSW_P0_QSTMAMU7_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P0_QSTMAMU7_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QSTMAMD0 ====================================================== */ + #define R_ETHSW_P0_QSTMAMD0_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P0_QSTMAMD0_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P0_QSTMAMD1 ====================================================== */ + #define R_ETHSW_P0_QSTMAMD1_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P0_QSTMAMD1_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P0_QSTMAMD2 ====================================================== */ + #define R_ETHSW_P0_QSTMAMD2_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P0_QSTMAMD2_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P0_QSTMAMD3 ====================================================== */ + #define R_ETHSW_P0_QSTMAMD3_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P0_QSTMAMD3_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P0_QSTMAMD4 ====================================================== */ + #define R_ETHSW_P0_QSTMAMD4_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P0_QSTMAMD4_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P0_QSTMAMD5 ====================================================== */ + #define R_ETHSW_P0_QSTMAMD5_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P0_QSTMAMD5_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P0_QSTMAMD6 ====================================================== */ + #define R_ETHSW_P0_QSTMAMD6_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P0_QSTMAMD6_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P0_QSTMAMD7 ====================================================== */ + #define R_ETHSW_P0_QSTMAMD7_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P0_QSTMAMD7_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P0_QSFTVL0 ======================================================= */ + #define R_ETHSW_P0_QSFTVL0_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P0_QSFTVL0_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P0_QSFTVL0_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P0_QSFTVL0_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTVL0_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P0_QSFTVL0_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTVL0_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P0_QSFTVL0_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P0_QSFTVL1 ======================================================= */ + #define R_ETHSW_P0_QSFTVL1_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P0_QSFTVL1_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P0_QSFTVL1_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P0_QSFTVL1_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTVL1_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P0_QSFTVL1_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTVL1_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P0_QSFTVL1_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P0_QSFTVL2 ======================================================= */ + #define R_ETHSW_P0_QSFTVL2_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P0_QSFTVL2_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P0_QSFTVL2_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P0_QSFTVL2_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTVL2_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P0_QSFTVL2_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTVL2_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P0_QSFTVL2_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P0_QSFTVL3 ======================================================= */ + #define R_ETHSW_P0_QSFTVL3_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P0_QSFTVL3_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P0_QSFTVL3_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P0_QSFTVL3_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTVL3_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P0_QSFTVL3_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTVL3_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P0_QSFTVL3_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P0_QSFTVL4 ======================================================= */ + #define R_ETHSW_P0_QSFTVL4_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P0_QSFTVL4_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P0_QSFTVL4_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P0_QSFTVL4_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTVL4_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P0_QSFTVL4_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTVL4_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P0_QSFTVL4_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P0_QSFTVL5 ======================================================= */ + #define R_ETHSW_P0_QSFTVL5_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P0_QSFTVL5_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P0_QSFTVL5_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P0_QSFTVL5_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTVL5_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P0_QSFTVL5_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTVL5_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P0_QSFTVL5_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P0_QSFTVL6 ======================================================= */ + #define R_ETHSW_P0_QSFTVL6_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P0_QSFTVL6_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P0_QSFTVL6_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P0_QSFTVL6_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTVL6_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P0_QSFTVL6_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTVL6_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P0_QSFTVL6_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P0_QSFTVL7 ======================================================= */ + #define R_ETHSW_P0_QSFTVL7_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P0_QSFTVL7_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P0_QSFTVL7_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P0_QSFTVL7_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTVL7_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P0_QSFTVL7_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTVL7_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P0_QSFTVL7_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P0_QSFTVLM0 ====================================================== */ + #define R_ETHSW_P0_QSFTVLM0_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P0_QSFTVLM0_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P0_QSFTVLM0_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P0_QSFTVLM0_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTVLM0_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P0_QSFTVLM0_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P0_QSFTVLM1 ====================================================== */ + #define R_ETHSW_P0_QSFTVLM1_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P0_QSFTVLM1_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P0_QSFTVLM1_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P0_QSFTVLM1_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTVLM1_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P0_QSFTVLM1_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P0_QSFTVLM2 ====================================================== */ + #define R_ETHSW_P0_QSFTVLM2_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P0_QSFTVLM2_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P0_QSFTVLM2_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P0_QSFTVLM2_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTVLM2_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P0_QSFTVLM2_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P0_QSFTVLM3 ====================================================== */ + #define R_ETHSW_P0_QSFTVLM3_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P0_QSFTVLM3_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P0_QSFTVLM3_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P0_QSFTVLM3_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTVLM3_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P0_QSFTVLM3_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P0_QSFTVLM4 ====================================================== */ + #define R_ETHSW_P0_QSFTVLM4_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P0_QSFTVLM4_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P0_QSFTVLM4_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P0_QSFTVLM4_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTVLM4_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P0_QSFTVLM4_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P0_QSFTVLM5 ====================================================== */ + #define R_ETHSW_P0_QSFTVLM5_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P0_QSFTVLM5_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P0_QSFTVLM5_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P0_QSFTVLM5_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTVLM5_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P0_QSFTVLM5_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P0_QSFTVLM6 ====================================================== */ + #define R_ETHSW_P0_QSFTVLM6_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P0_QSFTVLM6_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P0_QSFTVLM6_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P0_QSFTVLM6_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTVLM6_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P0_QSFTVLM6_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P0_QSFTVLM7 ====================================================== */ + #define R_ETHSW_P0_QSFTVLM7_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P0_QSFTVLM7_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P0_QSFTVLM7_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P0_QSFTVLM7_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTVLM7_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P0_QSFTVLM7_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P0_QSFTBL0 ======================================================= */ + #define R_ETHSW_P0_QSFTBL0_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P0_QSFTBL0_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL0_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P0_QSFTBL0_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTBL0_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P0_QSFTBL0_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL0_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P0_QSFTBL0_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTBL0_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P0_QSFTBL0_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL0_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P0_QSFTBL0_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P0_QSFTBL0_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P0_QSFTBL0_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL0_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P0_QSFTBL0_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QSFTBL1 ======================================================= */ + #define R_ETHSW_P0_QSFTBL1_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P0_QSFTBL1_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL1_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P0_QSFTBL1_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTBL1_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P0_QSFTBL1_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL1_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P0_QSFTBL1_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTBL1_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P0_QSFTBL1_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL1_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P0_QSFTBL1_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P0_QSFTBL1_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P0_QSFTBL1_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL1_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P0_QSFTBL1_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QSFTBL2 ======================================================= */ + #define R_ETHSW_P0_QSFTBL2_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P0_QSFTBL2_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL2_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P0_QSFTBL2_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTBL2_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P0_QSFTBL2_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL2_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P0_QSFTBL2_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTBL2_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P0_QSFTBL2_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL2_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P0_QSFTBL2_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P0_QSFTBL2_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P0_QSFTBL2_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL2_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P0_QSFTBL2_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QSFTBL3 ======================================================= */ + #define R_ETHSW_P0_QSFTBL3_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P0_QSFTBL3_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL3_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P0_QSFTBL3_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTBL3_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P0_QSFTBL3_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL3_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P0_QSFTBL3_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTBL3_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P0_QSFTBL3_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL3_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P0_QSFTBL3_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P0_QSFTBL3_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P0_QSFTBL3_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL3_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P0_QSFTBL3_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QSFTBL4 ======================================================= */ + #define R_ETHSW_P0_QSFTBL4_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P0_QSFTBL4_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL4_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P0_QSFTBL4_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTBL4_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P0_QSFTBL4_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL4_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P0_QSFTBL4_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTBL4_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P0_QSFTBL4_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL4_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P0_QSFTBL4_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P0_QSFTBL4_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P0_QSFTBL4_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL4_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P0_QSFTBL4_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QSFTBL5 ======================================================= */ + #define R_ETHSW_P0_QSFTBL5_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P0_QSFTBL5_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL5_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P0_QSFTBL5_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTBL5_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P0_QSFTBL5_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL5_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P0_QSFTBL5_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTBL5_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P0_QSFTBL5_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL5_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P0_QSFTBL5_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P0_QSFTBL5_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P0_QSFTBL5_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL5_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P0_QSFTBL5_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QSFTBL6 ======================================================= */ + #define R_ETHSW_P0_QSFTBL6_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P0_QSFTBL6_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL6_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P0_QSFTBL6_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTBL6_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P0_QSFTBL6_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL6_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P0_QSFTBL6_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTBL6_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P0_QSFTBL6_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL6_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P0_QSFTBL6_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P0_QSFTBL6_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P0_QSFTBL6_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL6_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P0_QSFTBL6_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QSFTBL7 ======================================================= */ + #define R_ETHSW_P0_QSFTBL7_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P0_QSFTBL7_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL7_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P0_QSFTBL7_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTBL7_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P0_QSFTBL7_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL7_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P0_QSFTBL7_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_QSFTBL7_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P0_QSFTBL7_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL7_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P0_QSFTBL7_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P0_QSFTBL7_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P0_QSFTBL7_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QSFTBL7_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P0_QSFTBL7_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ======================================================= P0_QSMFC0 ======================================================= */ + #define R_ETHSW_P0_QSMFC0_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P0_QSMFC0_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QSMFC1 ======================================================= */ + #define R_ETHSW_P0_QSMFC1_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P0_QSMFC1_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QSMFC2 ======================================================= */ + #define R_ETHSW_P0_QSMFC2_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P0_QSMFC2_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QSMFC3 ======================================================= */ + #define R_ETHSW_P0_QSMFC3_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P0_QSMFC3_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QSMFC4 ======================================================= */ + #define R_ETHSW_P0_QSMFC4_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P0_QSMFC4_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QSMFC5 ======================================================= */ + #define R_ETHSW_P0_QSMFC5_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P0_QSMFC5_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QSMFC6 ======================================================= */ + #define R_ETHSW_P0_QSMFC6_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P0_QSMFC6_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QSMFC7 ======================================================= */ + #define R_ETHSW_P0_QSMFC7_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P0_QSMFC7_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QMSPPC0 ======================================================= */ + #define R_ETHSW_P0_QMSPPC0_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P0_QMSPPC0_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QMSPPC1 ======================================================= */ + #define R_ETHSW_P0_QMSPPC1_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P0_QMSPPC1_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QMSPPC2 ======================================================= */ + #define R_ETHSW_P0_QMSPPC2_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P0_QMSPPC2_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QMSPPC3 ======================================================= */ + #define R_ETHSW_P0_QMSPPC3_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P0_QMSPPC3_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QMSPPC4 ======================================================= */ + #define R_ETHSW_P0_QMSPPC4_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P0_QMSPPC4_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QMSPPC5 ======================================================= */ + #define R_ETHSW_P0_QMSPPC5_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P0_QMSPPC5_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QMSPPC6 ======================================================= */ + #define R_ETHSW_P0_QMSPPC6_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P0_QMSPPC6_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QMSPPC7 ======================================================= */ + #define R_ETHSW_P0_QMSPPC7_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P0_QMSPPC7_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QMSRPC0 ======================================================= */ + #define R_ETHSW_P0_QMSRPC0_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P0_QMSRPC0_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QMSRPC1 ======================================================= */ + #define R_ETHSW_P0_QMSRPC1_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P0_QMSRPC1_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QMSRPC2 ======================================================= */ + #define R_ETHSW_P0_QMSRPC2_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P0_QMSRPC2_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QMSRPC3 ======================================================= */ + #define R_ETHSW_P0_QMSRPC3_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P0_QMSRPC3_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QMSRPC4 ======================================================= */ + #define R_ETHSW_P0_QMSRPC4_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P0_QMSRPC4_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QMSRPC5 ======================================================= */ + #define R_ETHSW_P0_QMSRPC5_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P0_QMSRPC5_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QMSRPC6 ======================================================= */ + #define R_ETHSW_P0_QMSRPC6_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P0_QMSRPC6_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P0_QMSRPC7 ======================================================= */ + #define R_ETHSW_P0_QMSRPC7_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P0_QMSRPC7_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QSEIS ======================================================== */ + #define R_ETHSW_P0_QSEIS_QSMOIS_Pos (0UL) /*!< QSMOIS (Bit 0) */ + #define R_ETHSW_P0_QSEIS_QSMOIS_Msk (0xffUL) /*!< QSMOIS (Bitfield-Mask: 0xff) */ +/* ======================================================= P1_QSEIS ======================================================== */ + #define R_ETHSW_P1_QSEIS_QSMOIS_Pos (0UL) /*!< QSMOIS (Bit 0) */ + #define R_ETHSW_P1_QSEIS_QSMOIS_Msk (0xffUL) /*!< QSMOIS (Bitfield-Mask: 0xff) */ +/* ======================================================= P2_QSEIS ======================================================== */ + #define R_ETHSW_P2_QSEIS_QSMOIS_Pos (0UL) /*!< QSMOIS (Bit 0) */ + #define R_ETHSW_P2_QSEIS_QSMOIS_Msk (0xffUL) /*!< QSMOIS (Bitfield-Mask: 0xff) */ +/* ======================================================= P0_QSEIE ======================================================== */ + #define R_ETHSW_P0_QSEIE_QSMOIE_Pos (0UL) /*!< QSMOIE (Bit 0) */ + #define R_ETHSW_P0_QSEIE_QSMOIE_Msk (0xffUL) /*!< QSMOIE (Bitfield-Mask: 0xff) */ +/* ======================================================= P1_QSEIE ======================================================== */ + #define R_ETHSW_P1_QSEIE_QSMOIE_Pos (0UL) /*!< QSMOIE (Bit 0) */ + #define R_ETHSW_P1_QSEIE_QSMOIE_Msk (0xffUL) /*!< QSMOIE (Bitfield-Mask: 0xff) */ +/* ======================================================= P2_QSEIE ======================================================== */ + #define R_ETHSW_P2_QSEIE_QSMOIE_Pos (0UL) /*!< QSMOIE (Bit 0) */ + #define R_ETHSW_P2_QSEIE_QSMOIE_Msk (0xffUL) /*!< QSMOIE (Bitfield-Mask: 0xff) */ +/* ======================================================= P0_QSEID ======================================================== */ + #define R_ETHSW_P0_QSEID_QSMOID_Pos (0UL) /*!< QSMOID (Bit 0) */ + #define R_ETHSW_P0_QSEID_QSMOID_Msk (0xffUL) /*!< QSMOID (Bitfield-Mask: 0xff) */ +/* ======================================================= P1_QSEID ======================================================== */ + #define R_ETHSW_P1_QSEID_QSMOID_Pos (0UL) /*!< QSMOID (Bit 0) */ + #define R_ETHSW_P1_QSEID_QSMOID_Msk (0xffUL) /*!< QSMOID (Bitfield-Mask: 0xff) */ +/* ======================================================= P2_QSEID ======================================================== */ + #define R_ETHSW_P2_QSEID_QSMOID_Pos (0UL) /*!< QSMOID (Bit 0) */ + #define R_ETHSW_P2_QSEID_QSMOID_Msk (0xffUL) /*!< QSMOID (Bitfield-Mask: 0xff) */ +/* ======================================================= P0_QGMOD ======================================================== */ + #define R_ETHSW_P0_QGMOD_QGMOD_Pos (0UL) /*!< QGMOD (Bit 0) */ + #define R_ETHSW_P0_QGMOD_QGMOD_Msk (0xffUL) /*!< QGMOD (Bitfield-Mask: 0xff) */ +/* ======================================================= P1_QGMOD ======================================================== */ + #define R_ETHSW_P1_QGMOD_QGMOD_Pos (0UL) /*!< QGMOD (Bit 0) */ + #define R_ETHSW_P1_QGMOD_QGMOD_Msk (0xffUL) /*!< QGMOD (Bitfield-Mask: 0xff) */ +/* ======================================================= P2_QGMOD ======================================================== */ + #define R_ETHSW_P2_QGMOD_QGMOD_Pos (0UL) /*!< QGMOD (Bit 0) */ + #define R_ETHSW_P2_QGMOD_QGMOD_Msk (0xffUL) /*!< QGMOD (Bitfield-Mask: 0xff) */ +/* ======================================================= P0_QGPPC ======================================================== */ + #define R_ETHSW_P0_QGPPC_QGPPC_Pos (0UL) /*!< QGPPC (Bit 0) */ + #define R_ETHSW_P0_QGPPC_QGPPC_Msk (0xffffUL) /*!< QGPPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QGPPC ======================================================== */ + #define R_ETHSW_P1_QGPPC_QGPPC_Pos (0UL) /*!< QGPPC (Bit 0) */ + #define R_ETHSW_P1_QGPPC_QGPPC_Msk (0xffffUL) /*!< QGPPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QGPPC ======================================================== */ + #define R_ETHSW_P2_QGPPC_QGPPC_Pos (0UL) /*!< QGPPC (Bit 0) */ + #define R_ETHSW_P2_QGPPC_QGPPC_Msk (0xffffUL) /*!< QGPPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QGDPC0 ======================================================= */ + #define R_ETHSW_P0_QGDPC0_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P0_QGDPC0_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QGDPC1 ======================================================= */ + #define R_ETHSW_P0_QGDPC1_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P0_QGDPC1_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QGDPC2 ======================================================= */ + #define R_ETHSW_P0_QGDPC2_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P0_QGDPC2_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QGDPC3 ======================================================= */ + #define R_ETHSW_P0_QGDPC3_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P0_QGDPC3_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QGDPC4 ======================================================= */ + #define R_ETHSW_P0_QGDPC4_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P0_QGDPC4_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QGDPC5 ======================================================= */ + #define R_ETHSW_P0_QGDPC5_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P0_QGDPC5_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QGDPC6 ======================================================= */ + #define R_ETHSW_P0_QGDPC6_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P0_QGDPC6_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QGDPC7 ======================================================= */ + #define R_ETHSW_P0_QGDPC7_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P0_QGDPC7_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QGEIS ======================================================== */ + #define R_ETHSW_P0_QGEIS_QGMOIS_Pos (0UL) /*!< QGMOIS (Bit 0) */ + #define R_ETHSW_P0_QGEIS_QGMOIS_Msk (0xffUL) /*!< QGMOIS (Bitfield-Mask: 0xff) */ +/* ======================================================= P1_QGEIS ======================================================== */ + #define R_ETHSW_P1_QGEIS_QGMOIS_Pos (0UL) /*!< QGMOIS (Bit 0) */ + #define R_ETHSW_P1_QGEIS_QGMOIS_Msk (0xffUL) /*!< QGMOIS (Bitfield-Mask: 0xff) */ +/* ======================================================= P2_QGEIS ======================================================== */ + #define R_ETHSW_P2_QGEIS_QGMOIS_Pos (0UL) /*!< QGMOIS (Bit 0) */ + #define R_ETHSW_P2_QGEIS_QGMOIS_Msk (0xffUL) /*!< QGMOIS (Bitfield-Mask: 0xff) */ +/* ======================================================= P0_QGEIE ======================================================== */ + #define R_ETHSW_P0_QGEIE_QGMOIE_Pos (0UL) /*!< QGMOIE (Bit 0) */ + #define R_ETHSW_P0_QGEIE_QGMOIE_Msk (0xffUL) /*!< QGMOIE (Bitfield-Mask: 0xff) */ +/* ======================================================= P1_QGEIE ======================================================== */ + #define R_ETHSW_P1_QGEIE_QGMOIE_Pos (0UL) /*!< QGMOIE (Bit 0) */ + #define R_ETHSW_P1_QGEIE_QGMOIE_Msk (0xffUL) /*!< QGMOIE (Bitfield-Mask: 0xff) */ +/* ======================================================= P2_QGEIE ======================================================== */ + #define R_ETHSW_P2_QGEIE_QGMOIE_Pos (0UL) /*!< QGMOIE (Bit 0) */ + #define R_ETHSW_P2_QGEIE_QGMOIE_Msk (0xffUL) /*!< QGMOIE (Bitfield-Mask: 0xff) */ +/* ======================================================= P0_QGEID ======================================================== */ + #define R_ETHSW_P0_QGEID_QGMOID_Pos (0UL) /*!< QGMOID (Bit 0) */ + #define R_ETHSW_P0_QGEID_QGMOID_Msk (0xffUL) /*!< QGMOID (Bitfield-Mask: 0xff) */ +/* ======================================================= P1_QGEID ======================================================== */ + #define R_ETHSW_P1_QGEID_QGMOID_Pos (0UL) /*!< QGMOID (Bit 0) */ + #define R_ETHSW_P1_QGEID_QGMOID_Msk (0xffUL) /*!< QGMOID (Bitfield-Mask: 0xff) */ +/* ======================================================= P2_QGEID ======================================================== */ + #define R_ETHSW_P2_QGEID_QGMOID_Pos (0UL) /*!< QGMOID (Bit 0) */ + #define R_ETHSW_P2_QGEID_QGMOID_Msk (0xffUL) /*!< QGMOID (Bitfield-Mask: 0xff) */ +/* ====================================================== P0_QMDESC0 ======================================================= */ + #define R_ETHSW_P0_QMDESC0_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P0_QMDESC0_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QMDESC0_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P0_QMDESC0_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QMDESC0_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P0_QMDESC0_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QMDESC1 ======================================================= */ + #define R_ETHSW_P0_QMDESC1_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P0_QMDESC1_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QMDESC1_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P0_QMDESC1_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QMDESC1_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P0_QMDESC1_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QMDESC2 ======================================================= */ + #define R_ETHSW_P0_QMDESC2_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P0_QMDESC2_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QMDESC2_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P0_QMDESC2_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QMDESC2_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P0_QMDESC2_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QMDESC3 ======================================================= */ + #define R_ETHSW_P0_QMDESC3_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P0_QMDESC3_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QMDESC3_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P0_QMDESC3_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QMDESC3_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P0_QMDESC3_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QMDESC4 ======================================================= */ + #define R_ETHSW_P0_QMDESC4_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P0_QMDESC4_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QMDESC4_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P0_QMDESC4_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QMDESC4_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P0_QMDESC4_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QMDESC5 ======================================================= */ + #define R_ETHSW_P0_QMDESC5_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P0_QMDESC5_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QMDESC5_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P0_QMDESC5_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QMDESC5_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P0_QMDESC5_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QMDESC6 ======================================================= */ + #define R_ETHSW_P0_QMDESC6_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P0_QMDESC6_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QMDESC6_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P0_QMDESC6_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QMDESC6_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P0_QMDESC6_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QMDESC7 ======================================================= */ + #define R_ETHSW_P0_QMDESC7_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P0_QMDESC7_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QMDESC7_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P0_QMDESC7_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_QMDESC7_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P0_QMDESC7_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P0_QMCBSC0 ======================================================= */ + #define R_ETHSW_P0_QMCBSC0_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P0_QMCBSC0_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P0_QMCBSC1 ======================================================= */ + #define R_ETHSW_P0_QMCBSC1_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P0_QMCBSC1_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P0_QMCBSC2 ======================================================= */ + #define R_ETHSW_P0_QMCBSC2_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P0_QMCBSC2_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P0_QMCBSC3 ======================================================= */ + #define R_ETHSW_P0_QMCBSC3_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P0_QMCBSC3_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P0_QMCBSC4 ======================================================= */ + #define R_ETHSW_P0_QMCBSC4_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P0_QMCBSC4_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P0_QMCBSC5 ======================================================= */ + #define R_ETHSW_P0_QMCBSC5_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P0_QMCBSC5_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P0_QMCBSC6 ======================================================= */ + #define R_ETHSW_P0_QMCBSC6_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P0_QMCBSC6_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P0_QMCBSC7 ======================================================= */ + #define R_ETHSW_P0_QMCBSC7_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P0_QMCBSC7_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P0_QMCIRC0 ======================================================= */ + #define R_ETHSW_P0_QMCIRC0_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P0_QMCIRC0_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P0_QMCIRC1 ======================================================= */ + #define R_ETHSW_P0_QMCIRC1_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P0_QMCIRC1_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P0_QMCIRC2 ======================================================= */ + #define R_ETHSW_P0_QMCIRC2_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P0_QMCIRC2_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P0_QMCIRC3 ======================================================= */ + #define R_ETHSW_P0_QMCIRC3_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P0_QMCIRC3_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P0_QMCIRC4 ======================================================= */ + #define R_ETHSW_P0_QMCIRC4_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P0_QMCIRC4_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P0_QMCIRC5 ======================================================= */ + #define R_ETHSW_P0_QMCIRC5_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P0_QMCIRC5_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P0_QMCIRC6 ======================================================= */ + #define R_ETHSW_P0_QMCIRC6_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P0_QMCIRC6_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P0_QMCIRC7 ======================================================= */ + #define R_ETHSW_P0_QMCIRC7_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P0_QMCIRC7_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ======================================================= P0_QMGPC0 ======================================================= */ + #define R_ETHSW_P0_QMGPC0_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P0_QMGPC0_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QMGPC1 ======================================================= */ + #define R_ETHSW_P0_QMGPC1_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P0_QMGPC1_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QMGPC2 ======================================================= */ + #define R_ETHSW_P0_QMGPC2_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P0_QMGPC2_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QMGPC3 ======================================================= */ + #define R_ETHSW_P0_QMGPC3_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P0_QMGPC3_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QMGPC4 ======================================================= */ + #define R_ETHSW_P0_QMGPC4_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P0_QMGPC4_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QMGPC5 ======================================================= */ + #define R_ETHSW_P0_QMGPC5_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P0_QMGPC5_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QMGPC6 ======================================================= */ + #define R_ETHSW_P0_QMGPC6_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P0_QMGPC6_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QMGPC7 ======================================================= */ + #define R_ETHSW_P0_QMGPC7_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P0_QMGPC7_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QMRPC0 ======================================================= */ + #define R_ETHSW_P0_QMRPC0_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P0_QMRPC0_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QMRPC1 ======================================================= */ + #define R_ETHSW_P0_QMRPC1_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P0_QMRPC1_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QMRPC2 ======================================================= */ + #define R_ETHSW_P0_QMRPC2_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P0_QMRPC2_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QMRPC3 ======================================================= */ + #define R_ETHSW_P0_QMRPC3_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P0_QMRPC3_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QMRPC4 ======================================================= */ + #define R_ETHSW_P0_QMRPC4_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P0_QMRPC4_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QMRPC5 ======================================================= */ + #define R_ETHSW_P0_QMRPC5_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P0_QMRPC5_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QMRPC6 ======================================================= */ + #define R_ETHSW_P0_QMRPC6_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P0_QMRPC6_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P0_QMRPC7 ======================================================= */ + #define R_ETHSW_P0_QMRPC7_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P0_QMRPC7_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================== P0_QMEC ======================================================== */ + #define R_ETHSW_P0_QMEC_ME_Pos (0UL) /*!< ME (Bit 0) */ + #define R_ETHSW_P0_QMEC_ME_Msk (0xffUL) /*!< ME (Bitfield-Mask: 0xff) */ +/* ======================================================== P1_QMEC ======================================================== */ + #define R_ETHSW_P1_QMEC_ME_Pos (0UL) /*!< ME (Bit 0) */ + #define R_ETHSW_P1_QMEC_ME_Msk (0xffUL) /*!< ME (Bitfield-Mask: 0xff) */ +/* ======================================================== P2_QMEC ======================================================== */ + #define R_ETHSW_P2_QMEC_ME_Pos (0UL) /*!< ME (Bit 0) */ + #define R_ETHSW_P2_QMEC_ME_Msk (0xffUL) /*!< ME (Bitfield-Mask: 0xff) */ +/* ======================================================= P0_QMEIS ======================================================== */ + #define R_ETHSW_P0_QMEIS_QRFIS_Pos (0UL) /*!< QRFIS (Bit 0) */ + #define R_ETHSW_P0_QMEIS_QRFIS_Msk (0xffUL) /*!< QRFIS (Bitfield-Mask: 0xff) */ +/* ======================================================= P1_QMEIS ======================================================== */ + #define R_ETHSW_P1_QMEIS_QRFIS_Pos (0UL) /*!< QRFIS (Bit 0) */ + #define R_ETHSW_P1_QMEIS_QRFIS_Msk (0xffUL) /*!< QRFIS (Bitfield-Mask: 0xff) */ +/* ======================================================= P2_QMEIS ======================================================== */ + #define R_ETHSW_P2_QMEIS_QRFIS_Pos (0UL) /*!< QRFIS (Bit 0) */ + #define R_ETHSW_P2_QMEIS_QRFIS_Msk (0xffUL) /*!< QRFIS (Bitfield-Mask: 0xff) */ +/* ======================================================= P0_QMEIE ======================================================== */ + #define R_ETHSW_P0_QMEIE_QRFIE_Pos (0UL) /*!< QRFIE (Bit 0) */ + #define R_ETHSW_P0_QMEIE_QRFIE_Msk (0xffUL) /*!< QRFIE (Bitfield-Mask: 0xff) */ +/* ======================================================= P1_QMEIE ======================================================== */ + #define R_ETHSW_P1_QMEIE_QRFIE_Pos (0UL) /*!< QRFIE (Bit 0) */ + #define R_ETHSW_P1_QMEIE_QRFIE_Msk (0xffUL) /*!< QRFIE (Bitfield-Mask: 0xff) */ +/* ======================================================= P2_QMEIE ======================================================== */ + #define R_ETHSW_P2_QMEIE_QRFIE_Pos (0UL) /*!< QRFIE (Bit 0) */ + #define R_ETHSW_P2_QMEIE_QRFIE_Msk (0xffUL) /*!< QRFIE (Bitfield-Mask: 0xff) */ +/* ======================================================= P0_QMEID ======================================================== */ + #define R_ETHSW_P0_QMEID_QRFID_Pos (0UL) /*!< QRFID (Bit 0) */ + #define R_ETHSW_P0_QMEID_QRFID_Msk (0xffUL) /*!< QRFID (Bitfield-Mask: 0xff) */ +/* ======================================================= P1_QMEID ======================================================== */ + #define R_ETHSW_P1_QMEID_QRFID_Pos (0UL) /*!< QRFID (Bit 0) */ + #define R_ETHSW_P1_QMEID_QRFID_Msk (0xffUL) /*!< QRFID (Bitfield-Mask: 0xff) */ +/* ======================================================= P2_QMEID ======================================================== */ + #define R_ETHSW_P2_QMEID_QRFID_Pos (0UL) /*!< QRFID (Bit 0) */ + #define R_ETHSW_P2_QMEID_QRFID_Msk (0xffUL) /*!< QRFID (Bitfield-Mask: 0xff) */ +/* ===================================================== P0_PCP_REMAP ====================================================== */ + #define R_ETHSW_P0_PCP_REMAP_PCP_REMAP0_Pos (0UL) /*!< PCP_REMAP0 (Bit 0) */ + #define R_ETHSW_P0_PCP_REMAP_PCP_REMAP0_Msk (0x7UL) /*!< PCP_REMAP0 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_PCP_REMAP_PCP_REMAP1_Pos (3UL) /*!< PCP_REMAP1 (Bit 3) */ + #define R_ETHSW_P0_PCP_REMAP_PCP_REMAP1_Msk (0x38UL) /*!< PCP_REMAP1 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_PCP_REMAP_PCP_REMAP2_Pos (6UL) /*!< PCP_REMAP2 (Bit 6) */ + #define R_ETHSW_P0_PCP_REMAP_PCP_REMAP2_Msk (0x1c0UL) /*!< PCP_REMAP2 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_PCP_REMAP_PCP_REMAP3_Pos (9UL) /*!< PCP_REMAP3 (Bit 9) */ + #define R_ETHSW_P0_PCP_REMAP_PCP_REMAP3_Msk (0xe00UL) /*!< PCP_REMAP3 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_PCP_REMAP_PCP_REMAP4_Pos (12UL) /*!< PCP_REMAP4 (Bit 12) */ + #define R_ETHSW_P0_PCP_REMAP_PCP_REMAP4_Msk (0x7000UL) /*!< PCP_REMAP4 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_PCP_REMAP_PCP_REMAP5_Pos (15UL) /*!< PCP_REMAP5 (Bit 15) */ + #define R_ETHSW_P0_PCP_REMAP_PCP_REMAP5_Msk (0x38000UL) /*!< PCP_REMAP5 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_PCP_REMAP_PCP_REMAP6_Pos (18UL) /*!< PCP_REMAP6 (Bit 18) */ + #define R_ETHSW_P0_PCP_REMAP_PCP_REMAP6_Msk (0x1c0000UL) /*!< PCP_REMAP6 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_PCP_REMAP_PCP_REMAP7_Pos (21UL) /*!< PCP_REMAP7 (Bit 21) */ + #define R_ETHSW_P0_PCP_REMAP_PCP_REMAP7_Msk (0xe00000UL) /*!< PCP_REMAP7 (Bitfield-Mask: 0x07) */ +/* ===================================================== P1_PCP_REMAP ====================================================== */ + #define R_ETHSW_P1_PCP_REMAP_PCP_REMAP0_Pos (0UL) /*!< PCP_REMAP0 (Bit 0) */ + #define R_ETHSW_P1_PCP_REMAP_PCP_REMAP0_Msk (0x7UL) /*!< PCP_REMAP0 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_PCP_REMAP_PCP_REMAP1_Pos (3UL) /*!< PCP_REMAP1 (Bit 3) */ + #define R_ETHSW_P1_PCP_REMAP_PCP_REMAP1_Msk (0x38UL) /*!< PCP_REMAP1 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_PCP_REMAP_PCP_REMAP2_Pos (6UL) /*!< PCP_REMAP2 (Bit 6) */ + #define R_ETHSW_P1_PCP_REMAP_PCP_REMAP2_Msk (0x1c0UL) /*!< PCP_REMAP2 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_PCP_REMAP_PCP_REMAP3_Pos (9UL) /*!< PCP_REMAP3 (Bit 9) */ + #define R_ETHSW_P1_PCP_REMAP_PCP_REMAP3_Msk (0xe00UL) /*!< PCP_REMAP3 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_PCP_REMAP_PCP_REMAP4_Pos (12UL) /*!< PCP_REMAP4 (Bit 12) */ + #define R_ETHSW_P1_PCP_REMAP_PCP_REMAP4_Msk (0x7000UL) /*!< PCP_REMAP4 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_PCP_REMAP_PCP_REMAP5_Pos (15UL) /*!< PCP_REMAP5 (Bit 15) */ + #define R_ETHSW_P1_PCP_REMAP_PCP_REMAP5_Msk (0x38000UL) /*!< PCP_REMAP5 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_PCP_REMAP_PCP_REMAP6_Pos (18UL) /*!< PCP_REMAP6 (Bit 18) */ + #define R_ETHSW_P1_PCP_REMAP_PCP_REMAP6_Msk (0x1c0000UL) /*!< PCP_REMAP6 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_PCP_REMAP_PCP_REMAP7_Pos (21UL) /*!< PCP_REMAP7 (Bit 21) */ + #define R_ETHSW_P1_PCP_REMAP_PCP_REMAP7_Msk (0xe00000UL) /*!< PCP_REMAP7 (Bitfield-Mask: 0x07) */ +/* ===================================================== P2_PCP_REMAP ====================================================== */ + #define R_ETHSW_P2_PCP_REMAP_PCP_REMAP0_Pos (0UL) /*!< PCP_REMAP0 (Bit 0) */ + #define R_ETHSW_P2_PCP_REMAP_PCP_REMAP0_Msk (0x7UL) /*!< PCP_REMAP0 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_PCP_REMAP_PCP_REMAP1_Pos (3UL) /*!< PCP_REMAP1 (Bit 3) */ + #define R_ETHSW_P2_PCP_REMAP_PCP_REMAP1_Msk (0x38UL) /*!< PCP_REMAP1 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_PCP_REMAP_PCP_REMAP2_Pos (6UL) /*!< PCP_REMAP2 (Bit 6) */ + #define R_ETHSW_P2_PCP_REMAP_PCP_REMAP2_Msk (0x1c0UL) /*!< PCP_REMAP2 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_PCP_REMAP_PCP_REMAP3_Pos (9UL) /*!< PCP_REMAP3 (Bit 9) */ + #define R_ETHSW_P2_PCP_REMAP_PCP_REMAP3_Msk (0xe00UL) /*!< PCP_REMAP3 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_PCP_REMAP_PCP_REMAP4_Pos (12UL) /*!< PCP_REMAP4 (Bit 12) */ + #define R_ETHSW_P2_PCP_REMAP_PCP_REMAP4_Msk (0x7000UL) /*!< PCP_REMAP4 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_PCP_REMAP_PCP_REMAP5_Pos (15UL) /*!< PCP_REMAP5 (Bit 15) */ + #define R_ETHSW_P2_PCP_REMAP_PCP_REMAP5_Msk (0x38000UL) /*!< PCP_REMAP5 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_PCP_REMAP_PCP_REMAP6_Pos (18UL) /*!< PCP_REMAP6 (Bit 18) */ + #define R_ETHSW_P2_PCP_REMAP_PCP_REMAP6_Msk (0x1c0000UL) /*!< PCP_REMAP6 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_PCP_REMAP_PCP_REMAP7_Pos (21UL) /*!< PCP_REMAP7 (Bit 21) */ + #define R_ETHSW_P2_PCP_REMAP_PCP_REMAP7_Msk (0xe00000UL) /*!< PCP_REMAP7 (Bitfield-Mask: 0x07) */ +/* ====================================================== P0_VLAN_TAG ====================================================== */ + #define R_ETHSW_P0_VLAN_TAG_VID_Pos (0UL) /*!< VID (Bit 0) */ + #define R_ETHSW_P0_VLAN_TAG_VID_Msk (0xfffUL) /*!< VID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P0_VLAN_TAG_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P0_VLAN_TAG_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_VLAN_TAG_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P0_VLAN_TAG_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P0_VLAN_TAG_TPID_Pos (16UL) /*!< TPID (Bit 16) */ + #define R_ETHSW_P0_VLAN_TAG_TPID_Msk (0xffff0000UL) /*!< TPID (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_VLAN_TAG ====================================================== */ + #define R_ETHSW_P1_VLAN_TAG_VID_Pos (0UL) /*!< VID (Bit 0) */ + #define R_ETHSW_P1_VLAN_TAG_VID_Msk (0xfffUL) /*!< VID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P1_VLAN_TAG_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P1_VLAN_TAG_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_VLAN_TAG_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P1_VLAN_TAG_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_VLAN_TAG_TPID_Pos (16UL) /*!< TPID (Bit 16) */ + #define R_ETHSW_P1_VLAN_TAG_TPID_Msk (0xffff0000UL) /*!< TPID (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_VLAN_TAG ====================================================== */ + #define R_ETHSW_P2_VLAN_TAG_VID_Pos (0UL) /*!< VID (Bit 0) */ + #define R_ETHSW_P2_VLAN_TAG_VID_Msk (0xfffUL) /*!< VID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P2_VLAN_TAG_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P2_VLAN_TAG_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_VLAN_TAG_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P2_VLAN_TAG_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_VLAN_TAG_TPID_Pos (16UL) /*!< TPID (Bit 16) */ + #define R_ETHSW_P2_VLAN_TAG_TPID_Msk (0xffff0000UL) /*!< TPID (Bitfield-Mask: 0xffff) */ +/* ===================================================== P0_VLAN_MODE ====================================================== */ + #define R_ETHSW_P0_VLAN_MODE_VITM_Pos (0UL) /*!< VITM (Bit 0) */ + #define R_ETHSW_P0_VLAN_MODE_VITM_Msk (0x3UL) /*!< VITM (Bitfield-Mask: 0x03) */ + #define R_ETHSW_P0_VLAN_MODE_VICM_Pos (2UL) /*!< VICM (Bit 2) */ + #define R_ETHSW_P0_VLAN_MODE_VICM_Msk (0xcUL) /*!< VICM (Bitfield-Mask: 0x03) */ +/* ===================================================== P1_VLAN_MODE ====================================================== */ + #define R_ETHSW_P1_VLAN_MODE_VITM_Pos (0UL) /*!< VITM (Bit 0) */ + #define R_ETHSW_P1_VLAN_MODE_VITM_Msk (0x3UL) /*!< VITM (Bitfield-Mask: 0x03) */ + #define R_ETHSW_P1_VLAN_MODE_VICM_Pos (2UL) /*!< VICM (Bit 2) */ + #define R_ETHSW_P1_VLAN_MODE_VICM_Msk (0xcUL) /*!< VICM (Bitfield-Mask: 0x03) */ +/* ===================================================== P2_VLAN_MODE ====================================================== */ + #define R_ETHSW_P2_VLAN_MODE_VITM_Pos (0UL) /*!< VITM (Bit 0) */ + #define R_ETHSW_P2_VLAN_MODE_VITM_Msk (0x3UL) /*!< VITM (Bitfield-Mask: 0x03) */ + #define R_ETHSW_P2_VLAN_MODE_VICM_Pos (2UL) /*!< VICM (Bit 2) */ + #define R_ETHSW_P2_VLAN_MODE_VICM_Msk (0xcUL) /*!< VICM (Bitfield-Mask: 0x03) */ +/* ==================================================== P0_VIC_DROP_CNT ==================================================== */ + #define R_ETHSW_P0_VIC_DROP_CNT_VIC_DROP_CNT_Pos (0UL) /*!< VIC_DROP_CNT (Bit 0) */ + #define R_ETHSW_P0_VIC_DROP_CNT_VIC_DROP_CNT_Msk (0xffffUL) /*!< VIC_DROP_CNT (Bitfield-Mask: 0xffff) */ +/* ==================================================== P1_VIC_DROP_CNT ==================================================== */ + #define R_ETHSW_P1_VIC_DROP_CNT_VIC_DROP_CNT_Pos (0UL) /*!< VIC_DROP_CNT (Bit 0) */ + #define R_ETHSW_P1_VIC_DROP_CNT_VIC_DROP_CNT_Msk (0xffffUL) /*!< VIC_DROP_CNT (Bitfield-Mask: 0xffff) */ +/* ==================================================== P2_VIC_DROP_CNT ==================================================== */ + #define R_ETHSW_P2_VIC_DROP_CNT_VIC_DROP_CNT_Pos (0UL) /*!< VIC_DROP_CNT (Bit 0) */ + #define R_ETHSW_P2_VIC_DROP_CNT_VIC_DROP_CNT_Msk (0xffffUL) /*!< VIC_DROP_CNT (Bitfield-Mask: 0xffff) */ +/* =================================================== P0_LOOKUP_HIT_CNT =================================================== */ + #define R_ETHSW_P0_LOOKUP_HIT_CNT_LOOKUP_HIT_CNT_Pos (0UL) /*!< LOOKUP_HIT_CNT (Bit 0) */ + #define R_ETHSW_P0_LOOKUP_HIT_CNT_LOOKUP_HIT_CNT_Msk (0xffffffUL) /*!< LOOKUP_HIT_CNT (Bitfield-Mask: 0xffffff) */ +/* =================================================== P1_LOOKUP_HIT_CNT =================================================== */ + #define R_ETHSW_P1_LOOKUP_HIT_CNT_LOOKUP_HIT_CNT_Pos (0UL) /*!< LOOKUP_HIT_CNT (Bit 0) */ + #define R_ETHSW_P1_LOOKUP_HIT_CNT_LOOKUP_HIT_CNT_Msk (0xffffffUL) /*!< LOOKUP_HIT_CNT (Bitfield-Mask: 0xffffff) */ +/* =================================================== P2_LOOKUP_HIT_CNT =================================================== */ + #define R_ETHSW_P2_LOOKUP_HIT_CNT_LOOKUP_HIT_CNT_Pos (0UL) /*!< LOOKUP_HIT_CNT (Bit 0) */ + #define R_ETHSW_P2_LOOKUP_HIT_CNT_LOOKUP_HIT_CNT_Msk (0xffffffUL) /*!< LOOKUP_HIT_CNT (Bitfield-Mask: 0xffffff) */ +/* ==================================================== P0_ERROR_STATUS ==================================================== */ + #define R_ETHSW_P0_ERROR_STATUS_SOPERR_Pos (0UL) /*!< SOPERR (Bit 0) */ + #define R_ETHSW_P0_ERROR_STATUS_SOPERR_Msk (0x1UL) /*!< SOPERR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_ERROR_STATUS_PUNDSZ_Pos (1UL) /*!< PUNDSZ (Bit 1) */ + #define R_ETHSW_P0_ERROR_STATUS_PUNDSZ_Msk (0x2UL) /*!< PUNDSZ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_ERROR_STATUS_POVRSZ_Pos (2UL) /*!< POVRSZ (Bit 2) */ + #define R_ETHSW_P0_ERROR_STATUS_POVRSZ_Msk (0x4UL) /*!< POVRSZ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_ERROR_STATUS_EUNDSZ_Pos (3UL) /*!< EUNDSZ (Bit 3) */ + #define R_ETHSW_P0_ERROR_STATUS_EUNDSZ_Msk (0x8UL) /*!< EUNDSZ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_ERROR_STATUS_EOVRSZ_Pos (4UL) /*!< EOVRSZ (Bit 4) */ + #define R_ETHSW_P0_ERROR_STATUS_EOVRSZ_Msk (0x10UL) /*!< EOVRSZ (Bitfield-Mask: 0x01) */ +/* ==================================================== P1_ERROR_STATUS ==================================================== */ + #define R_ETHSW_P1_ERROR_STATUS_SOPERR_Pos (0UL) /*!< SOPERR (Bit 0) */ + #define R_ETHSW_P1_ERROR_STATUS_SOPERR_Msk (0x1UL) /*!< SOPERR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_ERROR_STATUS_PUNDSZ_Pos (1UL) /*!< PUNDSZ (Bit 1) */ + #define R_ETHSW_P1_ERROR_STATUS_PUNDSZ_Msk (0x2UL) /*!< PUNDSZ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_ERROR_STATUS_POVRSZ_Pos (2UL) /*!< POVRSZ (Bit 2) */ + #define R_ETHSW_P1_ERROR_STATUS_POVRSZ_Msk (0x4UL) /*!< POVRSZ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_ERROR_STATUS_EUNDSZ_Pos (3UL) /*!< EUNDSZ (Bit 3) */ + #define R_ETHSW_P1_ERROR_STATUS_EUNDSZ_Msk (0x8UL) /*!< EUNDSZ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_ERROR_STATUS_EOVRSZ_Pos (4UL) /*!< EOVRSZ (Bit 4) */ + #define R_ETHSW_P1_ERROR_STATUS_EOVRSZ_Msk (0x10UL) /*!< EOVRSZ (Bitfield-Mask: 0x01) */ +/* ==================================================== P2_ERROR_STATUS ==================================================== */ + #define R_ETHSW_P2_ERROR_STATUS_SOPERR_Pos (0UL) /*!< SOPERR (Bit 0) */ + #define R_ETHSW_P2_ERROR_STATUS_SOPERR_Msk (0x1UL) /*!< SOPERR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_ERROR_STATUS_PUNDSZ_Pos (1UL) /*!< PUNDSZ (Bit 1) */ + #define R_ETHSW_P2_ERROR_STATUS_PUNDSZ_Msk (0x2UL) /*!< PUNDSZ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_ERROR_STATUS_POVRSZ_Pos (2UL) /*!< POVRSZ (Bit 2) */ + #define R_ETHSW_P2_ERROR_STATUS_POVRSZ_Msk (0x4UL) /*!< POVRSZ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_ERROR_STATUS_EUNDSZ_Pos (3UL) /*!< EUNDSZ (Bit 3) */ + #define R_ETHSW_P2_ERROR_STATUS_EUNDSZ_Msk (0x8UL) /*!< EUNDSZ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_ERROR_STATUS_EOVRSZ_Pos (4UL) /*!< EOVRSZ (Bit 4) */ + #define R_ETHSW_P2_ERROR_STATUS_EOVRSZ_Msk (0x10UL) /*!< EOVRSZ (Bitfield-Mask: 0x01) */ +/* ===================================================== P0_ERROR_MASK ===================================================== */ + #define R_ETHSW_P0_ERROR_MASK_MSOPERR_Pos (0UL) /*!< MSOPERR (Bit 0) */ + #define R_ETHSW_P0_ERROR_MASK_MSOPERR_Msk (0x1UL) /*!< MSOPERR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_ERROR_MASK_MPUNDSZ_Pos (1UL) /*!< MPUNDSZ (Bit 1) */ + #define R_ETHSW_P0_ERROR_MASK_MPUNDSZ_Msk (0x2UL) /*!< MPUNDSZ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_ERROR_MASK_MPOVRSZ_Pos (2UL) /*!< MPOVRSZ (Bit 2) */ + #define R_ETHSW_P0_ERROR_MASK_MPOVRSZ_Msk (0x4UL) /*!< MPOVRSZ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_ERROR_MASK_MEUNDSZ_Pos (3UL) /*!< MEUNDSZ (Bit 3) */ + #define R_ETHSW_P0_ERROR_MASK_MEUNDSZ_Msk (0x8UL) /*!< MEUNDSZ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P0_ERROR_MASK_MEOVRSZ_Pos (4UL) /*!< MEOVRSZ (Bit 4) */ + #define R_ETHSW_P0_ERROR_MASK_MEOVRSZ_Msk (0x10UL) /*!< MEOVRSZ (Bitfield-Mask: 0x01) */ +/* ===================================================== P1_ERROR_MASK ===================================================== */ + #define R_ETHSW_P1_ERROR_MASK_MSOPERR_Pos (0UL) /*!< MSOPERR (Bit 0) */ + #define R_ETHSW_P1_ERROR_MASK_MSOPERR_Msk (0x1UL) /*!< MSOPERR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_ERROR_MASK_MPUNDSZ_Pos (1UL) /*!< MPUNDSZ (Bit 1) */ + #define R_ETHSW_P1_ERROR_MASK_MPUNDSZ_Msk (0x2UL) /*!< MPUNDSZ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_ERROR_MASK_MPOVRSZ_Pos (2UL) /*!< MPOVRSZ (Bit 2) */ + #define R_ETHSW_P1_ERROR_MASK_MPOVRSZ_Msk (0x4UL) /*!< MPOVRSZ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_ERROR_MASK_MEUNDSZ_Pos (3UL) /*!< MEUNDSZ (Bit 3) */ + #define R_ETHSW_P1_ERROR_MASK_MEUNDSZ_Msk (0x8UL) /*!< MEUNDSZ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_ERROR_MASK_MEOVRSZ_Pos (4UL) /*!< MEOVRSZ (Bit 4) */ + #define R_ETHSW_P1_ERROR_MASK_MEOVRSZ_Msk (0x10UL) /*!< MEOVRSZ (Bitfield-Mask: 0x01) */ +/* ===================================================== P2_ERROR_MASK ===================================================== */ + #define R_ETHSW_P2_ERROR_MASK_MSOPERR_Pos (0UL) /*!< MSOPERR (Bit 0) */ + #define R_ETHSW_P2_ERROR_MASK_MSOPERR_Msk (0x1UL) /*!< MSOPERR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_ERROR_MASK_MPUNDSZ_Pos (1UL) /*!< MPUNDSZ (Bit 1) */ + #define R_ETHSW_P2_ERROR_MASK_MPUNDSZ_Msk (0x2UL) /*!< MPUNDSZ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_ERROR_MASK_MPOVRSZ_Pos (2UL) /*!< MPOVRSZ (Bit 2) */ + #define R_ETHSW_P2_ERROR_MASK_MPOVRSZ_Msk (0x4UL) /*!< MPOVRSZ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_ERROR_MASK_MEUNDSZ_Pos (3UL) /*!< MEUNDSZ (Bit 3) */ + #define R_ETHSW_P2_ERROR_MASK_MEUNDSZ_Msk (0x8UL) /*!< MEUNDSZ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_ERROR_MASK_MEOVRSZ_Pos (4UL) /*!< MEOVRSZ (Bit 4) */ + #define R_ETHSW_P2_ERROR_MASK_MEOVRSZ_Msk (0x10UL) /*!< MEOVRSZ (Bitfield-Mask: 0x01) */ +/* ===================================================== CHANNEL_STATE ===================================================== */ + #define R_ETHSW_CHANNEL_STATE_CH0ACT_Pos (0UL) /*!< CH0ACT (Bit 0) */ + #define R_ETHSW_CHANNEL_STATE_CH0ACT_Msk (0x1UL) /*!< CH0ACT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_CHANNEL_STATE_CH1ACT_Pos (1UL) /*!< CH1ACT (Bit 1) */ + #define R_ETHSW_CHANNEL_STATE_CH1ACT_Msk (0x2UL) /*!< CH1ACT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_CHANNEL_STATE_CH2ACT_Pos (2UL) /*!< CH2ACT (Bit 2) */ + #define R_ETHSW_CHANNEL_STATE_CH2ACT_Msk (0x4UL) /*!< CH2ACT (Bitfield-Mask: 0x01) */ +/* ==================================================== CHANNEL_ENABLE ===================================================== */ + #define R_ETHSW_CHANNEL_ENABLE_CH0ENA_Pos (0UL) /*!< CH0ENA (Bit 0) */ + #define R_ETHSW_CHANNEL_ENABLE_CH0ENA_Msk (0x1UL) /*!< CH0ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_CHANNEL_ENABLE_CH1ENA_Pos (1UL) /*!< CH1ENA (Bit 1) */ + #define R_ETHSW_CHANNEL_ENABLE_CH1ENA_Msk (0x2UL) /*!< CH1ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_CHANNEL_ENABLE_CH2ENA_Pos (2UL) /*!< CH2ENA (Bit 2) */ + #define R_ETHSW_CHANNEL_ENABLE_CH2ENA_Msk (0x4UL) /*!< CH2ENA (Bitfield-Mask: 0x01) */ +/* ==================================================== CHANNEL_DISABLE ==================================================== */ + #define R_ETHSW_CHANNEL_DISABLE_CH0DIS_Pos (0UL) /*!< CH0DIS (Bit 0) */ + #define R_ETHSW_CHANNEL_DISABLE_CH0DIS_Msk (0x1UL) /*!< CH0DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_CHANNEL_DISABLE_CH1DIS_Pos (1UL) /*!< CH1DIS (Bit 1) */ + #define R_ETHSW_CHANNEL_DISABLE_CH1DIS_Msk (0x2UL) /*!< CH1DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_CHANNEL_DISABLE_CH2DIS_Pos (2UL) /*!< CH2DIS (Bit 2) */ + #define R_ETHSW_CHANNEL_DISABLE_CH2DIS_Msk (0x4UL) /*!< CH2DIS (Bitfield-Mask: 0x01) */ +/* ===================================================== ASI_MEM_WDATA ===================================================== */ + #define R_ETHSW_ASI_MEM_WDATA_WDATA_Pos (0UL) /*!< WDATA (Bit 0) */ + #define R_ETHSW_ASI_MEM_WDATA_WDATA_Msk (0xffffffffUL) /*!< WDATA (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== ASI_MEM_ADDR ====================================================== */ + #define R_ETHSW_ASI_MEM_ADDR_ADDR_Pos (0UL) /*!< ADDR (Bit 0) */ + #define R_ETHSW_ASI_MEM_ADDR_ADDR_Msk (0x7fUL) /*!< ADDR (Bitfield-Mask: 0x7f) */ + #define R_ETHSW_ASI_MEM_ADDR_MEM_WEN_Pos (7UL) /*!< MEM_WEN (Bit 7) */ + #define R_ETHSW_ASI_MEM_ADDR_MEM_WEN_Msk (0x80UL) /*!< MEM_WEN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_ASI_MEM_ADDR_MEM_REQ_Pos (8UL) /*!< MEM_REQ (Bit 8) */ + #define R_ETHSW_ASI_MEM_ADDR_MEM_REQ_Msk (0x700UL) /*!< MEM_REQ (Bitfield-Mask: 0x07) */ +/* ===================================================== ASI_MEM_RDATA ===================================================== */ + #define R_ETHSW_ASI_MEM_RDATA_RDATA_Pos (0UL) /*!< RDATA (Bit 0) */ + #define R_ETHSW_ASI_MEM_RDATA_RDATA_Msk (0xffffffffUL) /*!< RDATA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P1_QSTMACU0 ====================================================== */ + #define R_ETHSW_P1_QSTMACU0_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P1_QSTMACU0_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P1_QSTMACU0_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P1_QSTMACU0_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QSTMACU1 ====================================================== */ + #define R_ETHSW_P1_QSTMACU1_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P1_QSTMACU1_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P1_QSTMACU1_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P1_QSTMACU1_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QSTMACU2 ====================================================== */ + #define R_ETHSW_P1_QSTMACU2_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P1_QSTMACU2_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P1_QSTMACU2_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P1_QSTMACU2_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QSTMACU3 ====================================================== */ + #define R_ETHSW_P1_QSTMACU3_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P1_QSTMACU3_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P1_QSTMACU3_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P1_QSTMACU3_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QSTMACU4 ====================================================== */ + #define R_ETHSW_P1_QSTMACU4_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P1_QSTMACU4_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P1_QSTMACU4_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P1_QSTMACU4_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QSTMACU5 ====================================================== */ + #define R_ETHSW_P1_QSTMACU5_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P1_QSTMACU5_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P1_QSTMACU5_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P1_QSTMACU5_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QSTMACU6 ====================================================== */ + #define R_ETHSW_P1_QSTMACU6_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P1_QSTMACU6_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P1_QSTMACU6_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P1_QSTMACU6_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QSTMACU7 ====================================================== */ + #define R_ETHSW_P1_QSTMACU7_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P1_QSTMACU7_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P1_QSTMACU7_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P1_QSTMACU7_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QSTMACD0 ====================================================== */ + #define R_ETHSW_P1_QSTMACD0_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P1_QSTMACD0_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P1_QSTMACD1 ====================================================== */ + #define R_ETHSW_P1_QSTMACD1_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P1_QSTMACD1_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P1_QSTMACD2 ====================================================== */ + #define R_ETHSW_P1_QSTMACD2_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P1_QSTMACD2_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P1_QSTMACD3 ====================================================== */ + #define R_ETHSW_P1_QSTMACD3_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P1_QSTMACD3_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P1_QSTMACD4 ====================================================== */ + #define R_ETHSW_P1_QSTMACD4_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P1_QSTMACD4_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P1_QSTMACD5 ====================================================== */ + #define R_ETHSW_P1_QSTMACD5_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P1_QSTMACD5_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P1_QSTMACD6 ====================================================== */ + #define R_ETHSW_P1_QSTMACD6_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P1_QSTMACD6_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P1_QSTMACD7 ====================================================== */ + #define R_ETHSW_P1_QSTMACD7_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P1_QSTMACD7_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P1_QSTMAMU0 ====================================================== */ + #define R_ETHSW_P1_QSTMAMU0_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P1_QSTMAMU0_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QSTMAMU1 ====================================================== */ + #define R_ETHSW_P1_QSTMAMU1_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P1_QSTMAMU1_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QSTMAMU2 ====================================================== */ + #define R_ETHSW_P1_QSTMAMU2_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P1_QSTMAMU2_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QSTMAMU3 ====================================================== */ + #define R_ETHSW_P1_QSTMAMU3_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P1_QSTMAMU3_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QSTMAMU4 ====================================================== */ + #define R_ETHSW_P1_QSTMAMU4_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P1_QSTMAMU4_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QSTMAMU5 ====================================================== */ + #define R_ETHSW_P1_QSTMAMU5_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P1_QSTMAMU5_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QSTMAMU6 ====================================================== */ + #define R_ETHSW_P1_QSTMAMU6_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P1_QSTMAMU6_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QSTMAMU7 ====================================================== */ + #define R_ETHSW_P1_QSTMAMU7_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P1_QSTMAMU7_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QSTMAMD0 ====================================================== */ + #define R_ETHSW_P1_QSTMAMD0_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P1_QSTMAMD0_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P1_QSTMAMD1 ====================================================== */ + #define R_ETHSW_P1_QSTMAMD1_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P1_QSTMAMD1_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P1_QSTMAMD2 ====================================================== */ + #define R_ETHSW_P1_QSTMAMD2_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P1_QSTMAMD2_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P1_QSTMAMD3 ====================================================== */ + #define R_ETHSW_P1_QSTMAMD3_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P1_QSTMAMD3_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P1_QSTMAMD4 ====================================================== */ + #define R_ETHSW_P1_QSTMAMD4_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P1_QSTMAMD4_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P1_QSTMAMD5 ====================================================== */ + #define R_ETHSW_P1_QSTMAMD5_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P1_QSTMAMD5_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P1_QSTMAMD6 ====================================================== */ + #define R_ETHSW_P1_QSTMAMD6_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P1_QSTMAMD6_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P1_QSTMAMD7 ====================================================== */ + #define R_ETHSW_P1_QSTMAMD7_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P1_QSTMAMD7_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P1_QSFTVL0 ======================================================= */ + #define R_ETHSW_P1_QSFTVL0_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P1_QSFTVL0_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P1_QSFTVL0_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P1_QSFTVL0_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTVL0_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P1_QSFTVL0_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTVL0_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P1_QSFTVL0_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P1_QSFTVL1 ======================================================= */ + #define R_ETHSW_P1_QSFTVL1_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P1_QSFTVL1_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P1_QSFTVL1_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P1_QSFTVL1_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTVL1_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P1_QSFTVL1_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTVL1_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P1_QSFTVL1_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P1_QSFTVL2 ======================================================= */ + #define R_ETHSW_P1_QSFTVL2_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P1_QSFTVL2_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P1_QSFTVL2_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P1_QSFTVL2_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTVL2_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P1_QSFTVL2_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTVL2_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P1_QSFTVL2_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P1_QSFTVL3 ======================================================= */ + #define R_ETHSW_P1_QSFTVL3_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P1_QSFTVL3_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P1_QSFTVL3_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P1_QSFTVL3_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTVL3_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P1_QSFTVL3_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTVL3_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P1_QSFTVL3_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P1_QSFTVL4 ======================================================= */ + #define R_ETHSW_P1_QSFTVL4_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P1_QSFTVL4_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P1_QSFTVL4_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P1_QSFTVL4_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTVL4_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P1_QSFTVL4_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTVL4_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P1_QSFTVL4_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P1_QSFTVL5 ======================================================= */ + #define R_ETHSW_P1_QSFTVL5_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P1_QSFTVL5_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P1_QSFTVL5_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P1_QSFTVL5_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTVL5_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P1_QSFTVL5_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTVL5_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P1_QSFTVL5_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P1_QSFTVL6 ======================================================= */ + #define R_ETHSW_P1_QSFTVL6_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P1_QSFTVL6_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P1_QSFTVL6_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P1_QSFTVL6_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTVL6_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P1_QSFTVL6_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTVL6_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P1_QSFTVL6_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P1_QSFTVL7 ======================================================= */ + #define R_ETHSW_P1_QSFTVL7_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P1_QSFTVL7_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P1_QSFTVL7_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P1_QSFTVL7_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTVL7_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P1_QSFTVL7_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTVL7_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P1_QSFTVL7_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P1_QSFTVLM0 ====================================================== */ + #define R_ETHSW_P1_QSFTVLM0_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P1_QSFTVLM0_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P1_QSFTVLM0_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P1_QSFTVLM0_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTVLM0_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P1_QSFTVLM0_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P1_QSFTVLM1 ====================================================== */ + #define R_ETHSW_P1_QSFTVLM1_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P1_QSFTVLM1_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P1_QSFTVLM1_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P1_QSFTVLM1_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTVLM1_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P1_QSFTVLM1_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P1_QSFTVLM2 ====================================================== */ + #define R_ETHSW_P1_QSFTVLM2_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P1_QSFTVLM2_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P1_QSFTVLM2_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P1_QSFTVLM2_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTVLM2_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P1_QSFTVLM2_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P1_QSFTVLM3 ====================================================== */ + #define R_ETHSW_P1_QSFTVLM3_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P1_QSFTVLM3_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P1_QSFTVLM3_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P1_QSFTVLM3_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTVLM3_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P1_QSFTVLM3_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P1_QSFTVLM4 ====================================================== */ + #define R_ETHSW_P1_QSFTVLM4_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P1_QSFTVLM4_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P1_QSFTVLM4_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P1_QSFTVLM4_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTVLM4_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P1_QSFTVLM4_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P1_QSFTVLM5 ====================================================== */ + #define R_ETHSW_P1_QSFTVLM5_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P1_QSFTVLM5_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P1_QSFTVLM5_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P1_QSFTVLM5_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTVLM5_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P1_QSFTVLM5_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P1_QSFTVLM6 ====================================================== */ + #define R_ETHSW_P1_QSFTVLM6_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P1_QSFTVLM6_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P1_QSFTVLM6_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P1_QSFTVLM6_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTVLM6_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P1_QSFTVLM6_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P1_QSFTVLM7 ====================================================== */ + #define R_ETHSW_P1_QSFTVLM7_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P1_QSFTVLM7_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P1_QSFTVLM7_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P1_QSFTVLM7_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTVLM7_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P1_QSFTVLM7_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P1_QSFTBL0 ======================================================= */ + #define R_ETHSW_P1_QSFTBL0_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P1_QSFTBL0_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL0_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P1_QSFTBL0_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTBL0_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P1_QSFTBL0_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL0_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P1_QSFTBL0_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTBL0_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P1_QSFTBL0_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL0_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P1_QSFTBL0_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P1_QSFTBL0_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P1_QSFTBL0_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL0_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P1_QSFTBL0_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QSFTBL1 ======================================================= */ + #define R_ETHSW_P1_QSFTBL1_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P1_QSFTBL1_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL1_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P1_QSFTBL1_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTBL1_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P1_QSFTBL1_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL1_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P1_QSFTBL1_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTBL1_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P1_QSFTBL1_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL1_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P1_QSFTBL1_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P1_QSFTBL1_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P1_QSFTBL1_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL1_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P1_QSFTBL1_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QSFTBL2 ======================================================= */ + #define R_ETHSW_P1_QSFTBL2_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P1_QSFTBL2_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL2_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P1_QSFTBL2_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTBL2_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P1_QSFTBL2_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL2_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P1_QSFTBL2_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTBL2_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P1_QSFTBL2_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL2_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P1_QSFTBL2_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P1_QSFTBL2_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P1_QSFTBL2_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL2_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P1_QSFTBL2_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QSFTBL3 ======================================================= */ + #define R_ETHSW_P1_QSFTBL3_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P1_QSFTBL3_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL3_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P1_QSFTBL3_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTBL3_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P1_QSFTBL3_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL3_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P1_QSFTBL3_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTBL3_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P1_QSFTBL3_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL3_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P1_QSFTBL3_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P1_QSFTBL3_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P1_QSFTBL3_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL3_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P1_QSFTBL3_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QSFTBL4 ======================================================= */ + #define R_ETHSW_P1_QSFTBL4_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P1_QSFTBL4_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL4_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P1_QSFTBL4_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTBL4_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P1_QSFTBL4_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL4_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P1_QSFTBL4_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTBL4_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P1_QSFTBL4_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL4_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P1_QSFTBL4_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P1_QSFTBL4_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P1_QSFTBL4_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL4_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P1_QSFTBL4_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QSFTBL5 ======================================================= */ + #define R_ETHSW_P1_QSFTBL5_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P1_QSFTBL5_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL5_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P1_QSFTBL5_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTBL5_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P1_QSFTBL5_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL5_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P1_QSFTBL5_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTBL5_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P1_QSFTBL5_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL5_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P1_QSFTBL5_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P1_QSFTBL5_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P1_QSFTBL5_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL5_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P1_QSFTBL5_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QSFTBL6 ======================================================= */ + #define R_ETHSW_P1_QSFTBL6_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P1_QSFTBL6_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL6_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P1_QSFTBL6_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTBL6_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P1_QSFTBL6_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL6_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P1_QSFTBL6_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTBL6_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P1_QSFTBL6_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL6_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P1_QSFTBL6_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P1_QSFTBL6_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P1_QSFTBL6_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL6_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P1_QSFTBL6_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QSFTBL7 ======================================================= */ + #define R_ETHSW_P1_QSFTBL7_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P1_QSFTBL7_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL7_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P1_QSFTBL7_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTBL7_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P1_QSFTBL7_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL7_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P1_QSFTBL7_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P1_QSFTBL7_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P1_QSFTBL7_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL7_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P1_QSFTBL7_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P1_QSFTBL7_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P1_QSFTBL7_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QSFTBL7_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P1_QSFTBL7_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ======================================================= P1_QSMFC0 ======================================================= */ + #define R_ETHSW_P1_QSMFC0_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P1_QSMFC0_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QSMFC1 ======================================================= */ + #define R_ETHSW_P1_QSMFC1_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P1_QSMFC1_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QSMFC2 ======================================================= */ + #define R_ETHSW_P1_QSMFC2_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P1_QSMFC2_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QSMFC3 ======================================================= */ + #define R_ETHSW_P1_QSMFC3_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P1_QSMFC3_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QSMFC4 ======================================================= */ + #define R_ETHSW_P1_QSMFC4_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P1_QSMFC4_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QSMFC5 ======================================================= */ + #define R_ETHSW_P1_QSMFC5_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P1_QSMFC5_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QSMFC6 ======================================================= */ + #define R_ETHSW_P1_QSMFC6_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P1_QSMFC6_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QSMFC7 ======================================================= */ + #define R_ETHSW_P1_QSMFC7_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P1_QSMFC7_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QMSPPC0 ======================================================= */ + #define R_ETHSW_P1_QMSPPC0_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P1_QMSPPC0_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QMSPPC1 ======================================================= */ + #define R_ETHSW_P1_QMSPPC1_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P1_QMSPPC1_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QMSPPC2 ======================================================= */ + #define R_ETHSW_P1_QMSPPC2_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P1_QMSPPC2_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QMSPPC3 ======================================================= */ + #define R_ETHSW_P1_QMSPPC3_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P1_QMSPPC3_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QMSPPC4 ======================================================= */ + #define R_ETHSW_P1_QMSPPC4_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P1_QMSPPC4_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QMSPPC5 ======================================================= */ + #define R_ETHSW_P1_QMSPPC5_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P1_QMSPPC5_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QMSPPC6 ======================================================= */ + #define R_ETHSW_P1_QMSPPC6_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P1_QMSPPC6_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QMSPPC7 ======================================================= */ + #define R_ETHSW_P1_QMSPPC7_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P1_QMSPPC7_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QMSRPC0 ======================================================= */ + #define R_ETHSW_P1_QMSRPC0_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P1_QMSRPC0_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QMSRPC1 ======================================================= */ + #define R_ETHSW_P1_QMSRPC1_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P1_QMSRPC1_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QMSRPC2 ======================================================= */ + #define R_ETHSW_P1_QMSRPC2_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P1_QMSRPC2_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QMSRPC3 ======================================================= */ + #define R_ETHSW_P1_QMSRPC3_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P1_QMSRPC3_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QMSRPC4 ======================================================= */ + #define R_ETHSW_P1_QMSRPC4_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P1_QMSRPC4_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QMSRPC5 ======================================================= */ + #define R_ETHSW_P1_QMSRPC5_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P1_QMSRPC5_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QMSRPC6 ======================================================= */ + #define R_ETHSW_P1_QMSRPC6_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P1_QMSRPC6_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QMSRPC7 ======================================================= */ + #define R_ETHSW_P1_QMSRPC7_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P1_QMSRPC7_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QGDPC0 ======================================================= */ + #define R_ETHSW_P1_QGDPC0_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P1_QGDPC0_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QGDPC1 ======================================================= */ + #define R_ETHSW_P1_QGDPC1_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P1_QGDPC1_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QGDPC2 ======================================================= */ + #define R_ETHSW_P1_QGDPC2_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P1_QGDPC2_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QGDPC3 ======================================================= */ + #define R_ETHSW_P1_QGDPC3_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P1_QGDPC3_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QGDPC4 ======================================================= */ + #define R_ETHSW_P1_QGDPC4_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P1_QGDPC4_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QGDPC5 ======================================================= */ + #define R_ETHSW_P1_QGDPC5_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P1_QGDPC5_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QGDPC6 ======================================================= */ + #define R_ETHSW_P1_QGDPC6_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P1_QGDPC6_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QGDPC7 ======================================================= */ + #define R_ETHSW_P1_QGDPC7_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P1_QGDPC7_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P1_QMDESC0 ======================================================= */ + #define R_ETHSW_P1_QMDESC0_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P1_QMDESC0_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QMDESC0_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P1_QMDESC0_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QMDESC0_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P1_QMDESC0_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QMDESC1 ======================================================= */ + #define R_ETHSW_P1_QMDESC1_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P1_QMDESC1_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QMDESC1_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P1_QMDESC1_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QMDESC1_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P1_QMDESC1_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QMDESC2 ======================================================= */ + #define R_ETHSW_P1_QMDESC2_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P1_QMDESC2_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QMDESC2_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P1_QMDESC2_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QMDESC2_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P1_QMDESC2_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QMDESC3 ======================================================= */ + #define R_ETHSW_P1_QMDESC3_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P1_QMDESC3_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QMDESC3_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P1_QMDESC3_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QMDESC3_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P1_QMDESC3_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QMDESC4 ======================================================= */ + #define R_ETHSW_P1_QMDESC4_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P1_QMDESC4_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QMDESC4_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P1_QMDESC4_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QMDESC4_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P1_QMDESC4_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QMDESC5 ======================================================= */ + #define R_ETHSW_P1_QMDESC5_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P1_QMDESC5_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QMDESC5_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P1_QMDESC5_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QMDESC5_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P1_QMDESC5_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QMDESC6 ======================================================= */ + #define R_ETHSW_P1_QMDESC6_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P1_QMDESC6_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QMDESC6_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P1_QMDESC6_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QMDESC6_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P1_QMDESC6_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QMDESC7 ======================================================= */ + #define R_ETHSW_P1_QMDESC7_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P1_QMDESC7_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QMDESC7_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P1_QMDESC7_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P1_QMDESC7_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P1_QMDESC7_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P1_QMCBSC0 ======================================================= */ + #define R_ETHSW_P1_QMCBSC0_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P1_QMCBSC0_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P1_QMCBSC1 ======================================================= */ + #define R_ETHSW_P1_QMCBSC1_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P1_QMCBSC1_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P1_QMCBSC2 ======================================================= */ + #define R_ETHSW_P1_QMCBSC2_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P1_QMCBSC2_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P1_QMCBSC3 ======================================================= */ + #define R_ETHSW_P1_QMCBSC3_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P1_QMCBSC3_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P1_QMCBSC4 ======================================================= */ + #define R_ETHSW_P1_QMCBSC4_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P1_QMCBSC4_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P1_QMCBSC5 ======================================================= */ + #define R_ETHSW_P1_QMCBSC5_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P1_QMCBSC5_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P1_QMCBSC6 ======================================================= */ + #define R_ETHSW_P1_QMCBSC6_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P1_QMCBSC6_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P1_QMCBSC7 ======================================================= */ + #define R_ETHSW_P1_QMCBSC7_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P1_QMCBSC7_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P1_QMCIRC0 ======================================================= */ + #define R_ETHSW_P1_QMCIRC0_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P1_QMCIRC0_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P1_QMCIRC1 ======================================================= */ + #define R_ETHSW_P1_QMCIRC1_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P1_QMCIRC1_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P1_QMCIRC2 ======================================================= */ + #define R_ETHSW_P1_QMCIRC2_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P1_QMCIRC2_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P1_QMCIRC3 ======================================================= */ + #define R_ETHSW_P1_QMCIRC3_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P1_QMCIRC3_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P1_QMCIRC4 ======================================================= */ + #define R_ETHSW_P1_QMCIRC4_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P1_QMCIRC4_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P1_QMCIRC5 ======================================================= */ + #define R_ETHSW_P1_QMCIRC5_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P1_QMCIRC5_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P1_QMCIRC6 ======================================================= */ + #define R_ETHSW_P1_QMCIRC6_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P1_QMCIRC6_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P1_QMCIRC7 ======================================================= */ + #define R_ETHSW_P1_QMCIRC7_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P1_QMCIRC7_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ======================================================= P1_QMGPC0 ======================================================= */ + #define R_ETHSW_P1_QMGPC0_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P1_QMGPC0_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QMGPC1 ======================================================= */ + #define R_ETHSW_P1_QMGPC1_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P1_QMGPC1_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QMGPC2 ======================================================= */ + #define R_ETHSW_P1_QMGPC2_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P1_QMGPC2_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QMGPC3 ======================================================= */ + #define R_ETHSW_P1_QMGPC3_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P1_QMGPC3_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QMGPC4 ======================================================= */ + #define R_ETHSW_P1_QMGPC4_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P1_QMGPC4_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QMGPC5 ======================================================= */ + #define R_ETHSW_P1_QMGPC5_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P1_QMGPC5_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QMGPC6 ======================================================= */ + #define R_ETHSW_P1_QMGPC6_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P1_QMGPC6_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QMGPC7 ======================================================= */ + #define R_ETHSW_P1_QMGPC7_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P1_QMGPC7_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QMRPC0 ======================================================= */ + #define R_ETHSW_P1_QMRPC0_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P1_QMRPC0_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QMRPC1 ======================================================= */ + #define R_ETHSW_P1_QMRPC1_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P1_QMRPC1_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QMRPC2 ======================================================= */ + #define R_ETHSW_P1_QMRPC2_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P1_QMRPC2_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QMRPC3 ======================================================= */ + #define R_ETHSW_P1_QMRPC3_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P1_QMRPC3_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QMRPC4 ======================================================= */ + #define R_ETHSW_P1_QMRPC4_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P1_QMRPC4_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QMRPC5 ======================================================= */ + #define R_ETHSW_P1_QMRPC5_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P1_QMRPC5_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QMRPC6 ======================================================= */ + #define R_ETHSW_P1_QMRPC6_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P1_QMRPC6_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P1_QMRPC7 ======================================================= */ + #define R_ETHSW_P1_QMRPC7_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P1_QMRPC7_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QSTMACU0 ====================================================== */ + #define R_ETHSW_P2_QSTMACU0_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P2_QSTMACU0_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P2_QSTMACU0_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P2_QSTMACU0_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QSTMACU1 ====================================================== */ + #define R_ETHSW_P2_QSTMACU1_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P2_QSTMACU1_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P2_QSTMACU1_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P2_QSTMACU1_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QSTMACU2 ====================================================== */ + #define R_ETHSW_P2_QSTMACU2_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P2_QSTMACU2_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P2_QSTMACU2_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P2_QSTMACU2_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QSTMACU3 ====================================================== */ + #define R_ETHSW_P2_QSTMACU3_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P2_QSTMACU3_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P2_QSTMACU3_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P2_QSTMACU3_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QSTMACU4 ====================================================== */ + #define R_ETHSW_P2_QSTMACU4_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P2_QSTMACU4_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P2_QSTMACU4_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P2_QSTMACU4_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QSTMACU5 ====================================================== */ + #define R_ETHSW_P2_QSTMACU5_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P2_QSTMACU5_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P2_QSTMACU5_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P2_QSTMACU5_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QSTMACU6 ====================================================== */ + #define R_ETHSW_P2_QSTMACU6_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P2_QSTMACU6_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P2_QSTMACU6_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P2_QSTMACU6_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QSTMACU7 ====================================================== */ + #define R_ETHSW_P2_QSTMACU7_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P2_QSTMACU7_MACA_Msk (0xffffUL) /*!< MACA (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_P2_QSTMACU7_DASA_Pos (16UL) /*!< DASA (Bit 16) */ + #define R_ETHSW_P2_QSTMACU7_DASA_Msk (0x10000UL) /*!< DASA (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QSTMACD0 ====================================================== */ + #define R_ETHSW_P2_QSTMACD0_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P2_QSTMACD0_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P2_QSTMACD1 ====================================================== */ + #define R_ETHSW_P2_QSTMACD1_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P2_QSTMACD1_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P2_QSTMACD2 ====================================================== */ + #define R_ETHSW_P2_QSTMACD2_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P2_QSTMACD2_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P2_QSTMACD3 ====================================================== */ + #define R_ETHSW_P2_QSTMACD3_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P2_QSTMACD3_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P2_QSTMACD4 ====================================================== */ + #define R_ETHSW_P2_QSTMACD4_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P2_QSTMACD4_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P2_QSTMACD5 ====================================================== */ + #define R_ETHSW_P2_QSTMACD5_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P2_QSTMACD5_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P2_QSTMACD6 ====================================================== */ + #define R_ETHSW_P2_QSTMACD6_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P2_QSTMACD6_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P2_QSTMACD7 ====================================================== */ + #define R_ETHSW_P2_QSTMACD7_MACA_Pos (0UL) /*!< MACA (Bit 0) */ + #define R_ETHSW_P2_QSTMACD7_MACA_Msk (0xffffffffUL) /*!< MACA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P2_QSTMAMU0 ====================================================== */ + #define R_ETHSW_P2_QSTMAMU0_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P2_QSTMAMU0_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QSTMAMU1 ====================================================== */ + #define R_ETHSW_P2_QSTMAMU1_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P2_QSTMAMU1_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QSTMAMU2 ====================================================== */ + #define R_ETHSW_P2_QSTMAMU2_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P2_QSTMAMU2_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QSTMAMU3 ====================================================== */ + #define R_ETHSW_P2_QSTMAMU3_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P2_QSTMAMU3_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QSTMAMU4 ====================================================== */ + #define R_ETHSW_P2_QSTMAMU4_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P2_QSTMAMU4_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QSTMAMU5 ====================================================== */ + #define R_ETHSW_P2_QSTMAMU5_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P2_QSTMAMU5_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QSTMAMU6 ====================================================== */ + #define R_ETHSW_P2_QSTMAMU6_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P2_QSTMAMU6_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QSTMAMU7 ====================================================== */ + #define R_ETHSW_P2_QSTMAMU7_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P2_QSTMAMU7_MACAM_Msk (0xffffUL) /*!< MACAM (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QSTMAMD0 ====================================================== */ + #define R_ETHSW_P2_QSTMAMD0_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P2_QSTMAMD0_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P2_QSTMAMD1 ====================================================== */ + #define R_ETHSW_P2_QSTMAMD1_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P2_QSTMAMD1_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P2_QSTMAMD2 ====================================================== */ + #define R_ETHSW_P2_QSTMAMD2_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P2_QSTMAMD2_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P2_QSTMAMD3 ====================================================== */ + #define R_ETHSW_P2_QSTMAMD3_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P2_QSTMAMD3_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P2_QSTMAMD4 ====================================================== */ + #define R_ETHSW_P2_QSTMAMD4_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P2_QSTMAMD4_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P2_QSTMAMD5 ====================================================== */ + #define R_ETHSW_P2_QSTMAMD5_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P2_QSTMAMD5_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P2_QSTMAMD6 ====================================================== */ + #define R_ETHSW_P2_QSTMAMD6_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P2_QSTMAMD6_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P2_QSTMAMD7 ====================================================== */ + #define R_ETHSW_P2_QSTMAMD7_MACAM_Pos (0UL) /*!< MACAM (Bit 0) */ + #define R_ETHSW_P2_QSTMAMD7_MACAM_Msk (0xffffffffUL) /*!< MACAM (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== P2_QSFTVL0 ======================================================= */ + #define R_ETHSW_P2_QSFTVL0_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P2_QSFTVL0_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P2_QSFTVL0_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P2_QSFTVL0_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTVL0_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P2_QSFTVL0_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTVL0_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P2_QSFTVL0_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P2_QSFTVL1 ======================================================= */ + #define R_ETHSW_P2_QSFTVL1_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P2_QSFTVL1_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P2_QSFTVL1_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P2_QSFTVL1_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTVL1_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P2_QSFTVL1_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTVL1_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P2_QSFTVL1_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P2_QSFTVL2 ======================================================= */ + #define R_ETHSW_P2_QSFTVL2_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P2_QSFTVL2_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P2_QSFTVL2_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P2_QSFTVL2_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTVL2_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P2_QSFTVL2_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTVL2_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P2_QSFTVL2_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P2_QSFTVL3 ======================================================= */ + #define R_ETHSW_P2_QSFTVL3_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P2_QSFTVL3_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P2_QSFTVL3_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P2_QSFTVL3_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTVL3_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P2_QSFTVL3_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTVL3_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P2_QSFTVL3_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P2_QSFTVL4 ======================================================= */ + #define R_ETHSW_P2_QSFTVL4_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P2_QSFTVL4_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P2_QSFTVL4_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P2_QSFTVL4_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTVL4_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P2_QSFTVL4_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTVL4_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P2_QSFTVL4_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P2_QSFTVL5 ======================================================= */ + #define R_ETHSW_P2_QSFTVL5_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P2_QSFTVL5_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P2_QSFTVL5_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P2_QSFTVL5_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTVL5_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P2_QSFTVL5_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTVL5_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P2_QSFTVL5_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P2_QSFTVL6 ======================================================= */ + #define R_ETHSW_P2_QSFTVL6_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P2_QSFTVL6_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P2_QSFTVL6_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P2_QSFTVL6_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTVL6_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P2_QSFTVL6_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTVL6_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P2_QSFTVL6_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P2_QSFTVL7 ======================================================= */ + #define R_ETHSW_P2_QSFTVL7_VLANID_Pos (0UL) /*!< VLANID (Bit 0) */ + #define R_ETHSW_P2_QSFTVL7_VLANID_Msk (0xfffUL) /*!< VLANID (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P2_QSFTVL7_DEI_Pos (12UL) /*!< DEI (Bit 12) */ + #define R_ETHSW_P2_QSFTVL7_DEI_Msk (0x1000UL) /*!< DEI (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTVL7_PCP_Pos (13UL) /*!< PCP (Bit 13) */ + #define R_ETHSW_P2_QSFTVL7_PCP_Msk (0xe000UL) /*!< PCP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTVL7_TAGMD_Pos (16UL) /*!< TAGMD (Bit 16) */ + #define R_ETHSW_P2_QSFTVL7_TAGMD_Msk (0x30000UL) /*!< TAGMD (Bitfield-Mask: 0x03) */ +/* ====================================================== P2_QSFTVLM0 ====================================================== */ + #define R_ETHSW_P2_QSFTVLM0_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P2_QSFTVLM0_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P2_QSFTVLM0_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P2_QSFTVLM0_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTVLM0_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P2_QSFTVLM0_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P2_QSFTVLM1 ====================================================== */ + #define R_ETHSW_P2_QSFTVLM1_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P2_QSFTVLM1_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P2_QSFTVLM1_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P2_QSFTVLM1_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTVLM1_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P2_QSFTVLM1_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P2_QSFTVLM2 ====================================================== */ + #define R_ETHSW_P2_QSFTVLM2_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P2_QSFTVLM2_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P2_QSFTVLM2_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P2_QSFTVLM2_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTVLM2_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P2_QSFTVLM2_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P2_QSFTVLM3 ====================================================== */ + #define R_ETHSW_P2_QSFTVLM3_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P2_QSFTVLM3_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P2_QSFTVLM3_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P2_QSFTVLM3_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTVLM3_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P2_QSFTVLM3_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P2_QSFTVLM4 ====================================================== */ + #define R_ETHSW_P2_QSFTVLM4_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P2_QSFTVLM4_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P2_QSFTVLM4_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P2_QSFTVLM4_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTVLM4_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P2_QSFTVLM4_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P2_QSFTVLM5 ====================================================== */ + #define R_ETHSW_P2_QSFTVLM5_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P2_QSFTVLM5_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P2_QSFTVLM5_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P2_QSFTVLM5_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTVLM5_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P2_QSFTVLM5_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P2_QSFTVLM6 ====================================================== */ + #define R_ETHSW_P2_QSFTVLM6_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P2_QSFTVLM6_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P2_QSFTVLM6_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P2_QSFTVLM6_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTVLM6_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P2_QSFTVLM6_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P2_QSFTVLM7 ====================================================== */ + #define R_ETHSW_P2_QSFTVLM7_VLANIDM_Pos (0UL) /*!< VLANIDM (Bit 0) */ + #define R_ETHSW_P2_QSFTVLM7_VLANIDM_Msk (0xfffUL) /*!< VLANIDM (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_P2_QSFTVLM7_DEIM_Pos (12UL) /*!< DEIM (Bit 12) */ + #define R_ETHSW_P2_QSFTVLM7_DEIM_Msk (0x1000UL) /*!< DEIM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTVLM7_PCPM_Pos (13UL) /*!< PCPM (Bit 13) */ + #define R_ETHSW_P2_QSFTVLM7_PCPM_Msk (0xe000UL) /*!< PCPM (Bitfield-Mask: 0x07) */ +/* ====================================================== P2_QSFTBL0 ======================================================= */ + #define R_ETHSW_P2_QSFTBL0_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P2_QSFTBL0_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL0_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P2_QSFTBL0_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTBL0_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P2_QSFTBL0_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL0_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P2_QSFTBL0_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTBL0_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P2_QSFTBL0_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL0_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P2_QSFTBL0_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P2_QSFTBL0_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P2_QSFTBL0_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL0_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P2_QSFTBL0_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QSFTBL1 ======================================================= */ + #define R_ETHSW_P2_QSFTBL1_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P2_QSFTBL1_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL1_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P2_QSFTBL1_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTBL1_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P2_QSFTBL1_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL1_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P2_QSFTBL1_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTBL1_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P2_QSFTBL1_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL1_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P2_QSFTBL1_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P2_QSFTBL1_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P2_QSFTBL1_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL1_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P2_QSFTBL1_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QSFTBL2 ======================================================= */ + #define R_ETHSW_P2_QSFTBL2_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P2_QSFTBL2_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL2_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P2_QSFTBL2_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTBL2_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P2_QSFTBL2_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL2_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P2_QSFTBL2_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTBL2_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P2_QSFTBL2_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL2_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P2_QSFTBL2_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P2_QSFTBL2_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P2_QSFTBL2_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL2_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P2_QSFTBL2_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QSFTBL3 ======================================================= */ + #define R_ETHSW_P2_QSFTBL3_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P2_QSFTBL3_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL3_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P2_QSFTBL3_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTBL3_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P2_QSFTBL3_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL3_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P2_QSFTBL3_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTBL3_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P2_QSFTBL3_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL3_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P2_QSFTBL3_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P2_QSFTBL3_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P2_QSFTBL3_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL3_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P2_QSFTBL3_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QSFTBL4 ======================================================= */ + #define R_ETHSW_P2_QSFTBL4_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P2_QSFTBL4_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL4_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P2_QSFTBL4_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTBL4_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P2_QSFTBL4_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL4_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P2_QSFTBL4_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTBL4_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P2_QSFTBL4_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL4_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P2_QSFTBL4_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P2_QSFTBL4_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P2_QSFTBL4_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL4_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P2_QSFTBL4_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QSFTBL5 ======================================================= */ + #define R_ETHSW_P2_QSFTBL5_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P2_QSFTBL5_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL5_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P2_QSFTBL5_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTBL5_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P2_QSFTBL5_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL5_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P2_QSFTBL5_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTBL5_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P2_QSFTBL5_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL5_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P2_QSFTBL5_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P2_QSFTBL5_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P2_QSFTBL5_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL5_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P2_QSFTBL5_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QSFTBL6 ======================================================= */ + #define R_ETHSW_P2_QSFTBL6_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P2_QSFTBL6_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL6_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P2_QSFTBL6_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTBL6_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P2_QSFTBL6_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL6_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P2_QSFTBL6_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTBL6_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P2_QSFTBL6_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL6_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P2_QSFTBL6_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P2_QSFTBL6_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P2_QSFTBL6_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL6_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P2_QSFTBL6_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QSFTBL7 ======================================================= */ + #define R_ETHSW_P2_QSFTBL7_QSTE_Pos (0UL) /*!< QSTE (Bit 0) */ + #define R_ETHSW_P2_QSFTBL7_QSTE_Msk (0x1UL) /*!< QSTE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL7_GAID_Pos (4UL) /*!< GAID (Bit 4) */ + #define R_ETHSW_P2_QSFTBL7_GAID_Msk (0x70UL) /*!< GAID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTBL7_GAIDV_Pos (7UL) /*!< GAIDV (Bit 7) */ + #define R_ETHSW_P2_QSFTBL7_GAIDV_Msk (0x80UL) /*!< GAIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL7_MEID_Pos (8UL) /*!< MEID (Bit 8) */ + #define R_ETHSW_P2_QSFTBL7_MEID_Msk (0x700UL) /*!< MEID (Bitfield-Mask: 0x07) */ + #define R_ETHSW_P2_QSFTBL7_MEIDV_Pos (12UL) /*!< MEIDV (Bit 12) */ + #define R_ETHSW_P2_QSFTBL7_MEIDV_Msk (0x1000UL) /*!< MEIDV (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL7_MSDU_Pos (16UL) /*!< MSDU (Bit 16) */ + #define R_ETHSW_P2_QSFTBL7_MSDU_Msk (0x7ff0000UL) /*!< MSDU (Bitfield-Mask: 0x7ff) */ + #define R_ETHSW_P2_QSFTBL7_MSDUE_Pos (27UL) /*!< MSDUE (Bit 27) */ + #define R_ETHSW_P2_QSFTBL7_MSDUE_Msk (0x8000000UL) /*!< MSDUE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QSFTBL7_QSMSM_Pos (28UL) /*!< QSMSM (Bit 28) */ + #define R_ETHSW_P2_QSFTBL7_QSMSM_Msk (0x10000000UL) /*!< QSMSM (Bitfield-Mask: 0x01) */ +/* ======================================================= P2_QSMFC0 ======================================================= */ + #define R_ETHSW_P2_QSMFC0_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P2_QSMFC0_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QSMFC1 ======================================================= */ + #define R_ETHSW_P2_QSMFC1_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P2_QSMFC1_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QSMFC2 ======================================================= */ + #define R_ETHSW_P2_QSMFC2_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P2_QSMFC2_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QSMFC3 ======================================================= */ + #define R_ETHSW_P2_QSMFC3_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P2_QSMFC3_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QSMFC4 ======================================================= */ + #define R_ETHSW_P2_QSMFC4_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P2_QSMFC4_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QSMFC5 ======================================================= */ + #define R_ETHSW_P2_QSMFC5_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P2_QSMFC5_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QSMFC6 ======================================================= */ + #define R_ETHSW_P2_QSMFC6_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P2_QSMFC6_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QSMFC7 ======================================================= */ + #define R_ETHSW_P2_QSMFC7_QSMFC_Pos (0UL) /*!< QSMFC (Bit 0) */ + #define R_ETHSW_P2_QSMFC7_QSMFC_Msk (0xffffUL) /*!< QSMFC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QMSPPC0 ======================================================= */ + #define R_ETHSW_P2_QMSPPC0_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P2_QMSPPC0_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QMSPPC1 ======================================================= */ + #define R_ETHSW_P2_QMSPPC1_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P2_QMSPPC1_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QMSPPC2 ======================================================= */ + #define R_ETHSW_P2_QMSPPC2_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P2_QMSPPC2_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QMSPPC3 ======================================================= */ + #define R_ETHSW_P2_QMSPPC3_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P2_QMSPPC3_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QMSPPC4 ======================================================= */ + #define R_ETHSW_P2_QMSPPC4_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P2_QMSPPC4_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QMSPPC5 ======================================================= */ + #define R_ETHSW_P2_QMSPPC5_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P2_QMSPPC5_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QMSPPC6 ======================================================= */ + #define R_ETHSW_P2_QMSPPC6_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P2_QMSPPC6_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QMSPPC7 ======================================================= */ + #define R_ETHSW_P2_QMSPPC7_QMSPPC_Pos (0UL) /*!< QMSPPC (Bit 0) */ + #define R_ETHSW_P2_QMSPPC7_QMSPPC_Msk (0xffffUL) /*!< QMSPPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QMSRPC0 ======================================================= */ + #define R_ETHSW_P2_QMSRPC0_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P2_QMSRPC0_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QMSRPC1 ======================================================= */ + #define R_ETHSW_P2_QMSRPC1_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P2_QMSRPC1_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QMSRPC2 ======================================================= */ + #define R_ETHSW_P2_QMSRPC2_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P2_QMSRPC2_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QMSRPC3 ======================================================= */ + #define R_ETHSW_P2_QMSRPC3_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P2_QMSRPC3_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QMSRPC4 ======================================================= */ + #define R_ETHSW_P2_QMSRPC4_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P2_QMSRPC4_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QMSRPC5 ======================================================= */ + #define R_ETHSW_P2_QMSRPC5_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P2_QMSRPC5_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QMSRPC6 ======================================================= */ + #define R_ETHSW_P2_QMSRPC6_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P2_QMSRPC6_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QMSRPC7 ======================================================= */ + #define R_ETHSW_P2_QMSRPC7_QMSRPC_Pos (0UL) /*!< QMSRPC (Bit 0) */ + #define R_ETHSW_P2_QMSRPC7_QMSRPC_Msk (0xffffUL) /*!< QMSRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QGDPC0 ======================================================= */ + #define R_ETHSW_P2_QGDPC0_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P2_QGDPC0_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QGDPC1 ======================================================= */ + #define R_ETHSW_P2_QGDPC1_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P2_QGDPC1_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QGDPC2 ======================================================= */ + #define R_ETHSW_P2_QGDPC2_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P2_QGDPC2_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QGDPC3 ======================================================= */ + #define R_ETHSW_P2_QGDPC3_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P2_QGDPC3_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QGDPC4 ======================================================= */ + #define R_ETHSW_P2_QGDPC4_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P2_QGDPC4_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QGDPC5 ======================================================= */ + #define R_ETHSW_P2_QGDPC5_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P2_QGDPC5_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QGDPC6 ======================================================= */ + #define R_ETHSW_P2_QGDPC6_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P2_QGDPC6_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QGDPC7 ======================================================= */ + #define R_ETHSW_P2_QGDPC7_QGDPC_Pos (0UL) /*!< QGDPC (Bit 0) */ + #define R_ETHSW_P2_QGDPC7_QGDPC_Msk (0xffffUL) /*!< QGDPC (Bitfield-Mask: 0xffff) */ +/* ====================================================== P2_QMDESC0 ======================================================= */ + #define R_ETHSW_P2_QMDESC0_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P2_QMDESC0_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QMDESC0_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P2_QMDESC0_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QMDESC0_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P2_QMDESC0_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QMDESC1 ======================================================= */ + #define R_ETHSW_P2_QMDESC1_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P2_QMDESC1_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QMDESC1_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P2_QMDESC1_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QMDESC1_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P2_QMDESC1_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QMDESC2 ======================================================= */ + #define R_ETHSW_P2_QMDESC2_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P2_QMDESC2_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QMDESC2_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P2_QMDESC2_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QMDESC2_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P2_QMDESC2_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QMDESC3 ======================================================= */ + #define R_ETHSW_P2_QMDESC3_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P2_QMDESC3_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QMDESC3_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P2_QMDESC3_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QMDESC3_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P2_QMDESC3_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QMDESC4 ======================================================= */ + #define R_ETHSW_P2_QMDESC4_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P2_QMDESC4_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QMDESC4_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P2_QMDESC4_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QMDESC4_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P2_QMDESC4_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QMDESC5 ======================================================= */ + #define R_ETHSW_P2_QMDESC5_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P2_QMDESC5_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QMDESC5_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P2_QMDESC5_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QMDESC5_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P2_QMDESC5_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QMDESC6 ======================================================= */ + #define R_ETHSW_P2_QMDESC6_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P2_QMDESC6_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QMDESC6_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P2_QMDESC6_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QMDESC6_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P2_QMDESC6_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QMDESC7 ======================================================= */ + #define R_ETHSW_P2_QMDESC7_RFD_Pos (0UL) /*!< RFD (Bit 0) */ + #define R_ETHSW_P2_QMDESC7_RFD_Msk (0x1UL) /*!< RFD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QMDESC7_MM_Pos (1UL) /*!< MM (Bit 1) */ + #define R_ETHSW_P2_QMDESC7_MM_Msk (0x2UL) /*!< MM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_P2_QMDESC7_CF_Pos (2UL) /*!< CF (Bit 2) */ + #define R_ETHSW_P2_QMDESC7_CF_Msk (0x4UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ====================================================== P2_QMCBSC0 ======================================================= */ + #define R_ETHSW_P2_QMCBSC0_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P2_QMCBSC0_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P2_QMCBSC1 ======================================================= */ + #define R_ETHSW_P2_QMCBSC1_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P2_QMCBSC1_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P2_QMCBSC2 ======================================================= */ + #define R_ETHSW_P2_QMCBSC2_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P2_QMCBSC2_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P2_QMCBSC3 ======================================================= */ + #define R_ETHSW_P2_QMCBSC3_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P2_QMCBSC3_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P2_QMCBSC4 ======================================================= */ + #define R_ETHSW_P2_QMCBSC4_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P2_QMCBSC4_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P2_QMCBSC5 ======================================================= */ + #define R_ETHSW_P2_QMCBSC5_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P2_QMCBSC5_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P2_QMCBSC6 ======================================================= */ + #define R_ETHSW_P2_QMCBSC6_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P2_QMCBSC6_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P2_QMCBSC7 ======================================================= */ + #define R_ETHSW_P2_QMCBSC7_CBS_Pos (0UL) /*!< CBS (Bit 0) */ + #define R_ETHSW_P2_QMCBSC7_CBS_Msk (0x3ffffUL) /*!< CBS (Bitfield-Mask: 0x3ffff) */ +/* ====================================================== P2_QMCIRC0 ======================================================= */ + #define R_ETHSW_P2_QMCIRC0_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P2_QMCIRC0_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P2_QMCIRC1 ======================================================= */ + #define R_ETHSW_P2_QMCIRC1_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P2_QMCIRC1_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P2_QMCIRC2 ======================================================= */ + #define R_ETHSW_P2_QMCIRC2_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P2_QMCIRC2_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P2_QMCIRC3 ======================================================= */ + #define R_ETHSW_P2_QMCIRC3_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P2_QMCIRC3_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P2_QMCIRC4 ======================================================= */ + #define R_ETHSW_P2_QMCIRC4_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P2_QMCIRC4_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P2_QMCIRC5 ======================================================= */ + #define R_ETHSW_P2_QMCIRC5_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P2_QMCIRC5_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P2_QMCIRC6 ======================================================= */ + #define R_ETHSW_P2_QMCIRC6_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P2_QMCIRC6_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ====================================================== P2_QMCIRC7 ======================================================= */ + #define R_ETHSW_P2_QMCIRC7_CIR_Pos (0UL) /*!< CIR (Bit 0) */ + #define R_ETHSW_P2_QMCIRC7_CIR_Msk (0x1ffffUL) /*!< CIR (Bitfield-Mask: 0x1ffff) */ +/* ======================================================= P2_QMGPC0 ======================================================= */ + #define R_ETHSW_P2_QMGPC0_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P2_QMGPC0_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QMGPC1 ======================================================= */ + #define R_ETHSW_P2_QMGPC1_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P2_QMGPC1_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QMGPC2 ======================================================= */ + #define R_ETHSW_P2_QMGPC2_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P2_QMGPC2_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QMGPC3 ======================================================= */ + #define R_ETHSW_P2_QMGPC3_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P2_QMGPC3_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QMGPC4 ======================================================= */ + #define R_ETHSW_P2_QMGPC4_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P2_QMGPC4_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QMGPC5 ======================================================= */ + #define R_ETHSW_P2_QMGPC5_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P2_QMGPC5_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QMGPC6 ======================================================= */ + #define R_ETHSW_P2_QMGPC6_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P2_QMGPC6_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QMGPC7 ======================================================= */ + #define R_ETHSW_P2_QMGPC7_QMGPC_Pos (0UL) /*!< QMGPC (Bit 0) */ + #define R_ETHSW_P2_QMGPC7_QMGPC_Msk (0xffffUL) /*!< QMGPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QMRPC0 ======================================================= */ + #define R_ETHSW_P2_QMRPC0_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P2_QMRPC0_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QMRPC1 ======================================================= */ + #define R_ETHSW_P2_QMRPC1_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P2_QMRPC1_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QMRPC2 ======================================================= */ + #define R_ETHSW_P2_QMRPC2_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P2_QMRPC2_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QMRPC3 ======================================================= */ + #define R_ETHSW_P2_QMRPC3_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P2_QMRPC3_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QMRPC4 ======================================================= */ + #define R_ETHSW_P2_QMRPC4_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P2_QMRPC4_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QMRPC5 ======================================================= */ + #define R_ETHSW_P2_QMRPC5_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P2_QMRPC5_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QMRPC6 ======================================================= */ + #define R_ETHSW_P2_QMRPC6_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P2_QMRPC6_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ======================================================= P2_QMRPC7 ======================================================= */ + #define R_ETHSW_P2_QMRPC7_QMRPC_Pos (0UL) /*!< QMRPC (Bit 0) */ + #define R_ETHSW_P2_QMRPC7_QMRPC_Msk (0xffffUL) /*!< QMRPC (Bitfield-Mask: 0xffff) */ +/* ===================================================== STATN_STATUS ====================================================== */ + #define R_ETHSW_STATN_STATUS_BUSY_Pos (0UL) /*!< BUSY (Bit 0) */ + #define R_ETHSW_STATN_STATUS_BUSY_Msk (0x1UL) /*!< BUSY (Bitfield-Mask: 0x01) */ +/* ===================================================== STATN_CONFIG ====================================================== */ + #define R_ETHSW_STATN_CONFIG_CLEAR_ON_READ_Pos (1UL) /*!< CLEAR_ON_READ (Bit 1) */ + #define R_ETHSW_STATN_CONFIG_CLEAR_ON_READ_Msk (0x2UL) /*!< CLEAR_ON_READ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATN_CONFIG_RESET_Pos (31UL) /*!< RESET (Bit 31) */ + #define R_ETHSW_STATN_CONFIG_RESET_Msk (0x80000000UL) /*!< RESET (Bitfield-Mask: 0x01) */ +/* ===================================================== STATN_CONTROL ===================================================== */ + #define R_ETHSW_STATN_CONTROL_CHANMASK_Pos (0UL) /*!< CHANMASK (Bit 0) */ + #define R_ETHSW_STATN_CONTROL_CHANMASK_Msk (0xfUL) /*!< CHANMASK (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_STATN_CONTROL_CLEAR_PRE_Pos (29UL) /*!< CLEAR_PRE (Bit 29) */ + #define R_ETHSW_STATN_CONTROL_CLEAR_PRE_Msk (0x20000000UL) /*!< CLEAR_PRE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_STATN_CONTROL_CMD_CLEAR_Pos (31UL) /*!< CMD_CLEAR (Bit 31) */ + #define R_ETHSW_STATN_CONTROL_CMD_CLEAR_Msk (0x80000000UL) /*!< CMD_CLEAR (Bitfield-Mask: 0x01) */ +/* ================================================== STATN_CLEARVALUE_LO ================================================== */ + #define R_ETHSW_STATN_CLEARVALUE_LO_STATN_CLEARVALUE_LO_Pos (0UL) /*!< STATN_CLEARVALUE_LO (Bit 0) */ + #define R_ETHSW_STATN_CLEARVALUE_LO_STATN_CLEARVALUE_LO_Msk (0xffffffffUL) /*!< STATN_CLEARVALUE_LO (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== ODISC0 ========================================================= */ + #define R_ETHSW_ODISC0_ODISC_Pos (0UL) /*!< ODISC (Bit 0) */ + #define R_ETHSW_ODISC0_ODISC_Msk (0xffffffffUL) /*!< ODISC (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== ODISC1 ========================================================= */ + #define R_ETHSW_ODISC1_ODISC_Pos (0UL) /*!< ODISC (Bit 0) */ + #define R_ETHSW_ODISC1_ODISC_Msk (0xffffffffUL) /*!< ODISC (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== ODISC2 ========================================================= */ + #define R_ETHSW_ODISC2_ODISC_Pos (0UL) /*!< ODISC (Bit 0) */ + #define R_ETHSW_ODISC2_ODISC_Msk (0xffffffffUL) /*!< ODISC (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== ODISC3 ========================================================= */ + #define R_ETHSW_ODISC3_ODISC_Pos (0UL) /*!< ODISC (Bit 0) */ + #define R_ETHSW_ODISC3_ODISC_Msk (0xffffffffUL) /*!< ODISC (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== IDISC_VLAN0 ====================================================== */ + #define R_ETHSW_IDISC_VLAN0_IDISC_VLAN_Pos (0UL) /*!< IDISC_VLAN (Bit 0) */ + #define R_ETHSW_IDISC_VLAN0_IDISC_VLAN_Msk (0xffffffffUL) /*!< IDISC_VLAN (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== IDISC_VLAN1 ====================================================== */ + #define R_ETHSW_IDISC_VLAN1_IDISC_VLAN_Pos (0UL) /*!< IDISC_VLAN (Bit 0) */ + #define R_ETHSW_IDISC_VLAN1_IDISC_VLAN_Msk (0xffffffffUL) /*!< IDISC_VLAN (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== IDISC_VLAN2 ====================================================== */ + #define R_ETHSW_IDISC_VLAN2_IDISC_VLAN_Pos (0UL) /*!< IDISC_VLAN (Bit 0) */ + #define R_ETHSW_IDISC_VLAN2_IDISC_VLAN_Msk (0xffffffffUL) /*!< IDISC_VLAN (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== IDISC_VLAN3 ====================================================== */ + #define R_ETHSW_IDISC_VLAN3_IDISC_VLAN_Pos (0UL) /*!< IDISC_VLAN (Bit 0) */ + #define R_ETHSW_IDISC_VLAN3_IDISC_VLAN_Msk (0xffffffffUL) /*!< IDISC_VLAN (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== IDISC_UNTAGGED0 ==================================================== */ + #define R_ETHSW_IDISC_UNTAGGED0_IDISC_UNTAGGED_Pos (0UL) /*!< IDISC_UNTAGGED (Bit 0) */ + #define R_ETHSW_IDISC_UNTAGGED0_IDISC_UNTAGGED_Msk (0xffffffffUL) /*!< IDISC_UNTAGGED (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== IDISC_UNTAGGED1 ==================================================== */ + #define R_ETHSW_IDISC_UNTAGGED1_IDISC_UNTAGGED_Pos (0UL) /*!< IDISC_UNTAGGED (Bit 0) */ + #define R_ETHSW_IDISC_UNTAGGED1_IDISC_UNTAGGED_Msk (0xffffffffUL) /*!< IDISC_UNTAGGED (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== IDISC_UNTAGGED2 ==================================================== */ + #define R_ETHSW_IDISC_UNTAGGED2_IDISC_UNTAGGED_Pos (0UL) /*!< IDISC_UNTAGGED (Bit 0) */ + #define R_ETHSW_IDISC_UNTAGGED2_IDISC_UNTAGGED_Msk (0xffffffffUL) /*!< IDISC_UNTAGGED (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== IDISC_UNTAGGED3 ==================================================== */ + #define R_ETHSW_IDISC_UNTAGGED3_IDISC_UNTAGGED_Pos (0UL) /*!< IDISC_UNTAGGED (Bit 0) */ + #define R_ETHSW_IDISC_UNTAGGED3_IDISC_UNTAGGED_Msk (0xffffffffUL) /*!< IDISC_UNTAGGED (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== IDISC_BLOCKED0 ===================================================== */ + #define R_ETHSW_IDISC_BLOCKED0_IDISC_BLOCKED_Pos (0UL) /*!< IDISC_BLOCKED (Bit 0) */ + #define R_ETHSW_IDISC_BLOCKED0_IDISC_BLOCKED_Msk (0xffffffffUL) /*!< IDISC_BLOCKED (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== IDISC_BLOCKED1 ===================================================== */ + #define R_ETHSW_IDISC_BLOCKED1_IDISC_BLOCKED_Pos (0UL) /*!< IDISC_BLOCKED (Bit 0) */ + #define R_ETHSW_IDISC_BLOCKED1_IDISC_BLOCKED_Msk (0xffffffffUL) /*!< IDISC_BLOCKED (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== IDISC_BLOCKED2 ===================================================== */ + #define R_ETHSW_IDISC_BLOCKED2_IDISC_BLOCKED_Pos (0UL) /*!< IDISC_BLOCKED (Bit 0) */ + #define R_ETHSW_IDISC_BLOCKED2_IDISC_BLOCKED_Msk (0xffffffffUL) /*!< IDISC_BLOCKED (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== IDISC_BLOCKED3 ===================================================== */ + #define R_ETHSW_IDISC_BLOCKED3_IDISC_BLOCKED_Pos (0UL) /*!< IDISC_BLOCKED (Bit 0) */ + #define R_ETHSW_IDISC_BLOCKED3_IDISC_BLOCKED_Msk (0xffffffffUL) /*!< IDISC_BLOCKED (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== IDISC_ANY0 ======================================================= */ + #define R_ETHSW_IDISC_ANY0_IDISC_ANY_Pos (0UL) /*!< IDISC_ANY (Bit 0) */ + #define R_ETHSW_IDISC_ANY0_IDISC_ANY_Msk (0xffffffffUL) /*!< IDISC_ANY (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== IDISC_ANY1 ======================================================= */ + #define R_ETHSW_IDISC_ANY1_IDISC_ANY_Pos (0UL) /*!< IDISC_ANY (Bit 0) */ + #define R_ETHSW_IDISC_ANY1_IDISC_ANY_Msk (0xffffffffUL) /*!< IDISC_ANY (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== IDISC_ANY2 ======================================================= */ + #define R_ETHSW_IDISC_ANY2_IDISC_ANY_Pos (0UL) /*!< IDISC_ANY (Bit 0) */ + #define R_ETHSW_IDISC_ANY2_IDISC_ANY_Msk (0xffffffffUL) /*!< IDISC_ANY (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== IDISC_ANY3 ======================================================= */ + #define R_ETHSW_IDISC_ANY3_IDISC_ANY_Pos (0UL) /*!< IDISC_ANY (Bit 0) */ + #define R_ETHSW_IDISC_ANY3_IDISC_ANY_Msk (0xffffffffUL) /*!< IDISC_ANY (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== IDISC_SRCFLT0 ===================================================== */ + #define R_ETHSW_IDISC_SRCFLT0_IDISC_SRCFLT_Pos (0UL) /*!< IDISC_SRCFLT (Bit 0) */ + #define R_ETHSW_IDISC_SRCFLT0_IDISC_SRCFLT_Msk (0xffffffffUL) /*!< IDISC_SRCFLT (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== IDISC_SRCFLT1 ===================================================== */ + #define R_ETHSW_IDISC_SRCFLT1_IDISC_SRCFLT_Pos (0UL) /*!< IDISC_SRCFLT (Bit 0) */ + #define R_ETHSW_IDISC_SRCFLT1_IDISC_SRCFLT_Msk (0xffffffffUL) /*!< IDISC_SRCFLT (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== IDISC_SRCFLT2 ===================================================== */ + #define R_ETHSW_IDISC_SRCFLT2_IDISC_SRCFLT_Pos (0UL) /*!< IDISC_SRCFLT (Bit 0) */ + #define R_ETHSW_IDISC_SRCFLT2_IDISC_SRCFLT_Msk (0xffffffffUL) /*!< IDISC_SRCFLT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== TX_HOLD_REQ_CNT0 ==================================================== */ + #define R_ETHSW_TX_HOLD_REQ_CNT0_TX_HOLD_REQ_CNT_Pos (0UL) /*!< TX_HOLD_REQ_CNT (Bit 0) */ + #define R_ETHSW_TX_HOLD_REQ_CNT0_TX_HOLD_REQ_CNT_Msk (0xffffffffUL) /*!< TX_HOLD_REQ_CNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== TX_HOLD_REQ_CNT1 ==================================================== */ + #define R_ETHSW_TX_HOLD_REQ_CNT1_TX_HOLD_REQ_CNT_Pos (0UL) /*!< TX_HOLD_REQ_CNT (Bit 0) */ + #define R_ETHSW_TX_HOLD_REQ_CNT1_TX_HOLD_REQ_CNT_Msk (0xffffffffUL) /*!< TX_HOLD_REQ_CNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== TX_HOLD_REQ_CNT2 ==================================================== */ + #define R_ETHSW_TX_HOLD_REQ_CNT2_TX_HOLD_REQ_CNT_Pos (0UL) /*!< TX_HOLD_REQ_CNT (Bit 0) */ + #define R_ETHSW_TX_HOLD_REQ_CNT2_TX_HOLD_REQ_CNT_Msk (0xffffffffUL) /*!< TX_HOLD_REQ_CNT (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== TX_FRAG_CNT0 ====================================================== */ + #define R_ETHSW_TX_FRAG_CNT0_TX_FRAG_CNT_Pos (0UL) /*!< TX_FRAG_CNT (Bit 0) */ + #define R_ETHSW_TX_FRAG_CNT0_TX_FRAG_CNT_Msk (0xffffffffUL) /*!< TX_FRAG_CNT (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== TX_FRAG_CNT1 ====================================================== */ + #define R_ETHSW_TX_FRAG_CNT1_TX_FRAG_CNT_Pos (0UL) /*!< TX_FRAG_CNT (Bit 0) */ + #define R_ETHSW_TX_FRAG_CNT1_TX_FRAG_CNT_Msk (0xffffffffUL) /*!< TX_FRAG_CNT (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== TX_FRAG_CNT2 ====================================================== */ + #define R_ETHSW_TX_FRAG_CNT2_TX_FRAG_CNT_Pos (0UL) /*!< TX_FRAG_CNT (Bit 0) */ + #define R_ETHSW_TX_FRAG_CNT2_TX_FRAG_CNT_Msk (0xffffffffUL) /*!< TX_FRAG_CNT (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== RX_FRAG_CNT0 ====================================================== */ + #define R_ETHSW_RX_FRAG_CNT0_RX_FRAG_CNT_Pos (0UL) /*!< RX_FRAG_CNT (Bit 0) */ + #define R_ETHSW_RX_FRAG_CNT0_RX_FRAG_CNT_Msk (0xffffffffUL) /*!< RX_FRAG_CNT (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== RX_FRAG_CNT1 ====================================================== */ + #define R_ETHSW_RX_FRAG_CNT1_RX_FRAG_CNT_Pos (0UL) /*!< RX_FRAG_CNT (Bit 0) */ + #define R_ETHSW_RX_FRAG_CNT1_RX_FRAG_CNT_Msk (0xffffffffUL) /*!< RX_FRAG_CNT (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== RX_FRAG_CNT2 ====================================================== */ + #define R_ETHSW_RX_FRAG_CNT2_RX_FRAG_CNT_Pos (0UL) /*!< RX_FRAG_CNT (Bit 0) */ + #define R_ETHSW_RX_FRAG_CNT2_RX_FRAG_CNT_Msk (0xffffffffUL) /*!< RX_FRAG_CNT (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== RX_ASSY_OK_CNT0 ==================================================== */ + #define R_ETHSW_RX_ASSY_OK_CNT0_RX_ASSY_OK_CNT_Pos (0UL) /*!< RX_ASSY_OK_CNT (Bit 0) */ + #define R_ETHSW_RX_ASSY_OK_CNT0_RX_ASSY_OK_CNT_Msk (0xffffffffUL) /*!< RX_ASSY_OK_CNT (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== RX_ASSY_OK_CNT1 ==================================================== */ + #define R_ETHSW_RX_ASSY_OK_CNT1_RX_ASSY_OK_CNT_Pos (0UL) /*!< RX_ASSY_OK_CNT (Bit 0) */ + #define R_ETHSW_RX_ASSY_OK_CNT1_RX_ASSY_OK_CNT_Msk (0xffffffffUL) /*!< RX_ASSY_OK_CNT (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== RX_ASSY_OK_CNT2 ==================================================== */ + #define R_ETHSW_RX_ASSY_OK_CNT2_RX_ASSY_OK_CNT_Pos (0UL) /*!< RX_ASSY_OK_CNT (Bit 0) */ + #define R_ETHSW_RX_ASSY_OK_CNT2_RX_ASSY_OK_CNT_Msk (0xffffffffUL) /*!< RX_ASSY_OK_CNT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== RX_ASSY_ERR_CNT0 ==================================================== */ + #define R_ETHSW_RX_ASSY_ERR_CNT0_RX_ASSY_ERR_CNT_Pos (0UL) /*!< RX_ASSY_ERR_CNT (Bit 0) */ + #define R_ETHSW_RX_ASSY_ERR_CNT0_RX_ASSY_ERR_CNT_Msk (0xffffUL) /*!< RX_ASSY_ERR_CNT (Bitfield-Mask: 0xffff) */ +/* =================================================== RX_ASSY_ERR_CNT1 ==================================================== */ + #define R_ETHSW_RX_ASSY_ERR_CNT1_RX_ASSY_ERR_CNT_Pos (0UL) /*!< RX_ASSY_ERR_CNT (Bit 0) */ + #define R_ETHSW_RX_ASSY_ERR_CNT1_RX_ASSY_ERR_CNT_Msk (0xffffUL) /*!< RX_ASSY_ERR_CNT (Bitfield-Mask: 0xffff) */ +/* =================================================== RX_ASSY_ERR_CNT2 ==================================================== */ + #define R_ETHSW_RX_ASSY_ERR_CNT2_RX_ASSY_ERR_CNT_Pos (0UL) /*!< RX_ASSY_ERR_CNT (Bit 0) */ + #define R_ETHSW_RX_ASSY_ERR_CNT2_RX_ASSY_ERR_CNT_Msk (0xffffUL) /*!< RX_ASSY_ERR_CNT (Bitfield-Mask: 0xffff) */ +/* ==================================================== RX_SMD_ERR_CNT0 ==================================================== */ + #define R_ETHSW_RX_SMD_ERR_CNT0_RX_SMD_ERR_CNT_Pos (0UL) /*!< RX_SMD_ERR_CNT (Bit 0) */ + #define R_ETHSW_RX_SMD_ERR_CNT0_RX_SMD_ERR_CNT_Msk (0xffffUL) /*!< RX_SMD_ERR_CNT (Bitfield-Mask: 0xffff) */ +/* ==================================================== RX_SMD_ERR_CNT1 ==================================================== */ + #define R_ETHSW_RX_SMD_ERR_CNT1_RX_SMD_ERR_CNT_Pos (0UL) /*!< RX_SMD_ERR_CNT (Bit 0) */ + #define R_ETHSW_RX_SMD_ERR_CNT1_RX_SMD_ERR_CNT_Msk (0xffffUL) /*!< RX_SMD_ERR_CNT (Bitfield-Mask: 0xffff) */ +/* ==================================================== RX_SMD_ERR_CNT2 ==================================================== */ + #define R_ETHSW_RX_SMD_ERR_CNT2_RX_SMD_ERR_CNT_Pos (0UL) /*!< RX_SMD_ERR_CNT (Bit 0) */ + #define R_ETHSW_RX_SMD_ERR_CNT2_RX_SMD_ERR_CNT_Msk (0xffffUL) /*!< RX_SMD_ERR_CNT (Bitfield-Mask: 0xffff) */ +/* =================================================== TX_VERIFY_OK_CNT0 =================================================== */ + #define R_ETHSW_TX_VERIFY_OK_CNT0_TX_VERIFY_OK_CNT_Pos (0UL) /*!< TX_VERIFY_OK_CNT (Bit 0) */ + #define R_ETHSW_TX_VERIFY_OK_CNT0_TX_VERIFY_OK_CNT_Msk (0xffUL) /*!< TX_VERIFY_OK_CNT (Bitfield-Mask: 0xff) */ +/* =================================================== TX_VERIFY_OK_CNT1 =================================================== */ + #define R_ETHSW_TX_VERIFY_OK_CNT1_TX_VERIFY_OK_CNT_Pos (0UL) /*!< TX_VERIFY_OK_CNT (Bit 0) */ + #define R_ETHSW_TX_VERIFY_OK_CNT1_TX_VERIFY_OK_CNT_Msk (0xffUL) /*!< TX_VERIFY_OK_CNT (Bitfield-Mask: 0xff) */ +/* =================================================== TX_VERIFY_OK_CNT2 =================================================== */ + #define R_ETHSW_TX_VERIFY_OK_CNT2_TX_VERIFY_OK_CNT_Pos (0UL) /*!< TX_VERIFY_OK_CNT (Bit 0) */ + #define R_ETHSW_TX_VERIFY_OK_CNT2_TX_VERIFY_OK_CNT_Msk (0xffUL) /*!< TX_VERIFY_OK_CNT (Bitfield-Mask: 0xff) */ +/* ================================================== TX_RESPONSE_OK_CNT0 ================================================== */ + #define R_ETHSW_TX_RESPONSE_OK_CNT0_TX_RESPONSE_OK_CNT_Pos (0UL) /*!< TX_RESPONSE_OK_CNT (Bit 0) */ + #define R_ETHSW_TX_RESPONSE_OK_CNT0_TX_RESPONSE_OK_CNT_Msk (0xffUL) /*!< TX_RESPONSE_OK_CNT (Bitfield-Mask: 0xff) */ +/* ================================================== TX_RESPONSE_OK_CNT1 ================================================== */ + #define R_ETHSW_TX_RESPONSE_OK_CNT1_TX_RESPONSE_OK_CNT_Pos (0UL) /*!< TX_RESPONSE_OK_CNT (Bit 0) */ + #define R_ETHSW_TX_RESPONSE_OK_CNT1_TX_RESPONSE_OK_CNT_Msk (0xffUL) /*!< TX_RESPONSE_OK_CNT (Bitfield-Mask: 0xff) */ +/* ================================================== TX_RESPONSE_OK_CNT2 ================================================== */ + #define R_ETHSW_TX_RESPONSE_OK_CNT2_TX_RESPONSE_OK_CNT_Pos (0UL) /*!< TX_RESPONSE_OK_CNT (Bit 0) */ + #define R_ETHSW_TX_RESPONSE_OK_CNT2_TX_RESPONSE_OK_CNT_Msk (0xffUL) /*!< TX_RESPONSE_OK_CNT (Bitfield-Mask: 0xff) */ +/* =================================================== RX_VERIFY_OK_CNT0 =================================================== */ + #define R_ETHSW_RX_VERIFY_OK_CNT0_RX_VERIFY_OK_CNT_Pos (0UL) /*!< RX_VERIFY_OK_CNT (Bit 0) */ + #define R_ETHSW_RX_VERIFY_OK_CNT0_RX_VERIFY_OK_CNT_Msk (0xffUL) /*!< RX_VERIFY_OK_CNT (Bitfield-Mask: 0xff) */ +/* =================================================== RX_VERIFY_OK_CNT1 =================================================== */ + #define R_ETHSW_RX_VERIFY_OK_CNT1_RX_VERIFY_OK_CNT_Pos (0UL) /*!< RX_VERIFY_OK_CNT (Bit 0) */ + #define R_ETHSW_RX_VERIFY_OK_CNT1_RX_VERIFY_OK_CNT_Msk (0xffUL) /*!< RX_VERIFY_OK_CNT (Bitfield-Mask: 0xff) */ +/* =================================================== RX_VERIFY_OK_CNT2 =================================================== */ + #define R_ETHSW_RX_VERIFY_OK_CNT2_RX_VERIFY_OK_CNT_Pos (0UL) /*!< RX_VERIFY_OK_CNT (Bit 0) */ + #define R_ETHSW_RX_VERIFY_OK_CNT2_RX_VERIFY_OK_CNT_Msk (0xffUL) /*!< RX_VERIFY_OK_CNT (Bitfield-Mask: 0xff) */ +/* ================================================== RX_RESPONSE_OK_CNT0 ================================================== */ + #define R_ETHSW_RX_RESPONSE_OK_CNT0_RX_RESPONSE_OK_CNT_Pos (0UL) /*!< RX_RESPONSE_OK_CNT (Bit 0) */ + #define R_ETHSW_RX_RESPONSE_OK_CNT0_RX_RESPONSE_OK_CNT_Msk (0xffUL) /*!< RX_RESPONSE_OK_CNT (Bitfield-Mask: 0xff) */ +/* ================================================== RX_RESPONSE_OK_CNT1 ================================================== */ + #define R_ETHSW_RX_RESPONSE_OK_CNT1_RX_RESPONSE_OK_CNT_Pos (0UL) /*!< RX_RESPONSE_OK_CNT (Bit 0) */ + #define R_ETHSW_RX_RESPONSE_OK_CNT1_RX_RESPONSE_OK_CNT_Msk (0xffUL) /*!< RX_RESPONSE_OK_CNT (Bitfield-Mask: 0xff) */ +/* ================================================== RX_RESPONSE_OK_CNT2 ================================================== */ + #define R_ETHSW_RX_RESPONSE_OK_CNT2_RX_RESPONSE_OK_CNT_Pos (0UL) /*!< RX_RESPONSE_OK_CNT (Bit 0) */ + #define R_ETHSW_RX_RESPONSE_OK_CNT2_RX_RESPONSE_OK_CNT_Msk (0xffUL) /*!< RX_RESPONSE_OK_CNT (Bitfield-Mask: 0xff) */ +/* ================================================== RX_VERIFY_BAD_CNT0 =================================================== */ + #define R_ETHSW_RX_VERIFY_BAD_CNT0_RX_VERIFY_BAD_CNT_Pos (0UL) /*!< RX_VERIFY_BAD_CNT (Bit 0) */ + #define R_ETHSW_RX_VERIFY_BAD_CNT0_RX_VERIFY_BAD_CNT_Msk (0xffUL) /*!< RX_VERIFY_BAD_CNT (Bitfield-Mask: 0xff) */ +/* ================================================== RX_VERIFY_BAD_CNT1 =================================================== */ + #define R_ETHSW_RX_VERIFY_BAD_CNT1_RX_VERIFY_BAD_CNT_Pos (0UL) /*!< RX_VERIFY_BAD_CNT (Bit 0) */ + #define R_ETHSW_RX_VERIFY_BAD_CNT1_RX_VERIFY_BAD_CNT_Msk (0xffUL) /*!< RX_VERIFY_BAD_CNT (Bitfield-Mask: 0xff) */ +/* ================================================== RX_VERIFY_BAD_CNT2 =================================================== */ + #define R_ETHSW_RX_VERIFY_BAD_CNT2_RX_VERIFY_BAD_CNT_Pos (0UL) /*!< RX_VERIFY_BAD_CNT (Bit 0) */ + #define R_ETHSW_RX_VERIFY_BAD_CNT2_RX_VERIFY_BAD_CNT_Msk (0xffUL) /*!< RX_VERIFY_BAD_CNT (Bitfield-Mask: 0xff) */ +/* ================================================= RX_RESPONSE_BAD_CNT0 ================================================== */ + #define R_ETHSW_RX_RESPONSE_BAD_CNT0_RX_RESPONSE_BAD_CNT_Pos (0UL) /*!< RX_RESPONSE_BAD_CNT (Bit 0) */ + #define R_ETHSW_RX_RESPONSE_BAD_CNT0_RX_RESPONSE_BAD_CNT_Msk (0xffUL) /*!< RX_RESPONSE_BAD_CNT (Bitfield-Mask: 0xff) */ +/* ================================================= RX_RESPONSE_BAD_CNT1 ================================================== */ + #define R_ETHSW_RX_RESPONSE_BAD_CNT1_RX_RESPONSE_BAD_CNT_Pos (0UL) /*!< RX_RESPONSE_BAD_CNT (Bit 0) */ + #define R_ETHSW_RX_RESPONSE_BAD_CNT1_RX_RESPONSE_BAD_CNT_Msk (0xffUL) /*!< RX_RESPONSE_BAD_CNT (Bitfield-Mask: 0xff) */ +/* ================================================= RX_RESPONSE_BAD_CNT2 ================================================== */ + #define R_ETHSW_RX_RESPONSE_BAD_CNT2_RX_RESPONSE_BAD_CNT_Pos (0UL) /*!< RX_RESPONSE_BAD_CNT (Bit 0) */ + #define R_ETHSW_RX_RESPONSE_BAD_CNT2_RX_RESPONSE_BAD_CNT_Msk (0xffUL) /*!< RX_RESPONSE_BAD_CNT (Bitfield-Mask: 0xff) */ +/* ===================================================== MMCTL_OUT_CT ====================================================== */ + #define R_ETHSW_MMCTL_OUT_CT_CT_OVR_ENA_Pos (0UL) /*!< CT_OVR_ENA (Bit 0) */ + #define R_ETHSW_MMCTL_OUT_CT_CT_OVR_ENA_Msk (0x7UL) /*!< CT_OVR_ENA (Bitfield-Mask: 0x07) */ + #define R_ETHSW_MMCTL_OUT_CT_CT_OVR_Pos (16UL) /*!< CT_OVR (Bit 16) */ + #define R_ETHSW_MMCTL_OUT_CT_CT_OVR_Msk (0x70000UL) /*!< CT_OVR (Bitfield-Mask: 0x07) */ +/* ================================================== MMCTL_CTFL_P0_3_ENA ================================================== */ + #define R_ETHSW_MMCTL_CTFL_P0_3_ENA_CTFL_P0_ENA_Pos (0UL) /*!< CTFL_P0_ENA (Bit 0) */ + #define R_ETHSW_MMCTL_CTFL_P0_3_ENA_CTFL_P0_ENA_Msk (0xffUL) /*!< CTFL_P0_ENA (Bitfield-Mask: 0xff) */ + #define R_ETHSW_MMCTL_CTFL_P0_3_ENA_CTFL_P1_ENA_Pos (8UL) /*!< CTFL_P1_ENA (Bit 8) */ + #define R_ETHSW_MMCTL_CTFL_P0_3_ENA_CTFL_P1_ENA_Msk (0xff00UL) /*!< CTFL_P1_ENA (Bitfield-Mask: 0xff) */ + #define R_ETHSW_MMCTL_CTFL_P0_3_ENA_CTFL_P2_ENA_Pos (16UL) /*!< CTFL_P2_ENA (Bit 16) */ + #define R_ETHSW_MMCTL_CTFL_P0_3_ENA_CTFL_P2_ENA_Msk (0xff0000UL) /*!< CTFL_P2_ENA (Bitfield-Mask: 0xff) */ +/* ============================================== MMCTL_YELLOW_BYTE_LENGTH_P =============================================== */ + #define R_ETHSW_MMCTL_YELLOW_BYTE_LENGTH_P_YELLOW_LEN_Pos (2UL) /*!< YELLOW_LEN (Bit 2) */ + #define R_ETHSW_MMCTL_YELLOW_BYTE_LENGTH_P_YELLOW_LEN_Msk (0xfffcUL) /*!< YELLOW_LEN (Bitfield-Mask: 0x3fff) */ + #define R_ETHSW_MMCTL_YELLOW_BYTE_LENGTH_P_YLEN_EN_Pos (16UL) /*!< YLEN_EN (Bit 16) */ + #define R_ETHSW_MMCTL_YELLOW_BYTE_LENGTH_P_YLEN_EN_Msk (0x10000UL) /*!< YLEN_EN (Bitfield-Mask: 0x01) */ +/* ==================================================== MMCTL_POOL0_CTR ==================================================== */ + #define R_ETHSW_MMCTL_POOL0_CTR_CELLS_Pos (0UL) /*!< CELLS (Bit 0) */ + #define R_ETHSW_MMCTL_POOL0_CTR_CELLS_Msk (0x3ffUL) /*!< CELLS (Bitfield-Mask: 0x3ff) */ + #define R_ETHSW_MMCTL_POOL0_CTR_USED_Pos (16UL) /*!< USED (Bit 16) */ + #define R_ETHSW_MMCTL_POOL0_CTR_USED_Msk (0x3ff0000UL) /*!< USED (Bitfield-Mask: 0x3ff) */ +/* ==================================================== MMCTL_POOL1_CTR ==================================================== */ + #define R_ETHSW_MMCTL_POOL1_CTR_CELLS_Pos (0UL) /*!< CELLS (Bit 0) */ + #define R_ETHSW_MMCTL_POOL1_CTR_CELLS_Msk (0x3ffUL) /*!< CELLS (Bitfield-Mask: 0x3ff) */ + #define R_ETHSW_MMCTL_POOL1_CTR_USED_Pos (16UL) /*!< USED (Bit 16) */ + #define R_ETHSW_MMCTL_POOL1_CTR_USED_Msk (0x3ff0000UL) /*!< USED (Bitfield-Mask: 0x3ff) */ +/* =================================================== MMCTL_POOL_GLOBAL =================================================== */ + #define R_ETHSW_MMCTL_POOL_GLOBAL_CELLS_Pos (0UL) /*!< CELLS (Bit 0) */ + #define R_ETHSW_MMCTL_POOL_GLOBAL_CELLS_Msk (0x3ffUL) /*!< CELLS (Bitfield-Mask: 0x3ff) */ + #define R_ETHSW_MMCTL_POOL_GLOBAL_USED_Pos (16UL) /*!< USED (Bit 16) */ + #define R_ETHSW_MMCTL_POOL_GLOBAL_USED_Msk (0x3ff0000UL) /*!< USED (Bitfield-Mask: 0x3ff) */ +/* =================================================== MMCTL_POOL_STATUS =================================================== */ + #define R_ETHSW_MMCTL_POOL_STATUS_QUEUE_FULL_Pos (0UL) /*!< QUEUE_FULL (Bit 0) */ + #define R_ETHSW_MMCTL_POOL_STATUS_QUEUE_FULL_Msk (0xffUL) /*!< QUEUE_FULL (Bitfield-Mask: 0xff) */ +/* ==================================================== MMCTL_POOL_QMAP ==================================================== */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q0_MAP_Pos (0UL) /*!< Q0_MAP (Bit 0) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q0_MAP_Msk (0x1UL) /*!< Q0_MAP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q0_ENA_Pos (3UL) /*!< Q0_ENA (Bit 3) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q0_ENA_Msk (0x8UL) /*!< Q0_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q1_MAP_Pos (4UL) /*!< Q1_MAP (Bit 4) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q1_MAP_Msk (0x10UL) /*!< Q1_MAP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q1_ENA_Pos (7UL) /*!< Q1_ENA (Bit 7) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q1_ENA_Msk (0x80UL) /*!< Q1_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q2_MAP_Pos (8UL) /*!< Q2_MAP (Bit 8) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q2_MAP_Msk (0x100UL) /*!< Q2_MAP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q2_ENA_Pos (11UL) /*!< Q2_ENA (Bit 11) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q2_ENA_Msk (0x800UL) /*!< Q2_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q3_MAP_Pos (12UL) /*!< Q3_MAP (Bit 12) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q3_MAP_Msk (0x1000UL) /*!< Q3_MAP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q3_ENA_Pos (15UL) /*!< Q3_ENA (Bit 15) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q3_ENA_Msk (0x8000UL) /*!< Q3_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q4_MAP_Pos (16UL) /*!< Q4_MAP (Bit 16) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q4_MAP_Msk (0x10000UL) /*!< Q4_MAP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q4_ENA_Pos (19UL) /*!< Q4_ENA (Bit 19) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q4_ENA_Msk (0x80000UL) /*!< Q4_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q5_MAP_Pos (20UL) /*!< Q5_MAP (Bit 20) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q5_MAP_Msk (0x100000UL) /*!< Q5_MAP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q5_ENA_Pos (23UL) /*!< Q5_ENA (Bit 23) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q5_ENA_Msk (0x800000UL) /*!< Q5_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q6_MAP_Pos (24UL) /*!< Q6_MAP (Bit 24) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q6_MAP_Msk (0x1000000UL) /*!< Q6_MAP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q6_ENA_Pos (27UL) /*!< Q6_ENA (Bit 27) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q6_ENA_Msk (0x8000000UL) /*!< Q6_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q7_MAP_Pos (28UL) /*!< Q7_MAP (Bit 28) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q7_MAP_Msk (0x10000000UL) /*!< Q7_MAP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q7_ENA_Pos (31UL) /*!< Q7_ENA (Bit 31) */ + #define R_ETHSW_MMCTL_POOL_QMAP_Q7_ENA_Msk (0x80000000UL) /*!< Q7_ENA (Bitfield-Mask: 0x01) */ +/* ====================================================== MMCTL_QGATE ====================================================== */ + #define R_ETHSW_MMCTL_QGATE_PORT_MASK_Pos (0UL) /*!< PORT_MASK (Bit 0) */ + #define R_ETHSW_MMCTL_QGATE_PORT_MASK_Msk (0xfUL) /*!< PORT_MASK (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_MMCTL_QGATE_QUEUE_GATE_Pos (16UL) /*!< QUEUE_GATE (Bit 16) */ + #define R_ETHSW_MMCTL_QGATE_QUEUE_GATE_Msk (0xffff0000UL) /*!< QUEUE_GATE (Bitfield-Mask: 0xffff) */ +/* ====================================================== MMCTL_QTRIG ====================================================== */ + #define R_ETHSW_MMCTL_QTRIG_PORT_MASK_Pos (0UL) /*!< PORT_MASK (Bit 0) */ + #define R_ETHSW_MMCTL_QTRIG_PORT_MASK_Msk (0xfUL) /*!< PORT_MASK (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_MMCTL_QTRIG_QUEUE_TRIG_Pos (16UL) /*!< QUEUE_TRIG (Bit 16) */ + #define R_ETHSW_MMCTL_QTRIG_QUEUE_TRIG_Msk (0xff0000UL) /*!< QUEUE_TRIG (Bitfield-Mask: 0xff) */ +/* ===================================================== MMCTL_QFLUSH ====================================================== */ + #define R_ETHSW_MMCTL_QFLUSH_PORT_MASK_Pos (0UL) /*!< PORT_MASK (Bit 0) */ + #define R_ETHSW_MMCTL_QFLUSH_PORT_MASK_Msk (0xfUL) /*!< PORT_MASK (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_MMCTL_QFLUSH_QUEUE_MASK_Pos (16UL) /*!< QUEUE_MASK (Bit 16) */ + #define R_ETHSW_MMCTL_QFLUSH_QUEUE_MASK_Msk (0xff0000UL) /*!< QUEUE_MASK (Bitfield-Mask: 0xff) */ + #define R_ETHSW_MMCTL_QFLUSH_ACTION_Pos (24UL) /*!< ACTION (Bit 24) */ + #define R_ETHSW_MMCTL_QFLUSH_ACTION_Msk (0x3000000UL) /*!< ACTION (Bitfield-Mask: 0x03) */ +/* =============================================== MMCTL_QCLOSED_STATUS_P0_3 =============================================== */ + #define R_ETHSW_MMCTL_QCLOSED_STATUS_P0_3_P0_STATUS_Pos (0UL) /*!< P0_STATUS (Bit 0) */ + #define R_ETHSW_MMCTL_QCLOSED_STATUS_P0_3_P0_STATUS_Msk (0xffUL) /*!< P0_STATUS (Bitfield-Mask: 0xff) */ + #define R_ETHSW_MMCTL_QCLOSED_STATUS_P0_3_P1_STATUS_Pos (8UL) /*!< P1_STATUS (Bit 8) */ + #define R_ETHSW_MMCTL_QCLOSED_STATUS_P0_3_P1_STATUS_Msk (0xff00UL) /*!< P1_STATUS (Bitfield-Mask: 0xff) */ + #define R_ETHSW_MMCTL_QCLOSED_STATUS_P0_3_P2_STATUS_Pos (16UL) /*!< P2_STATUS (Bit 16) */ + #define R_ETHSW_MMCTL_QCLOSED_STATUS_P0_3_P2_STATUS_Msk (0xff0000UL) /*!< P2_STATUS (Bitfield-Mask: 0xff) */ +/* ================================================== MMCTL_1FRAME_MODE_P ================================================== */ + #define R_ETHSW_MMCTL_1FRAME_MODE_P_Q_1FRAME_ENA_Pos (0UL) /*!< Q_1FRAME_ENA (Bit 0) */ + #define R_ETHSW_MMCTL_1FRAME_MODE_P_Q_1FRAME_ENA_Msk (0xffUL) /*!< Q_1FRAME_ENA (Bitfield-Mask: 0xff) */ + #define R_ETHSW_MMCTL_1FRAME_MODE_P_Q_BUF_ENA_Pos (16UL) /*!< Q_BUF_ENA (Bit 16) */ + #define R_ETHSW_MMCTL_1FRAME_MODE_P_Q_BUF_ENA_Msk (0xff0000UL) /*!< Q_BUF_ENA (Bitfield-Mask: 0xff) */ +/* ================================================ MMCTL_P0_3_QUEUE_STATUS ================================================ */ + #define R_ETHSW_MMCTL_P0_3_QUEUE_STATUS_P0_Q_STATUS_Pos (0UL) /*!< P0_Q_STATUS (Bit 0) */ + #define R_ETHSW_MMCTL_P0_3_QUEUE_STATUS_P0_Q_STATUS_Msk (0xffUL) /*!< P0_Q_STATUS (Bitfield-Mask: 0xff) */ + #define R_ETHSW_MMCTL_P0_3_QUEUE_STATUS_P1_Q_STATUS_Pos (8UL) /*!< P1_Q_STATUS (Bit 8) */ + #define R_ETHSW_MMCTL_P0_3_QUEUE_STATUS_P1_Q_STATUS_Msk (0xff00UL) /*!< P1_Q_STATUS (Bitfield-Mask: 0xff) */ + #define R_ETHSW_MMCTL_P0_3_QUEUE_STATUS_P2_Q_STATUS_Pos (16UL) /*!< P2_Q_STATUS (Bit 16) */ + #define R_ETHSW_MMCTL_P0_3_QUEUE_STATUS_P2_Q_STATUS_Msk (0xff0000UL) /*!< P2_Q_STATUS (Bitfield-Mask: 0xff) */ +/* ================================================ MMCTL_P0_3_FLUSH_STATUS ================================================ */ + #define R_ETHSW_MMCTL_P0_3_FLUSH_STATUS_P0_F_STATUS_Pos (0UL) /*!< P0_F_STATUS (Bit 0) */ + #define R_ETHSW_MMCTL_P0_3_FLUSH_STATUS_P0_F_STATUS_Msk (0xffUL) /*!< P0_F_STATUS (Bitfield-Mask: 0xff) */ + #define R_ETHSW_MMCTL_P0_3_FLUSH_STATUS_P1_F_STATUS_Pos (8UL) /*!< P1_F_STATUS (Bit 8) */ + #define R_ETHSW_MMCTL_P0_3_FLUSH_STATUS_P1_F_STATUS_Msk (0xff00UL) /*!< P1_F_STATUS (Bitfield-Mask: 0xff) */ + #define R_ETHSW_MMCTL_P0_3_FLUSH_STATUS_P2_F_STATUS_Pos (16UL) /*!< P2_F_STATUS (Bit 16) */ + #define R_ETHSW_MMCTL_P0_3_FLUSH_STATUS_P2_F_STATUS_Msk (0xff0000UL) /*!< P2_F_STATUS (Bitfield-Mask: 0xff) */ +/* ================================================ MMCTL_DLY_QTRIGGER_CTRL ================================================ */ + #define R_ETHSW_MMCTL_DLY_QTRIGGER_CTRL_DELAY_TIME_Pos (0UL) /*!< DELAY_TIME (Bit 0) */ + #define R_ETHSW_MMCTL_DLY_QTRIGGER_CTRL_DELAY_TIME_Msk (0x3fffffffUL) /*!< DELAY_TIME (Bitfield-Mask: 0x3fffffff) */ + #define R_ETHSW_MMCTL_DLY_QTRIGGER_CTRL_TIMER_SEL_Pos (30UL) /*!< TIMER_SEL (Bit 30) */ + #define R_ETHSW_MMCTL_DLY_QTRIGGER_CTRL_TIMER_SEL_Msk (0x40000000UL) /*!< TIMER_SEL (Bitfield-Mask: 0x01) */ +/* ================================================= MMCTL_PREEMPT_QUEUES ================================================== */ + #define R_ETHSW_MMCTL_PREEMPT_QUEUES_PREEMPT_ENA_Pos (0UL) /*!< PREEMPT_ENA (Bit 0) */ + #define R_ETHSW_MMCTL_PREEMPT_QUEUES_PREEMPT_ENA_Msk (0xffUL) /*!< PREEMPT_ENA (Bitfield-Mask: 0xff) */ + #define R_ETHSW_MMCTL_PREEMPT_QUEUES_PREEMPT_ON_QCLOSE_Pos (8UL) /*!< PREEMPT_ON_QCLOSE (Bit 8) */ + #define R_ETHSW_MMCTL_PREEMPT_QUEUES_PREEMPT_ON_QCLOSE_Msk (0xff00UL) /*!< PREEMPT_ON_QCLOSE (Bitfield-Mask: 0xff) */ +/* ================================================== MMCTL_HOLD_CONTROL =================================================== */ + #define R_ETHSW_MMCTL_HOLD_CONTROL_Q_HOLD_REQ_FORCE_Pos (0UL) /*!< Q_HOLD_REQ_FORCE (Bit 0) */ + #define R_ETHSW_MMCTL_HOLD_CONTROL_Q_HOLD_REQ_FORCE_Msk (0x7UL) /*!< Q_HOLD_REQ_FORCE (Bitfield-Mask: 0x07) */ + #define R_ETHSW_MMCTL_HOLD_CONTROL_Q_HOLD_REQ_RELEASE_Pos (16UL) /*!< Q_HOLD_REQ_RELEASE (Bit 16) */ + #define R_ETHSW_MMCTL_HOLD_CONTROL_Q_HOLD_REQ_RELEASE_Msk (0x70000UL) /*!< Q_HOLD_REQ_RELEASE (Bitfield-Mask: 0x07) */ +/* ================================================= MMCTL_PREEMPT_STATUS ================================================== */ + #define R_ETHSW_MMCTL_PREEMPT_STATUS_PREEMPT_STATE_Pos (0UL) /*!< PREEMPT_STATE (Bit 0) */ + #define R_ETHSW_MMCTL_PREEMPT_STATUS_PREEMPT_STATE_Msk (0x7UL) /*!< PREEMPT_STATE (Bitfield-Mask: 0x07) */ + #define R_ETHSW_MMCTL_PREEMPT_STATUS_HOLD_REQ_STATE_Pos (16UL) /*!< HOLD_REQ_STATE (Bit 16) */ + #define R_ETHSW_MMCTL_PREEMPT_STATUS_HOLD_REQ_STATE_Msk (0x70000UL) /*!< HOLD_REQ_STATE (Bitfield-Mask: 0x07) */ +/* =================================================== MMCTL_CQF_CTRL_P ==================================================== */ + #define R_ETHSW_MMCTL_CQF_CTRL_P_PRIO_ENABLE0_Pos (0UL) /*!< PRIO_ENABLE0 (Bit 0) */ + #define R_ETHSW_MMCTL_CQF_CTRL_P_PRIO_ENABLE0_Msk (0xffUL) /*!< PRIO_ENABLE0 (Bitfield-Mask: 0xff) */ + #define R_ETHSW_MMCTL_CQF_CTRL_P_QUEUE_SEL0_Pos (8UL) /*!< QUEUE_SEL0 (Bit 8) */ + #define R_ETHSW_MMCTL_CQF_CTRL_P_QUEUE_SEL0_Msk (0x700UL) /*!< QUEUE_SEL0 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_MMCTL_CQF_CTRL_P_GATE_SEL0_Pos (11UL) /*!< GATE_SEL0 (Bit 11) */ + #define R_ETHSW_MMCTL_CQF_CTRL_P_GATE_SEL0_Msk (0x3800UL) /*!< GATE_SEL0 (Bitfield-Mask: 0x07) */ + #define R_ETHSW_MMCTL_CQF_CTRL_P_USE_SOP0_Pos (14UL) /*!< USE_SOP0 (Bit 14) */ + #define R_ETHSW_MMCTL_CQF_CTRL_P_USE_SOP0_Msk (0x4000UL) /*!< USE_SOP0 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_MMCTL_CQF_CTRL_P_REF_SEL0_Pos (15UL) /*!< REF_SEL0 (Bit 15) */ + #define R_ETHSW_MMCTL_CQF_CTRL_P_REF_SEL0_Msk (0x8000UL) /*!< REF_SEL0 (Bitfield-Mask: 0x01) */ +/* ============================================== MMCTL_P0_3_QCLOSED_NONEMPTY ============================================== */ + #define R_ETHSW_MMCTL_P0_3_QCLOSED_NONEMPTY_P0_Q_STATUS_Pos (0UL) /*!< P0_Q_STATUS (Bit 0) */ + #define R_ETHSW_MMCTL_P0_3_QCLOSED_NONEMPTY_P0_Q_STATUS_Msk (0xffUL) /*!< P0_Q_STATUS (Bitfield-Mask: 0xff) */ + #define R_ETHSW_MMCTL_P0_3_QCLOSED_NONEMPTY_P1_Q_STATUS_Pos (8UL) /*!< P1_Q_STATUS (Bit 8) */ + #define R_ETHSW_MMCTL_P0_3_QCLOSED_NONEMPTY_P1_Q_STATUS_Msk (0xff00UL) /*!< P1_Q_STATUS (Bitfield-Mask: 0xff) */ + #define R_ETHSW_MMCTL_P0_3_QCLOSED_NONEMPTY_P2_Q_STATUS_Pos (16UL) /*!< P2_Q_STATUS (Bit 16) */ + #define R_ETHSW_MMCTL_P0_3_QCLOSED_NONEMPTY_P2_Q_STATUS_Msk (0xff0000UL) /*!< P2_Q_STATUS (Bitfield-Mask: 0xff) */ + #define R_ETHSW_MMCTL_P0_3_QCLOSED_NONEMPTY_P3_Q_STATUS_Pos (24UL) /*!< P3_Q_STATUS (Bit 24) */ + #define R_ETHSW_MMCTL_P0_3_QCLOSED_NONEMPTY_P3_Q_STATUS_Msk (0xff000000UL) /*!< P3_Q_STATUS (Bitfield-Mask: 0xff) */ +/* ================================================== MMCTL_PREEMPT_EXTRA ================================================== */ + #define R_ETHSW_MMCTL_PREEMPT_EXTRA_MIN_PFRM_ADJ_Pos (0UL) /*!< MIN_PFRM_ADJ (Bit 0) */ + #define R_ETHSW_MMCTL_PREEMPT_EXTRA_MIN_PFRM_ADJ_Msk (0xfUL) /*!< MIN_PFRM_ADJ (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_MMCTL_PREEMPT_EXTRA_LAST_PFRM_ADJ_Pos (4UL) /*!< LAST_PFRM_ADJ (Bit 4) */ + #define R_ETHSW_MMCTL_PREEMPT_EXTRA_LAST_PFRM_ADJ_Msk (0xf0UL) /*!< LAST_PFRM_ADJ (Bitfield-Mask: 0x0f) */ +/* ====================================================== DLR_CONTROL ====================================================== */ + #define R_ETHSW_DLR_CONTROL_ENABLE_Pos (0UL) /*!< ENABLE (Bit 0) */ + #define R_ETHSW_DLR_CONTROL_ENABLE_Msk (0x1UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_CONTROL_AUTOFLUSH_Pos (1UL) /*!< AUTOFLUSH (Bit 1) */ + #define R_ETHSW_DLR_CONTROL_AUTOFLUSH_Msk (0x2UL) /*!< AUTOFLUSH (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_CONTROL_LOOP_FILTER_ENA_Pos (2UL) /*!< LOOP_FILTER_ENA (Bit 2) */ + #define R_ETHSW_DLR_CONTROL_LOOP_FILTER_ENA_Msk (0x4UL) /*!< LOOP_FILTER_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_CONTROL_IGNORE_INVTM_Pos (4UL) /*!< IGNORE_INVTM (Bit 4) */ + #define R_ETHSW_DLR_CONTROL_IGNORE_INVTM_Msk (0x10UL) /*!< IGNORE_INVTM (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_CONTROL_US_TIME_Pos (8UL) /*!< US_TIME (Bit 8) */ + #define R_ETHSW_DLR_CONTROL_US_TIME_Msk (0xfff00UL) /*!< US_TIME (Bitfield-Mask: 0xfff) */ +/* ====================================================== DLR_STATUS ======================================================= */ + #define R_ETHSW_DLR_STATUS_LastBcnRcvPort_Pos (0UL) /*!< LastBcnRcvPort (Bit 0) */ + #define R_ETHSW_DLR_STATUS_LastBcnRcvPort_Msk (0x3UL) /*!< LastBcnRcvPort (Bitfield-Mask: 0x03) */ + #define R_ETHSW_DLR_STATUS_NODE_STATE_Pos (8UL) /*!< NODE_STATE (Bit 8) */ + #define R_ETHSW_DLR_STATUS_NODE_STATE_Msk (0xff00UL) /*!< NODE_STATE (Bitfield-Mask: 0xff) */ + #define R_ETHSW_DLR_STATUS_LINK_STATUS_Pos (16UL) /*!< LINK_STATUS (Bit 16) */ + #define R_ETHSW_DLR_STATUS_LINK_STATUS_Msk (0x30000UL) /*!< LINK_STATUS (Bitfield-Mask: 0x03) */ + #define R_ETHSW_DLR_STATUS_TOPOLOGY_Pos (24UL) /*!< TOPOLOGY (Bit 24) */ + #define R_ETHSW_DLR_STATUS_TOPOLOGY_Msk (0xff000000UL) /*!< TOPOLOGY (Bitfield-Mask: 0xff) */ +/* ====================================================== DLR_ETH_TYP ====================================================== */ + #define R_ETHSW_DLR_ETH_TYP_DLR_ETH_TYP_Pos (0UL) /*!< DLR_ETH_TYP (Bit 0) */ + #define R_ETHSW_DLR_ETH_TYP_DLR_ETH_TYP_Msk (0xffffUL) /*!< DLR_ETH_TYP (Bitfield-Mask: 0xffff) */ +/* ==================================================== DLR_IRQ_CONTROL ==================================================== */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_state_chng_ena_Pos (0UL) /*!< IRQ_state_chng_ena (Bit 0) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_state_chng_ena_Msk (0x1UL) /*!< IRQ_state_chng_ena (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_flush_macaddr_ena_Pos (1UL) /*!< IRQ_flush_macaddr_ena (Bit 1) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_flush_macaddr_ena_Msk (0x2UL) /*!< IRQ_flush_macaddr_ena (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_stop_nbchk0_ena_Pos (2UL) /*!< IRQ_stop_nbchk0_ena (Bit 2) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_stop_nbchk0_ena_Msk (0x4UL) /*!< IRQ_stop_nbchk0_ena (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_stop_nbchk1_ena_Pos (3UL) /*!< IRQ_stop_nbchk1_ena (Bit 3) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_stop_nbchk1_ena_Msk (0x8UL) /*!< IRQ_stop_nbchk1_ena (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_bec_tmr0_exp_ena_Pos (4UL) /*!< IRQ_bec_tmr0_exp_ena (Bit 4) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_bec_tmr0_exp_ena_Msk (0x10UL) /*!< IRQ_bec_tmr0_exp_ena (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_bec_tmr1_exp_ena_Pos (5UL) /*!< IRQ_bec_tmr1_exp_ena (Bit 5) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_bec_tmr1_exp_ena_Msk (0x20UL) /*!< IRQ_bec_tmr1_exp_ena (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_supr_chng_ena_Pos (6UL) /*!< IRQ_supr_chng_ena (Bit 6) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_supr_chng_ena_Msk (0x40UL) /*!< IRQ_supr_chng_ena (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_link_chng0_ena_Pos (7UL) /*!< IRQ_link_chng0_ena (Bit 7) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_link_chng0_ena_Msk (0x80UL) /*!< IRQ_link_chng0_ena (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_link_chng1_ena_Pos (8UL) /*!< IRQ_link_chng1_ena (Bit 8) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_link_chng1_ena_Msk (0x100UL) /*!< IRQ_link_chng1_ena (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_sup_ignord_ena_Pos (9UL) /*!< IRQ_sup_ignord_ena (Bit 9) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_sup_ignord_ena_Msk (0x200UL) /*!< IRQ_sup_ignord_ena (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_ip_addr_chng_ena_Pos (10UL) /*!< IRQ_ip_addr_chng_ena (Bit 10) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_ip_addr_chng_ena_Msk (0x400UL) /*!< IRQ_ip_addr_chng_ena (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_invalid_tmr_ena_Pos (11UL) /*!< IRQ_invalid_tmr_ena (Bit 11) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_invalid_tmr_ena_Msk (0x800UL) /*!< IRQ_invalid_tmr_ena (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_bec_rcv0_ena_Pos (12UL) /*!< IRQ_bec_rcv0_ena (Bit 12) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_bec_rcv0_ena_Msk (0x1000UL) /*!< IRQ_bec_rcv0_ena (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_bec_rcv1_ena_Pos (13UL) /*!< IRQ_bec_rcv1_ena (Bit 13) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_bec_rcv1_ena_Msk (0x2000UL) /*!< IRQ_bec_rcv1_ena (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_frm_dscrd0_Pos (14UL) /*!< IRQ_frm_dscrd0 (Bit 14) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_frm_dscrd0_Msk (0x4000UL) /*!< IRQ_frm_dscrd0 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_frm_dscrd1_Pos (15UL) /*!< IRQ_frm_dscrd1 (Bit 15) */ + #define R_ETHSW_DLR_IRQ_CONTROL_IRQ_frm_dscrd1_Msk (0x8000UL) /*!< IRQ_frm_dscrd1 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_CONTROL_low_int_en_Pos (29UL) /*!< low_int_en (Bit 29) */ + #define R_ETHSW_DLR_IRQ_CONTROL_low_int_en_Msk (0x20000000UL) /*!< low_int_en (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_CONTROL_atomic_OR_Pos (30UL) /*!< atomic_OR (Bit 30) */ + #define R_ETHSW_DLR_IRQ_CONTROL_atomic_OR_Msk (0x40000000UL) /*!< atomic_OR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_CONTROL_atomic_AND_Pos (31UL) /*!< atomic_AND (Bit 31) */ + #define R_ETHSW_DLR_IRQ_CONTROL_atomic_AND_Msk (0x80000000UL) /*!< atomic_AND (Bitfield-Mask: 0x01) */ +/* =================================================== DLR_IRQ_STAT_ACK ==================================================== */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_state_chng_IRQ_pending_Pos (0UL) /*!< state_chng_IRQ_pending (Bit 0) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_state_chng_IRQ_pending_Msk (0x1UL) /*!< state_chng_IRQ_pending (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_flush_IRQ_pending_Pos (1UL) /*!< flush_IRQ_pending (Bit 1) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_flush_IRQ_pending_Msk (0x2UL) /*!< flush_IRQ_pending (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_nbchk0_IRQ_pending_Pos (2UL) /*!< nbchk0_IRQ_pending (Bit 2) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_nbchk0_IRQ_pending_Msk (0x4UL) /*!< nbchk0_IRQ_pending (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_nbchk1_IRQ_pending_Pos (3UL) /*!< nbchk1_IRQ_pending (Bit 3) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_nbchk1_IRQ_pending_Msk (0x8UL) /*!< nbchk1_IRQ_pending (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_bec_tmr0_IRQ_pending_Pos (4UL) /*!< bec_tmr0_IRQ_pending (Bit 4) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_bec_tmr0_IRQ_pending_Msk (0x10UL) /*!< bec_tmr0_IRQ_pending (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_bec_tmr1_IRQ_pending_Pos (5UL) /*!< bec_tmr1_IRQ_pending (Bit 5) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_bec_tmr1_IRQ_pending_Msk (0x20UL) /*!< bec_tmr1_IRQ_pending (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_supr_chng_IRQ_pending_Pos (6UL) /*!< supr_chng_IRQ_pending (Bit 6) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_supr_chng_IRQ_pending_Msk (0x40UL) /*!< supr_chng_IRQ_pending (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_Link0_IRQ_pending_Pos (7UL) /*!< Link0_IRQ_pending (Bit 7) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_Link0_IRQ_pending_Msk (0x80UL) /*!< Link0_IRQ_pending (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_Link1_IRQ_pending_Pos (8UL) /*!< Link1_IRQ_pending (Bit 8) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_Link1_IRQ_pending_Msk (0x100UL) /*!< Link1_IRQ_pending (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_sup_ignord_IRQ_pending_Pos (9UL) /*!< sup_ignord_IRQ_pending (Bit 9) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_sup_ignord_IRQ_pending_Msk (0x200UL) /*!< sup_ignord_IRQ_pending (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_ip_chng_IRQ_pending_Pos (10UL) /*!< ip_chng_IRQ_pending (Bit 10) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_ip_chng_IRQ_pending_Msk (0x400UL) /*!< ip_chng_IRQ_pending (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_invalid_tmr_IRQ_pending_Pos (11UL) /*!< invalid_tmr_IRQ_pending (Bit 11) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_invalid_tmr_IRQ_pending_Msk (0x800UL) /*!< invalid_tmr_IRQ_pending (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_bec_rcv0_IRQ_pending_Pos (12UL) /*!< bec_rcv0_IRQ_pending (Bit 12) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_bec_rcv0_IRQ_pending_Msk (0x1000UL) /*!< bec_rcv0_IRQ_pending (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_bec_rcv1_IRQ_pending_Pos (13UL) /*!< bec_rcv1_IRQ_pending (Bit 13) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_bec_rcv1_IRQ_pending_Msk (0x2000UL) /*!< bec_rcv1_IRQ_pending (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_frm_dscrd0_IRQ_pending_Pos (14UL) /*!< frm_dscrd0_IRQ_pending (Bit 14) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_frm_dscrd0_IRQ_pending_Msk (0x4000UL) /*!< frm_dscrd0_IRQ_pending (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_frm_dscrd1_IRQ_pending_Pos (15UL) /*!< frm_dscrd1_IRQ_pending (Bit 15) */ + #define R_ETHSW_DLR_IRQ_STAT_ACK_frm_dscrd1_IRQ_pending_Msk (0x8000UL) /*!< frm_dscrd1_IRQ_pending (Bitfield-Mask: 0x01) */ +/* ===================================================== DLR_LOC_MAClo ===================================================== */ + #define R_ETHSW_DLR_LOC_MAClo_LOC_MAC_Pos (0UL) /*!< LOC_MAC (Bit 0) */ + #define R_ETHSW_DLR_LOC_MAClo_LOC_MAC_Msk (0xffffffffUL) /*!< LOC_MAC (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== DLR_LOC_MAChi ===================================================== */ + #define R_ETHSW_DLR_LOC_MAChi_LOC_MAC_Pos (0UL) /*!< LOC_MAC (Bit 0) */ + #define R_ETHSW_DLR_LOC_MAChi_LOC_MAC_Msk (0xffffUL) /*!< LOC_MAC (Bitfield-Mask: 0xffff) */ +/* ==================================================== DLR_SUPR_MAClo ===================================================== */ + #define R_ETHSW_DLR_SUPR_MAClo_SUPR_MAC_Pos (0UL) /*!< SUPR_MAC (Bit 0) */ + #define R_ETHSW_DLR_SUPR_MAClo_SUPR_MAC_Msk (0xffffffffUL) /*!< SUPR_MAC (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== DLR_SUPR_MAChi ===================================================== */ + #define R_ETHSW_DLR_SUPR_MAChi_SUPR_MAC_Pos (0UL) /*!< SUPR_MAC (Bit 0) */ + #define R_ETHSW_DLR_SUPR_MAChi_SUPR_MAC_Msk (0xffffUL) /*!< SUPR_MAC (Bitfield-Mask: 0xffff) */ + #define R_ETHSW_DLR_SUPR_MAChi_PRECE_Pos (16UL) /*!< PRECE (Bit 16) */ + #define R_ETHSW_DLR_SUPR_MAChi_PRECE_Msk (0xff0000UL) /*!< PRECE (Bitfield-Mask: 0xff) */ +/* ==================================================== DLR_STATE_VLAN ===================================================== */ + #define R_ETHSW_DLR_STATE_VLAN_RINGSTAT_Pos (0UL) /*!< RINGSTAT (Bit 0) */ + #define R_ETHSW_DLR_STATE_VLAN_RINGSTAT_Msk (0xffUL) /*!< RINGSTAT (Bitfield-Mask: 0xff) */ + #define R_ETHSW_DLR_STATE_VLAN_VLANVALID_Pos (8UL) /*!< VLANVALID (Bit 8) */ + #define R_ETHSW_DLR_STATE_VLAN_VLANVALID_Msk (0x100UL) /*!< VLANVALID (Bitfield-Mask: 0x01) */ + #define R_ETHSW_DLR_STATE_VLAN_VLANINFO_Pos (16UL) /*!< VLANINFO (Bit 16) */ + #define R_ETHSW_DLR_STATE_VLAN_VLANINFO_Msk (0xffff0000UL) /*!< VLANINFO (Bitfield-Mask: 0xffff) */ +/* ===================================================== DLR_BEC_TMOUT ===================================================== */ + #define R_ETHSW_DLR_BEC_TMOUT_BEC_TMOUT_Pos (0UL) /*!< BEC_TMOUT (Bit 0) */ + #define R_ETHSW_DLR_BEC_TMOUT_BEC_TMOUT_Msk (0xffffffffUL) /*!< BEC_TMOUT (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== DLR_BEC_INTRVL ===================================================== */ + #define R_ETHSW_DLR_BEC_INTRVL_BEC_INTRVL_Pos (0UL) /*!< BEC_INTRVL (Bit 0) */ + #define R_ETHSW_DLR_BEC_INTRVL_BEC_INTRVL_Msk (0xffffffffUL) /*!< BEC_INTRVL (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== DLR_SUPR_IPADR ===================================================== */ + #define R_ETHSW_DLR_SUPR_IPADR_SUPR_IPADR_Pos (0UL) /*!< SUPR_IPADR (Bit 0) */ + #define R_ETHSW_DLR_SUPR_IPADR_SUPR_IPADR_Msk (0xffffffffUL) /*!< SUPR_IPADR (Bitfield-Mask: 0xffffffff) */ +/* =================================================== DLR_ETH_STYP_VER ==================================================== */ + #define R_ETHSW_DLR_ETH_STYP_VER_SUBTYPE_Pos (0UL) /*!< SUBTYPE (Bit 0) */ + #define R_ETHSW_DLR_ETH_STYP_VER_SUBTYPE_Msk (0xffUL) /*!< SUBTYPE (Bitfield-Mask: 0xff) */ + #define R_ETHSW_DLR_ETH_STYP_VER_PROTVER_Pos (8UL) /*!< PROTVER (Bit 8) */ + #define R_ETHSW_DLR_ETH_STYP_VER_PROTVER_Msk (0xff00UL) /*!< PROTVER (Bitfield-Mask: 0xff) */ + #define R_ETHSW_DLR_ETH_STYP_VER_SPORT_Pos (16UL) /*!< SPORT (Bit 16) */ + #define R_ETHSW_DLR_ETH_STYP_VER_SPORT_Msk (0xff0000UL) /*!< SPORT (Bitfield-Mask: 0xff) */ +/* ===================================================== DLR_INV_TMOUT ===================================================== */ + #define R_ETHSW_DLR_INV_TMOUT_INV_TMOUT_Pos (0UL) /*!< INV_TMOUT (Bit 0) */ + #define R_ETHSW_DLR_INV_TMOUT_INV_TMOUT_Msk (0xffffffffUL) /*!< INV_TMOUT (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== DLR_SEQ_ID ======================================================= */ + #define R_ETHSW_DLR_SEQ_ID_SEQ_ID_Pos (0UL) /*!< SEQ_ID (Bit 0) */ + #define R_ETHSW_DLR_SEQ_ID_SEQ_ID_Msk (0xffffffffUL) /*!< SEQ_ID (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= DLR_DSTlo ======================================================= */ + #define R_ETHSW_DLR_DSTlo_DLR_DST_Pos (0UL) /*!< DLR_DST (Bit 0) */ + #define R_ETHSW_DLR_DSTlo_DLR_DST_Msk (0xffffffffUL) /*!< DLR_DST (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= DLR_DSThi ======================================================= */ + #define R_ETHSW_DLR_DSThi_DLR_DST_Pos (0UL) /*!< DLR_DST (Bit 0) */ + #define R_ETHSW_DLR_DSThi_DLR_DST_Msk (0xffffUL) /*!< DLR_DST (Bitfield-Mask: 0xffff) */ +/* ===================================================== DLR_RX_STAT0 ====================================================== */ + #define R_ETHSW_DLR_RX_STAT0_RX_STAT0_Pos (0UL) /*!< RX_STAT0 (Bit 0) */ + #define R_ETHSW_DLR_RX_STAT0_RX_STAT0_Msk (0xffffffffUL) /*!< RX_STAT0 (Bitfield-Mask: 0xffffffff) */ +/* =================================================== DLR_RX_ERR_STAT0 ==================================================== */ + #define R_ETHSW_DLR_RX_ERR_STAT0_RX_ERR_STAT0_Pos (0UL) /*!< RX_ERR_STAT0 (Bit 0) */ + #define R_ETHSW_DLR_RX_ERR_STAT0_RX_ERR_STAT0_Msk (0xffffffffUL) /*!< RX_ERR_STAT0 (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== DLR_RX_LF_STAT0 ==================================================== */ + #define R_ETHSW_DLR_RX_LF_STAT0_RX_LF_STAT0_Pos (0UL) /*!< RX_LF_STAT0 (Bit 0) */ + #define R_ETHSW_DLR_RX_LF_STAT0_RX_LF_STAT0_Msk (0xffUL) /*!< RX_LF_STAT0 (Bitfield-Mask: 0xff) */ +/* ===================================================== DLR_RX_STAT1 ====================================================== */ + #define R_ETHSW_DLR_RX_STAT1_RX_STAT1_Pos (0UL) /*!< RX_STAT1 (Bit 0) */ + #define R_ETHSW_DLR_RX_STAT1_RX_STAT1_Msk (0xffffffffUL) /*!< RX_STAT1 (Bitfield-Mask: 0xffffffff) */ +/* =================================================== DLR_RX_ERR_STAT1 ==================================================== */ + #define R_ETHSW_DLR_RX_ERR_STAT1_RX_ERR_STAT1_Pos (0UL) /*!< RX_ERR_STAT1 (Bit 0) */ + #define R_ETHSW_DLR_RX_ERR_STAT1_RX_ERR_STAT1_Msk (0xffffffffUL) /*!< RX_ERR_STAT1 (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== DLR_RX_LF_STAT1 ==================================================== */ + #define R_ETHSW_DLR_RX_LF_STAT1_RX_LF_STAT1_Pos (0UL) /*!< RX_LF_STAT1 (Bit 0) */ + #define R_ETHSW_DLR_RX_LF_STAT1_RX_LF_STAT1_Msk (0xffUL) /*!< RX_LF_STAT1 (Bitfield-Mask: 0xff) */ +/* ====================================================== PRP_CONFIG ======================================================= */ + #define R_ETHSW_PRP_CONFIG_PRP_ENA_Pos (0UL) /*!< PRP_ENA (Bit 0) */ + #define R_ETHSW_PRP_CONFIG_PRP_ENA_Msk (0x1UL) /*!< PRP_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRP_CONFIG_RX_DUP_ACCEPT_Pos (1UL) /*!< RX_DUP_ACCEPT (Bit 1) */ + #define R_ETHSW_PRP_CONFIG_RX_DUP_ACCEPT_Msk (0x2UL) /*!< RX_DUP_ACCEPT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRP_CONFIG_RX_REMOVE_RCT_Pos (2UL) /*!< RX_REMOVE_RCT (Bit 2) */ + #define R_ETHSW_PRP_CONFIG_RX_REMOVE_RCT_Msk (0x4UL) /*!< RX_REMOVE_RCT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRP_CONFIG_TX_RCT_MODE_Pos (3UL) /*!< TX_RCT_MODE (Bit 3) */ + #define R_ETHSW_PRP_CONFIG_TX_RCT_MODE_Msk (0x18UL) /*!< TX_RCT_MODE (Bitfield-Mask: 0x03) */ + #define R_ETHSW_PRP_CONFIG_TX_RCT_BROADCAST_Pos (5UL) /*!< TX_RCT_BROADCAST (Bit 5) */ + #define R_ETHSW_PRP_CONFIG_TX_RCT_BROADCAST_Msk (0x20UL) /*!< TX_RCT_BROADCAST (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRP_CONFIG_TX_RCT_MULTICAST_Pos (6UL) /*!< TX_RCT_MULTICAST (Bit 6) */ + #define R_ETHSW_PRP_CONFIG_TX_RCT_MULTICAST_Msk (0x40UL) /*!< TX_RCT_MULTICAST (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRP_CONFIG_TX_RCT_UNKNOWN_Pos (7UL) /*!< TX_RCT_UNKNOWN (Bit 7) */ + #define R_ETHSW_PRP_CONFIG_TX_RCT_UNKNOWN_Msk (0x80UL) /*!< TX_RCT_UNKNOWN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRP_CONFIG_TX_RCT_1588_Pos (8UL) /*!< TX_RCT_1588 (Bit 8) */ + #define R_ETHSW_PRP_CONFIG_TX_RCT_1588_Msk (0x100UL) /*!< TX_RCT_1588 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRP_CONFIG_RCT_LEN_CHK_DIS_Pos (9UL) /*!< RCT_LEN_CHK_DIS (Bit 9) */ + #define R_ETHSW_PRP_CONFIG_RCT_LEN_CHK_DIS_Msk (0x200UL) /*!< RCT_LEN_CHK_DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRP_CONFIG_PRP_AGE_ENA_Pos (16UL) /*!< PRP_AGE_ENA (Bit 16) */ + #define R_ETHSW_PRP_CONFIG_PRP_AGE_ENA_Msk (0x10000UL) /*!< PRP_AGE_ENA (Bitfield-Mask: 0x01) */ +/* ======================================================= PRP_GROUP ======================================================= */ + #define R_ETHSW_PRP_GROUP_PRP_GROUP_Pos (0UL) /*!< PRP_GROUP (Bit 0) */ + #define R_ETHSW_PRP_GROUP_PRP_GROUP_Msk (0x7UL) /*!< PRP_GROUP (Bitfield-Mask: 0x07) */ + #define R_ETHSW_PRP_GROUP_LANB_MASK_Pos (16UL) /*!< LANB_MASK (Bit 16) */ + #define R_ETHSW_PRP_GROUP_LANB_MASK_Msk (0x70000UL) /*!< LANB_MASK (Bitfield-Mask: 0x07) */ +/* ====================================================== PRP_SUFFIX ======================================================= */ + #define R_ETHSW_PRP_SUFFIX_PRP_SUFFIX_Pos (0UL) /*!< PRP_SUFFIX (Bit 0) */ + #define R_ETHSW_PRP_SUFFIX_PRP_SUFFIX_Msk (0xffffUL) /*!< PRP_SUFFIX (Bitfield-Mask: 0xffff) */ +/* ======================================================= PRP_LANID ======================================================= */ + #define R_ETHSW_PRP_LANID_LANAID_Pos (0UL) /*!< LANAID (Bit 0) */ + #define R_ETHSW_PRP_LANID_LANAID_Msk (0xfUL) /*!< LANAID (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_PRP_LANID_LANBID_Pos (4UL) /*!< LANBID (Bit 4) */ + #define R_ETHSW_PRP_LANID_LANBID_Msk (0xf0UL) /*!< LANBID (Bitfield-Mask: 0x0f) */ +/* ========================================================= DUP_W ========================================================= */ + #define R_ETHSW_DUP_W_DUP_W_Pos (0UL) /*!< DUP_W (Bit 0) */ + #define R_ETHSW_DUP_W_DUP_W_Msk (0xffUL) /*!< DUP_W (Bitfield-Mask: 0xff) */ +/* ====================================================== PRP_AGETIME ====================================================== */ + #define R_ETHSW_PRP_AGETIME_PRP_AGETIME_Pos (0UL) /*!< PRP_AGETIME (Bit 0) */ + #define R_ETHSW_PRP_AGETIME_PRP_AGETIME_Msk (0xffffffUL) /*!< PRP_AGETIME (Bitfield-Mask: 0xffffff) */ +/* ==================================================== PRP_IRQ_CONTROL ==================================================== */ + #define R_ETHSW_PRP_IRQ_CONTROL_MEMTOOLATE_Pos (0UL) /*!< MEMTOOLATE (Bit 0) */ + #define R_ETHSW_PRP_IRQ_CONTROL_MEMTOOLATE_Msk (0x1UL) /*!< MEMTOOLATE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRP_IRQ_CONTROL_WRONGLAN_Pos (1UL) /*!< WRONGLAN (Bit 1) */ + #define R_ETHSW_PRP_IRQ_CONTROL_WRONGLAN_Msk (0x2UL) /*!< WRONGLAN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRP_IRQ_CONTROL_OUTOFSEQ_Pos (2UL) /*!< OUTOFSEQ (Bit 2) */ + #define R_ETHSW_PRP_IRQ_CONTROL_OUTOFSEQ_Msk (0x4UL) /*!< OUTOFSEQ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRP_IRQ_CONTROL_SEQMISSING_Pos (3UL) /*!< SEQMISSING (Bit 3) */ + #define R_ETHSW_PRP_IRQ_CONTROL_SEQMISSING_Msk (0x8UL) /*!< SEQMISSING (Bitfield-Mask: 0x01) */ +/* =================================================== PRP_IRQ_STAT_ACK ==================================================== */ + #define R_ETHSW_PRP_IRQ_STAT_ACK_MEMTOOLATE_Pos (0UL) /*!< MEMTOOLATE (Bit 0) */ + #define R_ETHSW_PRP_IRQ_STAT_ACK_MEMTOOLATE_Msk (0x1UL) /*!< MEMTOOLATE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRP_IRQ_STAT_ACK_WRONGLAN_Pos (1UL) /*!< WRONGLAN (Bit 1) */ + #define R_ETHSW_PRP_IRQ_STAT_ACK_WRONGLAN_Msk (0x2UL) /*!< WRONGLAN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRP_IRQ_STAT_ACK_OUTOFSEQ_Pos (2UL) /*!< OUTOFSEQ (Bit 2) */ + #define R_ETHSW_PRP_IRQ_STAT_ACK_OUTOFSEQ_Msk (0x4UL) /*!< OUTOFSEQ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PRP_IRQ_STAT_ACK_SEQMISSING_Pos (3UL) /*!< SEQMISSING (Bit 3) */ + #define R_ETHSW_PRP_IRQ_STAT_ACK_SEQMISSING_Msk (0x8UL) /*!< SEQMISSING (Bitfield-Mask: 0x01) */ +/* ===================================================== RM_ADDR_CTRL ====================================================== */ + #define R_ETHSW_RM_ADDR_CTRL_address_Pos (0UL) /*!< address (Bit 0) */ + #define R_ETHSW_RM_ADDR_CTRL_address_Msk (0xfffUL) /*!< address (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_RM_ADDR_CTRL_CLEAR_DYNAMIC_Pos (22UL) /*!< CLEAR_DYNAMIC (Bit 22) */ + #define R_ETHSW_RM_ADDR_CTRL_CLEAR_DYNAMIC_Msk (0x400000UL) /*!< CLEAR_DYNAMIC (Bitfield-Mask: 0x01) */ + #define R_ETHSW_RM_ADDR_CTRL_CLEAR_MEMORY_Pos (23UL) /*!< CLEAR_MEMORY (Bit 23) */ + #define R_ETHSW_RM_ADDR_CTRL_CLEAR_MEMORY_Msk (0x800000UL) /*!< CLEAR_MEMORY (Bitfield-Mask: 0x01) */ + #define R_ETHSW_RM_ADDR_CTRL_WRITE_Pos (25UL) /*!< WRITE (Bit 25) */ + #define R_ETHSW_RM_ADDR_CTRL_WRITE_Msk (0x2000000UL) /*!< WRITE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_RM_ADDR_CTRL_READ_Pos (26UL) /*!< READ (Bit 26) */ + #define R_ETHSW_RM_ADDR_CTRL_READ_Msk (0x4000000UL) /*!< READ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_RM_ADDR_CTRL_CLEAR_Pos (29UL) /*!< CLEAR (Bit 29) */ + #define R_ETHSW_RM_ADDR_CTRL_CLEAR_Msk (0x20000000UL) /*!< CLEAR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_RM_ADDR_CTRL_BUSY_Pos (31UL) /*!< BUSY (Bit 31) */ + #define R_ETHSW_RM_ADDR_CTRL_BUSY_Msk (0x80000000UL) /*!< BUSY (Bitfield-Mask: 0x01) */ +/* ======================================================== RM_DATA ======================================================== */ + #define R_ETHSW_RM_DATA_RM_DATA_Pos (0UL) /*!< RM_DATA (Bit 0) */ + #define R_ETHSW_RM_DATA_RM_DATA_Msk (0xffffffffUL) /*!< RM_DATA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== RM_DATA_HI ======================================================= */ + #define R_ETHSW_RM_DATA_HI_RM_DATA_HI_Pos (0UL) /*!< RM_DATA_HI (Bit 0) */ + #define R_ETHSW_RM_DATA_HI_RM_DATA_HI_Msk (0xffffffffUL) /*!< RM_DATA_HI (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= RM_STATUS ======================================================= */ + #define R_ETHSW_RM_STATUS_ageaddress_Pos (0UL) /*!< ageaddress (Bit 0) */ + #define R_ETHSW_RM_STATUS_ageaddress_Msk (0xfffUL) /*!< ageaddress (Bitfield-Mask: 0xfff) */ +/* ===================================================== TxSeqTooLate ====================================================== */ + #define R_ETHSW_TxSeqTooLate_TxSeqTooLate_Pos (0UL) /*!< TxSeqTooLate (Bit 0) */ + #define R_ETHSW_TxSeqTooLate_TxSeqTooLate_Msk (0xfUL) /*!< TxSeqTooLate (Bitfield-Mask: 0x0f) */ +/* ==================================================== CntErrWrongLanA ==================================================== */ + #define R_ETHSW_CntErrWrongLanA_CntErrWrongLanA_Pos (0UL) /*!< CntErrWrongLanA (Bit 0) */ + #define R_ETHSW_CntErrWrongLanA_CntErrWrongLanA_Msk (0xffffffffUL) /*!< CntErrWrongLanA (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== CntErrWrongLanB ==================================================== */ + #define R_ETHSW_CntErrWrongLanB_CntErrWrongLanB_Pos (0UL) /*!< CntErrWrongLanB (Bit 0) */ + #define R_ETHSW_CntErrWrongLanB_CntErrWrongLanB_Msk (0xffffffffUL) /*!< CntErrWrongLanB (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== CntDupLanA ======================================================= */ + #define R_ETHSW_CntDupLanA_CntDupLanA_Pos (0UL) /*!< CntDupLanA (Bit 0) */ + #define R_ETHSW_CntDupLanA_CntDupLanA_Msk (0xffffffffUL) /*!< CntDupLanA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== CntDupLanB ======================================================= */ + #define R_ETHSW_CntDupLanB_CntDupLanB_Pos (0UL) /*!< CntDupLanB (Bit 0) */ + #define R_ETHSW_CntDupLanB_CntDupLanB_Msk (0xffffffffUL) /*!< CntDupLanB (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== CntOutOfSeqLowA ==================================================== */ + #define R_ETHSW_CntOutOfSeqLowA_CntOutOfSeqLowA_Pos (0UL) /*!< CntOutOfSeqLowA (Bit 0) */ + #define R_ETHSW_CntOutOfSeqLowA_CntOutOfSeqLowA_Msk (0xffffffffUL) /*!< CntOutOfSeqLowA (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== CntOutOfSeqLowB ==================================================== */ + #define R_ETHSW_CntOutOfSeqLowB_CntOutOfSeqLowB_Pos (0UL) /*!< CntOutOfSeqLowB (Bit 0) */ + #define R_ETHSW_CntOutOfSeqLowB_CntOutOfSeqLowB_Msk (0xffffffffUL) /*!< CntOutOfSeqLowB (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== CntOutOfSeqA ====================================================== */ + #define R_ETHSW_CntOutOfSeqA_CntOutOfSeqA_Pos (0UL) /*!< CntOutOfSeqA (Bit 0) */ + #define R_ETHSW_CntOutOfSeqA_CntOutOfSeqA_Msk (0xffffffffUL) /*!< CntOutOfSeqA (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== CntOutOfSeqB ====================================================== */ + #define R_ETHSW_CntOutOfSeqB_CntOutOfSeqB_Pos (0UL) /*!< CntOutOfSeqB (Bit 0) */ + #define R_ETHSW_CntOutOfSeqB_CntOutOfSeqB_Msk (0xffffffffUL) /*!< CntOutOfSeqB (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== CntAcceptA ======================================================= */ + #define R_ETHSW_CntAcceptA_CntAcceptA_Pos (0UL) /*!< CntAcceptA (Bit 0) */ + #define R_ETHSW_CntAcceptA_CntAcceptA_Msk (0xffffffffUL) /*!< CntAcceptA (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== CntAcceptB ======================================================= */ + #define R_ETHSW_CntAcceptB_CntAcceptB_Pos (0UL) /*!< CntAcceptB (Bit 0) */ + #define R_ETHSW_CntAcceptB_CntAcceptB_Msk (0xffffffffUL) /*!< CntAcceptB (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== CntMissing ======================================================= */ + #define R_ETHSW_CntMissing_CntMissing_Pos (0UL) /*!< CntMissing (Bit 0) */ + #define R_ETHSW_CntMissing_CntMissing_Msk (0xffffffffUL) /*!< CntMissing (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== HUB_CONFIG ======================================================= */ + #define R_ETHSW_HUB_CONFIG_HUB_ENA_Pos (0UL) /*!< HUB_ENA (Bit 0) */ + #define R_ETHSW_HUB_CONFIG_HUB_ENA_Msk (0x1UL) /*!< HUB_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_HUB_CONFIG_RETRANSMIT_ENA_Pos (1UL) /*!< RETRANSMIT_ENA (Bit 1) */ + #define R_ETHSW_HUB_CONFIG_RETRANSMIT_ENA_Msk (0x2UL) /*!< RETRANSMIT_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_HUB_CONFIG_TRIGGER_MODE_Pos (2UL) /*!< TRIGGER_MODE (Bit 2) */ + #define R_ETHSW_HUB_CONFIG_TRIGGER_MODE_Msk (0x4UL) /*!< TRIGGER_MODE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_HUB_CONFIG_HUB_ISOLATE_Pos (3UL) /*!< HUB_ISOLATE (Bit 3) */ + #define R_ETHSW_HUB_CONFIG_HUB_ISOLATE_Msk (0x8UL) /*!< HUB_ISOLATE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_HUB_CONFIG_TIMER_SEL_Pos (4UL) /*!< TIMER_SEL (Bit 4) */ + #define R_ETHSW_HUB_CONFIG_TIMER_SEL_Msk (0x10UL) /*!< TIMER_SEL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_HUB_CONFIG_IPG_WAIT_Pos (6UL) /*!< IPG_WAIT (Bit 6) */ + #define R_ETHSW_HUB_CONFIG_IPG_WAIT_Msk (0x1c0UL) /*!< IPG_WAIT (Bitfield-Mask: 0x07) */ + #define R_ETHSW_HUB_CONFIG_CRS_GEN_Pos (9UL) /*!< CRS_GEN (Bit 9) */ + #define R_ETHSW_HUB_CONFIG_CRS_GEN_Msk (0x200UL) /*!< CRS_GEN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_HUB_CONFIG_PRMB_GEN_DIS_Pos (10UL) /*!< PRMB_GEN_DIS (Bit 10) */ + #define R_ETHSW_HUB_CONFIG_PRMB_GEN_DIS_Msk (0x400UL) /*!< PRMB_GEN_DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_HUB_CONFIG_JAM_WAIT_IDLE_Pos (11UL) /*!< JAM_WAIT_IDLE (Bit 11) */ + #define R_ETHSW_HUB_CONFIG_JAM_WAIT_IDLE_Msk (0x800UL) /*!< JAM_WAIT_IDLE (Bitfield-Mask: 0x01) */ +/* ======================================================= HUB_GROUP ======================================================= */ + #define R_ETHSW_HUB_GROUP_HUB_GROUP_Pos (0UL) /*!< HUB_GROUP (Bit 0) */ + #define R_ETHSW_HUB_GROUP_HUB_GROUP_Msk (0x7UL) /*!< HUB_GROUP (Bitfield-Mask: 0x07) */ +/* ====================================================== HUB_DEFPORT ====================================================== */ + #define R_ETHSW_HUB_DEFPORT_HUB_DEFPORT_Pos (0UL) /*!< HUB_DEFPORT (Bit 0) */ + #define R_ETHSW_HUB_DEFPORT_HUB_DEFPORT_Msk (0x7UL) /*!< HUB_DEFPORT (Bitfield-Mask: 0x07) */ +/* ================================================= HUB_TRIGGER_IMMEDIATE ================================================= */ + #define R_ETHSW_HUB_TRIGGER_IMMEDIATE_HUB_TRIGGER_IMMEDIATE_Pos (0UL) /*!< HUB_TRIGGER_IMMEDIATE (Bit 0) */ + #define R_ETHSW_HUB_TRIGGER_IMMEDIATE_HUB_TRIGGER_IMMEDIATE_Msk (0x7UL) /*!< HUB_TRIGGER_IMMEDIATE (Bitfield-Mask: 0x07) */ +/* ==================================================== HUB_TRIGGER_AT ===================================================== */ + #define R_ETHSW_HUB_TRIGGER_AT_HUB_TRIGGER_AT_Pos (0UL) /*!< HUB_TRIGGER_AT (Bit 0) */ + #define R_ETHSW_HUB_TRIGGER_AT_HUB_TRIGGER_AT_Msk (0x7UL) /*!< HUB_TRIGGER_AT (Bitfield-Mask: 0x07) */ +/* ======================================================= HUB_TTIME ======================================================= */ + #define R_ETHSW_HUB_TTIME_HUB_TTIME_Pos (0UL) /*!< HUB_TTIME (Bit 0) */ + #define R_ETHSW_HUB_TTIME_HUB_TTIME_Msk (0xffffffffUL) /*!< HUB_TTIME (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== HUB_IRQ_CONTROL ==================================================== */ + #define R_ETHSW_HUB_IRQ_CONTROL_RX_TRIGGER_Pos (0UL) /*!< RX_TRIGGER (Bit 0) */ + #define R_ETHSW_HUB_IRQ_CONTROL_RX_TRIGGER_Msk (0x7UL) /*!< RX_TRIGGER (Bitfield-Mask: 0x07) */ + #define R_ETHSW_HUB_IRQ_CONTROL_CHANGE_DET_Pos (3UL) /*!< CHANGE_DET (Bit 3) */ + #define R_ETHSW_HUB_IRQ_CONTROL_CHANGE_DET_Msk (0x8UL) /*!< CHANGE_DET (Bitfield-Mask: 0x01) */ + #define R_ETHSW_HUB_IRQ_CONTROL_TRIGGER_IMMEDIATE_Pos (4UL) /*!< TRIGGER_IMMEDIATE (Bit 4) */ + #define R_ETHSW_HUB_IRQ_CONTROL_TRIGGER_IMMEDIATE_Msk (0x10UL) /*!< TRIGGER_IMMEDIATE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_HUB_IRQ_CONTROL_TRIGGER_TIMER_Pos (5UL) /*!< TRIGGER_TIMER (Bit 5) */ + #define R_ETHSW_HUB_IRQ_CONTROL_TRIGGER_TIMER_Msk (0x20UL) /*!< TRIGGER_TIMER (Bitfield-Mask: 0x01) */ +/* =================================================== HUB_IRQ_STAT_ACK ==================================================== */ + #define R_ETHSW_HUB_IRQ_STAT_ACK_RX_TRIGGER_Pos (0UL) /*!< RX_TRIGGER (Bit 0) */ + #define R_ETHSW_HUB_IRQ_STAT_ACK_RX_TRIGGER_Msk (0x7UL) /*!< RX_TRIGGER (Bitfield-Mask: 0x07) */ + #define R_ETHSW_HUB_IRQ_STAT_ACK_CHANGE_DET_Pos (3UL) /*!< CHANGE_DET (Bit 3) */ + #define R_ETHSW_HUB_IRQ_STAT_ACK_CHANGE_DET_Msk (0x8UL) /*!< CHANGE_DET (Bitfield-Mask: 0x01) */ + #define R_ETHSW_HUB_IRQ_STAT_ACK_TRIGGER_IMMEDIATE_Pos (4UL) /*!< TRIGGER_IMMEDIATE (Bit 4) */ + #define R_ETHSW_HUB_IRQ_STAT_ACK_TRIGGER_IMMEDIATE_Msk (0x10UL) /*!< TRIGGER_IMMEDIATE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_HUB_IRQ_STAT_ACK_TRIGGER_TIMER_Pos (5UL) /*!< TRIGGER_TIMER (Bit 5) */ + #define R_ETHSW_HUB_IRQ_STAT_ACK_TRIGGER_TIMER_Msk (0x20UL) /*!< TRIGGER_TIMER (Bitfield-Mask: 0x01) */ +/* ====================================================== HUB_STATUS ======================================================= */ + #define R_ETHSW_HUB_STATUS_PORTS_ACTIVE_Pos (0UL) /*!< PORTS_ACTIVE (Bit 0) */ + #define R_ETHSW_HUB_STATUS_PORTS_ACTIVE_Msk (0x7UL) /*!< PORTS_ACTIVE (Bitfield-Mask: 0x07) */ + #define R_ETHSW_HUB_STATUS_TX_ACTIVE_Pos (9UL) /*!< TX_ACTIVE (Bit 9) */ + #define R_ETHSW_HUB_STATUS_TX_ACTIVE_Msk (0x200UL) /*!< TX_ACTIVE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_HUB_STATUS_TX_BUSY_Pos (10UL) /*!< TX_BUSY (Bit 10) */ + #define R_ETHSW_HUB_STATUS_TX_BUSY_Msk (0x400UL) /*!< TX_BUSY (Bitfield-Mask: 0x01) */ + #define R_ETHSW_HUB_STATUS_Speed_OK_Pos (11UL) /*!< Speed_OK (Bit 11) */ + #define R_ETHSW_HUB_STATUS_Speed_OK_Msk (0x800UL) /*!< Speed_OK (Bitfield-Mask: 0x01) */ + #define R_ETHSW_HUB_STATUS_TX_Change_Pending_Pos (12UL) /*!< TX_Change_Pending (Bit 12) */ + #define R_ETHSW_HUB_STATUS_TX_Change_Pending_Msk (0x1000UL) /*!< TX_Change_Pending (Bitfield-Mask: 0x01) */ +/* =================================================== HUB_OPORT_STATUS ==================================================== */ + #define R_ETHSW_HUB_OPORT_STATUS_HUB_OPORT_STATUS_Pos (0UL) /*!< HUB_OPORT_STATUS (Bit 0) */ + #define R_ETHSW_HUB_OPORT_STATUS_HUB_OPORT_STATUS_Msk (0x7UL) /*!< HUB_OPORT_STATUS (Bitfield-Mask: 0x07) */ +/* ====================================================== TDMA_CONFIG ====================================================== */ + #define R_ETHSW_TDMA_CONFIG_TDMA_ENA_Pos (0UL) /*!< TDMA_ENA (Bit 0) */ + #define R_ETHSW_TDMA_CONFIG_TDMA_ENA_Msk (0x1UL) /*!< TDMA_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TDMA_CONFIG_WAIT_START_Pos (1UL) /*!< WAIT_START (Bit 1) */ + #define R_ETHSW_TDMA_CONFIG_WAIT_START_Msk (0x2UL) /*!< WAIT_START (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TDMA_CONFIG_TIMER_SEL_Pos (2UL) /*!< TIMER_SEL (Bit 2) */ + #define R_ETHSW_TDMA_CONFIG_TIMER_SEL_Msk (0x4UL) /*!< TIMER_SEL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TDMA_CONFIG_RED_PERIOD_Pos (4UL) /*!< RED_PERIOD (Bit 4) */ + #define R_ETHSW_TDMA_CONFIG_RED_PERIOD_Msk (0x10UL) /*!< RED_PERIOD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TDMA_CONFIG_RED_OVRD_ENA_Pos (5UL) /*!< RED_OVRD_ENA (Bit 5) */ + #define R_ETHSW_TDMA_CONFIG_RED_OVRD_ENA_Msk (0x20UL) /*!< RED_OVRD_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TDMA_CONFIG_RED_OVRD_Pos (6UL) /*!< RED_OVRD (Bit 6) */ + #define R_ETHSW_TDMA_CONFIG_RED_OVRD_Msk (0x40UL) /*!< RED_OVRD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TDMA_CONFIG_IN_CT_WREN_Pos (7UL) /*!< IN_CT_WREN (Bit 7) */ + #define R_ETHSW_TDMA_CONFIG_IN_CT_WREN_Msk (0x80UL) /*!< IN_CT_WREN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TDMA_CONFIG_OUT_CT_WREN_Pos (8UL) /*!< OUT_CT_WREN (Bit 8) */ + #define R_ETHSW_TDMA_CONFIG_OUT_CT_WREN_Msk (0x100UL) /*!< OUT_CT_WREN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TDMA_CONFIG_HOLD_REQ_CLR_Pos (9UL) /*!< HOLD_REQ_CLR (Bit 9) */ + #define R_ETHSW_TDMA_CONFIG_HOLD_REQ_CLR_Msk (0x200UL) /*!< HOLD_REQ_CLR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TDMA_CONFIG_TIMER_SEL_ACTIVE_Pos (12UL) /*!< TIMER_SEL_ACTIVE (Bit 12) */ + #define R_ETHSW_TDMA_CONFIG_TIMER_SEL_ACTIVE_Msk (0x1000UL) /*!< TIMER_SEL_ACTIVE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TDMA_CONFIG_IN_CT_ENA_Pos (16UL) /*!< IN_CT_ENA (Bit 16) */ + #define R_ETHSW_TDMA_CONFIG_IN_CT_ENA_Msk (0xf0000UL) /*!< IN_CT_ENA (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_TDMA_CONFIG_OUT_CT_ENA_Pos (24UL) /*!< OUT_CT_ENA (Bit 24) */ + #define R_ETHSW_TDMA_CONFIG_OUT_CT_ENA_Msk (0xf000000UL) /*!< OUT_CT_ENA (Bitfield-Mask: 0x0f) */ +/* ===================================================== TDMA_ENA_CTRL ===================================================== */ + #define R_ETHSW_TDMA_ENA_CTRL_PORT_ENA_Pos (0UL) /*!< PORT_ENA (Bit 0) */ + #define R_ETHSW_TDMA_ENA_CTRL_PORT_ENA_Msk (0xfUL) /*!< PORT_ENA (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_TDMA_ENA_CTRL_QGATE_DIS_Pos (16UL) /*!< QGATE_DIS (Bit 16) */ + #define R_ETHSW_TDMA_ENA_CTRL_QGATE_DIS_Msk (0xff0000UL) /*!< QGATE_DIS (Bitfield-Mask: 0xff) */ + #define R_ETHSW_TDMA_ENA_CTRL_QTRIG_DIS_Pos (24UL) /*!< QTRIG_DIS (Bit 24) */ + #define R_ETHSW_TDMA_ENA_CTRL_QTRIG_DIS_Msk (0xff000000UL) /*!< QTRIG_DIS (Bitfield-Mask: 0xff) */ +/* ====================================================== TDMA_START ======================================================= */ + #define R_ETHSW_TDMA_START_TDMA_START_Pos (0UL) /*!< TDMA_START (Bit 0) */ + #define R_ETHSW_TDMA_START_TDMA_START_Msk (0xffffffffUL) /*!< TDMA_START (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== TDMA_MODULO ====================================================== */ + #define R_ETHSW_TDMA_MODULO_TDMA_MODULO_Pos (0UL) /*!< TDMA_MODULO (Bit 0) */ + #define R_ETHSW_TDMA_MODULO_TDMA_MODULO_Msk (0xffffffffUL) /*!< TDMA_MODULO (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== TDMA_CYCLE ======================================================= */ + #define R_ETHSW_TDMA_CYCLE_TDMA_CYCLE_Pos (0UL) /*!< TDMA_CYCLE (Bit 0) */ + #define R_ETHSW_TDMA_CYCLE_TDMA_CYCLE_Msk (0xffffffffUL) /*!< TDMA_CYCLE (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== TCV_SEQ_ADDR ====================================================== */ + #define R_ETHSW_TCV_SEQ_ADDR_TCV_S_ADDR_Pos (0UL) /*!< TCV_S_ADDR (Bit 0) */ + #define R_ETHSW_TCV_SEQ_ADDR_TCV_S_ADDR_Msk (0xfffUL) /*!< TCV_S_ADDR (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_TCV_SEQ_ADDR_ADDR_AINC_Pos (31UL) /*!< ADDR_AINC (Bit 31) */ + #define R_ETHSW_TCV_SEQ_ADDR_ADDR_AINC_Msk (0x80000000UL) /*!< ADDR_AINC (Bitfield-Mask: 0x01) */ +/* ===================================================== TCV_SEQ_CTRL ====================================================== */ + #define R_ETHSW_TCV_SEQ_CTRL_START_Pos (0UL) /*!< START (Bit 0) */ + #define R_ETHSW_TCV_SEQ_CTRL_START_Msk (0x1UL) /*!< START (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TCV_SEQ_CTRL_INT_Pos (1UL) /*!< INT (Bit 1) */ + #define R_ETHSW_TCV_SEQ_CTRL_INT_Msk (0x2UL) /*!< INT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TCV_SEQ_CTRL_TCV_D_IDX_Pos (2UL) /*!< TCV_D_IDX (Bit 2) */ + #define R_ETHSW_TCV_SEQ_CTRL_TCV_D_IDX_Msk (0x7fcUL) /*!< TCV_D_IDX (Bitfield-Mask: 0x1ff) */ + #define R_ETHSW_TCV_SEQ_CTRL_GPIO_Pos (22UL) /*!< GPIO (Bit 22) */ + #define R_ETHSW_TCV_SEQ_CTRL_GPIO_Msk (0x3fc00000UL) /*!< GPIO (Bitfield-Mask: 0xff) */ + #define R_ETHSW_TCV_SEQ_CTRL_READ_MODE_Pos (31UL) /*!< READ_MODE (Bit 31) */ + #define R_ETHSW_TCV_SEQ_CTRL_READ_MODE_Msk (0x80000000UL) /*!< READ_MODE (Bitfield-Mask: 0x01) */ +/* ===================================================== TCV_SEQ_LAST ====================================================== */ + #define R_ETHSW_TCV_SEQ_LAST_LAST_Pos (0UL) /*!< LAST (Bit 0) */ + #define R_ETHSW_TCV_SEQ_LAST_LAST_Msk (0xfffUL) /*!< LAST (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_TCV_SEQ_LAST_ACTIVE_Pos (16UL) /*!< ACTIVE (Bit 16) */ + #define R_ETHSW_TCV_SEQ_LAST_ACTIVE_Msk (0xfff0000UL) /*!< ACTIVE (Bitfield-Mask: 0xfff) */ +/* ====================================================== TCV_D_ADDR ======================================================= */ + #define R_ETHSW_TCV_D_ADDR_ADDR_Pos (0UL) /*!< ADDR (Bit 0) */ + #define R_ETHSW_TCV_D_ADDR_ADDR_Msk (0x1ffUL) /*!< ADDR (Bitfield-Mask: 0x1ff) */ + #define R_ETHSW_TCV_D_ADDR_AINC_WR_ENA_Pos (31UL) /*!< AINC_WR_ENA (Bit 31) */ + #define R_ETHSW_TCV_D_ADDR_AINC_WR_ENA_Msk (0x80000000UL) /*!< AINC_WR_ENA (Bitfield-Mask: 0x01) */ +/* ===================================================== TCV_D_OFFSET ====================================================== */ + #define R_ETHSW_TCV_D_OFFSET_TCV_D_OFFSET_Pos (0UL) /*!< TCV_D_OFFSET (Bit 0) */ + #define R_ETHSW_TCV_D_OFFSET_TCV_D_OFFSET_Msk (0xffffffffUL) /*!< TCV_D_OFFSET (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== TCV_D_CTRL ======================================================= */ + #define R_ETHSW_TCV_D_CTRL_INC_CTR0_Pos (0UL) /*!< INC_CTR0 (Bit 0) */ + #define R_ETHSW_TCV_D_CTRL_INC_CTR0_Msk (0x1UL) /*!< INC_CTR0 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TCV_D_CTRL_INC_CTR1_Pos (1UL) /*!< INC_CTR1 (Bit 1) */ + #define R_ETHSW_TCV_D_CTRL_INC_CTR1_Msk (0x2UL) /*!< INC_CTR1 (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TCV_D_CTRL_RED_PERIOD_Pos (2UL) /*!< RED_PERIOD (Bit 2) */ + #define R_ETHSW_TCV_D_CTRL_RED_PERIOD_Msk (0x4UL) /*!< RED_PERIOD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TCV_D_CTRL_OUT_CT_ENA_Pos (3UL) /*!< OUT_CT_ENA (Bit 3) */ + #define R_ETHSW_TCV_D_CTRL_OUT_CT_ENA_Msk (0x8UL) /*!< OUT_CT_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TCV_D_CTRL_IN_CT_ENA_Pos (4UL) /*!< IN_CT_ENA (Bit 4) */ + #define R_ETHSW_TCV_D_CTRL_IN_CT_ENA_Msk (0x10UL) /*!< IN_CT_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TCV_D_CTRL_TRIGGER_MODE_Pos (5UL) /*!< TRIGGER_MODE (Bit 5) */ + #define R_ETHSW_TCV_D_CTRL_TRIGGER_MODE_Msk (0x20UL) /*!< TRIGGER_MODE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TCV_D_CTRL_GATE_MODE_Pos (6UL) /*!< GATE_MODE (Bit 6) */ + #define R_ETHSW_TCV_D_CTRL_GATE_MODE_Msk (0x40UL) /*!< GATE_MODE (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TCV_D_CTRL_HOLD_REQ_Pos (7UL) /*!< HOLD_REQ (Bit 7) */ + #define R_ETHSW_TCV_D_CTRL_HOLD_REQ_Msk (0x80UL) /*!< HOLD_REQ (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TCV_D_CTRL_QGATE_Pos (8UL) /*!< QGATE (Bit 8) */ + #define R_ETHSW_TCV_D_CTRL_QGATE_Msk (0xff00UL) /*!< QGATE (Bitfield-Mask: 0xff) */ + #define R_ETHSW_TCV_D_CTRL_PMASK_Pos (16UL) /*!< PMASK (Bit 16) */ + #define R_ETHSW_TCV_D_CTRL_PMASK_Msk (0xf0000UL) /*!< PMASK (Bitfield-Mask: 0x0f) */ +/* ======================================================= TDMA_CTR0 ======================================================= */ + #define R_ETHSW_TDMA_CTR0_TDMA_CTR0_Pos (0UL) /*!< TDMA_CTR0 (Bit 0) */ + #define R_ETHSW_TDMA_CTR0_TDMA_CTR0_Msk (0xffffffffUL) /*!< TDMA_CTR0 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= TDMA_CTR1 ======================================================= */ + #define R_ETHSW_TDMA_CTR1_VALUE_Pos (0UL) /*!< VALUE (Bit 0) */ + #define R_ETHSW_TDMA_CTR1_VALUE_Msk (0xffUL) /*!< VALUE (Bitfield-Mask: 0xff) */ + #define R_ETHSW_TDMA_CTR1_WRITE_ENA_Pos (8UL) /*!< WRITE_ENA (Bit 8) */ + #define R_ETHSW_TDMA_CTR1_WRITE_ENA_Msk (0x100UL) /*!< WRITE_ENA (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TDMA_CTR1_MAX_Pos (16UL) /*!< MAX (Bit 16) */ + #define R_ETHSW_TDMA_CTR1_MAX_Msk (0xff0000UL) /*!< MAX (Bitfield-Mask: 0xff) */ + #define R_ETHSW_TDMA_CTR1_INT_VALUE_Pos (24UL) /*!< INT_VALUE (Bit 24) */ + #define R_ETHSW_TDMA_CTR1_INT_VALUE_Msk (0xff000000UL) /*!< INT_VALUE (Bitfield-Mask: 0xff) */ +/* ==================================================== TDMA_TCV_START ===================================================== */ + #define R_ETHSW_TDMA_TCV_START_TDMA_TCV_START_Pos (0UL) /*!< TDMA_TCV_START (Bit 0) */ + #define R_ETHSW_TDMA_TCV_START_TDMA_TCV_START_Msk (0xfffUL) /*!< TDMA_TCV_START (Bitfield-Mask: 0xfff) */ +/* ==================================================== TIME_LOAD_NEXT ===================================================== */ + #define R_ETHSW_TIME_LOAD_NEXT_TIME_LOAD_NEXT_Pos (0UL) /*!< TIME_LOAD_NEXT (Bit 0) */ + #define R_ETHSW_TIME_LOAD_NEXT_TIME_LOAD_NEXT_Msk (0xffffffffUL) /*!< TIME_LOAD_NEXT (Bitfield-Mask: 0xffffffff) */ +/* =================================================== TDMA_IRQ_CONTROL ==================================================== */ + #define R_ETHSW_TDMA_IRQ_CONTROL_TCV_INT_EN_Pos (0UL) /*!< TCV_INT_EN (Bit 0) */ + #define R_ETHSW_TDMA_IRQ_CONTROL_TCV_INT_EN_Msk (0x1UL) /*!< TCV_INT_EN (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TDMA_IRQ_CONTROL_CTR1_INT_EN_Pos (13UL) /*!< CTR1_INT_EN (Bit 13) */ + #define R_ETHSW_TDMA_IRQ_CONTROL_CTR1_INT_EN_Msk (0x2000UL) /*!< CTR1_INT_EN (Bitfield-Mask: 0x01) */ +/* =================================================== TDMA_IRQ_STAT_ACK =================================================== */ + #define R_ETHSW_TDMA_IRQ_STAT_ACK_TCV_ACK_Pos (0UL) /*!< TCV_ACK (Bit 0) */ + #define R_ETHSW_TDMA_IRQ_STAT_ACK_TCV_ACK_Msk (0x1UL) /*!< TCV_ACK (Bitfield-Mask: 0x01) */ + #define R_ETHSW_TDMA_IRQ_STAT_ACK_CTR1_ACK_Pos (13UL) /*!< CTR1_ACK (Bit 13) */ + #define R_ETHSW_TDMA_IRQ_STAT_ACK_CTR1_ACK_Msk (0x2000UL) /*!< CTR1_ACK (Bitfield-Mask: 0x01) */ +/* ======================================================= TDMA_GPIO ======================================================= */ + #define R_ETHSW_TDMA_GPIO_GPIO_STATUS_Pos (0UL) /*!< GPIO_STATUS (Bit 0) */ + #define R_ETHSW_TDMA_GPIO_GPIO_STATUS_Msk (0xffUL) /*!< GPIO_STATUS (Bitfield-Mask: 0xff) */ + #define R_ETHSW_TDMA_GPIO_GPIO_MODE_Pos (16UL) /*!< GPIO_MODE (Bit 16) */ + #define R_ETHSW_TDMA_GPIO_GPIO_MODE_Msk (0xffff0000UL) /*!< GPIO_MODE (Bitfield-Mask: 0xffff) */ +/* ==================================================== RXMATCH_CONFIG ===================================================== */ + #define R_ETHSW_RXMATCH_CONFIG_PATTERN_EN_Pos (0UL) /*!< PATTERN_EN (Bit 0) */ + #define R_ETHSW_RXMATCH_CONFIG_PATTERN_EN_Msk (0xfffUL) /*!< PATTERN_EN (Bitfield-Mask: 0xfff) */ +/* ===================================================== PATTERN_CTRL ====================================================== */ + #define R_ETHSW_PATTERN_CTRL_MATCH_NOT_Pos (0UL) /*!< MATCH_NOT (Bit 0) */ + #define R_ETHSW_PATTERN_CTRL_MATCH_NOT_Msk (0x1UL) /*!< MATCH_NOT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PATTERN_CTRL_MGMTFWD_Pos (1UL) /*!< MGMTFWD (Bit 1) */ + #define R_ETHSW_PATTERN_CTRL_MGMTFWD_Msk (0x2UL) /*!< MGMTFWD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PATTERN_CTRL_DISCARD_Pos (2UL) /*!< DISCARD (Bit 2) */ + #define R_ETHSW_PATTERN_CTRL_DISCARD_Msk (0x4UL) /*!< DISCARD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PATTERN_CTRL_SET_PRIO_Pos (3UL) /*!< SET_PRIO (Bit 3) */ + #define R_ETHSW_PATTERN_CTRL_SET_PRIO_Msk (0x8UL) /*!< SET_PRIO (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PATTERN_CTRL_MODE_Pos (4UL) /*!< MODE (Bit 4) */ + #define R_ETHSW_PATTERN_CTRL_MODE_Msk (0x30UL) /*!< MODE (Bitfield-Mask: 0x03) */ + #define R_ETHSW_PATTERN_CTRL_TIMER_SEL_OVR_Pos (6UL) /*!< TIMER_SEL_OVR (Bit 6) */ + #define R_ETHSW_PATTERN_CTRL_TIMER_SEL_OVR_Msk (0x40UL) /*!< TIMER_SEL_OVR (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PATTERN_CTRL_FORCE_FORWARD_Pos (7UL) /*!< FORCE_FORWARD (Bit 7) */ + #define R_ETHSW_PATTERN_CTRL_FORCE_FORWARD_Msk (0x80UL) /*!< FORCE_FORWARD (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PATTERN_CTRL_HUBTRIGGER_Pos (8UL) /*!< HUBTRIGGER (Bit 8) */ + #define R_ETHSW_PATTERN_CTRL_HUBTRIGGER_Msk (0x100UL) /*!< HUBTRIGGER (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PATTERN_CTRL_MATCH_RED_Pos (9UL) /*!< MATCH_RED (Bit 9) */ + #define R_ETHSW_PATTERN_CTRL_MATCH_RED_Msk (0x200UL) /*!< MATCH_RED (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PATTERN_CTRL_MATCH_NOT_RED_Pos (10UL) /*!< MATCH_NOT_RED (Bit 10) */ + #define R_ETHSW_PATTERN_CTRL_MATCH_NOT_RED_Msk (0x400UL) /*!< MATCH_NOT_RED (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PATTERN_CTRL_VLAN_SKIP_Pos (11UL) /*!< VLAN_SKIP (Bit 11) */ + #define R_ETHSW_PATTERN_CTRL_VLAN_SKIP_Msk (0x800UL) /*!< VLAN_SKIP (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PATTERN_CTRL_PRIORITY_Pos (12UL) /*!< PRIORITY (Bit 12) */ + #define R_ETHSW_PATTERN_CTRL_PRIORITY_Msk (0x7000UL) /*!< PRIORITY (Bitfield-Mask: 0x07) */ + #define R_ETHSW_PATTERN_CTRL_LEARNING_DIS_Pos (15UL) /*!< LEARNING_DIS (Bit 15) */ + #define R_ETHSW_PATTERN_CTRL_LEARNING_DIS_Msk (0x8000UL) /*!< LEARNING_DIS (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PATTERN_CTRL_PORTMASK_Pos (16UL) /*!< PORTMASK (Bit 16) */ + #define R_ETHSW_PATTERN_CTRL_PORTMASK_Msk (0xf0000UL) /*!< PORTMASK (Bitfield-Mask: 0x0f) */ + #define R_ETHSW_PATTERN_CTRL_IMC_TRIGGER_Pos (22UL) /*!< IMC_TRIGGER (Bit 22) */ + #define R_ETHSW_PATTERN_CTRL_IMC_TRIGGER_Msk (0x400000UL) /*!< IMC_TRIGGER (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PATTERN_CTRL_IMC_TRIGGER_DLY_Pos (23UL) /*!< IMC_TRIGGER_DLY (Bit 23) */ + #define R_ETHSW_PATTERN_CTRL_IMC_TRIGGER_DLY_Msk (0x800000UL) /*!< IMC_TRIGGER_DLY (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PATTERN_CTRL_SWAP_BYTES_Pos (24UL) /*!< SWAP_BYTES (Bit 24) */ + #define R_ETHSW_PATTERN_CTRL_SWAP_BYTES_Msk (0x1000000UL) /*!< SWAP_BYTES (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PATTERN_CTRL_MATCH_LT_Pos (25UL) /*!< MATCH_LT (Bit 25) */ + #define R_ETHSW_PATTERN_CTRL_MATCH_LT_Msk (0x2000000UL) /*!< MATCH_LT (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PATTERN_CTRL_TIMER_SEL_Pos (26UL) /*!< TIMER_SEL (Bit 26) */ + #define R_ETHSW_PATTERN_CTRL_TIMER_SEL_Msk (0x4000000UL) /*!< TIMER_SEL (Bitfield-Mask: 0x01) */ + #define R_ETHSW_PATTERN_CTRL_QUEUESEL_Pos (28UL) /*!< QUEUESEL (Bit 28) */ + #define R_ETHSW_PATTERN_CTRL_QUEUESEL_Msk (0xf0000000UL) /*!< QUEUESEL (Bitfield-Mask: 0x0f) */ +/* ================================================== PATTERN_IRQ_CONTROL ================================================== */ + #define R_ETHSW_PATTERN_IRQ_CONTROL_MATCHINT_Pos (0UL) /*!< MATCHINT (Bit 0) */ + #define R_ETHSW_PATTERN_IRQ_CONTROL_MATCHINT_Msk (0xfffUL) /*!< MATCHINT (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_PATTERN_IRQ_CONTROL_ERROR_INT_Pos (16UL) /*!< ERROR_INT (Bit 16) */ + #define R_ETHSW_PATTERN_IRQ_CONTROL_ERROR_INT_Msk (0xf0000UL) /*!< ERROR_INT (Bitfield-Mask: 0x0f) */ +/* ================================================= PATTERN_IRQ_STAT_ACK ================================================== */ + #define R_ETHSW_PATTERN_IRQ_STAT_ACK_MATCHINT_Pos (0UL) /*!< MATCHINT (Bit 0) */ + #define R_ETHSW_PATTERN_IRQ_STAT_ACK_MATCHINT_Msk (0xfffUL) /*!< MATCHINT (Bitfield-Mask: 0xfff) */ + #define R_ETHSW_PATTERN_IRQ_STAT_ACK_ERROR_INT_Pos (16UL) /*!< ERROR_INT (Bit 16) */ + #define R_ETHSW_PATTERN_IRQ_STAT_ACK_ERROR_INT_Msk (0xf0000UL) /*!< ERROR_INT (Bitfield-Mask: 0x0f) */ +/* ====================================================== PTRN_VLANID ====================================================== */ + #define R_ETHSW_PTRN_VLANID_PTRN_VLANID_Pos (0UL) /*!< PTRN_VLANID (Bit 0) */ + #define R_ETHSW_PTRN_VLANID_PTRN_VLANID_Msk (0xffffUL) /*!< PTRN_VLANID (Bitfield-Mask: 0xffff) */ +/* ====================================================== PATTERN_SEL ====================================================== */ + #define R_ETHSW_PATTERN_SEL_PATTERN_SEL_Pos (0UL) /*!< PATTERN_SEL (Bit 0) */ + #define R_ETHSW_PATTERN_SEL_PATTERN_SEL_Msk (0xfUL) /*!< PATTERN_SEL (Bitfield-Mask: 0x0f) */ +/* ====================================================== PTRN_CMP_30 ====================================================== */ + #define R_ETHSW_PTRN_CMP_30_PTRN_CMP_30_Pos (0UL) /*!< PTRN_CMP_30 (Bit 0) */ + #define R_ETHSW_PTRN_CMP_30_PTRN_CMP_30_Msk (0xffffffffUL) /*!< PTRN_CMP_30 (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== PTRN_CMP_74 ====================================================== */ + #define R_ETHSW_PTRN_CMP_74_PTRN_CMP_74_Pos (0UL) /*!< PTRN_CMP_74 (Bit 0) */ + #define R_ETHSW_PTRN_CMP_74_PTRN_CMP_74_Msk (0xffffffffUL) /*!< PTRN_CMP_74 (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== PTRN_CMP_118 ====================================================== */ + #define R_ETHSW_PTRN_CMP_118_PTRN_CMP_118_Pos (0UL) /*!< PTRN_CMP_118 (Bit 0) */ + #define R_ETHSW_PTRN_CMP_118_PTRN_CMP_118_Msk (0xffffffffUL) /*!< PTRN_CMP_118 (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== PTRN_MSK_30 ====================================================== */ + #define R_ETHSW_PTRN_MSK_30_PTRN_MSK_30_Pos (0UL) /*!< PTRN_MSK_30 (Bit 0) */ + #define R_ETHSW_PTRN_MSK_30_PTRN_MSK_30_Msk (0xffffffffUL) /*!< PTRN_MSK_30 (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== PTRN_MSK_74 ====================================================== */ + #define R_ETHSW_PTRN_MSK_74_PTRN_MSK_74_Pos (0UL) /*!< PTRN_MSK_74 (Bit 0) */ + #define R_ETHSW_PTRN_MSK_74_PTRN_MSK_74_Msk (0xffffffffUL) /*!< PTRN_MSK_74 (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== PTRN_MSK_118 ====================================================== */ + #define R_ETHSW_PTRN_MSK_118_PTRN_MSK_118_Pos (0UL) /*!< PTRN_MSK_118 (Bit 0) */ + #define R_ETHSW_PTRN_MSK_118_PTRN_MSK_118_Msk (0xffffffffUL) /*!< PTRN_MSK_118 (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_ESC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= TYPE ========================================================== */ + #define R_ESC_TYPE_TYPE_Pos (0UL) /*!< TYPE (Bit 0) */ + #define R_ESC_TYPE_TYPE_Msk (0xffUL) /*!< TYPE (Bitfield-Mask: 0xff) */ +/* ======================================================= REVISION ======================================================== */ + #define R_ESC_REVISION_REV_Pos (0UL) /*!< REV (Bit 0) */ + #define R_ESC_REVISION_REV_Msk (0xffUL) /*!< REV (Bitfield-Mask: 0xff) */ +/* ========================================================= BUILD ========================================================= */ + #define R_ESC_BUILD_BUILD_Pos (0UL) /*!< BUILD (Bit 0) */ + #define R_ESC_BUILD_BUILD_Msk (0xffUL) /*!< BUILD (Bitfield-Mask: 0xff) */ +/* ======================================================= FMMU_NUM ======================================================== */ + #define R_ESC_FMMU_NUM_NUMFMMU_Pos (0UL) /*!< NUMFMMU (Bit 0) */ + #define R_ESC_FMMU_NUM_NUMFMMU_Msk (0xffUL) /*!< NUMFMMU (Bitfield-Mask: 0xff) */ +/* ===================================================== SYNC_MANAGER ====================================================== */ + #define R_ESC_SYNC_MANAGER_NUMSYNC_Pos (0UL) /*!< NUMSYNC (Bit 0) */ + #define R_ESC_SYNC_MANAGER_NUMSYNC_Msk (0xffUL) /*!< NUMSYNC (Bitfield-Mask: 0xff) */ +/* ======================================================= RAM_SIZE ======================================================== */ + #define R_ESC_RAM_SIZE_RAMSIZE_Pos (0UL) /*!< RAMSIZE (Bit 0) */ + #define R_ESC_RAM_SIZE_RAMSIZE_Msk (0xffUL) /*!< RAMSIZE (Bitfield-Mask: 0xff) */ +/* ======================================================= PORT_DESC ======================================================= */ + #define R_ESC_PORT_DESC_P0_Pos (0UL) /*!< P0 (Bit 0) */ + #define R_ESC_PORT_DESC_P0_Msk (0x3UL) /*!< P0 (Bitfield-Mask: 0x03) */ + #define R_ESC_PORT_DESC_P1_Pos (2UL) /*!< P1 (Bit 2) */ + #define R_ESC_PORT_DESC_P1_Msk (0xcUL) /*!< P1 (Bitfield-Mask: 0x03) */ + #define R_ESC_PORT_DESC_P2_Pos (4UL) /*!< P2 (Bit 4) */ + #define R_ESC_PORT_DESC_P2_Msk (0x30UL) /*!< P2 (Bitfield-Mask: 0x03) */ + #define R_ESC_PORT_DESC_P3_Pos (6UL) /*!< P3 (Bit 6) */ + #define R_ESC_PORT_DESC_P3_Msk (0xc0UL) /*!< P3 (Bitfield-Mask: 0x03) */ +/* ======================================================== FEATURE ======================================================== */ + #define R_ESC_FEATURE_FMMU_Pos (0UL) /*!< FMMU (Bit 0) */ + #define R_ESC_FEATURE_FMMU_Msk (0x1UL) /*!< FMMU (Bitfield-Mask: 0x01) */ + #define R_ESC_FEATURE_DC_Pos (2UL) /*!< DC (Bit 2) */ + #define R_ESC_FEATURE_DC_Msk (0x4UL) /*!< DC (Bitfield-Mask: 0x01) */ + #define R_ESC_FEATURE_DCWID_Pos (3UL) /*!< DCWID (Bit 3) */ + #define R_ESC_FEATURE_DCWID_Msk (0x8UL) /*!< DCWID (Bitfield-Mask: 0x01) */ + #define R_ESC_FEATURE_LINKDECMII_Pos (6UL) /*!< LINKDECMII (Bit 6) */ + #define R_ESC_FEATURE_LINKDECMII_Msk (0x40UL) /*!< LINKDECMII (Bitfield-Mask: 0x01) */ + #define R_ESC_FEATURE_FCS_Pos (7UL) /*!< FCS (Bit 7) */ + #define R_ESC_FEATURE_FCS_Msk (0x80UL) /*!< FCS (Bitfield-Mask: 0x01) */ + #define R_ESC_FEATURE_DCSYNC_Pos (8UL) /*!< DCSYNC (Bit 8) */ + #define R_ESC_FEATURE_DCSYNC_Msk (0x100UL) /*!< DCSYNC (Bitfield-Mask: 0x01) */ + #define R_ESC_FEATURE_LRW_Pos (9UL) /*!< LRW (Bit 9) */ + #define R_ESC_FEATURE_LRW_Msk (0x200UL) /*!< LRW (Bitfield-Mask: 0x01) */ + #define R_ESC_FEATURE_RWSUPP_Pos (10UL) /*!< RWSUPP (Bit 10) */ + #define R_ESC_FEATURE_RWSUPP_Msk (0x400UL) /*!< RWSUPP (Bitfield-Mask: 0x01) */ + #define R_ESC_FEATURE_FSCONFIG_Pos (11UL) /*!< FSCONFIG (Bit 11) */ + #define R_ESC_FEATURE_FSCONFIG_Msk (0x800UL) /*!< FSCONFIG (Bitfield-Mask: 0x01) */ +/* ====================================================== STATION_ADR ====================================================== */ + #define R_ESC_STATION_ADR_NODADDR_Pos (0UL) /*!< NODADDR (Bit 0) */ + #define R_ESC_STATION_ADR_NODADDR_Msk (0xffffUL) /*!< NODADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== STATION_ALIAS ===================================================== */ + #define R_ESC_STATION_ALIAS_NODALIADDR_Pos (0UL) /*!< NODALIADDR (Bit 0) */ + #define R_ESC_STATION_ALIAS_NODALIADDR_Msk (0xffffUL) /*!< NODALIADDR (Bitfield-Mask: 0xffff) */ +/* ===================================================== WR_REG_ENABLE ===================================================== */ + #define R_ESC_WR_REG_ENABLE_ENABLE_Pos (0UL) /*!< ENABLE (Bit 0) */ + #define R_ESC_WR_REG_ENABLE_ENABLE_Msk (0x1UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ +/* ==================================================== WR_REG_PROTECT ===================================================== */ + #define R_ESC_WR_REG_PROTECT_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_ESC_WR_REG_PROTECT_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ +/* ===================================================== ESC_WR_ENABLE ===================================================== */ + #define R_ESC_ESC_WR_ENABLE_ENABLE_Pos (0UL) /*!< ENABLE (Bit 0) */ + #define R_ESC_ESC_WR_ENABLE_ENABLE_Msk (0x1UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ +/* ==================================================== ESC_WR_PROTECT ===================================================== */ + #define R_ESC_ESC_WR_PROTECT_PROTECT_Pos (0UL) /*!< PROTECT (Bit 0) */ + #define R_ESC_ESC_WR_PROTECT_PROTECT_Msk (0x1UL) /*!< PROTECT (Bitfield-Mask: 0x01) */ +/* =================================================== ESC_RESET_ECAT_R ==================================================== */ + #define R_ESC_ESC_RESET_ECAT_R_RESET_ECAT_Pos (0UL) /*!< RESET_ECAT (Bit 0) */ + #define R_ESC_ESC_RESET_ECAT_R_RESET_ECAT_Msk (0x3UL) /*!< RESET_ECAT (Bitfield-Mask: 0x03) */ +/* =================================================== ESC_RESET_ECAT_W ==================================================== */ + #define R_ESC_ESC_RESET_ECAT_W_RESET_ECAT_Pos (0UL) /*!< RESET_ECAT (Bit 0) */ + #define R_ESC_ESC_RESET_ECAT_W_RESET_ECAT_Msk (0xffUL) /*!< RESET_ECAT (Bitfield-Mask: 0xff) */ +/* ==================================================== ESC_RESET_PDI_R ==================================================== */ + #define R_ESC_ESC_RESET_PDI_R_RESET_PDI_Pos (0UL) /*!< RESET_PDI (Bit 0) */ + #define R_ESC_ESC_RESET_PDI_R_RESET_PDI_Msk (0x3UL) /*!< RESET_PDI (Bitfield-Mask: 0x03) */ +/* ==================================================== ESC_RESET_PDI_W ==================================================== */ + #define R_ESC_ESC_RESET_PDI_W_RESET_PDI_Pos (0UL) /*!< RESET_PDI (Bit 0) */ + #define R_ESC_ESC_RESET_PDI_W_RESET_PDI_Msk (0xffUL) /*!< RESET_PDI (Bitfield-Mask: 0xff) */ +/* ==================================================== ESC_DL_CONTROL ===================================================== */ + #define R_ESC_ESC_DL_CONTROL_FWDRULE_Pos (0UL) /*!< FWDRULE (Bit 0) */ + #define R_ESC_ESC_DL_CONTROL_FWDRULE_Msk (0x1UL) /*!< FWDRULE (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_DL_CONTROL_TEMPUSE_Pos (1UL) /*!< TEMPUSE (Bit 1) */ + #define R_ESC_ESC_DL_CONTROL_TEMPUSE_Msk (0x2UL) /*!< TEMPUSE (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_DL_CONTROL_LP0_Pos (8UL) /*!< LP0 (Bit 8) */ + #define R_ESC_ESC_DL_CONTROL_LP0_Msk (0x300UL) /*!< LP0 (Bitfield-Mask: 0x03) */ + #define R_ESC_ESC_DL_CONTROL_LP1_Pos (10UL) /*!< LP1 (Bit 10) */ + #define R_ESC_ESC_DL_CONTROL_LP1_Msk (0xc00UL) /*!< LP1 (Bitfield-Mask: 0x03) */ + #define R_ESC_ESC_DL_CONTROL_LP2_Pos (12UL) /*!< LP2 (Bit 12) */ + #define R_ESC_ESC_DL_CONTROL_LP2_Msk (0x3000UL) /*!< LP2 (Bitfield-Mask: 0x03) */ + #define R_ESC_ESC_DL_CONTROL_LP3_Pos (14UL) /*!< LP3 (Bit 14) */ + #define R_ESC_ESC_DL_CONTROL_LP3_Msk (0xc000UL) /*!< LP3 (Bitfield-Mask: 0x03) */ + #define R_ESC_ESC_DL_CONTROL_RXFIFO_Pos (16UL) /*!< RXFIFO (Bit 16) */ + #define R_ESC_ESC_DL_CONTROL_RXFIFO_Msk (0x70000UL) /*!< RXFIFO (Bitfield-Mask: 0x07) */ + #define R_ESC_ESC_DL_CONTROL_STAALIAS_Pos (24UL) /*!< STAALIAS (Bit 24) */ + #define R_ESC_ESC_DL_CONTROL_STAALIAS_Msk (0x1000000UL) /*!< STAALIAS (Bitfield-Mask: 0x01) */ +/* ================================================== PHYSICAL_RW_OFFSET =================================================== */ + #define R_ESC_PHYSICAL_RW_OFFSET_RWOFFSET_Pos (0UL) /*!< RWOFFSET (Bit 0) */ + #define R_ESC_PHYSICAL_RW_OFFSET_RWOFFSET_Msk (0xffffUL) /*!< RWOFFSET (Bitfield-Mask: 0xffff) */ +/* ===================================================== ESC_DL_STATUS ===================================================== */ + #define R_ESC_ESC_DL_STATUS_PDIOPE_Pos (0UL) /*!< PDIOPE (Bit 0) */ + #define R_ESC_ESC_DL_STATUS_PDIOPE_Msk (0x1UL) /*!< PDIOPE (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_DL_STATUS_PDIWDST_Pos (1UL) /*!< PDIWDST (Bit 1) */ + #define R_ESC_ESC_DL_STATUS_PDIWDST_Msk (0x2UL) /*!< PDIWDST (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_DL_STATUS_ENHLINKD_Pos (2UL) /*!< ENHLINKD (Bit 2) */ + #define R_ESC_ESC_DL_STATUS_ENHLINKD_Msk (0x4UL) /*!< ENHLINKD (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_DL_STATUS_PHYP0_Pos (4UL) /*!< PHYP0 (Bit 4) */ + #define R_ESC_ESC_DL_STATUS_PHYP0_Msk (0x10UL) /*!< PHYP0 (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_DL_STATUS_PHYP1_Pos (5UL) /*!< PHYP1 (Bit 5) */ + #define R_ESC_ESC_DL_STATUS_PHYP1_Msk (0x20UL) /*!< PHYP1 (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_DL_STATUS_PHYP2_Pos (6UL) /*!< PHYP2 (Bit 6) */ + #define R_ESC_ESC_DL_STATUS_PHYP2_Msk (0x40UL) /*!< PHYP2 (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_DL_STATUS_PHYP3_Pos (7UL) /*!< PHYP3 (Bit 7) */ + #define R_ESC_ESC_DL_STATUS_PHYP3_Msk (0x80UL) /*!< PHYP3 (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_DL_STATUS_LP0_Pos (8UL) /*!< LP0 (Bit 8) */ + #define R_ESC_ESC_DL_STATUS_LP0_Msk (0x100UL) /*!< LP0 (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_DL_STATUS_COMP0_Pos (9UL) /*!< COMP0 (Bit 9) */ + #define R_ESC_ESC_DL_STATUS_COMP0_Msk (0x200UL) /*!< COMP0 (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_DL_STATUS_LP1_Pos (10UL) /*!< LP1 (Bit 10) */ + #define R_ESC_ESC_DL_STATUS_LP1_Msk (0x400UL) /*!< LP1 (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_DL_STATUS_COMP1_Pos (11UL) /*!< COMP1 (Bit 11) */ + #define R_ESC_ESC_DL_STATUS_COMP1_Msk (0x800UL) /*!< COMP1 (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_DL_STATUS_LP2_Pos (12UL) /*!< LP2 (Bit 12) */ + #define R_ESC_ESC_DL_STATUS_LP2_Msk (0x1000UL) /*!< LP2 (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_DL_STATUS_COMP2_Pos (13UL) /*!< COMP2 (Bit 13) */ + #define R_ESC_ESC_DL_STATUS_COMP2_Msk (0x2000UL) /*!< COMP2 (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_DL_STATUS_LP3_Pos (14UL) /*!< LP3 (Bit 14) */ + #define R_ESC_ESC_DL_STATUS_LP3_Msk (0x4000UL) /*!< LP3 (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_DL_STATUS_COMP3_Pos (15UL) /*!< COMP3 (Bit 15) */ + #define R_ESC_ESC_DL_STATUS_COMP3_Msk (0x8000UL) /*!< COMP3 (Bitfield-Mask: 0x01) */ +/* ====================================================== AL_CONTROL ======================================================= */ + #define R_ESC_AL_CONTROL_INISTATE_Pos (0UL) /*!< INISTATE (Bit 0) */ + #define R_ESC_AL_CONTROL_INISTATE_Msk (0xfUL) /*!< INISTATE (Bitfield-Mask: 0x0f) */ + #define R_ESC_AL_CONTROL_ERRINDACK_Pos (4UL) /*!< ERRINDACK (Bit 4) */ + #define R_ESC_AL_CONTROL_ERRINDACK_Msk (0x10UL) /*!< ERRINDACK (Bitfield-Mask: 0x01) */ + #define R_ESC_AL_CONTROL_DEVICEID_Pos (5UL) /*!< DEVICEID (Bit 5) */ + #define R_ESC_AL_CONTROL_DEVICEID_Msk (0x20UL) /*!< DEVICEID (Bitfield-Mask: 0x01) */ +/* ======================================================= AL_STATUS ======================================================= */ + #define R_ESC_AL_STATUS_ACTSTATE_Pos (0UL) /*!< ACTSTATE (Bit 0) */ + #define R_ESC_AL_STATUS_ACTSTATE_Msk (0xfUL) /*!< ACTSTATE (Bitfield-Mask: 0x0f) */ + #define R_ESC_AL_STATUS_ERR_Pos (4UL) /*!< ERR (Bit 4) */ + #define R_ESC_AL_STATUS_ERR_Msk (0x10UL) /*!< ERR (Bitfield-Mask: 0x01) */ + #define R_ESC_AL_STATUS_DEVICEID_Pos (5UL) /*!< DEVICEID (Bit 5) */ + #define R_ESC_AL_STATUS_DEVICEID_Msk (0x20UL) /*!< DEVICEID (Bitfield-Mask: 0x01) */ +/* ==================================================== AL_STATUS_CODE ===================================================== */ + #define R_ESC_AL_STATUS_CODE_STATUSCODE_Pos (0UL) /*!< STATUSCODE (Bit 0) */ + #define R_ESC_AL_STATUS_CODE_STATUSCODE_Msk (0xffffUL) /*!< STATUSCODE (Bitfield-Mask: 0xffff) */ +/* =================================================== RUN_LED_OVERRIDE ==================================================== */ + #define R_ESC_RUN_LED_OVERRIDE_LEDCODE_Pos (0UL) /*!< LEDCODE (Bit 0) */ + #define R_ESC_RUN_LED_OVERRIDE_LEDCODE_Msk (0xfUL) /*!< LEDCODE (Bitfield-Mask: 0x0f) */ + #define R_ESC_RUN_LED_OVERRIDE_OVERRIDEEN_Pos (4UL) /*!< OVERRIDEEN (Bit 4) */ + #define R_ESC_RUN_LED_OVERRIDE_OVERRIDEEN_Msk (0x10UL) /*!< OVERRIDEEN (Bitfield-Mask: 0x01) */ +/* =================================================== ERR_LED_OVERRIDE ==================================================== */ + #define R_ESC_ERR_LED_OVERRIDE_LEDCODE_Pos (0UL) /*!< LEDCODE (Bit 0) */ + #define R_ESC_ERR_LED_OVERRIDE_LEDCODE_Msk (0xfUL) /*!< LEDCODE (Bitfield-Mask: 0x0f) */ + #define R_ESC_ERR_LED_OVERRIDE_OVERRIDEEN_Pos (4UL) /*!< OVERRIDEEN (Bit 4) */ + #define R_ESC_ERR_LED_OVERRIDE_OVERRIDEEN_Msk (0x10UL) /*!< OVERRIDEEN (Bitfield-Mask: 0x01) */ +/* ====================================================== PDI_CONTROL ====================================================== */ + #define R_ESC_PDI_CONTROL_PDI_Pos (0UL) /*!< PDI (Bit 0) */ + #define R_ESC_PDI_CONTROL_PDI_Msk (0xffUL) /*!< PDI (Bitfield-Mask: 0xff) */ +/* ====================================================== ESC_CONFIG ======================================================= */ + #define R_ESC_ESC_CONFIG_DEVEMU_Pos (0UL) /*!< DEVEMU (Bit 0) */ + #define R_ESC_ESC_CONFIG_DEVEMU_Msk (0x1UL) /*!< DEVEMU (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_CONFIG_ENLALLP_Pos (1UL) /*!< ENLALLP (Bit 1) */ + #define R_ESC_ESC_CONFIG_ENLALLP_Msk (0x2UL) /*!< ENLALLP (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_CONFIG_DCSYNC_Pos (2UL) /*!< DCSYNC (Bit 2) */ + #define R_ESC_ESC_CONFIG_DCSYNC_Msk (0x4UL) /*!< DCSYNC (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_CONFIG_DCLATCH_Pos (3UL) /*!< DCLATCH (Bit 3) */ + #define R_ESC_ESC_CONFIG_DCLATCH_Msk (0x8UL) /*!< DCLATCH (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_CONFIG_ENLP0_Pos (4UL) /*!< ENLP0 (Bit 4) */ + #define R_ESC_ESC_CONFIG_ENLP0_Msk (0x10UL) /*!< ENLP0 (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_CONFIG_ENLP1_Pos (5UL) /*!< ENLP1 (Bit 5) */ + #define R_ESC_ESC_CONFIG_ENLP1_Msk (0x20UL) /*!< ENLP1 (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_CONFIG_ENLP2_Pos (6UL) /*!< ENLP2 (Bit 6) */ + #define R_ESC_ESC_CONFIG_ENLP2_Msk (0x40UL) /*!< ENLP2 (Bitfield-Mask: 0x01) */ + #define R_ESC_ESC_CONFIG_ENLP3_Pos (7UL) /*!< ENLP3 (Bit 7) */ + #define R_ESC_ESC_CONFIG_ENLP3_Msk (0x80UL) /*!< ENLP3 (Bitfield-Mask: 0x01) */ +/* ====================================================== PDI_CONFIG ======================================================= */ + #define R_ESC_PDI_CONFIG_ONCHIPBUSCLK_Pos (0UL) /*!< ONCHIPBUSCLK (Bit 0) */ + #define R_ESC_PDI_CONFIG_ONCHIPBUSCLK_Msk (0x1fUL) /*!< ONCHIPBUSCLK (Bitfield-Mask: 0x1f) */ + #define R_ESC_PDI_CONFIG_ONCHIPBUS_Pos (5UL) /*!< ONCHIPBUS (Bit 5) */ + #define R_ESC_PDI_CONFIG_ONCHIPBUS_Msk (0xe0UL) /*!< ONCHIPBUS (Bitfield-Mask: 0x07) */ +/* =================================================== SYNC_LATCH_CONFIG =================================================== */ + #define R_ESC_SYNC_LATCH_CONFIG_SYNC0OUT_Pos (0UL) /*!< SYNC0OUT (Bit 0) */ + #define R_ESC_SYNC_LATCH_CONFIG_SYNC0OUT_Msk (0x3UL) /*!< SYNC0OUT (Bitfield-Mask: 0x03) */ + #define R_ESC_SYNC_LATCH_CONFIG_SYNCLAT0_Pos (2UL) /*!< SYNCLAT0 (Bit 2) */ + #define R_ESC_SYNC_LATCH_CONFIG_SYNCLAT0_Msk (0x4UL) /*!< SYNCLAT0 (Bitfield-Mask: 0x01) */ + #define R_ESC_SYNC_LATCH_CONFIG_SYNC0MAP_Pos (3UL) /*!< SYNC0MAP (Bit 3) */ + #define R_ESC_SYNC_LATCH_CONFIG_SYNC0MAP_Msk (0x8UL) /*!< SYNC0MAP (Bitfield-Mask: 0x01) */ + #define R_ESC_SYNC_LATCH_CONFIG_SYNC1OUT_Pos (4UL) /*!< SYNC1OUT (Bit 4) */ + #define R_ESC_SYNC_LATCH_CONFIG_SYNC1OUT_Msk (0x30UL) /*!< SYNC1OUT (Bitfield-Mask: 0x03) */ + #define R_ESC_SYNC_LATCH_CONFIG_SYNCLAT1_Pos (6UL) /*!< SYNCLAT1 (Bit 6) */ + #define R_ESC_SYNC_LATCH_CONFIG_SYNCLAT1_Msk (0x40UL) /*!< SYNCLAT1 (Bitfield-Mask: 0x01) */ + #define R_ESC_SYNC_LATCH_CONFIG_SYNC1MAP_Pos (7UL) /*!< SYNC1MAP (Bit 7) */ + #define R_ESC_SYNC_LATCH_CONFIG_SYNC1MAP_Msk (0x80UL) /*!< SYNC1MAP (Bitfield-Mask: 0x01) */ +/* ==================================================== EXT_PDI_CONFIG ===================================================== */ + #define R_ESC_EXT_PDI_CONFIG_DATABUSWID_Pos (0UL) /*!< DATABUSWID (Bit 0) */ + #define R_ESC_EXT_PDI_CONFIG_DATABUSWID_Msk (0x3UL) /*!< DATABUSWID (Bitfield-Mask: 0x03) */ +/* ==================================================== ECAT_EVENT_MASK ==================================================== */ + #define R_ESC_ECAT_EVENT_MASK_ECATEVMASK_Pos (0UL) /*!< ECATEVMASK (Bit 0) */ + #define R_ESC_ECAT_EVENT_MASK_ECATEVMASK_Msk (0xffffUL) /*!< ECATEVMASK (Bitfield-Mask: 0xffff) */ +/* ===================================================== AL_EVENT_MASK ===================================================== */ + #define R_ESC_AL_EVENT_MASK_ALEVMASK_Pos (0UL) /*!< ALEVMASK (Bit 0) */ + #define R_ESC_AL_EVENT_MASK_ALEVMASK_Msk (0xffffffffUL) /*!< ALEVMASK (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== ECAT_EVENT_REQ ===================================================== */ + #define R_ESC_ECAT_EVENT_REQ_DCLATCH_Pos (0UL) /*!< DCLATCH (Bit 0) */ + #define R_ESC_ECAT_EVENT_REQ_DCLATCH_Msk (0x1UL) /*!< DCLATCH (Bitfield-Mask: 0x01) */ + #define R_ESC_ECAT_EVENT_REQ_DLSTA_Pos (2UL) /*!< DLSTA (Bit 2) */ + #define R_ESC_ECAT_EVENT_REQ_DLSTA_Msk (0x4UL) /*!< DLSTA (Bitfield-Mask: 0x01) */ + #define R_ESC_ECAT_EVENT_REQ_ALSTA_Pos (3UL) /*!< ALSTA (Bit 3) */ + #define R_ESC_ECAT_EVENT_REQ_ALSTA_Msk (0x8UL) /*!< ALSTA (Bitfield-Mask: 0x01) */ + #define R_ESC_ECAT_EVENT_REQ_SMSTA0_Pos (4UL) /*!< SMSTA0 (Bit 4) */ + #define R_ESC_ECAT_EVENT_REQ_SMSTA0_Msk (0x10UL) /*!< SMSTA0 (Bitfield-Mask: 0x01) */ + #define R_ESC_ECAT_EVENT_REQ_SMSTA1_Pos (5UL) /*!< SMSTA1 (Bit 5) */ + #define R_ESC_ECAT_EVENT_REQ_SMSTA1_Msk (0x20UL) /*!< SMSTA1 (Bitfield-Mask: 0x01) */ + #define R_ESC_ECAT_EVENT_REQ_SMSTA2_Pos (6UL) /*!< SMSTA2 (Bit 6) */ + #define R_ESC_ECAT_EVENT_REQ_SMSTA2_Msk (0x40UL) /*!< SMSTA2 (Bitfield-Mask: 0x01) */ + #define R_ESC_ECAT_EVENT_REQ_SMSTA3_Pos (7UL) /*!< SMSTA3 (Bit 7) */ + #define R_ESC_ECAT_EVENT_REQ_SMSTA3_Msk (0x80UL) /*!< SMSTA3 (Bitfield-Mask: 0x01) */ + #define R_ESC_ECAT_EVENT_REQ_SMSTA4_Pos (8UL) /*!< SMSTA4 (Bit 8) */ + #define R_ESC_ECAT_EVENT_REQ_SMSTA4_Msk (0x100UL) /*!< SMSTA4 (Bitfield-Mask: 0x01) */ + #define R_ESC_ECAT_EVENT_REQ_SMSTA5_Pos (9UL) /*!< SMSTA5 (Bit 9) */ + #define R_ESC_ECAT_EVENT_REQ_SMSTA5_Msk (0x200UL) /*!< SMSTA5 (Bitfield-Mask: 0x01) */ + #define R_ESC_ECAT_EVENT_REQ_SMSTA6_Pos (10UL) /*!< SMSTA6 (Bit 10) */ + #define R_ESC_ECAT_EVENT_REQ_SMSTA6_Msk (0x400UL) /*!< SMSTA6 (Bitfield-Mask: 0x01) */ + #define R_ESC_ECAT_EVENT_REQ_SMSTA7_Pos (11UL) /*!< SMSTA7 (Bit 11) */ + #define R_ESC_ECAT_EVENT_REQ_SMSTA7_Msk (0x800UL) /*!< SMSTA7 (Bitfield-Mask: 0x01) */ +/* ===================================================== AL_EVENT_REQ ====================================================== */ + #define R_ESC_AL_EVENT_REQ_ALCTRL_Pos (0UL) /*!< ALCTRL (Bit 0) */ + #define R_ESC_AL_EVENT_REQ_ALCTRL_Msk (0x1UL) /*!< ALCTRL (Bitfield-Mask: 0x01) */ + #define R_ESC_AL_EVENT_REQ_DCLATCH_Pos (1UL) /*!< DCLATCH (Bit 1) */ + #define R_ESC_AL_EVENT_REQ_DCLATCH_Msk (0x2UL) /*!< DCLATCH (Bitfield-Mask: 0x01) */ + #define R_ESC_AL_EVENT_REQ_DCSYNC0STA_Pos (2UL) /*!< DCSYNC0STA (Bit 2) */ + #define R_ESC_AL_EVENT_REQ_DCSYNC0STA_Msk (0x4UL) /*!< DCSYNC0STA (Bitfield-Mask: 0x01) */ + #define R_ESC_AL_EVENT_REQ_DCSYNC1STA_Pos (3UL) /*!< DCSYNC1STA (Bit 3) */ + #define R_ESC_AL_EVENT_REQ_DCSYNC1STA_Msk (0x8UL) /*!< DCSYNC1STA (Bitfield-Mask: 0x01) */ + #define R_ESC_AL_EVENT_REQ_SYNCACT_Pos (4UL) /*!< SYNCACT (Bit 4) */ + #define R_ESC_AL_EVENT_REQ_SYNCACT_Msk (0x10UL) /*!< SYNCACT (Bitfield-Mask: 0x01) */ + #define R_ESC_AL_EVENT_REQ_WDPD_Pos (6UL) /*!< WDPD (Bit 6) */ + #define R_ESC_AL_EVENT_REQ_WDPD_Msk (0x40UL) /*!< WDPD (Bitfield-Mask: 0x01) */ + #define R_ESC_AL_EVENT_REQ_SMINT0_Pos (8UL) /*!< SMINT0 (Bit 8) */ + #define R_ESC_AL_EVENT_REQ_SMINT0_Msk (0x100UL) /*!< SMINT0 (Bitfield-Mask: 0x01) */ + #define R_ESC_AL_EVENT_REQ_SMINT1_Pos (9UL) /*!< SMINT1 (Bit 9) */ + #define R_ESC_AL_EVENT_REQ_SMINT1_Msk (0x200UL) /*!< SMINT1 (Bitfield-Mask: 0x01) */ + #define R_ESC_AL_EVENT_REQ_SMINT2_Pos (10UL) /*!< SMINT2 (Bit 10) */ + #define R_ESC_AL_EVENT_REQ_SMINT2_Msk (0x400UL) /*!< SMINT2 (Bitfield-Mask: 0x01) */ + #define R_ESC_AL_EVENT_REQ_SMINT3_Pos (11UL) /*!< SMINT3 (Bit 11) */ + #define R_ESC_AL_EVENT_REQ_SMINT3_Msk (0x800UL) /*!< SMINT3 (Bitfield-Mask: 0x01) */ + #define R_ESC_AL_EVENT_REQ_SMINT4_Pos (12UL) /*!< SMINT4 (Bit 12) */ + #define R_ESC_AL_EVENT_REQ_SMINT4_Msk (0x1000UL) /*!< SMINT4 (Bitfield-Mask: 0x01) */ + #define R_ESC_AL_EVENT_REQ_SMINT5_Pos (13UL) /*!< SMINT5 (Bit 13) */ + #define R_ESC_AL_EVENT_REQ_SMINT5_Msk (0x2000UL) /*!< SMINT5 (Bitfield-Mask: 0x01) */ + #define R_ESC_AL_EVENT_REQ_SMINT6_Pos (14UL) /*!< SMINT6 (Bit 14) */ + #define R_ESC_AL_EVENT_REQ_SMINT6_Msk (0x4000UL) /*!< SMINT6 (Bitfield-Mask: 0x01) */ + #define R_ESC_AL_EVENT_REQ_SMINT7_Pos (15UL) /*!< SMINT7 (Bit 15) */ + #define R_ESC_AL_EVENT_REQ_SMINT7_Msk (0x8000UL) /*!< SMINT7 (Bitfield-Mask: 0x01) */ +/* ===================================================== RX_ERR_COUNT ====================================================== */ + #define R_ESC_RX_ERR_COUNT_INVFRMCNT_Pos (0UL) /*!< INVFRMCNT (Bit 0) */ + #define R_ESC_RX_ERR_COUNT_INVFRMCNT_Msk (0xffUL) /*!< INVFRMCNT (Bitfield-Mask: 0xff) */ + #define R_ESC_RX_ERR_COUNT_RXERRCNT_Pos (8UL) /*!< RXERRCNT (Bit 8) */ + #define R_ESC_RX_ERR_COUNT_RXERRCNT_Msk (0xff00UL) /*!< RXERRCNT (Bitfield-Mask: 0xff) */ +/* =================================================== FWD_RX_ERR_COUNT ==================================================== */ + #define R_ESC_FWD_RX_ERR_COUNT_FWDERRCNT_Pos (0UL) /*!< FWDERRCNT (Bit 0) */ + #define R_ESC_FWD_RX_ERR_COUNT_FWDERRCNT_Msk (0xffUL) /*!< FWDERRCNT (Bitfield-Mask: 0xff) */ +/* ================================================== ECAT_PROC_ERR_COUNT ================================================== */ + #define R_ESC_ECAT_PROC_ERR_COUNT_EPUERRCNT_Pos (0UL) /*!< EPUERRCNT (Bit 0) */ + #define R_ESC_ECAT_PROC_ERR_COUNT_EPUERRCNT_Msk (0xffUL) /*!< EPUERRCNT (Bitfield-Mask: 0xff) */ +/* ===================================================== PDI_ERR_COUNT ===================================================== */ + #define R_ESC_PDI_ERR_COUNT_PDIERRCNT_Pos (0UL) /*!< PDIERRCNT (Bit 0) */ + #define R_ESC_PDI_ERR_COUNT_PDIERRCNT_Msk (0xffUL) /*!< PDIERRCNT (Bitfield-Mask: 0xff) */ +/* ==================================================== LOST_LINK_COUNT ==================================================== */ + #define R_ESC_LOST_LINK_COUNT_LOSTLINKCNT_Pos (0UL) /*!< LOSTLINKCNT (Bit 0) */ + #define R_ESC_LOST_LINK_COUNT_LOSTLINKCNT_Msk (0xffUL) /*!< LOSTLINKCNT (Bitfield-Mask: 0xff) */ +/* ======================================================= WD_DIVIDE ======================================================= */ + #define R_ESC_WD_DIVIDE_WDDIV_Pos (0UL) /*!< WDDIV (Bit 0) */ + #define R_ESC_WD_DIVIDE_WDDIV_Msk (0xffffUL) /*!< WDDIV (Bitfield-Mask: 0xffff) */ +/* ======================================================== WDT_PDI ======================================================== */ + #define R_ESC_WDT_PDI_WDTIMPDI_Pos (0UL) /*!< WDTIMPDI (Bit 0) */ + #define R_ESC_WDT_PDI_WDTIMPDI_Msk (0xffffUL) /*!< WDTIMPDI (Bitfield-Mask: 0xffff) */ +/* ======================================================= WDT_DATA ======================================================== */ + #define R_ESC_WDT_DATA_WDTIMPD_Pos (0UL) /*!< WDTIMPD (Bit 0) */ + #define R_ESC_WDT_DATA_WDTIMPD_Msk (0xffffUL) /*!< WDTIMPD (Bitfield-Mask: 0xffff) */ +/* ======================================================= WDS_DATA ======================================================== */ + #define R_ESC_WDS_DATA_WDSTAPD_Pos (0UL) /*!< WDSTAPD (Bit 0) */ + #define R_ESC_WDS_DATA_WDSTAPD_Msk (0x1UL) /*!< WDSTAPD (Bitfield-Mask: 0x01) */ +/* ======================================================= WDC_DATA ======================================================== */ + #define R_ESC_WDC_DATA_WDCNTPD_Pos (0UL) /*!< WDCNTPD (Bit 0) */ + #define R_ESC_WDC_DATA_WDCNTPD_Msk (0xffUL) /*!< WDCNTPD (Bitfield-Mask: 0xff) */ +/* ======================================================== WDC_PDI ======================================================== */ + #define R_ESC_WDC_PDI_WDCNTPDI_Pos (0UL) /*!< WDCNTPDI (Bit 0) */ + #define R_ESC_WDC_PDI_WDCNTPDI_Msk (0xffUL) /*!< WDCNTPDI (Bitfield-Mask: 0xff) */ +/* ======================================================= EEP_CONF ======================================================== */ + #define R_ESC_EEP_CONF_CTRLPDI_Pos (0UL) /*!< CTRLPDI (Bit 0) */ + #define R_ESC_EEP_CONF_CTRLPDI_Msk (0x1UL) /*!< CTRLPDI (Bitfield-Mask: 0x01) */ + #define R_ESC_EEP_CONF_FORCEECAT_Pos (1UL) /*!< FORCEECAT (Bit 1) */ + #define R_ESC_EEP_CONF_FORCEECAT_Msk (0x2UL) /*!< FORCEECAT (Bitfield-Mask: 0x01) */ +/* ======================================================= EEP_STATE ======================================================= */ + #define R_ESC_EEP_STATE_PDIACCESS_Pos (0UL) /*!< PDIACCESS (Bit 0) */ + #define R_ESC_EEP_STATE_PDIACCESS_Msk (0x1UL) /*!< PDIACCESS (Bitfield-Mask: 0x01) */ +/* ===================================================== EEP_CONT_STAT ===================================================== */ + #define R_ESC_EEP_CONT_STAT_ECATWREN_Pos (0UL) /*!< ECATWREN (Bit 0) */ + #define R_ESC_EEP_CONT_STAT_ECATWREN_Msk (0x1UL) /*!< ECATWREN (Bitfield-Mask: 0x01) */ + #define R_ESC_EEP_CONT_STAT_READBYTE_Pos (6UL) /*!< READBYTE (Bit 6) */ + #define R_ESC_EEP_CONT_STAT_READBYTE_Msk (0x40UL) /*!< READBYTE (Bitfield-Mask: 0x01) */ + #define R_ESC_EEP_CONT_STAT_PROMSIZE_Pos (7UL) /*!< PROMSIZE (Bit 7) */ + #define R_ESC_EEP_CONT_STAT_PROMSIZE_Msk (0x80UL) /*!< PROMSIZE (Bitfield-Mask: 0x01) */ + #define R_ESC_EEP_CONT_STAT_COMMAND_Pos (8UL) /*!< COMMAND (Bit 8) */ + #define R_ESC_EEP_CONT_STAT_COMMAND_Msk (0x700UL) /*!< COMMAND (Bitfield-Mask: 0x07) */ + #define R_ESC_EEP_CONT_STAT_CKSUMERR_Pos (11UL) /*!< CKSUMERR (Bit 11) */ + #define R_ESC_EEP_CONT_STAT_CKSUMERR_Msk (0x800UL) /*!< CKSUMERR (Bitfield-Mask: 0x01) */ + #define R_ESC_EEP_CONT_STAT_LOADSTA_Pos (12UL) /*!< LOADSTA (Bit 12) */ + #define R_ESC_EEP_CONT_STAT_LOADSTA_Msk (0x1000UL) /*!< LOADSTA (Bitfield-Mask: 0x01) */ + #define R_ESC_EEP_CONT_STAT_ACKCMDERR_Pos (13UL) /*!< ACKCMDERR (Bit 13) */ + #define R_ESC_EEP_CONT_STAT_ACKCMDERR_Msk (0x2000UL) /*!< ACKCMDERR (Bitfield-Mask: 0x01) */ + #define R_ESC_EEP_CONT_STAT_WRENERR_Pos (14UL) /*!< WRENERR (Bit 14) */ + #define R_ESC_EEP_CONT_STAT_WRENERR_Msk (0x4000UL) /*!< WRENERR (Bitfield-Mask: 0x01) */ + #define R_ESC_EEP_CONT_STAT_BUSY_Pos (15UL) /*!< BUSY (Bit 15) */ + #define R_ESC_EEP_CONT_STAT_BUSY_Msk (0x8000UL) /*!< BUSY (Bitfield-Mask: 0x01) */ +/* ======================================================== EEP_ADR ======================================================== */ + #define R_ESC_EEP_ADR_ADDRESS_Pos (0UL) /*!< ADDRESS (Bit 0) */ + #define R_ESC_EEP_ADR_ADDRESS_Msk (0xffffffffUL) /*!< ADDRESS (Bitfield-Mask: 0xffffffff) */ +/* ======================================================= EEP_DATA ======================================================== */ + #define R_ESC_EEP_DATA_LODATA_Pos (0UL) /*!< LODATA (Bit 0) */ + #define R_ESC_EEP_DATA_LODATA_Msk (0xffffUL) /*!< LODATA (Bitfield-Mask: 0xffff) */ + #define R_ESC_EEP_DATA_HIDATA_Pos (16UL) /*!< HIDATA (Bit 16) */ + #define R_ESC_EEP_DATA_HIDATA_Msk (0xffff0000UL) /*!< HIDATA (Bitfield-Mask: 0xffff) */ +/* ===================================================== MII_CONT_STAT ===================================================== */ + #define R_ESC_MII_CONT_STAT_WREN_Pos (0UL) /*!< WREN (Bit 0) */ + #define R_ESC_MII_CONT_STAT_WREN_Msk (0x1UL) /*!< WREN (Bitfield-Mask: 0x01) */ + #define R_ESC_MII_CONT_STAT_PDICTRL_Pos (1UL) /*!< PDICTRL (Bit 1) */ + #define R_ESC_MII_CONT_STAT_PDICTRL_Msk (0x2UL) /*!< PDICTRL (Bitfield-Mask: 0x01) */ + #define R_ESC_MII_CONT_STAT_MILINK_Pos (2UL) /*!< MILINK (Bit 2) */ + #define R_ESC_MII_CONT_STAT_MILINK_Msk (0x4UL) /*!< MILINK (Bitfield-Mask: 0x01) */ + #define R_ESC_MII_CONT_STAT_PHYOFFSET_Pos (3UL) /*!< PHYOFFSET (Bit 3) */ + #define R_ESC_MII_CONT_STAT_PHYOFFSET_Msk (0xf8UL) /*!< PHYOFFSET (Bitfield-Mask: 0x1f) */ + #define R_ESC_MII_CONT_STAT_COMMAND_Pos (8UL) /*!< COMMAND (Bit 8) */ + #define R_ESC_MII_CONT_STAT_COMMAND_Msk (0x300UL) /*!< COMMAND (Bitfield-Mask: 0x03) */ + #define R_ESC_MII_CONT_STAT_READERR_Pos (13UL) /*!< READERR (Bit 13) */ + #define R_ESC_MII_CONT_STAT_READERR_Msk (0x2000UL) /*!< READERR (Bitfield-Mask: 0x01) */ + #define R_ESC_MII_CONT_STAT_CMDERR_Pos (14UL) /*!< CMDERR (Bit 14) */ + #define R_ESC_MII_CONT_STAT_CMDERR_Msk (0x4000UL) /*!< CMDERR (Bitfield-Mask: 0x01) */ + #define R_ESC_MII_CONT_STAT_BUSY_Pos (15UL) /*!< BUSY (Bit 15) */ + #define R_ESC_MII_CONT_STAT_BUSY_Msk (0x8000UL) /*!< BUSY (Bitfield-Mask: 0x01) */ +/* ======================================================== PHY_ADR ======================================================== */ + #define R_ESC_PHY_ADR_PHYADDR_Pos (0UL) /*!< PHYADDR (Bit 0) */ + #define R_ESC_PHY_ADR_PHYADDR_Msk (0x1fUL) /*!< PHYADDR (Bitfield-Mask: 0x1f) */ +/* ====================================================== PHY_REG_ADR ====================================================== */ + #define R_ESC_PHY_REG_ADR_PHYREGADDR_Pos (0UL) /*!< PHYREGADDR (Bit 0) */ + #define R_ESC_PHY_REG_ADR_PHYREGADDR_Msk (0x1fUL) /*!< PHYREGADDR (Bitfield-Mask: 0x1f) */ +/* ======================================================= PHY_DATA ======================================================== */ + #define R_ESC_PHY_DATA_PHYREGDATA_Pos (0UL) /*!< PHYREGDATA (Bit 0) */ + #define R_ESC_PHY_DATA_PHYREGDATA_Msk (0xffffUL) /*!< PHYREGDATA (Bitfield-Mask: 0xffff) */ +/* =================================================== MII_ECAT_ACS_STAT =================================================== */ + #define R_ESC_MII_ECAT_ACS_STAT_ACSMII_Pos (0UL) /*!< ACSMII (Bit 0) */ + #define R_ESC_MII_ECAT_ACS_STAT_ACSMII_Msk (0x1UL) /*!< ACSMII (Bitfield-Mask: 0x01) */ +/* =================================================== MII_PDI_ACS_STAT ==================================================== */ + #define R_ESC_MII_PDI_ACS_STAT_ACSMII_Pos (0UL) /*!< ACSMII (Bit 0) */ + #define R_ESC_MII_PDI_ACS_STAT_ACSMII_Msk (0x1UL) /*!< ACSMII (Bitfield-Mask: 0x01) */ + #define R_ESC_MII_PDI_ACS_STAT_FORPDI_Pos (1UL) /*!< FORPDI (Bit 1) */ + #define R_ESC_MII_PDI_ACS_STAT_FORPDI_Msk (0x2UL) /*!< FORPDI (Bitfield-Mask: 0x01) */ +/* =================================================== DC_RCV_TIME_PORT ==================================================== */ + #define R_ESC_DC_RCV_TIME_PORT_RCVTIME0_Pos (0UL) /*!< RCVTIME0 (Bit 0) */ + #define R_ESC_DC_RCV_TIME_PORT_RCVTIME0_Msk (0xffffffffUL) /*!< RCVTIME0 (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== DC_SYS_TIME_L ===================================================== */ +/* ===================================================== DC_SYS_TIME_H ===================================================== */ +/* ================================================== DC_RCV_TIME_UNIT_L =================================================== */ +/* ================================================== DC_RCV_TIME_UNIT_H =================================================== */ +/* ================================================= DC_SYS_TIME_OFFSET_L ================================================== */ +/* ================================================= DC_SYS_TIME_OFFSET_H ================================================== */ +/* =================================================== DC_SYS_TIME_DELAY =================================================== */ + #define R_ESC_DC_SYS_TIME_DELAY_SYSTIMDLY_Pos (0UL) /*!< SYSTIMDLY (Bit 0) */ + #define R_ESC_DC_SYS_TIME_DELAY_SYSTIMDLY_Msk (0xffffffffUL) /*!< SYSTIMDLY (Bitfield-Mask: 0xffffffff) */ +/* =================================================== DC_SYS_TIME_DIFF ==================================================== */ + #define R_ESC_DC_SYS_TIME_DIFF_DIFF_Pos (0UL) /*!< DIFF (Bit 0) */ + #define R_ESC_DC_SYS_TIME_DIFF_DIFF_Msk (0x7fffffffUL) /*!< DIFF (Bitfield-Mask: 0x7fffffff) */ + #define R_ESC_DC_SYS_TIME_DIFF_LCP_Pos (31UL) /*!< LCP (Bit 31) */ + #define R_ESC_DC_SYS_TIME_DIFF_LCP_Msk (0x80000000UL) /*!< LCP (Bitfield-Mask: 0x01) */ +/* ================================================= DC_SPEED_COUNT_START ================================================== */ + #define R_ESC_DC_SPEED_COUNT_START_SPDCNTSTRT_Pos (0UL) /*!< SPDCNTSTRT (Bit 0) */ + #define R_ESC_DC_SPEED_COUNT_START_SPDCNTSTRT_Msk (0x7fffUL) /*!< SPDCNTSTRT (Bitfield-Mask: 0x7fff) */ +/* ================================================== DC_SPEED_COUNT_DIFF ================================================== */ + #define R_ESC_DC_SPEED_COUNT_DIFF_SPDCNTDIFF_Pos (0UL) /*!< SPDCNTDIFF (Bit 0) */ + #define R_ESC_DC_SPEED_COUNT_DIFF_SPDCNTDIFF_Msk (0xffffUL) /*!< SPDCNTDIFF (Bitfield-Mask: 0xffff) */ +/* ============================================== DC_SYS_TIME_DIFF_FIL_DEPTH =============================================== */ + #define R_ESC_DC_SYS_TIME_DIFF_FIL_DEPTH_SYSTIMDEP_Pos (0UL) /*!< SYSTIMDEP (Bit 0) */ + #define R_ESC_DC_SYS_TIME_DIFF_FIL_DEPTH_SYSTIMDEP_Msk (0xfUL) /*!< SYSTIMDEP (Bitfield-Mask: 0x0f) */ +/* =============================================== DC_SPEED_COUNT_FIL_DEPTH ================================================ */ + #define R_ESC_DC_SPEED_COUNT_FIL_DEPTH_CLKPERDEP_Pos (0UL) /*!< CLKPERDEP (Bit 0) */ + #define R_ESC_DC_SPEED_COUNT_FIL_DEPTH_CLKPERDEP_Msk (0xfUL) /*!< CLKPERDEP (Bitfield-Mask: 0x0f) */ +/* ====================================================== DC_CYC_CONT ====================================================== */ + #define R_ESC_DC_CYC_CONT_SYNCOUT_Pos (0UL) /*!< SYNCOUT (Bit 0) */ + #define R_ESC_DC_CYC_CONT_SYNCOUT_Msk (0x1UL) /*!< SYNCOUT (Bitfield-Mask: 0x01) */ + #define R_ESC_DC_CYC_CONT_LATCH0_Pos (4UL) /*!< LATCH0 (Bit 4) */ + #define R_ESC_DC_CYC_CONT_LATCH0_Msk (0x10UL) /*!< LATCH0 (Bitfield-Mask: 0x01) */ + #define R_ESC_DC_CYC_CONT_LATCH1_Pos (5UL) /*!< LATCH1 (Bit 5) */ + #define R_ESC_DC_CYC_CONT_LATCH1_Msk (0x20UL) /*!< LATCH1 (Bitfield-Mask: 0x01) */ +/* ======================================================== DC_ACT ========================================================= */ + #define R_ESC_DC_ACT_SYNCACT_Pos (0UL) /*!< SYNCACT (Bit 0) */ + #define R_ESC_DC_ACT_SYNCACT_Msk (0x1UL) /*!< SYNCACT (Bitfield-Mask: 0x01) */ + #define R_ESC_DC_ACT_SYNC0_Pos (1UL) /*!< SYNC0 (Bit 1) */ + #define R_ESC_DC_ACT_SYNC0_Msk (0x2UL) /*!< SYNC0 (Bitfield-Mask: 0x01) */ + #define R_ESC_DC_ACT_SYNC1_Pos (2UL) /*!< SYNC1 (Bit 2) */ + #define R_ESC_DC_ACT_SYNC1_Msk (0x4UL) /*!< SYNC1 (Bitfield-Mask: 0x01) */ + #define R_ESC_DC_ACT_AUTOACT_Pos (3UL) /*!< AUTOACT (Bit 3) */ + #define R_ESC_DC_ACT_AUTOACT_Msk (0x8UL) /*!< AUTOACT (Bitfield-Mask: 0x01) */ + #define R_ESC_DC_ACT_EXTSTARTTIME_Pos (4UL) /*!< EXTSTARTTIME (Bit 4) */ + #define R_ESC_DC_ACT_EXTSTARTTIME_Msk (0x10UL) /*!< EXTSTARTTIME (Bitfield-Mask: 0x01) */ + #define R_ESC_DC_ACT_STARTTIME_Pos (5UL) /*!< STARTTIME (Bit 5) */ + #define R_ESC_DC_ACT_STARTTIME_Msk (0x20UL) /*!< STARTTIME (Bitfield-Mask: 0x01) */ + #define R_ESC_DC_ACT_NEARFUTURE_Pos (6UL) /*!< NEARFUTURE (Bit 6) */ + #define R_ESC_DC_ACT_NEARFUTURE_Msk (0x40UL) /*!< NEARFUTURE (Bitfield-Mask: 0x01) */ + #define R_ESC_DC_ACT_DBGPULSE_Pos (7UL) /*!< DBGPULSE (Bit 7) */ + #define R_ESC_DC_ACT_DBGPULSE_Msk (0x80UL) /*!< DBGPULSE (Bitfield-Mask: 0x01) */ +/* ===================================================== DC_PULSE_LEN ====================================================== */ + #define R_ESC_DC_PULSE_LEN_PULSELEN_Pos (0UL) /*!< PULSELEN (Bit 0) */ + #define R_ESC_DC_PULSE_LEN_PULSELEN_Msk (0xffffUL) /*!< PULSELEN (Bitfield-Mask: 0xffff) */ +/* ====================================================== DC_ACT_STAT ====================================================== */ + #define R_ESC_DC_ACT_STAT_SYNC0ACT_Pos (0UL) /*!< SYNC0ACT (Bit 0) */ + #define R_ESC_DC_ACT_STAT_SYNC0ACT_Msk (0x1UL) /*!< SYNC0ACT (Bitfield-Mask: 0x01) */ + #define R_ESC_DC_ACT_STAT_SYNC1ACT_Pos (1UL) /*!< SYNC1ACT (Bit 1) */ + #define R_ESC_DC_ACT_STAT_SYNC1ACT_Msk (0x2UL) /*!< SYNC1ACT (Bitfield-Mask: 0x01) */ + #define R_ESC_DC_ACT_STAT_STARTTIME_Pos (2UL) /*!< STARTTIME (Bit 2) */ + #define R_ESC_DC_ACT_STAT_STARTTIME_Msk (0x4UL) /*!< STARTTIME (Bitfield-Mask: 0x01) */ +/* ===================================================== DC_SYNC0_STAT ===================================================== */ + #define R_ESC_DC_SYNC0_STAT_SYNC0STA_Pos (0UL) /*!< SYNC0STA (Bit 0) */ + #define R_ESC_DC_SYNC0_STAT_SYNC0STA_Msk (0x1UL) /*!< SYNC0STA (Bitfield-Mask: 0x01) */ +/* ===================================================== DC_SYNC1_STAT ===================================================== */ + #define R_ESC_DC_SYNC1_STAT_SYNC1STA_Pos (0UL) /*!< SYNC1STA (Bit 0) */ + #define R_ESC_DC_SYNC1_STAT_SYNC1STA_Msk (0x1UL) /*!< SYNC1STA (Bitfield-Mask: 0x01) */ +/* ================================================== DC_CYC_START_TIME_L ================================================== */ +/* ================================================== DC_CYC_START_TIME_H ================================================== */ +/* ================================================= DC_NEXT_SYNC1_PULSE_L ================================================= */ +/* ================================================= DC_NEXT_SYNC1_PULSE_H ================================================= */ +/* =================================================== DC_SYNC0_CYC_TIME =================================================== */ + #define R_ESC_DC_SYNC0_CYC_TIME_SYNC0CYC_Pos (0UL) /*!< SYNC0CYC (Bit 0) */ + #define R_ESC_DC_SYNC0_CYC_TIME_SYNC0CYC_Msk (0xffffffffUL) /*!< SYNC0CYC (Bitfield-Mask: 0xffffffff) */ +/* =================================================== DC_SYNC1_CYC_TIME =================================================== */ + #define R_ESC_DC_SYNC1_CYC_TIME_SYNC1CYC_Pos (0UL) /*!< SYNC1CYC (Bit 0) */ + #define R_ESC_DC_SYNC1_CYC_TIME_SYNC1CYC_Msk (0xffffffffUL) /*!< SYNC1CYC (Bitfield-Mask: 0xffffffff) */ +/* ==================================================== DC_LATCH0_CONT ===================================================== */ + #define R_ESC_DC_LATCH0_CONT_POSEDGE_Pos (0UL) /*!< POSEDGE (Bit 0) */ + #define R_ESC_DC_LATCH0_CONT_POSEDGE_Msk (0x1UL) /*!< POSEDGE (Bitfield-Mask: 0x01) */ + #define R_ESC_DC_LATCH0_CONT_NEGEDGE_Pos (1UL) /*!< NEGEDGE (Bit 1) */ + #define R_ESC_DC_LATCH0_CONT_NEGEDGE_Msk (0x2UL) /*!< NEGEDGE (Bitfield-Mask: 0x01) */ +/* ==================================================== DC_LATCH1_CONT ===================================================== */ + #define R_ESC_DC_LATCH1_CONT_POSEDGE_Pos (0UL) /*!< POSEDGE (Bit 0) */ + #define R_ESC_DC_LATCH1_CONT_POSEDGE_Msk (0x1UL) /*!< POSEDGE (Bitfield-Mask: 0x01) */ + #define R_ESC_DC_LATCH1_CONT_NEGEDGE_Pos (1UL) /*!< NEGEDGE (Bit 1) */ + #define R_ESC_DC_LATCH1_CONT_NEGEDGE_Msk (0x2UL) /*!< NEGEDGE (Bitfield-Mask: 0x01) */ +/* ==================================================== DC_LATCH0_STAT ===================================================== */ + #define R_ESC_DC_LATCH0_STAT_EVENTPOS_Pos (0UL) /*!< EVENTPOS (Bit 0) */ + #define R_ESC_DC_LATCH0_STAT_EVENTPOS_Msk (0x1UL) /*!< EVENTPOS (Bitfield-Mask: 0x01) */ + #define R_ESC_DC_LATCH0_STAT_EVENTNEG_Pos (1UL) /*!< EVENTNEG (Bit 1) */ + #define R_ESC_DC_LATCH0_STAT_EVENTNEG_Msk (0x2UL) /*!< EVENTNEG (Bitfield-Mask: 0x01) */ + #define R_ESC_DC_LATCH0_STAT_PINSTATE_Pos (2UL) /*!< PINSTATE (Bit 2) */ + #define R_ESC_DC_LATCH0_STAT_PINSTATE_Msk (0x4UL) /*!< PINSTATE (Bitfield-Mask: 0x01) */ +/* ==================================================== DC_LATCH1_STAT ===================================================== */ + #define R_ESC_DC_LATCH1_STAT_EVENTPOS_Pos (0UL) /*!< EVENTPOS (Bit 0) */ + #define R_ESC_DC_LATCH1_STAT_EVENTPOS_Msk (0x1UL) /*!< EVENTPOS (Bitfield-Mask: 0x01) */ + #define R_ESC_DC_LATCH1_STAT_EVENTNEG_Pos (1UL) /*!< EVENTNEG (Bit 1) */ + #define R_ESC_DC_LATCH1_STAT_EVENTNEG_Msk (0x2UL) /*!< EVENTNEG (Bitfield-Mask: 0x01) */ + #define R_ESC_DC_LATCH1_STAT_PINSTATE_Pos (2UL) /*!< PINSTATE (Bit 2) */ + #define R_ESC_DC_LATCH1_STAT_PINSTATE_Msk (0x4UL) /*!< PINSTATE (Bitfield-Mask: 0x01) */ +/* ================================================= DC_LATCH0_TIME_POS_L ================================================== */ +/* ================================================= DC_LATCH0_TIME_POS_H ================================================== */ +/* ================================================= DC_LATCH0_TIME_NEG_L ================================================== */ +/* ================================================= DC_LATCH0_TIME_NEG_H ================================================== */ +/* ================================================= DC_LATCH1_TIME_POS_L ================================================== */ +/* ================================================= DC_LATCH1_TIME_POS_H ================================================== */ +/* ================================================= DC_LATCH1_TIME_NEG_L ================================================== */ +/* ================================================= DC_LATCH1_TIME_NEG_H ================================================== */ +/* ================================================== DC_ECAT_CNG_EV_TIME ================================================== */ + #define R_ESC_DC_ECAT_CNG_EV_TIME_ECATCHANGE_Pos (0UL) /*!< ECATCHANGE (Bit 0) */ + #define R_ESC_DC_ECAT_CNG_EV_TIME_ECATCHANGE_Msk (0xffffffffUL) /*!< ECATCHANGE (Bitfield-Mask: 0xffffffff) */ +/* ================================================= DC_PDI_START_EV_TIME ================================================== */ + #define R_ESC_DC_PDI_START_EV_TIME_PDISTART_Pos (0UL) /*!< PDISTART (Bit 0) */ + #define R_ESC_DC_PDI_START_EV_TIME_PDISTART_Msk (0xffffffffUL) /*!< PDISTART (Bitfield-Mask: 0xffffffff) */ +/* ================================================== DC_PDI_CNG_EV_TIME =================================================== */ + #define R_ESC_DC_PDI_CNG_EV_TIME_PDICHANGE_Pos (0UL) /*!< PDICHANGE (Bit 0) */ + #define R_ESC_DC_PDI_CNG_EV_TIME_PDICHANGE_Msk (0xffffffffUL) /*!< PDICHANGE (Bitfield-Mask: 0xffffffff) */ +/* ===================================================== PRODUCT_ID_L ====================================================== */ +/* ===================================================== PRODUCT_ID_H ====================================================== */ +/* ====================================================== VENDOR_ID_L ====================================================== */ + #define R_ESC_VENDOR_ID_L_VENDORID_Pos (0UL) /*!< VENDORID (Bit 0) */ + #define R_ESC_VENDOR_ID_L_VENDORID_Msk (0xffffffffUL) /*!< VENDORID (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_USBHC ================ */ +/* =========================================================================================================================== */ + +/* ====================================================== HCREVISION ======================================================= */ + #define R_USBHC_HCREVISION_REV_Pos (0UL) /*!< REV (Bit 0) */ + #define R_USBHC_HCREVISION_REV_Msk (0xffUL) /*!< REV (Bitfield-Mask: 0xff) */ +/* ======================================================= HCCONTROL ======================================================= */ + #define R_USBHC_HCCONTROL_CBSR_Pos (0UL) /*!< CBSR (Bit 0) */ + #define R_USBHC_HCCONTROL_CBSR_Msk (0x3UL) /*!< CBSR (Bitfield-Mask: 0x03) */ + #define R_USBHC_HCCONTROL_PLE_Pos (2UL) /*!< PLE (Bit 2) */ + #define R_USBHC_HCCONTROL_PLE_Msk (0x4UL) /*!< PLE (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCCONTROL_IE_Pos (3UL) /*!< IE (Bit 3) */ + #define R_USBHC_HCCONTROL_IE_Msk (0x8UL) /*!< IE (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCCONTROL_CLE_Pos (4UL) /*!< CLE (Bit 4) */ + #define R_USBHC_HCCONTROL_CLE_Msk (0x10UL) /*!< CLE (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCCONTROL_BLE_Pos (5UL) /*!< BLE (Bit 5) */ + #define R_USBHC_HCCONTROL_BLE_Msk (0x20UL) /*!< BLE (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCCONTROL_HCFS_Pos (6UL) /*!< HCFS (Bit 6) */ + #define R_USBHC_HCCONTROL_HCFS_Msk (0xc0UL) /*!< HCFS (Bitfield-Mask: 0x03) */ + #define R_USBHC_HCCONTROL_IR_Pos (8UL) /*!< IR (Bit 8) */ + #define R_USBHC_HCCONTROL_IR_Msk (0x100UL) /*!< IR (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCCONTROL_RWC_Pos (9UL) /*!< RWC (Bit 9) */ + #define R_USBHC_HCCONTROL_RWC_Msk (0x200UL) /*!< RWC (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCCONTROL_RWE_Pos (10UL) /*!< RWE (Bit 10) */ + #define R_USBHC_HCCONTROL_RWE_Msk (0x400UL) /*!< RWE (Bitfield-Mask: 0x01) */ +/* ==================================================== HCCOMMANDSTATUS ==================================================== */ + #define R_USBHC_HCCOMMANDSTATUS_HCR_Pos (0UL) /*!< HCR (Bit 0) */ + #define R_USBHC_HCCOMMANDSTATUS_HCR_Msk (0x1UL) /*!< HCR (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCCOMMANDSTATUS_CLF_Pos (1UL) /*!< CLF (Bit 1) */ + #define R_USBHC_HCCOMMANDSTATUS_CLF_Msk (0x2UL) /*!< CLF (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCCOMMANDSTATUS_BLF_Pos (2UL) /*!< BLF (Bit 2) */ + #define R_USBHC_HCCOMMANDSTATUS_BLF_Msk (0x4UL) /*!< BLF (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCCOMMANDSTATUS_OCR_Pos (3UL) /*!< OCR (Bit 3) */ + #define R_USBHC_HCCOMMANDSTATUS_OCR_Msk (0x8UL) /*!< OCR (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCCOMMANDSTATUS_SOC_Pos (16UL) /*!< SOC (Bit 16) */ + #define R_USBHC_HCCOMMANDSTATUS_SOC_Msk (0x30000UL) /*!< SOC (Bitfield-Mask: 0x03) */ +/* =================================================== HCINTERRUPTSTATUS =================================================== */ + #define R_USBHC_HCINTERRUPTSTATUS_SO_Pos (0UL) /*!< SO (Bit 0) */ + #define R_USBHC_HCINTERRUPTSTATUS_SO_Msk (0x1UL) /*!< SO (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTSTATUS_WDH_Pos (1UL) /*!< WDH (Bit 1) */ + #define R_USBHC_HCINTERRUPTSTATUS_WDH_Msk (0x2UL) /*!< WDH (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTSTATUS_SF_Pos (2UL) /*!< SF (Bit 2) */ + #define R_USBHC_HCINTERRUPTSTATUS_SF_Msk (0x4UL) /*!< SF (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTSTATUS_RD_Pos (3UL) /*!< RD (Bit 3) */ + #define R_USBHC_HCINTERRUPTSTATUS_RD_Msk (0x8UL) /*!< RD (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTSTATUS_UE_Pos (4UL) /*!< UE (Bit 4) */ + #define R_USBHC_HCINTERRUPTSTATUS_UE_Msk (0x10UL) /*!< UE (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTSTATUS_FNO_Pos (5UL) /*!< FNO (Bit 5) */ + #define R_USBHC_HCINTERRUPTSTATUS_FNO_Msk (0x20UL) /*!< FNO (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTSTATUS_RHSC_Pos (6UL) /*!< RHSC (Bit 6) */ + #define R_USBHC_HCINTERRUPTSTATUS_RHSC_Msk (0x40UL) /*!< RHSC (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTSTATUS_OC_Pos (30UL) /*!< OC (Bit 30) */ + #define R_USBHC_HCINTERRUPTSTATUS_OC_Msk (0x40000000UL) /*!< OC (Bitfield-Mask: 0x01) */ +/* =================================================== HCINTERRUPTENABLE =================================================== */ + #define R_USBHC_HCINTERRUPTENABLE_SOE_Pos (0UL) /*!< SOE (Bit 0) */ + #define R_USBHC_HCINTERRUPTENABLE_SOE_Msk (0x1UL) /*!< SOE (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTENABLE_WDHE_Pos (1UL) /*!< WDHE (Bit 1) */ + #define R_USBHC_HCINTERRUPTENABLE_WDHE_Msk (0x2UL) /*!< WDHE (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTENABLE_SFE_Pos (2UL) /*!< SFE (Bit 2) */ + #define R_USBHC_HCINTERRUPTENABLE_SFE_Msk (0x4UL) /*!< SFE (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTENABLE_RDE_Pos (3UL) /*!< RDE (Bit 3) */ + #define R_USBHC_HCINTERRUPTENABLE_RDE_Msk (0x8UL) /*!< RDE (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTENABLE_UEE_Pos (4UL) /*!< UEE (Bit 4) */ + #define R_USBHC_HCINTERRUPTENABLE_UEE_Msk (0x10UL) /*!< UEE (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTENABLE_FNOE_Pos (5UL) /*!< FNOE (Bit 5) */ + #define R_USBHC_HCINTERRUPTENABLE_FNOE_Msk (0x20UL) /*!< FNOE (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTENABLE_RHSCE_Pos (6UL) /*!< RHSCE (Bit 6) */ + #define R_USBHC_HCINTERRUPTENABLE_RHSCE_Msk (0x40UL) /*!< RHSCE (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTENABLE_OCE_Pos (30UL) /*!< OCE (Bit 30) */ + #define R_USBHC_HCINTERRUPTENABLE_OCE_Msk (0x40000000UL) /*!< OCE (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTENABLE_MIE_Pos (31UL) /*!< MIE (Bit 31) */ + #define R_USBHC_HCINTERRUPTENABLE_MIE_Msk (0x80000000UL) /*!< MIE (Bitfield-Mask: 0x01) */ +/* ================================================== HCINTERRUPTDISABLE =================================================== */ + #define R_USBHC_HCINTERRUPTDISABLE_SOD_Pos (0UL) /*!< SOD (Bit 0) */ + #define R_USBHC_HCINTERRUPTDISABLE_SOD_Msk (0x1UL) /*!< SOD (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTDISABLE_WDHD_Pos (1UL) /*!< WDHD (Bit 1) */ + #define R_USBHC_HCINTERRUPTDISABLE_WDHD_Msk (0x2UL) /*!< WDHD (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTDISABLE_SFD_Pos (2UL) /*!< SFD (Bit 2) */ + #define R_USBHC_HCINTERRUPTDISABLE_SFD_Msk (0x4UL) /*!< SFD (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTDISABLE_RDD_Pos (3UL) /*!< RDD (Bit 3) */ + #define R_USBHC_HCINTERRUPTDISABLE_RDD_Msk (0x8UL) /*!< RDD (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTDISABLE_UED_Pos (4UL) /*!< UED (Bit 4) */ + #define R_USBHC_HCINTERRUPTDISABLE_UED_Msk (0x10UL) /*!< UED (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTDISABLE_FNOD_Pos (5UL) /*!< FNOD (Bit 5) */ + #define R_USBHC_HCINTERRUPTDISABLE_FNOD_Msk (0x20UL) /*!< FNOD (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTDISABLE_RHSCD_Pos (6UL) /*!< RHSCD (Bit 6) */ + #define R_USBHC_HCINTERRUPTDISABLE_RHSCD_Msk (0x40UL) /*!< RHSCD (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTDISABLE_OCD_Pos (30UL) /*!< OCD (Bit 30) */ + #define R_USBHC_HCINTERRUPTDISABLE_OCD_Msk (0x40000000UL) /*!< OCD (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCINTERRUPTDISABLE_MID_Pos (31UL) /*!< MID (Bit 31) */ + #define R_USBHC_HCINTERRUPTDISABLE_MID_Msk (0x80000000UL) /*!< MID (Bitfield-Mask: 0x01) */ +/* ======================================================== HCHCCA ========================================================= */ + #define R_USBHC_HCHCCA_RAMBA_Pos (8UL) /*!< RAMBA (Bit 8) */ + #define R_USBHC_HCHCCA_RAMBA_Msk (0xffffff00UL) /*!< RAMBA (Bitfield-Mask: 0xffffff) */ +/* ================================================== HCPERIODCCURRENTIED ================================================== */ + #define R_USBHC_HCPERIODCCURRENTIED_PCED_Pos (4UL) /*!< PCED (Bit 4) */ + #define R_USBHC_HCPERIODCCURRENTIED_PCED_Msk (0xfffffff0UL) /*!< PCED (Bitfield-Mask: 0xfffffff) */ +/* ==================================================== HCCONTROLHEADED ==================================================== */ + #define R_USBHC_HCCONTROLHEADED_CHED_Pos (4UL) /*!< CHED (Bit 4) */ + #define R_USBHC_HCCONTROLHEADED_CHED_Msk (0xfffffff0UL) /*!< CHED (Bitfield-Mask: 0xfffffff) */ +/* ================================================== HCCONTROLCURRENTED =================================================== */ + #define R_USBHC_HCCONTROLCURRENTED_CCED_Pos (4UL) /*!< CCED (Bit 4) */ + #define R_USBHC_HCCONTROLCURRENTED_CCED_Msk (0xfffffff0UL) /*!< CCED (Bitfield-Mask: 0xfffffff) */ +/* ===================================================== HCBULKHEADED ====================================================== */ + #define R_USBHC_HCBULKHEADED_BHED_Pos (4UL) /*!< BHED (Bit 4) */ + #define R_USBHC_HCBULKHEADED_BHED_Msk (0xfffffff0UL) /*!< BHED (Bitfield-Mask: 0xfffffff) */ +/* ==================================================== HCBULKCURRENTED ==================================================== */ + #define R_USBHC_HCBULKCURRENTED_BCED_Pos (4UL) /*!< BCED (Bit 4) */ + #define R_USBHC_HCBULKCURRENTED_BCED_Msk (0xfffffff0UL) /*!< BCED (Bitfield-Mask: 0xfffffff) */ +/* ====================================================== HCDONEHEAD ======================================================= */ + #define R_USBHC_HCDONEHEAD_DH_Pos (4UL) /*!< DH (Bit 4) */ + #define R_USBHC_HCDONEHEAD_DH_Msk (0xfffffff0UL) /*!< DH (Bitfield-Mask: 0xfffffff) */ +/* ===================================================== HCFMINTERVAL ====================================================== */ + #define R_USBHC_HCFMINTERVAL_FI_Pos (0UL) /*!< FI (Bit 0) */ + #define R_USBHC_HCFMINTERVAL_FI_Msk (0x3fffUL) /*!< FI (Bitfield-Mask: 0x3fff) */ + #define R_USBHC_HCFMINTERVAL_FSMPS_Pos (16UL) /*!< FSMPS (Bit 16) */ + #define R_USBHC_HCFMINTERVAL_FSMPS_Msk (0x7fff0000UL) /*!< FSMPS (Bitfield-Mask: 0x7fff) */ + #define R_USBHC_HCFMINTERVAL_FIT_Pos (31UL) /*!< FIT (Bit 31) */ + #define R_USBHC_HCFMINTERVAL_FIT_Msk (0x80000000UL) /*!< FIT (Bitfield-Mask: 0x01) */ +/* ===================================================== HCFNREMAINING ===================================================== */ + #define R_USBHC_HCFNREMAINING_FR_Pos (0UL) /*!< FR (Bit 0) */ + #define R_USBHC_HCFNREMAINING_FR_Msk (0x3fffUL) /*!< FR (Bitfield-Mask: 0x3fff) */ + #define R_USBHC_HCFNREMAINING_FRT_Pos (31UL) /*!< FRT (Bit 31) */ + #define R_USBHC_HCFNREMAINING_FRT_Msk (0x80000000UL) /*!< FRT (Bitfield-Mask: 0x01) */ +/* ====================================================== HCFMNUMBER ======================================================= */ + #define R_USBHC_HCFMNUMBER_FN_Pos (0UL) /*!< FN (Bit 0) */ + #define R_USBHC_HCFMNUMBER_FN_Msk (0xffffUL) /*!< FN (Bitfield-Mask: 0xffff) */ +/* ===================================================== HCPERIODSTART ===================================================== */ + #define R_USBHC_HCPERIODSTART_PS_Pos (0UL) /*!< PS (Bit 0) */ + #define R_USBHC_HCPERIODSTART_PS_Msk (0x3fffUL) /*!< PS (Bitfield-Mask: 0x3fff) */ +/* ===================================================== HCLSTHRESHOLD ===================================================== */ + #define R_USBHC_HCLSTHRESHOLD_LS_Pos (0UL) /*!< LS (Bit 0) */ + #define R_USBHC_HCLSTHRESHOLD_LS_Msk (0xfffUL) /*!< LS (Bitfield-Mask: 0xfff) */ +/* ==================================================== HCRHDESCRIPTORA ==================================================== */ + #define R_USBHC_HCRHDESCRIPTORA_NDP_Pos (0UL) /*!< NDP (Bit 0) */ + #define R_USBHC_HCRHDESCRIPTORA_NDP_Msk (0xffUL) /*!< NDP (Bitfield-Mask: 0xff) */ + #define R_USBHC_HCRHDESCRIPTORA_PSM_Pos (8UL) /*!< PSM (Bit 8) */ + #define R_USBHC_HCRHDESCRIPTORA_PSM_Msk (0x100UL) /*!< PSM (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHDESCRIPTORA_NPS_Pos (9UL) /*!< NPS (Bit 9) */ + #define R_USBHC_HCRHDESCRIPTORA_NPS_Msk (0x200UL) /*!< NPS (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHDESCRIPTORA_DT_Pos (10UL) /*!< DT (Bit 10) */ + #define R_USBHC_HCRHDESCRIPTORA_DT_Msk (0x400UL) /*!< DT (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHDESCRIPTORA_OCPM_Pos (11UL) /*!< OCPM (Bit 11) */ + #define R_USBHC_HCRHDESCRIPTORA_OCPM_Msk (0x800UL) /*!< OCPM (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHDESCRIPTORA_NOCP_Pos (12UL) /*!< NOCP (Bit 12) */ + #define R_USBHC_HCRHDESCRIPTORA_NOCP_Msk (0x1000UL) /*!< NOCP (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHDESCRIPTORA_POTPGT_Pos (24UL) /*!< POTPGT (Bit 24) */ + #define R_USBHC_HCRHDESCRIPTORA_POTPGT_Msk (0xff000000UL) /*!< POTPGT (Bitfield-Mask: 0xff) */ +/* ==================================================== HCRHDESCRIPTORB ==================================================== */ + #define R_USBHC_HCRHDESCRIPTORB_DR_Pos (0UL) /*!< DR (Bit 0) */ + #define R_USBHC_HCRHDESCRIPTORB_DR_Msk (0xffffUL) /*!< DR (Bitfield-Mask: 0xffff) */ + #define R_USBHC_HCRHDESCRIPTORB_PPCM_Pos (16UL) /*!< PPCM (Bit 16) */ + #define R_USBHC_HCRHDESCRIPTORB_PPCM_Msk (0xffff0000UL) /*!< PPCM (Bitfield-Mask: 0xffff) */ +/* ====================================================== HCRHSTATUS ======================================================= */ + #define R_USBHC_HCRHSTATUS_LPS_Pos (0UL) /*!< LPS (Bit 0) */ + #define R_USBHC_HCRHSTATUS_LPS_Msk (0x1UL) /*!< LPS (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHSTATUS_OCI_Pos (1UL) /*!< OCI (Bit 1) */ + #define R_USBHC_HCRHSTATUS_OCI_Msk (0x2UL) /*!< OCI (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHSTATUS_DRWE_Pos (15UL) /*!< DRWE (Bit 15) */ + #define R_USBHC_HCRHSTATUS_DRWE_Msk (0x8000UL) /*!< DRWE (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHSTATUS_LPSC_Pos (16UL) /*!< LPSC (Bit 16) */ + #define R_USBHC_HCRHSTATUS_LPSC_Msk (0x10000UL) /*!< LPSC (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHSTATUS_OCIC_Pos (17UL) /*!< OCIC (Bit 17) */ + #define R_USBHC_HCRHSTATUS_OCIC_Msk (0x20000UL) /*!< OCIC (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHSTATUS_CRWE_Pos (31UL) /*!< CRWE (Bit 31) */ + #define R_USBHC_HCRHSTATUS_CRWE_Msk (0x80000000UL) /*!< CRWE (Bitfield-Mask: 0x01) */ +/* ==================================================== HCRHPORTSTATUS1 ==================================================== */ + #define R_USBHC_HCRHPORTSTATUS1_CCS_Pos (0UL) /*!< CCS (Bit 0) */ + #define R_USBHC_HCRHPORTSTATUS1_CCS_Msk (0x1UL) /*!< CCS (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHPORTSTATUS1_PES_Pos (1UL) /*!< PES (Bit 1) */ + #define R_USBHC_HCRHPORTSTATUS1_PES_Msk (0x2UL) /*!< PES (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHPORTSTATUS1_PSS_Pos (2UL) /*!< PSS (Bit 2) */ + #define R_USBHC_HCRHPORTSTATUS1_PSS_Msk (0x4UL) /*!< PSS (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHPORTSTATUS1_POCI_Pos (3UL) /*!< POCI (Bit 3) */ + #define R_USBHC_HCRHPORTSTATUS1_POCI_Msk (0x8UL) /*!< POCI (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHPORTSTATUS1_PRS_Pos (4UL) /*!< PRS (Bit 4) */ + #define R_USBHC_HCRHPORTSTATUS1_PRS_Msk (0x10UL) /*!< PRS (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHPORTSTATUS1_PPS_Pos (8UL) /*!< PPS (Bit 8) */ + #define R_USBHC_HCRHPORTSTATUS1_PPS_Msk (0x100UL) /*!< PPS (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHPORTSTATUS1_LSDA_Pos (9UL) /*!< LSDA (Bit 9) */ + #define R_USBHC_HCRHPORTSTATUS1_LSDA_Msk (0x200UL) /*!< LSDA (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHPORTSTATUS1_CSC_Pos (16UL) /*!< CSC (Bit 16) */ + #define R_USBHC_HCRHPORTSTATUS1_CSC_Msk (0x10000UL) /*!< CSC (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHPORTSTATUS1_PESC_Pos (17UL) /*!< PESC (Bit 17) */ + #define R_USBHC_HCRHPORTSTATUS1_PESC_Msk (0x20000UL) /*!< PESC (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHPORTSTATUS1_PSSC_Pos (18UL) /*!< PSSC (Bit 18) */ + #define R_USBHC_HCRHPORTSTATUS1_PSSC_Msk (0x40000UL) /*!< PSSC (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHPORTSTATUS1_OCIC_Pos (19UL) /*!< OCIC (Bit 19) */ + #define R_USBHC_HCRHPORTSTATUS1_OCIC_Msk (0x80000UL) /*!< OCIC (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCRHPORTSTATUS1_PRSC_Pos (20UL) /*!< PRSC (Bit 20) */ + #define R_USBHC_HCRHPORTSTATUS1_PRSC_Msk (0x100000UL) /*!< PRSC (Bitfield-Mask: 0x01) */ +/* ===================================================== CAPL_VERSION ====================================================== */ + #define R_USBHC_CAPL_VERSION_CRL_Pos (0UL) /*!< CRL (Bit 0) */ + #define R_USBHC_CAPL_VERSION_CRL_Msk (0xffUL) /*!< CRL (Bitfield-Mask: 0xff) */ + #define R_USBHC_CAPL_VERSION_HCIVN_Pos (16UL) /*!< HCIVN (Bit 16) */ + #define R_USBHC_CAPL_VERSION_HCIVN_Msk (0xffff0000UL) /*!< HCIVN (Bitfield-Mask: 0xffff) */ +/* ======================================================= HCSPARAMS ======================================================= */ + #define R_USBHC_HCSPARAMS_N_PORTS_Pos (0UL) /*!< N_PORTS (Bit 0) */ + #define R_USBHC_HCSPARAMS_N_PORTS_Msk (0xfUL) /*!< N_PORTS (Bitfield-Mask: 0x0f) */ + #define R_USBHC_HCSPARAMS_PPC_Pos (4UL) /*!< PPC (Bit 4) */ + #define R_USBHC_HCSPARAMS_PPC_Msk (0x10UL) /*!< PPC (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCSPARAMS_PTRR_Pos (7UL) /*!< PTRR (Bit 7) */ + #define R_USBHC_HCSPARAMS_PTRR_Msk (0x80UL) /*!< PTRR (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCSPARAMS_N_PCC_Pos (8UL) /*!< N_PCC (Bit 8) */ + #define R_USBHC_HCSPARAMS_N_PCC_Msk (0xf00UL) /*!< N_PCC (Bitfield-Mask: 0x0f) */ + #define R_USBHC_HCSPARAMS_N_CC_Pos (12UL) /*!< N_CC (Bit 12) */ + #define R_USBHC_HCSPARAMS_N_CC_Msk (0xf000UL) /*!< N_CC (Bitfield-Mask: 0x0f) */ + #define R_USBHC_HCSPARAMS_P_INDICATOR_Pos (16UL) /*!< P_INDICATOR (Bit 16) */ + #define R_USBHC_HCSPARAMS_P_INDICATOR_Msk (0x10000UL) /*!< P_INDICATOR (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCSPARAMS_DBGPTNUM_Pos (20UL) /*!< DBGPTNUM (Bit 20) */ + #define R_USBHC_HCSPARAMS_DBGPTNUM_Msk (0xf00000UL) /*!< DBGPTNUM (Bitfield-Mask: 0x0f) */ +/* ======================================================= HCCPARAMS ======================================================= */ + #define R_USBHC_HCCPARAMS_AC64_Pos (0UL) /*!< AC64 (Bit 0) */ + #define R_USBHC_HCCPARAMS_AC64_Msk (0x1UL) /*!< AC64 (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCCPARAMS_PFLF_Pos (1UL) /*!< PFLF (Bit 1) */ + #define R_USBHC_HCCPARAMS_PFLF_Msk (0x2UL) /*!< PFLF (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCCPARAMS_ASPC_Pos (2UL) /*!< ASPC (Bit 2) */ + #define R_USBHC_HCCPARAMS_ASPC_Msk (0x4UL) /*!< ASPC (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCCPARAMS_IST_Pos (4UL) /*!< IST (Bit 4) */ + #define R_USBHC_HCCPARAMS_IST_Msk (0xf0UL) /*!< IST (Bitfield-Mask: 0x0f) */ + #define R_USBHC_HCCPARAMS_EECP_Pos (8UL) /*!< EECP (Bit 8) */ + #define R_USBHC_HCCPARAMS_EECP_Msk (0xff00UL) /*!< EECP (Bitfield-Mask: 0xff) */ + #define R_USBHC_HCCPARAMS_HP_Pos (16UL) /*!< HP (Bit 16) */ + #define R_USBHC_HCCPARAMS_HP_Msk (0x10000UL) /*!< HP (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCCPARAMS_LPMC_Pos (17UL) /*!< LPMC (Bit 17) */ + #define R_USBHC_HCCPARAMS_LPMC_Msk (0x20000UL) /*!< LPMC (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCCPARAMS_PCEC_Pos (18UL) /*!< PCEC (Bit 18) */ + #define R_USBHC_HCCPARAMS_PCEC_Msk (0x40000UL) /*!< PCEC (Bitfield-Mask: 0x01) */ + #define R_USBHC_HCCPARAMS_PL32_Pos (19UL) /*!< PL32 (Bit 19) */ + #define R_USBHC_HCCPARAMS_PL32_Msk (0x80000UL) /*!< PL32 (Bitfield-Mask: 0x01) */ +/* ==================================================== HCSP_PORTROUTE ===================================================== */ +/* ======================================================== USBCMD ========================================================= */ + #define R_USBHC_USBCMD_RS_Pos (0UL) /*!< RS (Bit 0) */ + #define R_USBHC_USBCMD_RS_Msk (0x1UL) /*!< RS (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBCMD_HCRESET_Pos (1UL) /*!< HCRESET (Bit 1) */ + #define R_USBHC_USBCMD_HCRESET_Msk (0x2UL) /*!< HCRESET (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBCMD_FLS_Pos (2UL) /*!< FLS (Bit 2) */ + #define R_USBHC_USBCMD_FLS_Msk (0xcUL) /*!< FLS (Bitfield-Mask: 0x03) */ + #define R_USBHC_USBCMD_PSE_Pos (4UL) /*!< PSE (Bit 4) */ + #define R_USBHC_USBCMD_PSE_Msk (0x10UL) /*!< PSE (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBCMD_ASYNSE_Pos (5UL) /*!< ASYNSE (Bit 5) */ + #define R_USBHC_USBCMD_ASYNSE_Msk (0x20UL) /*!< ASYNSE (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBCMD_IAAD_Pos (6UL) /*!< IAAD (Bit 6) */ + #define R_USBHC_USBCMD_IAAD_Msk (0x40UL) /*!< IAAD (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBCMD_LHCR_Pos (7UL) /*!< LHCR (Bit 7) */ + #define R_USBHC_USBCMD_LHCR_Msk (0x80UL) /*!< LHCR (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBCMD_ASPMC_Pos (8UL) /*!< ASPMC (Bit 8) */ + #define R_USBHC_USBCMD_ASPMC_Msk (0x300UL) /*!< ASPMC (Bitfield-Mask: 0x03) */ + #define R_USBHC_USBCMD_ASPME_Pos (11UL) /*!< ASPME (Bit 11) */ + #define R_USBHC_USBCMD_ASPME_Msk (0x800UL) /*!< ASPME (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBCMD_PPCEE_Pos (15UL) /*!< PPCEE (Bit 15) */ + #define R_USBHC_USBCMD_PPCEE_Msk (0x8000UL) /*!< PPCEE (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBCMD_ITC_Pos (16UL) /*!< ITC (Bit 16) */ + #define R_USBHC_USBCMD_ITC_Msk (0xff0000UL) /*!< ITC (Bitfield-Mask: 0xff) */ + #define R_USBHC_USBCMD_HIRD_Pos (24UL) /*!< HIRD (Bit 24) */ + #define R_USBHC_USBCMD_HIRD_Msk (0xf000000UL) /*!< HIRD (Bitfield-Mask: 0x0f) */ +/* ======================================================== USBSTS ========================================================= */ + #define R_USBHC_USBSTS_USBINT_Pos (0UL) /*!< USBINT (Bit 0) */ + #define R_USBHC_USBSTS_USBINT_Msk (0x1UL) /*!< USBINT (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBSTS_USBERRINT_Pos (1UL) /*!< USBERRINT (Bit 1) */ + #define R_USBHC_USBSTS_USBERRINT_Msk (0x2UL) /*!< USBERRINT (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBSTS_PTCGDET_Pos (2UL) /*!< PTCGDET (Bit 2) */ + #define R_USBHC_USBSTS_PTCGDET_Msk (0x4UL) /*!< PTCGDET (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBSTS_FLROV_Pos (3UL) /*!< FLROV (Bit 3) */ + #define R_USBHC_USBSTS_FLROV_Msk (0x8UL) /*!< FLROV (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBSTS_HSYSE_Pos (4UL) /*!< HSYSE (Bit 4) */ + #define R_USBHC_USBSTS_HSYSE_Msk (0x10UL) /*!< HSYSE (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBSTS_IAAIS_Pos (5UL) /*!< IAAIS (Bit 5) */ + #define R_USBHC_USBSTS_IAAIS_Msk (0x20UL) /*!< IAAIS (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBSTS_EHCSTS_Pos (12UL) /*!< EHCSTS (Bit 12) */ + #define R_USBHC_USBSTS_EHCSTS_Msk (0x1000UL) /*!< EHCSTS (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBSTS_RECLAM_Pos (13UL) /*!< RECLAM (Bit 13) */ + #define R_USBHC_USBSTS_RECLAM_Msk (0x2000UL) /*!< RECLAM (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBSTS_PSCHSTS_Pos (14UL) /*!< PSCHSTS (Bit 14) */ + #define R_USBHC_USBSTS_PSCHSTS_Msk (0x4000UL) /*!< PSCHSTS (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBSTS_ASS_Pos (15UL) /*!< ASS (Bit 15) */ + #define R_USBHC_USBSTS_ASS_Msk (0x8000UL) /*!< ASS (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBSTS_PTCGDETC_Pos (16UL) /*!< PTCGDETC (Bit 16) */ + #define R_USBHC_USBSTS_PTCGDETC_Msk (0xffff0000UL) /*!< PTCGDETC (Bitfield-Mask: 0xffff) */ +/* ======================================================== USBINTR ======================================================== */ + #define R_USBHC_USBINTR_USBIE_Pos (0UL) /*!< USBIE (Bit 0) */ + #define R_USBHC_USBINTR_USBIE_Msk (0x1UL) /*!< USBIE (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBINTR_USBEIE_Pos (1UL) /*!< USBEIE (Bit 1) */ + #define R_USBHC_USBINTR_USBEIE_Msk (0x2UL) /*!< USBEIE (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBINTR_PTCGIE_Pos (2UL) /*!< PTCGIE (Bit 2) */ + #define R_USBHC_USBINTR_PTCGIE_Msk (0x4UL) /*!< PTCGIE (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBINTR_FMLSTROE_Pos (3UL) /*!< FMLSTROE (Bit 3) */ + #define R_USBHC_USBINTR_FMLSTROE_Msk (0x8UL) /*!< FMLSTROE (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBINTR_HSEE_Pos (4UL) /*!< HSEE (Bit 4) */ + #define R_USBHC_USBINTR_HSEE_Msk (0x10UL) /*!< HSEE (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBINTR_INTAADVE_Pos (5UL) /*!< INTAADVE (Bit 5) */ + #define R_USBHC_USBINTR_INTAADVE_Msk (0x20UL) /*!< INTAADVE (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBINTR_PCGIE_Pos (16UL) /*!< PCGIE (Bit 16) */ + #define R_USBHC_USBINTR_PCGIE_Msk (0xffff0000UL) /*!< PCGIE (Bitfield-Mask: 0xffff) */ +/* ======================================================== FRINDEX ======================================================== */ + #define R_USBHC_FRINDEX_FRAMEINDEX_Pos (0UL) /*!< FRAMEINDEX (Bit 0) */ + #define R_USBHC_FRINDEX_FRAMEINDEX_Msk (0x3fffUL) /*!< FRAMEINDEX (Bitfield-Mask: 0x3fff) */ +/* ===================================================== CTRLDSSEGMENT ===================================================== */ +/* =================================================== PERIODICLISTBASE ==================================================== */ + #define R_USBHC_PERIODICLISTBASE_PFLSA_Pos (12UL) /*!< PFLSA (Bit 12) */ + #define R_USBHC_PERIODICLISTBASE_PFLSA_Msk (0xfffff000UL) /*!< PFLSA (Bitfield-Mask: 0xfffff) */ +/* ===================================================== ASYNCLISTADDR ===================================================== */ + #define R_USBHC_ASYNCLISTADDR_LPL_Pos (5UL) /*!< LPL (Bit 5) */ + #define R_USBHC_ASYNCLISTADDR_LPL_Msk (0xffffffe0UL) /*!< LPL (Bitfield-Mask: 0x7ffffff) */ +/* ====================================================== CONFIGFLAG ======================================================= */ + #define R_USBHC_CONFIGFLAG_CF_Pos (0UL) /*!< CF (Bit 0) */ + #define R_USBHC_CONFIGFLAG_CF_Msk (0x1UL) /*!< CF (Bitfield-Mask: 0x01) */ +/* ======================================================== PORTSC1 ======================================================== */ + #define R_USBHC_PORTSC1_CCSTS_Pos (0UL) /*!< CCSTS (Bit 0) */ + #define R_USBHC_PORTSC1_CCSTS_Msk (0x1UL) /*!< CCSTS (Bitfield-Mask: 0x01) */ + #define R_USBHC_PORTSC1_CSC_Pos (1UL) /*!< CSC (Bit 1) */ + #define R_USBHC_PORTSC1_CSC_Msk (0x2UL) /*!< CSC (Bitfield-Mask: 0x01) */ + #define R_USBHC_PORTSC1_PTE_Pos (2UL) /*!< PTE (Bit 2) */ + #define R_USBHC_PORTSC1_PTE_Msk (0x4UL) /*!< PTE (Bitfield-Mask: 0x01) */ + #define R_USBHC_PORTSC1_PTESC_Pos (3UL) /*!< PTESC (Bit 3) */ + #define R_USBHC_PORTSC1_PTESC_Msk (0x8UL) /*!< PTESC (Bitfield-Mask: 0x01) */ + #define R_USBHC_PORTSC1_OVCACT_Pos (4UL) /*!< OVCACT (Bit 4) */ + #define R_USBHC_PORTSC1_OVCACT_Msk (0x10UL) /*!< OVCACT (Bitfield-Mask: 0x01) */ + #define R_USBHC_PORTSC1_OVCC_Pos (5UL) /*!< OVCC (Bit 5) */ + #define R_USBHC_PORTSC1_OVCC_Msk (0x20UL) /*!< OVCC (Bitfield-Mask: 0x01) */ + #define R_USBHC_PORTSC1_FRCPTRSM_Pos (6UL) /*!< FRCPTRSM (Bit 6) */ + #define R_USBHC_PORTSC1_FRCPTRSM_Msk (0x40UL) /*!< FRCPTRSM (Bitfield-Mask: 0x01) */ + #define R_USBHC_PORTSC1_SUSPEND_Pos (7UL) /*!< SUSPEND (Bit 7) */ + #define R_USBHC_PORTSC1_SUSPEND_Msk (0x80UL) /*!< SUSPEND (Bitfield-Mask: 0x01) */ + #define R_USBHC_PORTSC1_PTRST_Pos (8UL) /*!< PTRST (Bit 8) */ + #define R_USBHC_PORTSC1_PTRST_Msk (0x100UL) /*!< PTRST (Bitfield-Mask: 0x01) */ + #define R_USBHC_PORTSC1_LPMCTL_Pos (9UL) /*!< LPMCTL (Bit 9) */ + #define R_USBHC_PORTSC1_LPMCTL_Msk (0x200UL) /*!< LPMCTL (Bitfield-Mask: 0x01) */ + #define R_USBHC_PORTSC1_LINESTS_Pos (10UL) /*!< LINESTS (Bit 10) */ + #define R_USBHC_PORTSC1_LINESTS_Msk (0xc00UL) /*!< LINESTS (Bitfield-Mask: 0x03) */ + #define R_USBHC_PORTSC1_PP_Pos (12UL) /*!< PP (Bit 12) */ + #define R_USBHC_PORTSC1_PP_Msk (0x1000UL) /*!< PP (Bitfield-Mask: 0x01) */ + #define R_USBHC_PORTSC1_PTOWNR_Pos (13UL) /*!< PTOWNR (Bit 13) */ + #define R_USBHC_PORTSC1_PTOWNR_Msk (0x2000UL) /*!< PTOWNR (Bitfield-Mask: 0x01) */ + #define R_USBHC_PORTSC1_PTINDCTL_Pos (14UL) /*!< PTINDCTL (Bit 14) */ + #define R_USBHC_PORTSC1_PTINDCTL_Msk (0xc000UL) /*!< PTINDCTL (Bitfield-Mask: 0x03) */ + #define R_USBHC_PORTSC1_PTTST_Pos (16UL) /*!< PTTST (Bit 16) */ + #define R_USBHC_PORTSC1_PTTST_Msk (0xf0000UL) /*!< PTTST (Bitfield-Mask: 0x0f) */ + #define R_USBHC_PORTSC1_WKCNNT_E_Pos (20UL) /*!< WKCNNT_E (Bit 20) */ + #define R_USBHC_PORTSC1_WKCNNT_E_Msk (0x100000UL) /*!< WKCNNT_E (Bitfield-Mask: 0x01) */ + #define R_USBHC_PORTSC1_WKDSCNNT_E_Pos (21UL) /*!< WKDSCNNT_E (Bit 21) */ + #define R_USBHC_PORTSC1_WKDSCNNT_E_Msk (0x200000UL) /*!< WKDSCNNT_E (Bitfield-Mask: 0x01) */ + #define R_USBHC_PORTSC1_WKOC_E_Pos (22UL) /*!< WKOC_E (Bit 22) */ + #define R_USBHC_PORTSC1_WKOC_E_Msk (0x400000UL) /*!< WKOC_E (Bitfield-Mask: 0x01) */ + #define R_USBHC_PORTSC1_SUSPSTS_Pos (23UL) /*!< SUSPSTS (Bit 23) */ + #define R_USBHC_PORTSC1_SUSPSTS_Msk (0x1800000UL) /*!< SUSPSTS (Bitfield-Mask: 0x03) */ + #define R_USBHC_PORTSC1_DVADDR_Pos (25UL) /*!< DVADDR (Bit 25) */ + #define R_USBHC_PORTSC1_DVADDR_Msk (0xfe000000UL) /*!< DVADDR (Bitfield-Mask: 0x7f) */ +/* ======================================================= INTENABLE ======================================================= */ + #define R_USBHC_INTENABLE_AHB_INTEN_Pos (0UL) /*!< AHB_INTEN (Bit 0) */ + #define R_USBHC_INTENABLE_AHB_INTEN_Msk (0x1UL) /*!< AHB_INTEN (Bitfield-Mask: 0x01) */ + #define R_USBHC_INTENABLE_USBH_INTAEN_Pos (1UL) /*!< USBH_INTAEN (Bit 1) */ + #define R_USBHC_INTENABLE_USBH_INTAEN_Msk (0x2UL) /*!< USBH_INTAEN (Bitfield-Mask: 0x01) */ + #define R_USBHC_INTENABLE_USBH_INTBEN_Pos (2UL) /*!< USBH_INTBEN (Bit 2) */ + #define R_USBHC_INTENABLE_USBH_INTBEN_Msk (0x4UL) /*!< USBH_INTBEN (Bitfield-Mask: 0x01) */ + #define R_USBHC_INTENABLE_UCOM_INTEN_Pos (3UL) /*!< UCOM_INTEN (Bit 3) */ + #define R_USBHC_INTENABLE_UCOM_INTEN_Msk (0x8UL) /*!< UCOM_INTEN (Bitfield-Mask: 0x01) */ + #define R_USBHC_INTENABLE_WAKEON_INTEN_Pos (4UL) /*!< WAKEON_INTEN (Bit 4) */ + #define R_USBHC_INTENABLE_WAKEON_INTEN_Msk (0x10UL) /*!< WAKEON_INTEN (Bitfield-Mask: 0x01) */ +/* ======================================================= INTSTATUS ======================================================= */ + #define R_USBHC_INTSTATUS_AHB_INT_Pos (0UL) /*!< AHB_INT (Bit 0) */ + #define R_USBHC_INTSTATUS_AHB_INT_Msk (0x1UL) /*!< AHB_INT (Bitfield-Mask: 0x01) */ + #define R_USBHC_INTSTATUS_USBH_INTA_Pos (1UL) /*!< USBH_INTA (Bit 1) */ + #define R_USBHC_INTSTATUS_USBH_INTA_Msk (0x2UL) /*!< USBH_INTA (Bitfield-Mask: 0x01) */ + #define R_USBHC_INTSTATUS_USBH_INTB_Pos (2UL) /*!< USBH_INTB (Bit 2) */ + #define R_USBHC_INTSTATUS_USBH_INTB_Msk (0x4UL) /*!< USBH_INTB (Bitfield-Mask: 0x01) */ + #define R_USBHC_INTSTATUS_UCOM_INT_Pos (3UL) /*!< UCOM_INT (Bit 3) */ + #define R_USBHC_INTSTATUS_UCOM_INT_Msk (0x8UL) /*!< UCOM_INT (Bitfield-Mask: 0x01) */ + #define R_USBHC_INTSTATUS_WAKEON_INT_Pos (4UL) /*!< WAKEON_INT (Bit 4) */ + #define R_USBHC_INTSTATUS_WAKEON_INT_Msk (0x10UL) /*!< WAKEON_INT (Bitfield-Mask: 0x01) */ +/* ======================================================= AHBBUSCTR ======================================================= */ + #define R_USBHC_AHBBUSCTR_MAX_BURST_LEN_Pos (0UL) /*!< MAX_BURST_LEN (Bit 0) */ + #define R_USBHC_AHBBUSCTR_MAX_BURST_LEN_Msk (0x3UL) /*!< MAX_BURST_LEN (Bitfield-Mask: 0x03) */ + #define R_USBHC_AHBBUSCTR_ALIGN_ADDRESS_Pos (4UL) /*!< ALIGN_ADDRESS (Bit 4) */ + #define R_USBHC_AHBBUSCTR_ALIGN_ADDRESS_Msk (0x30UL) /*!< ALIGN_ADDRESS (Bitfield-Mask: 0x03) */ + #define R_USBHC_AHBBUSCTR_PROT_MODE_Pos (8UL) /*!< PROT_MODE (Bit 8) */ + #define R_USBHC_AHBBUSCTR_PROT_MODE_Msk (0x100UL) /*!< PROT_MODE (Bitfield-Mask: 0x01) */ + #define R_USBHC_AHBBUSCTR_PROT_TYPE_Pos (12UL) /*!< PROT_TYPE (Bit 12) */ + #define R_USBHC_AHBBUSCTR_PROT_TYPE_Msk (0xf000UL) /*!< PROT_TYPE (Bitfield-Mask: 0x0f) */ +/* ======================================================== USBCTR ========================================================= */ + #define R_USBHC_USBCTR_USBH_RST_Pos (0UL) /*!< USBH_RST (Bit 0) */ + #define R_USBHC_USBCTR_USBH_RST_Msk (0x1UL) /*!< USBH_RST (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBCTR_PLL_RST_Pos (1UL) /*!< PLL_RST (Bit 1) */ + #define R_USBHC_USBCTR_PLL_RST_Msk (0x2UL) /*!< PLL_RST (Bitfield-Mask: 0x01) */ + #define R_USBHC_USBCTR_DIRPD_Pos (2UL) /*!< DIRPD (Bit 2) */ + #define R_USBHC_USBCTR_DIRPD_Msk (0x4UL) /*!< DIRPD (Bitfield-Mask: 0x01) */ +/* ========================================================= REVID ========================================================= */ + #define R_USBHC_REVID_MINV_Pos (0UL) /*!< MINV (Bit 0) */ + #define R_USBHC_REVID_MINV_Msk (0xffUL) /*!< MINV (Bitfield-Mask: 0xff) */ + #define R_USBHC_REVID_MAJV_Pos (8UL) /*!< MAJV (Bit 8) */ + #define R_USBHC_REVID_MAJV_Msk (0xff00UL) /*!< MAJV (Bitfield-Mask: 0xff) */ + #define R_USBHC_REVID_COREID_Pos (24UL) /*!< COREID (Bit 24) */ + #define R_USBHC_REVID_COREID_Msk (0xff000000UL) /*!< COREID (Bitfield-Mask: 0xff) */ +/* ====================================================== OCSLPTIMSET ====================================================== */ + #define R_USBHC_OCSLPTIMSET_TIMER_OC_Pos (0UL) /*!< TIMER_OC (Bit 0) */ + #define R_USBHC_OCSLPTIMSET_TIMER_OC_Msk (0xfffffUL) /*!< TIMER_OC (Bitfield-Mask: 0xfffff) */ + #define R_USBHC_OCSLPTIMSET_TIMER_SLEEP_Pos (20UL) /*!< TIMER_SLEEP (Bit 20) */ + #define R_USBHC_OCSLPTIMSET_TIMER_SLEEP_Msk (0x1ff00000UL) /*!< TIMER_SLEEP (Bitfield-Mask: 0x1ff) */ +/* ======================================================= COMMCTRL ======================================================== */ + #define R_USBHC_COMMCTRL_PERI_Pos (31UL) /*!< PERI (Bit 31) */ + #define R_USBHC_COMMCTRL_PERI_Msk (0x80000000UL) /*!< PERI (Bitfield-Mask: 0x01) */ +/* ======================================================= OBINTSTA ======================================================== */ + #define R_USBHC_OBINTSTA_IDCHG_STA_Pos (0UL) /*!< IDCHG_STA (Bit 0) */ + #define R_USBHC_OBINTSTA_IDCHG_STA_Msk (0x1UL) /*!< IDCHG_STA (Bitfield-Mask: 0x01) */ + #define R_USBHC_OBINTSTA_OCINT_STA_Pos (1UL) /*!< OCINT_STA (Bit 1) */ + #define R_USBHC_OBINTSTA_OCINT_STA_Msk (0x2UL) /*!< OCINT_STA (Bitfield-Mask: 0x01) */ + #define R_USBHC_OBINTSTA_VBSTACHG_STA_Pos (2UL) /*!< VBSTACHG_STA (Bit 2) */ + #define R_USBHC_OBINTSTA_VBSTACHG_STA_Msk (0x4UL) /*!< VBSTACHG_STA (Bitfield-Mask: 0x01) */ + #define R_USBHC_OBINTSTA_VBSTAINT_STA_Pos (3UL) /*!< VBSTAINT_STA (Bit 3) */ + #define R_USBHC_OBINTSTA_VBSTAINT_STA_Msk (0x8UL) /*!< VBSTAINT_STA (Bitfield-Mask: 0x01) */ + #define R_USBHC_OBINTSTA_DMMONCHG_STA_Pos (16UL) /*!< DMMONCHG_STA (Bit 16) */ + #define R_USBHC_OBINTSTA_DMMONCHG_STA_Msk (0x10000UL) /*!< DMMONCHG_STA (Bitfield-Mask: 0x01) */ + #define R_USBHC_OBINTSTA_DPMONCHG_STA_Pos (17UL) /*!< DPMONCHG_STA (Bit 17) */ + #define R_USBHC_OBINTSTA_DPMONCHG_STA_Msk (0x20000UL) /*!< DPMONCHG_STA (Bitfield-Mask: 0x01) */ +/* ======================================================== OBINTEN ======================================================== */ + #define R_USBHC_OBINTEN_IDCHG_EN_Pos (0UL) /*!< IDCHG_EN (Bit 0) */ + #define R_USBHC_OBINTEN_IDCHG_EN_Msk (0x1UL) /*!< IDCHG_EN (Bitfield-Mask: 0x01) */ + #define R_USBHC_OBINTEN_OCINT_EN_Pos (1UL) /*!< OCINT_EN (Bit 1) */ + #define R_USBHC_OBINTEN_OCINT_EN_Msk (0x2UL) /*!< OCINT_EN (Bitfield-Mask: 0x01) */ + #define R_USBHC_OBINTEN_VBSTACHG_EN_Pos (2UL) /*!< VBSTACHG_EN (Bit 2) */ + #define R_USBHC_OBINTEN_VBSTACHG_EN_Msk (0x4UL) /*!< VBSTACHG_EN (Bitfield-Mask: 0x01) */ + #define R_USBHC_OBINTEN_VBSTAINT_EN_Pos (3UL) /*!< VBSTAINT_EN (Bit 3) */ + #define R_USBHC_OBINTEN_VBSTAINT_EN_Msk (0x8UL) /*!< VBSTAINT_EN (Bitfield-Mask: 0x01) */ + #define R_USBHC_OBINTEN_DMMONCHG_EN_Pos (16UL) /*!< DMMONCHG_EN (Bit 16) */ + #define R_USBHC_OBINTEN_DMMONCHG_EN_Msk (0x10000UL) /*!< DMMONCHG_EN (Bitfield-Mask: 0x01) */ + #define R_USBHC_OBINTEN_DPMONCHG_EN_Pos (17UL) /*!< DPMONCHG_EN (Bit 17) */ + #define R_USBHC_OBINTEN_DPMONCHG_EN_Msk (0x20000UL) /*!< DPMONCHG_EN (Bitfield-Mask: 0x01) */ +/* ======================================================== VBCTRL ========================================================= */ + #define R_USBHC_VBCTRL_VBOUT_Pos (0UL) /*!< VBOUT (Bit 0) */ + #define R_USBHC_VBCTRL_VBOUT_Msk (0x1UL) /*!< VBOUT (Bitfield-Mask: 0x01) */ + #define R_USBHC_VBCTRL_VBUSENSEL_Pos (1UL) /*!< VBUSENSEL (Bit 1) */ + #define R_USBHC_VBCTRL_VBUSENSEL_Msk (0x2UL) /*!< VBUSENSEL (Bitfield-Mask: 0x01) */ + #define R_USBHC_VBCTRL_VGPUO_Pos (4UL) /*!< VGPUO (Bit 4) */ + #define R_USBHC_VBCTRL_VGPUO_Msk (0x10UL) /*!< VGPUO (Bitfield-Mask: 0x01) */ + #define R_USBHC_VBCTRL_OCCLRIEN_Pos (16UL) /*!< OCCLRIEN (Bit 16) */ + #define R_USBHC_VBCTRL_OCCLRIEN_Msk (0x10000UL) /*!< OCCLRIEN (Bitfield-Mask: 0x01) */ + #define R_USBHC_VBCTRL_OCISEL_Pos (17UL) /*!< OCISEL (Bit 17) */ + #define R_USBHC_VBCTRL_OCISEL_Msk (0x20000UL) /*!< OCISEL (Bitfield-Mask: 0x01) */ + #define R_USBHC_VBCTRL_VBLVL_Pos (20UL) /*!< VBLVL (Bit 20) */ + #define R_USBHC_VBCTRL_VBLVL_Msk (0xf00000UL) /*!< VBLVL (Bitfield-Mask: 0x0f) */ + #define R_USBHC_VBCTRL_VBSTA_Pos (28UL) /*!< VBSTA (Bit 28) */ + #define R_USBHC_VBCTRL_VBSTA_Msk (0xf0000000UL) /*!< VBSTA (Bitfield-Mask: 0x0f) */ +/* ======================================================= LINECTRL1 ======================================================= */ + #define R_USBHC_LINECTRL1_IDMON_Pos (0UL) /*!< IDMON (Bit 0) */ + #define R_USBHC_LINECTRL1_IDMON_Msk (0x1UL) /*!< IDMON (Bitfield-Mask: 0x01) */ + #define R_USBHC_LINECTRL1_DMMON_Pos (2UL) /*!< DMMON (Bit 2) */ + #define R_USBHC_LINECTRL1_DMMON_Msk (0x4UL) /*!< DMMON (Bitfield-Mask: 0x01) */ + #define R_USBHC_LINECTRL1_DPMON_Pos (3UL) /*!< DPMON (Bit 3) */ + #define R_USBHC_LINECTRL1_DPMON_Msk (0x8UL) /*!< DPMON (Bitfield-Mask: 0x01) */ + #define R_USBHC_LINECTRL1_DM_RPD_Pos (16UL) /*!< DM_RPD (Bit 16) */ + #define R_USBHC_LINECTRL1_DM_RPD_Msk (0x10000UL) /*!< DM_RPD (Bitfield-Mask: 0x01) */ + #define R_USBHC_LINECTRL1_DMRPD_EN_Pos (17UL) /*!< DMRPD_EN (Bit 17) */ + #define R_USBHC_LINECTRL1_DMRPD_EN_Msk (0x20000UL) /*!< DMRPD_EN (Bitfield-Mask: 0x01) */ + #define R_USBHC_LINECTRL1_DP_RPD_Pos (18UL) /*!< DP_RPD (Bit 18) */ + #define R_USBHC_LINECTRL1_DP_RPD_Msk (0x40000UL) /*!< DP_RPD (Bitfield-Mask: 0x01) */ + #define R_USBHC_LINECTRL1_DPRPD_EN_Pos (19UL) /*!< DPRPD_EN (Bit 19) */ + #define R_USBHC_LINECTRL1_DPRPD_EN_Msk (0x80000UL) /*!< DPRPD_EN (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_USBF ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== SYSCFG0 ======================================================== */ + #define R_USBF_SYSCFG0_USBE_Pos (0UL) /*!< USBE (Bit 0) */ + #define R_USBF_SYSCFG0_USBE_Msk (0x1UL) /*!< USBE (Bitfield-Mask: 0x01) */ + #define R_USBF_SYSCFG0_DPRPU_Pos (4UL) /*!< DPRPU (Bit 4) */ + #define R_USBF_SYSCFG0_DPRPU_Msk (0x10UL) /*!< DPRPU (Bitfield-Mask: 0x01) */ + #define R_USBF_SYSCFG0_DRPD_Pos (5UL) /*!< DRPD (Bit 5) */ + #define R_USBF_SYSCFG0_DRPD_Msk (0x20UL) /*!< DRPD (Bitfield-Mask: 0x01) */ + #define R_USBF_SYSCFG0_HSE_Pos (7UL) /*!< HSE (Bit 7) */ + #define R_USBF_SYSCFG0_HSE_Msk (0x80UL) /*!< HSE (Bitfield-Mask: 0x01) */ + #define R_USBF_SYSCFG0_CNEN_Pos (8UL) /*!< CNEN (Bit 8) */ + #define R_USBF_SYSCFG0_CNEN_Msk (0x100UL) /*!< CNEN (Bitfield-Mask: 0x01) */ +/* ======================================================== SYSCFG1 ======================================================== */ + #define R_USBF_SYSCFG1_BWAIT_Pos (0UL) /*!< BWAIT (Bit 0) */ + #define R_USBF_SYSCFG1_BWAIT_Msk (0x3fUL) /*!< BWAIT (Bitfield-Mask: 0x3f) */ + #define R_USBF_SYSCFG1_AWAIT_Pos (8UL) /*!< AWAIT (Bit 8) */ + #define R_USBF_SYSCFG1_AWAIT_Msk (0x3f00UL) /*!< AWAIT (Bitfield-Mask: 0x3f) */ +/* ======================================================== SYSSTS0 ======================================================== */ + #define R_USBF_SYSSTS0_LNST_Pos (0UL) /*!< LNST (Bit 0) */ + #define R_USBF_SYSSTS0_LNST_Msk (0x3UL) /*!< LNST (Bitfield-Mask: 0x03) */ +/* ======================================================= DVSTCTR0 ======================================================== */ + #define R_USBF_DVSTCTR0_RHST_Pos (0UL) /*!< RHST (Bit 0) */ + #define R_USBF_DVSTCTR0_RHST_Msk (0x7UL) /*!< RHST (Bitfield-Mask: 0x07) */ + #define R_USBF_DVSTCTR0_WKUP_Pos (8UL) /*!< WKUP (Bit 8) */ + #define R_USBF_DVSTCTR0_WKUP_Msk (0x100UL) /*!< WKUP (Bitfield-Mask: 0x01) */ +/* ======================================================= TESTMODE ======================================================== */ + #define R_USBF_TESTMODE_UTST_Pos (0UL) /*!< UTST (Bit 0) */ + #define R_USBF_TESTMODE_UTST_Msk (0xfUL) /*!< UTST (Bitfield-Mask: 0x0f) */ +/* ========================================================= CFIFO ========================================================= */ + #define R_USBF_CFIFO_FIFOPORT_Pos (0UL) /*!< FIFOPORT (Bit 0) */ + #define R_USBF_CFIFO_FIFOPORT_Msk (0xffffffffUL) /*!< FIFOPORT (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CFIFOL ========================================================= */ +/* ======================================================== CFIFOLL ======================================================== */ +/* ======================================================== CFIFOH ========================================================= */ + #define R_USBF_CFIFOH_FIFOPORT_Pos (0UL) /*!< FIFOPORT (Bit 0) */ + #define R_USBF_CFIFOH_FIFOPORT_Msk (0xffffUL) /*!< FIFOPORT (Bitfield-Mask: 0xffff) */ +/* ======================================================== CFIFOHH ======================================================== */ + #define R_USBF_CFIFOHH_FIFOPORT_Pos (0UL) /*!< FIFOPORT (Bit 0) */ + #define R_USBF_CFIFOHH_FIFOPORT_Msk (0xffUL) /*!< FIFOPORT (Bitfield-Mask: 0xff) */ +/* ======================================================== D0FIFO ========================================================= */ + #define R_USBF_D0FIFO_FIFOPORT_Pos (0UL) /*!< FIFOPORT (Bit 0) */ + #define R_USBF_D0FIFO_FIFOPORT_Msk (0xffffffffUL) /*!< FIFOPORT (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== D0FIFOL ======================================================== */ +/* ======================================================= D0FIFOLL ======================================================== */ +/* ======================================================== D0FIFOH ======================================================== */ + #define R_USBF_D0FIFOH_FIFOPORT_Pos (0UL) /*!< FIFOPORT (Bit 0) */ + #define R_USBF_D0FIFOH_FIFOPORT_Msk (0xffffUL) /*!< FIFOPORT (Bitfield-Mask: 0xffff) */ +/* ======================================================= D0FIFOHH ======================================================== */ + #define R_USBF_D0FIFOHH_FIFOPORT_Pos (0UL) /*!< FIFOPORT (Bit 0) */ + #define R_USBF_D0FIFOHH_FIFOPORT_Msk (0xffUL) /*!< FIFOPORT (Bitfield-Mask: 0xff) */ +/* ======================================================== D1FIFO ========================================================= */ + #define R_USBF_D1FIFO_FIFOPORT_Pos (0UL) /*!< FIFOPORT (Bit 0) */ + #define R_USBF_D1FIFO_FIFOPORT_Msk (0xffffffffUL) /*!< FIFOPORT (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== D1FIFOL ======================================================== */ +/* ======================================================= D1FIFOLL ======================================================== */ +/* ======================================================== D1FIFOH ======================================================== */ + #define R_USBF_D1FIFOH_FIFOPORT_Pos (0UL) /*!< FIFOPORT (Bit 0) */ + #define R_USBF_D1FIFOH_FIFOPORT_Msk (0xffffUL) /*!< FIFOPORT (Bitfield-Mask: 0xffff) */ +/* ======================================================= D1FIFOHH ======================================================== */ + #define R_USBF_D1FIFOHH_FIFOPORT_Pos (0UL) /*!< FIFOPORT (Bit 0) */ + #define R_USBF_D1FIFOHH_FIFOPORT_Msk (0xffUL) /*!< FIFOPORT (Bitfield-Mask: 0xff) */ +/* ======================================================= CFIFOSEL ======================================================== */ + #define R_USBF_CFIFOSEL_CURPIPE_Pos (0UL) /*!< CURPIPE (Bit 0) */ + #define R_USBF_CFIFOSEL_CURPIPE_Msk (0xfUL) /*!< CURPIPE (Bitfield-Mask: 0x0f) */ + #define R_USBF_CFIFOSEL_ISEL_Pos (5UL) /*!< ISEL (Bit 5) */ + #define R_USBF_CFIFOSEL_ISEL_Msk (0x20UL) /*!< ISEL (Bitfield-Mask: 0x01) */ + #define R_USBF_CFIFOSEL_BIGEND_Pos (8UL) /*!< BIGEND (Bit 8) */ + #define R_USBF_CFIFOSEL_BIGEND_Msk (0x100UL) /*!< BIGEND (Bitfield-Mask: 0x01) */ + #define R_USBF_CFIFOSEL_MBW_Pos (10UL) /*!< MBW (Bit 10) */ + #define R_USBF_CFIFOSEL_MBW_Msk (0xc00UL) /*!< MBW (Bitfield-Mask: 0x03) */ + #define R_USBF_CFIFOSEL_REW_Pos (14UL) /*!< REW (Bit 14) */ + #define R_USBF_CFIFOSEL_REW_Msk (0x4000UL) /*!< REW (Bitfield-Mask: 0x01) */ + #define R_USBF_CFIFOSEL_RCNT_Pos (15UL) /*!< RCNT (Bit 15) */ + #define R_USBF_CFIFOSEL_RCNT_Msk (0x8000UL) /*!< RCNT (Bitfield-Mask: 0x01) */ +/* ======================================================= CFIFOCTR ======================================================== */ + #define R_USBF_CFIFOCTR_DTLN_Pos (0UL) /*!< DTLN (Bit 0) */ + #define R_USBF_CFIFOCTR_DTLN_Msk (0xfffUL) /*!< DTLN (Bitfield-Mask: 0xfff) */ + #define R_USBF_CFIFOCTR_FRDY_Pos (13UL) /*!< FRDY (Bit 13) */ + #define R_USBF_CFIFOCTR_FRDY_Msk (0x2000UL) /*!< FRDY (Bitfield-Mask: 0x01) */ + #define R_USBF_CFIFOCTR_BCLR_Pos (14UL) /*!< BCLR (Bit 14) */ + #define R_USBF_CFIFOCTR_BCLR_Msk (0x4000UL) /*!< BCLR (Bitfield-Mask: 0x01) */ + #define R_USBF_CFIFOCTR_BVAL_Pos (15UL) /*!< BVAL (Bit 15) */ + #define R_USBF_CFIFOCTR_BVAL_Msk (0x8000UL) /*!< BVAL (Bitfield-Mask: 0x01) */ +/* ======================================================= D0FIFOSEL ======================================================= */ + #define R_USBF_D0FIFOSEL_CURPIPE_Pos (0UL) /*!< CURPIPE (Bit 0) */ + #define R_USBF_D0FIFOSEL_CURPIPE_Msk (0xfUL) /*!< CURPIPE (Bitfield-Mask: 0x0f) */ + #define R_USBF_D0FIFOSEL_BIGEND_Pos (8UL) /*!< BIGEND (Bit 8) */ + #define R_USBF_D0FIFOSEL_BIGEND_Msk (0x100UL) /*!< BIGEND (Bitfield-Mask: 0x01) */ + #define R_USBF_D0FIFOSEL_MBW_Pos (10UL) /*!< MBW (Bit 10) */ + #define R_USBF_D0FIFOSEL_MBW_Msk (0xc00UL) /*!< MBW (Bitfield-Mask: 0x03) */ + #define R_USBF_D0FIFOSEL_DREQE_Pos (12UL) /*!< DREQE (Bit 12) */ + #define R_USBF_D0FIFOSEL_DREQE_Msk (0x1000UL) /*!< DREQE (Bitfield-Mask: 0x01) */ + #define R_USBF_D0FIFOSEL_DCLRM_Pos (13UL) /*!< DCLRM (Bit 13) */ + #define R_USBF_D0FIFOSEL_DCLRM_Msk (0x2000UL) /*!< DCLRM (Bitfield-Mask: 0x01) */ + #define R_USBF_D0FIFOSEL_REW_Pos (14UL) /*!< REW (Bit 14) */ + #define R_USBF_D0FIFOSEL_REW_Msk (0x4000UL) /*!< REW (Bitfield-Mask: 0x01) */ + #define R_USBF_D0FIFOSEL_RCNT_Pos (15UL) /*!< RCNT (Bit 15) */ + #define R_USBF_D0FIFOSEL_RCNT_Msk (0x8000UL) /*!< RCNT (Bitfield-Mask: 0x01) */ +/* ======================================================= D1FIFOSEL ======================================================= */ + #define R_USBF_D1FIFOSEL_CURPIPE_Pos (0UL) /*!< CURPIPE (Bit 0) */ + #define R_USBF_D1FIFOSEL_CURPIPE_Msk (0xfUL) /*!< CURPIPE (Bitfield-Mask: 0x0f) */ + #define R_USBF_D1FIFOSEL_BIGEND_Pos (8UL) /*!< BIGEND (Bit 8) */ + #define R_USBF_D1FIFOSEL_BIGEND_Msk (0x100UL) /*!< BIGEND (Bitfield-Mask: 0x01) */ + #define R_USBF_D1FIFOSEL_MBW_Pos (10UL) /*!< MBW (Bit 10) */ + #define R_USBF_D1FIFOSEL_MBW_Msk (0xc00UL) /*!< MBW (Bitfield-Mask: 0x03) */ + #define R_USBF_D1FIFOSEL_DREQE_Pos (12UL) /*!< DREQE (Bit 12) */ + #define R_USBF_D1FIFOSEL_DREQE_Msk (0x1000UL) /*!< DREQE (Bitfield-Mask: 0x01) */ + #define R_USBF_D1FIFOSEL_DCLRM_Pos (13UL) /*!< DCLRM (Bit 13) */ + #define R_USBF_D1FIFOSEL_DCLRM_Msk (0x2000UL) /*!< DCLRM (Bitfield-Mask: 0x01) */ + #define R_USBF_D1FIFOSEL_REW_Pos (14UL) /*!< REW (Bit 14) */ + #define R_USBF_D1FIFOSEL_REW_Msk (0x4000UL) /*!< REW (Bitfield-Mask: 0x01) */ + #define R_USBF_D1FIFOSEL_RCNT_Pos (15UL) /*!< RCNT (Bit 15) */ + #define R_USBF_D1FIFOSEL_RCNT_Msk (0x8000UL) /*!< RCNT (Bitfield-Mask: 0x01) */ +/* ======================================================= D0FIFOCTR ======================================================= */ + #define R_USBF_D0FIFOCTR_DTLN_Pos (0UL) /*!< DTLN (Bit 0) */ + #define R_USBF_D0FIFOCTR_DTLN_Msk (0xfffUL) /*!< DTLN (Bitfield-Mask: 0xfff) */ + #define R_USBF_D0FIFOCTR_FRDY_Pos (13UL) /*!< FRDY (Bit 13) */ + #define R_USBF_D0FIFOCTR_FRDY_Msk (0x2000UL) /*!< FRDY (Bitfield-Mask: 0x01) */ + #define R_USBF_D0FIFOCTR_BCLR_Pos (14UL) /*!< BCLR (Bit 14) */ + #define R_USBF_D0FIFOCTR_BCLR_Msk (0x4000UL) /*!< BCLR (Bitfield-Mask: 0x01) */ + #define R_USBF_D0FIFOCTR_BVAL_Pos (15UL) /*!< BVAL (Bit 15) */ + #define R_USBF_D0FIFOCTR_BVAL_Msk (0x8000UL) /*!< BVAL (Bitfield-Mask: 0x01) */ +/* ======================================================= D1FIFOCTR ======================================================= */ + #define R_USBF_D1FIFOCTR_DTLN_Pos (0UL) /*!< DTLN (Bit 0) */ + #define R_USBF_D1FIFOCTR_DTLN_Msk (0xfffUL) /*!< DTLN (Bitfield-Mask: 0xfff) */ + #define R_USBF_D1FIFOCTR_FRDY_Pos (13UL) /*!< FRDY (Bit 13) */ + #define R_USBF_D1FIFOCTR_FRDY_Msk (0x2000UL) /*!< FRDY (Bitfield-Mask: 0x01) */ + #define R_USBF_D1FIFOCTR_BCLR_Pos (14UL) /*!< BCLR (Bit 14) */ + #define R_USBF_D1FIFOCTR_BCLR_Msk (0x4000UL) /*!< BCLR (Bitfield-Mask: 0x01) */ + #define R_USBF_D1FIFOCTR_BVAL_Pos (15UL) /*!< BVAL (Bit 15) */ + #define R_USBF_D1FIFOCTR_BVAL_Msk (0x8000UL) /*!< BVAL (Bitfield-Mask: 0x01) */ +/* ======================================================== INTENB0 ======================================================== */ + #define R_USBF_INTENB0_BRDYE_Pos (8UL) /*!< BRDYE (Bit 8) */ + #define R_USBF_INTENB0_BRDYE_Msk (0x100UL) /*!< BRDYE (Bitfield-Mask: 0x01) */ + #define R_USBF_INTENB0_NRDYE_Pos (9UL) /*!< NRDYE (Bit 9) */ + #define R_USBF_INTENB0_NRDYE_Msk (0x200UL) /*!< NRDYE (Bitfield-Mask: 0x01) */ + #define R_USBF_INTENB0_BEMPE_Pos (10UL) /*!< BEMPE (Bit 10) */ + #define R_USBF_INTENB0_BEMPE_Msk (0x400UL) /*!< BEMPE (Bitfield-Mask: 0x01) */ + #define R_USBF_INTENB0_CTRE_Pos (11UL) /*!< CTRE (Bit 11) */ + #define R_USBF_INTENB0_CTRE_Msk (0x800UL) /*!< CTRE (Bitfield-Mask: 0x01) */ + #define R_USBF_INTENB0_DVSE_Pos (12UL) /*!< DVSE (Bit 12) */ + #define R_USBF_INTENB0_DVSE_Msk (0x1000UL) /*!< DVSE (Bitfield-Mask: 0x01) */ + #define R_USBF_INTENB0_SOFE_Pos (13UL) /*!< SOFE (Bit 13) */ + #define R_USBF_INTENB0_SOFE_Msk (0x2000UL) /*!< SOFE (Bitfield-Mask: 0x01) */ + #define R_USBF_INTENB0_RSME_Pos (14UL) /*!< RSME (Bit 14) */ + #define R_USBF_INTENB0_RSME_Msk (0x4000UL) /*!< RSME (Bitfield-Mask: 0x01) */ + #define R_USBF_INTENB0_VBSE_Pos (15UL) /*!< VBSE (Bit 15) */ + #define R_USBF_INTENB0_VBSE_Msk (0x8000UL) /*!< VBSE (Bitfield-Mask: 0x01) */ +/* ======================================================== INTENB1 ======================================================== */ + #define R_USBF_INTENB1_PDDETINTE_Pos (0UL) /*!< PDDETINTE (Bit 0) */ + #define R_USBF_INTENB1_PDDETINTE_Msk (0x1UL) /*!< PDDETINTE (Bitfield-Mask: 0x01) */ +/* ======================================================== BRDYENB ======================================================== */ + #define R_USBF_BRDYENB_PIPEBRDYE_Pos (0UL) /*!< PIPEBRDYE (Bit 0) */ + #define R_USBF_BRDYENB_PIPEBRDYE_Msk (0x3ffUL) /*!< PIPEBRDYE (Bitfield-Mask: 0x3ff) */ +/* ======================================================== NRDYENB ======================================================== */ + #define R_USBF_NRDYENB_PIPENRDYE_Pos (0UL) /*!< PIPENRDYE (Bit 0) */ + #define R_USBF_NRDYENB_PIPENRDYE_Msk (0x3ffUL) /*!< PIPENRDYE (Bitfield-Mask: 0x3ff) */ +/* ======================================================== BEMPENB ======================================================== */ + #define R_USBF_BEMPENB_PIPEBEMPE_Pos (0UL) /*!< PIPEBEMPE (Bit 0) */ + #define R_USBF_BEMPENB_PIPEBEMPE_Msk (0x3ffUL) /*!< PIPEBEMPE (Bitfield-Mask: 0x3ff) */ +/* ======================================================== SOFCFG ========================================================= */ + #define R_USBF_SOFCFG_EDGESTS_Pos (4UL) /*!< EDGESTS (Bit 4) */ + #define R_USBF_SOFCFG_EDGESTS_Msk (0x10UL) /*!< EDGESTS (Bitfield-Mask: 0x01) */ + #define R_USBF_SOFCFG_INTL_Pos (5UL) /*!< INTL (Bit 5) */ + #define R_USBF_SOFCFG_INTL_Msk (0x20UL) /*!< INTL (Bitfield-Mask: 0x01) */ + #define R_USBF_SOFCFG_BRDYM_Pos (6UL) /*!< BRDYM (Bit 6) */ + #define R_USBF_SOFCFG_BRDYM_Msk (0x40UL) /*!< BRDYM (Bitfield-Mask: 0x01) */ +/* ======================================================== INTSTS0 ======================================================== */ + #define R_USBF_INTSTS0_CTSQ_Pos (0UL) /*!< CTSQ (Bit 0) */ + #define R_USBF_INTSTS0_CTSQ_Msk (0x7UL) /*!< CTSQ (Bitfield-Mask: 0x07) */ + #define R_USBF_INTSTS0_VALID_Pos (3UL) /*!< VALID (Bit 3) */ + #define R_USBF_INTSTS0_VALID_Msk (0x8UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_USBF_INTSTS0_DVSQ_Pos (4UL) /*!< DVSQ (Bit 4) */ + #define R_USBF_INTSTS0_DVSQ_Msk (0x70UL) /*!< DVSQ (Bitfield-Mask: 0x07) */ + #define R_USBF_INTSTS0_VBSTS_Pos (7UL) /*!< VBSTS (Bit 7) */ + #define R_USBF_INTSTS0_VBSTS_Msk (0x80UL) /*!< VBSTS (Bitfield-Mask: 0x01) */ + #define R_USBF_INTSTS0_BRDY_Pos (8UL) /*!< BRDY (Bit 8) */ + #define R_USBF_INTSTS0_BRDY_Msk (0x100UL) /*!< BRDY (Bitfield-Mask: 0x01) */ + #define R_USBF_INTSTS0_NRDY_Pos (9UL) /*!< NRDY (Bit 9) */ + #define R_USBF_INTSTS0_NRDY_Msk (0x200UL) /*!< NRDY (Bitfield-Mask: 0x01) */ + #define R_USBF_INTSTS0_BEMP_Pos (10UL) /*!< BEMP (Bit 10) */ + #define R_USBF_INTSTS0_BEMP_Msk (0x400UL) /*!< BEMP (Bitfield-Mask: 0x01) */ + #define R_USBF_INTSTS0_CTRT_Pos (11UL) /*!< CTRT (Bit 11) */ + #define R_USBF_INTSTS0_CTRT_Msk (0x800UL) /*!< CTRT (Bitfield-Mask: 0x01) */ + #define R_USBF_INTSTS0_DVST_Pos (12UL) /*!< DVST (Bit 12) */ + #define R_USBF_INTSTS0_DVST_Msk (0x1000UL) /*!< DVST (Bitfield-Mask: 0x01) */ + #define R_USBF_INTSTS0_SOFR_Pos (13UL) /*!< SOFR (Bit 13) */ + #define R_USBF_INTSTS0_SOFR_Msk (0x2000UL) /*!< SOFR (Bitfield-Mask: 0x01) */ + #define R_USBF_INTSTS0_RESM_Pos (14UL) /*!< RESM (Bit 14) */ + #define R_USBF_INTSTS0_RESM_Msk (0x4000UL) /*!< RESM (Bitfield-Mask: 0x01) */ + #define R_USBF_INTSTS0_VBINT_Pos (15UL) /*!< VBINT (Bit 15) */ + #define R_USBF_INTSTS0_VBINT_Msk (0x8000UL) /*!< VBINT (Bitfield-Mask: 0x01) */ +/* ======================================================== INTSTS1 ======================================================== */ + #define R_USBF_INTSTS1_PDDETINT_Pos (0UL) /*!< PDDETINT (Bit 0) */ + #define R_USBF_INTSTS1_PDDETINT_Msk (0x1UL) /*!< PDDETINT (Bitfield-Mask: 0x01) */ +/* ======================================================== BRDYSTS ======================================================== */ + #define R_USBF_BRDYSTS_PIPEBRDY_Pos (0UL) /*!< PIPEBRDY (Bit 0) */ + #define R_USBF_BRDYSTS_PIPEBRDY_Msk (0x3ffUL) /*!< PIPEBRDY (Bitfield-Mask: 0x3ff) */ +/* ======================================================== NRDYSTS ======================================================== */ + #define R_USBF_NRDYSTS_PIPENRDY_Pos (0UL) /*!< PIPENRDY (Bit 0) */ + #define R_USBF_NRDYSTS_PIPENRDY_Msk (0x3ffUL) /*!< PIPENRDY (Bitfield-Mask: 0x3ff) */ +/* ======================================================== BEMPSTS ======================================================== */ + #define R_USBF_BEMPSTS_PIPEBEMP_Pos (0UL) /*!< PIPEBEMP (Bit 0) */ + #define R_USBF_BEMPSTS_PIPEBEMP_Msk (0x3ffUL) /*!< PIPEBEMP (Bitfield-Mask: 0x3ff) */ +/* ======================================================== FRMNUM ========================================================= */ + #define R_USBF_FRMNUM_FRNM_Pos (0UL) /*!< FRNM (Bit 0) */ + #define R_USBF_FRMNUM_FRNM_Msk (0x7ffUL) /*!< FRNM (Bitfield-Mask: 0x7ff) */ + #define R_USBF_FRMNUM_CRCE_Pos (14UL) /*!< CRCE (Bit 14) */ + #define R_USBF_FRMNUM_CRCE_Msk (0x4000UL) /*!< CRCE (Bitfield-Mask: 0x01) */ + #define R_USBF_FRMNUM_OVRN_Pos (15UL) /*!< OVRN (Bit 15) */ + #define R_USBF_FRMNUM_OVRN_Msk (0x8000UL) /*!< OVRN (Bitfield-Mask: 0x01) */ +/* ======================================================== UFRMNUM ======================================================== */ + #define R_USBF_UFRMNUM_UFRNM_Pos (0UL) /*!< UFRNM (Bit 0) */ + #define R_USBF_UFRMNUM_UFRNM_Msk (0x7UL) /*!< UFRNM (Bitfield-Mask: 0x07) */ +/* ======================================================== USBADDR ======================================================== */ + #define R_USBF_USBADDR_USBADDR_Pos (0UL) /*!< USBADDR (Bit 0) */ + #define R_USBF_USBADDR_USBADDR_Msk (0x7fUL) /*!< USBADDR (Bitfield-Mask: 0x7f) */ +/* ======================================================== USBREQ ========================================================= */ + #define R_USBF_USBREQ_BMREQUESTTYPE_Pos (0UL) /*!< BMREQUESTTYPE (Bit 0) */ + #define R_USBF_USBREQ_BMREQUESTTYPE_Msk (0xffUL) /*!< BMREQUESTTYPE (Bitfield-Mask: 0xff) */ + #define R_USBF_USBREQ_BREQUEST_Pos (8UL) /*!< BREQUEST (Bit 8) */ + #define R_USBF_USBREQ_BREQUEST_Msk (0xff00UL) /*!< BREQUEST (Bitfield-Mask: 0xff) */ +/* ======================================================== USBVAL ========================================================= */ + #define R_USBF_USBVAL_WVALUE_Pos (0UL) /*!< WVALUE (Bit 0) */ + #define R_USBF_USBVAL_WVALUE_Msk (0xffffUL) /*!< WVALUE (Bitfield-Mask: 0xffff) */ +/* ======================================================== USBINDX ======================================================== */ + #define R_USBF_USBINDX_WINDEX_Pos (0UL) /*!< WINDEX (Bit 0) */ + #define R_USBF_USBINDX_WINDEX_Msk (0xffffUL) /*!< WINDEX (Bitfield-Mask: 0xffff) */ +/* ======================================================== USBLENG ======================================================== */ + #define R_USBF_USBLENG_WLENGTH_Pos (0UL) /*!< WLENGTH (Bit 0) */ + #define R_USBF_USBLENG_WLENGTH_Msk (0xffffUL) /*!< WLENGTH (Bitfield-Mask: 0xffff) */ +/* ======================================================== DCPCFG ========================================================= */ + #define R_USBF_DCPCFG_SHTNAK_Pos (7UL) /*!< SHTNAK (Bit 7) */ + #define R_USBF_DCPCFG_SHTNAK_Msk (0x80UL) /*!< SHTNAK (Bitfield-Mask: 0x01) */ + #define R_USBF_DCPCFG_CNTMD_Pos (8UL) /*!< CNTMD (Bit 8) */ + #define R_USBF_DCPCFG_CNTMD_Msk (0x100UL) /*!< CNTMD (Bitfield-Mask: 0x01) */ +/* ======================================================== DCPMAXP ======================================================== */ + #define R_USBF_DCPMAXP_MXPS_Pos (0UL) /*!< MXPS (Bit 0) */ + #define R_USBF_DCPMAXP_MXPS_Msk (0x7fUL) /*!< MXPS (Bitfield-Mask: 0x7f) */ +/* ======================================================== DCPCTR ========================================================= */ + #define R_USBF_DCPCTR_PID_Pos (0UL) /*!< PID (Bit 0) */ + #define R_USBF_DCPCTR_PID_Msk (0x3UL) /*!< PID (Bitfield-Mask: 0x03) */ + #define R_USBF_DCPCTR_CCPL_Pos (2UL) /*!< CCPL (Bit 2) */ + #define R_USBF_DCPCTR_CCPL_Msk (0x4UL) /*!< CCPL (Bitfield-Mask: 0x01) */ + #define R_USBF_DCPCTR_PBUSY_Pos (5UL) /*!< PBUSY (Bit 5) */ + #define R_USBF_DCPCTR_PBUSY_Msk (0x20UL) /*!< PBUSY (Bitfield-Mask: 0x01) */ + #define R_USBF_DCPCTR_SQMON_Pos (6UL) /*!< SQMON (Bit 6) */ + #define R_USBF_DCPCTR_SQMON_Msk (0x40UL) /*!< SQMON (Bitfield-Mask: 0x01) */ + #define R_USBF_DCPCTR_SQSET_Pos (7UL) /*!< SQSET (Bit 7) */ + #define R_USBF_DCPCTR_SQSET_Msk (0x80UL) /*!< SQSET (Bitfield-Mask: 0x01) */ + #define R_USBF_DCPCTR_SQCLR_Pos (8UL) /*!< SQCLR (Bit 8) */ + #define R_USBF_DCPCTR_SQCLR_Msk (0x100UL) /*!< SQCLR (Bitfield-Mask: 0x01) */ + #define R_USBF_DCPCTR_BSTS_Pos (15UL) /*!< BSTS (Bit 15) */ + #define R_USBF_DCPCTR_BSTS_Msk (0x8000UL) /*!< BSTS (Bitfield-Mask: 0x01) */ +/* ======================================================== PIPESEL ======================================================== */ + #define R_USBF_PIPESEL_PIPESEL_Pos (0UL) /*!< PIPESEL (Bit 0) */ + #define R_USBF_PIPESEL_PIPESEL_Msk (0xfUL) /*!< PIPESEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== PIPECFG ======================================================== */ + #define R_USBF_PIPECFG_EPNUM_Pos (0UL) /*!< EPNUM (Bit 0) */ + #define R_USBF_PIPECFG_EPNUM_Msk (0xfUL) /*!< EPNUM (Bitfield-Mask: 0x0f) */ + #define R_USBF_PIPECFG_DIR_Pos (4UL) /*!< DIR (Bit 4) */ + #define R_USBF_PIPECFG_DIR_Msk (0x10UL) /*!< DIR (Bitfield-Mask: 0x01) */ + #define R_USBF_PIPECFG_SHTNAK_Pos (7UL) /*!< SHTNAK (Bit 7) */ + #define R_USBF_PIPECFG_SHTNAK_Msk (0x80UL) /*!< SHTNAK (Bitfield-Mask: 0x01) */ + #define R_USBF_PIPECFG_CNTMD_Pos (8UL) /*!< CNTMD (Bit 8) */ + #define R_USBF_PIPECFG_CNTMD_Msk (0x100UL) /*!< CNTMD (Bitfield-Mask: 0x01) */ + #define R_USBF_PIPECFG_DBLB_Pos (9UL) /*!< DBLB (Bit 9) */ + #define R_USBF_PIPECFG_DBLB_Msk (0x200UL) /*!< DBLB (Bitfield-Mask: 0x01) */ + #define R_USBF_PIPECFG_BFRE_Pos (10UL) /*!< BFRE (Bit 10) */ + #define R_USBF_PIPECFG_BFRE_Msk (0x400UL) /*!< BFRE (Bitfield-Mask: 0x01) */ + #define R_USBF_PIPECFG_TYPE_Pos (14UL) /*!< TYPE (Bit 14) */ + #define R_USBF_PIPECFG_TYPE_Msk (0xc000UL) /*!< TYPE (Bitfield-Mask: 0x03) */ +/* ======================================================== PIPEBUF ======================================================== */ + #define R_USBF_PIPEBUF_BUFNMB_Pos (0UL) /*!< BUFNMB (Bit 0) */ + #define R_USBF_PIPEBUF_BUFNMB_Msk (0xffUL) /*!< BUFNMB (Bitfield-Mask: 0xff) */ + #define R_USBF_PIPEBUF_BUFSIZE_Pos (10UL) /*!< BUFSIZE (Bit 10) */ + #define R_USBF_PIPEBUF_BUFSIZE_Msk (0x7c00UL) /*!< BUFSIZE (Bitfield-Mask: 0x1f) */ +/* ======================================================= PIPEMAXP ======================================================== */ + #define R_USBF_PIPEMAXP_MXPS_Pos (0UL) /*!< MXPS (Bit 0) */ + #define R_USBF_PIPEMAXP_MXPS_Msk (0x7ffUL) /*!< MXPS (Bitfield-Mask: 0x7ff) */ +/* ======================================================= PIPEPERI ======================================================== */ + #define R_USBF_PIPEPERI_IITV_Pos (0UL) /*!< IITV (Bit 0) */ + #define R_USBF_PIPEPERI_IITV_Msk (0x7UL) /*!< IITV (Bitfield-Mask: 0x07) */ + #define R_USBF_PIPEPERI_IFIS_Pos (12UL) /*!< IFIS (Bit 12) */ + #define R_USBF_PIPEPERI_IFIS_Msk (0x1000UL) /*!< IFIS (Bitfield-Mask: 0x01) */ +/* ======================================================= PIPE_CTR ======================================================== */ + #define R_USBF_PIPE_CTR_PID_Pos (0UL) /*!< PID (Bit 0) */ + #define R_USBF_PIPE_CTR_PID_Msk (0x3UL) /*!< PID (Bitfield-Mask: 0x03) */ + #define R_USBF_PIPE_CTR_PBUSY_Pos (5UL) /*!< PBUSY (Bit 5) */ + #define R_USBF_PIPE_CTR_PBUSY_Msk (0x20UL) /*!< PBUSY (Bitfield-Mask: 0x01) */ + #define R_USBF_PIPE_CTR_SQMON_Pos (6UL) /*!< SQMON (Bit 6) */ + #define R_USBF_PIPE_CTR_SQMON_Msk (0x40UL) /*!< SQMON (Bitfield-Mask: 0x01) */ + #define R_USBF_PIPE_CTR_SQSET_Pos (7UL) /*!< SQSET (Bit 7) */ + #define R_USBF_PIPE_CTR_SQSET_Msk (0x80UL) /*!< SQSET (Bitfield-Mask: 0x01) */ + #define R_USBF_PIPE_CTR_SQCLR_Pos (8UL) /*!< SQCLR (Bit 8) */ + #define R_USBF_PIPE_CTR_SQCLR_Msk (0x100UL) /*!< SQCLR (Bitfield-Mask: 0x01) */ + #define R_USBF_PIPE_CTR_ACLRM_Pos (9UL) /*!< ACLRM (Bit 9) */ + #define R_USBF_PIPE_CTR_ACLRM_Msk (0x200UL) /*!< ACLRM (Bitfield-Mask: 0x01) */ + #define R_USBF_PIPE_CTR_ATREPM_Pos (10UL) /*!< ATREPM (Bit 10) */ + #define R_USBF_PIPE_CTR_ATREPM_Msk (0x400UL) /*!< ATREPM (Bitfield-Mask: 0x01) */ + #define R_USBF_PIPE_CTR_INBUFM_Pos (14UL) /*!< INBUFM (Bit 14) */ + #define R_USBF_PIPE_CTR_INBUFM_Msk (0x4000UL) /*!< INBUFM (Bitfield-Mask: 0x01) */ + #define R_USBF_PIPE_CTR_BSTS_Pos (15UL) /*!< BSTS (Bit 15) */ + #define R_USBF_PIPE_CTR_BSTS_Msk (0x8000UL) /*!< BSTS (Bitfield-Mask: 0x01) */ +/* ========================================================= LPSTS ========================================================= */ + #define R_USBF_LPSTS_SUSPM_Pos (14UL) /*!< SUSPM (Bit 14) */ + #define R_USBF_LPSTS_SUSPM_Msk (0x4000UL) /*!< SUSPM (Bitfield-Mask: 0x01) */ +/* ========================================================= DCTRL ========================================================= */ + #define R_USBF_DCTRL_PR_Pos (0UL) /*!< PR (Bit 0) */ + #define R_USBF_DCTRL_PR_Msk (0x1UL) /*!< PR (Bitfield-Mask: 0x01) */ + #define R_USBF_DCTRL_LDPR_Pos (16UL) /*!< LDPR (Bit 16) */ + #define R_USBF_DCTRL_LDPR_Msk (0xf0000UL) /*!< LDPR (Bitfield-Mask: 0x0f) */ + #define R_USBF_DCTRL_LWPR_Pos (24UL) /*!< LWPR (Bit 24) */ + #define R_USBF_DCTRL_LWPR_Msk (0xf000000UL) /*!< LWPR (Bitfield-Mask: 0x0f) */ +/* ======================================================== DSCITVL ======================================================== */ + #define R_USBF_DSCITVL_DITVL_Pos (8UL) /*!< DITVL (Bit 8) */ + #define R_USBF_DSCITVL_DITVL_Msk (0xff00UL) /*!< DITVL (Bitfield-Mask: 0xff) */ +/* ======================================================= DSTAT_EN ======================================================== */ + #define R_USBF_DSTAT_EN_EN0_Pos (0UL) /*!< EN0 (Bit 0) */ + #define R_USBF_DSTAT_EN_EN0_Msk (0x1UL) /*!< EN0 (Bitfield-Mask: 0x01) */ + #define R_USBF_DSTAT_EN_EN1_Pos (1UL) /*!< EN1 (Bit 1) */ + #define R_USBF_DSTAT_EN_EN1_Msk (0x2UL) /*!< EN1 (Bitfield-Mask: 0x01) */ +/* ======================================================= DSTAT_ER ======================================================== */ + #define R_USBF_DSTAT_ER_ER0_Pos (0UL) /*!< ER0 (Bit 0) */ + #define R_USBF_DSTAT_ER_ER0_Msk (0x1UL) /*!< ER0 (Bitfield-Mask: 0x01) */ + #define R_USBF_DSTAT_ER_ER1_Pos (1UL) /*!< ER1 (Bit 1) */ + #define R_USBF_DSTAT_ER_ER1_Msk (0x2UL) /*!< ER1 (Bitfield-Mask: 0x01) */ +/* ======================================================= DSTAT_END ======================================================= */ + #define R_USBF_DSTAT_END_END0_Pos (0UL) /*!< END0 (Bit 0) */ + #define R_USBF_DSTAT_END_END0_Msk (0x1UL) /*!< END0 (Bitfield-Mask: 0x01) */ + #define R_USBF_DSTAT_END_END1_Pos (1UL) /*!< END1 (Bit 1) */ + #define R_USBF_DSTAT_END_END1_Msk (0x2UL) /*!< END1 (Bitfield-Mask: 0x01) */ +/* ======================================================= DSTAT_TC ======================================================== */ + #define R_USBF_DSTAT_TC_TC0_Pos (0UL) /*!< TC0 (Bit 0) */ + #define R_USBF_DSTAT_TC_TC0_Msk (0x1UL) /*!< TC0 (Bitfield-Mask: 0x01) */ + #define R_USBF_DSTAT_TC_TC1_Pos (1UL) /*!< TC1 (Bit 1) */ + #define R_USBF_DSTAT_TC_TC1_Msk (0x2UL) /*!< TC1 (Bitfield-Mask: 0x01) */ +/* ======================================================= DSTAT_SUS ======================================================= */ + #define R_USBF_DSTAT_SUS_SUS0_Pos (0UL) /*!< SUS0 (Bit 0) */ + #define R_USBF_DSTAT_SUS_SUS0_Msk (0x1UL) /*!< SUS0 (Bitfield-Mask: 0x01) */ + #define R_USBF_DSTAT_SUS_SUS1_Pos (1UL) /*!< SUS1 (Bit 1) */ + #define R_USBF_DSTAT_SUS_SUS1_Msk (0x2UL) /*!< SUS1 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_BSC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= CMNCR ========================================================= */ + #define R_BSC_CMNCR_DPRTY_Pos (9UL) /*!< DPRTY (Bit 9) */ + #define R_BSC_CMNCR_DPRTY_Msk (0x600UL) /*!< DPRTY (Bitfield-Mask: 0x03) */ + #define R_BSC_CMNCR_AL_Pos (24UL) /*!< AL (Bit 24) */ + #define R_BSC_CMNCR_AL_Msk (0x1000000UL) /*!< AL (Bitfield-Mask: 0x01) */ + #define R_BSC_CMNCR_TL_Pos (28UL) /*!< TL (Bit 28) */ + #define R_BSC_CMNCR_TL_Msk (0x10000000UL) /*!< TL (Bitfield-Mask: 0x01) */ +/* ======================================================== CSnBCR ========================================================= */ + #define R_BSC_CSnBCR_BSZ_Pos (9UL) /*!< BSZ (Bit 9) */ + #define R_BSC_CSnBCR_BSZ_Msk (0x600UL) /*!< BSZ (Bitfield-Mask: 0x03) */ + #define R_BSC_CSnBCR_TYPE_Pos (12UL) /*!< TYPE (Bit 12) */ + #define R_BSC_CSnBCR_TYPE_Msk (0x7000UL) /*!< TYPE (Bitfield-Mask: 0x07) */ + #define R_BSC_CSnBCR_IWRRS_Pos (16UL) /*!< IWRRS (Bit 16) */ + #define R_BSC_CSnBCR_IWRRS_Msk (0x70000UL) /*!< IWRRS (Bitfield-Mask: 0x07) */ + #define R_BSC_CSnBCR_IWRRD_Pos (19UL) /*!< IWRRD (Bit 19) */ + #define R_BSC_CSnBCR_IWRRD_Msk (0x380000UL) /*!< IWRRD (Bitfield-Mask: 0x07) */ + #define R_BSC_CSnBCR_IWRWS_Pos (22UL) /*!< IWRWS (Bit 22) */ + #define R_BSC_CSnBCR_IWRWS_Msk (0x1c00000UL) /*!< IWRWS (Bitfield-Mask: 0x07) */ + #define R_BSC_CSnBCR_IWRWD_Pos (25UL) /*!< IWRWD (Bit 25) */ + #define R_BSC_CSnBCR_IWRWD_Msk (0xe000000UL) /*!< IWRWD (Bitfield-Mask: 0x07) */ + #define R_BSC_CSnBCR_IWW_Pos (28UL) /*!< IWW (Bit 28) */ + #define R_BSC_CSnBCR_IWW_Msk (0x70000000UL) /*!< IWW (Bitfield-Mask: 0x07) */ +/* ======================================================= CS0WCR_0 ======================================================== */ + #define R_BSC_CS0WCR_0_HW_Pos (0UL) /*!< HW (Bit 0) */ + #define R_BSC_CS0WCR_0_HW_Msk (0x3UL) /*!< HW (Bitfield-Mask: 0x03) */ + #define R_BSC_CS0WCR_0_WM_Pos (6UL) /*!< WM (Bit 6) */ + #define R_BSC_CS0WCR_0_WM_Msk (0x40UL) /*!< WM (Bitfield-Mask: 0x01) */ + #define R_BSC_CS0WCR_0_WR_Pos (7UL) /*!< WR (Bit 7) */ + #define R_BSC_CS0WCR_0_WR_Msk (0x780UL) /*!< WR (Bitfield-Mask: 0x0f) */ + #define R_BSC_CS0WCR_0_SW_Pos (11UL) /*!< SW (Bit 11) */ + #define R_BSC_CS0WCR_0_SW_Msk (0x1800UL) /*!< SW (Bitfield-Mask: 0x03) */ + #define R_BSC_CS0WCR_0_BAS_Pos (20UL) /*!< BAS (Bit 20) */ + #define R_BSC_CS0WCR_0_BAS_Msk (0x100000UL) /*!< BAS (Bitfield-Mask: 0x01) */ +/* ======================================================= CS0WCR_1 ======================================================== */ + #define R_BSC_CS0WCR_1_WM_Pos (6UL) /*!< WM (Bit 6) */ + #define R_BSC_CS0WCR_1_WM_Msk (0x40UL) /*!< WM (Bitfield-Mask: 0x01) */ + #define R_BSC_CS0WCR_1_W_Pos (7UL) /*!< W (Bit 7) */ + #define R_BSC_CS0WCR_1_W_Msk (0x780UL) /*!< W (Bitfield-Mask: 0x0f) */ + #define R_BSC_CS0WCR_1_BW_Pos (16UL) /*!< BW (Bit 16) */ + #define R_BSC_CS0WCR_1_BW_Msk (0x30000UL) /*!< BW (Bitfield-Mask: 0x03) */ + #define R_BSC_CS0WCR_1_BST_Pos (20UL) /*!< BST (Bit 20) */ + #define R_BSC_CS0WCR_1_BST_Msk (0x300000UL) /*!< BST (Bitfield-Mask: 0x03) */ +/* ======================================================= CS0WCR_2 ======================================================== */ + #define R_BSC_CS0WCR_2_WM_Pos (6UL) /*!< WM (Bit 6) */ + #define R_BSC_CS0WCR_2_WM_Msk (0x40UL) /*!< WM (Bitfield-Mask: 0x01) */ + #define R_BSC_CS0WCR_2_W_Pos (7UL) /*!< W (Bit 7) */ + #define R_BSC_CS0WCR_2_W_Msk (0x780UL) /*!< W (Bitfield-Mask: 0x0f) */ + #define R_BSC_CS0WCR_2_BW_Pos (16UL) /*!< BW (Bit 16) */ + #define R_BSC_CS0WCR_2_BW_Msk (0x30000UL) /*!< BW (Bitfield-Mask: 0x03) */ +/* ======================================================= CS2WCR_0 ======================================================== */ + #define R_BSC_CS2WCR_0_WM_Pos (6UL) /*!< WM (Bit 6) */ + #define R_BSC_CS2WCR_0_WM_Msk (0x40UL) /*!< WM (Bitfield-Mask: 0x01) */ + #define R_BSC_CS2WCR_0_WR_Pos (7UL) /*!< WR (Bit 7) */ + #define R_BSC_CS2WCR_0_WR_Msk (0x780UL) /*!< WR (Bitfield-Mask: 0x0f) */ + #define R_BSC_CS2WCR_0_BAS_Pos (20UL) /*!< BAS (Bit 20) */ + #define R_BSC_CS2WCR_0_BAS_Msk (0x100000UL) /*!< BAS (Bitfield-Mask: 0x01) */ +/* ======================================================= CS2WCR_1 ======================================================== */ + #define R_BSC_CS2WCR_1_A2CL_Pos (7UL) /*!< A2CL (Bit 7) */ + #define R_BSC_CS2WCR_1_A2CL_Msk (0x180UL) /*!< A2CL (Bitfield-Mask: 0x03) */ +/* ======================================================= CS3WCR_0 ======================================================== */ + #define R_BSC_CS3WCR_0_WM_Pos (6UL) /*!< WM (Bit 6) */ + #define R_BSC_CS3WCR_0_WM_Msk (0x40UL) /*!< WM (Bitfield-Mask: 0x01) */ + #define R_BSC_CS3WCR_0_WR_Pos (7UL) /*!< WR (Bit 7) */ + #define R_BSC_CS3WCR_0_WR_Msk (0x780UL) /*!< WR (Bitfield-Mask: 0x0f) */ + #define R_BSC_CS3WCR_0_BAS_Pos (20UL) /*!< BAS (Bit 20) */ + #define R_BSC_CS3WCR_0_BAS_Msk (0x100000UL) /*!< BAS (Bitfield-Mask: 0x01) */ +/* ======================================================= CS3WCR_1 ======================================================== */ + #define R_BSC_CS3WCR_1_WTRC_Pos (0UL) /*!< WTRC (Bit 0) */ + #define R_BSC_CS3WCR_1_WTRC_Msk (0x3UL) /*!< WTRC (Bitfield-Mask: 0x03) */ + #define R_BSC_CS3WCR_1_TRWL_Pos (3UL) /*!< TRWL (Bit 3) */ + #define R_BSC_CS3WCR_1_TRWL_Msk (0x18UL) /*!< TRWL (Bitfield-Mask: 0x03) */ + #define R_BSC_CS3WCR_1_A3CL_Pos (7UL) /*!< A3CL (Bit 7) */ + #define R_BSC_CS3WCR_1_A3CL_Msk (0x180UL) /*!< A3CL (Bitfield-Mask: 0x03) */ + #define R_BSC_CS3WCR_1_WTRCD_Pos (10UL) /*!< WTRCD (Bit 10) */ + #define R_BSC_CS3WCR_1_WTRCD_Msk (0xc00UL) /*!< WTRCD (Bitfield-Mask: 0x03) */ + #define R_BSC_CS3WCR_1_WTRP_Pos (13UL) /*!< WTRP (Bit 13) */ + #define R_BSC_CS3WCR_1_WTRP_Msk (0x6000UL) /*!< WTRP (Bitfield-Mask: 0x03) */ +/* ======================================================== CS5WCR ========================================================= */ + #define R_BSC_CS5WCR_HW_Pos (0UL) /*!< HW (Bit 0) */ + #define R_BSC_CS5WCR_HW_Msk (0x3UL) /*!< HW (Bitfield-Mask: 0x03) */ + #define R_BSC_CS5WCR_WM_Pos (6UL) /*!< WM (Bit 6) */ + #define R_BSC_CS5WCR_WM_Msk (0x40UL) /*!< WM (Bitfield-Mask: 0x01) */ + #define R_BSC_CS5WCR_WR_Pos (7UL) /*!< WR (Bit 7) */ + #define R_BSC_CS5WCR_WR_Msk (0x780UL) /*!< WR (Bitfield-Mask: 0x0f) */ + #define R_BSC_CS5WCR_SW_Pos (11UL) /*!< SW (Bit 11) */ + #define R_BSC_CS5WCR_SW_Msk (0x1800UL) /*!< SW (Bitfield-Mask: 0x03) */ + #define R_BSC_CS5WCR_WW_Pos (16UL) /*!< WW (Bit 16) */ + #define R_BSC_CS5WCR_WW_Msk (0x70000UL) /*!< WW (Bitfield-Mask: 0x07) */ + #define R_BSC_CS5WCR_MPXWSBAS_Pos (20UL) /*!< MPXWSBAS (Bit 20) */ + #define R_BSC_CS5WCR_MPXWSBAS_Msk (0x100000UL) /*!< MPXWSBAS (Bitfield-Mask: 0x01) */ + #define R_BSC_CS5WCR_SZSEL_Pos (21UL) /*!< SZSEL (Bit 21) */ + #define R_BSC_CS5WCR_SZSEL_Msk (0x200000UL) /*!< SZSEL (Bitfield-Mask: 0x01) */ +/* ========================================================= SDCR ========================================================== */ + #define R_BSC_SDCR_A3COL_Pos (0UL) /*!< A3COL (Bit 0) */ + #define R_BSC_SDCR_A3COL_Msk (0x3UL) /*!< A3COL (Bitfield-Mask: 0x03) */ + #define R_BSC_SDCR_A3ROW_Pos (3UL) /*!< A3ROW (Bit 3) */ + #define R_BSC_SDCR_A3ROW_Msk (0x18UL) /*!< A3ROW (Bitfield-Mask: 0x03) */ + #define R_BSC_SDCR_BACTV_Pos (8UL) /*!< BACTV (Bit 8) */ + #define R_BSC_SDCR_BACTV_Msk (0x100UL) /*!< BACTV (Bitfield-Mask: 0x01) */ + #define R_BSC_SDCR_PDOWN_Pos (9UL) /*!< PDOWN (Bit 9) */ + #define R_BSC_SDCR_PDOWN_Msk (0x200UL) /*!< PDOWN (Bitfield-Mask: 0x01) */ + #define R_BSC_SDCR_RMODE_Pos (10UL) /*!< RMODE (Bit 10) */ + #define R_BSC_SDCR_RMODE_Msk (0x400UL) /*!< RMODE (Bitfield-Mask: 0x01) */ + #define R_BSC_SDCR_RFSH_Pos (11UL) /*!< RFSH (Bit 11) */ + #define R_BSC_SDCR_RFSH_Msk (0x800UL) /*!< RFSH (Bitfield-Mask: 0x01) */ + #define R_BSC_SDCR_DEEP_Pos (13UL) /*!< DEEP (Bit 13) */ + #define R_BSC_SDCR_DEEP_Msk (0x2000UL) /*!< DEEP (Bitfield-Mask: 0x01) */ + #define R_BSC_SDCR_A2COL_Pos (16UL) /*!< A2COL (Bit 16) */ + #define R_BSC_SDCR_A2COL_Msk (0x30000UL) /*!< A2COL (Bitfield-Mask: 0x03) */ + #define R_BSC_SDCR_A2ROW_Pos (19UL) /*!< A2ROW (Bit 19) */ + #define R_BSC_SDCR_A2ROW_Msk (0x180000UL) /*!< A2ROW (Bitfield-Mask: 0x03) */ +/* ========================================================= RTCSR ========================================================= */ +/* ========================================================= RTCNT ========================================================= */ +/* ========================================================= RTCOR ========================================================= */ +/* ======================================================== TOSCOR ========================================================= */ + #define R_BSC_TOSCOR_TOCNUM_Pos (0UL) /*!< TOCNUM (Bit 0) */ + #define R_BSC_TOSCOR_TOCNUM_Msk (0xffffUL) /*!< TOCNUM (Bitfield-Mask: 0xffff) */ +/* ========================================================= TOSTR ========================================================= */ + #define R_BSC_TOSTR_CS0TOSTF_Pos (0UL) /*!< CS0TOSTF (Bit 0) */ + #define R_BSC_TOSTR_CS0TOSTF_Msk (0x1UL) /*!< CS0TOSTF (Bitfield-Mask: 0x01) */ + #define R_BSC_TOSTR_CS2TOSTF_Pos (2UL) /*!< CS2TOSTF (Bit 2) */ + #define R_BSC_TOSTR_CS2TOSTF_Msk (0x4UL) /*!< CS2TOSTF (Bitfield-Mask: 0x01) */ + #define R_BSC_TOSTR_CS3TOSTF_Pos (3UL) /*!< CS3TOSTF (Bit 3) */ + #define R_BSC_TOSTR_CS3TOSTF_Msk (0x8UL) /*!< CS3TOSTF (Bitfield-Mask: 0x01) */ + #define R_BSC_TOSTR_CS5TOSTF_Pos (5UL) /*!< CS5TOSTF (Bit 5) */ + #define R_BSC_TOSTR_CS5TOSTF_Msk (0x20UL) /*!< CS5TOSTF (Bitfield-Mask: 0x01) */ +/* ========================================================= TOENR ========================================================= */ + #define R_BSC_TOENR_CS0TOEN_Pos (0UL) /*!< CS0TOEN (Bit 0) */ + #define R_BSC_TOENR_CS0TOEN_Msk (0x1UL) /*!< CS0TOEN (Bitfield-Mask: 0x01) */ + #define R_BSC_TOENR_CS2TOEN_Pos (2UL) /*!< CS2TOEN (Bit 2) */ + #define R_BSC_TOENR_CS2TOEN_Msk (0x4UL) /*!< CS2TOEN (Bitfield-Mask: 0x01) */ + #define R_BSC_TOENR_CS3TOEN_Pos (3UL) /*!< CS3TOEN (Bit 3) */ + #define R_BSC_TOENR_CS3TOEN_Msk (0x8UL) /*!< CS3TOEN (Bitfield-Mask: 0x01) */ + #define R_BSC_TOENR_CS5TOEN_Pos (5UL) /*!< CS5TOEN (Bit 5) */ + #define R_BSC_TOENR_CS5TOEN_Msk (0x20UL) /*!< CS5TOEN (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_XSPI0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== WRAPCFG ======================================================== */ + #define R_XSPI0_WRAPCFG_DSSFTCS0_Pos (8UL) /*!< DSSFTCS0 (Bit 8) */ + #define R_XSPI0_WRAPCFG_DSSFTCS0_Msk (0x1f00UL) /*!< DSSFTCS0 (Bitfield-Mask: 0x1f) */ + #define R_XSPI0_WRAPCFG_DSSFTCS1_Pos (24UL) /*!< DSSFTCS1 (Bit 24) */ + #define R_XSPI0_WRAPCFG_DSSFTCS1_Msk (0x1f000000UL) /*!< DSSFTCS1 (Bitfield-Mask: 0x1f) */ +/* ======================================================== COMCFG ========================================================= */ + #define R_XSPI0_COMCFG_OEASTEX_Pos (16UL) /*!< OEASTEX (Bit 16) */ + #define R_XSPI0_COMCFG_OEASTEX_Msk (0x10000UL) /*!< OEASTEX (Bitfield-Mask: 0x01) */ + #define R_XSPI0_COMCFG_OENEGEX_Pos (17UL) /*!< OENEGEX (Bit 17) */ + #define R_XSPI0_COMCFG_OENEGEX_Msk (0x20000UL) /*!< OENEGEX (Bitfield-Mask: 0x01) */ +/* ========================================================= BMCFG ========================================================= */ + #define R_XSPI0_BMCFG_WRMD_Pos (0UL) /*!< WRMD (Bit 0) */ + #define R_XSPI0_BMCFG_WRMD_Msk (0x1UL) /*!< WRMD (Bitfield-Mask: 0x01) */ + #define R_XSPI0_BMCFG_MWRCOMB_Pos (7UL) /*!< MWRCOMB (Bit 7) */ + #define R_XSPI0_BMCFG_MWRCOMB_Msk (0x80UL) /*!< MWRCOMB (Bitfield-Mask: 0x01) */ + #define R_XSPI0_BMCFG_MWRSIZE_Pos (8UL) /*!< MWRSIZE (Bit 8) */ + #define R_XSPI0_BMCFG_MWRSIZE_Msk (0xff00UL) /*!< MWRSIZE (Bitfield-Mask: 0xff) */ + #define R_XSPI0_BMCFG_PREEN_Pos (16UL) /*!< PREEN (Bit 16) */ + #define R_XSPI0_BMCFG_PREEN_Msk (0x10000UL) /*!< PREEN (Bitfield-Mask: 0x01) */ +/* ======================================================= LIOCFGCS ======================================================== */ + #define R_XSPI0_LIOCFGCS_PRTMD_Pos (0UL) /*!< PRTMD (Bit 0) */ + #define R_XSPI0_LIOCFGCS_PRTMD_Msk (0x3ffUL) /*!< PRTMD (Bitfield-Mask: 0x3ff) */ + #define R_XSPI0_LIOCFGCS_LATEMD_Pos (10UL) /*!< LATEMD (Bit 10) */ + #define R_XSPI0_LIOCFGCS_LATEMD_Msk (0x400UL) /*!< LATEMD (Bitfield-Mask: 0x01) */ + #define R_XSPI0_LIOCFGCS_WRMSKMD_Pos (11UL) /*!< WRMSKMD (Bit 11) */ + #define R_XSPI0_LIOCFGCS_WRMSKMD_Msk (0x800UL) /*!< WRMSKMD (Bitfield-Mask: 0x01) */ + #define R_XSPI0_LIOCFGCS_CSMIN_Pos (16UL) /*!< CSMIN (Bit 16) */ + #define R_XSPI0_LIOCFGCS_CSMIN_Msk (0xf0000UL) /*!< CSMIN (Bitfield-Mask: 0x0f) */ + #define R_XSPI0_LIOCFGCS_CSASTEX_Pos (20UL) /*!< CSASTEX (Bit 20) */ + #define R_XSPI0_LIOCFGCS_CSASTEX_Msk (0x100000UL) /*!< CSASTEX (Bitfield-Mask: 0x01) */ + #define R_XSPI0_LIOCFGCS_CSNEGEX_Pos (21UL) /*!< CSNEGEX (Bit 21) */ + #define R_XSPI0_LIOCFGCS_CSNEGEX_Msk (0x200000UL) /*!< CSNEGEX (Bitfield-Mask: 0x01) */ + #define R_XSPI0_LIOCFGCS_SDRDRV_Pos (22UL) /*!< SDRDRV (Bit 22) */ + #define R_XSPI0_LIOCFGCS_SDRDRV_Msk (0x400000UL) /*!< SDRDRV (Bitfield-Mask: 0x01) */ + #define R_XSPI0_LIOCFGCS_SDRSMPMD_Pos (23UL) /*!< SDRSMPMD (Bit 23) */ + #define R_XSPI0_LIOCFGCS_SDRSMPMD_Msk (0x800000UL) /*!< SDRSMPMD (Bitfield-Mask: 0x01) */ + #define R_XSPI0_LIOCFGCS_SDRSMPSFT_Pos (24UL) /*!< SDRSMPSFT (Bit 24) */ + #define R_XSPI0_LIOCFGCS_SDRSMPSFT_Msk (0xf000000UL) /*!< SDRSMPSFT (Bitfield-Mask: 0x0f) */ + #define R_XSPI0_LIOCFGCS_DDRSMPEX_Pos (28UL) /*!< DDRSMPEX (Bit 28) */ + #define R_XSPI0_LIOCFGCS_DDRSMPEX_Msk (0xf0000000UL) /*!< DDRSMPEX (Bitfield-Mask: 0x0f) */ +/* ======================================================== BMCTL0 ========================================================= */ + #define R_XSPI0_BMCTL0_CS0ACC_Pos (0UL) /*!< CS0ACC (Bit 0) */ + #define R_XSPI0_BMCTL0_CS0ACC_Msk (0x3UL) /*!< CS0ACC (Bitfield-Mask: 0x03) */ + #define R_XSPI0_BMCTL0_CS1ACC_Pos (2UL) /*!< CS1ACC (Bit 2) */ + #define R_XSPI0_BMCTL0_CS1ACC_Msk (0xcUL) /*!< CS1ACC (Bitfield-Mask: 0x03) */ +/* ======================================================== BMCTL1 ========================================================= */ + #define R_XSPI0_BMCTL1_MWRPUSH_Pos (8UL) /*!< MWRPUSH (Bit 8) */ + #define R_XSPI0_BMCTL1_MWRPUSH_Msk (0x100UL) /*!< MWRPUSH (Bitfield-Mask: 0x01) */ + #define R_XSPI0_BMCTL1_PBUFCLR_Pos (10UL) /*!< PBUFCLR (Bit 10) */ + #define R_XSPI0_BMCTL1_PBUFCLR_Msk (0x400UL) /*!< PBUFCLR (Bitfield-Mask: 0x01) */ +/* ========================================================= CMCTL ========================================================= */ + #define R_XSPI0_CMCTL_XIPENCODE_Pos (0UL) /*!< XIPENCODE (Bit 0) */ + #define R_XSPI0_CMCTL_XIPENCODE_Msk (0xffUL) /*!< XIPENCODE (Bitfield-Mask: 0xff) */ + #define R_XSPI0_CMCTL_XIPEXCODE_Pos (8UL) /*!< XIPEXCODE (Bit 8) */ + #define R_XSPI0_CMCTL_XIPEXCODE_Msk (0xff00UL) /*!< XIPEXCODE (Bitfield-Mask: 0xff) */ + #define R_XSPI0_CMCTL_XIPEN_Pos (16UL) /*!< XIPEN (Bit 16) */ + #define R_XSPI0_CMCTL_XIPEN_Msk (0x10000UL) /*!< XIPEN (Bitfield-Mask: 0x01) */ +/* ======================================================== CSSCTL ========================================================= */ + #define R_XSPI0_CSSCTL_CS0SIZE_Pos (0UL) /*!< CS0SIZE (Bit 0) */ + #define R_XSPI0_CSSCTL_CS0SIZE_Msk (0x3fUL) /*!< CS0SIZE (Bitfield-Mask: 0x3f) */ + #define R_XSPI0_CSSCTL_CS1SIZE_Pos (8UL) /*!< CS1SIZE (Bit 8) */ + #define R_XSPI0_CSSCTL_CS1SIZE_Msk (0x3f00UL) /*!< CS1SIZE (Bitfield-Mask: 0x3f) */ +/* ======================================================== CDCTL0 ========================================================= */ + #define R_XSPI0_CDCTL0_TRREQ_Pos (0UL) /*!< TRREQ (Bit 0) */ + #define R_XSPI0_CDCTL0_TRREQ_Msk (0x1UL) /*!< TRREQ (Bitfield-Mask: 0x01) */ + #define R_XSPI0_CDCTL0_PERMD_Pos (1UL) /*!< PERMD (Bit 1) */ + #define R_XSPI0_CDCTL0_PERMD_Msk (0x2UL) /*!< PERMD (Bitfield-Mask: 0x01) */ + #define R_XSPI0_CDCTL0_CSSEL_Pos (3UL) /*!< CSSEL (Bit 3) */ + #define R_XSPI0_CDCTL0_CSSEL_Msk (0x8UL) /*!< CSSEL (Bitfield-Mask: 0x01) */ + #define R_XSPI0_CDCTL0_TRNUM_Pos (4UL) /*!< TRNUM (Bit 4) */ + #define R_XSPI0_CDCTL0_TRNUM_Msk (0x30UL) /*!< TRNUM (Bitfield-Mask: 0x03) */ + #define R_XSPI0_CDCTL0_PERITV_Pos (16UL) /*!< PERITV (Bit 16) */ + #define R_XSPI0_CDCTL0_PERITV_Msk (0x1f0000UL) /*!< PERITV (Bitfield-Mask: 0x1f) */ + #define R_XSPI0_CDCTL0_PERREP_Pos (24UL) /*!< PERREP (Bit 24) */ + #define R_XSPI0_CDCTL0_PERREP_Msk (0xf000000UL) /*!< PERREP (Bitfield-Mask: 0x0f) */ +/* ======================================================== CDCTL1 ========================================================= */ + #define R_XSPI0_CDCTL1_PEREXP_Pos (0UL) /*!< PEREXP (Bit 0) */ + #define R_XSPI0_CDCTL1_PEREXP_Msk (0xffffffffUL) /*!< PEREXP (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CDCTL2 ========================================================= */ + #define R_XSPI0_CDCTL2_PERMSK_Pos (0UL) /*!< PERMSK (Bit 0) */ + #define R_XSPI0_CDCTL2_PERMSK_Msk (0xffffffffUL) /*!< PERMSK (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== LPCTL0 ========================================================= */ + #define R_XSPI0_LPCTL0_PATREQ_Pos (0UL) /*!< PATREQ (Bit 0) */ + #define R_XSPI0_LPCTL0_PATREQ_Msk (0x1UL) /*!< PATREQ (Bitfield-Mask: 0x01) */ + #define R_XSPI0_LPCTL0_CSSEL_Pos (3UL) /*!< CSSEL (Bit 3) */ + #define R_XSPI0_LPCTL0_CSSEL_Msk (0x8UL) /*!< CSSEL (Bitfield-Mask: 0x01) */ + #define R_XSPI0_LPCTL0_XDPIN_Pos (4UL) /*!< XDPIN (Bit 4) */ + #define R_XSPI0_LPCTL0_XDPIN_Msk (0x30UL) /*!< XDPIN (Bitfield-Mask: 0x03) */ + #define R_XSPI0_LPCTL0_XD1LEN_Pos (16UL) /*!< XD1LEN (Bit 16) */ + #define R_XSPI0_LPCTL0_XD1LEN_Msk (0x1f0000UL) /*!< XD1LEN (Bitfield-Mask: 0x1f) */ + #define R_XSPI0_LPCTL0_XD1VAL_Pos (23UL) /*!< XD1VAL (Bit 23) */ + #define R_XSPI0_LPCTL0_XD1VAL_Msk (0x800000UL) /*!< XD1VAL (Bitfield-Mask: 0x01) */ + #define R_XSPI0_LPCTL0_XD2LEN_Pos (24UL) /*!< XD2LEN (Bit 24) */ + #define R_XSPI0_LPCTL0_XD2LEN_Msk (0x1f000000UL) /*!< XD2LEN (Bitfield-Mask: 0x1f) */ + #define R_XSPI0_LPCTL0_XD2VAL_Pos (31UL) /*!< XD2VAL (Bit 31) */ + #define R_XSPI0_LPCTL0_XD2VAL_Msk (0x80000000UL) /*!< XD2VAL (Bitfield-Mask: 0x01) */ +/* ======================================================== LPCTL1 ========================================================= */ + #define R_XSPI0_LPCTL1_PATREQ_Pos (0UL) /*!< PATREQ (Bit 0) */ + #define R_XSPI0_LPCTL1_PATREQ_Msk (0x3UL) /*!< PATREQ (Bitfield-Mask: 0x03) */ + #define R_XSPI0_LPCTL1_CSSEL_Pos (3UL) /*!< CSSEL (Bit 3) */ + #define R_XSPI0_LPCTL1_CSSEL_Msk (0x8UL) /*!< CSSEL (Bitfield-Mask: 0x01) */ + #define R_XSPI0_LPCTL1_RSTREP_Pos (4UL) /*!< RSTREP (Bit 4) */ + #define R_XSPI0_LPCTL1_RSTREP_Msk (0x30UL) /*!< RSTREP (Bitfield-Mask: 0x03) */ + #define R_XSPI0_LPCTL1_RSTWID_Pos (8UL) /*!< RSTWID (Bit 8) */ + #define R_XSPI0_LPCTL1_RSTWID_Msk (0x700UL) /*!< RSTWID (Bitfield-Mask: 0x07) */ + #define R_XSPI0_LPCTL1_RSTSU_Pos (12UL) /*!< RSTSU (Bit 12) */ + #define R_XSPI0_LPCTL1_RSTSU_Msk (0x7000UL) /*!< RSTSU (Bitfield-Mask: 0x07) */ +/* ======================================================== LIOCTL ========================================================= */ + #define R_XSPI0_LIOCTL_WPCS0_Pos (0UL) /*!< WPCS0 (Bit 0) */ + #define R_XSPI0_LIOCTL_WPCS0_Msk (0x1UL) /*!< WPCS0 (Bitfield-Mask: 0x01) */ + #define R_XSPI0_LIOCTL_WPCS1_Pos (1UL) /*!< WPCS1 (Bit 1) */ + #define R_XSPI0_LIOCTL_WPCS1_Msk (0x2UL) /*!< WPCS1 (Bitfield-Mask: 0x01) */ + #define R_XSPI0_LIOCTL_RSTCS0_Pos (16UL) /*!< RSTCS0 (Bit 16) */ + #define R_XSPI0_LIOCTL_RSTCS0_Msk (0x10000UL) /*!< RSTCS0 (Bitfield-Mask: 0x01) */ + #define R_XSPI0_LIOCTL_RSTCS1_Pos (17UL) /*!< RSTCS1 (Bit 17) */ + #define R_XSPI0_LIOCTL_RSTCS1_Msk (0x20000UL) /*!< RSTCS1 (Bitfield-Mask: 0x01) */ +/* ======================================================== VERSTT ========================================================= */ + #define R_XSPI0_VERSTT_VER_Pos (0UL) /*!< VER (Bit 0) */ + #define R_XSPI0_VERSTT_VER_Msk (0xffffffffUL) /*!< VER (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== COMSTT ========================================================= */ + #define R_XSPI0_COMSTT_MEMACC_Pos (0UL) /*!< MEMACC (Bit 0) */ + #define R_XSPI0_COMSTT_MEMACC_Msk (0x1UL) /*!< MEMACC (Bitfield-Mask: 0x01) */ + #define R_XSPI0_COMSTT_PBUFNE_Pos (4UL) /*!< PBUFNE (Bit 4) */ + #define R_XSPI0_COMSTT_PBUFNE_Msk (0x10UL) /*!< PBUFNE (Bitfield-Mask: 0x01) */ + #define R_XSPI0_COMSTT_WRBUFNE_Pos (6UL) /*!< WRBUFNE (Bit 6) */ + #define R_XSPI0_COMSTT_WRBUFNE_Msk (0x40UL) /*!< WRBUFNE (Bitfield-Mask: 0x01) */ + #define R_XSPI0_COMSTT_ECSCS0_Pos (16UL) /*!< ECSCS0 (Bit 16) */ + #define R_XSPI0_COMSTT_ECSCS0_Msk (0x10000UL) /*!< ECSCS0 (Bitfield-Mask: 0x01) */ + #define R_XSPI0_COMSTT_INTCS0_Pos (17UL) /*!< INTCS0 (Bit 17) */ + #define R_XSPI0_COMSTT_INTCS0_Msk (0x20000UL) /*!< INTCS0 (Bitfield-Mask: 0x01) */ + #define R_XSPI0_COMSTT_RSTOCS0_Pos (18UL) /*!< RSTOCS0 (Bit 18) */ + #define R_XSPI0_COMSTT_RSTOCS0_Msk (0x40000UL) /*!< RSTOCS0 (Bitfield-Mask: 0x01) */ + #define R_XSPI0_COMSTT_ECSCS1_Pos (20UL) /*!< ECSCS1 (Bit 20) */ + #define R_XSPI0_COMSTT_ECSCS1_Msk (0x100000UL) /*!< ECSCS1 (Bitfield-Mask: 0x01) */ + #define R_XSPI0_COMSTT_INTCS1_Pos (21UL) /*!< INTCS1 (Bit 21) */ + #define R_XSPI0_COMSTT_INTCS1_Msk (0x200000UL) /*!< INTCS1 (Bitfield-Mask: 0x01) */ + #define R_XSPI0_COMSTT_RSTOCS1_Pos (22UL) /*!< RSTOCS1 (Bit 22) */ + #define R_XSPI0_COMSTT_RSTOCS1_Msk (0x400000UL) /*!< RSTOCS1 (Bitfield-Mask: 0x01) */ +/* ======================================================== CASTTCS ======================================================== */ + #define R_XSPI0_CASTTCS_CASUC_Pos (0UL) /*!< CASUC (Bit 0) */ + #define R_XSPI0_CASTTCS_CASUC_Msk (0xffffffffUL) /*!< CASUC (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= INTS ========================================================== */ + #define R_XSPI0_INTS_CMDCMP_Pos (0UL) /*!< CMDCMP (Bit 0) */ + #define R_XSPI0_INTS_CMDCMP_Msk (0x1UL) /*!< CMDCMP (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTS_PATCMP_Pos (1UL) /*!< PATCMP (Bit 1) */ + #define R_XSPI0_INTS_PATCMP_Msk (0x2UL) /*!< PATCMP (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTS_INICMP_Pos (2UL) /*!< INICMP (Bit 2) */ + #define R_XSPI0_INTS_INICMP_Msk (0x4UL) /*!< INICMP (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTS_PERTO_Pos (3UL) /*!< PERTO (Bit 3) */ + #define R_XSPI0_INTS_PERTO_Msk (0x8UL) /*!< PERTO (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTS_DSTOCS0_Pos (4UL) /*!< DSTOCS0 (Bit 4) */ + #define R_XSPI0_INTS_DSTOCS0_Msk (0x10UL) /*!< DSTOCS0 (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTS_DSTOCS1_Pos (5UL) /*!< DSTOCS1 (Bit 5) */ + #define R_XSPI0_INTS_DSTOCS1_Msk (0x20UL) /*!< DSTOCS1 (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTS_ECSCS0_Pos (8UL) /*!< ECSCS0 (Bit 8) */ + #define R_XSPI0_INTS_ECSCS0_Msk (0x100UL) /*!< ECSCS0 (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTS_ECSCS1_Pos (9UL) /*!< ECSCS1 (Bit 9) */ + #define R_XSPI0_INTS_ECSCS1_Msk (0x200UL) /*!< ECSCS1 (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTS_INTCS0_Pos (12UL) /*!< INTCS0 (Bit 12) */ + #define R_XSPI0_INTS_INTCS0_Msk (0x1000UL) /*!< INTCS0 (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTS_INTCS1_Pos (13UL) /*!< INTCS1 (Bit 13) */ + #define R_XSPI0_INTS_INTCS1_Msk (0x2000UL) /*!< INTCS1 (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTS_BRGOF_Pos (16UL) /*!< BRGOF (Bit 16) */ + #define R_XSPI0_INTS_BRGOF_Msk (0x10000UL) /*!< BRGOF (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTS_BRGUF_Pos (18UL) /*!< BRGUF (Bit 18) */ + #define R_XSPI0_INTS_BRGUF_Msk (0x40000UL) /*!< BRGUF (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTS_BUSERR_Pos (20UL) /*!< BUSERR (Bit 20) */ + #define R_XSPI0_INTS_BUSERR_Msk (0x100000UL) /*!< BUSERR (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTS_CAFAILCS0_Pos (28UL) /*!< CAFAILCS0 (Bit 28) */ + #define R_XSPI0_INTS_CAFAILCS0_Msk (0x10000000UL) /*!< CAFAILCS0 (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTS_CAFAILCS1_Pos (29UL) /*!< CAFAILCS1 (Bit 29) */ + #define R_XSPI0_INTS_CAFAILCS1_Msk (0x20000000UL) /*!< CAFAILCS1 (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTS_CASUCCS0_Pos (30UL) /*!< CASUCCS0 (Bit 30) */ + #define R_XSPI0_INTS_CASUCCS0_Msk (0x40000000UL) /*!< CASUCCS0 (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTS_CASUCCS1_Pos (31UL) /*!< CASUCCS1 (Bit 31) */ + #define R_XSPI0_INTS_CASUCCS1_Msk (0x80000000UL) /*!< CASUCCS1 (Bitfield-Mask: 0x01) */ +/* ========================================================= INTC ========================================================== */ + #define R_XSPI0_INTC_CMDCMPC_Pos (0UL) /*!< CMDCMPC (Bit 0) */ + #define R_XSPI0_INTC_CMDCMPC_Msk (0x1UL) /*!< CMDCMPC (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTC_PATCMPC_Pos (1UL) /*!< PATCMPC (Bit 1) */ + #define R_XSPI0_INTC_PATCMPC_Msk (0x2UL) /*!< PATCMPC (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTC_INICMPC_Pos (2UL) /*!< INICMPC (Bit 2) */ + #define R_XSPI0_INTC_INICMPC_Msk (0x4UL) /*!< INICMPC (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTC_PERTOC_Pos (3UL) /*!< PERTOC (Bit 3) */ + #define R_XSPI0_INTC_PERTOC_Msk (0x8UL) /*!< PERTOC (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTC_DSTOCS0C_Pos (4UL) /*!< DSTOCS0C (Bit 4) */ + #define R_XSPI0_INTC_DSTOCS0C_Msk (0x10UL) /*!< DSTOCS0C (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTC_DSTOCS1C_Pos (5UL) /*!< DSTOCS1C (Bit 5) */ + #define R_XSPI0_INTC_DSTOCS1C_Msk (0x20UL) /*!< DSTOCS1C (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTC_ECSCS0C_Pos (8UL) /*!< ECSCS0C (Bit 8) */ + #define R_XSPI0_INTC_ECSCS0C_Msk (0x100UL) /*!< ECSCS0C (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTC_ECSCS1C_Pos (9UL) /*!< ECSCS1C (Bit 9) */ + #define R_XSPI0_INTC_ECSCS1C_Msk (0x200UL) /*!< ECSCS1C (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTC_INTCS0C_Pos (12UL) /*!< INTCS0C (Bit 12) */ + #define R_XSPI0_INTC_INTCS0C_Msk (0x1000UL) /*!< INTCS0C (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTC_INTCS1C_Pos (13UL) /*!< INTCS1C (Bit 13) */ + #define R_XSPI0_INTC_INTCS1C_Msk (0x2000UL) /*!< INTCS1C (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTC_BRGOFC_Pos (16UL) /*!< BRGOFC (Bit 16) */ + #define R_XSPI0_INTC_BRGOFC_Msk (0x10000UL) /*!< BRGOFC (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTC_BRGUFC_Pos (18UL) /*!< BRGUFC (Bit 18) */ + #define R_XSPI0_INTC_BRGUFC_Msk (0x40000UL) /*!< BRGUFC (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTC_BUSERRC_Pos (20UL) /*!< BUSERRC (Bit 20) */ + #define R_XSPI0_INTC_BUSERRC_Msk (0x100000UL) /*!< BUSERRC (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTC_CAFAILCS0C_Pos (28UL) /*!< CAFAILCS0C (Bit 28) */ + #define R_XSPI0_INTC_CAFAILCS0C_Msk (0x10000000UL) /*!< CAFAILCS0C (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTC_CAFAILCS1C_Pos (29UL) /*!< CAFAILCS1C (Bit 29) */ + #define R_XSPI0_INTC_CAFAILCS1C_Msk (0x20000000UL) /*!< CAFAILCS1C (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTC_CASUCCS0C_Pos (30UL) /*!< CASUCCS0C (Bit 30) */ + #define R_XSPI0_INTC_CASUCCS0C_Msk (0x40000000UL) /*!< CASUCCS0C (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTC_CASUCCS1C_Pos (31UL) /*!< CASUCCS1C (Bit 31) */ + #define R_XSPI0_INTC_CASUCCS1C_Msk (0x80000000UL) /*!< CASUCCS1C (Bitfield-Mask: 0x01) */ +/* ========================================================= INTE ========================================================== */ + #define R_XSPI0_INTE_CMDCMPE_Pos (0UL) /*!< CMDCMPE (Bit 0) */ + #define R_XSPI0_INTE_CMDCMPE_Msk (0x1UL) /*!< CMDCMPE (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTE_PATCMPE_Pos (1UL) /*!< PATCMPE (Bit 1) */ + #define R_XSPI0_INTE_PATCMPE_Msk (0x2UL) /*!< PATCMPE (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTE_INICMPE_Pos (2UL) /*!< INICMPE (Bit 2) */ + #define R_XSPI0_INTE_INICMPE_Msk (0x4UL) /*!< INICMPE (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTE_PERTOE_Pos (3UL) /*!< PERTOE (Bit 3) */ + #define R_XSPI0_INTE_PERTOE_Msk (0x8UL) /*!< PERTOE (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTE_DSTOCS0E_Pos (4UL) /*!< DSTOCS0E (Bit 4) */ + #define R_XSPI0_INTE_DSTOCS0E_Msk (0x10UL) /*!< DSTOCS0E (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTE_DSTOCS1E_Pos (5UL) /*!< DSTOCS1E (Bit 5) */ + #define R_XSPI0_INTE_DSTOCS1E_Msk (0x20UL) /*!< DSTOCS1E (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTE_ECSCS0E_Pos (8UL) /*!< ECSCS0E (Bit 8) */ + #define R_XSPI0_INTE_ECSCS0E_Msk (0x100UL) /*!< ECSCS0E (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTE_ECSCS1E_Pos (9UL) /*!< ECSCS1E (Bit 9) */ + #define R_XSPI0_INTE_ECSCS1E_Msk (0x200UL) /*!< ECSCS1E (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTE_INTCS0E_Pos (12UL) /*!< INTCS0E (Bit 12) */ + #define R_XSPI0_INTE_INTCS0E_Msk (0x1000UL) /*!< INTCS0E (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTE_INTCS1E_Pos (13UL) /*!< INTCS1E (Bit 13) */ + #define R_XSPI0_INTE_INTCS1E_Msk (0x2000UL) /*!< INTCS1E (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTE_BRGOFE_Pos (16UL) /*!< BRGOFE (Bit 16) */ + #define R_XSPI0_INTE_BRGOFE_Msk (0x10000UL) /*!< BRGOFE (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTE_BRGUFE_Pos (18UL) /*!< BRGUFE (Bit 18) */ + #define R_XSPI0_INTE_BRGUFE_Msk (0x40000UL) /*!< BRGUFE (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTE_BUSERRE_Pos (20UL) /*!< BUSERRE (Bit 20) */ + #define R_XSPI0_INTE_BUSERRE_Msk (0x100000UL) /*!< BUSERRE (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTE_CAFAILCS0E_Pos (28UL) /*!< CAFAILCS0E (Bit 28) */ + #define R_XSPI0_INTE_CAFAILCS0E_Msk (0x10000000UL) /*!< CAFAILCS0E (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTE_CAFAILCS1E_Pos (29UL) /*!< CAFAILCS1E (Bit 29) */ + #define R_XSPI0_INTE_CAFAILCS1E_Msk (0x20000000UL) /*!< CAFAILCS1E (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTE_CASUCCS0E_Pos (30UL) /*!< CASUCCS0E (Bit 30) */ + #define R_XSPI0_INTE_CASUCCS0E_Msk (0x40000000UL) /*!< CASUCCS0E (Bitfield-Mask: 0x01) */ + #define R_XSPI0_INTE_CASUCCS1E_Pos (31UL) /*!< CASUCCS1E (Bit 31) */ + #define R_XSPI0_INTE_CASUCCS1E_Msk (0x80000000UL) /*!< CASUCCS1E (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_MBXSEM ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== SEM ========================================================== */ + #define R_MBXSEM_SEM_SEM_Pos (0UL) /*!< SEM (Bit 0) */ + #define R_MBXSEM_SEM_SEM_Msk (0x1UL) /*!< SEM (Bitfield-Mask: 0x01) */ +/* ======================================================== SEMRCEN ======================================================== */ + #define R_MBXSEM_SEMRCEN_SEMRCEN0_Pos (0UL) /*!< SEMRCEN0 (Bit 0) */ + #define R_MBXSEM_SEMRCEN_SEMRCEN0_Msk (0x1UL) /*!< SEMRCEN0 (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_SEMRCEN_SEMRCEN1_Pos (1UL) /*!< SEMRCEN1 (Bit 1) */ + #define R_MBXSEM_SEMRCEN_SEMRCEN1_Msk (0x2UL) /*!< SEMRCEN1 (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_SEMRCEN_SEMRCEN2_Pos (2UL) /*!< SEMRCEN2 (Bit 2) */ + #define R_MBXSEM_SEMRCEN_SEMRCEN2_Msk (0x4UL) /*!< SEMRCEN2 (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_SEMRCEN_SEMRCEN3_Pos (3UL) /*!< SEMRCEN3 (Bit 3) */ + #define R_MBXSEM_SEMRCEN_SEMRCEN3_Msk (0x8UL) /*!< SEMRCEN3 (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_SEMRCEN_SEMRCEN4_Pos (4UL) /*!< SEMRCEN4 (Bit 4) */ + #define R_MBXSEM_SEMRCEN_SEMRCEN4_Msk (0x10UL) /*!< SEMRCEN4 (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_SEMRCEN_SEMRCEN5_Pos (5UL) /*!< SEMRCEN5 (Bit 5) */ + #define R_MBXSEM_SEMRCEN_SEMRCEN5_Msk (0x20UL) /*!< SEMRCEN5 (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_SEMRCEN_SEMRCEN6_Pos (6UL) /*!< SEMRCEN6 (Bit 6) */ + #define R_MBXSEM_SEMRCEN_SEMRCEN6_Msk (0x40UL) /*!< SEMRCEN6 (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_SEMRCEN_SEMRCEN7_Pos (7UL) /*!< SEMRCEN7 (Bit 7) */ + #define R_MBXSEM_SEMRCEN_SEMRCEN7_Msk (0x80UL) /*!< SEMRCEN7 (Bitfield-Mask: 0x01) */ +/* ======================================================== MBXH2C ========================================================= */ + #define R_MBXSEM_MBXH2C_MBX_Pos (0UL) /*!< MBX (Bit 0) */ + #define R_MBXSEM_MBXH2C_MBX_Msk (0xffffffffUL) /*!< MBX (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== MBXISETH2C ======================================================= */ + #define R_MBXSEM_MBXISETH2C_MBX_INT0S_Pos (0UL) /*!< MBX_INT0S (Bit 0) */ + #define R_MBXSEM_MBXISETH2C_MBX_INT0S_Msk (0x1UL) /*!< MBX_INT0S (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_MBXISETH2C_MBX_INT1S_Pos (1UL) /*!< MBX_INT1S (Bit 1) */ + #define R_MBXSEM_MBXISETH2C_MBX_INT1S_Msk (0x2UL) /*!< MBX_INT1S (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_MBXISETH2C_MBX_INT2S_Pos (2UL) /*!< MBX_INT2S (Bit 2) */ + #define R_MBXSEM_MBXISETH2C_MBX_INT2S_Msk (0x4UL) /*!< MBX_INT2S (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_MBXISETH2C_MBX_INT3S_Pos (3UL) /*!< MBX_INT3S (Bit 3) */ + #define R_MBXSEM_MBXISETH2C_MBX_INT3S_Msk (0x8UL) /*!< MBX_INT3S (Bitfield-Mask: 0x01) */ +/* ====================================================== MBXICLRH2C ======================================================= */ + #define R_MBXSEM_MBXICLRH2C_MBX_INT0C_Pos (0UL) /*!< MBX_INT0C (Bit 0) */ + #define R_MBXSEM_MBXICLRH2C_MBX_INT0C_Msk (0x1UL) /*!< MBX_INT0C (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_MBXICLRH2C_MBX_INT1C_Pos (1UL) /*!< MBX_INT1C (Bit 1) */ + #define R_MBXSEM_MBXICLRH2C_MBX_INT1C_Msk (0x2UL) /*!< MBX_INT1C (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_MBXICLRH2C_MBX_INT2C_Pos (2UL) /*!< MBX_INT2C (Bit 2) */ + #define R_MBXSEM_MBXICLRH2C_MBX_INT2C_Msk (0x4UL) /*!< MBX_INT2C (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_MBXICLRH2C_MBX_INT3C_Pos (3UL) /*!< MBX_INT3C (Bit 3) */ + #define R_MBXSEM_MBXICLRH2C_MBX_INT3C_Msk (0x8UL) /*!< MBX_INT3C (Bitfield-Mask: 0x01) */ +/* ======================================================== MBXC2H ========================================================= */ + #define R_MBXSEM_MBXC2H_MBX_Pos (0UL) /*!< MBX (Bit 0) */ + #define R_MBXSEM_MBXC2H_MBX_Msk (0xffffffffUL) /*!< MBX (Bitfield-Mask: 0xffffffff) */ +/* ====================================================== MBXISETC2H ======================================================= */ + #define R_MBXSEM_MBXISETC2H_MBX_HINT0S_Pos (0UL) /*!< MBX_HINT0S (Bit 0) */ + #define R_MBXSEM_MBXISETC2H_MBX_HINT0S_Msk (0x1UL) /*!< MBX_HINT0S (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_MBXISETC2H_MBX_HINT1S_Pos (1UL) /*!< MBX_HINT1S (Bit 1) */ + #define R_MBXSEM_MBXISETC2H_MBX_HINT1S_Msk (0x2UL) /*!< MBX_HINT1S (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_MBXISETC2H_MBX_HINT2S_Pos (2UL) /*!< MBX_HINT2S (Bit 2) */ + #define R_MBXSEM_MBXISETC2H_MBX_HINT2S_Msk (0x4UL) /*!< MBX_HINT2S (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_MBXISETC2H_MBX_HINT3S_Pos (3UL) /*!< MBX_HINT3S (Bit 3) */ + #define R_MBXSEM_MBXISETC2H_MBX_HINT3S_Msk (0x8UL) /*!< MBX_HINT3S (Bitfield-Mask: 0x01) */ +/* ====================================================== MBXICLRC2H ======================================================= */ + #define R_MBXSEM_MBXICLRC2H_MBX_HINT0C_Pos (0UL) /*!< MBX_HINT0C (Bit 0) */ + #define R_MBXSEM_MBXICLRC2H_MBX_HINT0C_Msk (0x1UL) /*!< MBX_HINT0C (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_MBXICLRC2H_MBX_HINT1C_Pos (1UL) /*!< MBX_HINT1C (Bit 1) */ + #define R_MBXSEM_MBXICLRC2H_MBX_HINT1C_Msk (0x2UL) /*!< MBX_HINT1C (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_MBXICLRC2H_MBX_HINT2C_Pos (2UL) /*!< MBX_HINT2C (Bit 2) */ + #define R_MBXSEM_MBXICLRC2H_MBX_HINT2C_Msk (0x4UL) /*!< MBX_HINT2C (Bitfield-Mask: 0x01) */ + #define R_MBXSEM_MBXICLRC2H_MBX_HINT3C_Pos (3UL) /*!< MBX_HINT3C (Bit 3) */ + #define R_MBXSEM_MBXICLRC2H_MBX_HINT3C_Msk (0x8UL) /*!< MBX_HINT3C (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_SHOSTIF ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== CTRLR0 ========================================================= */ + #define R_SHOSTIF_CTRLR0_SCPH_Pos (8UL) /*!< SCPH (Bit 8) */ + #define R_SHOSTIF_CTRLR0_SCPH_Msk (0x100UL) /*!< SCPH (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_CTRLR0_SCPOL_Pos (9UL) /*!< SCPOL (Bit 9) */ + #define R_SHOSTIF_CTRLR0_SCPOL_Msk (0x200UL) /*!< SCPOL (Bitfield-Mask: 0x01) */ +/* ========================================================== ENR ========================================================== */ + #define R_SHOSTIF_ENR_ENABLE_Pos (0UL) /*!< ENABLE (Bit 0) */ + #define R_SHOSTIF_ENR_ENABLE_Msk (0x1UL) /*!< ENABLE (Bitfield-Mask: 0x01) */ +/* ======================================================== RXFBTR ========================================================= */ + #define R_SHOSTIF_RXFBTR_RXFBTL_Pos (0UL) /*!< RXFBTL (Bit 0) */ + #define R_SHOSTIF_RXFBTR_RXFBTL_Msk (0x3fUL) /*!< RXFBTL (Bitfield-Mask: 0x3f) */ +/* ======================================================== TXFTLR ========================================================= */ + #define R_SHOSTIF_TXFTLR_TFT_Pos (0UL) /*!< TFT (Bit 0) */ + #define R_SHOSTIF_TXFTLR_TFT_Msk (0x3fUL) /*!< TFT (Bitfield-Mask: 0x3f) */ +/* ======================================================== RXFTLR ========================================================= */ + #define R_SHOSTIF_RXFTLR_RFT_Pos (0UL) /*!< RFT (Bit 0) */ + #define R_SHOSTIF_RXFTLR_RFT_Msk (0x3fUL) /*!< RFT (Bitfield-Mask: 0x3f) */ +/* ========================================================== SR =========================================================== */ + #define R_SHOSTIF_SR_BUSY_Pos (0UL) /*!< BUSY (Bit 0) */ + #define R_SHOSTIF_SR_BUSY_Msk (0x1UL) /*!< BUSY (Bitfield-Mask: 0x01) */ +/* ========================================================== IMR ========================================================== */ + #define R_SHOSTIF_IMR_TXEIM_Pos (0UL) /*!< TXEIM (Bit 0) */ + #define R_SHOSTIF_IMR_TXEIM_Msk (0x1UL) /*!< TXEIM (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_IMR_RXOIM_Pos (3UL) /*!< RXOIM (Bit 3) */ + #define R_SHOSTIF_IMR_RXOIM_Msk (0x8UL) /*!< RXOIM (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_IMR_RXFIM_Pos (4UL) /*!< RXFIM (Bit 4) */ + #define R_SHOSTIF_IMR_RXFIM_Msk (0x10UL) /*!< RXFIM (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_IMR_TXUIM_Pos (7UL) /*!< TXUIM (Bit 7) */ + #define R_SHOSTIF_IMR_TXUIM_Msk (0x80UL) /*!< TXUIM (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_IMR_AHBEM_Pos (8UL) /*!< AHBEM (Bit 8) */ + #define R_SHOSTIF_IMR_AHBEM_Msk (0x100UL) /*!< AHBEM (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_IMR_SPIMEM_Pos (9UL) /*!< SPIMEM (Bit 9) */ + #define R_SHOSTIF_IMR_SPIMEM_Msk (0x200UL) /*!< SPIMEM (Bitfield-Mask: 0x01) */ +/* ========================================================== ISR ========================================================== */ + #define R_SHOSTIF_ISR_TXEIS_Pos (0UL) /*!< TXEIS (Bit 0) */ + #define R_SHOSTIF_ISR_TXEIS_Msk (0x1UL) /*!< TXEIS (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_ISR_RXOIS_Pos (3UL) /*!< RXOIS (Bit 3) */ + #define R_SHOSTIF_ISR_RXOIS_Msk (0x8UL) /*!< RXOIS (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_ISR_RXFIS_Pos (4UL) /*!< RXFIS (Bit 4) */ + #define R_SHOSTIF_ISR_RXFIS_Msk (0x10UL) /*!< RXFIS (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_ISR_TXUIS_Pos (7UL) /*!< TXUIS (Bit 7) */ + #define R_SHOSTIF_ISR_TXUIS_Msk (0x80UL) /*!< TXUIS (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_ISR_AHBES_Pos (8UL) /*!< AHBES (Bit 8) */ + #define R_SHOSTIF_ISR_AHBES_Msk (0x100UL) /*!< AHBES (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_ISR_SPIMES_Pos (9UL) /*!< SPIMES (Bit 9) */ + #define R_SHOSTIF_ISR_SPIMES_Msk (0x200UL) /*!< SPIMES (Bitfield-Mask: 0x01) */ +/* ========================================================= RISR ========================================================== */ + #define R_SHOSTIF_RISR_TXEIR_Pos (0UL) /*!< TXEIR (Bit 0) */ + #define R_SHOSTIF_RISR_TXEIR_Msk (0x1UL) /*!< TXEIR (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_RISR_RXOIR_Pos (3UL) /*!< RXOIR (Bit 3) */ + #define R_SHOSTIF_RISR_RXOIR_Msk (0x8UL) /*!< RXOIR (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_RISR_RXFIR_Pos (4UL) /*!< RXFIR (Bit 4) */ + #define R_SHOSTIF_RISR_RXFIR_Msk (0x10UL) /*!< RXFIR (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_RISR_TXUIR_Pos (7UL) /*!< TXUIR (Bit 7) */ + #define R_SHOSTIF_RISR_TXUIR_Msk (0x80UL) /*!< TXUIR (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_RISR_AHBER_Pos (8UL) /*!< AHBER (Bit 8) */ + #define R_SHOSTIF_RISR_AHBER_Msk (0x100UL) /*!< AHBER (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_RISR_SPIMER_Pos (9UL) /*!< SPIMER (Bit 9) */ + #define R_SHOSTIF_RISR_SPIMER_Msk (0x200UL) /*!< SPIMER (Bitfield-Mask: 0x01) */ +/* ======================================================== TXUICR ========================================================= */ + #define R_SHOSTIF_TXUICR_TXUICR_Pos (0UL) /*!< TXUICR (Bit 0) */ + #define R_SHOSTIF_TXUICR_TXUICR_Msk (0x1UL) /*!< TXUICR (Bitfield-Mask: 0x01) */ +/* ======================================================== RXOICR ========================================================= */ + #define R_SHOSTIF_RXOICR_RXOICR_Pos (0UL) /*!< RXOICR (Bit 0) */ + #define R_SHOSTIF_RXOICR_RXOICR_Msk (0x1UL) /*!< RXOICR (Bitfield-Mask: 0x01) */ +/* ======================================================== SPIMECR ======================================================== */ + #define R_SHOSTIF_SPIMECR_SPIMECR_Pos (0UL) /*!< SPIMECR (Bit 0) */ + #define R_SHOSTIF_SPIMECR_SPIMECR_Msk (0x1UL) /*!< SPIMECR (Bitfield-Mask: 0x01) */ +/* ======================================================== AHBECR ========================================================= */ + #define R_SHOSTIF_AHBECR_AHBECR_Pos (0UL) /*!< AHBECR (Bit 0) */ + #define R_SHOSTIF_AHBECR_AHBECR_Msk (0x1UL) /*!< AHBECR (Bitfield-Mask: 0x01) */ +/* ========================================================== ICR ========================================================== */ + #define R_SHOSTIF_ICR_ICR_Pos (0UL) /*!< ICR (Bit 0) */ + #define R_SHOSTIF_ICR_ICR_Msk (0x1UL) /*!< ICR (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_PHOSTIF ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== HIFBCC ========================================================= */ + #define R_PHOSTIF_HIFBCC_RBUFON0_Pos (0UL) /*!< RBUFON0 (Bit 0) */ + #define R_PHOSTIF_HIFBCC_RBUFON0_Msk (0x1UL) /*!< RBUFON0 (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFBCC_RBUFON1_Pos (1UL) /*!< RBUFON1 (Bit 1) */ + #define R_PHOSTIF_HIFBCC_RBUFON1_Msk (0x2UL) /*!< RBUFON1 (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFBCC_RBUFON2_Pos (2UL) /*!< RBUFON2 (Bit 2) */ + #define R_PHOSTIF_HIFBCC_RBUFON2_Msk (0x4UL) /*!< RBUFON2 (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFBCC_RBUFON3_Pos (3UL) /*!< RBUFON3 (Bit 3) */ + #define R_PHOSTIF_HIFBCC_RBUFON3_Msk (0x8UL) /*!< RBUFON3 (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFBCC_RBUFON4_Pos (4UL) /*!< RBUFON4 (Bit 4) */ + #define R_PHOSTIF_HIFBCC_RBUFON4_Msk (0x10UL) /*!< RBUFON4 (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFBCC_RBUFON5_Pos (5UL) /*!< RBUFON5 (Bit 5) */ + #define R_PHOSTIF_HIFBCC_RBUFON5_Msk (0x20UL) /*!< RBUFON5 (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFBCC_RBUFONX_Pos (8UL) /*!< RBUFONX (Bit 8) */ + #define R_PHOSTIF_HIFBCC_RBUFONX_Msk (0x100UL) /*!< RBUFONX (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFBCC_BSTON_Pos (12UL) /*!< BSTON (Bit 12) */ + #define R_PHOSTIF_HIFBCC_BSTON_Msk (0x1000UL) /*!< BSTON (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFBCC_WRPON_Pos (13UL) /*!< WRPON (Bit 13) */ + #define R_PHOSTIF_HIFBCC_WRPON_Msk (0x2000UL) /*!< WRPON (Bitfield-Mask: 0x01) */ +/* ======================================================== HIFBTC ========================================================= */ + #define R_PHOSTIF_HIFBTC_WRSTD_Pos (0UL) /*!< WRSTD (Bit 0) */ + #define R_PHOSTIF_HIFBTC_WRSTD_Msk (0x7UL) /*!< WRSTD (Bitfield-Mask: 0x07) */ + #define R_PHOSTIF_HIFBTC_RDSTD_Pos (4UL) /*!< RDSTD (Bit 4) */ + #define R_PHOSTIF_HIFBTC_RDSTD_Msk (0x30UL) /*!< RDSTD (Bitfield-Mask: 0x03) */ + #define R_PHOSTIF_HIFBTC_PASTD_Pos (8UL) /*!< PASTD (Bit 8) */ + #define R_PHOSTIF_HIFBTC_PASTD_Msk (0x700UL) /*!< PASTD (Bitfield-Mask: 0x07) */ + #define R_PHOSTIF_HIFBTC_RDDTS_Pos (12UL) /*!< RDDTS (Bit 12) */ + #define R_PHOSTIF_HIFBTC_RDDTS_Msk (0x3000UL) /*!< RDDTS (Bitfield-Mask: 0x03) */ +/* ======================================================== HIFPRC ========================================================= */ + #define R_PHOSTIF_HIFPRC_PAGEON0_Pos (0UL) /*!< PAGEON0 (Bit 0) */ + #define R_PHOSTIF_HIFPRC_PAGEON0_Msk (0x1UL) /*!< PAGEON0 (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFPRC_PAGEON1_Pos (1UL) /*!< PAGEON1 (Bit 1) */ + #define R_PHOSTIF_HIFPRC_PAGEON1_Msk (0x2UL) /*!< PAGEON1 (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFPRC_PAGEON2_Pos (2UL) /*!< PAGEON2 (Bit 2) */ + #define R_PHOSTIF_HIFPRC_PAGEON2_Msk (0x4UL) /*!< PAGEON2 (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFPRC_PAGEON3_Pos (3UL) /*!< PAGEON3 (Bit 3) */ + #define R_PHOSTIF_HIFPRC_PAGEON3_Msk (0x8UL) /*!< PAGEON3 (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFPRC_PAGEON4_Pos (4UL) /*!< PAGEON4 (Bit 4) */ + #define R_PHOSTIF_HIFPRC_PAGEON4_Msk (0x10UL) /*!< PAGEON4 (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFPRC_PAGEON5_Pos (5UL) /*!< PAGEON5 (Bit 5) */ + #define R_PHOSTIF_HIFPRC_PAGEON5_Msk (0x20UL) /*!< PAGEON5 (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFPRC_PAGEONX_Pos (8UL) /*!< PAGEONX (Bit 8) */ + #define R_PHOSTIF_HIFPRC_PAGEONX_Msk (0x100UL) /*!< PAGEONX (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFPRC_PAGESZ_Pos (12UL) /*!< PAGESZ (Bit 12) */ + #define R_PHOSTIF_HIFPRC_PAGESZ_Msk (0x1000UL) /*!< PAGESZ (Bitfield-Mask: 0x01) */ +/* ======================================================== HIFIRC ========================================================= */ + #define R_PHOSTIF_HIFIRC_ERRRSP_Pos (0UL) /*!< ERRRSP (Bit 0) */ + #define R_PHOSTIF_HIFIRC_ERRRSP_Msk (0x1UL) /*!< ERRRSP (Bitfield-Mask: 0x01) */ +/* ======================================================== HIFECR0 ======================================================== */ + #define R_PHOSTIF_HIFECR0_ERRADDR_Pos (0UL) /*!< ERRADDR (Bit 0) */ + #define R_PHOSTIF_HIFECR0_ERRADDR_Msk (0xffffffffUL) /*!< ERRADDR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== HIFECR1 ======================================================== */ + #define R_PHOSTIF_HIFECR1_ERRSZ_Pos (0UL) /*!< ERRSZ (Bit 0) */ + #define R_PHOSTIF_HIFECR1_ERRSZ_Msk (0x7UL) /*!< ERRSZ (Bitfield-Mask: 0x07) */ + #define R_PHOSTIF_HIFECR1_ERRWR_Pos (3UL) /*!< ERRWR (Bit 3) */ + #define R_PHOSTIF_HIFECR1_ERRWR_Msk (0x8UL) /*!< ERRWR (Bitfield-Mask: 0x01) */ +/* ======================================================== HIFMON1 ======================================================== */ + #define R_PHOSTIF_HIFMON1_HIFRDY_Pos (0UL) /*!< HIFRDY (Bit 0) */ + #define R_PHOSTIF_HIFMON1_HIFRDY_Msk (0x1UL) /*!< HIFRDY (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFMON1_BUSSEL_Pos (1UL) /*!< BUSSEL (Bit 1) */ + #define R_PHOSTIF_HIFMON1_BUSSEL_Msk (0x2UL) /*!< BUSSEL (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFMON1_HIFSYNC_Pos (3UL) /*!< HIFSYNC (Bit 3) */ + #define R_PHOSTIF_HIFMON1_HIFSYNC_Msk (0x8UL) /*!< HIFSYNC (Bitfield-Mask: 0x01) */ +/* ======================================================== HIFMON2 ======================================================== */ + #define R_PHOSTIF_HIFMON2_HIFBCC_Pos (0UL) /*!< HIFBCC (Bit 0) */ + #define R_PHOSTIF_HIFMON2_HIFBCC_Msk (0x1UL) /*!< HIFBCC (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFMON2_HIFBTC_Pos (1UL) /*!< HIFBTC (Bit 1) */ + #define R_PHOSTIF_HIFMON2_HIFBTC_Msk (0x2UL) /*!< HIFBTC (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFMON2_HIFPRC_Pos (2UL) /*!< HIFPRC (Bit 2) */ + #define R_PHOSTIF_HIFMON2_HIFPRC_Msk (0x4UL) /*!< HIFPRC (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFMON2_HIFIRC_Pos (3UL) /*!< HIFIRC (Bit 3) */ + #define R_PHOSTIF_HIFMON2_HIFIRC_Msk (0x8UL) /*!< HIFIRC (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFMON2_HIFXAL_Pos (4UL) /*!< HIFXAL (Bit 4) */ + #define R_PHOSTIF_HIFMON2_HIFXAL_Msk (0x10UL) /*!< HIFXAL (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFMON2_HIFXAH_Pos (5UL) /*!< HIFXAH (Bit 5) */ + #define R_PHOSTIF_HIFMON2_HIFXAH_Msk (0x20UL) /*!< HIFXAH (Bitfield-Mask: 0x01) */ +/* ======================================================== HIFMON3 ======================================================== */ + #define R_PHOSTIF_HIFMON3_HIFEXT0_Pos (0UL) /*!< HIFEXT0 (Bit 0) */ + #define R_PHOSTIF_HIFMON3_HIFEXT0_Msk (0x1UL) /*!< HIFEXT0 (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFMON3_HIFEXT1_Pos (1UL) /*!< HIFEXT1 (Bit 1) */ + #define R_PHOSTIF_HIFMON3_HIFEXT1_Msk (0x2UL) /*!< HIFEXT1 (Bitfield-Mask: 0x01) */ +/* ======================================================== HIFXAL ========================================================= */ + #define R_PHOSTIF_HIFXAL_XADDRL_Pos (0UL) /*!< XADDRL (Bit 0) */ + #define R_PHOSTIF_HIFXAL_XADDRL_Msk (0x1ffUL) /*!< XADDRL (Bitfield-Mask: 0x1ff) */ +/* ======================================================== HIFXAH ========================================================= */ + #define R_PHOSTIF_HIFXAH_XADDRH_Pos (0UL) /*!< XADDRH (Bit 0) */ + #define R_PHOSTIF_HIFXAH_XADDRH_Msk (0x1ffUL) /*!< XADDRH (Bitfield-Mask: 0x1ff) */ +/* ======================================================== HIFEXT0 ======================================================== */ + #define R_PHOSTIF_HIFEXT0_KESSBI_Pos (0UL) /*!< KESSBI (Bit 0) */ + #define R_PHOSTIF_HIFEXT0_KESSBI_Msk (0x1UL) /*!< KESSBI (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFEXT0_KESDTI_Pos (2UL) /*!< KESDTI (Bit 2) */ + #define R_PHOSTIF_HIFEXT0_KESDTI_Msk (0x4UL) /*!< KESDTI (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFEXT0_KESAVI_Pos (3UL) /*!< KESAVI (Bit 3) */ + #define R_PHOSTIF_HIFEXT0_KESAVI_Msk (0x8UL) /*!< KESAVI (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFEXT0_KESDTO_Pos (4UL) /*!< KESDTO (Bit 4) */ + #define R_PHOSTIF_HIFEXT0_KESDTO_Msk (0x10UL) /*!< KESDTO (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFEXT0_KESWTO_Pos (5UL) /*!< KESWTO (Bit 5) */ + #define R_PHOSTIF_HIFEXT0_KESWTO_Msk (0x20UL) /*!< KESWTO (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFEXT0_CNDWEO_Pos (9UL) /*!< CNDWEO (Bit 9) */ + #define R_PHOSTIF_HIFEXT0_CNDWEO_Msk (0x200UL) /*!< CNDWEO (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_HIFEXT0_MODTRN_Pos (15UL) /*!< MODTRN (Bit 15) */ + #define R_PHOSTIF_HIFEXT0_MODTRN_Msk (0x8000UL) /*!< MODTRN (Bitfield-Mask: 0x01) */ +/* ======================================================== HIFEXT1 ======================================================== */ + #define R_PHOSTIF_HIFEXT1_DLYWA_Pos (0UL) /*!< DLYWA (Bit 0) */ + #define R_PHOSTIF_HIFEXT1_DLYWA_Msk (0xfUL) /*!< DLYWA (Bitfield-Mask: 0x0f) */ + #define R_PHOSTIF_HIFEXT1_DLYRA_Pos (8UL) /*!< DLYRA (Bit 8) */ + #define R_PHOSTIF_HIFEXT1_DLYRA_Msk (0xf00UL) /*!< DLYRA (Bitfield-Mask: 0x0f) */ + +/* =========================================================================================================================== */ +/* ================ R_SYSC_NS ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= SCKCR ========================================================= */ + #define R_SYSC_NS_SCKCR_FSELXSPI0_Pos (0UL) /*!< FSELXSPI0 (Bit 0) */ + #define R_SYSC_NS_SCKCR_FSELXSPI0_Msk (0x7UL) /*!< FSELXSPI0 (Bitfield-Mask: 0x07) */ + #define R_SYSC_NS_SCKCR_DIVSELXSPI0_Pos (6UL) /*!< DIVSELXSPI0 (Bit 6) */ + #define R_SYSC_NS_SCKCR_DIVSELXSPI0_Msk (0x40UL) /*!< DIVSELXSPI0 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_SCKCR_FSELXSPI1_Pos (8UL) /*!< FSELXSPI1 (Bit 8) */ + #define R_SYSC_NS_SCKCR_FSELXSPI1_Msk (0x700UL) /*!< FSELXSPI1 (Bitfield-Mask: 0x07) */ + #define R_SYSC_NS_SCKCR_DIVSELXSPI1_Pos (14UL) /*!< DIVSELXSPI1 (Bit 14) */ + #define R_SYSC_NS_SCKCR_DIVSELXSPI1_Msk (0x4000UL) /*!< DIVSELXSPI1 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_SCKCR_CKIO_Pos (16UL) /*!< CKIO (Bit 16) */ + #define R_SYSC_NS_SCKCR_CKIO_Msk (0x70000UL) /*!< CKIO (Bitfield-Mask: 0x07) */ + #define R_SYSC_NS_SCKCR_FSELCANFD_Pos (20UL) /*!< FSELCANFD (Bit 20) */ + #define R_SYSC_NS_SCKCR_FSELCANFD_Msk (0x100000UL) /*!< FSELCANFD (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_SCKCR_PHYSEL_Pos (21UL) /*!< PHYSEL (Bit 21) */ + #define R_SYSC_NS_SCKCR_PHYSEL_Msk (0x200000UL) /*!< PHYSEL (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_SCKCR_CLMASEL_Pos (22UL) /*!< CLMASEL (Bit 22) */ + #define R_SYSC_NS_SCKCR_CLMASEL_Msk (0x400000UL) /*!< CLMASEL (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_SCKCR_SPI0ASYNCSEL_Pos (24UL) /*!< SPI0ASYNCSEL (Bit 24) */ + #define R_SYSC_NS_SCKCR_SPI0ASYNCSEL_Msk (0x1000000UL) /*!< SPI0ASYNCSEL (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_SCKCR_SPI1ASYNCSEL_Pos (25UL) /*!< SPI1ASYNCSEL (Bit 25) */ + #define R_SYSC_NS_SCKCR_SPI1ASYNCSEL_Msk (0x2000000UL) /*!< SPI1ASYNCSEL (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_SCKCR_SPI2ASYNCSEL_Pos (26UL) /*!< SPI2ASYNCSEL (Bit 26) */ + #define R_SYSC_NS_SCKCR_SPI2ASYNCSEL_Msk (0x4000000UL) /*!< SPI2ASYNCSEL (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_SCKCR_SCI0ASYNCSEL_Pos (27UL) /*!< SCI0ASYNCSEL (Bit 27) */ + #define R_SYSC_NS_SCKCR_SCI0ASYNCSEL_Msk (0x8000000UL) /*!< SCI0ASYNCSEL (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_SCKCR_SCI1ASYNCSEL_Pos (28UL) /*!< SCI1ASYNCSEL (Bit 28) */ + #define R_SYSC_NS_SCKCR_SCI1ASYNCSEL_Msk (0x10000000UL) /*!< SCI1ASYNCSEL (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_SCKCR_SCI2ASYNCSEL_Pos (29UL) /*!< SCI2ASYNCSEL (Bit 29) */ + #define R_SYSC_NS_SCKCR_SCI2ASYNCSEL_Msk (0x20000000UL) /*!< SCI2ASYNCSEL (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_SCKCR_SCI3ASYNCSEL_Pos (30UL) /*!< SCI3ASYNCSEL (Bit 30) */ + #define R_SYSC_NS_SCKCR_SCI3ASYNCSEL_Msk (0x40000000UL) /*!< SCI3ASYNCSEL (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_SCKCR_SCI4ASYNCSEL_Pos (31UL) /*!< SCI4ASYNCSEL (Bit 31) */ + #define R_SYSC_NS_SCKCR_SCI4ASYNCSEL_Msk (0x80000000UL) /*!< SCI4ASYNCSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== RSTSR0 ========================================================= */ + #define R_SYSC_NS_RSTSR0_TRF_Pos (1UL) /*!< TRF (Bit 1) */ + #define R_SYSC_NS_RSTSR0_TRF_Msk (0x2UL) /*!< TRF (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_RSTSR0_ERRF_Pos (2UL) /*!< ERRF (Bit 2) */ + #define R_SYSC_NS_RSTSR0_ERRF_Msk (0x4UL) /*!< ERRF (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_RSTSR0_SWRSF_Pos (3UL) /*!< SWRSF (Bit 3) */ + #define R_SYSC_NS_RSTSR0_SWRSF_Msk (0x8UL) /*!< SWRSF (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_RSTSR0_SWR0F_Pos (4UL) /*!< SWR0F (Bit 4) */ + #define R_SYSC_NS_RSTSR0_SWR0F_Msk (0x10UL) /*!< SWR0F (Bitfield-Mask: 0x01) */ +/* ======================================================== MRCTLA ========================================================= */ + #define R_SYSC_NS_MRCTLA_MRCTLA04_Pos (4UL) /*!< MRCTLA04 (Bit 4) */ + #define R_SYSC_NS_MRCTLA_MRCTLA04_Msk (0x10UL) /*!< MRCTLA04 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MRCTLA_MRCTLA05_Pos (5UL) /*!< MRCTLA05 (Bit 5) */ + #define R_SYSC_NS_MRCTLA_MRCTLA05_Msk (0x20UL) /*!< MRCTLA05 (Bitfield-Mask: 0x01) */ +/* ======================================================== MRCTLE ========================================================= */ + #define R_SYSC_NS_MRCTLE_MRCTLE00_Pos (0UL) /*!< MRCTLE00 (Bit 0) */ + #define R_SYSC_NS_MRCTLE_MRCTLE00_Msk (0x1UL) /*!< MRCTLE00 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MRCTLE_MRCTLE01_Pos (1UL) /*!< MRCTLE01 (Bit 1) */ + #define R_SYSC_NS_MRCTLE_MRCTLE01_Msk (0x2UL) /*!< MRCTLE01 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MRCTLE_MRCTLE02_Pos (2UL) /*!< MRCTLE02 (Bit 2) */ + #define R_SYSC_NS_MRCTLE_MRCTLE02_Msk (0x4UL) /*!< MRCTLE02 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MRCTLE_MRCTLE03_Pos (3UL) /*!< MRCTLE03 (Bit 3) */ + #define R_SYSC_NS_MRCTLE_MRCTLE03_Msk (0x8UL) /*!< MRCTLE03 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MRCTLE_MRCTLE04_Pos (4UL) /*!< MRCTLE04 (Bit 4) */ + #define R_SYSC_NS_MRCTLE_MRCTLE04_Msk (0x10UL) /*!< MRCTLE04 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MRCTLE_MRCTLE05_Pos (5UL) /*!< MRCTLE05 (Bit 5) */ + #define R_SYSC_NS_MRCTLE_MRCTLE05_Msk (0x20UL) /*!< MRCTLE05 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MRCTLE_MRCTLE06_Pos (6UL) /*!< MRCTLE06 (Bit 6) */ + #define R_SYSC_NS_MRCTLE_MRCTLE06_Msk (0x40UL) /*!< MRCTLE06 (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRA ======================================================== */ + #define R_SYSC_NS_MSTPCRA_MSTPCRA00_Pos (0UL) /*!< MSTPCRA00 (Bit 0) */ + #define R_SYSC_NS_MSTPCRA_MSTPCRA00_Msk (0x1UL) /*!< MSTPCRA00 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRA_MSTPCRA04_Pos (4UL) /*!< MSTPCRA04 (Bit 4) */ + #define R_SYSC_NS_MSTPCRA_MSTPCRA04_Msk (0x10UL) /*!< MSTPCRA04 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRA_MSTPCRA05_Pos (5UL) /*!< MSTPCRA05 (Bit 5) */ + #define R_SYSC_NS_MSTPCRA_MSTPCRA05_Msk (0x20UL) /*!< MSTPCRA05 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRA_MSTPCRA08_Pos (8UL) /*!< MSTPCRA08 (Bit 8) */ + #define R_SYSC_NS_MSTPCRA_MSTPCRA08_Msk (0x100UL) /*!< MSTPCRA08 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRA_MSTPCRA09_Pos (9UL) /*!< MSTPCRA09 (Bit 9) */ + #define R_SYSC_NS_MSTPCRA_MSTPCRA09_Msk (0x200UL) /*!< MSTPCRA09 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRA_MSTPCRA10_Pos (10UL) /*!< MSTPCRA10 (Bit 10) */ + #define R_SYSC_NS_MSTPCRA_MSTPCRA10_Msk (0x400UL) /*!< MSTPCRA10 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRA_MSTPCRA11_Pos (11UL) /*!< MSTPCRA11 (Bit 11) */ + #define R_SYSC_NS_MSTPCRA_MSTPCRA11_Msk (0x800UL) /*!< MSTPCRA11 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRA_MSTPCRA12_Pos (12UL) /*!< MSTPCRA12 (Bit 12) */ + #define R_SYSC_NS_MSTPCRA_MSTPCRA12_Msk (0x1000UL) /*!< MSTPCRA12 (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRB ======================================================== */ + #define R_SYSC_NS_MSTPCRB_MSTPCRB00_Pos (0UL) /*!< MSTPCRB00 (Bit 0) */ + #define R_SYSC_NS_MSTPCRB_MSTPCRB00_Msk (0x1UL) /*!< MSTPCRB00 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRB_MSTPCRB01_Pos (1UL) /*!< MSTPCRB01 (Bit 1) */ + #define R_SYSC_NS_MSTPCRB_MSTPCRB01_Msk (0x2UL) /*!< MSTPCRB01 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRB_MSTPCRB04_Pos (4UL) /*!< MSTPCRB04 (Bit 4) */ + #define R_SYSC_NS_MSTPCRB_MSTPCRB04_Msk (0x10UL) /*!< MSTPCRB04 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRB_MSTPCRB05_Pos (5UL) /*!< MSTPCRB05 (Bit 5) */ + #define R_SYSC_NS_MSTPCRB_MSTPCRB05_Msk (0x20UL) /*!< MSTPCRB05 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRB_MSTPCRB06_Pos (6UL) /*!< MSTPCRB06 (Bit 6) */ + #define R_SYSC_NS_MSTPCRB_MSTPCRB06_Msk (0x40UL) /*!< MSTPCRB06 (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRC ======================================================== */ + #define R_SYSC_NS_MSTPCRC_MSTPCRC00_Pos (0UL) /*!< MSTPCRC00 (Bit 0) */ + #define R_SYSC_NS_MSTPCRC_MSTPCRC00_Msk (0x1UL) /*!< MSTPCRC00 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRC_MSTPCRC01_Pos (1UL) /*!< MSTPCRC01 (Bit 1) */ + #define R_SYSC_NS_MSTPCRC_MSTPCRC01_Msk (0x2UL) /*!< MSTPCRC01 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRC_MSTPCRC02_Pos (2UL) /*!< MSTPCRC02 (Bit 2) */ + #define R_SYSC_NS_MSTPCRC_MSTPCRC02_Msk (0x4UL) /*!< MSTPCRC02 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRC_MSTPCRC05_Pos (5UL) /*!< MSTPCRC05 (Bit 5) */ + #define R_SYSC_NS_MSTPCRC_MSTPCRC05_Msk (0x20UL) /*!< MSTPCRC05 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRC_MSTPCRC06_Pos (6UL) /*!< MSTPCRC06 (Bit 6) */ + #define R_SYSC_NS_MSTPCRC_MSTPCRC06_Msk (0x40UL) /*!< MSTPCRC06 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRC_MSTPCRC07_Pos (7UL) /*!< MSTPCRC07 (Bit 7) */ + #define R_SYSC_NS_MSTPCRC_MSTPCRC07_Msk (0x80UL) /*!< MSTPCRC07 (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRD ======================================================== */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD00_Pos (0UL) /*!< MSTPCRD00 (Bit 0) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD00_Msk (0x1UL) /*!< MSTPCRD00 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD01_Pos (1UL) /*!< MSTPCRD01 (Bit 1) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD01_Msk (0x2UL) /*!< MSTPCRD01 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD02_Pos (2UL) /*!< MSTPCRD02 (Bit 2) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD02_Msk (0x4UL) /*!< MSTPCRD02 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD03_Pos (3UL) /*!< MSTPCRD03 (Bit 3) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD03_Msk (0x8UL) /*!< MSTPCRD03 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD04_Pos (4UL) /*!< MSTPCRD04 (Bit 4) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD04_Msk (0x10UL) /*!< MSTPCRD04 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD05_Pos (5UL) /*!< MSTPCRD05 (Bit 5) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD05_Msk (0x20UL) /*!< MSTPCRD05 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD06_Pos (6UL) /*!< MSTPCRD06 (Bit 6) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD06_Msk (0x40UL) /*!< MSTPCRD06 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD07_Pos (7UL) /*!< MSTPCRD07 (Bit 7) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD07_Msk (0x80UL) /*!< MSTPCRD07 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD08_Pos (8UL) /*!< MSTPCRD08 (Bit 8) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD08_Msk (0x100UL) /*!< MSTPCRD08 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD09_Pos (9UL) /*!< MSTPCRD09 (Bit 9) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD09_Msk (0x200UL) /*!< MSTPCRD09 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD10_Pos (10UL) /*!< MSTPCRD10 (Bit 10) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD10_Msk (0x400UL) /*!< MSTPCRD10 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD11_Pos (11UL) /*!< MSTPCRD11 (Bit 11) */ + #define R_SYSC_NS_MSTPCRD_MSTPCRD11_Msk (0x800UL) /*!< MSTPCRD11 (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRE ======================================================== */ + #define R_SYSC_NS_MSTPCRE_MSTPCRE00_Pos (0UL) /*!< MSTPCRE00 (Bit 0) */ + #define R_SYSC_NS_MSTPCRE_MSTPCRE00_Msk (0x1UL) /*!< MSTPCRE00 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRE_MSTPCRE01_Pos (1UL) /*!< MSTPCRE01 (Bit 1) */ + #define R_SYSC_NS_MSTPCRE_MSTPCRE01_Msk (0x2UL) /*!< MSTPCRE01 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRE_MSTPCRE02_Pos (2UL) /*!< MSTPCRE02 (Bit 2) */ + #define R_SYSC_NS_MSTPCRE_MSTPCRE02_Msk (0x4UL) /*!< MSTPCRE02 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRE_MSTPCRE03_Pos (3UL) /*!< MSTPCRE03 (Bit 3) */ + #define R_SYSC_NS_MSTPCRE_MSTPCRE03_Msk (0x8UL) /*!< MSTPCRE03 (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MSTPCRE_MSTPCRE08_Pos (8UL) /*!< MSTPCRE08 (Bit 8) */ + #define R_SYSC_NS_MSTPCRE_MSTPCRE08_Msk (0x100UL) /*!< MSTPCRE08 (Bitfield-Mask: 0x01) */ +/* ======================================================== MD_MON ========================================================= */ + #define R_SYSC_NS_MD_MON_MDDMON_Pos (0UL) /*!< MDDMON (Bit 0) */ + #define R_SYSC_NS_MD_MON_MDDMON_Msk (0x1UL) /*!< MDDMON (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MD_MON_MDP_Pos (8UL) /*!< MDP (Bit 8) */ + #define R_SYSC_NS_MD_MON_MDP_Msk (0x100UL) /*!< MDP (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MD_MON_MD0MON_Pos (12UL) /*!< MD0MON (Bit 12) */ + #define R_SYSC_NS_MD_MON_MD0MON_Msk (0x1000UL) /*!< MD0MON (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MD_MON_MD1MON_Pos (13UL) /*!< MD1MON (Bit 13) */ + #define R_SYSC_NS_MD_MON_MD1MON_Msk (0x2000UL) /*!< MD1MON (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MD_MON_MD2MON_Pos (14UL) /*!< MD2MON (Bit 14) */ + #define R_SYSC_NS_MD_MON_MD2MON_Msk (0x4000UL) /*!< MD2MON (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MD_MON_MDV0MON_Pos (16UL) /*!< MDV0MON (Bit 16) */ + #define R_SYSC_NS_MD_MON_MDV0MON_Msk (0x10000UL) /*!< MDV0MON (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MD_MON_MDV1MON_Pos (17UL) /*!< MDV1MON (Bit 17) */ + #define R_SYSC_NS_MD_MON_MDV1MON_Msk (0x20000UL) /*!< MDV1MON (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MD_MON_MDV2MON_Pos (18UL) /*!< MDV2MON (Bit 18) */ + #define R_SYSC_NS_MD_MON_MDV2MON_Msk (0x40000UL) /*!< MDV2MON (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MD_MON_MDV3MON_Pos (19UL) /*!< MDV3MON (Bit 19) */ + #define R_SYSC_NS_MD_MON_MDV3MON_Msk (0x80000UL) /*!< MDV3MON (Bitfield-Mask: 0x01) */ + #define R_SYSC_NS_MD_MON_MDV4MON_Pos (20UL) /*!< MDV4MON (Bit 20) */ + #define R_SYSC_NS_MD_MON_MDV4MON_Msk (0x100000UL) /*!< MDV4MON (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_ELO ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= ELOPA ========================================================= */ + #define R_ELO_ELOPA_MTU0MD_Pos (0UL) /*!< MTU0MD (Bit 0) */ + #define R_ELO_ELOPA_MTU0MD_Msk (0x3UL) /*!< MTU0MD (Bitfield-Mask: 0x03) */ + #define R_ELO_ELOPA_MTU3MD_Pos (6UL) /*!< MTU3MD (Bit 6) */ + #define R_ELO_ELOPA_MTU3MD_Msk (0xc0UL) /*!< MTU3MD (Bitfield-Mask: 0x03) */ +/* ========================================================= ELOPB ========================================================= */ + #define R_ELO_ELOPB_MTU4MD_Pos (0UL) /*!< MTU4MD (Bit 0) */ + #define R_ELO_ELOPB_MTU4MD_Msk (0x3UL) /*!< MTU4MD (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ R_RWP_NS ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= PRCRN ========================================================= */ + #define R_RWP_NS_PRCRN_PRC0_Pos (0UL) /*!< PRC0 (Bit 0) */ + #define R_RWP_NS_PRCRN_PRC0_Msk (0x1UL) /*!< PRC0 (Bitfield-Mask: 0x01) */ + #define R_RWP_NS_PRCRN_PRC1_Pos (1UL) /*!< PRC1 (Bit 1) */ + #define R_RWP_NS_PRCRN_PRC1_Msk (0x2UL) /*!< PRC1 (Bitfield-Mask: 0x01) */ + #define R_RWP_NS_PRCRN_PRC2_Pos (2UL) /*!< PRC2 (Bit 2) */ + #define R_RWP_NS_PRCRN_PRC2_Msk (0x4UL) /*!< PRC2 (Bitfield-Mask: 0x01) */ + #define R_RWP_NS_PRCRN_PRKEY_Pos (8UL) /*!< PRKEY (Bit 8) */ + #define R_RWP_NS_PRCRN_PRKEY_Msk (0xff00UL) /*!< PRKEY (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_RTC ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= RTCA0CTL0 ======================================================= */ + #define R_RTC_RTCA0CTL0_RTCA0SLSB_Pos (4UL) /*!< RTCA0SLSB (Bit 4) */ + #define R_RTC_RTCA0CTL0_RTCA0SLSB_Msk (0x10UL) /*!< RTCA0SLSB (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCA0CTL0_RTCA0AMPM_Pos (5UL) /*!< RTCA0AMPM (Bit 5) */ + #define R_RTC_RTCA0CTL0_RTCA0AMPM_Msk (0x20UL) /*!< RTCA0AMPM (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCA0CTL0_RTCA0CEST_Pos (6UL) /*!< RTCA0CEST (Bit 6) */ + #define R_RTC_RTCA0CTL0_RTCA0CEST_Msk (0x40UL) /*!< RTCA0CEST (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCA0CTL0_RTCA0CE_Pos (7UL) /*!< RTCA0CE (Bit 7) */ + #define R_RTC_RTCA0CTL0_RTCA0CE_Msk (0x80UL) /*!< RTCA0CE (Bitfield-Mask: 0x01) */ +/* ======================================================= RTCA0CTL1 ======================================================= */ + #define R_RTC_RTCA0CTL1_RTCA0CT_Pos (0UL) /*!< RTCA0CT (Bit 0) */ + #define R_RTC_RTCA0CTL1_RTCA0CT_Msk (0x7UL) /*!< RTCA0CT (Bitfield-Mask: 0x07) */ + #define R_RTC_RTCA0CTL1_RTCA01SE_Pos (3UL) /*!< RTCA01SE (Bit 3) */ + #define R_RTC_RTCA0CTL1_RTCA01SE_Msk (0x8UL) /*!< RTCA01SE (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCA0CTL1_RTCA0ALME_Pos (4UL) /*!< RTCA0ALME (Bit 4) */ + #define R_RTC_RTCA0CTL1_RTCA0ALME_Msk (0x10UL) /*!< RTCA0ALME (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCA0CTL1_RTCA01HZE_Pos (5UL) /*!< RTCA01HZE (Bit 5) */ + #define R_RTC_RTCA0CTL1_RTCA01HZE_Msk (0x20UL) /*!< RTCA01HZE (Bitfield-Mask: 0x01) */ +/* ======================================================= RTCA0CTL2 ======================================================= */ + #define R_RTC_RTCA0CTL2_RTCA0WAIT_Pos (0UL) /*!< RTCA0WAIT (Bit 0) */ + #define R_RTC_RTCA0CTL2_RTCA0WAIT_Msk (0x1UL) /*!< RTCA0WAIT (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCA0CTL2_RTCA0WST_Pos (1UL) /*!< RTCA0WST (Bit 1) */ + #define R_RTC_RTCA0CTL2_RTCA0WST_Msk (0x2UL) /*!< RTCA0WST (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCA0CTL2_RTCA0RSUB_Pos (2UL) /*!< RTCA0RSUB (Bit 2) */ + #define R_RTC_RTCA0CTL2_RTCA0RSUB_Msk (0x4UL) /*!< RTCA0RSUB (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCA0CTL2_RTCA0RSST_Pos (3UL) /*!< RTCA0RSST (Bit 3) */ + #define R_RTC_RTCA0CTL2_RTCA0RSST_Msk (0x8UL) /*!< RTCA0RSST (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCA0CTL2_RTCA0WSST_Pos (4UL) /*!< RTCA0WSST (Bit 4) */ + #define R_RTC_RTCA0CTL2_RTCA0WSST_Msk (0x10UL) /*!< RTCA0WSST (Bitfield-Mask: 0x01) */ +/* ======================================================= RTCA0SUBC ======================================================= */ + #define R_RTC_RTCA0SUBC_RTCA0SUBC_Pos (0UL) /*!< RTCA0SUBC (Bit 0) */ + #define R_RTC_RTCA0SUBC_RTCA0SUBC_Msk (0x3fffffUL) /*!< RTCA0SUBC (Bitfield-Mask: 0x3fffff) */ +/* ======================================================= RTCA0SRBU ======================================================= */ + #define R_RTC_RTCA0SRBU_RTCA0SRBU_Pos (0UL) /*!< RTCA0SRBU (Bit 0) */ + #define R_RTC_RTCA0SRBU_RTCA0SRBU_Msk (0x3fffffUL) /*!< RTCA0SRBU (Bitfield-Mask: 0x3fffff) */ +/* ======================================================= RTCA0SEC ======================================================== */ + #define R_RTC_RTCA0SEC_RTCA0SEC_Pos (0UL) /*!< RTCA0SEC (Bit 0) */ + #define R_RTC_RTCA0SEC_RTCA0SEC_Msk (0x7fUL) /*!< RTCA0SEC (Bitfield-Mask: 0x7f) */ +/* ======================================================= RTCA0MIN ======================================================== */ + #define R_RTC_RTCA0MIN_RTCA0MIN_Pos (0UL) /*!< RTCA0MIN (Bit 0) */ + #define R_RTC_RTCA0MIN_RTCA0MIN_Msk (0x7fUL) /*!< RTCA0MIN (Bitfield-Mask: 0x7f) */ +/* ======================================================= RTCA0HOUR ======================================================= */ + #define R_RTC_RTCA0HOUR_RTCA0HOUR_Pos (0UL) /*!< RTCA0HOUR (Bit 0) */ + #define R_RTC_RTCA0HOUR_RTCA0HOUR_Msk (0x3fUL) /*!< RTCA0HOUR (Bitfield-Mask: 0x3f) */ +/* ======================================================= RTCA0WEEK ======================================================= */ + #define R_RTC_RTCA0WEEK_RTCA0WEEK_Pos (0UL) /*!< RTCA0WEEK (Bit 0) */ + #define R_RTC_RTCA0WEEK_RTCA0WEEK_Msk (0x7UL) /*!< RTCA0WEEK (Bitfield-Mask: 0x07) */ +/* ======================================================= RTCA0DAY ======================================================== */ + #define R_RTC_RTCA0DAY_RTCA0DAY_Pos (0UL) /*!< RTCA0DAY (Bit 0) */ + #define R_RTC_RTCA0DAY_RTCA0DAY_Msk (0x3fUL) /*!< RTCA0DAY (Bitfield-Mask: 0x3f) */ +/* ====================================================== RTCA0MONTH ======================================================= */ + #define R_RTC_RTCA0MONTH_RTCA0MONTH_Pos (0UL) /*!< RTCA0MONTH (Bit 0) */ + #define R_RTC_RTCA0MONTH_RTCA0MONTH_Msk (0x1fUL) /*!< RTCA0MONTH (Bitfield-Mask: 0x1f) */ +/* ======================================================= RTCA0YEAR ======================================================= */ + #define R_RTC_RTCA0YEAR_RTCA0YEAR_Pos (0UL) /*!< RTCA0YEAR (Bit 0) */ + #define R_RTC_RTCA0YEAR_RTCA0YEAR_Msk (0xffUL) /*!< RTCA0YEAR (Bitfield-Mask: 0xff) */ +/* ======================================================= RTCA0TIME ======================================================= */ + #define R_RTC_RTCA0TIME_RTCA0SEC_Pos (0UL) /*!< RTCA0SEC (Bit 0) */ + #define R_RTC_RTCA0TIME_RTCA0SEC_Msk (0xffUL) /*!< RTCA0SEC (Bitfield-Mask: 0xff) */ + #define R_RTC_RTCA0TIME_RTCA0MIN_Pos (8UL) /*!< RTCA0MIN (Bit 8) */ + #define R_RTC_RTCA0TIME_RTCA0MIN_Msk (0xff00UL) /*!< RTCA0MIN (Bitfield-Mask: 0xff) */ + #define R_RTC_RTCA0TIME_RTCA0HOUR_Pos (16UL) /*!< RTCA0HOUR (Bit 16) */ + #define R_RTC_RTCA0TIME_RTCA0HOUR_Msk (0xff0000UL) /*!< RTCA0HOUR (Bitfield-Mask: 0xff) */ +/* ======================================================= RTCA0CAL ======================================================== */ + #define R_RTC_RTCA0CAL_RTCA0WEEK_Pos (0UL) /*!< RTCA0WEEK (Bit 0) */ + #define R_RTC_RTCA0CAL_RTCA0WEEK_Msk (0xffUL) /*!< RTCA0WEEK (Bitfield-Mask: 0xff) */ + #define R_RTC_RTCA0CAL_RTCA0DAY_Pos (8UL) /*!< RTCA0DAY (Bit 8) */ + #define R_RTC_RTCA0CAL_RTCA0DAY_Msk (0xff00UL) /*!< RTCA0DAY (Bitfield-Mask: 0xff) */ + #define R_RTC_RTCA0CAL_RTCA0MONTH_Pos (16UL) /*!< RTCA0MONTH (Bit 16) */ + #define R_RTC_RTCA0CAL_RTCA0MONTH_Msk (0xff0000UL) /*!< RTCA0MONTH (Bitfield-Mask: 0xff) */ + #define R_RTC_RTCA0CAL_RTCA0YEAR_Pos (24UL) /*!< RTCA0YEAR (Bit 24) */ + #define R_RTC_RTCA0CAL_RTCA0YEAR_Msk (0xff000000UL) /*!< RTCA0YEAR (Bitfield-Mask: 0xff) */ +/* ======================================================= RTCA0SCMP ======================================================= */ + #define R_RTC_RTCA0SCMP_RTCA0SCMP_Pos (0UL) /*!< RTCA0SCMP (Bit 0) */ + #define R_RTC_RTCA0SCMP_RTCA0SCMP_Msk (0x3fffffUL) /*!< RTCA0SCMP (Bitfield-Mask: 0x3fffff) */ +/* ======================================================= RTCA0ALM ======================================================== */ + #define R_RTC_RTCA0ALM_RTCA0ALM_Pos (0UL) /*!< RTCA0ALM (Bit 0) */ + #define R_RTC_RTCA0ALM_RTCA0ALM_Msk (0x7fUL) /*!< RTCA0ALM (Bitfield-Mask: 0x7f) */ +/* ======================================================= RTCA0ALH ======================================================== */ + #define R_RTC_RTCA0ALH_RTCA0ALH_Pos (0UL) /*!< RTCA0ALH (Bit 0) */ + #define R_RTC_RTCA0ALH_RTCA0ALH_Msk (0x3fUL) /*!< RTCA0ALH (Bitfield-Mask: 0x3f) */ +/* ======================================================= RTCA0ALW ======================================================== */ + #define R_RTC_RTCA0ALW_RTCA0ALW0_Pos (0UL) /*!< RTCA0ALW0 (Bit 0) */ + #define R_RTC_RTCA0ALW_RTCA0ALW0_Msk (0x1UL) /*!< RTCA0ALW0 (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCA0ALW_RTCA0ALW1_Pos (1UL) /*!< RTCA0ALW1 (Bit 1) */ + #define R_RTC_RTCA0ALW_RTCA0ALW1_Msk (0x2UL) /*!< RTCA0ALW1 (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCA0ALW_RTCA0ALW2_Pos (2UL) /*!< RTCA0ALW2 (Bit 2) */ + #define R_RTC_RTCA0ALW_RTCA0ALW2_Msk (0x4UL) /*!< RTCA0ALW2 (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCA0ALW_RTCA0ALW3_Pos (3UL) /*!< RTCA0ALW3 (Bit 3) */ + #define R_RTC_RTCA0ALW_RTCA0ALW3_Msk (0x8UL) /*!< RTCA0ALW3 (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCA0ALW_RTCA0ALW4_Pos (4UL) /*!< RTCA0ALW4 (Bit 4) */ + #define R_RTC_RTCA0ALW_RTCA0ALW4_Msk (0x10UL) /*!< RTCA0ALW4 (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCA0ALW_RTCA0ALW5_Pos (5UL) /*!< RTCA0ALW5 (Bit 5) */ + #define R_RTC_RTCA0ALW_RTCA0ALW5_Msk (0x20UL) /*!< RTCA0ALW5 (Bitfield-Mask: 0x01) */ + #define R_RTC_RTCA0ALW_RTCA0ALW6_Pos (6UL) /*!< RTCA0ALW6 (Bit 6) */ + #define R_RTC_RTCA0ALW_RTCA0ALW6_Msk (0x40UL) /*!< RTCA0ALW6 (Bitfield-Mask: 0x01) */ +/* ======================================================= RTCA0SECC ======================================================= */ + #define R_RTC_RTCA0SECC_RTCA0SECC_Pos (0UL) /*!< RTCA0SECC (Bit 0) */ + #define R_RTC_RTCA0SECC_RTCA0SECC_Msk (0x7fUL) /*!< RTCA0SECC (Bitfield-Mask: 0x7f) */ +/* ======================================================= RTCA0MINC ======================================================= */ + #define R_RTC_RTCA0MINC_RTCA0MINC_Pos (0UL) /*!< RTCA0MINC (Bit 0) */ + #define R_RTC_RTCA0MINC_RTCA0MINC_Msk (0x7fUL) /*!< RTCA0MINC (Bitfield-Mask: 0x7f) */ +/* ====================================================== RTCA0HOURC ======================================================= */ + #define R_RTC_RTCA0HOURC_RTCA0HOURC_Pos (0UL) /*!< RTCA0HOURC (Bit 0) */ + #define R_RTC_RTCA0HOURC_RTCA0HOURC_Msk (0x3fUL) /*!< RTCA0HOURC (Bitfield-Mask: 0x3f) */ +/* ====================================================== RTCA0WEEKC ======================================================= */ + #define R_RTC_RTCA0WEEKC_RTCA0WEEKC_Pos (0UL) /*!< RTCA0WEEKC (Bit 0) */ + #define R_RTC_RTCA0WEEKC_RTCA0WEEKC_Msk (0x7UL) /*!< RTCA0WEEKC (Bitfield-Mask: 0x07) */ +/* ======================================================= RTCA0DAYC ======================================================= */ + #define R_RTC_RTCA0DAYC_RTCA0DAYC_Pos (0UL) /*!< RTCA0DAYC (Bit 0) */ + #define R_RTC_RTCA0DAYC_RTCA0DAYC_Msk (0x3fUL) /*!< RTCA0DAYC (Bitfield-Mask: 0x3f) */ +/* ======================================================= RTCA0MONC ======================================================= */ + #define R_RTC_RTCA0MONC_RTCA0MONC_Pos (0UL) /*!< RTCA0MONC (Bit 0) */ + #define R_RTC_RTCA0MONC_RTCA0MONC_Msk (0x1fUL) /*!< RTCA0MONC (Bitfield-Mask: 0x1f) */ +/* ====================================================== RTCA0YEARC ======================================================= */ + #define R_RTC_RTCA0YEARC_RTCA0YEARC_Pos (0UL) /*!< RTCA0YEARC (Bit 0) */ + #define R_RTC_RTCA0YEARC_RTCA0YEARC_Msk (0xffUL) /*!< RTCA0YEARC (Bitfield-Mask: 0xff) */ +/* ====================================================== RTCA0TIMEC ======================================================= */ + #define R_RTC_RTCA0TIMEC_RTCA0SECC_Pos (0UL) /*!< RTCA0SECC (Bit 0) */ + #define R_RTC_RTCA0TIMEC_RTCA0SECC_Msk (0xffUL) /*!< RTCA0SECC (Bitfield-Mask: 0xff) */ + #define R_RTC_RTCA0TIMEC_RTCA0MINC_Pos (8UL) /*!< RTCA0MINC (Bit 8) */ + #define R_RTC_RTCA0TIMEC_RTCA0MINC_Msk (0xff00UL) /*!< RTCA0MINC (Bitfield-Mask: 0xff) */ + #define R_RTC_RTCA0TIMEC_RTCA0HOURC_Pos (16UL) /*!< RTCA0HOURC (Bit 16) */ + #define R_RTC_RTCA0TIMEC_RTCA0HOURC_Msk (0xff0000UL) /*!< RTCA0HOURC (Bitfield-Mask: 0xff) */ +/* ======================================================= RTCA0CALC ======================================================= */ + #define R_RTC_RTCA0CALC_RTCA0WEEKC_Pos (0UL) /*!< RTCA0WEEKC (Bit 0) */ + #define R_RTC_RTCA0CALC_RTCA0WEEKC_Msk (0xffUL) /*!< RTCA0WEEKC (Bitfield-Mask: 0xff) */ + #define R_RTC_RTCA0CALC_RTCA0DAYC_Pos (8UL) /*!< RTCA0DAYC (Bit 8) */ + #define R_RTC_RTCA0CALC_RTCA0DAYC_Msk (0xff00UL) /*!< RTCA0DAYC (Bitfield-Mask: 0xff) */ + #define R_RTC_RTCA0CALC_RTCA0MONC_Pos (16UL) /*!< RTCA0MONC (Bit 16) */ + #define R_RTC_RTCA0CALC_RTCA0MONC_Msk (0xff0000UL) /*!< RTCA0MONC (Bitfield-Mask: 0xff) */ + #define R_RTC_RTCA0CALC_RTCA0YEARC_Pos (24UL) /*!< RTCA0YEARC (Bit 24) */ + #define R_RTC_RTCA0CALC_RTCA0YEARC_Msk (0xff000000UL) /*!< RTCA0YEARC (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_POEG2 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== POEG2GA ======================================================== */ + #define R_POEG2_POEG2GA_PIDF_Pos (0UL) /*!< PIDF (Bit 0) */ + #define R_POEG2_POEG2GA_PIDF_Msk (0x1UL) /*!< PIDF (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GA_IOCF_Pos (1UL) /*!< IOCF (Bit 1) */ + #define R_POEG2_POEG2GA_IOCF_Msk (0x2UL) /*!< IOCF (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GA_OSTPF_Pos (2UL) /*!< OSTPF (Bit 2) */ + #define R_POEG2_POEG2GA_OSTPF_Msk (0x4UL) /*!< OSTPF (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GA_SSF_Pos (3UL) /*!< SSF (Bit 3) */ + #define R_POEG2_POEG2GA_SSF_Msk (0x8UL) /*!< SSF (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GA_PIDE_Pos (4UL) /*!< PIDE (Bit 4) */ + #define R_POEG2_POEG2GA_PIDE_Msk (0x10UL) /*!< PIDE (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GA_IOCE_Pos (5UL) /*!< IOCE (Bit 5) */ + #define R_POEG2_POEG2GA_IOCE_Msk (0x20UL) /*!< IOCE (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GA_OSTPE_Pos (6UL) /*!< OSTPE (Bit 6) */ + #define R_POEG2_POEG2GA_OSTPE_Msk (0x40UL) /*!< OSTPE (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GA_ST_Pos (16UL) /*!< ST (Bit 16) */ + #define R_POEG2_POEG2GA_ST_Msk (0x10000UL) /*!< ST (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GA_INV_Pos (28UL) /*!< INV (Bit 28) */ + #define R_POEG2_POEG2GA_INV_Msk (0x10000000UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GA_NFEN_Pos (29UL) /*!< NFEN (Bit 29) */ + #define R_POEG2_POEG2GA_NFEN_Msk (0x20000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GA_NFCS_Pos (30UL) /*!< NFCS (Bit 30) */ + #define R_POEG2_POEG2GA_NFCS_Msk (0xc0000000UL) /*!< NFCS (Bitfield-Mask: 0x03) */ +/* ======================================================== POEG2GB ======================================================== */ + #define R_POEG2_POEG2GB_PIDF_Pos (0UL) /*!< PIDF (Bit 0) */ + #define R_POEG2_POEG2GB_PIDF_Msk (0x1UL) /*!< PIDF (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GB_IOCF_Pos (1UL) /*!< IOCF (Bit 1) */ + #define R_POEG2_POEG2GB_IOCF_Msk (0x2UL) /*!< IOCF (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GB_OSTPF_Pos (2UL) /*!< OSTPF (Bit 2) */ + #define R_POEG2_POEG2GB_OSTPF_Msk (0x4UL) /*!< OSTPF (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GB_SSF_Pos (3UL) /*!< SSF (Bit 3) */ + #define R_POEG2_POEG2GB_SSF_Msk (0x8UL) /*!< SSF (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GB_PIDE_Pos (4UL) /*!< PIDE (Bit 4) */ + #define R_POEG2_POEG2GB_PIDE_Msk (0x10UL) /*!< PIDE (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GB_IOCE_Pos (5UL) /*!< IOCE (Bit 5) */ + #define R_POEG2_POEG2GB_IOCE_Msk (0x20UL) /*!< IOCE (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GB_OSTPE_Pos (6UL) /*!< OSTPE (Bit 6) */ + #define R_POEG2_POEG2GB_OSTPE_Msk (0x40UL) /*!< OSTPE (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GB_ST_Pos (16UL) /*!< ST (Bit 16) */ + #define R_POEG2_POEG2GB_ST_Msk (0x10000UL) /*!< ST (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GB_INV_Pos (28UL) /*!< INV (Bit 28) */ + #define R_POEG2_POEG2GB_INV_Msk (0x10000000UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GB_NFEN_Pos (29UL) /*!< NFEN (Bit 29) */ + #define R_POEG2_POEG2GB_NFEN_Msk (0x20000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GB_NFCS_Pos (30UL) /*!< NFCS (Bit 30) */ + #define R_POEG2_POEG2GB_NFCS_Msk (0xc0000000UL) /*!< NFCS (Bitfield-Mask: 0x03) */ +/* ======================================================== POEG2GC ======================================================== */ + #define R_POEG2_POEG2GC_PIDF_Pos (0UL) /*!< PIDF (Bit 0) */ + #define R_POEG2_POEG2GC_PIDF_Msk (0x1UL) /*!< PIDF (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GC_IOCF_Pos (1UL) /*!< IOCF (Bit 1) */ + #define R_POEG2_POEG2GC_IOCF_Msk (0x2UL) /*!< IOCF (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GC_OSTPF_Pos (2UL) /*!< OSTPF (Bit 2) */ + #define R_POEG2_POEG2GC_OSTPF_Msk (0x4UL) /*!< OSTPF (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GC_SSF_Pos (3UL) /*!< SSF (Bit 3) */ + #define R_POEG2_POEG2GC_SSF_Msk (0x8UL) /*!< SSF (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GC_PIDE_Pos (4UL) /*!< PIDE (Bit 4) */ + #define R_POEG2_POEG2GC_PIDE_Msk (0x10UL) /*!< PIDE (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GC_IOCE_Pos (5UL) /*!< IOCE (Bit 5) */ + #define R_POEG2_POEG2GC_IOCE_Msk (0x20UL) /*!< IOCE (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GC_OSTPE_Pos (6UL) /*!< OSTPE (Bit 6) */ + #define R_POEG2_POEG2GC_OSTPE_Msk (0x40UL) /*!< OSTPE (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GC_ST_Pos (16UL) /*!< ST (Bit 16) */ + #define R_POEG2_POEG2GC_ST_Msk (0x10000UL) /*!< ST (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GC_INV_Pos (28UL) /*!< INV (Bit 28) */ + #define R_POEG2_POEG2GC_INV_Msk (0x10000000UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GC_NFEN_Pos (29UL) /*!< NFEN (Bit 29) */ + #define R_POEG2_POEG2GC_NFEN_Msk (0x20000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GC_NFCS_Pos (30UL) /*!< NFCS (Bit 30) */ + #define R_POEG2_POEG2GC_NFCS_Msk (0xc0000000UL) /*!< NFCS (Bitfield-Mask: 0x03) */ +/* ======================================================== POEG2GD ======================================================== */ + #define R_POEG2_POEG2GD_PIDF_Pos (0UL) /*!< PIDF (Bit 0) */ + #define R_POEG2_POEG2GD_PIDF_Msk (0x1UL) /*!< PIDF (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GD_IOCF_Pos (1UL) /*!< IOCF (Bit 1) */ + #define R_POEG2_POEG2GD_IOCF_Msk (0x2UL) /*!< IOCF (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GD_OSTPF_Pos (2UL) /*!< OSTPF (Bit 2) */ + #define R_POEG2_POEG2GD_OSTPF_Msk (0x4UL) /*!< OSTPF (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GD_SSF_Pos (3UL) /*!< SSF (Bit 3) */ + #define R_POEG2_POEG2GD_SSF_Msk (0x8UL) /*!< SSF (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GD_PIDE_Pos (4UL) /*!< PIDE (Bit 4) */ + #define R_POEG2_POEG2GD_PIDE_Msk (0x10UL) /*!< PIDE (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GD_IOCE_Pos (5UL) /*!< IOCE (Bit 5) */ + #define R_POEG2_POEG2GD_IOCE_Msk (0x20UL) /*!< IOCE (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GD_OSTPE_Pos (6UL) /*!< OSTPE (Bit 6) */ + #define R_POEG2_POEG2GD_OSTPE_Msk (0x40UL) /*!< OSTPE (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GD_ST_Pos (16UL) /*!< ST (Bit 16) */ + #define R_POEG2_POEG2GD_ST_Msk (0x10000UL) /*!< ST (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GD_INV_Pos (28UL) /*!< INV (Bit 28) */ + #define R_POEG2_POEG2GD_INV_Msk (0x10000000UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GD_NFEN_Pos (29UL) /*!< NFEN (Bit 29) */ + #define R_POEG2_POEG2GD_NFEN_Msk (0x20000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ + #define R_POEG2_POEG2GD_NFCS_Pos (30UL) /*!< NFCS (Bit 30) */ + #define R_POEG2_POEG2GD_NFCS_Msk (0xc0000000UL) /*!< NFCS (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ R_OTP ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== OTPPWR ========================================================= */ + #define R_OTP_OTPPWR_PWR_Pos (0UL) /*!< PWR (Bit 0) */ + #define R_OTP_OTPPWR_PWR_Msk (0x1UL) /*!< PWR (Bitfield-Mask: 0x01) */ + #define R_OTP_OTPPWR_ACCL_Pos (4UL) /*!< ACCL (Bit 4) */ + #define R_OTP_OTPPWR_ACCL_Msk (0x10UL) /*!< ACCL (Bitfield-Mask: 0x01) */ +/* ======================================================== OTPSTR ========================================================= */ + #define R_OTP_OTPSTR_CMD_RDY_Pos (0UL) /*!< CMD_RDY (Bit 0) */ + #define R_OTP_OTPSTR_CMD_RDY_Msk (0x1UL) /*!< CMD_RDY (Bitfield-Mask: 0x01) */ + #define R_OTP_OTPSTR_ERR_WR_Pos (1UL) /*!< ERR_WR (Bit 1) */ + #define R_OTP_OTPSTR_ERR_WR_Msk (0x6UL) /*!< ERR_WR (Bitfield-Mask: 0x03) */ + #define R_OTP_OTPSTR_ERR_WP_Pos (3UL) /*!< ERR_WP (Bit 3) */ + #define R_OTP_OTPSTR_ERR_WP_Msk (0x8UL) /*!< ERR_WP (Bitfield-Mask: 0x01) */ + #define R_OTP_OTPSTR_ERR_RP_Pos (4UL) /*!< ERR_RP (Bit 4) */ + #define R_OTP_OTPSTR_ERR_RP_Msk (0x10UL) /*!< ERR_RP (Bitfield-Mask: 0x01) */ + #define R_OTP_OTPSTR_ERR_RDY_WR_Pos (8UL) /*!< ERR_RDY_WR (Bit 8) */ + #define R_OTP_OTPSTR_ERR_RDY_WR_Msk (0x100UL) /*!< ERR_RDY_WR (Bitfield-Mask: 0x01) */ + #define R_OTP_OTPSTR_ERR_RDY_RD_Pos (9UL) /*!< ERR_RDY_RD (Bit 9) */ + #define R_OTP_OTPSTR_ERR_RDY_RD_Msk (0x200UL) /*!< ERR_RDY_RD (Bitfield-Mask: 0x01) */ + #define R_OTP_OTPSTR_CNT_ST_IDLE_Pos (15UL) /*!< CNT_ST_IDLE (Bit 15) */ + #define R_OTP_OTPSTR_CNT_ST_IDLE_Msk (0x8000UL) /*!< CNT_ST_IDLE (Bitfield-Mask: 0x01) */ +/* ======================================================= OTPSTAWR ======================================================== */ + #define R_OTP_OTPSTAWR_STAWR_Pos (0UL) /*!< STAWR (Bit 0) */ + #define R_OTP_OTPSTAWR_STAWR_Msk (0x1UL) /*!< STAWR (Bitfield-Mask: 0x01) */ +/* ======================================================= OTPADRWR ======================================================== */ + #define R_OTP_OTPADRWR_ADRWR_Pos (0UL) /*!< ADRWR (Bit 0) */ + #define R_OTP_OTPADRWR_ADRWR_Msk (0x1ffUL) /*!< ADRWR (Bitfield-Mask: 0x1ff) */ +/* ======================================================= OTPDATAWR ======================================================= */ + #define R_OTP_OTPDATAWR_DATAWR_Pos (0UL) /*!< DATAWR (Bit 0) */ + #define R_OTP_OTPDATAWR_DATAWR_Msk (0xffffUL) /*!< DATAWR (Bitfield-Mask: 0xffff) */ +/* ======================================================= OTPADRRD ======================================================== */ + #define R_OTP_OTPADRRD_ADRRD_Pos (0UL) /*!< ADRRD (Bit 0) */ + #define R_OTP_OTPADRRD_ADRRD_Msk (0x1ffUL) /*!< ADRRD (Bitfield-Mask: 0x1ff) */ +/* ======================================================= OTPDATARD ======================================================= */ + #define R_OTP_OTPDATARD_DATARD_Pos (0UL) /*!< DATARD (Bit 0) */ + #define R_OTP_OTPDATARD_DATARD_Msk (0xffffUL) /*!< DATARD (Bitfield-Mask: 0xffff) */ + +/* =========================================================================================================================== */ +/* ================ R_PTADR ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= RSELP ========================================================= */ + #define R_PTADR_RSELP_RS0_Pos (0UL) /*!< RS0 (Bit 0) */ + #define R_PTADR_RSELP_RS0_Msk (0x1UL) /*!< RS0 (Bitfield-Mask: 0x01) */ + #define R_PTADR_RSELP_RS1_Pos (1UL) /*!< RS1 (Bit 1) */ + #define R_PTADR_RSELP_RS1_Msk (0x2UL) /*!< RS1 (Bitfield-Mask: 0x01) */ + #define R_PTADR_RSELP_RS2_Pos (2UL) /*!< RS2 (Bit 2) */ + #define R_PTADR_RSELP_RS2_Msk (0x4UL) /*!< RS2 (Bitfield-Mask: 0x01) */ + #define R_PTADR_RSELP_RS3_Pos (3UL) /*!< RS3 (Bit 3) */ + #define R_PTADR_RSELP_RS3_Msk (0x8UL) /*!< RS3 (Bitfield-Mask: 0x01) */ + #define R_PTADR_RSELP_RS4_Pos (4UL) /*!< RS4 (Bit 4) */ + #define R_PTADR_RSELP_RS4_Msk (0x10UL) /*!< RS4 (Bitfield-Mask: 0x01) */ + #define R_PTADR_RSELP_RS5_Pos (5UL) /*!< RS5 (Bit 5) */ + #define R_PTADR_RSELP_RS5_Msk (0x20UL) /*!< RS5 (Bitfield-Mask: 0x01) */ + #define R_PTADR_RSELP_RS6_Pos (6UL) /*!< RS6 (Bit 6) */ + #define R_PTADR_RSELP_RS6_Msk (0x40UL) /*!< RS6 (Bitfield-Mask: 0x01) */ + #define R_PTADR_RSELP_RS7_Pos (7UL) /*!< RS7 (Bit 7) */ + #define R_PTADR_RSELP_RS7_Msk (0x80UL) /*!< RS7 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_SYSRAM0 ================ */ +/* =========================================================================================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_ICU ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== S_SWINT ======================================================== */ + #define R_ICU_S_SWINT_IC6_Pos (0UL) /*!< IC6 (Bit 0) */ + #define R_ICU_S_SWINT_IC6_Msk (0x1UL) /*!< IC6 (Bitfield-Mask: 0x01) */ + #define R_ICU_S_SWINT_IC7_Pos (1UL) /*!< IC7 (Bit 1) */ + #define R_ICU_S_SWINT_IC7_Msk (0x2UL) /*!< IC7 (Bitfield-Mask: 0x01) */ +/* ==================================================== S_PORTNF_FLTSEL ==================================================== */ + #define R_ICU_S_PORTNF_FLTSEL_FLT14_Pos (0UL) /*!< FLT14 (Bit 0) */ + #define R_ICU_S_PORTNF_FLTSEL_FLT14_Msk (0x1UL) /*!< FLT14 (Bitfield-Mask: 0x01) */ + #define R_ICU_S_PORTNF_FLTSEL_FLT15_Pos (1UL) /*!< FLT15 (Bit 1) */ + #define R_ICU_S_PORTNF_FLTSEL_FLT15_Msk (0x2UL) /*!< FLT15 (Bitfield-Mask: 0x01) */ + #define R_ICU_S_PORTNF_FLTSEL_FLTNMI_Pos (2UL) /*!< FLTNMI (Bit 2) */ + #define R_ICU_S_PORTNF_FLTSEL_FLTNMI_Msk (0x4UL) /*!< FLTNMI (Bitfield-Mask: 0x01) */ +/* ==================================================== S_PORTNF_CLKSEL ==================================================== */ + #define R_ICU_S_PORTNF_CLKSEL_CKSEL14_Pos (0UL) /*!< CKSEL14 (Bit 0) */ + #define R_ICU_S_PORTNF_CLKSEL_CKSEL14_Msk (0x3UL) /*!< CKSEL14 (Bitfield-Mask: 0x03) */ + #define R_ICU_S_PORTNF_CLKSEL_CKSEL15_Pos (2UL) /*!< CKSEL15 (Bit 2) */ + #define R_ICU_S_PORTNF_CLKSEL_CKSEL15_Msk (0xcUL) /*!< CKSEL15 (Bitfield-Mask: 0x03) */ + #define R_ICU_S_PORTNF_CLKSEL_CKSELNMI_Pos (4UL) /*!< CKSELNMI (Bit 4) */ + #define R_ICU_S_PORTNF_CLKSEL_CKSELNMI_Msk (0x30UL) /*!< CKSELNMI (Bitfield-Mask: 0x03) */ +/* ====================================================== S_PORTNF_MD ====================================================== */ + #define R_ICU_S_PORTNF_MD_MD14_Pos (0UL) /*!< MD14 (Bit 0) */ + #define R_ICU_S_PORTNF_MD_MD14_Msk (0x3UL) /*!< MD14 (Bitfield-Mask: 0x03) */ + #define R_ICU_S_PORTNF_MD_MD15_Pos (2UL) /*!< MD15 (Bit 2) */ + #define R_ICU_S_PORTNF_MD_MD15_Msk (0xcUL) /*!< MD15 (Bitfield-Mask: 0x03) */ + #define R_ICU_S_PORTNF_MD_MDNMI_Pos (4UL) /*!< MDNMI (Bit 4) */ + #define R_ICU_S_PORTNF_MD_MDNMI_Msk (0x30UL) /*!< MDNMI (Bitfield-Mask: 0x03) */ +/* ===================================================== CPU0ERR_STAT ====================================================== */ + #define R_ICU_CPU0ERR_STAT_ER_ST0_Pos (0UL) /*!< ER_ST0 (Bit 0) */ + #define R_ICU_CPU0ERR_STAT_ER_ST0_Msk (0x1UL) /*!< ER_ST0 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST1_Pos (1UL) /*!< ER_ST1 (Bit 1) */ + #define R_ICU_CPU0ERR_STAT_ER_ST1_Msk (0x2UL) /*!< ER_ST1 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST2_Pos (2UL) /*!< ER_ST2 (Bit 2) */ + #define R_ICU_CPU0ERR_STAT_ER_ST2_Msk (0x4UL) /*!< ER_ST2 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST3_Pos (3UL) /*!< ER_ST3 (Bit 3) */ + #define R_ICU_CPU0ERR_STAT_ER_ST3_Msk (0x8UL) /*!< ER_ST3 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST4_Pos (4UL) /*!< ER_ST4 (Bit 4) */ + #define R_ICU_CPU0ERR_STAT_ER_ST4_Msk (0x10UL) /*!< ER_ST4 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST5_Pos (5UL) /*!< ER_ST5 (Bit 5) */ + #define R_ICU_CPU0ERR_STAT_ER_ST5_Msk (0x20UL) /*!< ER_ST5 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST6_Pos (6UL) /*!< ER_ST6 (Bit 6) */ + #define R_ICU_CPU0ERR_STAT_ER_ST6_Msk (0x40UL) /*!< ER_ST6 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST7_Pos (7UL) /*!< ER_ST7 (Bit 7) */ + #define R_ICU_CPU0ERR_STAT_ER_ST7_Msk (0x80UL) /*!< ER_ST7 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST8_Pos (8UL) /*!< ER_ST8 (Bit 8) */ + #define R_ICU_CPU0ERR_STAT_ER_ST8_Msk (0x100UL) /*!< ER_ST8 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST9_Pos (9UL) /*!< ER_ST9 (Bit 9) */ + #define R_ICU_CPU0ERR_STAT_ER_ST9_Msk (0x200UL) /*!< ER_ST9 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST10_Pos (10UL) /*!< ER_ST10 (Bit 10) */ + #define R_ICU_CPU0ERR_STAT_ER_ST10_Msk (0x400UL) /*!< ER_ST10 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST11_Pos (11UL) /*!< ER_ST11 (Bit 11) */ + #define R_ICU_CPU0ERR_STAT_ER_ST11_Msk (0x800UL) /*!< ER_ST11 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST12_Pos (12UL) /*!< ER_ST12 (Bit 12) */ + #define R_ICU_CPU0ERR_STAT_ER_ST12_Msk (0x1000UL) /*!< ER_ST12 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST13_Pos (13UL) /*!< ER_ST13 (Bit 13) */ + #define R_ICU_CPU0ERR_STAT_ER_ST13_Msk (0x2000UL) /*!< ER_ST13 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST14_Pos (14UL) /*!< ER_ST14 (Bit 14) */ + #define R_ICU_CPU0ERR_STAT_ER_ST14_Msk (0x4000UL) /*!< ER_ST14 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST15_Pos (15UL) /*!< ER_ST15 (Bit 15) */ + #define R_ICU_CPU0ERR_STAT_ER_ST15_Msk (0x8000UL) /*!< ER_ST15 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST16_Pos (16UL) /*!< ER_ST16 (Bit 16) */ + #define R_ICU_CPU0ERR_STAT_ER_ST16_Msk (0x10000UL) /*!< ER_ST16 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST17_Pos (17UL) /*!< ER_ST17 (Bit 17) */ + #define R_ICU_CPU0ERR_STAT_ER_ST17_Msk (0x20000UL) /*!< ER_ST17 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST18_Pos (18UL) /*!< ER_ST18 (Bit 18) */ + #define R_ICU_CPU0ERR_STAT_ER_ST18_Msk (0x40000UL) /*!< ER_ST18 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST19_Pos (19UL) /*!< ER_ST19 (Bit 19) */ + #define R_ICU_CPU0ERR_STAT_ER_ST19_Msk (0x80000UL) /*!< ER_ST19 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST20_Pos (20UL) /*!< ER_ST20 (Bit 20) */ + #define R_ICU_CPU0ERR_STAT_ER_ST20_Msk (0x100000UL) /*!< ER_ST20 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST21_Pos (21UL) /*!< ER_ST21 (Bit 21) */ + #define R_ICU_CPU0ERR_STAT_ER_ST21_Msk (0x200000UL) /*!< ER_ST21 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST22_Pos (22UL) /*!< ER_ST22 (Bit 22) */ + #define R_ICU_CPU0ERR_STAT_ER_ST22_Msk (0x400000UL) /*!< ER_ST22 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST23_Pos (23UL) /*!< ER_ST23 (Bit 23) */ + #define R_ICU_CPU0ERR_STAT_ER_ST23_Msk (0x800000UL) /*!< ER_ST23 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST24_Pos (24UL) /*!< ER_ST24 (Bit 24) */ + #define R_ICU_CPU0ERR_STAT_ER_ST24_Msk (0x1000000UL) /*!< ER_ST24 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_STAT_ER_ST25_Pos (25UL) /*!< ER_ST25 (Bit 25) */ + #define R_ICU_CPU0ERR_STAT_ER_ST25_Msk (0x2000000UL) /*!< ER_ST25 (Bitfield-Mask: 0x01) */ +/* ===================================================== PERIERR_STAT0 ===================================================== */ + #define R_ICU_PERIERR_STAT0_ER_ST0_Pos (0UL) /*!< ER_ST0 (Bit 0) */ + #define R_ICU_PERIERR_STAT0_ER_ST0_Msk (0x1UL) /*!< ER_ST0 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST1_Pos (1UL) /*!< ER_ST1 (Bit 1) */ + #define R_ICU_PERIERR_STAT0_ER_ST1_Msk (0x2UL) /*!< ER_ST1 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST2_Pos (2UL) /*!< ER_ST2 (Bit 2) */ + #define R_ICU_PERIERR_STAT0_ER_ST2_Msk (0x4UL) /*!< ER_ST2 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST3_Pos (3UL) /*!< ER_ST3 (Bit 3) */ + #define R_ICU_PERIERR_STAT0_ER_ST3_Msk (0x8UL) /*!< ER_ST3 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST4_Pos (4UL) /*!< ER_ST4 (Bit 4) */ + #define R_ICU_PERIERR_STAT0_ER_ST4_Msk (0x10UL) /*!< ER_ST4 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST5_Pos (5UL) /*!< ER_ST5 (Bit 5) */ + #define R_ICU_PERIERR_STAT0_ER_ST5_Msk (0x20UL) /*!< ER_ST5 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST6_Pos (6UL) /*!< ER_ST6 (Bit 6) */ + #define R_ICU_PERIERR_STAT0_ER_ST6_Msk (0x40UL) /*!< ER_ST6 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST7_Pos (7UL) /*!< ER_ST7 (Bit 7) */ + #define R_ICU_PERIERR_STAT0_ER_ST7_Msk (0x80UL) /*!< ER_ST7 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST9_Pos (9UL) /*!< ER_ST9 (Bit 9) */ + #define R_ICU_PERIERR_STAT0_ER_ST9_Msk (0x200UL) /*!< ER_ST9 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST10_Pos (10UL) /*!< ER_ST10 (Bit 10) */ + #define R_ICU_PERIERR_STAT0_ER_ST10_Msk (0x400UL) /*!< ER_ST10 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST11_Pos (11UL) /*!< ER_ST11 (Bit 11) */ + #define R_ICU_PERIERR_STAT0_ER_ST11_Msk (0x800UL) /*!< ER_ST11 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST12_Pos (12UL) /*!< ER_ST12 (Bit 12) */ + #define R_ICU_PERIERR_STAT0_ER_ST12_Msk (0x1000UL) /*!< ER_ST12 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST13_Pos (13UL) /*!< ER_ST13 (Bit 13) */ + #define R_ICU_PERIERR_STAT0_ER_ST13_Msk (0x2000UL) /*!< ER_ST13 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST14_Pos (14UL) /*!< ER_ST14 (Bit 14) */ + #define R_ICU_PERIERR_STAT0_ER_ST14_Msk (0x4000UL) /*!< ER_ST14 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST15_Pos (15UL) /*!< ER_ST15 (Bit 15) */ + #define R_ICU_PERIERR_STAT0_ER_ST15_Msk (0x8000UL) /*!< ER_ST15 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST16_Pos (16UL) /*!< ER_ST16 (Bit 16) */ + #define R_ICU_PERIERR_STAT0_ER_ST16_Msk (0x10000UL) /*!< ER_ST16 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST17_Pos (17UL) /*!< ER_ST17 (Bit 17) */ + #define R_ICU_PERIERR_STAT0_ER_ST17_Msk (0x20000UL) /*!< ER_ST17 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST18_Pos (18UL) /*!< ER_ST18 (Bit 18) */ + #define R_ICU_PERIERR_STAT0_ER_ST18_Msk (0x40000UL) /*!< ER_ST18 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST19_Pos (19UL) /*!< ER_ST19 (Bit 19) */ + #define R_ICU_PERIERR_STAT0_ER_ST19_Msk (0x80000UL) /*!< ER_ST19 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST20_Pos (20UL) /*!< ER_ST20 (Bit 20) */ + #define R_ICU_PERIERR_STAT0_ER_ST20_Msk (0x100000UL) /*!< ER_ST20 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST21_Pos (21UL) /*!< ER_ST21 (Bit 21) */ + #define R_ICU_PERIERR_STAT0_ER_ST21_Msk (0x200000UL) /*!< ER_ST21 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST22_Pos (22UL) /*!< ER_ST22 (Bit 22) */ + #define R_ICU_PERIERR_STAT0_ER_ST22_Msk (0x400000UL) /*!< ER_ST22 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST23_Pos (23UL) /*!< ER_ST23 (Bit 23) */ + #define R_ICU_PERIERR_STAT0_ER_ST23_Msk (0x800000UL) /*!< ER_ST23 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST24_Pos (24UL) /*!< ER_ST24 (Bit 24) */ + #define R_ICU_PERIERR_STAT0_ER_ST24_Msk (0x1000000UL) /*!< ER_ST24 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST25_Pos (25UL) /*!< ER_ST25 (Bit 25) */ + #define R_ICU_PERIERR_STAT0_ER_ST25_Msk (0x2000000UL) /*!< ER_ST25 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST26_Pos (26UL) /*!< ER_ST26 (Bit 26) */ + #define R_ICU_PERIERR_STAT0_ER_ST26_Msk (0x4000000UL) /*!< ER_ST26 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST27_Pos (27UL) /*!< ER_ST27 (Bit 27) */ + #define R_ICU_PERIERR_STAT0_ER_ST27_Msk (0x8000000UL) /*!< ER_ST27 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST28_Pos (28UL) /*!< ER_ST28 (Bit 28) */ + #define R_ICU_PERIERR_STAT0_ER_ST28_Msk (0x10000000UL) /*!< ER_ST28 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST29_Pos (29UL) /*!< ER_ST29 (Bit 29) */ + #define R_ICU_PERIERR_STAT0_ER_ST29_Msk (0x20000000UL) /*!< ER_ST29 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST30_Pos (30UL) /*!< ER_ST30 (Bit 30) */ + #define R_ICU_PERIERR_STAT0_ER_ST30_Msk (0x40000000UL) /*!< ER_ST30 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT0_ER_ST31_Pos (31UL) /*!< ER_ST31 (Bit 31) */ + #define R_ICU_PERIERR_STAT0_ER_ST31_Msk (0x80000000UL) /*!< ER_ST31 (Bitfield-Mask: 0x01) */ +/* ===================================================== PERIERR_STAT1 ===================================================== */ + #define R_ICU_PERIERR_STAT1_ER_ST0_Pos (0UL) /*!< ER_ST0 (Bit 0) */ + #define R_ICU_PERIERR_STAT1_ER_ST0_Msk (0x1UL) /*!< ER_ST0 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST1_Pos (1UL) /*!< ER_ST1 (Bit 1) */ + #define R_ICU_PERIERR_STAT1_ER_ST1_Msk (0x2UL) /*!< ER_ST1 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST2_Pos (2UL) /*!< ER_ST2 (Bit 2) */ + #define R_ICU_PERIERR_STAT1_ER_ST2_Msk (0x4UL) /*!< ER_ST2 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST3_Pos (3UL) /*!< ER_ST3 (Bit 3) */ + #define R_ICU_PERIERR_STAT1_ER_ST3_Msk (0x8UL) /*!< ER_ST3 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST4_Pos (4UL) /*!< ER_ST4 (Bit 4) */ + #define R_ICU_PERIERR_STAT1_ER_ST4_Msk (0x10UL) /*!< ER_ST4 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST5_Pos (5UL) /*!< ER_ST5 (Bit 5) */ + #define R_ICU_PERIERR_STAT1_ER_ST5_Msk (0x20UL) /*!< ER_ST5 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST6_Pos (6UL) /*!< ER_ST6 (Bit 6) */ + #define R_ICU_PERIERR_STAT1_ER_ST6_Msk (0x40UL) /*!< ER_ST6 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST7_Pos (7UL) /*!< ER_ST7 (Bit 7) */ + #define R_ICU_PERIERR_STAT1_ER_ST7_Msk (0x80UL) /*!< ER_ST7 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST8_Pos (8UL) /*!< ER_ST8 (Bit 8) */ + #define R_ICU_PERIERR_STAT1_ER_ST8_Msk (0x100UL) /*!< ER_ST8 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST9_Pos (9UL) /*!< ER_ST9 (Bit 9) */ + #define R_ICU_PERIERR_STAT1_ER_ST9_Msk (0x200UL) /*!< ER_ST9 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST13_Pos (13UL) /*!< ER_ST13 (Bit 13) */ + #define R_ICU_PERIERR_STAT1_ER_ST13_Msk (0x2000UL) /*!< ER_ST13 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST15_Pos (15UL) /*!< ER_ST15 (Bit 15) */ + #define R_ICU_PERIERR_STAT1_ER_ST15_Msk (0x8000UL) /*!< ER_ST15 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST16_Pos (16UL) /*!< ER_ST16 (Bit 16) */ + #define R_ICU_PERIERR_STAT1_ER_ST16_Msk (0x10000UL) /*!< ER_ST16 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST17_Pos (17UL) /*!< ER_ST17 (Bit 17) */ + #define R_ICU_PERIERR_STAT1_ER_ST17_Msk (0x20000UL) /*!< ER_ST17 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST18_Pos (18UL) /*!< ER_ST18 (Bit 18) */ + #define R_ICU_PERIERR_STAT1_ER_ST18_Msk (0x40000UL) /*!< ER_ST18 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST19_Pos (19UL) /*!< ER_ST19 (Bit 19) */ + #define R_ICU_PERIERR_STAT1_ER_ST19_Msk (0x80000UL) /*!< ER_ST19 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST20_Pos (20UL) /*!< ER_ST20 (Bit 20) */ + #define R_ICU_PERIERR_STAT1_ER_ST20_Msk (0x100000UL) /*!< ER_ST20 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST21_Pos (21UL) /*!< ER_ST21 (Bit 21) */ + #define R_ICU_PERIERR_STAT1_ER_ST21_Msk (0x200000UL) /*!< ER_ST21 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST22_Pos (22UL) /*!< ER_ST22 (Bit 22) */ + #define R_ICU_PERIERR_STAT1_ER_ST22_Msk (0x400000UL) /*!< ER_ST22 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST23_Pos (23UL) /*!< ER_ST23 (Bit 23) */ + #define R_ICU_PERIERR_STAT1_ER_ST23_Msk (0x800000UL) /*!< ER_ST23 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST24_Pos (24UL) /*!< ER_ST24 (Bit 24) */ + #define R_ICU_PERIERR_STAT1_ER_ST24_Msk (0x1000000UL) /*!< ER_ST24 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST27_Pos (27UL) /*!< ER_ST27 (Bit 27) */ + #define R_ICU_PERIERR_STAT1_ER_ST27_Msk (0x8000000UL) /*!< ER_ST27 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_STAT1_ER_ST28_Pos (28UL) /*!< ER_ST28 (Bit 28) */ + #define R_ICU_PERIERR_STAT1_ER_ST28_Msk (0x10000000UL) /*!< ER_ST28 (Bitfield-Mask: 0x01) */ +/* ====================================================== CPU0ERR_CLR ====================================================== */ + #define R_ICU_CPU0ERR_CLR_ER_CL0_Pos (0UL) /*!< ER_CL0 (Bit 0) */ + #define R_ICU_CPU0ERR_CLR_ER_CL0_Msk (0x1UL) /*!< ER_CL0 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL1_Pos (1UL) /*!< ER_CL1 (Bit 1) */ + #define R_ICU_CPU0ERR_CLR_ER_CL1_Msk (0x2UL) /*!< ER_CL1 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL2_Pos (2UL) /*!< ER_CL2 (Bit 2) */ + #define R_ICU_CPU0ERR_CLR_ER_CL2_Msk (0x4UL) /*!< ER_CL2 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL3_Pos (3UL) /*!< ER_CL3 (Bit 3) */ + #define R_ICU_CPU0ERR_CLR_ER_CL3_Msk (0x8UL) /*!< ER_CL3 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL4_Pos (4UL) /*!< ER_CL4 (Bit 4) */ + #define R_ICU_CPU0ERR_CLR_ER_CL4_Msk (0x10UL) /*!< ER_CL4 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL5_Pos (5UL) /*!< ER_CL5 (Bit 5) */ + #define R_ICU_CPU0ERR_CLR_ER_CL5_Msk (0x20UL) /*!< ER_CL5 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL6_Pos (6UL) /*!< ER_CL6 (Bit 6) */ + #define R_ICU_CPU0ERR_CLR_ER_CL6_Msk (0x40UL) /*!< ER_CL6 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL7_Pos (7UL) /*!< ER_CL7 (Bit 7) */ + #define R_ICU_CPU0ERR_CLR_ER_CL7_Msk (0x80UL) /*!< ER_CL7 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL8_Pos (8UL) /*!< ER_CL8 (Bit 8) */ + #define R_ICU_CPU0ERR_CLR_ER_CL8_Msk (0x100UL) /*!< ER_CL8 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL9_Pos (9UL) /*!< ER_CL9 (Bit 9) */ + #define R_ICU_CPU0ERR_CLR_ER_CL9_Msk (0x200UL) /*!< ER_CL9 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL10_Pos (10UL) /*!< ER_CL10 (Bit 10) */ + #define R_ICU_CPU0ERR_CLR_ER_CL10_Msk (0x400UL) /*!< ER_CL10 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL11_Pos (11UL) /*!< ER_CL11 (Bit 11) */ + #define R_ICU_CPU0ERR_CLR_ER_CL11_Msk (0x800UL) /*!< ER_CL11 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL12_Pos (12UL) /*!< ER_CL12 (Bit 12) */ + #define R_ICU_CPU0ERR_CLR_ER_CL12_Msk (0x1000UL) /*!< ER_CL12 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL13_Pos (13UL) /*!< ER_CL13 (Bit 13) */ + #define R_ICU_CPU0ERR_CLR_ER_CL13_Msk (0x2000UL) /*!< ER_CL13 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL14_Pos (14UL) /*!< ER_CL14 (Bit 14) */ + #define R_ICU_CPU0ERR_CLR_ER_CL14_Msk (0x4000UL) /*!< ER_CL14 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL15_Pos (15UL) /*!< ER_CL15 (Bit 15) */ + #define R_ICU_CPU0ERR_CLR_ER_CL15_Msk (0x8000UL) /*!< ER_CL15 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL16_Pos (16UL) /*!< ER_CL16 (Bit 16) */ + #define R_ICU_CPU0ERR_CLR_ER_CL16_Msk (0x10000UL) /*!< ER_CL16 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL17_Pos (17UL) /*!< ER_CL17 (Bit 17) */ + #define R_ICU_CPU0ERR_CLR_ER_CL17_Msk (0x20000UL) /*!< ER_CL17 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL18_Pos (18UL) /*!< ER_CL18 (Bit 18) */ + #define R_ICU_CPU0ERR_CLR_ER_CL18_Msk (0x40000UL) /*!< ER_CL18 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL19_Pos (19UL) /*!< ER_CL19 (Bit 19) */ + #define R_ICU_CPU0ERR_CLR_ER_CL19_Msk (0x80000UL) /*!< ER_CL19 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL20_Pos (20UL) /*!< ER_CL20 (Bit 20) */ + #define R_ICU_CPU0ERR_CLR_ER_CL20_Msk (0x100000UL) /*!< ER_CL20 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL21_Pos (21UL) /*!< ER_CL21 (Bit 21) */ + #define R_ICU_CPU0ERR_CLR_ER_CL21_Msk (0x200000UL) /*!< ER_CL21 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL22_Pos (22UL) /*!< ER_CL22 (Bit 22) */ + #define R_ICU_CPU0ERR_CLR_ER_CL22_Msk (0x400000UL) /*!< ER_CL22 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL23_Pos (23UL) /*!< ER_CL23 (Bit 23) */ + #define R_ICU_CPU0ERR_CLR_ER_CL23_Msk (0x800000UL) /*!< ER_CL23 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL24_Pos (24UL) /*!< ER_CL24 (Bit 24) */ + #define R_ICU_CPU0ERR_CLR_ER_CL24_Msk (0x1000000UL) /*!< ER_CL24 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_CLR_ER_CL25_Pos (25UL) /*!< ER_CL25 (Bit 25) */ + #define R_ICU_CPU0ERR_CLR_ER_CL25_Msk (0x2000000UL) /*!< ER_CL25 (Bitfield-Mask: 0x01) */ +/* ===================================================== PERIERR_CLR0 ====================================================== */ + #define R_ICU_PERIERR_CLR0_ER_CL0_Pos (0UL) /*!< ER_CL0 (Bit 0) */ + #define R_ICU_PERIERR_CLR0_ER_CL0_Msk (0x1UL) /*!< ER_CL0 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL1_Pos (1UL) /*!< ER_CL1 (Bit 1) */ + #define R_ICU_PERIERR_CLR0_ER_CL1_Msk (0x2UL) /*!< ER_CL1 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL2_Pos (2UL) /*!< ER_CL2 (Bit 2) */ + #define R_ICU_PERIERR_CLR0_ER_CL2_Msk (0x4UL) /*!< ER_CL2 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL3_Pos (3UL) /*!< ER_CL3 (Bit 3) */ + #define R_ICU_PERIERR_CLR0_ER_CL3_Msk (0x8UL) /*!< ER_CL3 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL4_Pos (4UL) /*!< ER_CL4 (Bit 4) */ + #define R_ICU_PERIERR_CLR0_ER_CL4_Msk (0x10UL) /*!< ER_CL4 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL5_Pos (5UL) /*!< ER_CL5 (Bit 5) */ + #define R_ICU_PERIERR_CLR0_ER_CL5_Msk (0x20UL) /*!< ER_CL5 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL6_Pos (6UL) /*!< ER_CL6 (Bit 6) */ + #define R_ICU_PERIERR_CLR0_ER_CL6_Msk (0x40UL) /*!< ER_CL6 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL7_Pos (7UL) /*!< ER_CL7 (Bit 7) */ + #define R_ICU_PERIERR_CLR0_ER_CL7_Msk (0x80UL) /*!< ER_CL7 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL9_Pos (9UL) /*!< ER_CL9 (Bit 9) */ + #define R_ICU_PERIERR_CLR0_ER_CL9_Msk (0x200UL) /*!< ER_CL9 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL10_Pos (10UL) /*!< ER_CL10 (Bit 10) */ + #define R_ICU_PERIERR_CLR0_ER_CL10_Msk (0x400UL) /*!< ER_CL10 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL11_Pos (11UL) /*!< ER_CL11 (Bit 11) */ + #define R_ICU_PERIERR_CLR0_ER_CL11_Msk (0x800UL) /*!< ER_CL11 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL12_Pos (12UL) /*!< ER_CL12 (Bit 12) */ + #define R_ICU_PERIERR_CLR0_ER_CL12_Msk (0x1000UL) /*!< ER_CL12 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL13_Pos (13UL) /*!< ER_CL13 (Bit 13) */ + #define R_ICU_PERIERR_CLR0_ER_CL13_Msk (0x2000UL) /*!< ER_CL13 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL14_Pos (14UL) /*!< ER_CL14 (Bit 14) */ + #define R_ICU_PERIERR_CLR0_ER_CL14_Msk (0x4000UL) /*!< ER_CL14 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL15_Pos (15UL) /*!< ER_CL15 (Bit 15) */ + #define R_ICU_PERIERR_CLR0_ER_CL15_Msk (0x8000UL) /*!< ER_CL15 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL16_Pos (16UL) /*!< ER_CL16 (Bit 16) */ + #define R_ICU_PERIERR_CLR0_ER_CL16_Msk (0x10000UL) /*!< ER_CL16 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL17_Pos (17UL) /*!< ER_CL17 (Bit 17) */ + #define R_ICU_PERIERR_CLR0_ER_CL17_Msk (0x20000UL) /*!< ER_CL17 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL18_Pos (18UL) /*!< ER_CL18 (Bit 18) */ + #define R_ICU_PERIERR_CLR0_ER_CL18_Msk (0x40000UL) /*!< ER_CL18 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL19_Pos (19UL) /*!< ER_CL19 (Bit 19) */ + #define R_ICU_PERIERR_CLR0_ER_CL19_Msk (0x80000UL) /*!< ER_CL19 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL20_Pos (20UL) /*!< ER_CL20 (Bit 20) */ + #define R_ICU_PERIERR_CLR0_ER_CL20_Msk (0x100000UL) /*!< ER_CL20 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL21_Pos (21UL) /*!< ER_CL21 (Bit 21) */ + #define R_ICU_PERIERR_CLR0_ER_CL21_Msk (0x200000UL) /*!< ER_CL21 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL22_Pos (22UL) /*!< ER_CL22 (Bit 22) */ + #define R_ICU_PERIERR_CLR0_ER_CL22_Msk (0x400000UL) /*!< ER_CL22 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL23_Pos (23UL) /*!< ER_CL23 (Bit 23) */ + #define R_ICU_PERIERR_CLR0_ER_CL23_Msk (0x800000UL) /*!< ER_CL23 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL24_Pos (24UL) /*!< ER_CL24 (Bit 24) */ + #define R_ICU_PERIERR_CLR0_ER_CL24_Msk (0x1000000UL) /*!< ER_CL24 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL25_Pos (25UL) /*!< ER_CL25 (Bit 25) */ + #define R_ICU_PERIERR_CLR0_ER_CL25_Msk (0x2000000UL) /*!< ER_CL25 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL26_Pos (26UL) /*!< ER_CL26 (Bit 26) */ + #define R_ICU_PERIERR_CLR0_ER_CL26_Msk (0x4000000UL) /*!< ER_CL26 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL27_Pos (27UL) /*!< ER_CL27 (Bit 27) */ + #define R_ICU_PERIERR_CLR0_ER_CL27_Msk (0x8000000UL) /*!< ER_CL27 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL28_Pos (28UL) /*!< ER_CL28 (Bit 28) */ + #define R_ICU_PERIERR_CLR0_ER_CL28_Msk (0x10000000UL) /*!< ER_CL28 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL29_Pos (29UL) /*!< ER_CL29 (Bit 29) */ + #define R_ICU_PERIERR_CLR0_ER_CL29_Msk (0x20000000UL) /*!< ER_CL29 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL30_Pos (30UL) /*!< ER_CL30 (Bit 30) */ + #define R_ICU_PERIERR_CLR0_ER_CL30_Msk (0x40000000UL) /*!< ER_CL30 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR0_ER_CL31_Pos (31UL) /*!< ER_CL31 (Bit 31) */ + #define R_ICU_PERIERR_CLR0_ER_CL31_Msk (0x80000000UL) /*!< ER_CL31 (Bitfield-Mask: 0x01) */ +/* ===================================================== PERIERR_CLR1 ====================================================== */ + #define R_ICU_PERIERR_CLR1_ER_CL0_Pos (0UL) /*!< ER_CL0 (Bit 0) */ + #define R_ICU_PERIERR_CLR1_ER_CL0_Msk (0x1UL) /*!< ER_CL0 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL1_Pos (1UL) /*!< ER_CL1 (Bit 1) */ + #define R_ICU_PERIERR_CLR1_ER_CL1_Msk (0x2UL) /*!< ER_CL1 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL2_Pos (2UL) /*!< ER_CL2 (Bit 2) */ + #define R_ICU_PERIERR_CLR1_ER_CL2_Msk (0x4UL) /*!< ER_CL2 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL3_Pos (3UL) /*!< ER_CL3 (Bit 3) */ + #define R_ICU_PERIERR_CLR1_ER_CL3_Msk (0x8UL) /*!< ER_CL3 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL4_Pos (4UL) /*!< ER_CL4 (Bit 4) */ + #define R_ICU_PERIERR_CLR1_ER_CL4_Msk (0x10UL) /*!< ER_CL4 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL5_Pos (5UL) /*!< ER_CL5 (Bit 5) */ + #define R_ICU_PERIERR_CLR1_ER_CL5_Msk (0x20UL) /*!< ER_CL5 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL6_Pos (6UL) /*!< ER_CL6 (Bit 6) */ + #define R_ICU_PERIERR_CLR1_ER_CL6_Msk (0x40UL) /*!< ER_CL6 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL7_Pos (7UL) /*!< ER_CL7 (Bit 7) */ + #define R_ICU_PERIERR_CLR1_ER_CL7_Msk (0x80UL) /*!< ER_CL7 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL8_Pos (8UL) /*!< ER_CL8 (Bit 8) */ + #define R_ICU_PERIERR_CLR1_ER_CL8_Msk (0x100UL) /*!< ER_CL8 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL9_Pos (9UL) /*!< ER_CL9 (Bit 9) */ + #define R_ICU_PERIERR_CLR1_ER_CL9_Msk (0x200UL) /*!< ER_CL9 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL13_Pos (13UL) /*!< ER_CL13 (Bit 13) */ + #define R_ICU_PERIERR_CLR1_ER_CL13_Msk (0x2000UL) /*!< ER_CL13 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL15_Pos (15UL) /*!< ER_CL15 (Bit 15) */ + #define R_ICU_PERIERR_CLR1_ER_CL15_Msk (0x8000UL) /*!< ER_CL15 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL16_Pos (16UL) /*!< ER_CL16 (Bit 16) */ + #define R_ICU_PERIERR_CLR1_ER_CL16_Msk (0x10000UL) /*!< ER_CL16 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL17_Pos (17UL) /*!< ER_CL17 (Bit 17) */ + #define R_ICU_PERIERR_CLR1_ER_CL17_Msk (0x20000UL) /*!< ER_CL17 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL18_Pos (18UL) /*!< ER_CL18 (Bit 18) */ + #define R_ICU_PERIERR_CLR1_ER_CL18_Msk (0x40000UL) /*!< ER_CL18 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL19_Pos (19UL) /*!< ER_CL19 (Bit 19) */ + #define R_ICU_PERIERR_CLR1_ER_CL19_Msk (0x80000UL) /*!< ER_CL19 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL20_Pos (20UL) /*!< ER_CL20 (Bit 20) */ + #define R_ICU_PERIERR_CLR1_ER_CL20_Msk (0x100000UL) /*!< ER_CL20 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL21_Pos (21UL) /*!< ER_CL21 (Bit 21) */ + #define R_ICU_PERIERR_CLR1_ER_CL21_Msk (0x200000UL) /*!< ER_CL21 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL22_Pos (22UL) /*!< ER_CL22 (Bit 22) */ + #define R_ICU_PERIERR_CLR1_ER_CL22_Msk (0x400000UL) /*!< ER_CL22 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL23_Pos (23UL) /*!< ER_CL23 (Bit 23) */ + #define R_ICU_PERIERR_CLR1_ER_CL23_Msk (0x800000UL) /*!< ER_CL23 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL24_Pos (24UL) /*!< ER_CL24 (Bit 24) */ + #define R_ICU_PERIERR_CLR1_ER_CL24_Msk (0x1000000UL) /*!< ER_CL24 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL27_Pos (27UL) /*!< ER_CL27 (Bit 27) */ + #define R_ICU_PERIERR_CLR1_ER_CL27_Msk (0x8000000UL) /*!< ER_CL27 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_CLR1_ER_CL28_Pos (28UL) /*!< ER_CL28 (Bit 28) */ + #define R_ICU_PERIERR_CLR1_ER_CL28_Msk (0x10000000UL) /*!< ER_CL28 (Bitfield-Mask: 0x01) */ +/* ==================================================== CPU0ERR_RSTMSK ===================================================== */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK0_Pos (0UL) /*!< RS_MK0 (Bit 0) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK0_Msk (0x1UL) /*!< RS_MK0 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK1_Pos (1UL) /*!< RS_MK1 (Bit 1) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK1_Msk (0x2UL) /*!< RS_MK1 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK2_Pos (2UL) /*!< RS_MK2 (Bit 2) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK2_Msk (0x4UL) /*!< RS_MK2 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK3_Pos (3UL) /*!< RS_MK3 (Bit 3) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK3_Msk (0x8UL) /*!< RS_MK3 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK4_Pos (4UL) /*!< RS_MK4 (Bit 4) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK4_Msk (0x10UL) /*!< RS_MK4 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK5_Pos (5UL) /*!< RS_MK5 (Bit 5) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK5_Msk (0x20UL) /*!< RS_MK5 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK6_Pos (6UL) /*!< RS_MK6 (Bit 6) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK6_Msk (0x40UL) /*!< RS_MK6 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK7_Pos (7UL) /*!< RS_MK7 (Bit 7) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK7_Msk (0x80UL) /*!< RS_MK7 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK8_Pos (8UL) /*!< RS_MK8 (Bit 8) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK8_Msk (0x100UL) /*!< RS_MK8 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK9_Pos (9UL) /*!< RS_MK9 (Bit 9) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK9_Msk (0x200UL) /*!< RS_MK9 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK10_Pos (10UL) /*!< RS_MK10 (Bit 10) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK10_Msk (0x400UL) /*!< RS_MK10 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK11_Pos (11UL) /*!< RS_MK11 (Bit 11) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK11_Msk (0x800UL) /*!< RS_MK11 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK12_Pos (12UL) /*!< RS_MK12 (Bit 12) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK12_Msk (0x1000UL) /*!< RS_MK12 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK13_Pos (13UL) /*!< RS_MK13 (Bit 13) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK13_Msk (0x2000UL) /*!< RS_MK13 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK14_Pos (14UL) /*!< RS_MK14 (Bit 14) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK14_Msk (0x4000UL) /*!< RS_MK14 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK15_Pos (15UL) /*!< RS_MK15 (Bit 15) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK15_Msk (0x8000UL) /*!< RS_MK15 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK16_Pos (16UL) /*!< RS_MK16 (Bit 16) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK16_Msk (0x10000UL) /*!< RS_MK16 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK17_Pos (17UL) /*!< RS_MK17 (Bit 17) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK17_Msk (0x20000UL) /*!< RS_MK17 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK18_Pos (18UL) /*!< RS_MK18 (Bit 18) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK18_Msk (0x40000UL) /*!< RS_MK18 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK19_Pos (19UL) /*!< RS_MK19 (Bit 19) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK19_Msk (0x80000UL) /*!< RS_MK19 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK20_Pos (20UL) /*!< RS_MK20 (Bit 20) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK20_Msk (0x100000UL) /*!< RS_MK20 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK21_Pos (21UL) /*!< RS_MK21 (Bit 21) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK21_Msk (0x200000UL) /*!< RS_MK21 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK22_Pos (22UL) /*!< RS_MK22 (Bit 22) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK22_Msk (0x400000UL) /*!< RS_MK22 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK23_Pos (23UL) /*!< RS_MK23 (Bit 23) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK23_Msk (0x800000UL) /*!< RS_MK23 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK24_Pos (24UL) /*!< RS_MK24 (Bit 24) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK24_Msk (0x1000000UL) /*!< RS_MK24 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK25_Pos (25UL) /*!< RS_MK25 (Bit 25) */ + #define R_ICU_CPU0ERR_RSTMSK_RS_MK25_Msk (0x2000000UL) /*!< RS_MK25 (Bitfield-Mask: 0x01) */ +/* ==================================================== PERIERR_RSTMSK0 ==================================================== */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK0_Pos (0UL) /*!< RS_MK0 (Bit 0) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK0_Msk (0x1UL) /*!< RS_MK0 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK1_Pos (1UL) /*!< RS_MK1 (Bit 1) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK1_Msk (0x2UL) /*!< RS_MK1 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK2_Pos (2UL) /*!< RS_MK2 (Bit 2) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK2_Msk (0x4UL) /*!< RS_MK2 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK3_Pos (3UL) /*!< RS_MK3 (Bit 3) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK3_Msk (0x8UL) /*!< RS_MK3 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK4_Pos (4UL) /*!< RS_MK4 (Bit 4) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK4_Msk (0x10UL) /*!< RS_MK4 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK5_Pos (5UL) /*!< RS_MK5 (Bit 5) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK5_Msk (0x20UL) /*!< RS_MK5 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK6_Pos (6UL) /*!< RS_MK6 (Bit 6) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK6_Msk (0x40UL) /*!< RS_MK6 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK7_Pos (7UL) /*!< RS_MK7 (Bit 7) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK7_Msk (0x80UL) /*!< RS_MK7 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK9_Pos (9UL) /*!< RS_MK9 (Bit 9) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK9_Msk (0x200UL) /*!< RS_MK9 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK10_Pos (10UL) /*!< RS_MK10 (Bit 10) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK10_Msk (0x400UL) /*!< RS_MK10 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK11_Pos (11UL) /*!< RS_MK11 (Bit 11) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK11_Msk (0x800UL) /*!< RS_MK11 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK12_Pos (12UL) /*!< RS_MK12 (Bit 12) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK12_Msk (0x1000UL) /*!< RS_MK12 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK13_Pos (13UL) /*!< RS_MK13 (Bit 13) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK13_Msk (0x2000UL) /*!< RS_MK13 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK14_Pos (14UL) /*!< RS_MK14 (Bit 14) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK14_Msk (0x4000UL) /*!< RS_MK14 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK15_Pos (15UL) /*!< RS_MK15 (Bit 15) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK15_Msk (0x8000UL) /*!< RS_MK15 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK16_Pos (16UL) /*!< RS_MK16 (Bit 16) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK16_Msk (0x10000UL) /*!< RS_MK16 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK17_Pos (17UL) /*!< RS_MK17 (Bit 17) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK17_Msk (0x20000UL) /*!< RS_MK17 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK18_Pos (18UL) /*!< RS_MK18 (Bit 18) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK18_Msk (0x40000UL) /*!< RS_MK18 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK19_Pos (19UL) /*!< RS_MK19 (Bit 19) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK19_Msk (0x80000UL) /*!< RS_MK19 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK20_Pos (20UL) /*!< RS_MK20 (Bit 20) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK20_Msk (0x100000UL) /*!< RS_MK20 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK21_Pos (21UL) /*!< RS_MK21 (Bit 21) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK21_Msk (0x200000UL) /*!< RS_MK21 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK22_Pos (22UL) /*!< RS_MK22 (Bit 22) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK22_Msk (0x400000UL) /*!< RS_MK22 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK23_Pos (23UL) /*!< RS_MK23 (Bit 23) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK23_Msk (0x800000UL) /*!< RS_MK23 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK24_Pos (24UL) /*!< RS_MK24 (Bit 24) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK24_Msk (0x1000000UL) /*!< RS_MK24 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK25_Pos (25UL) /*!< RS_MK25 (Bit 25) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK25_Msk (0x2000000UL) /*!< RS_MK25 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK26_Pos (26UL) /*!< RS_MK26 (Bit 26) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK26_Msk (0x4000000UL) /*!< RS_MK26 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK27_Pos (27UL) /*!< RS_MK27 (Bit 27) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK27_Msk (0x8000000UL) /*!< RS_MK27 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK28_Pos (28UL) /*!< RS_MK28 (Bit 28) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK28_Msk (0x10000000UL) /*!< RS_MK28 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK29_Pos (29UL) /*!< RS_MK29 (Bit 29) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK29_Msk (0x20000000UL) /*!< RS_MK29 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK30_Pos (30UL) /*!< RS_MK30 (Bit 30) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK30_Msk (0x40000000UL) /*!< RS_MK30 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK31_Pos (31UL) /*!< RS_MK31 (Bit 31) */ + #define R_ICU_PERIERR_RSTMSK0_RS_MK31_Msk (0x80000000UL) /*!< RS_MK31 (Bitfield-Mask: 0x01) */ +/* ==================================================== PERIERR_RSTMSK1 ==================================================== */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK0_Pos (0UL) /*!< RS_MK0 (Bit 0) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK0_Msk (0x1UL) /*!< RS_MK0 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK1_Pos (1UL) /*!< RS_MK1 (Bit 1) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK1_Msk (0x2UL) /*!< RS_MK1 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK2_Pos (2UL) /*!< RS_MK2 (Bit 2) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK2_Msk (0x4UL) /*!< RS_MK2 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK3_Pos (3UL) /*!< RS_MK3 (Bit 3) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK3_Msk (0x8UL) /*!< RS_MK3 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK4_Pos (4UL) /*!< RS_MK4 (Bit 4) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK4_Msk (0x10UL) /*!< RS_MK4 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK5_Pos (5UL) /*!< RS_MK5 (Bit 5) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK5_Msk (0x20UL) /*!< RS_MK5 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK6_Pos (6UL) /*!< RS_MK6 (Bit 6) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK6_Msk (0x40UL) /*!< RS_MK6 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK7_Pos (7UL) /*!< RS_MK7 (Bit 7) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK7_Msk (0x80UL) /*!< RS_MK7 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK8_Pos (8UL) /*!< RS_MK8 (Bit 8) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK8_Msk (0x100UL) /*!< RS_MK8 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK9_Pos (9UL) /*!< RS_MK9 (Bit 9) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK9_Msk (0x200UL) /*!< RS_MK9 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK13_Pos (13UL) /*!< RS_MK13 (Bit 13) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK13_Msk (0x2000UL) /*!< RS_MK13 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK15_Pos (15UL) /*!< RS_MK15 (Bit 15) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK15_Msk (0x8000UL) /*!< RS_MK15 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK16_Pos (16UL) /*!< RS_MK16 (Bit 16) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK16_Msk (0x10000UL) /*!< RS_MK16 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK17_Pos (17UL) /*!< RS_MK17 (Bit 17) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK17_Msk (0x20000UL) /*!< RS_MK17 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK18_Pos (18UL) /*!< RS_MK18 (Bit 18) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK18_Msk (0x40000UL) /*!< RS_MK18 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK19_Pos (19UL) /*!< RS_MK19 (Bit 19) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK19_Msk (0x80000UL) /*!< RS_MK19 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK20_Pos (20UL) /*!< RS_MK20 (Bit 20) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK20_Msk (0x100000UL) /*!< RS_MK20 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK21_Pos (21UL) /*!< RS_MK21 (Bit 21) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK21_Msk (0x200000UL) /*!< RS_MK21 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK22_Pos (22UL) /*!< RS_MK22 (Bit 22) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK22_Msk (0x400000UL) /*!< RS_MK22 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK23_Pos (23UL) /*!< RS_MK23 (Bit 23) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK23_Msk (0x800000UL) /*!< RS_MK23 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK24_Pos (24UL) /*!< RS_MK24 (Bit 24) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK24_Msk (0x1000000UL) /*!< RS_MK24 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK27_Pos (27UL) /*!< RS_MK27 (Bit 27) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK27_Msk (0x8000000UL) /*!< RS_MK27 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK28_Pos (28UL) /*!< RS_MK28 (Bit 28) */ + #define R_ICU_PERIERR_RSTMSK1_RS_MK28_Msk (0x10000000UL) /*!< RS_MK28 (Bitfield-Mask: 0x01) */ +/* ===================================================== CPU0ERR_E0MSK ===================================================== */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK0_Pos (0UL) /*!< E0_MK0 (Bit 0) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK0_Msk (0x1UL) /*!< E0_MK0 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK1_Pos (1UL) /*!< E0_MK1 (Bit 1) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK1_Msk (0x2UL) /*!< E0_MK1 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK2_Pos (2UL) /*!< E0_MK2 (Bit 2) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK2_Msk (0x4UL) /*!< E0_MK2 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK3_Pos (3UL) /*!< E0_MK3 (Bit 3) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK3_Msk (0x8UL) /*!< E0_MK3 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK4_Pos (4UL) /*!< E0_MK4 (Bit 4) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK4_Msk (0x10UL) /*!< E0_MK4 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK5_Pos (5UL) /*!< E0_MK5 (Bit 5) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK5_Msk (0x20UL) /*!< E0_MK5 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK6_Pos (6UL) /*!< E0_MK6 (Bit 6) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK6_Msk (0x40UL) /*!< E0_MK6 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK7_Pos (7UL) /*!< E0_MK7 (Bit 7) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK7_Msk (0x80UL) /*!< E0_MK7 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK8_Pos (8UL) /*!< E0_MK8 (Bit 8) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK8_Msk (0x100UL) /*!< E0_MK8 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK9_Pos (9UL) /*!< E0_MK9 (Bit 9) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK9_Msk (0x200UL) /*!< E0_MK9 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK10_Pos (10UL) /*!< E0_MK10 (Bit 10) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK10_Msk (0x400UL) /*!< E0_MK10 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK11_Pos (11UL) /*!< E0_MK11 (Bit 11) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK11_Msk (0x800UL) /*!< E0_MK11 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK12_Pos (12UL) /*!< E0_MK12 (Bit 12) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK12_Msk (0x1000UL) /*!< E0_MK12 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK13_Pos (13UL) /*!< E0_MK13 (Bit 13) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK13_Msk (0x2000UL) /*!< E0_MK13 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK14_Pos (14UL) /*!< E0_MK14 (Bit 14) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK14_Msk (0x4000UL) /*!< E0_MK14 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK15_Pos (15UL) /*!< E0_MK15 (Bit 15) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK15_Msk (0x8000UL) /*!< E0_MK15 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK16_Pos (16UL) /*!< E0_MK16 (Bit 16) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK16_Msk (0x10000UL) /*!< E0_MK16 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK17_Pos (17UL) /*!< E0_MK17 (Bit 17) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK17_Msk (0x20000UL) /*!< E0_MK17 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK18_Pos (18UL) /*!< E0_MK18 (Bit 18) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK18_Msk (0x40000UL) /*!< E0_MK18 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK19_Pos (19UL) /*!< E0_MK19 (Bit 19) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK19_Msk (0x80000UL) /*!< E0_MK19 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK20_Pos (20UL) /*!< E0_MK20 (Bit 20) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK20_Msk (0x100000UL) /*!< E0_MK20 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK21_Pos (21UL) /*!< E0_MK21 (Bit 21) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK21_Msk (0x200000UL) /*!< E0_MK21 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK22_Pos (22UL) /*!< E0_MK22 (Bit 22) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK22_Msk (0x400000UL) /*!< E0_MK22 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK23_Pos (23UL) /*!< E0_MK23 (Bit 23) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK23_Msk (0x800000UL) /*!< E0_MK23 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK24_Pos (24UL) /*!< E0_MK24 (Bit 24) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK24_Msk (0x1000000UL) /*!< E0_MK24 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK25_Pos (25UL) /*!< E0_MK25 (Bit 25) */ + #define R_ICU_CPU0ERR_E0MSK_E0_MK25_Msk (0x2000000UL) /*!< E0_MK25 (Bitfield-Mask: 0x01) */ +/* ==================================================== PERIERR_E0MSK0 ===================================================== */ + #define R_ICU_PERIERR_E0MSK0_E0_MK0_Pos (0UL) /*!< E0_MK0 (Bit 0) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK0_Msk (0x1UL) /*!< E0_MK0 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK1_Pos (1UL) /*!< E0_MK1 (Bit 1) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK1_Msk (0x2UL) /*!< E0_MK1 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK2_Pos (2UL) /*!< E0_MK2 (Bit 2) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK2_Msk (0x4UL) /*!< E0_MK2 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK3_Pos (3UL) /*!< E0_MK3 (Bit 3) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK3_Msk (0x8UL) /*!< E0_MK3 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK4_Pos (4UL) /*!< E0_MK4 (Bit 4) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK4_Msk (0x10UL) /*!< E0_MK4 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK5_Pos (5UL) /*!< E0_MK5 (Bit 5) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK5_Msk (0x20UL) /*!< E0_MK5 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK6_Pos (6UL) /*!< E0_MK6 (Bit 6) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK6_Msk (0x40UL) /*!< E0_MK6 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK7_Pos (7UL) /*!< E0_MK7 (Bit 7) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK7_Msk (0x80UL) /*!< E0_MK7 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK9_Pos (9UL) /*!< E0_MK9 (Bit 9) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK9_Msk (0x200UL) /*!< E0_MK9 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK10_Pos (10UL) /*!< E0_MK10 (Bit 10) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK10_Msk (0x400UL) /*!< E0_MK10 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK11_Pos (11UL) /*!< E0_MK11 (Bit 11) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK11_Msk (0x800UL) /*!< E0_MK11 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK12_Pos (12UL) /*!< E0_MK12 (Bit 12) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK12_Msk (0x1000UL) /*!< E0_MK12 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK13_Pos (13UL) /*!< E0_MK13 (Bit 13) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK13_Msk (0x2000UL) /*!< E0_MK13 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK14_Pos (14UL) /*!< E0_MK14 (Bit 14) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK14_Msk (0x4000UL) /*!< E0_MK14 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK15_Pos (15UL) /*!< E0_MK15 (Bit 15) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK15_Msk (0x8000UL) /*!< E0_MK15 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK16_Pos (16UL) /*!< E0_MK16 (Bit 16) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK16_Msk (0x10000UL) /*!< E0_MK16 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK17_Pos (17UL) /*!< E0_MK17 (Bit 17) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK17_Msk (0x20000UL) /*!< E0_MK17 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK18_Pos (18UL) /*!< E0_MK18 (Bit 18) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK18_Msk (0x40000UL) /*!< E0_MK18 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK19_Pos (19UL) /*!< E0_MK19 (Bit 19) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK19_Msk (0x80000UL) /*!< E0_MK19 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK20_Pos (20UL) /*!< E0_MK20 (Bit 20) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK20_Msk (0x100000UL) /*!< E0_MK20 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK21_Pos (21UL) /*!< E0_MK21 (Bit 21) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK21_Msk (0x200000UL) /*!< E0_MK21 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK22_Pos (22UL) /*!< E0_MK22 (Bit 22) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK22_Msk (0x400000UL) /*!< E0_MK22 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK23_Pos (23UL) /*!< E0_MK23 (Bit 23) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK23_Msk (0x800000UL) /*!< E0_MK23 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK24_Pos (24UL) /*!< E0_MK24 (Bit 24) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK24_Msk (0x1000000UL) /*!< E0_MK24 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK25_Pos (25UL) /*!< E0_MK25 (Bit 25) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK25_Msk (0x2000000UL) /*!< E0_MK25 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK26_Pos (26UL) /*!< E0_MK26 (Bit 26) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK26_Msk (0x4000000UL) /*!< E0_MK26 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK27_Pos (27UL) /*!< E0_MK27 (Bit 27) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK27_Msk (0x8000000UL) /*!< E0_MK27 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK28_Pos (28UL) /*!< E0_MK28 (Bit 28) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK28_Msk (0x10000000UL) /*!< E0_MK28 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK29_Pos (29UL) /*!< E0_MK29 (Bit 29) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK29_Msk (0x20000000UL) /*!< E0_MK29 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK30_Pos (30UL) /*!< E0_MK30 (Bit 30) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK30_Msk (0x40000000UL) /*!< E0_MK30 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK31_Pos (31UL) /*!< E0_MK31 (Bit 31) */ + #define R_ICU_PERIERR_E0MSK0_E0_MK31_Msk (0x80000000UL) /*!< E0_MK31 (Bitfield-Mask: 0x01) */ +/* ==================================================== PERIERR_E0MSK1 ===================================================== */ + #define R_ICU_PERIERR_E0MSK1_E0_MK0_Pos (0UL) /*!< E0_MK0 (Bit 0) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK0_Msk (0x1UL) /*!< E0_MK0 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK1_Pos (1UL) /*!< E0_MK1 (Bit 1) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK1_Msk (0x2UL) /*!< E0_MK1 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK2_Pos (2UL) /*!< E0_MK2 (Bit 2) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK2_Msk (0x4UL) /*!< E0_MK2 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK3_Pos (3UL) /*!< E0_MK3 (Bit 3) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK3_Msk (0x8UL) /*!< E0_MK3 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK4_Pos (4UL) /*!< E0_MK4 (Bit 4) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK4_Msk (0x10UL) /*!< E0_MK4 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK5_Pos (5UL) /*!< E0_MK5 (Bit 5) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK5_Msk (0x20UL) /*!< E0_MK5 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK6_Pos (6UL) /*!< E0_MK6 (Bit 6) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK6_Msk (0x40UL) /*!< E0_MK6 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK7_Pos (7UL) /*!< E0_MK7 (Bit 7) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK7_Msk (0x80UL) /*!< E0_MK7 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK8_Pos (8UL) /*!< E0_MK8 (Bit 8) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK8_Msk (0x100UL) /*!< E0_MK8 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK9_Pos (9UL) /*!< E0_MK9 (Bit 9) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK9_Msk (0x200UL) /*!< E0_MK9 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK13_Pos (13UL) /*!< E0_MK13 (Bit 13) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK13_Msk (0x2000UL) /*!< E0_MK13 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK15_Pos (15UL) /*!< E0_MK15 (Bit 15) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK15_Msk (0x8000UL) /*!< E0_MK15 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK16_Pos (16UL) /*!< E0_MK16 (Bit 16) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK16_Msk (0x10000UL) /*!< E0_MK16 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK17_Pos (17UL) /*!< E0_MK17 (Bit 17) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK17_Msk (0x20000UL) /*!< E0_MK17 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK18_Pos (18UL) /*!< E0_MK18 (Bit 18) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK18_Msk (0x40000UL) /*!< E0_MK18 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK19_Pos (19UL) /*!< E0_MK19 (Bit 19) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK19_Msk (0x80000UL) /*!< E0_MK19 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK20_Pos (20UL) /*!< E0_MK20 (Bit 20) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK20_Msk (0x100000UL) /*!< E0_MK20 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK21_Pos (21UL) /*!< E0_MK21 (Bit 21) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK21_Msk (0x200000UL) /*!< E0_MK21 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK22_Pos (22UL) /*!< E0_MK22 (Bit 22) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK22_Msk (0x400000UL) /*!< E0_MK22 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK23_Pos (23UL) /*!< E0_MK23 (Bit 23) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK23_Msk (0x800000UL) /*!< E0_MK23 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK24_Pos (24UL) /*!< E0_MK24 (Bit 24) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK24_Msk (0x1000000UL) /*!< E0_MK24 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK27_Pos (27UL) /*!< E0_MK27 (Bit 27) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK27_Msk (0x8000000UL) /*!< E0_MK27 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK28_Pos (28UL) /*!< E0_MK28 (Bit 28) */ + #define R_ICU_PERIERR_E0MSK1_E0_MK28_Msk (0x10000000UL) /*!< E0_MK28 (Bitfield-Mask: 0x01) */ +/* ===================================================== CPU0ERR_E1MSK ===================================================== */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK0_Pos (0UL) /*!< E1_MK0 (Bit 0) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK0_Msk (0x1UL) /*!< E1_MK0 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK1_Pos (1UL) /*!< E1_MK1 (Bit 1) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK1_Msk (0x2UL) /*!< E1_MK1 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK2_Pos (2UL) /*!< E1_MK2 (Bit 2) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK2_Msk (0x4UL) /*!< E1_MK2 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK3_Pos (3UL) /*!< E1_MK3 (Bit 3) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK3_Msk (0x8UL) /*!< E1_MK3 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK4_Pos (4UL) /*!< E1_MK4 (Bit 4) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK4_Msk (0x10UL) /*!< E1_MK4 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK5_Pos (5UL) /*!< E1_MK5 (Bit 5) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK5_Msk (0x20UL) /*!< E1_MK5 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK6_Pos (6UL) /*!< E1_MK6 (Bit 6) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK6_Msk (0x40UL) /*!< E1_MK6 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK7_Pos (7UL) /*!< E1_MK7 (Bit 7) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK7_Msk (0x80UL) /*!< E1_MK7 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK8_Pos (8UL) /*!< E1_MK8 (Bit 8) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK8_Msk (0x100UL) /*!< E1_MK8 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK9_Pos (9UL) /*!< E1_MK9 (Bit 9) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK9_Msk (0x200UL) /*!< E1_MK9 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK10_Pos (10UL) /*!< E1_MK10 (Bit 10) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK10_Msk (0x400UL) /*!< E1_MK10 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK11_Pos (11UL) /*!< E1_MK11 (Bit 11) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK11_Msk (0x800UL) /*!< E1_MK11 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK12_Pos (12UL) /*!< E1_MK12 (Bit 12) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK12_Msk (0x1000UL) /*!< E1_MK12 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK13_Pos (13UL) /*!< E1_MK13 (Bit 13) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK13_Msk (0x2000UL) /*!< E1_MK13 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK14_Pos (14UL) /*!< E1_MK14 (Bit 14) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK14_Msk (0x4000UL) /*!< E1_MK14 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK15_Pos (15UL) /*!< E1_MK15 (Bit 15) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK15_Msk (0x8000UL) /*!< E1_MK15 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK16_Pos (16UL) /*!< E1_MK16 (Bit 16) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK16_Msk (0x10000UL) /*!< E1_MK16 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK17_Pos (17UL) /*!< E1_MK17 (Bit 17) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK17_Msk (0x20000UL) /*!< E1_MK17 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK18_Pos (18UL) /*!< E1_MK18 (Bit 18) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK18_Msk (0x40000UL) /*!< E1_MK18 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK19_Pos (19UL) /*!< E1_MK19 (Bit 19) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK19_Msk (0x80000UL) /*!< E1_MK19 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK20_Pos (20UL) /*!< E1_MK20 (Bit 20) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK20_Msk (0x100000UL) /*!< E1_MK20 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK21_Pos (21UL) /*!< E1_MK21 (Bit 21) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK21_Msk (0x200000UL) /*!< E1_MK21 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK22_Pos (22UL) /*!< E1_MK22 (Bit 22) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK22_Msk (0x400000UL) /*!< E1_MK22 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK23_Pos (23UL) /*!< E1_MK23 (Bit 23) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK23_Msk (0x800000UL) /*!< E1_MK23 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK24_Pos (24UL) /*!< E1_MK24 (Bit 24) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK24_Msk (0x1000000UL) /*!< E1_MK24 (Bitfield-Mask: 0x01) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK25_Pos (25UL) /*!< E1_MK25 (Bit 25) */ + #define R_ICU_CPU0ERR_E1MSK_E1_MK25_Msk (0x2000000UL) /*!< E1_MK25 (Bitfield-Mask: 0x01) */ +/* ==================================================== PERIERR_E1MSK0 ===================================================== */ + #define R_ICU_PERIERR_E1MSK0_E1_MK0_Pos (0UL) /*!< E1_MK0 (Bit 0) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK0_Msk (0x1UL) /*!< E1_MK0 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK1_Pos (1UL) /*!< E1_MK1 (Bit 1) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK1_Msk (0x2UL) /*!< E1_MK1 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK2_Pos (2UL) /*!< E1_MK2 (Bit 2) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK2_Msk (0x4UL) /*!< E1_MK2 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK3_Pos (3UL) /*!< E1_MK3 (Bit 3) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK3_Msk (0x8UL) /*!< E1_MK3 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK4_Pos (4UL) /*!< E1_MK4 (Bit 4) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK4_Msk (0x10UL) /*!< E1_MK4 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK5_Pos (5UL) /*!< E1_MK5 (Bit 5) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK5_Msk (0x20UL) /*!< E1_MK5 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK6_Pos (6UL) /*!< E1_MK6 (Bit 6) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK6_Msk (0x40UL) /*!< E1_MK6 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK7_Pos (7UL) /*!< E1_MK7 (Bit 7) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK7_Msk (0x80UL) /*!< E1_MK7 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK9_Pos (9UL) /*!< E1_MK9 (Bit 9) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK9_Msk (0x200UL) /*!< E1_MK9 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK10_Pos (10UL) /*!< E1_MK10 (Bit 10) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK10_Msk (0x400UL) /*!< E1_MK10 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK11_Pos (11UL) /*!< E1_MK11 (Bit 11) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK11_Msk (0x800UL) /*!< E1_MK11 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK12_Pos (12UL) /*!< E1_MK12 (Bit 12) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK12_Msk (0x1000UL) /*!< E1_MK12 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK13_Pos (13UL) /*!< E1_MK13 (Bit 13) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK13_Msk (0x2000UL) /*!< E1_MK13 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK14_Pos (14UL) /*!< E1_MK14 (Bit 14) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK14_Msk (0x4000UL) /*!< E1_MK14 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK15_Pos (15UL) /*!< E1_MK15 (Bit 15) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK15_Msk (0x8000UL) /*!< E1_MK15 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK16_Pos (16UL) /*!< E1_MK16 (Bit 16) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK16_Msk (0x10000UL) /*!< E1_MK16 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK17_Pos (17UL) /*!< E1_MK17 (Bit 17) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK17_Msk (0x20000UL) /*!< E1_MK17 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK18_Pos (18UL) /*!< E1_MK18 (Bit 18) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK18_Msk (0x40000UL) /*!< E1_MK18 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK19_Pos (19UL) /*!< E1_MK19 (Bit 19) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK19_Msk (0x80000UL) /*!< E1_MK19 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK20_Pos (20UL) /*!< E1_MK20 (Bit 20) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK20_Msk (0x100000UL) /*!< E1_MK20 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK21_Pos (21UL) /*!< E1_MK21 (Bit 21) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK21_Msk (0x200000UL) /*!< E1_MK21 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK22_Pos (22UL) /*!< E1_MK22 (Bit 22) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK22_Msk (0x400000UL) /*!< E1_MK22 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK23_Pos (23UL) /*!< E1_MK23 (Bit 23) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK23_Msk (0x800000UL) /*!< E1_MK23 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK24_Pos (24UL) /*!< E1_MK24 (Bit 24) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK24_Msk (0x1000000UL) /*!< E1_MK24 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK25_Pos (25UL) /*!< E1_MK25 (Bit 25) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK25_Msk (0x2000000UL) /*!< E1_MK25 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK26_Pos (26UL) /*!< E1_MK26 (Bit 26) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK26_Msk (0x4000000UL) /*!< E1_MK26 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK27_Pos (27UL) /*!< E1_MK27 (Bit 27) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK27_Msk (0x8000000UL) /*!< E1_MK27 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK28_Pos (28UL) /*!< E1_MK28 (Bit 28) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK28_Msk (0x10000000UL) /*!< E1_MK28 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK29_Pos (29UL) /*!< E1_MK29 (Bit 29) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK29_Msk (0x20000000UL) /*!< E1_MK29 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK30_Pos (30UL) /*!< E1_MK30 (Bit 30) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK30_Msk (0x40000000UL) /*!< E1_MK30 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK31_Pos (31UL) /*!< E1_MK31 (Bit 31) */ + #define R_ICU_PERIERR_E1MSK0_E1_MK31_Msk (0x80000000UL) /*!< E1_MK31 (Bitfield-Mask: 0x01) */ +/* ==================================================== PERIERR_E1MSK1 ===================================================== */ + #define R_ICU_PERIERR_E1MSK1_E1_MK0_Pos (0UL) /*!< E1_MK0 (Bit 0) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK0_Msk (0x1UL) /*!< E1_MK0 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK1_Pos (1UL) /*!< E1_MK1 (Bit 1) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK1_Msk (0x2UL) /*!< E1_MK1 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK2_Pos (2UL) /*!< E1_MK2 (Bit 2) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK2_Msk (0x4UL) /*!< E1_MK2 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK3_Pos (3UL) /*!< E1_MK3 (Bit 3) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK3_Msk (0x8UL) /*!< E1_MK3 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK4_Pos (4UL) /*!< E1_MK4 (Bit 4) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK4_Msk (0x10UL) /*!< E1_MK4 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK5_Pos (5UL) /*!< E1_MK5 (Bit 5) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK5_Msk (0x20UL) /*!< E1_MK5 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK6_Pos (6UL) /*!< E1_MK6 (Bit 6) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK6_Msk (0x40UL) /*!< E1_MK6 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK7_Pos (7UL) /*!< E1_MK7 (Bit 7) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK7_Msk (0x80UL) /*!< E1_MK7 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK8_Pos (8UL) /*!< E1_MK8 (Bit 8) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK8_Msk (0x100UL) /*!< E1_MK8 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK9_Pos (9UL) /*!< E1_MK9 (Bit 9) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK9_Msk (0x200UL) /*!< E1_MK9 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK13_Pos (13UL) /*!< E1_MK13 (Bit 13) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK13_Msk (0x2000UL) /*!< E1_MK13 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK15_Pos (15UL) /*!< E1_MK15 (Bit 15) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK15_Msk (0x8000UL) /*!< E1_MK15 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK16_Pos (16UL) /*!< E1_MK16 (Bit 16) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK16_Msk (0x10000UL) /*!< E1_MK16 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK17_Pos (17UL) /*!< E1_MK17 (Bit 17) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK17_Msk (0x20000UL) /*!< E1_MK17 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK18_Pos (18UL) /*!< E1_MK18 (Bit 18) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK18_Msk (0x40000UL) /*!< E1_MK18 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK19_Pos (19UL) /*!< E1_MK19 (Bit 19) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK19_Msk (0x80000UL) /*!< E1_MK19 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK20_Pos (20UL) /*!< E1_MK20 (Bit 20) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK20_Msk (0x100000UL) /*!< E1_MK20 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK21_Pos (21UL) /*!< E1_MK21 (Bit 21) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK21_Msk (0x200000UL) /*!< E1_MK21 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK22_Pos (22UL) /*!< E1_MK22 (Bit 22) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK22_Msk (0x400000UL) /*!< E1_MK22 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK23_Pos (23UL) /*!< E1_MK23 (Bit 23) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK23_Msk (0x800000UL) /*!< E1_MK23 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK24_Pos (24UL) /*!< E1_MK24 (Bit 24) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK24_Msk (0x1000000UL) /*!< E1_MK24 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK27_Pos (27UL) /*!< E1_MK27 (Bit 27) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK27_Msk (0x8000000UL) /*!< E1_MK27 (Bitfield-Mask: 0x01) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK28_Pos (28UL) /*!< E1_MK28 (Bit 28) */ + #define R_ICU_PERIERR_E1MSK1_E1_MK28_Msk (0x10000000UL) /*!< E1_MK28 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_SYSC_S ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== SCKCR2 ========================================================= */ + #define R_SYSC_S_SCKCR2_FSELCPU0_Pos (0UL) /*!< FSELCPU0 (Bit 0) */ + #define R_SYSC_S_SCKCR2_FSELCPU0_Msk (0x1UL) /*!< FSELCPU0 (Bitfield-Mask: 0x01) */ + #define R_SYSC_S_SCKCR2_DIVSELSUB_Pos (5UL) /*!< DIVSELSUB (Bit 5) */ + #define R_SYSC_S_SCKCR2_DIVSELSUB_Msk (0x20UL) /*!< DIVSELSUB (Bitfield-Mask: 0x01) */ + #define R_SYSC_S_SCKCR2_SPI3ASYNCSEL_Pos (24UL) /*!< SPI3ASYNCSEL (Bit 24) */ + #define R_SYSC_S_SCKCR2_SPI3ASYNCSEL_Msk (0x1000000UL) /*!< SPI3ASYNCSEL (Bitfield-Mask: 0x01) */ + #define R_SYSC_S_SCKCR2_SCI5ASYNCSEL_Pos (25UL) /*!< SCI5ASYNCSEL (Bit 25) */ + #define R_SYSC_S_SCKCR2_SCI5ASYNCSEL_Msk (0x2000000UL) /*!< SCI5ASYNCSEL (Bitfield-Mask: 0x01) */ +/* ======================================================== PLL0MON ======================================================== */ + #define R_SYSC_S_PLL0MON_PLL0MON_Pos (0UL) /*!< PLL0MON (Bit 0) */ + #define R_SYSC_S_PLL0MON_PLL0MON_Msk (0x1UL) /*!< PLL0MON (Bitfield-Mask: 0x01) */ +/* ======================================================== PLL1MON ======================================================== */ + #define R_SYSC_S_PLL1MON_PLL1MON_Pos (0UL) /*!< PLL1MON (Bit 0) */ + #define R_SYSC_S_PLL1MON_PLL1MON_Msk (0x1UL) /*!< PLL1MON (Bitfield-Mask: 0x01) */ +/* ======================================================== PLL1EN ========================================================= */ + #define R_SYSC_S_PLL1EN_PLL1EN_Pos (0UL) /*!< PLL1EN (Bit 0) */ + #define R_SYSC_S_PLL1EN_PLL1EN_Msk (0x1UL) /*!< PLL1EN (Bitfield-Mask: 0x01) */ +/* ======================================================== LOCOCR ========================================================= */ + #define R_SYSC_S_LOCOCR_LCSTP_Pos (0UL) /*!< LCSTP (Bit 0) */ + #define R_SYSC_S_LOCOCR_LCSTP_Msk (0x1UL) /*!< LCSTP (Bitfield-Mask: 0x01) */ +/* ======================================================= HIZCTRLEN ======================================================= */ + #define R_SYSC_S_HIZCTRLEN_CLMA3MASK_Pos (0UL) /*!< CLMA3MASK (Bit 0) */ + #define R_SYSC_S_HIZCTRLEN_CLMA3MASK_Msk (0x1UL) /*!< CLMA3MASK (Bitfield-Mask: 0x01) */ + #define R_SYSC_S_HIZCTRLEN_CLMA0MASK_Pos (1UL) /*!< CLMA0MASK (Bit 1) */ + #define R_SYSC_S_HIZCTRLEN_CLMA0MASK_Msk (0x2UL) /*!< CLMA0MASK (Bitfield-Mask: 0x01) */ + #define R_SYSC_S_HIZCTRLEN_CLMA1MASK_Pos (2UL) /*!< CLMA1MASK (Bit 2) */ + #define R_SYSC_S_HIZCTRLEN_CLMA1MASK_Msk (0x4UL) /*!< CLMA1MASK (Bitfield-Mask: 0x01) */ +/* ======================================================== SWRSYS ========================================================= */ + #define R_SYSC_S_SWRSYS_SWR_Pos (0UL) /*!< SWR (Bit 0) */ + #define R_SYSC_S_SWRSYS_SWR_Msk (0xffffffffUL) /*!< SWR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== SWRCPU0 ======================================================== */ + #define R_SYSC_S_SWRCPU0_SWR_Pos (0UL) /*!< SWR (Bit 0) */ + #define R_SYSC_S_SWRCPU0_SWR_Msk (0xffffffffUL) /*!< SWR (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== MRCTLI ========================================================= */ + #define R_SYSC_S_MRCTLI_MRCTLI00_Pos (0UL) /*!< MRCTLI00 (Bit 0) */ + #define R_SYSC_S_MRCTLI_MRCTLI00_Msk (0x1UL) /*!< MRCTLI00 (Bitfield-Mask: 0x01) */ + #define R_SYSC_S_MRCTLI_MRCTLI01_Pos (1UL) /*!< MRCTLI01 (Bit 1) */ + #define R_SYSC_S_MRCTLI_MRCTLI01_Msk (0x2UL) /*!< MRCTLI01 (Bitfield-Mask: 0x01) */ + #define R_SYSC_S_MRCTLI_MRCTLI02_Pos (2UL) /*!< MRCTLI02 (Bit 2) */ + #define R_SYSC_S_MRCTLI_MRCTLI02_Msk (0x4UL) /*!< MRCTLI02 (Bitfield-Mask: 0x01) */ + #define R_SYSC_S_MRCTLI_MRCTLI03_Pos (3UL) /*!< MRCTLI03 (Bit 3) */ + #define R_SYSC_S_MRCTLI_MRCTLI03_Msk (0x8UL) /*!< MRCTLI03 (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRF ======================================================== */ + #define R_SYSC_S_MSTPCRF_MSTPCRF00_Pos (0UL) /*!< MSTPCRF00 (Bit 0) */ + #define R_SYSC_S_MSTPCRF_MSTPCRF00_Msk (0x1UL) /*!< MSTPCRF00 (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRG ======================================================== */ + #define R_SYSC_S_MSTPCRG_MSTPCRG00_Pos (0UL) /*!< MSTPCRG00 (Bit 0) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG00_Msk (0x1UL) /*!< MSTPCRG00 (Bitfield-Mask: 0x01) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG01_Pos (1UL) /*!< MSTPCRG01 (Bit 1) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG01_Msk (0x2UL) /*!< MSTPCRG01 (Bitfield-Mask: 0x01) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG02_Pos (2UL) /*!< MSTPCRG02 (Bit 2) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG02_Msk (0x4UL) /*!< MSTPCRG02 (Bitfield-Mask: 0x01) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG03_Pos (3UL) /*!< MSTPCRG03 (Bit 3) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG03_Msk (0x8UL) /*!< MSTPCRG03 (Bitfield-Mask: 0x01) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG04_Pos (4UL) /*!< MSTPCRG04 (Bit 4) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG04_Msk (0x10UL) /*!< MSTPCRG04 (Bitfield-Mask: 0x01) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG05_Pos (5UL) /*!< MSTPCRG05 (Bit 5) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG05_Msk (0x20UL) /*!< MSTPCRG05 (Bitfield-Mask: 0x01) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG08_Pos (8UL) /*!< MSTPCRG08 (Bit 8) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG08_Msk (0x100UL) /*!< MSTPCRG08 (Bitfield-Mask: 0x01) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG09_Pos (9UL) /*!< MSTPCRG09 (Bit 9) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG09_Msk (0x200UL) /*!< MSTPCRG09 (Bitfield-Mask: 0x01) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG10_Pos (10UL) /*!< MSTPCRG10 (Bit 10) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG10_Msk (0x400UL) /*!< MSTPCRG10 (Bitfield-Mask: 0x01) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG11_Pos (11UL) /*!< MSTPCRG11 (Bit 11) */ + #define R_SYSC_S_MSTPCRG_MSTPCRG11_Msk (0x800UL) /*!< MSTPCRG11 (Bitfield-Mask: 0x01) */ +/* ======================================================== MSTPCRI ======================================================== */ + #define R_SYSC_S_MSTPCRI_MSTPCRI00_Pos (0UL) /*!< MSTPCRI00 (Bit 0) */ + #define R_SYSC_S_MSTPCRI_MSTPCRI00_Msk (0x1UL) /*!< MSTPCRI00 (Bitfield-Mask: 0x01) */ + #define R_SYSC_S_MSTPCRI_MSTPCRI01_Pos (1UL) /*!< MSTPCRI01 (Bit 1) */ + #define R_SYSC_S_MSTPCRI_MSTPCRI01_Msk (0x2UL) /*!< MSTPCRI01 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_CLMA0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= CTL0 ========================================================== */ + #define R_CLMA0_CTL0_CLME_Pos (0UL) /*!< CLME (Bit 0) */ + #define R_CLMA0_CTL0_CLME_Msk (0x1UL) /*!< CLME (Bitfield-Mask: 0x01) */ +/* ========================================================= CMPL ========================================================== */ + #define R_CLMA0_CMPL_CMPL_Pos (0UL) /*!< CMPL (Bit 0) */ + #define R_CLMA0_CMPL_CMPL_Msk (0xfffUL) /*!< CMPL (Bitfield-Mask: 0xfff) */ +/* ========================================================= CMPH ========================================================== */ + #define R_CLMA0_CMPH_CMPH_Pos (0UL) /*!< CMPH (Bit 0) */ + #define R_CLMA0_CMPH_CMPH_Msk (0xfffUL) /*!< CMPH (Bitfield-Mask: 0xfff) */ +/* ========================================================= PCMD ========================================================== */ +/* ======================================================== PROTSR ========================================================= */ + #define R_CLMA0_PROTSR_PRERR_Pos (0UL) /*!< PRERR (Bit 0) */ + #define R_CLMA0_PROTSR_PRERR_Msk (0x1UL) /*!< PRERR (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_MPU0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================= ERRINF_R ======================================================== */ + #define R_MPU0_ERRINF_R_VALID_Pos (0UL) /*!< VALID (Bit 0) */ + #define R_MPU0_ERRINF_R_VALID_Msk (0x1UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_MPU0_ERRINF_R_RW_Pos (1UL) /*!< RW (Bit 1) */ + #define R_MPU0_ERRINF_R_RW_Msk (0x2UL) /*!< RW (Bitfield-Mask: 0x01) */ + #define R_MPU0_ERRINF_R_ERRADDR_Pos (2UL) /*!< ERRADDR (Bit 2) */ + #define R_MPU0_ERRINF_R_ERRADDR_Msk (0xfffffffcUL) /*!< ERRADDR (Bitfield-Mask: 0x3fffffff) */ +/* ======================================================= ERRINF_W ======================================================== */ + #define R_MPU0_ERRINF_W_VALID_Pos (0UL) /*!< VALID (Bit 0) */ + #define R_MPU0_ERRINF_W_VALID_Msk (0x1UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_MPU0_ERRINF_W_RW_Pos (1UL) /*!< RW (Bit 1) */ + #define R_MPU0_ERRINF_W_RW_Msk (0x2UL) /*!< RW (Bitfield-Mask: 0x01) */ + #define R_MPU0_ERRINF_W_ERRADDR_Pos (2UL) /*!< ERRADDR (Bit 2) */ + #define R_MPU0_ERRINF_W_ERRADDR_Msk (0xfffffffcUL) /*!< ERRADDR (Bitfield-Mask: 0x3fffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_MPU3 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== ERRINF ========================================================= */ + #define R_MPU3_ERRINF_VALID_Pos (0UL) /*!< VALID (Bit 0) */ + #define R_MPU3_ERRINF_VALID_Msk (0x1UL) /*!< VALID (Bitfield-Mask: 0x01) */ + #define R_MPU3_ERRINF_RW_Pos (1UL) /*!< RW (Bit 1) */ + #define R_MPU3_ERRINF_RW_Msk (0x2UL) /*!< RW (Bitfield-Mask: 0x01) */ + #define R_MPU3_ERRINF_ERRADDR_Pos (2UL) /*!< ERRADDR (Bit 2) */ + #define R_MPU3_ERRINF_ERRADDR_Msk (0xfffffffcUL) /*!< ERRADDR (Bitfield-Mask: 0x3fffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_SYSRAM_CTL ================ */ +/* =========================================================================================================================== */ + +/* ===================================================== SYSRAM_CTRL0 ====================================================== */ + #define R_SYSRAM_CTL_SYSRAM_CTRL0_VECEN_Pos (0UL) /*!< VECEN (Bit 0) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL0_VECEN_Msk (0x1UL) /*!< VECEN (Bitfield-Mask: 0x01) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL0_VRWEN_Pos (16UL) /*!< VRWEN (Bit 16) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL0_VRWEN_Msk (0xf0000UL) /*!< VRWEN (Bitfield-Mask: 0x0f) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL0_VCEN_Pos (20UL) /*!< VCEN (Bit 20) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL0_VCEN_Msk (0x100000UL) /*!< VCEN (Bitfield-Mask: 0x01) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL0_VLWEN_Pos (21UL) /*!< VLWEN (Bit 21) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL0_VLWEN_Msk (0x200000UL) /*!< VLWEN (Bitfield-Mask: 0x01) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL0_MKICCAXIERR_Pos (24UL) /*!< MKICCAXIERR (Bit 24) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL0_MKICCAXIERR_Msk (0x1000000UL) /*!< MKICCAXIERR (Bitfield-Mask: 0x01) */ +/* ===================================================== SYSRAM_CTRL1 ====================================================== */ + #define R_SYSRAM_CTL_SYSRAM_CTRL1_VECEN_Pos (0UL) /*!< VECEN (Bit 0) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL1_VECEN_Msk (0x1UL) /*!< VECEN (Bitfield-Mask: 0x01) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL1_VRWEN_Pos (16UL) /*!< VRWEN (Bit 16) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL1_VRWEN_Msk (0xf0000UL) /*!< VRWEN (Bitfield-Mask: 0x0f) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL1_VCEN_Pos (20UL) /*!< VCEN (Bit 20) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL1_VCEN_Msk (0x100000UL) /*!< VCEN (Bitfield-Mask: 0x01) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL1_VLWEN_Pos (21UL) /*!< VLWEN (Bit 21) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL1_VLWEN_Msk (0x200000UL) /*!< VLWEN (Bitfield-Mask: 0x01) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL1_MKICCAXIERR_Pos (24UL) /*!< MKICCAXIERR (Bit 24) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL1_MKICCAXIERR_Msk (0x1000000UL) /*!< MKICCAXIERR (Bitfield-Mask: 0x01) */ +/* ===================================================== SYSRAM_CTRL2 ====================================================== */ + #define R_SYSRAM_CTL_SYSRAM_CTRL2_VECEN_Pos (0UL) /*!< VECEN (Bit 0) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL2_VECEN_Msk (0x1UL) /*!< VECEN (Bitfield-Mask: 0x01) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL2_VRWEN_Pos (16UL) /*!< VRWEN (Bit 16) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL2_VRWEN_Msk (0xf0000UL) /*!< VRWEN (Bitfield-Mask: 0x0f) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL2_VCEN_Pos (20UL) /*!< VCEN (Bit 20) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL2_VCEN_Msk (0x100000UL) /*!< VCEN (Bitfield-Mask: 0x01) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL2_VLWEN_Pos (21UL) /*!< VLWEN (Bit 21) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL2_VLWEN_Msk (0x200000UL) /*!< VLWEN (Bitfield-Mask: 0x01) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL2_MKICCAXIERR_Pos (24UL) /*!< MKICCAXIERR (Bit 24) */ + #define R_SYSRAM_CTL_SYSRAM_CTRL2_MKICCAXIERR_Msk (0x1000000UL) /*!< MKICCAXIERR (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_SHOSTIF_CFG ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= SHCFG ========================================================= */ + #define R_SHOSTIF_CFG_SHCFG_SPIMODE_Pos (0UL) /*!< SPIMODE (Bit 0) */ + #define R_SHOSTIF_CFG_SHCFG_SPIMODE_Msk (0x3UL) /*!< SPIMODE (Bitfield-Mask: 0x03) */ + #define R_SHOSTIF_CFG_SHCFG_BYTESWAP_Pos (2UL) /*!< BYTESWAP (Bit 2) */ + #define R_SHOSTIF_CFG_SHCFG_BYTESWAP_Msk (0x4UL) /*!< BYTESWAP (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_CFG_SHCFG_ADDRESSING_Pos (3UL) /*!< ADDRESSING (Bit 3) */ + #define R_SHOSTIF_CFG_SHCFG_ADDRESSING_Msk (0x8UL) /*!< ADDRESSING (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_CFG_SHCFG_SLEEP_Pos (4UL) /*!< SLEEP (Bit 4) */ + #define R_SHOSTIF_CFG_SHCFG_SLEEP_Msk (0x10UL) /*!< SLEEP (Bitfield-Mask: 0x01) */ + #define R_SHOSTIF_CFG_SHCFG_INTMASKI_Pos (16UL) /*!< INTMASKI (Bit 16) */ + #define R_SHOSTIF_CFG_SHCFG_INTMASKI_Msk (0x3f0000UL) /*!< INTMASKI (Bitfield-Mask: 0x3f) */ + #define R_SHOSTIF_CFG_SHCFG_INTMASKE_Pos (24UL) /*!< INTMASKE (Bit 24) */ + #define R_SHOSTIF_CFG_SHCFG_INTMASKE_Msk (0x3f000000UL) /*!< INTMASKE (Bitfield-Mask: 0x3f) */ + +/* =========================================================================================================================== */ +/* ================ R_PHOSTIF_CFG ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= PHCFG ========================================================= */ + #define R_PHOSTIF_CFG_PHCFG_MEMIFSEL_Pos (0UL) /*!< MEMIFSEL (Bit 0) */ + #define R_PHOSTIF_CFG_PHCFG_MEMIFSEL_Msk (0x1UL) /*!< MEMIFSEL (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_CFG_PHCFG_BUSSSEL_Pos (4UL) /*!< BUSSSEL (Bit 4) */ + #define R_PHOSTIF_CFG_PHCFG_BUSSSEL_Msk (0x10UL) /*!< BUSSSEL (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_CFG_PHCFG_HIFSYNC_Pos (8UL) /*!< HIFSYNC (Bit 8) */ + #define R_PHOSTIF_CFG_PHCFG_HIFSYNC_Msk (0x100UL) /*!< HIFSYNC (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_CFG_PHCFG_MEMCSEL_Pos (12UL) /*!< MEMCSEL (Bit 12) */ + #define R_PHOSTIF_CFG_PHCFG_MEMCSEL_Msk (0x1000UL) /*!< MEMCSEL (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_CFG_PHCFG_HWRZSEL_Pos (16UL) /*!< HWRZSEL (Bit 16) */ + #define R_PHOSTIF_CFG_PHCFG_HWRZSEL_Msk (0x10000UL) /*!< HWRZSEL (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_CFG_PHCFG_ADMUXMODE_Pos (20UL) /*!< ADMUXMODE (Bit 20) */ + #define R_PHOSTIF_CFG_PHCFG_ADMUXMODE_Msk (0x100000UL) /*!< ADMUXMODE (Bitfield-Mask: 0x01) */ +/* ========================================================= PHACC ========================================================= */ + #define R_PHOSTIF_CFG_PHACC_HIFRDYSEL_Pos (0UL) /*!< HIFRDYSEL (Bit 0) */ + #define R_PHOSTIF_CFG_PHACC_HIFRDYSEL_Msk (0x1UL) /*!< HIFRDYSEL (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_CFG_PHACC_HIFBCCSEL_Pos (8UL) /*!< HIFBCCSEL (Bit 8) */ + #define R_PHOSTIF_CFG_PHACC_HIFBCCSEL_Msk (0x100UL) /*!< HIFBCCSEL (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_CFG_PHACC_HIFBTCSEL_Pos (9UL) /*!< HIFBTCSEL (Bit 9) */ + #define R_PHOSTIF_CFG_PHACC_HIFBTCSEL_Msk (0x200UL) /*!< HIFBTCSEL (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_CFG_PHACC_HIFPRCSEL_Pos (10UL) /*!< HIFPRCSEL (Bit 10) */ + #define R_PHOSTIF_CFG_PHACC_HIFPRCSEL_Msk (0x400UL) /*!< HIFPRCSEL (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_CFG_PHACC_HIFIRCSEL_Pos (11UL) /*!< HIFIRCSEL (Bit 11) */ + #define R_PHOSTIF_CFG_PHACC_HIFIRCSEL_Msk (0x800UL) /*!< HIFIRCSEL (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_CFG_PHACC_HIFXALSEL_Pos (12UL) /*!< HIFXALSEL (Bit 12) */ + #define R_PHOSTIF_CFG_PHACC_HIFXALSEL_Msk (0x1000UL) /*!< HIFXALSEL (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_CFG_PHACC_HIFXAHSEL_Pos (13UL) /*!< HIFXAHSEL (Bit 13) */ + #define R_PHOSTIF_CFG_PHACC_HIFXAHSEL_Msk (0x2000UL) /*!< HIFXAHSEL (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_CFG_PHACC_HIFEXT0SEL_Pos (14UL) /*!< HIFEXT0SEL (Bit 14) */ + #define R_PHOSTIF_CFG_PHACC_HIFEXT0SEL_Msk (0x4000UL) /*!< HIFEXT0SEL (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_CFG_PHACC_HIFEXT1SEL_Pos (15UL) /*!< HIFEXT1SEL (Bit 15) */ + #define R_PHOSTIF_CFG_PHACC_HIFEXT1SEL_Msk (0x8000UL) /*!< HIFEXT1SEL (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_CFG_PHACC_CSSWAP_Pos (16UL) /*!< CSSWAP (Bit 16) */ + #define R_PHOSTIF_CFG_PHACC_CSSWAP_Msk (0x10000UL) /*!< CSSWAP (Bitfield-Mask: 0x01) */ + #define R_PHOSTIF_CFG_PHACC_BSCADMUX_Pos (17UL) /*!< BSCADMUX (Bit 17) */ + #define R_PHOSTIF_CFG_PHACC_BSCADMUX_Msk (0x20000UL) /*!< BSCADMUX (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_RWP_S ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= PRCRS ========================================================= */ + #define R_RWP_S_PRCRS_PRC0_Pos (0UL) /*!< PRC0 (Bit 0) */ + #define R_RWP_S_PRCRS_PRC0_Msk (0x1UL) /*!< PRC0 (Bitfield-Mask: 0x01) */ + #define R_RWP_S_PRCRS_PRC1_Pos (1UL) /*!< PRC1 (Bit 1) */ + #define R_RWP_S_PRCRS_PRC1_Msk (0x2UL) /*!< PRC1 (Bitfield-Mask: 0x01) */ + #define R_RWP_S_PRCRS_PRC2_Pos (2UL) /*!< PRC2 (Bit 2) */ + #define R_RWP_S_PRCRS_PRC2_Msk (0x4UL) /*!< PRC2 (Bitfield-Mask: 0x01) */ + #define R_RWP_S_PRCRS_PRC3_Pos (3UL) /*!< PRC3 (Bit 3) */ + #define R_RWP_S_PRCRS_PRC3_Msk (0x8UL) /*!< PRC3 (Bitfield-Mask: 0x01) */ + #define R_RWP_S_PRCRS_PRKEY_Pos (8UL) /*!< PRKEY (Bit 8) */ + #define R_RWP_S_PRCRS_PRKEY_Msk (0xff00UL) /*!< PRKEY (Bitfield-Mask: 0xff) */ + +/* =========================================================================================================================== */ +/* ================ R_MTU ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= TOERA ========================================================= */ + #define R_MTU_TOERA_OE3B_Pos (0UL) /*!< OE3B (Bit 0) */ + #define R_MTU_TOERA_OE3B_Msk (0x1UL) /*!< OE3B (Bitfield-Mask: 0x01) */ + #define R_MTU_TOERA_OE4A_Pos (1UL) /*!< OE4A (Bit 1) */ + #define R_MTU_TOERA_OE4A_Msk (0x2UL) /*!< OE4A (Bitfield-Mask: 0x01) */ + #define R_MTU_TOERA_OE4B_Pos (2UL) /*!< OE4B (Bit 2) */ + #define R_MTU_TOERA_OE4B_Msk (0x4UL) /*!< OE4B (Bitfield-Mask: 0x01) */ + #define R_MTU_TOERA_OE3D_Pos (3UL) /*!< OE3D (Bit 3) */ + #define R_MTU_TOERA_OE3D_Msk (0x8UL) /*!< OE3D (Bitfield-Mask: 0x01) */ + #define R_MTU_TOERA_OE4C_Pos (4UL) /*!< OE4C (Bit 4) */ + #define R_MTU_TOERA_OE4C_Msk (0x10UL) /*!< OE4C (Bitfield-Mask: 0x01) */ + #define R_MTU_TOERA_OE4D_Pos (5UL) /*!< OE4D (Bit 5) */ + #define R_MTU_TOERA_OE4D_Msk (0x20UL) /*!< OE4D (Bitfield-Mask: 0x01) */ +/* ========================================================= TGCRA ========================================================= */ + #define R_MTU_TGCRA_UF_Pos (0UL) /*!< UF (Bit 0) */ + #define R_MTU_TGCRA_UF_Msk (0x1UL) /*!< UF (Bitfield-Mask: 0x01) */ + #define R_MTU_TGCRA_VF_Pos (1UL) /*!< VF (Bit 1) */ + #define R_MTU_TGCRA_VF_Msk (0x2UL) /*!< VF (Bitfield-Mask: 0x01) */ + #define R_MTU_TGCRA_WF_Pos (2UL) /*!< WF (Bit 2) */ + #define R_MTU_TGCRA_WF_Msk (0x4UL) /*!< WF (Bitfield-Mask: 0x01) */ + #define R_MTU_TGCRA_FB_Pos (3UL) /*!< FB (Bit 3) */ + #define R_MTU_TGCRA_FB_Msk (0x8UL) /*!< FB (Bitfield-Mask: 0x01) */ + #define R_MTU_TGCRA_P_Pos (4UL) /*!< P (Bit 4) */ + #define R_MTU_TGCRA_P_Msk (0x10UL) /*!< P (Bitfield-Mask: 0x01) */ + #define R_MTU_TGCRA_N_Pos (5UL) /*!< N (Bit 5) */ + #define R_MTU_TGCRA_N_Msk (0x20UL) /*!< N (Bitfield-Mask: 0x01) */ + #define R_MTU_TGCRA_BDC_Pos (6UL) /*!< BDC (Bit 6) */ + #define R_MTU_TGCRA_BDC_Msk (0x40UL) /*!< BDC (Bitfield-Mask: 0x01) */ +/* ======================================================== TOCR1A ========================================================= */ + #define R_MTU_TOCR1A_OLSP_Pos (0UL) /*!< OLSP (Bit 0) */ + #define R_MTU_TOCR1A_OLSP_Msk (0x1UL) /*!< OLSP (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR1A_OLSN_Pos (1UL) /*!< OLSN (Bit 1) */ + #define R_MTU_TOCR1A_OLSN_Msk (0x2UL) /*!< OLSN (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR1A_TOCS_Pos (2UL) /*!< TOCS (Bit 2) */ + #define R_MTU_TOCR1A_TOCS_Msk (0x4UL) /*!< TOCS (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR1A_TOCL_Pos (3UL) /*!< TOCL (Bit 3) */ + #define R_MTU_TOCR1A_TOCL_Msk (0x8UL) /*!< TOCL (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR1A_PSYE_Pos (6UL) /*!< PSYE (Bit 6) */ + #define R_MTU_TOCR1A_PSYE_Msk (0x40UL) /*!< PSYE (Bitfield-Mask: 0x01) */ +/* ======================================================== TOCR2A ========================================================= */ + #define R_MTU_TOCR2A_OLS1P_Pos (0UL) /*!< OLS1P (Bit 0) */ + #define R_MTU_TOCR2A_OLS1P_Msk (0x1UL) /*!< OLS1P (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR2A_OLS1N_Pos (1UL) /*!< OLS1N (Bit 1) */ + #define R_MTU_TOCR2A_OLS1N_Msk (0x2UL) /*!< OLS1N (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR2A_OLS2P_Pos (2UL) /*!< OLS2P (Bit 2) */ + #define R_MTU_TOCR2A_OLS2P_Msk (0x4UL) /*!< OLS2P (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR2A_OLS2N_Pos (3UL) /*!< OLS2N (Bit 3) */ + #define R_MTU_TOCR2A_OLS2N_Msk (0x8UL) /*!< OLS2N (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR2A_OLS3P_Pos (4UL) /*!< OLS3P (Bit 4) */ + #define R_MTU_TOCR2A_OLS3P_Msk (0x10UL) /*!< OLS3P (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR2A_OLS3N_Pos (5UL) /*!< OLS3N (Bit 5) */ + #define R_MTU_TOCR2A_OLS3N_Msk (0x20UL) /*!< OLS3N (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR2A_BF_Pos (6UL) /*!< BF (Bit 6) */ + #define R_MTU_TOCR2A_BF_Msk (0xc0UL) /*!< BF (Bitfield-Mask: 0x03) */ +/* ========================================================= TCDRA ========================================================= */ +/* ========================================================= TDDRA ========================================================= */ +/* ======================================================== TCNTSA ========================================================= */ +/* ========================================================= TCBRA ========================================================= */ +/* ======================================================== TITCR1A ======================================================== */ + #define R_MTU_TITCR1A_T4VCOR_Pos (0UL) /*!< T4VCOR (Bit 0) */ + #define R_MTU_TITCR1A_T4VCOR_Msk (0x7UL) /*!< T4VCOR (Bitfield-Mask: 0x07) */ + #define R_MTU_TITCR1A_T4VEN_Pos (3UL) /*!< T4VEN (Bit 3) */ + #define R_MTU_TITCR1A_T4VEN_Msk (0x8UL) /*!< T4VEN (Bitfield-Mask: 0x01) */ + #define R_MTU_TITCR1A_T3ACOR_Pos (4UL) /*!< T3ACOR (Bit 4) */ + #define R_MTU_TITCR1A_T3ACOR_Msk (0x70UL) /*!< T3ACOR (Bitfield-Mask: 0x07) */ + #define R_MTU_TITCR1A_T3AEN_Pos (7UL) /*!< T3AEN (Bit 7) */ + #define R_MTU_TITCR1A_T3AEN_Msk (0x80UL) /*!< T3AEN (Bitfield-Mask: 0x01) */ +/* ======================================================= TITCNT1A ======================================================== */ + #define R_MTU_TITCNT1A_T4VCNT_Pos (0UL) /*!< T4VCNT (Bit 0) */ + #define R_MTU_TITCNT1A_T4VCNT_Msk (0x7UL) /*!< T4VCNT (Bitfield-Mask: 0x07) */ + #define R_MTU_TITCNT1A_T3ACNT_Pos (4UL) /*!< T3ACNT (Bit 4) */ + #define R_MTU_TITCNT1A_T3ACNT_Msk (0x70UL) /*!< T3ACNT (Bitfield-Mask: 0x07) */ +/* ======================================================== TBTERA ========================================================= */ + #define R_MTU_TBTERA_BTE_Pos (0UL) /*!< BTE (Bit 0) */ + #define R_MTU_TBTERA_BTE_Msk (0x3UL) /*!< BTE (Bitfield-Mask: 0x03) */ +/* ========================================================= TDERA ========================================================= */ + #define R_MTU_TDERA_TDER_Pos (0UL) /*!< TDER (Bit 0) */ + #define R_MTU_TDERA_TDER_Msk (0x1UL) /*!< TDER (Bitfield-Mask: 0x01) */ +/* ======================================================== TOLBRA ========================================================= */ + #define R_MTU_TOLBRA_OLS1P_Pos (0UL) /*!< OLS1P (Bit 0) */ + #define R_MTU_TOLBRA_OLS1P_Msk (0x1UL) /*!< OLS1P (Bitfield-Mask: 0x01) */ + #define R_MTU_TOLBRA_OLS1N_Pos (1UL) /*!< OLS1N (Bit 1) */ + #define R_MTU_TOLBRA_OLS1N_Msk (0x2UL) /*!< OLS1N (Bitfield-Mask: 0x01) */ + #define R_MTU_TOLBRA_OLS2P_Pos (2UL) /*!< OLS2P (Bit 2) */ + #define R_MTU_TOLBRA_OLS2P_Msk (0x4UL) /*!< OLS2P (Bitfield-Mask: 0x01) */ + #define R_MTU_TOLBRA_OLS2N_Pos (3UL) /*!< OLS2N (Bit 3) */ + #define R_MTU_TOLBRA_OLS2N_Msk (0x8UL) /*!< OLS2N (Bitfield-Mask: 0x01) */ + #define R_MTU_TOLBRA_OLS3P_Pos (4UL) /*!< OLS3P (Bit 4) */ + #define R_MTU_TOLBRA_OLS3P_Msk (0x10UL) /*!< OLS3P (Bitfield-Mask: 0x01) */ + #define R_MTU_TOLBRA_OLS3N_Pos (5UL) /*!< OLS3N (Bit 5) */ + #define R_MTU_TOLBRA_OLS3N_Msk (0x20UL) /*!< OLS3N (Bitfield-Mask: 0x01) */ +/* ======================================================== TITMRA ========================================================= */ + #define R_MTU_TITMRA_TITM_Pos (0UL) /*!< TITM (Bit 0) */ + #define R_MTU_TITMRA_TITM_Msk (0x1UL) /*!< TITM (Bitfield-Mask: 0x01) */ +/* ======================================================== TITCR2A ======================================================== */ + #define R_MTU_TITCR2A_TRG4COR_Pos (0UL) /*!< TRG4COR (Bit 0) */ + #define R_MTU_TITCR2A_TRG4COR_Msk (0x7UL) /*!< TRG4COR (Bitfield-Mask: 0x07) */ +/* ======================================================= TITCNT2A ======================================================== */ + #define R_MTU_TITCNT2A_TRG4CNT_Pos (0UL) /*!< TRG4CNT (Bit 0) */ + #define R_MTU_TITCNT2A_TRG4CNT_Msk (0x7UL) /*!< TRG4CNT (Bitfield-Mask: 0x07) */ +/* ========================================================= TWCRA ========================================================= */ + #define R_MTU_TWCRA_WRE_Pos (0UL) /*!< WRE (Bit 0) */ + #define R_MTU_TWCRA_WRE_Msk (0x1UL) /*!< WRE (Bitfield-Mask: 0x01) */ + #define R_MTU_TWCRA_SCC_Pos (1UL) /*!< SCC (Bit 1) */ + #define R_MTU_TWCRA_SCC_Msk (0x2UL) /*!< SCC (Bitfield-Mask: 0x01) */ + #define R_MTU_TWCRA_CCE_Pos (7UL) /*!< CCE (Bit 7) */ + #define R_MTU_TWCRA_CCE_Msk (0x80UL) /*!< CCE (Bitfield-Mask: 0x01) */ +/* ======================================================== TMDR2A ========================================================= */ + #define R_MTU_TMDR2A_DRS_Pos (0UL) /*!< DRS (Bit 0) */ + #define R_MTU_TMDR2A_DRS_Msk (0x1UL) /*!< DRS (Bitfield-Mask: 0x01) */ +/* ========================================================= TSTRA ========================================================= */ + #define R_MTU_TSTRA_CST0_Pos (0UL) /*!< CST0 (Bit 0) */ + #define R_MTU_TSTRA_CST0_Msk (0x1UL) /*!< CST0 (Bitfield-Mask: 0x01) */ + #define R_MTU_TSTRA_CST1_Pos (1UL) /*!< CST1 (Bit 1) */ + #define R_MTU_TSTRA_CST1_Msk (0x2UL) /*!< CST1 (Bitfield-Mask: 0x01) */ + #define R_MTU_TSTRA_CST2_Pos (2UL) /*!< CST2 (Bit 2) */ + #define R_MTU_TSTRA_CST2_Msk (0x4UL) /*!< CST2 (Bitfield-Mask: 0x01) */ + #define R_MTU_TSTRA_CST8_Pos (3UL) /*!< CST8 (Bit 3) */ + #define R_MTU_TSTRA_CST8_Msk (0x8UL) /*!< CST8 (Bitfield-Mask: 0x01) */ + #define R_MTU_TSTRA_CST3_Pos (6UL) /*!< CST3 (Bit 6) */ + #define R_MTU_TSTRA_CST3_Msk (0x40UL) /*!< CST3 (Bitfield-Mask: 0x01) */ + #define R_MTU_TSTRA_CST4_Pos (7UL) /*!< CST4 (Bit 7) */ + #define R_MTU_TSTRA_CST4_Msk (0x80UL) /*!< CST4 (Bitfield-Mask: 0x01) */ +/* ========================================================= TSYRA ========================================================= */ + #define R_MTU_TSYRA_SYNC0_Pos (0UL) /*!< SYNC0 (Bit 0) */ + #define R_MTU_TSYRA_SYNC0_Msk (0x1UL) /*!< SYNC0 (Bitfield-Mask: 0x01) */ + #define R_MTU_TSYRA_SYNC1_Pos (1UL) /*!< SYNC1 (Bit 1) */ + #define R_MTU_TSYRA_SYNC1_Msk (0x2UL) /*!< SYNC1 (Bitfield-Mask: 0x01) */ + #define R_MTU_TSYRA_SYNC2_Pos (2UL) /*!< SYNC2 (Bit 2) */ + #define R_MTU_TSYRA_SYNC2_Msk (0x4UL) /*!< SYNC2 (Bitfield-Mask: 0x01) */ + #define R_MTU_TSYRA_SYNC3_Pos (6UL) /*!< SYNC3 (Bit 6) */ + #define R_MTU_TSYRA_SYNC3_Msk (0x40UL) /*!< SYNC3 (Bitfield-Mask: 0x01) */ + #define R_MTU_TSYRA_SYNC4_Pos (7UL) /*!< SYNC4 (Bit 7) */ + #define R_MTU_TSYRA_SYNC4_Msk (0x80UL) /*!< SYNC4 (Bitfield-Mask: 0x01) */ +/* ======================================================== TCSYSTR ======================================================== */ + #define R_MTU_TCSYSTR_SCH7_Pos (0UL) /*!< SCH7 (Bit 0) */ + #define R_MTU_TCSYSTR_SCH7_Msk (0x1UL) /*!< SCH7 (Bitfield-Mask: 0x01) */ + #define R_MTU_TCSYSTR_SCH6_Pos (1UL) /*!< SCH6 (Bit 1) */ + #define R_MTU_TCSYSTR_SCH6_Msk (0x2UL) /*!< SCH6 (Bitfield-Mask: 0x01) */ + #define R_MTU_TCSYSTR_SCH4_Pos (3UL) /*!< SCH4 (Bit 3) */ + #define R_MTU_TCSYSTR_SCH4_Msk (0x8UL) /*!< SCH4 (Bitfield-Mask: 0x01) */ + #define R_MTU_TCSYSTR_SCH3_Pos (4UL) /*!< SCH3 (Bit 4) */ + #define R_MTU_TCSYSTR_SCH3_Msk (0x10UL) /*!< SCH3 (Bitfield-Mask: 0x01) */ + #define R_MTU_TCSYSTR_SCH2_Pos (5UL) /*!< SCH2 (Bit 5) */ + #define R_MTU_TCSYSTR_SCH2_Msk (0x20UL) /*!< SCH2 (Bitfield-Mask: 0x01) */ + #define R_MTU_TCSYSTR_SCH1_Pos (6UL) /*!< SCH1 (Bit 6) */ + #define R_MTU_TCSYSTR_SCH1_Msk (0x40UL) /*!< SCH1 (Bitfield-Mask: 0x01) */ + #define R_MTU_TCSYSTR_SCH0_Pos (7UL) /*!< SCH0 (Bit 7) */ + #define R_MTU_TCSYSTR_SCH0_Msk (0x80UL) /*!< SCH0 (Bitfield-Mask: 0x01) */ +/* ======================================================== TRWERA ========================================================= */ + #define R_MTU_TRWERA_RWE_Pos (0UL) /*!< RWE (Bit 0) */ + #define R_MTU_TRWERA_RWE_Msk (0x1UL) /*!< RWE (Bitfield-Mask: 0x01) */ +/* ========================================================= TOERB ========================================================= */ + #define R_MTU_TOERB_OE6B_Pos (0UL) /*!< OE6B (Bit 0) */ + #define R_MTU_TOERB_OE6B_Msk (0x1UL) /*!< OE6B (Bitfield-Mask: 0x01) */ + #define R_MTU_TOERB_OE7A_Pos (1UL) /*!< OE7A (Bit 1) */ + #define R_MTU_TOERB_OE7A_Msk (0x2UL) /*!< OE7A (Bitfield-Mask: 0x01) */ + #define R_MTU_TOERB_OE7B_Pos (2UL) /*!< OE7B (Bit 2) */ + #define R_MTU_TOERB_OE7B_Msk (0x4UL) /*!< OE7B (Bitfield-Mask: 0x01) */ + #define R_MTU_TOERB_OE6D_Pos (3UL) /*!< OE6D (Bit 3) */ + #define R_MTU_TOERB_OE6D_Msk (0x8UL) /*!< OE6D (Bitfield-Mask: 0x01) */ + #define R_MTU_TOERB_OE7C_Pos (4UL) /*!< OE7C (Bit 4) */ + #define R_MTU_TOERB_OE7C_Msk (0x10UL) /*!< OE7C (Bitfield-Mask: 0x01) */ + #define R_MTU_TOERB_OE7D_Pos (5UL) /*!< OE7D (Bit 5) */ + #define R_MTU_TOERB_OE7D_Msk (0x20UL) /*!< OE7D (Bitfield-Mask: 0x01) */ +/* ======================================================== TOCR1B ========================================================= */ + #define R_MTU_TOCR1B_OLSP_Pos (0UL) /*!< OLSP (Bit 0) */ + #define R_MTU_TOCR1B_OLSP_Msk (0x1UL) /*!< OLSP (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR1B_OLSN_Pos (1UL) /*!< OLSN (Bit 1) */ + #define R_MTU_TOCR1B_OLSN_Msk (0x2UL) /*!< OLSN (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR1B_TOCS_Pos (2UL) /*!< TOCS (Bit 2) */ + #define R_MTU_TOCR1B_TOCS_Msk (0x4UL) /*!< TOCS (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR1B_TOCL_Pos (3UL) /*!< TOCL (Bit 3) */ + #define R_MTU_TOCR1B_TOCL_Msk (0x8UL) /*!< TOCL (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR1B_PSYE_Pos (6UL) /*!< PSYE (Bit 6) */ + #define R_MTU_TOCR1B_PSYE_Msk (0x40UL) /*!< PSYE (Bitfield-Mask: 0x01) */ +/* ======================================================== TOCR2B ========================================================= */ + #define R_MTU_TOCR2B_OLS1P_Pos (0UL) /*!< OLS1P (Bit 0) */ + #define R_MTU_TOCR2B_OLS1P_Msk (0x1UL) /*!< OLS1P (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR2B_OLS1N_Pos (1UL) /*!< OLS1N (Bit 1) */ + #define R_MTU_TOCR2B_OLS1N_Msk (0x2UL) /*!< OLS1N (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR2B_OLS2P_Pos (2UL) /*!< OLS2P (Bit 2) */ + #define R_MTU_TOCR2B_OLS2P_Msk (0x4UL) /*!< OLS2P (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR2B_OLS2N_Pos (3UL) /*!< OLS2N (Bit 3) */ + #define R_MTU_TOCR2B_OLS2N_Msk (0x8UL) /*!< OLS2N (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR2B_OLS3P_Pos (4UL) /*!< OLS3P (Bit 4) */ + #define R_MTU_TOCR2B_OLS3P_Msk (0x10UL) /*!< OLS3P (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR2B_OLS3N_Pos (5UL) /*!< OLS3N (Bit 5) */ + #define R_MTU_TOCR2B_OLS3N_Msk (0x20UL) /*!< OLS3N (Bitfield-Mask: 0x01) */ + #define R_MTU_TOCR2B_BF_Pos (6UL) /*!< BF (Bit 6) */ + #define R_MTU_TOCR2B_BF_Msk (0xc0UL) /*!< BF (Bitfield-Mask: 0x03) */ +/* ========================================================= TCDRB ========================================================= */ +/* ========================================================= TDDRB ========================================================= */ +/* ======================================================== TCNTSB ========================================================= */ +/* ========================================================= TCBRB ========================================================= */ +/* ======================================================== TITCR1B ======================================================== */ + #define R_MTU_TITCR1B_T7VCOR_Pos (0UL) /*!< T7VCOR (Bit 0) */ + #define R_MTU_TITCR1B_T7VCOR_Msk (0x7UL) /*!< T7VCOR (Bitfield-Mask: 0x07) */ + #define R_MTU_TITCR1B_T7VEN_Pos (3UL) /*!< T7VEN (Bit 3) */ + #define R_MTU_TITCR1B_T7VEN_Msk (0x8UL) /*!< T7VEN (Bitfield-Mask: 0x01) */ + #define R_MTU_TITCR1B_T6ACOR_Pos (4UL) /*!< T6ACOR (Bit 4) */ + #define R_MTU_TITCR1B_T6ACOR_Msk (0x70UL) /*!< T6ACOR (Bitfield-Mask: 0x07) */ + #define R_MTU_TITCR1B_T6AEN_Pos (7UL) /*!< T6AEN (Bit 7) */ + #define R_MTU_TITCR1B_T6AEN_Msk (0x80UL) /*!< T6AEN (Bitfield-Mask: 0x01) */ +/* ======================================================= TITCNT1B ======================================================== */ + #define R_MTU_TITCNT1B_T7VCNT_Pos (0UL) /*!< T7VCNT (Bit 0) */ + #define R_MTU_TITCNT1B_T7VCNT_Msk (0x7UL) /*!< T7VCNT (Bitfield-Mask: 0x07) */ + #define R_MTU_TITCNT1B_T6ACNT_Pos (4UL) /*!< T6ACNT (Bit 4) */ + #define R_MTU_TITCNT1B_T6ACNT_Msk (0x70UL) /*!< T6ACNT (Bitfield-Mask: 0x07) */ +/* ======================================================== TBTERB ========================================================= */ + #define R_MTU_TBTERB_BTE_Pos (0UL) /*!< BTE (Bit 0) */ + #define R_MTU_TBTERB_BTE_Msk (0x3UL) /*!< BTE (Bitfield-Mask: 0x03) */ +/* ========================================================= TDERB ========================================================= */ + #define R_MTU_TDERB_TDER_Pos (0UL) /*!< TDER (Bit 0) */ + #define R_MTU_TDERB_TDER_Msk (0x1UL) /*!< TDER (Bitfield-Mask: 0x01) */ +/* ======================================================== TOLBRB ========================================================= */ + #define R_MTU_TOLBRB_OLS1P_Pos (0UL) /*!< OLS1P (Bit 0) */ + #define R_MTU_TOLBRB_OLS1P_Msk (0x1UL) /*!< OLS1P (Bitfield-Mask: 0x01) */ + #define R_MTU_TOLBRB_OLS1N_Pos (1UL) /*!< OLS1N (Bit 1) */ + #define R_MTU_TOLBRB_OLS1N_Msk (0x2UL) /*!< OLS1N (Bitfield-Mask: 0x01) */ + #define R_MTU_TOLBRB_OLS2P_Pos (2UL) /*!< OLS2P (Bit 2) */ + #define R_MTU_TOLBRB_OLS2P_Msk (0x4UL) /*!< OLS2P (Bitfield-Mask: 0x01) */ + #define R_MTU_TOLBRB_OLS2N_Pos (3UL) /*!< OLS2N (Bit 3) */ + #define R_MTU_TOLBRB_OLS2N_Msk (0x8UL) /*!< OLS2N (Bitfield-Mask: 0x01) */ + #define R_MTU_TOLBRB_OLS3P_Pos (4UL) /*!< OLS3P (Bit 4) */ + #define R_MTU_TOLBRB_OLS3P_Msk (0x10UL) /*!< OLS3P (Bitfield-Mask: 0x01) */ + #define R_MTU_TOLBRB_OLS3N_Pos (5UL) /*!< OLS3N (Bit 5) */ + #define R_MTU_TOLBRB_OLS3N_Msk (0x20UL) /*!< OLS3N (Bitfield-Mask: 0x01) */ +/* ======================================================== TITMRB ========================================================= */ + #define R_MTU_TITMRB_TITM_Pos (0UL) /*!< TITM (Bit 0) */ + #define R_MTU_TITMRB_TITM_Msk (0x1UL) /*!< TITM (Bitfield-Mask: 0x01) */ +/* ======================================================== TITCR2B ======================================================== */ + #define R_MTU_TITCR2B_TRG7COR_Pos (0UL) /*!< TRG7COR (Bit 0) */ + #define R_MTU_TITCR2B_TRG7COR_Msk (0x7UL) /*!< TRG7COR (Bitfield-Mask: 0x07) */ +/* ======================================================= TITCNT2B ======================================================== */ + #define R_MTU_TITCNT2B_TRG7CNT_Pos (0UL) /*!< TRG7CNT (Bit 0) */ + #define R_MTU_TITCNT2B_TRG7CNT_Msk (0x7UL) /*!< TRG7CNT (Bitfield-Mask: 0x07) */ +/* ========================================================= TWCRB ========================================================= */ + #define R_MTU_TWCRB_WRE_Pos (0UL) /*!< WRE (Bit 0) */ + #define R_MTU_TWCRB_WRE_Msk (0x1UL) /*!< WRE (Bitfield-Mask: 0x01) */ + #define R_MTU_TWCRB_SCC_Pos (1UL) /*!< SCC (Bit 1) */ + #define R_MTU_TWCRB_SCC_Msk (0x2UL) /*!< SCC (Bitfield-Mask: 0x01) */ + #define R_MTU_TWCRB_CCE_Pos (7UL) /*!< CCE (Bit 7) */ + #define R_MTU_TWCRB_CCE_Msk (0x80UL) /*!< CCE (Bitfield-Mask: 0x01) */ +/* ======================================================== TMDR2B ========================================================= */ + #define R_MTU_TMDR2B_DRS_Pos (0UL) /*!< DRS (Bit 0) */ + #define R_MTU_TMDR2B_DRS_Msk (0x1UL) /*!< DRS (Bitfield-Mask: 0x01) */ +/* ========================================================= TSTRB ========================================================= */ + #define R_MTU_TSTRB_CST6_Pos (6UL) /*!< CST6 (Bit 6) */ + #define R_MTU_TSTRB_CST6_Msk (0x40UL) /*!< CST6 (Bitfield-Mask: 0x01) */ + #define R_MTU_TSTRB_CST7_Pos (7UL) /*!< CST7 (Bit 7) */ + #define R_MTU_TSTRB_CST7_Msk (0x80UL) /*!< CST7 (Bitfield-Mask: 0x01) */ +/* ========================================================= TSYRB ========================================================= */ + #define R_MTU_TSYRB_SYNC6_Pos (6UL) /*!< SYNC6 (Bit 6) */ + #define R_MTU_TSYRB_SYNC6_Msk (0x40UL) /*!< SYNC6 (Bitfield-Mask: 0x01) */ + #define R_MTU_TSYRB_SYNC7_Pos (7UL) /*!< SYNC7 (Bit 7) */ + #define R_MTU_TSYRB_SYNC7_Msk (0x80UL) /*!< SYNC7 (Bitfield-Mask: 0x01) */ +/* ======================================================== TRWERB ========================================================= */ + #define R_MTU_TRWERB_RWE_Pos (0UL) /*!< RWE (Bit 0) */ + #define R_MTU_TRWERB_RWE_Msk (0x1UL) /*!< RWE (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_MTU3 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== TCR ========================================================== */ + #define R_MTU3_TCR_TPSC_Pos (0UL) /*!< TPSC (Bit 0) */ + #define R_MTU3_TCR_TPSC_Msk (0x7UL) /*!< TPSC (Bitfield-Mask: 0x07) */ + #define R_MTU3_TCR_CKEG_Pos (3UL) /*!< CKEG (Bit 3) */ + #define R_MTU3_TCR_CKEG_Msk (0x18UL) /*!< CKEG (Bitfield-Mask: 0x03) */ + #define R_MTU3_TCR_CCLR_Pos (5UL) /*!< CCLR (Bit 5) */ + #define R_MTU3_TCR_CCLR_Msk (0xe0UL) /*!< CCLR (Bitfield-Mask: 0x07) */ +/* ========================================================= TMDR1 ========================================================= */ + #define R_MTU3_TMDR1_MD_Pos (0UL) /*!< MD (Bit 0) */ + #define R_MTU3_TMDR1_MD_Msk (0xfUL) /*!< MD (Bitfield-Mask: 0x0f) */ + #define R_MTU3_TMDR1_BFA_Pos (4UL) /*!< BFA (Bit 4) */ + #define R_MTU3_TMDR1_BFA_Msk (0x10UL) /*!< BFA (Bitfield-Mask: 0x01) */ + #define R_MTU3_TMDR1_BFB_Pos (5UL) /*!< BFB (Bit 5) */ + #define R_MTU3_TMDR1_BFB_Msk (0x20UL) /*!< BFB (Bitfield-Mask: 0x01) */ +/* ========================================================= TIORH ========================================================= */ + #define R_MTU3_TIORH_IOA_Pos (0UL) /*!< IOA (Bit 0) */ + #define R_MTU3_TIORH_IOA_Msk (0xfUL) /*!< IOA (Bitfield-Mask: 0x0f) */ + #define R_MTU3_TIORH_IOB_Pos (4UL) /*!< IOB (Bit 4) */ + #define R_MTU3_TIORH_IOB_Msk (0xf0UL) /*!< IOB (Bitfield-Mask: 0x0f) */ +/* ========================================================= TIORL ========================================================= */ + #define R_MTU3_TIORL_IOC_Pos (0UL) /*!< IOC (Bit 0) */ + #define R_MTU3_TIORL_IOC_Msk (0xfUL) /*!< IOC (Bitfield-Mask: 0x0f) */ + #define R_MTU3_TIORL_IOD_Pos (4UL) /*!< IOD (Bit 4) */ + #define R_MTU3_TIORL_IOD_Msk (0xf0UL) /*!< IOD (Bitfield-Mask: 0x0f) */ +/* ========================================================= TIER ========================================================== */ + #define R_MTU3_TIER_TGIEA_Pos (0UL) /*!< TGIEA (Bit 0) */ + #define R_MTU3_TIER_TGIEA_Msk (0x1UL) /*!< TGIEA (Bitfield-Mask: 0x01) */ + #define R_MTU3_TIER_TGIEB_Pos (1UL) /*!< TGIEB (Bit 1) */ + #define R_MTU3_TIER_TGIEB_Msk (0x2UL) /*!< TGIEB (Bitfield-Mask: 0x01) */ + #define R_MTU3_TIER_TGIEC_Pos (2UL) /*!< TGIEC (Bit 2) */ + #define R_MTU3_TIER_TGIEC_Msk (0x4UL) /*!< TGIEC (Bitfield-Mask: 0x01) */ + #define R_MTU3_TIER_TGIED_Pos (3UL) /*!< TGIED (Bit 3) */ + #define R_MTU3_TIER_TGIED_Msk (0x8UL) /*!< TGIED (Bitfield-Mask: 0x01) */ + #define R_MTU3_TIER_TCIEV_Pos (4UL) /*!< TCIEV (Bit 4) */ + #define R_MTU3_TIER_TCIEV_Msk (0x10UL) /*!< TCIEV (Bitfield-Mask: 0x01) */ + #define R_MTU3_TIER_TTGE_Pos (7UL) /*!< TTGE (Bit 7) */ + #define R_MTU3_TIER_TTGE_Msk (0x80UL) /*!< TTGE (Bitfield-Mask: 0x01) */ +/* ========================================================= TCNT ========================================================== */ +/* ========================================================= TGRA ========================================================== */ +/* ========================================================= TGRB ========================================================== */ +/* ========================================================= TGRC ========================================================== */ +/* ========================================================= TGRD ========================================================== */ +/* ========================================================== TSR ========================================================== */ + #define R_MTU3_TSR_TGFA_Pos (0UL) /*!< TGFA (Bit 0) */ + #define R_MTU3_TSR_TGFA_Msk (0x1UL) /*!< TGFA (Bitfield-Mask: 0x01) */ + #define R_MTU3_TSR_TGFB_Pos (1UL) /*!< TGFB (Bit 1) */ + #define R_MTU3_TSR_TGFB_Msk (0x2UL) /*!< TGFB (Bitfield-Mask: 0x01) */ + #define R_MTU3_TSR_TGFC_Pos (2UL) /*!< TGFC (Bit 2) */ + #define R_MTU3_TSR_TGFC_Msk (0x4UL) /*!< TGFC (Bitfield-Mask: 0x01) */ + #define R_MTU3_TSR_TGFD_Pos (3UL) /*!< TGFD (Bit 3) */ + #define R_MTU3_TSR_TGFD_Msk (0x8UL) /*!< TGFD (Bitfield-Mask: 0x01) */ + #define R_MTU3_TSR_TCFV_Pos (4UL) /*!< TCFV (Bit 4) */ + #define R_MTU3_TSR_TCFV_Msk (0x10UL) /*!< TCFV (Bitfield-Mask: 0x01) */ + #define R_MTU3_TSR_TCFU_Pos (5UL) /*!< TCFU (Bit 5) */ + #define R_MTU3_TSR_TCFU_Msk (0x20UL) /*!< TCFU (Bitfield-Mask: 0x01) */ + #define R_MTU3_TSR_TCFD_Pos (7UL) /*!< TCFD (Bit 7) */ + #define R_MTU3_TSR_TCFD_Msk (0x80UL) /*!< TCFD (Bitfield-Mask: 0x01) */ +/* ========================================================= TBTM ========================================================== */ + #define R_MTU3_TBTM_TTSA_Pos (0UL) /*!< TTSA (Bit 0) */ + #define R_MTU3_TBTM_TTSA_Msk (0x1UL) /*!< TTSA (Bitfield-Mask: 0x01) */ + #define R_MTU3_TBTM_TTSB_Pos (1UL) /*!< TTSB (Bit 1) */ + #define R_MTU3_TBTM_TTSB_Msk (0x2UL) /*!< TTSB (Bitfield-Mask: 0x01) */ +/* ========================================================= TCR2 ========================================================== */ + #define R_MTU3_TCR2_TPSC2_Pos (0UL) /*!< TPSC2 (Bit 0) */ + #define R_MTU3_TCR2_TPSC2_Msk (0x7UL) /*!< TPSC2 (Bitfield-Mask: 0x07) */ +/* ========================================================= TGRE ========================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_MTU4 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== TCR ========================================================== */ + #define R_MTU4_TCR_TPSC_Pos (0UL) /*!< TPSC (Bit 0) */ + #define R_MTU4_TCR_TPSC_Msk (0x7UL) /*!< TPSC (Bitfield-Mask: 0x07) */ + #define R_MTU4_TCR_CKEG_Pos (3UL) /*!< CKEG (Bit 3) */ + #define R_MTU4_TCR_CKEG_Msk (0x18UL) /*!< CKEG (Bitfield-Mask: 0x03) */ + #define R_MTU4_TCR_CCLR_Pos (5UL) /*!< CCLR (Bit 5) */ + #define R_MTU4_TCR_CCLR_Msk (0xe0UL) /*!< CCLR (Bitfield-Mask: 0x07) */ +/* ========================================================= TMDR1 ========================================================= */ + #define R_MTU4_TMDR1_MD_Pos (0UL) /*!< MD (Bit 0) */ + #define R_MTU4_TMDR1_MD_Msk (0xfUL) /*!< MD (Bitfield-Mask: 0x0f) */ + #define R_MTU4_TMDR1_BFA_Pos (4UL) /*!< BFA (Bit 4) */ + #define R_MTU4_TMDR1_BFA_Msk (0x10UL) /*!< BFA (Bitfield-Mask: 0x01) */ + #define R_MTU4_TMDR1_BFB_Pos (5UL) /*!< BFB (Bit 5) */ + #define R_MTU4_TMDR1_BFB_Msk (0x20UL) /*!< BFB (Bitfield-Mask: 0x01) */ +/* ========================================================= TIORH ========================================================= */ + #define R_MTU4_TIORH_IOA_Pos (0UL) /*!< IOA (Bit 0) */ + #define R_MTU4_TIORH_IOA_Msk (0xfUL) /*!< IOA (Bitfield-Mask: 0x0f) */ + #define R_MTU4_TIORH_IOB_Pos (4UL) /*!< IOB (Bit 4) */ + #define R_MTU4_TIORH_IOB_Msk (0xf0UL) /*!< IOB (Bitfield-Mask: 0x0f) */ +/* ========================================================= TIORL ========================================================= */ + #define R_MTU4_TIORL_IOC_Pos (0UL) /*!< IOC (Bit 0) */ + #define R_MTU4_TIORL_IOC_Msk (0xfUL) /*!< IOC (Bitfield-Mask: 0x0f) */ + #define R_MTU4_TIORL_IOD_Pos (4UL) /*!< IOD (Bit 4) */ + #define R_MTU4_TIORL_IOD_Msk (0xf0UL) /*!< IOD (Bitfield-Mask: 0x0f) */ +/* ========================================================= TIER ========================================================== */ + #define R_MTU4_TIER_TGIEA_Pos (0UL) /*!< TGIEA (Bit 0) */ + #define R_MTU4_TIER_TGIEA_Msk (0x1UL) /*!< TGIEA (Bitfield-Mask: 0x01) */ + #define R_MTU4_TIER_TGIEB_Pos (1UL) /*!< TGIEB (Bit 1) */ + #define R_MTU4_TIER_TGIEB_Msk (0x2UL) /*!< TGIEB (Bitfield-Mask: 0x01) */ + #define R_MTU4_TIER_TGIEC_Pos (2UL) /*!< TGIEC (Bit 2) */ + #define R_MTU4_TIER_TGIEC_Msk (0x4UL) /*!< TGIEC (Bitfield-Mask: 0x01) */ + #define R_MTU4_TIER_TGIED_Pos (3UL) /*!< TGIED (Bit 3) */ + #define R_MTU4_TIER_TGIED_Msk (0x8UL) /*!< TGIED (Bitfield-Mask: 0x01) */ + #define R_MTU4_TIER_TCIEV_Pos (4UL) /*!< TCIEV (Bit 4) */ + #define R_MTU4_TIER_TCIEV_Msk (0x10UL) /*!< TCIEV (Bitfield-Mask: 0x01) */ + #define R_MTU4_TIER_TTGE2_Pos (6UL) /*!< TTGE2 (Bit 6) */ + #define R_MTU4_TIER_TTGE2_Msk (0x40UL) /*!< TTGE2 (Bitfield-Mask: 0x01) */ + #define R_MTU4_TIER_TTGE_Pos (7UL) /*!< TTGE (Bit 7) */ + #define R_MTU4_TIER_TTGE_Msk (0x80UL) /*!< TTGE (Bitfield-Mask: 0x01) */ +/* ========================================================= TCNT ========================================================== */ +/* ========================================================= TGRA ========================================================== */ +/* ========================================================= TGRB ========================================================== */ +/* ========================================================= TGRC ========================================================== */ +/* ========================================================= TGRD ========================================================== */ +/* ========================================================== TSR ========================================================== */ + #define R_MTU4_TSR_TGFA_Pos (0UL) /*!< TGFA (Bit 0) */ + #define R_MTU4_TSR_TGFA_Msk (0x1UL) /*!< TGFA (Bitfield-Mask: 0x01) */ + #define R_MTU4_TSR_TGFB_Pos (1UL) /*!< TGFB (Bit 1) */ + #define R_MTU4_TSR_TGFB_Msk (0x2UL) /*!< TGFB (Bitfield-Mask: 0x01) */ + #define R_MTU4_TSR_TGFC_Pos (2UL) /*!< TGFC (Bit 2) */ + #define R_MTU4_TSR_TGFC_Msk (0x4UL) /*!< TGFC (Bitfield-Mask: 0x01) */ + #define R_MTU4_TSR_TGFD_Pos (3UL) /*!< TGFD (Bit 3) */ + #define R_MTU4_TSR_TGFD_Msk (0x8UL) /*!< TGFD (Bitfield-Mask: 0x01) */ + #define R_MTU4_TSR_TCFV_Pos (4UL) /*!< TCFV (Bit 4) */ + #define R_MTU4_TSR_TCFV_Msk (0x10UL) /*!< TCFV (Bitfield-Mask: 0x01) */ + #define R_MTU4_TSR_TCFU_Pos (5UL) /*!< TCFU (Bit 5) */ + #define R_MTU4_TSR_TCFU_Msk (0x20UL) /*!< TCFU (Bitfield-Mask: 0x01) */ + #define R_MTU4_TSR_TCFD_Pos (7UL) /*!< TCFD (Bit 7) */ + #define R_MTU4_TSR_TCFD_Msk (0x80UL) /*!< TCFD (Bitfield-Mask: 0x01) */ +/* ========================================================= TBTM ========================================================== */ + #define R_MTU4_TBTM_TTSA_Pos (0UL) /*!< TTSA (Bit 0) */ + #define R_MTU4_TBTM_TTSA_Msk (0x1UL) /*!< TTSA (Bitfield-Mask: 0x01) */ + #define R_MTU4_TBTM_TTSB_Pos (1UL) /*!< TTSB (Bit 1) */ + #define R_MTU4_TBTM_TTSB_Msk (0x2UL) /*!< TTSB (Bitfield-Mask: 0x01) */ +/* ========================================================= TADCR ========================================================= */ + #define R_MTU4_TADCR_ITB4VE_Pos (0UL) /*!< ITB4VE (Bit 0) */ + #define R_MTU4_TADCR_ITB4VE_Msk (0x1UL) /*!< ITB4VE (Bitfield-Mask: 0x01) */ + #define R_MTU4_TADCR_ITB3AE_Pos (1UL) /*!< ITB3AE (Bit 1) */ + #define R_MTU4_TADCR_ITB3AE_Msk (0x2UL) /*!< ITB3AE (Bitfield-Mask: 0x01) */ + #define R_MTU4_TADCR_ITA4VE_Pos (2UL) /*!< ITA4VE (Bit 2) */ + #define R_MTU4_TADCR_ITA4VE_Msk (0x4UL) /*!< ITA4VE (Bitfield-Mask: 0x01) */ + #define R_MTU4_TADCR_ITA3AE_Pos (3UL) /*!< ITA3AE (Bit 3) */ + #define R_MTU4_TADCR_ITA3AE_Msk (0x8UL) /*!< ITA3AE (Bitfield-Mask: 0x01) */ + #define R_MTU4_TADCR_DT4BE_Pos (4UL) /*!< DT4BE (Bit 4) */ + #define R_MTU4_TADCR_DT4BE_Msk (0x10UL) /*!< DT4BE (Bitfield-Mask: 0x01) */ + #define R_MTU4_TADCR_UT4BE_Pos (5UL) /*!< UT4BE (Bit 5) */ + #define R_MTU4_TADCR_UT4BE_Msk (0x20UL) /*!< UT4BE (Bitfield-Mask: 0x01) */ + #define R_MTU4_TADCR_DT4AE_Pos (6UL) /*!< DT4AE (Bit 6) */ + #define R_MTU4_TADCR_DT4AE_Msk (0x40UL) /*!< DT4AE (Bitfield-Mask: 0x01) */ + #define R_MTU4_TADCR_UT4AE_Pos (7UL) /*!< UT4AE (Bit 7) */ + #define R_MTU4_TADCR_UT4AE_Msk (0x80UL) /*!< UT4AE (Bitfield-Mask: 0x01) */ + #define R_MTU4_TADCR_BF_Pos (14UL) /*!< BF (Bit 14) */ + #define R_MTU4_TADCR_BF_Msk (0xc000UL) /*!< BF (Bitfield-Mask: 0x03) */ +/* ======================================================== TADCORA ======================================================== */ +/* ======================================================== TADCORB ======================================================== */ +/* ======================================================= TADCOBRA ======================================================== */ +/* ======================================================= TADCOBRB ======================================================== */ +/* ========================================================= TCR2 ========================================================== */ + #define R_MTU4_TCR2_TPSC2_Pos (0UL) /*!< TPSC2 (Bit 0) */ + #define R_MTU4_TCR2_TPSC2_Msk (0x7UL) /*!< TPSC2 (Bitfield-Mask: 0x07) */ +/* ========================================================= TGRE ========================================================== */ +/* ========================================================= TGRF ========================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_MTU_NF ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= NFCR0 ========================================================= */ + #define R_MTU_NF_NFCR0_NFAEN_Pos (0UL) /*!< NFAEN (Bit 0) */ + #define R_MTU_NF_NFCR0_NFAEN_Msk (0x1UL) /*!< NFAEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR0_NFBEN_Pos (1UL) /*!< NFBEN (Bit 1) */ + #define R_MTU_NF_NFCR0_NFBEN_Msk (0x2UL) /*!< NFBEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR0_NFCEN_Pos (2UL) /*!< NFCEN (Bit 2) */ + #define R_MTU_NF_NFCR0_NFCEN_Msk (0x4UL) /*!< NFCEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR0_NFDEN_Pos (3UL) /*!< NFDEN (Bit 3) */ + #define R_MTU_NF_NFCR0_NFDEN_Msk (0x8UL) /*!< NFDEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR0_NFCS_Pos (4UL) /*!< NFCS (Bit 4) */ + #define R_MTU_NF_NFCR0_NFCS_Msk (0x30UL) /*!< NFCS (Bitfield-Mask: 0x03) */ +/* ========================================================= NFCR1 ========================================================= */ + #define R_MTU_NF_NFCR1_NFAEN_Pos (0UL) /*!< NFAEN (Bit 0) */ + #define R_MTU_NF_NFCR1_NFAEN_Msk (0x1UL) /*!< NFAEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR1_NFBEN_Pos (1UL) /*!< NFBEN (Bit 1) */ + #define R_MTU_NF_NFCR1_NFBEN_Msk (0x2UL) /*!< NFBEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR1_NFCS_Pos (4UL) /*!< NFCS (Bit 4) */ + #define R_MTU_NF_NFCR1_NFCS_Msk (0x30UL) /*!< NFCS (Bitfield-Mask: 0x03) */ +/* ========================================================= NFCR2 ========================================================= */ + #define R_MTU_NF_NFCR2_NFAEN_Pos (0UL) /*!< NFAEN (Bit 0) */ + #define R_MTU_NF_NFCR2_NFAEN_Msk (0x1UL) /*!< NFAEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR2_NFBEN_Pos (1UL) /*!< NFBEN (Bit 1) */ + #define R_MTU_NF_NFCR2_NFBEN_Msk (0x2UL) /*!< NFBEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR2_NFCS_Pos (4UL) /*!< NFCS (Bit 4) */ + #define R_MTU_NF_NFCR2_NFCS_Msk (0x30UL) /*!< NFCS (Bitfield-Mask: 0x03) */ +/* ========================================================= NFCR3 ========================================================= */ + #define R_MTU_NF_NFCR3_NFAEN_Pos (0UL) /*!< NFAEN (Bit 0) */ + #define R_MTU_NF_NFCR3_NFAEN_Msk (0x1UL) /*!< NFAEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR3_NFBEN_Pos (1UL) /*!< NFBEN (Bit 1) */ + #define R_MTU_NF_NFCR3_NFBEN_Msk (0x2UL) /*!< NFBEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR3_NFCEN_Pos (2UL) /*!< NFCEN (Bit 2) */ + #define R_MTU_NF_NFCR3_NFCEN_Msk (0x4UL) /*!< NFCEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR3_NFDEN_Pos (3UL) /*!< NFDEN (Bit 3) */ + #define R_MTU_NF_NFCR3_NFDEN_Msk (0x8UL) /*!< NFDEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR3_NFCS_Pos (4UL) /*!< NFCS (Bit 4) */ + #define R_MTU_NF_NFCR3_NFCS_Msk (0x30UL) /*!< NFCS (Bitfield-Mask: 0x03) */ +/* ========================================================= NFCR4 ========================================================= */ + #define R_MTU_NF_NFCR4_NFAEN_Pos (0UL) /*!< NFAEN (Bit 0) */ + #define R_MTU_NF_NFCR4_NFAEN_Msk (0x1UL) /*!< NFAEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR4_NFBEN_Pos (1UL) /*!< NFBEN (Bit 1) */ + #define R_MTU_NF_NFCR4_NFBEN_Msk (0x2UL) /*!< NFBEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR4_NFCEN_Pos (2UL) /*!< NFCEN (Bit 2) */ + #define R_MTU_NF_NFCR4_NFCEN_Msk (0x4UL) /*!< NFCEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR4_NFDEN_Pos (3UL) /*!< NFDEN (Bit 3) */ + #define R_MTU_NF_NFCR4_NFDEN_Msk (0x8UL) /*!< NFDEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR4_NFCS_Pos (4UL) /*!< NFCS (Bit 4) */ + #define R_MTU_NF_NFCR4_NFCS_Msk (0x30UL) /*!< NFCS (Bitfield-Mask: 0x03) */ +/* ========================================================= NFCR8 ========================================================= */ + #define R_MTU_NF_NFCR8_NFAEN_Pos (0UL) /*!< NFAEN (Bit 0) */ + #define R_MTU_NF_NFCR8_NFAEN_Msk (0x1UL) /*!< NFAEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR8_NFBEN_Pos (1UL) /*!< NFBEN (Bit 1) */ + #define R_MTU_NF_NFCR8_NFBEN_Msk (0x2UL) /*!< NFBEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR8_NFCEN_Pos (2UL) /*!< NFCEN (Bit 2) */ + #define R_MTU_NF_NFCR8_NFCEN_Msk (0x4UL) /*!< NFCEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR8_NFDEN_Pos (3UL) /*!< NFDEN (Bit 3) */ + #define R_MTU_NF_NFCR8_NFDEN_Msk (0x8UL) /*!< NFDEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR8_NFCS_Pos (4UL) /*!< NFCS (Bit 4) */ + #define R_MTU_NF_NFCR8_NFCS_Msk (0x30UL) /*!< NFCS (Bitfield-Mask: 0x03) */ +/* ========================================================= NFCRC ========================================================= */ + #define R_MTU_NF_NFCRC_NFAEN_Pos (0UL) /*!< NFAEN (Bit 0) */ + #define R_MTU_NF_NFCRC_NFAEN_Msk (0x1UL) /*!< NFAEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCRC_NFBEN_Pos (1UL) /*!< NFBEN (Bit 1) */ + #define R_MTU_NF_NFCRC_NFBEN_Msk (0x2UL) /*!< NFBEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCRC_NFCEN_Pos (2UL) /*!< NFCEN (Bit 2) */ + #define R_MTU_NF_NFCRC_NFCEN_Msk (0x4UL) /*!< NFCEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCRC_NFDEN_Pos (3UL) /*!< NFDEN (Bit 3) */ + #define R_MTU_NF_NFCRC_NFDEN_Msk (0x8UL) /*!< NFDEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCRC_NFCS_Pos (4UL) /*!< NFCS (Bit 4) */ + #define R_MTU_NF_NFCRC_NFCS_Msk (0x30UL) /*!< NFCS (Bitfield-Mask: 0x03) */ +/* ========================================================= NFCR6 ========================================================= */ + #define R_MTU_NF_NFCR6_NFAEN_Pos (0UL) /*!< NFAEN (Bit 0) */ + #define R_MTU_NF_NFCR6_NFAEN_Msk (0x1UL) /*!< NFAEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR6_NFBEN_Pos (1UL) /*!< NFBEN (Bit 1) */ + #define R_MTU_NF_NFCR6_NFBEN_Msk (0x2UL) /*!< NFBEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR6_NFCEN_Pos (2UL) /*!< NFCEN (Bit 2) */ + #define R_MTU_NF_NFCR6_NFCEN_Msk (0x4UL) /*!< NFCEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR6_NFDEN_Pos (3UL) /*!< NFDEN (Bit 3) */ + #define R_MTU_NF_NFCR6_NFDEN_Msk (0x8UL) /*!< NFDEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR6_NFCS_Pos (4UL) /*!< NFCS (Bit 4) */ + #define R_MTU_NF_NFCR6_NFCS_Msk (0x30UL) /*!< NFCS (Bitfield-Mask: 0x03) */ +/* ========================================================= NFCR7 ========================================================= */ + #define R_MTU_NF_NFCR7_NFAEN_Pos (0UL) /*!< NFAEN (Bit 0) */ + #define R_MTU_NF_NFCR7_NFAEN_Msk (0x1UL) /*!< NFAEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR7_NFBEN_Pos (1UL) /*!< NFBEN (Bit 1) */ + #define R_MTU_NF_NFCR7_NFBEN_Msk (0x2UL) /*!< NFBEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR7_NFCEN_Pos (2UL) /*!< NFCEN (Bit 2) */ + #define R_MTU_NF_NFCR7_NFCEN_Msk (0x4UL) /*!< NFCEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR7_NFDEN_Pos (3UL) /*!< NFDEN (Bit 3) */ + #define R_MTU_NF_NFCR7_NFDEN_Msk (0x8UL) /*!< NFDEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR7_NFCS_Pos (4UL) /*!< NFCS (Bit 4) */ + #define R_MTU_NF_NFCR7_NFCS_Msk (0x30UL) /*!< NFCS (Bitfield-Mask: 0x03) */ +/* ========================================================= NFCR5 ========================================================= */ + #define R_MTU_NF_NFCR5_NFUEN_Pos (0UL) /*!< NFUEN (Bit 0) */ + #define R_MTU_NF_NFCR5_NFUEN_Msk (0x1UL) /*!< NFUEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR5_NFVEN_Pos (1UL) /*!< NFVEN (Bit 1) */ + #define R_MTU_NF_NFCR5_NFVEN_Msk (0x2UL) /*!< NFVEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR5_NFWEN_Pos (2UL) /*!< NFWEN (Bit 2) */ + #define R_MTU_NF_NFCR5_NFWEN_Msk (0x4UL) /*!< NFWEN (Bitfield-Mask: 0x01) */ + #define R_MTU_NF_NFCR5_NFCS_Pos (4UL) /*!< NFCS (Bit 4) */ + #define R_MTU_NF_NFCR5_NFCS_Msk (0x30UL) /*!< NFCS (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ R_MTU0 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== TCR ========================================================== */ + #define R_MTU0_TCR_TPSC_Pos (0UL) /*!< TPSC (Bit 0) */ + #define R_MTU0_TCR_TPSC_Msk (0x7UL) /*!< TPSC (Bitfield-Mask: 0x07) */ + #define R_MTU0_TCR_CKEG_Pos (3UL) /*!< CKEG (Bit 3) */ + #define R_MTU0_TCR_CKEG_Msk (0x18UL) /*!< CKEG (Bitfield-Mask: 0x03) */ + #define R_MTU0_TCR_CCLR_Pos (5UL) /*!< CCLR (Bit 5) */ + #define R_MTU0_TCR_CCLR_Msk (0xe0UL) /*!< CCLR (Bitfield-Mask: 0x07) */ +/* ========================================================= TMDR1 ========================================================= */ + #define R_MTU0_TMDR1_MD_Pos (0UL) /*!< MD (Bit 0) */ + #define R_MTU0_TMDR1_MD_Msk (0xfUL) /*!< MD (Bitfield-Mask: 0x0f) */ + #define R_MTU0_TMDR1_BFA_Pos (4UL) /*!< BFA (Bit 4) */ + #define R_MTU0_TMDR1_BFA_Msk (0x10UL) /*!< BFA (Bitfield-Mask: 0x01) */ + #define R_MTU0_TMDR1_BFB_Pos (5UL) /*!< BFB (Bit 5) */ + #define R_MTU0_TMDR1_BFB_Msk (0x20UL) /*!< BFB (Bitfield-Mask: 0x01) */ + #define R_MTU0_TMDR1_BFE_Pos (6UL) /*!< BFE (Bit 6) */ + #define R_MTU0_TMDR1_BFE_Msk (0x40UL) /*!< BFE (Bitfield-Mask: 0x01) */ +/* ========================================================= TIORH ========================================================= */ + #define R_MTU0_TIORH_IOA_Pos (0UL) /*!< IOA (Bit 0) */ + #define R_MTU0_TIORH_IOA_Msk (0xfUL) /*!< IOA (Bitfield-Mask: 0x0f) */ + #define R_MTU0_TIORH_IOB_Pos (4UL) /*!< IOB (Bit 4) */ + #define R_MTU0_TIORH_IOB_Msk (0xf0UL) /*!< IOB (Bitfield-Mask: 0x0f) */ +/* ========================================================= TIORL ========================================================= */ + #define R_MTU0_TIORL_IOC_Pos (0UL) /*!< IOC (Bit 0) */ + #define R_MTU0_TIORL_IOC_Msk (0xfUL) /*!< IOC (Bitfield-Mask: 0x0f) */ + #define R_MTU0_TIORL_IOD_Pos (4UL) /*!< IOD (Bit 4) */ + #define R_MTU0_TIORL_IOD_Msk (0xf0UL) /*!< IOD (Bitfield-Mask: 0x0f) */ +/* ========================================================= TIER ========================================================== */ + #define R_MTU0_TIER_TGIEA_Pos (0UL) /*!< TGIEA (Bit 0) */ + #define R_MTU0_TIER_TGIEA_Msk (0x1UL) /*!< TGIEA (Bitfield-Mask: 0x01) */ + #define R_MTU0_TIER_TGIEB_Pos (1UL) /*!< TGIEB (Bit 1) */ + #define R_MTU0_TIER_TGIEB_Msk (0x2UL) /*!< TGIEB (Bitfield-Mask: 0x01) */ + #define R_MTU0_TIER_TGIEC_Pos (2UL) /*!< TGIEC (Bit 2) */ + #define R_MTU0_TIER_TGIEC_Msk (0x4UL) /*!< TGIEC (Bitfield-Mask: 0x01) */ + #define R_MTU0_TIER_TGIED_Pos (3UL) /*!< TGIED (Bit 3) */ + #define R_MTU0_TIER_TGIED_Msk (0x8UL) /*!< TGIED (Bitfield-Mask: 0x01) */ + #define R_MTU0_TIER_TCIEV_Pos (4UL) /*!< TCIEV (Bit 4) */ + #define R_MTU0_TIER_TCIEV_Msk (0x10UL) /*!< TCIEV (Bitfield-Mask: 0x01) */ + #define R_MTU0_TIER_TTGE_Pos (7UL) /*!< TTGE (Bit 7) */ + #define R_MTU0_TIER_TTGE_Msk (0x80UL) /*!< TTGE (Bitfield-Mask: 0x01) */ +/* ========================================================= TCNT ========================================================== */ +/* ========================================================= TGRA ========================================================== */ +/* ========================================================= TGRB ========================================================== */ +/* ========================================================= TGRC ========================================================== */ +/* ========================================================= TGRD ========================================================== */ +/* ========================================================= TGRE ========================================================== */ +/* ========================================================= TGRF ========================================================== */ +/* ========================================================= TIER2 ========================================================= */ + #define R_MTU0_TIER2_TGIEE_Pos (0UL) /*!< TGIEE (Bit 0) */ + #define R_MTU0_TIER2_TGIEE_Msk (0x1UL) /*!< TGIEE (Bitfield-Mask: 0x01) */ + #define R_MTU0_TIER2_TGIEF_Pos (1UL) /*!< TGIEF (Bit 1) */ + #define R_MTU0_TIER2_TGIEF_Msk (0x2UL) /*!< TGIEF (Bitfield-Mask: 0x01) */ + #define R_MTU0_TIER2_TTGE2_Pos (7UL) /*!< TTGE2 (Bit 7) */ + #define R_MTU0_TIER2_TTGE2_Msk (0x80UL) /*!< TTGE2 (Bitfield-Mask: 0x01) */ +/* ========================================================= TBTM ========================================================== */ + #define R_MTU0_TBTM_TTSA_Pos (0UL) /*!< TTSA (Bit 0) */ + #define R_MTU0_TBTM_TTSA_Msk (0x1UL) /*!< TTSA (Bitfield-Mask: 0x01) */ + #define R_MTU0_TBTM_TTSB_Pos (1UL) /*!< TTSB (Bit 1) */ + #define R_MTU0_TBTM_TTSB_Msk (0x2UL) /*!< TTSB (Bitfield-Mask: 0x01) */ + #define R_MTU0_TBTM_TTSE_Pos (2UL) /*!< TTSE (Bit 2) */ + #define R_MTU0_TBTM_TTSE_Msk (0x4UL) /*!< TTSE (Bitfield-Mask: 0x01) */ +/* ========================================================= TCR2 ========================================================== */ + #define R_MTU0_TCR2_TPSC2_Pos (0UL) /*!< TPSC2 (Bit 0) */ + #define R_MTU0_TCR2_TPSC2_Msk (0x7UL) /*!< TPSC2 (Bitfield-Mask: 0x07) */ + +/* =========================================================================================================================== */ +/* ================ R_MTU1 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== TCR ========================================================== */ + #define R_MTU1_TCR_TPSC_Pos (0UL) /*!< TPSC (Bit 0) */ + #define R_MTU1_TCR_TPSC_Msk (0x7UL) /*!< TPSC (Bitfield-Mask: 0x07) */ + #define R_MTU1_TCR_CKEG_Pos (3UL) /*!< CKEG (Bit 3) */ + #define R_MTU1_TCR_CKEG_Msk (0x18UL) /*!< CKEG (Bitfield-Mask: 0x03) */ + #define R_MTU1_TCR_CCLR_Pos (5UL) /*!< CCLR (Bit 5) */ + #define R_MTU1_TCR_CCLR_Msk (0xe0UL) /*!< CCLR (Bitfield-Mask: 0x07) */ +/* ========================================================= TMDR1 ========================================================= */ + #define R_MTU1_TMDR1_MD_Pos (0UL) /*!< MD (Bit 0) */ + #define R_MTU1_TMDR1_MD_Msk (0xfUL) /*!< MD (Bitfield-Mask: 0x0f) */ +/* ========================================================= TIOR ========================================================== */ + #define R_MTU1_TIOR_IOA_Pos (0UL) /*!< IOA (Bit 0) */ + #define R_MTU1_TIOR_IOA_Msk (0xfUL) /*!< IOA (Bitfield-Mask: 0x0f) */ + #define R_MTU1_TIOR_IOB_Pos (4UL) /*!< IOB (Bit 4) */ + #define R_MTU1_TIOR_IOB_Msk (0xf0UL) /*!< IOB (Bitfield-Mask: 0x0f) */ +/* ========================================================= TIER ========================================================== */ + #define R_MTU1_TIER_TGIEA_Pos (0UL) /*!< TGIEA (Bit 0) */ + #define R_MTU1_TIER_TGIEA_Msk (0x1UL) /*!< TGIEA (Bitfield-Mask: 0x01) */ + #define R_MTU1_TIER_TGIEB_Pos (1UL) /*!< TGIEB (Bit 1) */ + #define R_MTU1_TIER_TGIEB_Msk (0x2UL) /*!< TGIEB (Bitfield-Mask: 0x01) */ + #define R_MTU1_TIER_TCIEV_Pos (4UL) /*!< TCIEV (Bit 4) */ + #define R_MTU1_TIER_TCIEV_Msk (0x10UL) /*!< TCIEV (Bitfield-Mask: 0x01) */ + #define R_MTU1_TIER_TCIEU_Pos (5UL) /*!< TCIEU (Bit 5) */ + #define R_MTU1_TIER_TCIEU_Msk (0x20UL) /*!< TCIEU (Bitfield-Mask: 0x01) */ + #define R_MTU1_TIER_TTGE_Pos (7UL) /*!< TTGE (Bit 7) */ + #define R_MTU1_TIER_TTGE_Msk (0x80UL) /*!< TTGE (Bitfield-Mask: 0x01) */ +/* ========================================================== TSR ========================================================== */ + #define R_MTU1_TSR_TGFA_Pos (0UL) /*!< TGFA (Bit 0) */ + #define R_MTU1_TSR_TGFA_Msk (0x1UL) /*!< TGFA (Bitfield-Mask: 0x01) */ + #define R_MTU1_TSR_TGFB_Pos (1UL) /*!< TGFB (Bit 1) */ + #define R_MTU1_TSR_TGFB_Msk (0x2UL) /*!< TGFB (Bitfield-Mask: 0x01) */ + #define R_MTU1_TSR_TGFC_Pos (2UL) /*!< TGFC (Bit 2) */ + #define R_MTU1_TSR_TGFC_Msk (0x4UL) /*!< TGFC (Bitfield-Mask: 0x01) */ + #define R_MTU1_TSR_TGFD_Pos (3UL) /*!< TGFD (Bit 3) */ + #define R_MTU1_TSR_TGFD_Msk (0x8UL) /*!< TGFD (Bitfield-Mask: 0x01) */ + #define R_MTU1_TSR_TCFV_Pos (4UL) /*!< TCFV (Bit 4) */ + #define R_MTU1_TSR_TCFV_Msk (0x10UL) /*!< TCFV (Bitfield-Mask: 0x01) */ + #define R_MTU1_TSR_TCFU_Pos (5UL) /*!< TCFU (Bit 5) */ + #define R_MTU1_TSR_TCFU_Msk (0x20UL) /*!< TCFU (Bitfield-Mask: 0x01) */ + #define R_MTU1_TSR_TCFD_Pos (7UL) /*!< TCFD (Bit 7) */ + #define R_MTU1_TSR_TCFD_Msk (0x80UL) /*!< TCFD (Bitfield-Mask: 0x01) */ +/* ========================================================= TCNT ========================================================== */ +/* ========================================================= TGRA ========================================================== */ +/* ========================================================= TGRB ========================================================== */ +/* ========================================================= TICCR ========================================================= */ + #define R_MTU1_TICCR_I1AE_Pos (0UL) /*!< I1AE (Bit 0) */ + #define R_MTU1_TICCR_I1AE_Msk (0x1UL) /*!< I1AE (Bitfield-Mask: 0x01) */ + #define R_MTU1_TICCR_I1BE_Pos (1UL) /*!< I1BE (Bit 1) */ + #define R_MTU1_TICCR_I1BE_Msk (0x2UL) /*!< I1BE (Bitfield-Mask: 0x01) */ + #define R_MTU1_TICCR_I2AE_Pos (2UL) /*!< I2AE (Bit 2) */ + #define R_MTU1_TICCR_I2AE_Msk (0x4UL) /*!< I2AE (Bitfield-Mask: 0x01) */ + #define R_MTU1_TICCR_I2BE_Pos (3UL) /*!< I2BE (Bit 3) */ + #define R_MTU1_TICCR_I2BE_Msk (0x8UL) /*!< I2BE (Bitfield-Mask: 0x01) */ +/* ========================================================= TMDR3 ========================================================= */ + #define R_MTU1_TMDR3_LWA_Pos (0UL) /*!< LWA (Bit 0) */ + #define R_MTU1_TMDR3_LWA_Msk (0x1UL) /*!< LWA (Bitfield-Mask: 0x01) */ + #define R_MTU1_TMDR3_PHCKSEL_Pos (1UL) /*!< PHCKSEL (Bit 1) */ + #define R_MTU1_TMDR3_PHCKSEL_Msk (0x2UL) /*!< PHCKSEL (Bitfield-Mask: 0x01) */ +/* ========================================================= TCR2 ========================================================== */ + #define R_MTU1_TCR2_TPSC2_Pos (0UL) /*!< TPSC2 (Bit 0) */ + #define R_MTU1_TCR2_TPSC2_Msk (0x7UL) /*!< TPSC2 (Bitfield-Mask: 0x07) */ + #define R_MTU1_TCR2_PCB_Pos (3UL) /*!< PCB (Bit 3) */ + #define R_MTU1_TCR2_PCB_Msk (0x18UL) /*!< PCB (Bitfield-Mask: 0x03) */ +/* ======================================================== TCNTLW ========================================================= */ +/* ======================================================== TGRALW ========================================================= */ +/* ======================================================== TGRBLW ========================================================= */ + +/* =========================================================================================================================== */ +/* ================ R_MTU2 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== TCR ========================================================== */ + #define R_MTU2_TCR_TPSC_Pos (0UL) /*!< TPSC (Bit 0) */ + #define R_MTU2_TCR_TPSC_Msk (0x7UL) /*!< TPSC (Bitfield-Mask: 0x07) */ + #define R_MTU2_TCR_CKEG_Pos (3UL) /*!< CKEG (Bit 3) */ + #define R_MTU2_TCR_CKEG_Msk (0x18UL) /*!< CKEG (Bitfield-Mask: 0x03) */ + #define R_MTU2_TCR_CCLR_Pos (5UL) /*!< CCLR (Bit 5) */ + #define R_MTU2_TCR_CCLR_Msk (0xe0UL) /*!< CCLR (Bitfield-Mask: 0x07) */ +/* ========================================================= TMDR1 ========================================================= */ + #define R_MTU2_TMDR1_MD_Pos (0UL) /*!< MD (Bit 0) */ + #define R_MTU2_TMDR1_MD_Msk (0xfUL) /*!< MD (Bitfield-Mask: 0x0f) */ +/* ========================================================= TIOR ========================================================== */ + #define R_MTU2_TIOR_IOA_Pos (0UL) /*!< IOA (Bit 0) */ + #define R_MTU2_TIOR_IOA_Msk (0xfUL) /*!< IOA (Bitfield-Mask: 0x0f) */ + #define R_MTU2_TIOR_IOB_Pos (4UL) /*!< IOB (Bit 4) */ + #define R_MTU2_TIOR_IOB_Msk (0xf0UL) /*!< IOB (Bitfield-Mask: 0x0f) */ +/* ========================================================= TIER ========================================================== */ + #define R_MTU2_TIER_TGIEA_Pos (0UL) /*!< TGIEA (Bit 0) */ + #define R_MTU2_TIER_TGIEA_Msk (0x1UL) /*!< TGIEA (Bitfield-Mask: 0x01) */ + #define R_MTU2_TIER_TGIEB_Pos (1UL) /*!< TGIEB (Bit 1) */ + #define R_MTU2_TIER_TGIEB_Msk (0x2UL) /*!< TGIEB (Bitfield-Mask: 0x01) */ + #define R_MTU2_TIER_TCIEV_Pos (4UL) /*!< TCIEV (Bit 4) */ + #define R_MTU2_TIER_TCIEV_Msk (0x10UL) /*!< TCIEV (Bitfield-Mask: 0x01) */ + #define R_MTU2_TIER_TCIEU_Pos (5UL) /*!< TCIEU (Bit 5) */ + #define R_MTU2_TIER_TCIEU_Msk (0x20UL) /*!< TCIEU (Bitfield-Mask: 0x01) */ + #define R_MTU2_TIER_TTGE_Pos (7UL) /*!< TTGE (Bit 7) */ + #define R_MTU2_TIER_TTGE_Msk (0x80UL) /*!< TTGE (Bitfield-Mask: 0x01) */ +/* ========================================================== TSR ========================================================== */ + #define R_MTU2_TSR_TGFA_Pos (0UL) /*!< TGFA (Bit 0) */ + #define R_MTU2_TSR_TGFA_Msk (0x1UL) /*!< TGFA (Bitfield-Mask: 0x01) */ + #define R_MTU2_TSR_TGFB_Pos (1UL) /*!< TGFB (Bit 1) */ + #define R_MTU2_TSR_TGFB_Msk (0x2UL) /*!< TGFB (Bitfield-Mask: 0x01) */ + #define R_MTU2_TSR_TGFC_Pos (2UL) /*!< TGFC (Bit 2) */ + #define R_MTU2_TSR_TGFC_Msk (0x4UL) /*!< TGFC (Bitfield-Mask: 0x01) */ + #define R_MTU2_TSR_TGFD_Pos (3UL) /*!< TGFD (Bit 3) */ + #define R_MTU2_TSR_TGFD_Msk (0x8UL) /*!< TGFD (Bitfield-Mask: 0x01) */ + #define R_MTU2_TSR_TCFV_Pos (4UL) /*!< TCFV (Bit 4) */ + #define R_MTU2_TSR_TCFV_Msk (0x10UL) /*!< TCFV (Bitfield-Mask: 0x01) */ + #define R_MTU2_TSR_TCFU_Pos (5UL) /*!< TCFU (Bit 5) */ + #define R_MTU2_TSR_TCFU_Msk (0x20UL) /*!< TCFU (Bitfield-Mask: 0x01) */ + #define R_MTU2_TSR_TCFD_Pos (7UL) /*!< TCFD (Bit 7) */ + #define R_MTU2_TSR_TCFD_Msk (0x80UL) /*!< TCFD (Bitfield-Mask: 0x01) */ +/* ========================================================= TCNT ========================================================== */ +/* ========================================================= TGRA ========================================================== */ +/* ========================================================= TGRB ========================================================== */ +/* ========================================================= TCR2 ========================================================== */ + #define R_MTU2_TCR2_TPSC2_Pos (0UL) /*!< TPSC2 (Bit 0) */ + #define R_MTU2_TCR2_TPSC2_Msk (0x7UL) /*!< TPSC2 (Bitfield-Mask: 0x07) */ + #define R_MTU2_TCR2_PCB_Pos (3UL) /*!< PCB (Bit 3) */ + #define R_MTU2_TCR2_PCB_Msk (0x18UL) /*!< PCB (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ R_MTU8 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== TCR ========================================================== */ + #define R_MTU8_TCR_TPSC_Pos (0UL) /*!< TPSC (Bit 0) */ + #define R_MTU8_TCR_TPSC_Msk (0x7UL) /*!< TPSC (Bitfield-Mask: 0x07) */ + #define R_MTU8_TCR_CKEG_Pos (3UL) /*!< CKEG (Bit 3) */ + #define R_MTU8_TCR_CKEG_Msk (0x18UL) /*!< CKEG (Bitfield-Mask: 0x03) */ + #define R_MTU8_TCR_CCLR_Pos (5UL) /*!< CCLR (Bit 5) */ + #define R_MTU8_TCR_CCLR_Msk (0xe0UL) /*!< CCLR (Bitfield-Mask: 0x07) */ +/* ========================================================= TMDR1 ========================================================= */ + #define R_MTU8_TMDR1_MD_Pos (0UL) /*!< MD (Bit 0) */ + #define R_MTU8_TMDR1_MD_Msk (0xfUL) /*!< MD (Bitfield-Mask: 0x0f) */ + #define R_MTU8_TMDR1_BFA_Pos (4UL) /*!< BFA (Bit 4) */ + #define R_MTU8_TMDR1_BFA_Msk (0x10UL) /*!< BFA (Bitfield-Mask: 0x01) */ + #define R_MTU8_TMDR1_BFB_Pos (5UL) /*!< BFB (Bit 5) */ + #define R_MTU8_TMDR1_BFB_Msk (0x20UL) /*!< BFB (Bitfield-Mask: 0x01) */ +/* ========================================================= TIORH ========================================================= */ + #define R_MTU8_TIORH_IOA_Pos (0UL) /*!< IOA (Bit 0) */ + #define R_MTU8_TIORH_IOA_Msk (0xfUL) /*!< IOA (Bitfield-Mask: 0x0f) */ + #define R_MTU8_TIORH_IOB_Pos (4UL) /*!< IOB (Bit 4) */ + #define R_MTU8_TIORH_IOB_Msk (0xf0UL) /*!< IOB (Bitfield-Mask: 0x0f) */ +/* ========================================================= TIORL ========================================================= */ + #define R_MTU8_TIORL_IOC_Pos (0UL) /*!< IOC (Bit 0) */ + #define R_MTU8_TIORL_IOC_Msk (0xfUL) /*!< IOC (Bitfield-Mask: 0x0f) */ + #define R_MTU8_TIORL_IOD_Pos (4UL) /*!< IOD (Bit 4) */ + #define R_MTU8_TIORL_IOD_Msk (0xf0UL) /*!< IOD (Bitfield-Mask: 0x0f) */ +/* ========================================================= TIER ========================================================== */ + #define R_MTU8_TIER_TGIEA_Pos (0UL) /*!< TGIEA (Bit 0) */ + #define R_MTU8_TIER_TGIEA_Msk (0x1UL) /*!< TGIEA (Bitfield-Mask: 0x01) */ + #define R_MTU8_TIER_TGIEB_Pos (1UL) /*!< TGIEB (Bit 1) */ + #define R_MTU8_TIER_TGIEB_Msk (0x2UL) /*!< TGIEB (Bitfield-Mask: 0x01) */ + #define R_MTU8_TIER_TGIEC_Pos (2UL) /*!< TGIEC (Bit 2) */ + #define R_MTU8_TIER_TGIEC_Msk (0x4UL) /*!< TGIEC (Bitfield-Mask: 0x01) */ + #define R_MTU8_TIER_TGIED_Pos (3UL) /*!< TGIED (Bit 3) */ + #define R_MTU8_TIER_TGIED_Msk (0x8UL) /*!< TGIED (Bitfield-Mask: 0x01) */ + #define R_MTU8_TIER_TCIEV_Pos (4UL) /*!< TCIEV (Bit 4) */ + #define R_MTU8_TIER_TCIEV_Msk (0x10UL) /*!< TCIEV (Bitfield-Mask: 0x01) */ +/* ========================================================= TCR2 ========================================================== */ + #define R_MTU8_TCR2_TPSC2_Pos (0UL) /*!< TPSC2 (Bit 0) */ + #define R_MTU8_TCR2_TPSC2_Msk (0x7UL) /*!< TPSC2 (Bitfield-Mask: 0x07) */ +/* ========================================================= TCNT ========================================================== */ +/* ========================================================= TGRA ========================================================== */ +/* ========================================================= TGRB ========================================================== */ +/* ========================================================= TGRC ========================================================== */ +/* ========================================================= TGRD ========================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_MTU6 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== TCR ========================================================== */ + #define R_MTU6_TCR_TPSC_Pos (0UL) /*!< TPSC (Bit 0) */ + #define R_MTU6_TCR_TPSC_Msk (0x7UL) /*!< TPSC (Bitfield-Mask: 0x07) */ + #define R_MTU6_TCR_CKEG_Pos (3UL) /*!< CKEG (Bit 3) */ + #define R_MTU6_TCR_CKEG_Msk (0x18UL) /*!< CKEG (Bitfield-Mask: 0x03) */ + #define R_MTU6_TCR_CCLR_Pos (5UL) /*!< CCLR (Bit 5) */ + #define R_MTU6_TCR_CCLR_Msk (0xe0UL) /*!< CCLR (Bitfield-Mask: 0x07) */ +/* ========================================================= TMDR1 ========================================================= */ + #define R_MTU6_TMDR1_MD_Pos (0UL) /*!< MD (Bit 0) */ + #define R_MTU6_TMDR1_MD_Msk (0xfUL) /*!< MD (Bitfield-Mask: 0x0f) */ + #define R_MTU6_TMDR1_BFA_Pos (4UL) /*!< BFA (Bit 4) */ + #define R_MTU6_TMDR1_BFA_Msk (0x10UL) /*!< BFA (Bitfield-Mask: 0x01) */ + #define R_MTU6_TMDR1_BFB_Pos (5UL) /*!< BFB (Bit 5) */ + #define R_MTU6_TMDR1_BFB_Msk (0x20UL) /*!< BFB (Bitfield-Mask: 0x01) */ +/* ========================================================= TIORH ========================================================= */ + #define R_MTU6_TIORH_IOA_Pos (0UL) /*!< IOA (Bit 0) */ + #define R_MTU6_TIORH_IOA_Msk (0xfUL) /*!< IOA (Bitfield-Mask: 0x0f) */ + #define R_MTU6_TIORH_IOB_Pos (4UL) /*!< IOB (Bit 4) */ + #define R_MTU6_TIORH_IOB_Msk (0xf0UL) /*!< IOB (Bitfield-Mask: 0x0f) */ +/* ========================================================= TIORL ========================================================= */ + #define R_MTU6_TIORL_IOC_Pos (0UL) /*!< IOC (Bit 0) */ + #define R_MTU6_TIORL_IOC_Msk (0xfUL) /*!< IOC (Bitfield-Mask: 0x0f) */ + #define R_MTU6_TIORL_IOD_Pos (4UL) /*!< IOD (Bit 4) */ + #define R_MTU6_TIORL_IOD_Msk (0xf0UL) /*!< IOD (Bitfield-Mask: 0x0f) */ +/* ========================================================= TIER ========================================================== */ + #define R_MTU6_TIER_TGIEA_Pos (0UL) /*!< TGIEA (Bit 0) */ + #define R_MTU6_TIER_TGIEA_Msk (0x1UL) /*!< TGIEA (Bitfield-Mask: 0x01) */ + #define R_MTU6_TIER_TGIEB_Pos (1UL) /*!< TGIEB (Bit 1) */ + #define R_MTU6_TIER_TGIEB_Msk (0x2UL) /*!< TGIEB (Bitfield-Mask: 0x01) */ + #define R_MTU6_TIER_TGIEC_Pos (2UL) /*!< TGIEC (Bit 2) */ + #define R_MTU6_TIER_TGIEC_Msk (0x4UL) /*!< TGIEC (Bitfield-Mask: 0x01) */ + #define R_MTU6_TIER_TGIED_Pos (3UL) /*!< TGIED (Bit 3) */ + #define R_MTU6_TIER_TGIED_Msk (0x8UL) /*!< TGIED (Bitfield-Mask: 0x01) */ + #define R_MTU6_TIER_TCIEV_Pos (4UL) /*!< TCIEV (Bit 4) */ + #define R_MTU6_TIER_TCIEV_Msk (0x10UL) /*!< TCIEV (Bitfield-Mask: 0x01) */ + #define R_MTU6_TIER_TTGE_Pos (7UL) /*!< TTGE (Bit 7) */ + #define R_MTU6_TIER_TTGE_Msk (0x80UL) /*!< TTGE (Bitfield-Mask: 0x01) */ +/* ========================================================= TCNT ========================================================== */ +/* ========================================================= TGRA ========================================================== */ +/* ========================================================= TGRB ========================================================== */ +/* ========================================================= TGRC ========================================================== */ +/* ========================================================= TGRD ========================================================== */ +/* ========================================================== TSR ========================================================== */ + #define R_MTU6_TSR_TGFA_Pos (0UL) /*!< TGFA (Bit 0) */ + #define R_MTU6_TSR_TGFA_Msk (0x1UL) /*!< TGFA (Bitfield-Mask: 0x01) */ + #define R_MTU6_TSR_TGFB_Pos (1UL) /*!< TGFB (Bit 1) */ + #define R_MTU6_TSR_TGFB_Msk (0x2UL) /*!< TGFB (Bitfield-Mask: 0x01) */ + #define R_MTU6_TSR_TGFC_Pos (2UL) /*!< TGFC (Bit 2) */ + #define R_MTU6_TSR_TGFC_Msk (0x4UL) /*!< TGFC (Bitfield-Mask: 0x01) */ + #define R_MTU6_TSR_TGFD_Pos (3UL) /*!< TGFD (Bit 3) */ + #define R_MTU6_TSR_TGFD_Msk (0x8UL) /*!< TGFD (Bitfield-Mask: 0x01) */ + #define R_MTU6_TSR_TCFV_Pos (4UL) /*!< TCFV (Bit 4) */ + #define R_MTU6_TSR_TCFV_Msk (0x10UL) /*!< TCFV (Bitfield-Mask: 0x01) */ + #define R_MTU6_TSR_TCFU_Pos (5UL) /*!< TCFU (Bit 5) */ + #define R_MTU6_TSR_TCFU_Msk (0x20UL) /*!< TCFU (Bitfield-Mask: 0x01) */ + #define R_MTU6_TSR_TCFD_Pos (7UL) /*!< TCFD (Bit 7) */ + #define R_MTU6_TSR_TCFD_Msk (0x80UL) /*!< TCFD (Bitfield-Mask: 0x01) */ +/* ========================================================= TBTM ========================================================== */ + #define R_MTU6_TBTM_TTSA_Pos (0UL) /*!< TTSA (Bit 0) */ + #define R_MTU6_TBTM_TTSA_Msk (0x1UL) /*!< TTSA (Bitfield-Mask: 0x01) */ + #define R_MTU6_TBTM_TTSB_Pos (1UL) /*!< TTSB (Bit 1) */ + #define R_MTU6_TBTM_TTSB_Msk (0x2UL) /*!< TTSB (Bitfield-Mask: 0x01) */ +/* ========================================================= TCR2 ========================================================== */ + #define R_MTU6_TCR2_TPSC2_Pos (0UL) /*!< TPSC2 (Bit 0) */ + #define R_MTU6_TCR2_TPSC2_Msk (0x7UL) /*!< TPSC2 (Bitfield-Mask: 0x07) */ +/* ========================================================= TSYCR ========================================================= */ + #define R_MTU6_TSYCR_CE2B_Pos (0UL) /*!< CE2B (Bit 0) */ + #define R_MTU6_TSYCR_CE2B_Msk (0x1UL) /*!< CE2B (Bitfield-Mask: 0x01) */ + #define R_MTU6_TSYCR_CE2A_Pos (1UL) /*!< CE2A (Bit 1) */ + #define R_MTU6_TSYCR_CE2A_Msk (0x2UL) /*!< CE2A (Bitfield-Mask: 0x01) */ + #define R_MTU6_TSYCR_CE1B_Pos (2UL) /*!< CE1B (Bit 2) */ + #define R_MTU6_TSYCR_CE1B_Msk (0x4UL) /*!< CE1B (Bitfield-Mask: 0x01) */ + #define R_MTU6_TSYCR_CE1A_Pos (3UL) /*!< CE1A (Bit 3) */ + #define R_MTU6_TSYCR_CE1A_Msk (0x8UL) /*!< CE1A (Bitfield-Mask: 0x01) */ + #define R_MTU6_TSYCR_CE0D_Pos (4UL) /*!< CE0D (Bit 4) */ + #define R_MTU6_TSYCR_CE0D_Msk (0x10UL) /*!< CE0D (Bitfield-Mask: 0x01) */ + #define R_MTU6_TSYCR_CE0C_Pos (5UL) /*!< CE0C (Bit 5) */ + #define R_MTU6_TSYCR_CE0C_Msk (0x20UL) /*!< CE0C (Bitfield-Mask: 0x01) */ + #define R_MTU6_TSYCR_CE0B_Pos (6UL) /*!< CE0B (Bit 6) */ + #define R_MTU6_TSYCR_CE0B_Msk (0x40UL) /*!< CE0B (Bitfield-Mask: 0x01) */ + #define R_MTU6_TSYCR_CE0A_Pos (7UL) /*!< CE0A (Bit 7) */ + #define R_MTU6_TSYCR_CE0A_Msk (0x80UL) /*!< CE0A (Bitfield-Mask: 0x01) */ +/* ========================================================= TGRE ========================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_MTU7 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================== TCR ========================================================== */ + #define R_MTU7_TCR_TPSC_Pos (0UL) /*!< TPSC (Bit 0) */ + #define R_MTU7_TCR_TPSC_Msk (0x7UL) /*!< TPSC (Bitfield-Mask: 0x07) */ + #define R_MTU7_TCR_CKEG_Pos (3UL) /*!< CKEG (Bit 3) */ + #define R_MTU7_TCR_CKEG_Msk (0x18UL) /*!< CKEG (Bitfield-Mask: 0x03) */ + #define R_MTU7_TCR_CCLR_Pos (5UL) /*!< CCLR (Bit 5) */ + #define R_MTU7_TCR_CCLR_Msk (0xe0UL) /*!< CCLR (Bitfield-Mask: 0x07) */ +/* ========================================================= TMDR1 ========================================================= */ + #define R_MTU7_TMDR1_MD_Pos (0UL) /*!< MD (Bit 0) */ + #define R_MTU7_TMDR1_MD_Msk (0xfUL) /*!< MD (Bitfield-Mask: 0x0f) */ + #define R_MTU7_TMDR1_BFA_Pos (4UL) /*!< BFA (Bit 4) */ + #define R_MTU7_TMDR1_BFA_Msk (0x10UL) /*!< BFA (Bitfield-Mask: 0x01) */ + #define R_MTU7_TMDR1_BFB_Pos (5UL) /*!< BFB (Bit 5) */ + #define R_MTU7_TMDR1_BFB_Msk (0x20UL) /*!< BFB (Bitfield-Mask: 0x01) */ +/* ========================================================= TIORH ========================================================= */ + #define R_MTU7_TIORH_IOA_Pos (0UL) /*!< IOA (Bit 0) */ + #define R_MTU7_TIORH_IOA_Msk (0xfUL) /*!< IOA (Bitfield-Mask: 0x0f) */ + #define R_MTU7_TIORH_IOB_Pos (4UL) /*!< IOB (Bit 4) */ + #define R_MTU7_TIORH_IOB_Msk (0xf0UL) /*!< IOB (Bitfield-Mask: 0x0f) */ +/* ========================================================= TIORL ========================================================= */ + #define R_MTU7_TIORL_IOC_Pos (0UL) /*!< IOC (Bit 0) */ + #define R_MTU7_TIORL_IOC_Msk (0xfUL) /*!< IOC (Bitfield-Mask: 0x0f) */ + #define R_MTU7_TIORL_IOD_Pos (4UL) /*!< IOD (Bit 4) */ + #define R_MTU7_TIORL_IOD_Msk (0xf0UL) /*!< IOD (Bitfield-Mask: 0x0f) */ +/* ========================================================= TIER ========================================================== */ + #define R_MTU7_TIER_TGIEA_Pos (0UL) /*!< TGIEA (Bit 0) */ + #define R_MTU7_TIER_TGIEA_Msk (0x1UL) /*!< TGIEA (Bitfield-Mask: 0x01) */ + #define R_MTU7_TIER_TGIEB_Pos (1UL) /*!< TGIEB (Bit 1) */ + #define R_MTU7_TIER_TGIEB_Msk (0x2UL) /*!< TGIEB (Bitfield-Mask: 0x01) */ + #define R_MTU7_TIER_TGIEC_Pos (2UL) /*!< TGIEC (Bit 2) */ + #define R_MTU7_TIER_TGIEC_Msk (0x4UL) /*!< TGIEC (Bitfield-Mask: 0x01) */ + #define R_MTU7_TIER_TGIED_Pos (3UL) /*!< TGIED (Bit 3) */ + #define R_MTU7_TIER_TGIED_Msk (0x8UL) /*!< TGIED (Bitfield-Mask: 0x01) */ + #define R_MTU7_TIER_TCIEV_Pos (4UL) /*!< TCIEV (Bit 4) */ + #define R_MTU7_TIER_TCIEV_Msk (0x10UL) /*!< TCIEV (Bitfield-Mask: 0x01) */ + #define R_MTU7_TIER_TTGE2_Pos (6UL) /*!< TTGE2 (Bit 6) */ + #define R_MTU7_TIER_TTGE2_Msk (0x40UL) /*!< TTGE2 (Bitfield-Mask: 0x01) */ + #define R_MTU7_TIER_TTGE_Pos (7UL) /*!< TTGE (Bit 7) */ + #define R_MTU7_TIER_TTGE_Msk (0x80UL) /*!< TTGE (Bitfield-Mask: 0x01) */ +/* ========================================================= TCNT ========================================================== */ +/* ========================================================= TGRA ========================================================== */ +/* ========================================================= TGRB ========================================================== */ +/* ========================================================= TGRC ========================================================== */ +/* ========================================================= TGRD ========================================================== */ +/* ========================================================== TSR ========================================================== */ + #define R_MTU7_TSR_TGFA_Pos (0UL) /*!< TGFA (Bit 0) */ + #define R_MTU7_TSR_TGFA_Msk (0x1UL) /*!< TGFA (Bitfield-Mask: 0x01) */ + #define R_MTU7_TSR_TGFB_Pos (1UL) /*!< TGFB (Bit 1) */ + #define R_MTU7_TSR_TGFB_Msk (0x2UL) /*!< TGFB (Bitfield-Mask: 0x01) */ + #define R_MTU7_TSR_TGFC_Pos (2UL) /*!< TGFC (Bit 2) */ + #define R_MTU7_TSR_TGFC_Msk (0x4UL) /*!< TGFC (Bitfield-Mask: 0x01) */ + #define R_MTU7_TSR_TGFD_Pos (3UL) /*!< TGFD (Bit 3) */ + #define R_MTU7_TSR_TGFD_Msk (0x8UL) /*!< TGFD (Bitfield-Mask: 0x01) */ + #define R_MTU7_TSR_TCFV_Pos (4UL) /*!< TCFV (Bit 4) */ + #define R_MTU7_TSR_TCFV_Msk (0x10UL) /*!< TCFV (Bitfield-Mask: 0x01) */ + #define R_MTU7_TSR_TCFU_Pos (5UL) /*!< TCFU (Bit 5) */ + #define R_MTU7_TSR_TCFU_Msk (0x20UL) /*!< TCFU (Bitfield-Mask: 0x01) */ + #define R_MTU7_TSR_TCFD_Pos (7UL) /*!< TCFD (Bit 7) */ + #define R_MTU7_TSR_TCFD_Msk (0x80UL) /*!< TCFD (Bitfield-Mask: 0x01) */ +/* ========================================================= TBTM ========================================================== */ + #define R_MTU7_TBTM_TTSA_Pos (0UL) /*!< TTSA (Bit 0) */ + #define R_MTU7_TBTM_TTSA_Msk (0x1UL) /*!< TTSA (Bitfield-Mask: 0x01) */ + #define R_MTU7_TBTM_TTSB_Pos (1UL) /*!< TTSB (Bit 1) */ + #define R_MTU7_TBTM_TTSB_Msk (0x2UL) /*!< TTSB (Bitfield-Mask: 0x01) */ +/* ========================================================= TADCR ========================================================= */ + #define R_MTU7_TADCR_ITB7VE_Pos (0UL) /*!< ITB7VE (Bit 0) */ + #define R_MTU7_TADCR_ITB7VE_Msk (0x1UL) /*!< ITB7VE (Bitfield-Mask: 0x01) */ + #define R_MTU7_TADCR_ITB6AE_Pos (1UL) /*!< ITB6AE (Bit 1) */ + #define R_MTU7_TADCR_ITB6AE_Msk (0x2UL) /*!< ITB6AE (Bitfield-Mask: 0x01) */ + #define R_MTU7_TADCR_ITA7VE_Pos (2UL) /*!< ITA7VE (Bit 2) */ + #define R_MTU7_TADCR_ITA7VE_Msk (0x4UL) /*!< ITA7VE (Bitfield-Mask: 0x01) */ + #define R_MTU7_TADCR_ITA6AE_Pos (3UL) /*!< ITA6AE (Bit 3) */ + #define R_MTU7_TADCR_ITA6AE_Msk (0x8UL) /*!< ITA6AE (Bitfield-Mask: 0x01) */ + #define R_MTU7_TADCR_DT7BE_Pos (4UL) /*!< DT7BE (Bit 4) */ + #define R_MTU7_TADCR_DT7BE_Msk (0x10UL) /*!< DT7BE (Bitfield-Mask: 0x01) */ + #define R_MTU7_TADCR_UT7BE_Pos (5UL) /*!< UT7BE (Bit 5) */ + #define R_MTU7_TADCR_UT7BE_Msk (0x20UL) /*!< UT7BE (Bitfield-Mask: 0x01) */ + #define R_MTU7_TADCR_DT7AE_Pos (6UL) /*!< DT7AE (Bit 6) */ + #define R_MTU7_TADCR_DT7AE_Msk (0x40UL) /*!< DT7AE (Bitfield-Mask: 0x01) */ + #define R_MTU7_TADCR_UT7AE_Pos (7UL) /*!< UT7AE (Bit 7) */ + #define R_MTU7_TADCR_UT7AE_Msk (0x80UL) /*!< UT7AE (Bitfield-Mask: 0x01) */ + #define R_MTU7_TADCR_BF_Pos (14UL) /*!< BF (Bit 14) */ + #define R_MTU7_TADCR_BF_Msk (0xc000UL) /*!< BF (Bitfield-Mask: 0x03) */ +/* ======================================================== TADCORA ======================================================== */ +/* ======================================================== TADCORB ======================================================== */ +/* ======================================================= TADCOBRA ======================================================== */ +/* ======================================================= TADCOBRB ======================================================== */ +/* ========================================================= TCR2 ========================================================== */ + #define R_MTU7_TCR2_TPSC2_Pos (0UL) /*!< TPSC2 (Bit 0) */ + #define R_MTU7_TCR2_TPSC2_Msk (0x7UL) /*!< TPSC2 (Bitfield-Mask: 0x07) */ +/* ========================================================= TGRE ========================================================== */ +/* ========================================================= TGRF ========================================================== */ + +/* =========================================================================================================================== */ +/* ================ R_MTU5 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= TCNTU ========================================================= */ +/* ========================================================= TGRU ========================================================== */ +/* ========================================================= TCRU ========================================================== */ + #define R_MTU5_TCRU_TPSC_Pos (0UL) /*!< TPSC (Bit 0) */ + #define R_MTU5_TCRU_TPSC_Msk (0x3UL) /*!< TPSC (Bitfield-Mask: 0x03) */ +/* ========================================================= TCR2U ========================================================= */ + #define R_MTU5_TCR2U_TPSC2_Pos (0UL) /*!< TPSC2 (Bit 0) */ + #define R_MTU5_TCR2U_TPSC2_Msk (0x7UL) /*!< TPSC2 (Bitfield-Mask: 0x07) */ + #define R_MTU5_TCR2U_CKEG_Pos (3UL) /*!< CKEG (Bit 3) */ + #define R_MTU5_TCR2U_CKEG_Msk (0x18UL) /*!< CKEG (Bitfield-Mask: 0x03) */ +/* ========================================================= TIORU ========================================================= */ + #define R_MTU5_TIORU_IOC_Pos (0UL) /*!< IOC (Bit 0) */ + #define R_MTU5_TIORU_IOC_Msk (0x1fUL) /*!< IOC (Bitfield-Mask: 0x1f) */ +/* ========================================================= TCNTV ========================================================= */ +/* ========================================================= TGRV ========================================================== */ +/* ========================================================= TCRV ========================================================== */ + #define R_MTU5_TCRV_TPSC_Pos (0UL) /*!< TPSC (Bit 0) */ + #define R_MTU5_TCRV_TPSC_Msk (0x3UL) /*!< TPSC (Bitfield-Mask: 0x03) */ +/* ========================================================= TCR2V ========================================================= */ + #define R_MTU5_TCR2V_TPSC2_Pos (0UL) /*!< TPSC2 (Bit 0) */ + #define R_MTU5_TCR2V_TPSC2_Msk (0x7UL) /*!< TPSC2 (Bitfield-Mask: 0x07) */ + #define R_MTU5_TCR2V_CKEG_Pos (3UL) /*!< CKEG (Bit 3) */ + #define R_MTU5_TCR2V_CKEG_Msk (0x18UL) /*!< CKEG (Bitfield-Mask: 0x03) */ +/* ========================================================= TIORV ========================================================= */ + #define R_MTU5_TIORV_IOC_Pos (0UL) /*!< IOC (Bit 0) */ + #define R_MTU5_TIORV_IOC_Msk (0x1fUL) /*!< IOC (Bitfield-Mask: 0x1f) */ +/* ========================================================= TCNTW ========================================================= */ +/* ========================================================= TGRW ========================================================== */ +/* ========================================================= TCRW ========================================================== */ + #define R_MTU5_TCRW_TPSC_Pos (0UL) /*!< TPSC (Bit 0) */ + #define R_MTU5_TCRW_TPSC_Msk (0x3UL) /*!< TPSC (Bitfield-Mask: 0x03) */ +/* ========================================================= TCR2W ========================================================= */ + #define R_MTU5_TCR2W_TPSC2_Pos (0UL) /*!< TPSC2 (Bit 0) */ + #define R_MTU5_TCR2W_TPSC2_Msk (0x7UL) /*!< TPSC2 (Bitfield-Mask: 0x07) */ + #define R_MTU5_TCR2W_CKEG_Pos (3UL) /*!< CKEG (Bit 3) */ + #define R_MTU5_TCR2W_CKEG_Msk (0x18UL) /*!< CKEG (Bitfield-Mask: 0x03) */ +/* ========================================================= TIORW ========================================================= */ + #define R_MTU5_TIORW_IOC_Pos (0UL) /*!< IOC (Bit 0) */ + #define R_MTU5_TIORW_IOC_Msk (0x1fUL) /*!< IOC (Bitfield-Mask: 0x1f) */ +/* ========================================================= TIER ========================================================== */ + #define R_MTU5_TIER_TGIE5W_Pos (0UL) /*!< TGIE5W (Bit 0) */ + #define R_MTU5_TIER_TGIE5W_Msk (0x1UL) /*!< TGIE5W (Bitfield-Mask: 0x01) */ + #define R_MTU5_TIER_TGIE5V_Pos (1UL) /*!< TGIE5V (Bit 1) */ + #define R_MTU5_TIER_TGIE5V_Msk (0x2UL) /*!< TGIE5V (Bitfield-Mask: 0x01) */ + #define R_MTU5_TIER_TGIE5U_Pos (2UL) /*!< TGIE5U (Bit 2) */ + #define R_MTU5_TIER_TGIE5U_Msk (0x4UL) /*!< TGIE5U (Bitfield-Mask: 0x01) */ +/* ========================================================= TSTR ========================================================== */ + #define R_MTU5_TSTR_CSTW5_Pos (0UL) /*!< CSTW5 (Bit 0) */ + #define R_MTU5_TSTR_CSTW5_Msk (0x1UL) /*!< CSTW5 (Bitfield-Mask: 0x01) */ + #define R_MTU5_TSTR_CSTV5_Pos (1UL) /*!< CSTV5 (Bit 1) */ + #define R_MTU5_TSTR_CSTV5_Msk (0x2UL) /*!< CSTV5 (Bitfield-Mask: 0x01) */ + #define R_MTU5_TSTR_CSTU5_Pos (2UL) /*!< CSTU5 (Bit 2) */ + #define R_MTU5_TSTR_CSTU5_Msk (0x4UL) /*!< CSTU5 (Bitfield-Mask: 0x01) */ +/* ====================================================== TCNTCMPCLR ======================================================= */ + #define R_MTU5_TCNTCMPCLR_CMPCLR5W_Pos (0UL) /*!< CMPCLR5W (Bit 0) */ + #define R_MTU5_TCNTCMPCLR_CMPCLR5W_Msk (0x1UL) /*!< CMPCLR5W (Bitfield-Mask: 0x01) */ + #define R_MTU5_TCNTCMPCLR_CMPCLR5V_Pos (1UL) /*!< CMPCLR5V (Bit 1) */ + #define R_MTU5_TCNTCMPCLR_CMPCLR5V_Msk (0x2UL) /*!< CMPCLR5V (Bitfield-Mask: 0x01) */ + #define R_MTU5_TCNTCMPCLR_CMPCLR5U_Pos (2UL) /*!< CMPCLR5U (Bit 2) */ + #define R_MTU5_TCNTCMPCLR_CMPCLR5U_Msk (0x4UL) /*!< CMPCLR5U (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_TFU ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== TRGSTS ========================================================= */ + #define R_TFU_TRGSTS_BSYF_Pos (0UL) /*!< BSYF (Bit 0) */ + #define R_TFU_TRGSTS_BSYF_Msk (0x1UL) /*!< BSYF (Bitfield-Mask: 0x01) */ + #define R_TFU_TRGSTS_ERRF_Pos (1UL) /*!< ERRF (Bit 1) */ + #define R_TFU_TRGSTS_ERRF_Msk (0x2UL) /*!< ERRF (Bitfield-Mask: 0x01) */ +/* ========================================================= SCDT0 ========================================================= */ + #define R_TFU_SCDT0_SCDT0_Pos (0UL) /*!< SCDT0 (Bit 0) */ + #define R_TFU_SCDT0_SCDT0_Msk (0xffffffffUL) /*!< SCDT0 (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= SCDT1 ========================================================= */ + #define R_TFU_SCDT1_SCDT1_Pos (0UL) /*!< SCDT1 (Bit 0) */ + #define R_TFU_SCDT1_SCDT1_Msk (0xffffffffUL) /*!< SCDT1 (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= ATDT0 ========================================================= */ + #define R_TFU_ATDT0_ATDT0_Pos (0UL) /*!< ATDT0 (Bit 0) */ + #define R_TFU_ATDT0_ATDT0_Msk (0xffffffffUL) /*!< ATDT0 (Bitfield-Mask: 0xffffffff) */ +/* ========================================================= ATDT1 ========================================================= */ + #define R_TFU_ATDT1_ATDT1_Pos (0UL) /*!< ATDT1 (Bit 0) */ + #define R_TFU_ATDT1_ATDT1_Msk (0xffffffffUL) /*!< ATDT1 (Bitfield-Mask: 0xffffffff) */ + +/* =========================================================================================================================== */ +/* ================ R_POE3 ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= ICSR1 ========================================================= */ + #define R_POE3_ICSR1_POE0M_Pos (0UL) /*!< POE0M (Bit 0) */ + #define R_POE3_ICSR1_POE0M_Msk (0x3UL) /*!< POE0M (Bitfield-Mask: 0x03) */ + #define R_POE3_ICSR1_PIE1_Pos (8UL) /*!< PIE1 (Bit 8) */ + #define R_POE3_ICSR1_PIE1_Msk (0x100UL) /*!< PIE1 (Bitfield-Mask: 0x01) */ + #define R_POE3_ICSR1_POE0F_Pos (12UL) /*!< POE0F (Bit 12) */ + #define R_POE3_ICSR1_POE0F_Msk (0x1000UL) /*!< POE0F (Bitfield-Mask: 0x01) */ +/* ========================================================= OCSR1 ========================================================= */ + #define R_POE3_OCSR1_OIE1_Pos (8UL) /*!< OIE1 (Bit 8) */ + #define R_POE3_OCSR1_OIE1_Msk (0x100UL) /*!< OIE1 (Bitfield-Mask: 0x01) */ + #define R_POE3_OCSR1_OCE1_Pos (9UL) /*!< OCE1 (Bit 9) */ + #define R_POE3_OCSR1_OCE1_Msk (0x200UL) /*!< OCE1 (Bitfield-Mask: 0x01) */ + #define R_POE3_OCSR1_OSF1_Pos (15UL) /*!< OSF1 (Bit 15) */ + #define R_POE3_OCSR1_OSF1_Msk (0x8000UL) /*!< OSF1 (Bitfield-Mask: 0x01) */ +/* ========================================================= ICSR2 ========================================================= */ + #define R_POE3_ICSR2_POE4M_Pos (0UL) /*!< POE4M (Bit 0) */ + #define R_POE3_ICSR2_POE4M_Msk (0x3UL) /*!< POE4M (Bitfield-Mask: 0x03) */ + #define R_POE3_ICSR2_PIE2_Pos (8UL) /*!< PIE2 (Bit 8) */ + #define R_POE3_ICSR2_PIE2_Msk (0x100UL) /*!< PIE2 (Bitfield-Mask: 0x01) */ + #define R_POE3_ICSR2_POE4F_Pos (12UL) /*!< POE4F (Bit 12) */ + #define R_POE3_ICSR2_POE4F_Msk (0x1000UL) /*!< POE4F (Bitfield-Mask: 0x01) */ +/* ========================================================= OCSR2 ========================================================= */ + #define R_POE3_OCSR2_OIE2_Pos (8UL) /*!< OIE2 (Bit 8) */ + #define R_POE3_OCSR2_OIE2_Msk (0x100UL) /*!< OIE2 (Bitfield-Mask: 0x01) */ + #define R_POE3_OCSR2_OCE2_Pos (9UL) /*!< OCE2 (Bit 9) */ + #define R_POE3_OCSR2_OCE2_Msk (0x200UL) /*!< OCE2 (Bitfield-Mask: 0x01) */ + #define R_POE3_OCSR2_OSF2_Pos (15UL) /*!< OSF2 (Bit 15) */ + #define R_POE3_OCSR2_OSF2_Msk (0x8000UL) /*!< OSF2 (Bitfield-Mask: 0x01) */ +/* ========================================================= ICSR3 ========================================================= */ + #define R_POE3_ICSR3_POE8M_Pos (0UL) /*!< POE8M (Bit 0) */ + #define R_POE3_ICSR3_POE8M_Msk (0x3UL) /*!< POE8M (Bitfield-Mask: 0x03) */ + #define R_POE3_ICSR3_PIE3_Pos (8UL) /*!< PIE3 (Bit 8) */ + #define R_POE3_ICSR3_PIE3_Msk (0x100UL) /*!< PIE3 (Bitfield-Mask: 0x01) */ + #define R_POE3_ICSR3_POE8E_Pos (9UL) /*!< POE8E (Bit 9) */ + #define R_POE3_ICSR3_POE8E_Msk (0x200UL) /*!< POE8E (Bitfield-Mask: 0x01) */ + #define R_POE3_ICSR3_POE8F_Pos (12UL) /*!< POE8F (Bit 12) */ + #define R_POE3_ICSR3_POE8F_Msk (0x1000UL) /*!< POE8F (Bitfield-Mask: 0x01) */ +/* ========================================================= SPOER ========================================================= */ + #define R_POE3_SPOER_MTUCH34HIZ_Pos (0UL) /*!< MTUCH34HIZ (Bit 0) */ + #define R_POE3_SPOER_MTUCH34HIZ_Msk (0x1UL) /*!< MTUCH34HIZ (Bitfield-Mask: 0x01) */ + #define R_POE3_SPOER_MTUCH67HIZ_Pos (1UL) /*!< MTUCH67HIZ (Bit 1) */ + #define R_POE3_SPOER_MTUCH67HIZ_Msk (0x2UL) /*!< MTUCH67HIZ (Bitfield-Mask: 0x01) */ + #define R_POE3_SPOER_MTUCH0HIZ_Pos (2UL) /*!< MTUCH0HIZ (Bit 2) */ + #define R_POE3_SPOER_MTUCH0HIZ_Msk (0x4UL) /*!< MTUCH0HIZ (Bitfield-Mask: 0x01) */ +/* ======================================================== POECR1 ========================================================= */ + #define R_POE3_POECR1_MTU0AZE_Pos (0UL) /*!< MTU0AZE (Bit 0) */ + #define R_POE3_POECR1_MTU0AZE_Msk (0x1UL) /*!< MTU0AZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR1_MTU0BZE_Pos (1UL) /*!< MTU0BZE (Bit 1) */ + #define R_POE3_POECR1_MTU0BZE_Msk (0x2UL) /*!< MTU0BZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR1_MTU0CZE_Pos (2UL) /*!< MTU0CZE (Bit 2) */ + #define R_POE3_POECR1_MTU0CZE_Msk (0x4UL) /*!< MTU0CZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR1_MTU0DZE_Pos (3UL) /*!< MTU0DZE (Bit 3) */ + #define R_POE3_POECR1_MTU0DZE_Msk (0x8UL) /*!< MTU0DZE (Bitfield-Mask: 0x01) */ +/* ======================================================== POECR2 ========================================================= */ + #define R_POE3_POECR2_MTU7BDZE_Pos (0UL) /*!< MTU7BDZE (Bit 0) */ + #define R_POE3_POECR2_MTU7BDZE_Msk (0x1UL) /*!< MTU7BDZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR2_MTU7ACZE_Pos (1UL) /*!< MTU7ACZE (Bit 1) */ + #define R_POE3_POECR2_MTU7ACZE_Msk (0x2UL) /*!< MTU7ACZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR2_MTU6BDZE_Pos (2UL) /*!< MTU6BDZE (Bit 2) */ + #define R_POE3_POECR2_MTU6BDZE_Msk (0x4UL) /*!< MTU6BDZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR2_MTU4BDZE_Pos (8UL) /*!< MTU4BDZE (Bit 8) */ + #define R_POE3_POECR2_MTU4BDZE_Msk (0x100UL) /*!< MTU4BDZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR2_MTU4ACZE_Pos (9UL) /*!< MTU4ACZE (Bit 9) */ + #define R_POE3_POECR2_MTU4ACZE_Msk (0x200UL) /*!< MTU4ACZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR2_MTU3BDZE_Pos (10UL) /*!< MTU3BDZE (Bit 10) */ + #define R_POE3_POECR2_MTU3BDZE_Msk (0x400UL) /*!< MTU3BDZE (Bitfield-Mask: 0x01) */ +/* ======================================================== POECR4 ========================================================= */ + #define R_POE3_POECR4_IC2ADDMT34ZE_Pos (2UL) /*!< IC2ADDMT34ZE (Bit 2) */ + #define R_POE3_POECR4_IC2ADDMT34ZE_Msk (0x4UL) /*!< IC2ADDMT34ZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR4_IC3ADDMT34ZE_Pos (3UL) /*!< IC3ADDMT34ZE (Bit 3) */ + #define R_POE3_POECR4_IC3ADDMT34ZE_Msk (0x8UL) /*!< IC3ADDMT34ZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR4_IC4ADDMT34ZE_Pos (4UL) /*!< IC4ADDMT34ZE (Bit 4) */ + #define R_POE3_POECR4_IC4ADDMT34ZE_Msk (0x10UL) /*!< IC4ADDMT34ZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR4_IC5ADDMT34ZE_Pos (5UL) /*!< IC5ADDMT34ZE (Bit 5) */ + #define R_POE3_POECR4_IC5ADDMT34ZE_Msk (0x20UL) /*!< IC5ADDMT34ZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR4_DE0ADDMT34ZE_Pos (6UL) /*!< DE0ADDMT34ZE (Bit 6) */ + #define R_POE3_POECR4_DE0ADDMT34ZE_Msk (0x40UL) /*!< DE0ADDMT34ZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR4_DE1ADDMT34ZE_Pos (7UL) /*!< DE1ADDMT34ZE (Bit 7) */ + #define R_POE3_POECR4_DE1ADDMT34ZE_Msk (0x80UL) /*!< DE1ADDMT34ZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR4_IC1ADDMT67ZE_Pos (9UL) /*!< IC1ADDMT67ZE (Bit 9) */ + #define R_POE3_POECR4_IC1ADDMT67ZE_Msk (0x200UL) /*!< IC1ADDMT67ZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR4_IC3ADDMT67ZE_Pos (11UL) /*!< IC3ADDMT67ZE (Bit 11) */ + #define R_POE3_POECR4_IC3ADDMT67ZE_Msk (0x800UL) /*!< IC3ADDMT67ZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR4_IC4ADDMT67ZE_Pos (12UL) /*!< IC4ADDMT67ZE (Bit 12) */ + #define R_POE3_POECR4_IC4ADDMT67ZE_Msk (0x1000UL) /*!< IC4ADDMT67ZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR4_IC5ADDMT67ZE_Pos (13UL) /*!< IC5ADDMT67ZE (Bit 13) */ + #define R_POE3_POECR4_IC5ADDMT67ZE_Msk (0x2000UL) /*!< IC5ADDMT67ZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR4_DE0ADDMT67ZE_Pos (14UL) /*!< DE0ADDMT67ZE (Bit 14) */ + #define R_POE3_POECR4_DE0ADDMT67ZE_Msk (0x4000UL) /*!< DE0ADDMT67ZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR4_DE1ADDMT67ZE_Pos (15UL) /*!< DE1ADDMT67ZE (Bit 15) */ + #define R_POE3_POECR4_DE1ADDMT67ZE_Msk (0x8000UL) /*!< DE1ADDMT67ZE (Bitfield-Mask: 0x01) */ +/* ======================================================== POECR5 ========================================================= */ + #define R_POE3_POECR5_IC1ADDMT0ZE_Pos (1UL) /*!< IC1ADDMT0ZE (Bit 1) */ + #define R_POE3_POECR5_IC1ADDMT0ZE_Msk (0x2UL) /*!< IC1ADDMT0ZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR5_IC2ADDMT0ZE_Pos (2UL) /*!< IC2ADDMT0ZE (Bit 2) */ + #define R_POE3_POECR5_IC2ADDMT0ZE_Msk (0x4UL) /*!< IC2ADDMT0ZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR5_IC4ADDMT0ZE_Pos (4UL) /*!< IC4ADDMT0ZE (Bit 4) */ + #define R_POE3_POECR5_IC4ADDMT0ZE_Msk (0x10UL) /*!< IC4ADDMT0ZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR5_IC5ADDMT0ZE_Pos (5UL) /*!< IC5ADDMT0ZE (Bit 5) */ + #define R_POE3_POECR5_IC5ADDMT0ZE_Msk (0x20UL) /*!< IC5ADDMT0ZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR5_DE0ADDMT0ZE_Pos (6UL) /*!< DE0ADDMT0ZE (Bit 6) */ + #define R_POE3_POECR5_DE0ADDMT0ZE_Msk (0x40UL) /*!< DE0ADDMT0ZE (Bitfield-Mask: 0x01) */ + #define R_POE3_POECR5_DE1ADDMT0ZE_Pos (7UL) /*!< DE1ADDMT0ZE (Bit 7) */ + #define R_POE3_POECR5_DE1ADDMT0ZE_Msk (0x80UL) /*!< DE1ADDMT0ZE (Bitfield-Mask: 0x01) */ +/* ========================================================= ICSR4 ========================================================= */ + #define R_POE3_ICSR4_POE10M_Pos (0UL) /*!< POE10M (Bit 0) */ + #define R_POE3_ICSR4_POE10M_Msk (0x3UL) /*!< POE10M (Bitfield-Mask: 0x03) */ + #define R_POE3_ICSR4_PIE4_Pos (8UL) /*!< PIE4 (Bit 8) */ + #define R_POE3_ICSR4_PIE4_Msk (0x100UL) /*!< PIE4 (Bitfield-Mask: 0x01) */ + #define R_POE3_ICSR4_POE10E_Pos (9UL) /*!< POE10E (Bit 9) */ + #define R_POE3_ICSR4_POE10E_Msk (0x200UL) /*!< POE10E (Bitfield-Mask: 0x01) */ + #define R_POE3_ICSR4_POE10F_Pos (12UL) /*!< POE10F (Bit 12) */ + #define R_POE3_ICSR4_POE10F_Msk (0x1000UL) /*!< POE10F (Bitfield-Mask: 0x01) */ +/* ========================================================= ICSR5 ========================================================= */ + #define R_POE3_ICSR5_POE11M_Pos (0UL) /*!< POE11M (Bit 0) */ + #define R_POE3_ICSR5_POE11M_Msk (0x3UL) /*!< POE11M (Bitfield-Mask: 0x03) */ + #define R_POE3_ICSR5_PIE5_Pos (8UL) /*!< PIE5 (Bit 8) */ + #define R_POE3_ICSR5_PIE5_Msk (0x100UL) /*!< PIE5 (Bitfield-Mask: 0x01) */ + #define R_POE3_ICSR5_POE11E_Pos (9UL) /*!< POE11E (Bit 9) */ + #define R_POE3_ICSR5_POE11E_Msk (0x200UL) /*!< POE11E (Bitfield-Mask: 0x01) */ + #define R_POE3_ICSR5_POE11F_Pos (12UL) /*!< POE11F (Bit 12) */ + #define R_POE3_ICSR5_POE11F_Msk (0x1000UL) /*!< POE11F (Bitfield-Mask: 0x01) */ +/* ========================================================= ALR1 ========================================================== */ + #define R_POE3_ALR1_OLSG0A_Pos (0UL) /*!< OLSG0A (Bit 0) */ + #define R_POE3_ALR1_OLSG0A_Msk (0x1UL) /*!< OLSG0A (Bitfield-Mask: 0x01) */ + #define R_POE3_ALR1_OLSG0B_Pos (1UL) /*!< OLSG0B (Bit 1) */ + #define R_POE3_ALR1_OLSG0B_Msk (0x2UL) /*!< OLSG0B (Bitfield-Mask: 0x01) */ + #define R_POE3_ALR1_OLSG1A_Pos (2UL) /*!< OLSG1A (Bit 2) */ + #define R_POE3_ALR1_OLSG1A_Msk (0x4UL) /*!< OLSG1A (Bitfield-Mask: 0x01) */ + #define R_POE3_ALR1_OLSG1B_Pos (3UL) /*!< OLSG1B (Bit 3) */ + #define R_POE3_ALR1_OLSG1B_Msk (0x8UL) /*!< OLSG1B (Bitfield-Mask: 0x01) */ + #define R_POE3_ALR1_OLSG2A_Pos (4UL) /*!< OLSG2A (Bit 4) */ + #define R_POE3_ALR1_OLSG2A_Msk (0x10UL) /*!< OLSG2A (Bitfield-Mask: 0x01) */ + #define R_POE3_ALR1_OLSG2B_Pos (5UL) /*!< OLSG2B (Bit 5) */ + #define R_POE3_ALR1_OLSG2B_Msk (0x20UL) /*!< OLSG2B (Bitfield-Mask: 0x01) */ + #define R_POE3_ALR1_OLSEN_Pos (7UL) /*!< OLSEN (Bit 7) */ + #define R_POE3_ALR1_OLSEN_Msk (0x80UL) /*!< OLSEN (Bitfield-Mask: 0x01) */ +/* ========================================================= ICSR6 ========================================================= */ + #define R_POE3_ICSR6_OSTSTE_Pos (9UL) /*!< OSTSTE (Bit 9) */ + #define R_POE3_ICSR6_OSTSTE_Msk (0x200UL) /*!< OSTSTE (Bitfield-Mask: 0x01) */ + #define R_POE3_ICSR6_OSTSTF_Pos (12UL) /*!< OSTSTF (Bit 12) */ + #define R_POE3_ICSR6_OSTSTF_Msk (0x1000UL) /*!< OSTSTF (Bitfield-Mask: 0x01) */ +/* ========================================================= ICSR7 ========================================================= */ + #define R_POE3_ICSR7_DERR0IE_Pos (6UL) /*!< DERR0IE (Bit 6) */ + #define R_POE3_ICSR7_DERR0IE_Msk (0x40UL) /*!< DERR0IE (Bitfield-Mask: 0x01) */ + #define R_POE3_ICSR7_DERR1IE_Pos (7UL) /*!< DERR1IE (Bit 7) */ + #define R_POE3_ICSR7_DERR1IE_Msk (0x80UL) /*!< DERR1IE (Bitfield-Mask: 0x01) */ + #define R_POE3_ICSR7_DERR0ST_Pos (13UL) /*!< DERR0ST (Bit 13) */ + #define R_POE3_ICSR7_DERR0ST_Msk (0x2000UL) /*!< DERR0ST (Bitfield-Mask: 0x01) */ + #define R_POE3_ICSR7_DERR1ST_Pos (14UL) /*!< DERR1ST (Bit 14) */ + #define R_POE3_ICSR7_DERR1ST_Msk (0x4000UL) /*!< DERR1ST (Bitfield-Mask: 0x01) */ +/* ======================================================== M0SELR1 ======================================================== */ + #define R_POE3_M0SELR1_M0ASEL_Pos (0UL) /*!< M0ASEL (Bit 0) */ + #define R_POE3_M0SELR1_M0ASEL_Msk (0xfUL) /*!< M0ASEL (Bitfield-Mask: 0x0f) */ + #define R_POE3_M0SELR1_M0BSEL_Pos (4UL) /*!< M0BSEL (Bit 4) */ + #define R_POE3_M0SELR1_M0BSEL_Msk (0xf0UL) /*!< M0BSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== M0SELR2 ======================================================== */ + #define R_POE3_M0SELR2_M0CSEL_Pos (0UL) /*!< M0CSEL (Bit 0) */ + #define R_POE3_M0SELR2_M0CSEL_Msk (0xfUL) /*!< M0CSEL (Bitfield-Mask: 0x0f) */ + #define R_POE3_M0SELR2_M0DSEL_Pos (4UL) /*!< M0DSEL (Bit 4) */ + #define R_POE3_M0SELR2_M0DSEL_Msk (0xf0UL) /*!< M0DSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== M3SELR ========================================================= */ + #define R_POE3_M3SELR_M3BSEL_Pos (0UL) /*!< M3BSEL (Bit 0) */ + #define R_POE3_M3SELR_M3BSEL_Msk (0xfUL) /*!< M3BSEL (Bitfield-Mask: 0x0f) */ + #define R_POE3_M3SELR_M3DSEL_Pos (4UL) /*!< M3DSEL (Bit 4) */ + #define R_POE3_M3SELR_M3DSEL_Msk (0xf0UL) /*!< M3DSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== M4SELR1 ======================================================== */ + #define R_POE3_M4SELR1_M4ASEL_Pos (0UL) /*!< M4ASEL (Bit 0) */ + #define R_POE3_M4SELR1_M4ASEL_Msk (0xfUL) /*!< M4ASEL (Bitfield-Mask: 0x0f) */ + #define R_POE3_M4SELR1_M4CSEL_Pos (4UL) /*!< M4CSEL (Bit 4) */ + #define R_POE3_M4SELR1_M4CSEL_Msk (0xf0UL) /*!< M4CSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== M4SELR2 ======================================================== */ + #define R_POE3_M4SELR2_M4BSEL_Pos (0UL) /*!< M4BSEL (Bit 0) */ + #define R_POE3_M4SELR2_M4BSEL_Msk (0xfUL) /*!< M4BSEL (Bitfield-Mask: 0x0f) */ + #define R_POE3_M4SELR2_M4DSEL_Pos (4UL) /*!< M4DSEL (Bit 4) */ + #define R_POE3_M4SELR2_M4DSEL_Msk (0xf0UL) /*!< M4DSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== M6SELR ========================================================= */ + #define R_POE3_M6SELR_M6BSEL_Pos (0UL) /*!< M6BSEL (Bit 0) */ + #define R_POE3_M6SELR_M6BSEL_Msk (0xfUL) /*!< M6BSEL (Bitfield-Mask: 0x0f) */ + #define R_POE3_M6SELR_M6DSEL_Pos (4UL) /*!< M6DSEL (Bit 4) */ + #define R_POE3_M6SELR_M6DSEL_Msk (0xf0UL) /*!< M6DSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== M7SELR1 ======================================================== */ + #define R_POE3_M7SELR1_M7ASEL_Pos (0UL) /*!< M7ASEL (Bit 0) */ + #define R_POE3_M7SELR1_M7ASEL_Msk (0xfUL) /*!< M7ASEL (Bitfield-Mask: 0x0f) */ + #define R_POE3_M7SELR1_M7CSEL_Pos (4UL) /*!< M7CSEL (Bit 4) */ + #define R_POE3_M7SELR1_M7CSEL_Msk (0xf0UL) /*!< M7CSEL (Bitfield-Mask: 0x0f) */ +/* ======================================================== M7SELR2 ======================================================== */ + #define R_POE3_M7SELR2_M7BSEL_Pos (0UL) /*!< M7BSEL (Bit 0) */ + #define R_POE3_M7SELR2_M7BSEL_Msk (0xfUL) /*!< M7BSEL (Bitfield-Mask: 0x0f) */ + #define R_POE3_M7SELR2_M7DSEL_Pos (4UL) /*!< M7DSEL (Bit 4) */ + #define R_POE3_M7SELR2_M7DSEL_Msk (0xf0UL) /*!< M7DSEL (Bitfield-Mask: 0x0f) */ + +/* =========================================================================================================================== */ +/* ================ R_POEG0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== POEG0GA ======================================================== */ + #define R_POEG0_POEG0GA_PIDF_Pos (0UL) /*!< PIDF (Bit 0) */ + #define R_POEG0_POEG0GA_PIDF_Msk (0x1UL) /*!< PIDF (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GA_IOCF_Pos (1UL) /*!< IOCF (Bit 1) */ + #define R_POEG0_POEG0GA_IOCF_Msk (0x2UL) /*!< IOCF (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GA_OSTPF_Pos (2UL) /*!< OSTPF (Bit 2) */ + #define R_POEG0_POEG0GA_OSTPF_Msk (0x4UL) /*!< OSTPF (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GA_SSF_Pos (3UL) /*!< SSF (Bit 3) */ + #define R_POEG0_POEG0GA_SSF_Msk (0x8UL) /*!< SSF (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GA_PIDE_Pos (4UL) /*!< PIDE (Bit 4) */ + #define R_POEG0_POEG0GA_PIDE_Msk (0x10UL) /*!< PIDE (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GA_IOCE_Pos (5UL) /*!< IOCE (Bit 5) */ + #define R_POEG0_POEG0GA_IOCE_Msk (0x20UL) /*!< IOCE (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GA_OSTPE_Pos (6UL) /*!< OSTPE (Bit 6) */ + #define R_POEG0_POEG0GA_OSTPE_Msk (0x40UL) /*!< OSTPE (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GA_ST_Pos (16UL) /*!< ST (Bit 16) */ + #define R_POEG0_POEG0GA_ST_Msk (0x10000UL) /*!< ST (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GA_DERR0ST_Pos (24UL) /*!< DERR0ST (Bit 24) */ + #define R_POEG0_POEG0GA_DERR0ST_Msk (0x1000000UL) /*!< DERR0ST (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GA_DERR1ST_Pos (25UL) /*!< DERR1ST (Bit 25) */ + #define R_POEG0_POEG0GA_DERR1ST_Msk (0x2000000UL) /*!< DERR1ST (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GA_DERR0E_Pos (26UL) /*!< DERR0E (Bit 26) */ + #define R_POEG0_POEG0GA_DERR0E_Msk (0x4000000UL) /*!< DERR0E (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GA_DERR1E_Pos (27UL) /*!< DERR1E (Bit 27) */ + #define R_POEG0_POEG0GA_DERR1E_Msk (0x8000000UL) /*!< DERR1E (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GA_INV_Pos (28UL) /*!< INV (Bit 28) */ + #define R_POEG0_POEG0GA_INV_Msk (0x10000000UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GA_NFEN_Pos (29UL) /*!< NFEN (Bit 29) */ + #define R_POEG0_POEG0GA_NFEN_Msk (0x20000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GA_NFCS_Pos (30UL) /*!< NFCS (Bit 30) */ + #define R_POEG0_POEG0GA_NFCS_Msk (0xc0000000UL) /*!< NFCS (Bitfield-Mask: 0x03) */ +/* ======================================================== POEG0GB ======================================================== */ + #define R_POEG0_POEG0GB_PIDF_Pos (0UL) /*!< PIDF (Bit 0) */ + #define R_POEG0_POEG0GB_PIDF_Msk (0x1UL) /*!< PIDF (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GB_IOCF_Pos (1UL) /*!< IOCF (Bit 1) */ + #define R_POEG0_POEG0GB_IOCF_Msk (0x2UL) /*!< IOCF (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GB_OSTPF_Pos (2UL) /*!< OSTPF (Bit 2) */ + #define R_POEG0_POEG0GB_OSTPF_Msk (0x4UL) /*!< OSTPF (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GB_SSF_Pos (3UL) /*!< SSF (Bit 3) */ + #define R_POEG0_POEG0GB_SSF_Msk (0x8UL) /*!< SSF (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GB_PIDE_Pos (4UL) /*!< PIDE (Bit 4) */ + #define R_POEG0_POEG0GB_PIDE_Msk (0x10UL) /*!< PIDE (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GB_IOCE_Pos (5UL) /*!< IOCE (Bit 5) */ + #define R_POEG0_POEG0GB_IOCE_Msk (0x20UL) /*!< IOCE (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GB_OSTPE_Pos (6UL) /*!< OSTPE (Bit 6) */ + #define R_POEG0_POEG0GB_OSTPE_Msk (0x40UL) /*!< OSTPE (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GB_ST_Pos (16UL) /*!< ST (Bit 16) */ + #define R_POEG0_POEG0GB_ST_Msk (0x10000UL) /*!< ST (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GB_DERR0ST_Pos (24UL) /*!< DERR0ST (Bit 24) */ + #define R_POEG0_POEG0GB_DERR0ST_Msk (0x1000000UL) /*!< DERR0ST (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GB_DERR1ST_Pos (25UL) /*!< DERR1ST (Bit 25) */ + #define R_POEG0_POEG0GB_DERR1ST_Msk (0x2000000UL) /*!< DERR1ST (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GB_DERR0E_Pos (26UL) /*!< DERR0E (Bit 26) */ + #define R_POEG0_POEG0GB_DERR0E_Msk (0x4000000UL) /*!< DERR0E (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GB_DERR1E_Pos (27UL) /*!< DERR1E (Bit 27) */ + #define R_POEG0_POEG0GB_DERR1E_Msk (0x8000000UL) /*!< DERR1E (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GB_INV_Pos (28UL) /*!< INV (Bit 28) */ + #define R_POEG0_POEG0GB_INV_Msk (0x10000000UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GB_NFEN_Pos (29UL) /*!< NFEN (Bit 29) */ + #define R_POEG0_POEG0GB_NFEN_Msk (0x20000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GB_NFCS_Pos (30UL) /*!< NFCS (Bit 30) */ + #define R_POEG0_POEG0GB_NFCS_Msk (0xc0000000UL) /*!< NFCS (Bitfield-Mask: 0x03) */ +/* ======================================================== POEG0GC ======================================================== */ + #define R_POEG0_POEG0GC_PIDF_Pos (0UL) /*!< PIDF (Bit 0) */ + #define R_POEG0_POEG0GC_PIDF_Msk (0x1UL) /*!< PIDF (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GC_IOCF_Pos (1UL) /*!< IOCF (Bit 1) */ + #define R_POEG0_POEG0GC_IOCF_Msk (0x2UL) /*!< IOCF (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GC_OSTPF_Pos (2UL) /*!< OSTPF (Bit 2) */ + #define R_POEG0_POEG0GC_OSTPF_Msk (0x4UL) /*!< OSTPF (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GC_SSF_Pos (3UL) /*!< SSF (Bit 3) */ + #define R_POEG0_POEG0GC_SSF_Msk (0x8UL) /*!< SSF (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GC_PIDE_Pos (4UL) /*!< PIDE (Bit 4) */ + #define R_POEG0_POEG0GC_PIDE_Msk (0x10UL) /*!< PIDE (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GC_IOCE_Pos (5UL) /*!< IOCE (Bit 5) */ + #define R_POEG0_POEG0GC_IOCE_Msk (0x20UL) /*!< IOCE (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GC_OSTPE_Pos (6UL) /*!< OSTPE (Bit 6) */ + #define R_POEG0_POEG0GC_OSTPE_Msk (0x40UL) /*!< OSTPE (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GC_ST_Pos (16UL) /*!< ST (Bit 16) */ + #define R_POEG0_POEG0GC_ST_Msk (0x10000UL) /*!< ST (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GC_DERR0ST_Pos (24UL) /*!< DERR0ST (Bit 24) */ + #define R_POEG0_POEG0GC_DERR0ST_Msk (0x1000000UL) /*!< DERR0ST (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GC_DERR1ST_Pos (25UL) /*!< DERR1ST (Bit 25) */ + #define R_POEG0_POEG0GC_DERR1ST_Msk (0x2000000UL) /*!< DERR1ST (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GC_DERR0E_Pos (26UL) /*!< DERR0E (Bit 26) */ + #define R_POEG0_POEG0GC_DERR0E_Msk (0x4000000UL) /*!< DERR0E (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GC_DERR1E_Pos (27UL) /*!< DERR1E (Bit 27) */ + #define R_POEG0_POEG0GC_DERR1E_Msk (0x8000000UL) /*!< DERR1E (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GC_INV_Pos (28UL) /*!< INV (Bit 28) */ + #define R_POEG0_POEG0GC_INV_Msk (0x10000000UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GC_NFEN_Pos (29UL) /*!< NFEN (Bit 29) */ + #define R_POEG0_POEG0GC_NFEN_Msk (0x20000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GC_NFCS_Pos (30UL) /*!< NFCS (Bit 30) */ + #define R_POEG0_POEG0GC_NFCS_Msk (0xc0000000UL) /*!< NFCS (Bitfield-Mask: 0x03) */ +/* ======================================================== POEG0GD ======================================================== */ + #define R_POEG0_POEG0GD_PIDF_Pos (0UL) /*!< PIDF (Bit 0) */ + #define R_POEG0_POEG0GD_PIDF_Msk (0x1UL) /*!< PIDF (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GD_IOCF_Pos (1UL) /*!< IOCF (Bit 1) */ + #define R_POEG0_POEG0GD_IOCF_Msk (0x2UL) /*!< IOCF (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GD_OSTPF_Pos (2UL) /*!< OSTPF (Bit 2) */ + #define R_POEG0_POEG0GD_OSTPF_Msk (0x4UL) /*!< OSTPF (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GD_SSF_Pos (3UL) /*!< SSF (Bit 3) */ + #define R_POEG0_POEG0GD_SSF_Msk (0x8UL) /*!< SSF (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GD_PIDE_Pos (4UL) /*!< PIDE (Bit 4) */ + #define R_POEG0_POEG0GD_PIDE_Msk (0x10UL) /*!< PIDE (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GD_IOCE_Pos (5UL) /*!< IOCE (Bit 5) */ + #define R_POEG0_POEG0GD_IOCE_Msk (0x20UL) /*!< IOCE (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GD_OSTPE_Pos (6UL) /*!< OSTPE (Bit 6) */ + #define R_POEG0_POEG0GD_OSTPE_Msk (0x40UL) /*!< OSTPE (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GD_ST_Pos (16UL) /*!< ST (Bit 16) */ + #define R_POEG0_POEG0GD_ST_Msk (0x10000UL) /*!< ST (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GD_DERR0ST_Pos (24UL) /*!< DERR0ST (Bit 24) */ + #define R_POEG0_POEG0GD_DERR0ST_Msk (0x1000000UL) /*!< DERR0ST (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GD_DERR1ST_Pos (25UL) /*!< DERR1ST (Bit 25) */ + #define R_POEG0_POEG0GD_DERR1ST_Msk (0x2000000UL) /*!< DERR1ST (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GD_DERR0E_Pos (26UL) /*!< DERR0E (Bit 26) */ + #define R_POEG0_POEG0GD_DERR0E_Msk (0x4000000UL) /*!< DERR0E (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GD_DERR1E_Pos (27UL) /*!< DERR1E (Bit 27) */ + #define R_POEG0_POEG0GD_DERR1E_Msk (0x8000000UL) /*!< DERR1E (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GD_INV_Pos (28UL) /*!< INV (Bit 28) */ + #define R_POEG0_POEG0GD_INV_Msk (0x10000000UL) /*!< INV (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GD_NFEN_Pos (29UL) /*!< NFEN (Bit 29) */ + #define R_POEG0_POEG0GD_NFEN_Msk (0x20000000UL) /*!< NFEN (Bitfield-Mask: 0x01) */ + #define R_POEG0_POEG0GD_NFCS_Pos (30UL) /*!< NFCS (Bit 30) */ + #define R_POEG0_POEG0GD_NFCS_Msk (0xc0000000UL) /*!< NFCS (Bitfield-Mask: 0x03) */ + +/* =========================================================================================================================== */ +/* ================ R_DSMIF0 ================ */ +/* =========================================================================================================================== */ + +/* ======================================================== DSSEICR ======================================================== */ + #define R_DSMIF0_DSSEICR_ISEL_Pos (0UL) /*!< ISEL (Bit 0) */ + #define R_DSMIF0_DSSEICR_ISEL_Msk (0x1UL) /*!< ISEL (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSSEICR_ISEH_Pos (1UL) /*!< ISEH (Bit 1) */ + #define R_DSMIF0_DSSEICR_ISEH_Msk (0x2UL) /*!< ISEH (Bitfield-Mask: 0x01) */ +/* ======================================================== DSSECSR ======================================================== */ + #define R_DSMIF0_DSSECSR_SEDM_Pos (0UL) /*!< SEDM (Bit 0) */ + #define R_DSMIF0_DSSECSR_SEDM_Msk (0x7UL) /*!< SEDM (Bitfield-Mask: 0x07) */ +/* ======================================================== DSSELTR ======================================================== */ + #define R_DSMIF0_DSSELTR_SCMPTBL_Pos (0UL) /*!< SCMPTBL (Bit 0) */ + #define R_DSMIF0_DSSELTR_SCMPTBL_Msk (0x3ffffUL) /*!< SCMPTBL (Bitfield-Mask: 0x3ffff) */ +/* ======================================================== DSSEHTR ======================================================== */ + #define R_DSMIF0_DSSEHTR_SCMPTBH_Pos (0UL) /*!< SCMPTBH (Bit 0) */ + #define R_DSMIF0_DSSEHTR_SCMPTBH_Msk (0x3ffffUL) /*!< SCMPTBH (Bitfield-Mask: 0x3ffff) */ +/* ======================================================== DSSECR ========================================================= */ + #define R_DSMIF0_DSSECR_SEEL_Pos (0UL) /*!< SEEL (Bit 0) */ + #define R_DSMIF0_DSSECR_SEEL_Msk (0x1UL) /*!< SEEL (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSSECR_SEEH_Pos (1UL) /*!< SEEH (Bit 1) */ + #define R_DSMIF0_DSSECR_SEEH_Msk (0x2UL) /*!< SEEH (Bitfield-Mask: 0x01) */ +/* ======================================================== DSSECDR ======================================================== */ + #define R_DSMIF0_DSSECDR_SECDR_Pos (0UL) /*!< SECDR (Bit 0) */ + #define R_DSMIF0_DSSECDR_SECDR_Msk (0xffffUL) /*!< SECDR (Bitfield-Mask: 0xffff) */ +/* ======================================================= DSCSTRTR ======================================================== */ + #define R_DSMIF0_DSCSTRTR_STRTRG0_Pos (0UL) /*!< STRTRG0 (Bit 0) */ + #define R_DSMIF0_DSCSTRTR_STRTRG0_Msk (0x1UL) /*!< STRTRG0 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCSTRTR_STRTRG1_Pos (1UL) /*!< STRTRG1 (Bit 1) */ + #define R_DSMIF0_DSCSTRTR_STRTRG1_Msk (0x2UL) /*!< STRTRG1 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCSTRTR_STRTRG2_Pos (2UL) /*!< STRTRG2 (Bit 2) */ + #define R_DSMIF0_DSCSTRTR_STRTRG2_Msk (0x4UL) /*!< STRTRG2 (Bitfield-Mask: 0x01) */ +/* ======================================================= DSCSTPTR ======================================================== */ + #define R_DSMIF0_DSCSTPTR_STPTRG0_Pos (0UL) /*!< STPTRG0 (Bit 0) */ + #define R_DSMIF0_DSCSTPTR_STPTRG0_Msk (0x1UL) /*!< STPTRG0 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCSTPTR_STPTRG1_Pos (1UL) /*!< STPTRG1 (Bit 1) */ + #define R_DSMIF0_DSCSTPTR_STPTRG1_Msk (0x2UL) /*!< STPTRG1 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCSTPTR_STPTRG2_Pos (2UL) /*!< STPTRG2 (Bit 2) */ + #define R_DSMIF0_DSCSTPTR_STPTRG2_Msk (0x4UL) /*!< STPTRG2 (Bitfield-Mask: 0x01) */ +/* ======================================================== DSCESR ========================================================= */ + #define R_DSMIF0_DSCESR_OCFL0_Pos (0UL) /*!< OCFL0 (Bit 0) */ + #define R_DSMIF0_DSCESR_OCFL0_Msk (0x1UL) /*!< OCFL0 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESR_OCFL1_Pos (1UL) /*!< OCFL1 (Bit 1) */ + #define R_DSMIF0_DSCESR_OCFL1_Msk (0x2UL) /*!< OCFL1 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESR_OCFL2_Pos (2UL) /*!< OCFL2 (Bit 2) */ + #define R_DSMIF0_DSCESR_OCFL2_Msk (0x4UL) /*!< OCFL2 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESR_OCFH0_Pos (4UL) /*!< OCFH0 (Bit 4) */ + #define R_DSMIF0_DSCESR_OCFH0_Msk (0x10UL) /*!< OCFH0 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESR_OCFH1_Pos (5UL) /*!< OCFH1 (Bit 5) */ + #define R_DSMIF0_DSCESR_OCFH1_Msk (0x20UL) /*!< OCFH1 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESR_OCFH2_Pos (6UL) /*!< OCFH2 (Bit 6) */ + #define R_DSMIF0_DSCESR_OCFH2_Msk (0x40UL) /*!< OCFH2 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESR_SCF0_Pos (8UL) /*!< SCF0 (Bit 8) */ + #define R_DSMIF0_DSCESR_SCF0_Msk (0x100UL) /*!< SCF0 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESR_SCF1_Pos (9UL) /*!< SCF1 (Bit 9) */ + #define R_DSMIF0_DSCESR_SCF1_Msk (0x200UL) /*!< SCF1 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESR_SCF2_Pos (10UL) /*!< SCF2 (Bit 10) */ + #define R_DSMIF0_DSCESR_SCF2_Msk (0x400UL) /*!< SCF2 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESR_SUMERRL_Pos (16UL) /*!< SUMERRL (Bit 16) */ + #define R_DSMIF0_DSCESR_SUMERRL_Msk (0x10000UL) /*!< SUMERRL (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESR_SUMERRH_Pos (17UL) /*!< SUMERRH (Bit 17) */ + #define R_DSMIF0_DSCESR_SUMERRH_Msk (0x20000UL) /*!< SUMERRH (Bitfield-Mask: 0x01) */ +/* ========================================================= DSCSR ========================================================= */ + #define R_DSMIF0_DSCSR_DUF0_Pos (0UL) /*!< DUF0 (Bit 0) */ + #define R_DSMIF0_DSCSR_DUF0_Msk (0x1UL) /*!< DUF0 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCSR_DUF1_Pos (1UL) /*!< DUF1 (Bit 1) */ + #define R_DSMIF0_DSCSR_DUF1_Msk (0x2UL) /*!< DUF1 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCSR_DUF2_Pos (2UL) /*!< DUF2 (Bit 2) */ + #define R_DSMIF0_DSCSR_DUF2_Msk (0x4UL) /*!< DUF2 (Bitfield-Mask: 0x01) */ +/* ======================================================== DSCSSR ========================================================= */ + #define R_DSMIF0_DSCSSR_CHSTATE0_Pos (0UL) /*!< CHSTATE0 (Bit 0) */ + #define R_DSMIF0_DSCSSR_CHSTATE0_Msk (0x1UL) /*!< CHSTATE0 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCSSR_CHSTATE1_Pos (4UL) /*!< CHSTATE1 (Bit 4) */ + #define R_DSMIF0_DSCSSR_CHSTATE1_Msk (0x10UL) /*!< CHSTATE1 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCSSR_CHSTATE2_Pos (8UL) /*!< CHSTATE2 (Bit 8) */ + #define R_DSMIF0_DSCSSR_CHSTATE2_Msk (0x100UL) /*!< CHSTATE2 (Bitfield-Mask: 0x01) */ +/* ======================================================== DSCESCR ======================================================== */ + #define R_DSMIF0_DSCESCR_CLROCFL0_Pos (0UL) /*!< CLROCFL0 (Bit 0) */ + #define R_DSMIF0_DSCESCR_CLROCFL0_Msk (0x1UL) /*!< CLROCFL0 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESCR_CLROCFL1_Pos (1UL) /*!< CLROCFL1 (Bit 1) */ + #define R_DSMIF0_DSCESCR_CLROCFL1_Msk (0x2UL) /*!< CLROCFL1 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESCR_CLROCFL2_Pos (2UL) /*!< CLROCFL2 (Bit 2) */ + #define R_DSMIF0_DSCESCR_CLROCFL2_Msk (0x4UL) /*!< CLROCFL2 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESCR_CLROCFH0_Pos (4UL) /*!< CLROCFH0 (Bit 4) */ + #define R_DSMIF0_DSCESCR_CLROCFH0_Msk (0x10UL) /*!< CLROCFH0 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESCR_CLROCFH1_Pos (5UL) /*!< CLROCFH1 (Bit 5) */ + #define R_DSMIF0_DSCESCR_CLROCFH1_Msk (0x20UL) /*!< CLROCFH1 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESCR_CLROCFH2_Pos (6UL) /*!< CLROCFH2 (Bit 6) */ + #define R_DSMIF0_DSCESCR_CLROCFH2_Msk (0x40UL) /*!< CLROCFH2 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESCR_CLRSCF0_Pos (8UL) /*!< CLRSCF0 (Bit 8) */ + #define R_DSMIF0_DSCESCR_CLRSCF0_Msk (0x100UL) /*!< CLRSCF0 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESCR_CLRSCF1_Pos (9UL) /*!< CLRSCF1 (Bit 9) */ + #define R_DSMIF0_DSCESCR_CLRSCF1_Msk (0x200UL) /*!< CLRSCF1 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESCR_CLRSCF2_Pos (10UL) /*!< CLRSCF2 (Bit 10) */ + #define R_DSMIF0_DSCESCR_CLRSCF2_Msk (0x400UL) /*!< CLRSCF2 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESCR_CLRSUMERRL_Pos (16UL) /*!< CLRSUMERRL (Bit 16) */ + #define R_DSMIF0_DSCESCR_CLRSUMERRL_Msk (0x10000UL) /*!< CLRSUMERRL (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCESCR_CLRSUMERRH_Pos (17UL) /*!< CLRSUMERRH (Bit 17) */ + #define R_DSMIF0_DSCESCR_CLRSUMERRH_Msk (0x20000UL) /*!< CLRSUMERRH (Bitfield-Mask: 0x01) */ +/* ======================================================== DSCSCR ========================================================= */ + #define R_DSMIF0_DSCSCR_CLRDUF0_Pos (0UL) /*!< CLRDUF0 (Bit 0) */ + #define R_DSMIF0_DSCSCR_CLRDUF0_Msk (0x1UL) /*!< CLRDUF0 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCSCR_CLRDUF1_Pos (1UL) /*!< CLRDUF1 (Bit 1) */ + #define R_DSMIF0_DSCSCR_CLRDUF1_Msk (0x2UL) /*!< CLRDUF1 (Bitfield-Mask: 0x01) */ + #define R_DSMIF0_DSCSCR_CLRDUF2_Pos (2UL) /*!< CLRDUF2 (Bit 2) */ + #define R_DSMIF0_DSCSCR_CLRDUF2_Msk (0x4UL) /*!< CLRDUF2 (Bitfield-Mask: 0x01) */ + +/* =========================================================================================================================== */ +/* ================ R_GSC ================ */ +/* =========================================================================================================================== */ + +/* ========================================================= CNTCR ========================================================= */ + #define R_GSC_CNTCR_EN_Pos (0UL) /*!< EN (Bit 0) */ + #define R_GSC_CNTCR_EN_Msk (0x1UL) /*!< EN (Bitfield-Mask: 0x01) */ + #define R_GSC_CNTCR_HDBG_Pos (1UL) /*!< HDBG (Bit 1) */ + #define R_GSC_CNTCR_HDBG_Msk (0x2UL) /*!< HDBG (Bitfield-Mask: 0x01) */ +/* ========================================================= CNTSR ========================================================= */ + #define R_GSC_CNTSR_DBGH_Pos (1UL) /*!< DBGH (Bit 1) */ + #define R_GSC_CNTSR_DBGH_Msk (0x2UL) /*!< DBGH (Bitfield-Mask: 0x01) */ +/* ======================================================== CNTCVL ========================================================= */ + #define R_GSC_CNTCVL_CNTCVL_L_32_Pos (0UL) /*!< CNTCVL_L_32 (Bit 0) */ + #define R_GSC_CNTCVL_CNTCVL_L_32_Msk (0xffffffffUL) /*!< CNTCVL_L_32 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CNTCVU ========================================================= */ + #define R_GSC_CNTCVU_CNTCVU_U_32_Pos (0UL) /*!< CNTCVU_U_32 (Bit 0) */ + #define R_GSC_CNTCVU_CNTCVU_U_32_Msk (0xffffffffUL) /*!< CNTCVU_U_32 (Bitfield-Mask: 0xffffffff) */ +/* ======================================================== CNTFID0 ======================================================== */ + #define R_GSC_CNTFID0_FREQ_Pos (0UL) /*!< FREQ (Bit 0) */ + #define R_GSC_CNTFID0_FREQ_Msk (0xffffffffUL) /*!< FREQ (Bitfield-Mask: 0xffffffff) */ + +/** @} */ /* End of group PosMask_peripherals */ + + #ifdef __cplusplus +} + #endif + +#endif /* R9A07G084_H */ + +/** @} */ /* End of group R9A07G084 */ + +/** @} */ /* End of group Renesas Electronics Corporation */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h new file mode 100644 index 00000000000..5e369f1b4ee --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/renesas.h @@ -0,0 +1,131 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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 Electronics Corporation + * @{ + */ + +/** @addtogroup RZN2 + * @{ + */ + +#ifndef RZN2_H + #define RZN2_H + + #ifdef __cplusplus +extern "C" { + #endif + +/* Define compiler macros for CPU architecture, used in CMSIS 5. */ + #if defined(__ICCARM__) + #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 + +/* Alternative 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 + #elif defined(__ARM8R__) && (__CORE__ == __ARM8R__) + #define __ARM_ARCH_8R__ 1 + #else + #error "Unknown target." + #endif + #endif + #endif + +/** @addtogroup Configuration_of_CMSIS + * @{ + */ + +/* =========================================================================================================================== */ +/* ================ Interrupt Number Definition ================ */ +/* =========================================================================================================================== */ +/* IRQn_Type is generated as part of an FSP project. It can be found in vector_data.h. */ + +/** @} */ /* End of group Configuration_of_CMSIS */ + +/* =========================================================================================================================== */ +/* ================ Processor and Core Peripheral Section ================ */ +/* =========================================================================================================================== */ + + #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_8R__ + #define RENESAS_CORTEX_R52 + #else + #warning Unsupported Architecture + #endif + + #if BSP_MCU_GROUP_RZN2L + #include "R9A07G084.h" + #else + #warning Unsupported MCU + #endif + + #ifdef __cplusplus +} + #endif + +#endif /* RZN2_H */ + +/** @} */ /* End of group RZN2 */ + +/** @} */ /* End of group Renesas Electronics Corporation */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h new file mode 100644 index 00000000000..2fafe6c0f68 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Include/system.h @@ -0,0 +1,58 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/startup_core.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/startup_core.c new file mode 100644 index 00000000000..b891026f34c --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/startup_core.c @@ -0,0 +1,373 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_HACTLR_BIT_L (0xB783) /* HACTLR EL1 access enable(0b1011 0111 1000 0011) */ +#define BSP_HCR_HCD_DISABLE (0x20000000) /* HCR.HCD = 1 : HVC disable */ +#define BSP_MODE_MASK (0x1F) /* Bit mask for mode bits in CPSR */ +#define BSP_SVC_MODE (0x13) /* Supervisor mode */ + +#if defined(__ICCARM__) + #define BSP_IRQ_STACK_END_ADDRESS __section_end(".irq_stack") + #define BSP_FIQ_STACK_END_ADDRESS __section_end(".fiq_stack") + #define BSP_SVC_STACK_END_ADDRESS __section_end(".svc_stack") + #define BSP_ABORT_STACK_END_ADDRESS __section_end(".abt_stack") + #define BSP_UNDEFINED_STACK_END_ADDRESS __section_end(".und_stack") + #define BSP_SYSTEM_STACK_END_ADDRESS __section_end(".sys_stack") + +#elif defined(__GNUC__) + #define BSP_IRQ_STACK_END_ADDRESS &__IrqStackLimit + #define BSP_FIQ_STACK_END_ADDRESS &__FiqStackLimit + #define BSP_SVC_STACK_END_ADDRESS &__SvcStackLimit + #define BSP_ABORT_STACK_END_ADDRESS &__AbtStackLimit + #define BSP_UNDEFINED_STACK_END_ADDRESS &__UndStackLimit + #define BSP_SYSTEM_STACK_END_ADDRESS &__SysStackLimit + +#endif + +#define BSP_IMP_BTCMREGIONR_MASK_L (0x1FFC) /* Masked out BASEADDRESS and ENABLEELx bits(L) */ +#define BSP_IMP_BTCMREGIONR_ENABLEEL_L (0x0003) /* Set base address and enable EL2, EL1, EL0 access(L) */ +#define BSP_IMP_BTCMREGIONR_ENABLEEL_H (0x0010) /* Set base address and enable EL2, EL1, EL0 access(H) */ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ +#if defined(__ICCARM__) + #pragma section=".irq_stack" + #pragma section=".fiq_stack" + #pragma section=".svc_stack" + #pragma section=".abt_stack" + #pragma section=".und_stack" + #pragma section=".sys_stack" + +#elif defined(__GNUC__) +extern void * __IrqStackLimit; +extern void * __FiqStackLimit; +extern void * __SvcStackLimit; +extern void * __AbtStackLimit; +extern void * __UndStackLimit; +extern void * __SysStackLimit; + +#endif + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ +#if __FPU_USED +extern void bsp_fpu_advancedsimd_init(void); + +#endif + +extern void bsp_slavetcm_enable(void); + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ +int32_t main(void); + +BSP_TARGET_ARM BSP_ATTRIBUTE_STACKLESS void system_init(void) BSP_PLACE_IN_SECTION(".loader_text"); +BSP_TARGET_ARM BSP_ATTRIBUTE_STACKLESS void stack_init(void) ; +BSP_TARGET_ARM void fpu_slavetcm_init(void); + +BSP_TARGET_ARM BSP_ATTRIBUTE_STACKLESS void __Vectors(void) BSP_PLACE_IN_SECTION(".intvec"); +__WEAK BSP_TARGET_ARM BSP_ATTRIBUTE_STACKLESS void IRQ_Handler(void); +__WEAK BSP_TARGET_ARM BSP_ATTRIBUTE_STACKLESS void Reset_Handler(void) BSP_PLACE_IN_SECTION(".reset_handler"); + +void Default_Handler(void); + +/* Stacks */ +BSP_DONT_REMOVE static uint8_t g_fiq_stack[BSP_CFG_STACK_FIQ_BYTES] BSP_ALIGN_VARIABLE(BSP_STACK_ALIGNMENT) +BSP_PLACE_IN_SECTION(BSP_SECTION_FIQ_STACK); +BSP_DONT_REMOVE static uint8_t g_irq_stack[BSP_CFG_STACK_IRQ_BYTES] BSP_ALIGN_VARIABLE(BSP_STACK_ALIGNMENT) +BSP_PLACE_IN_SECTION(BSP_SECTION_IRQ_STACK); +BSP_DONT_REMOVE static uint8_t g_abt_stack[BSP_CFG_STACK_ABT_BYTES] BSP_ALIGN_VARIABLE(BSP_STACK_ALIGNMENT) +BSP_PLACE_IN_SECTION(BSP_SECTION_ABT_STACK); +BSP_DONT_REMOVE static uint8_t g_und_stack[BSP_CFG_STACK_UND_BYTES] BSP_ALIGN_VARIABLE(BSP_STACK_ALIGNMENT) +BSP_PLACE_IN_SECTION(BSP_SECTION_UND_STACK); +BSP_DONT_REMOVE static uint8_t g_sys_stack[BSP_CFG_STACK_SYS_BYTES] BSP_ALIGN_VARIABLE(BSP_STACK_ALIGNMENT) +BSP_PLACE_IN_SECTION(BSP_SECTION_SYS_STACK); +BSP_DONT_REMOVE static uint8_t g_svc_stack[BSP_CFG_STACK_SVC_BYTES] BSP_ALIGN_VARIABLE(BSP_STACK_ALIGNMENT) +BSP_PLACE_IN_SECTION(BSP_SECTION_SVC_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 + +#if defined(__GNUC__) +BSP_DONT_REMOVE static const void * g_bsp_dummy BSP_PLACE_IN_SECTION(".dummy"); + + #if BSP_CFG_RAM_EXECUTION +BSP_DONT_REMOVE static const void * g_bsp_loader_dummy BSP_PLACE_IN_SECTION(".loader_dummy"); + + #endif +#endif + +BSP_TARGET_ARM BSP_ATTRIBUTE_STACKLESS void __Vectors (void) +{ + __asm volatile ( + " LDR pc,=Reset_Handler \n" + " LDR pc,=Undefined_Handler \n" + " LDR pc,=SVC_Handler \n" + " LDR pc,=Prefetch_Handler \n" + " LDR pc,=Abort_Handler \n" + " LDR pc,=Reserved_Handler \n" + " LDR pc,=IRQ_Handler \n" + " LDR pc,=FIQ_Handler \n" + ::: "memory"); +} + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * 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); +} + +/*******************************************************************************************************************//** + * After boot processing, LSI starts executing here. + **********************************************************************************************************************/ +BSP_TARGET_ARM BSP_ATTRIBUTE_STACKLESS void system_init (void) +{ +#if 1 + __asm volatile ( + " mov r0, #0 \n" + " movw r1, #0xf07f \n" + " movt r1, #0x2fa \n" + "software_loop: \n" + " adds r0, #1 \n" + " cmp r0, r1 \n" + " bne software_loop \n" + ::: "memory"); +#endif + __asm volatile ( + "set_hactlr: \n" + " MOVW r0, %[bsp_hactlr_bit_l] \n" /* Set HACTLR bits(L) */ + " MOVT r0, #0 \n" + " MCR p15, #4, r0, c1, c0, #1 \n" /* Write r0 to HACTLR */ + ::[bsp_hactlr_bit_l] "i" (BSP_HACTLR_BIT_L) : "memory"); + + __asm volatile ( + "set_hcr: \n" + " MRC p15, #4, r1, c1, c1, #0 \n" /* Read Hyp Configuration Register */ + " ORR r1, r1, %[bsp_hcr_hcd_disable] \n" /* HVC instruction disable */ + " MCR p15, #4, r1, c1, c1, #0 \n" /* Write Hyp Configuration Register */ + ::[bsp_hcr_hcd_disable] "i" (BSP_HCR_HCD_DISABLE) : "memory"); + + __asm volatile ( + "set_vbar: \n" + " LDR r0, =__Vectors \n" + " MCR p15, #0, r0, c12, c0, #0 \n" /* Write r0 to VBAR */ + ::: "memory"); + + __asm volatile ( + "LLPP_access_enable: \n" + + /* Enable PERIPHPREGIONR (LLPP) */ + " MRC p15, #0, r1, c15, c0,#0 \n" /* PERIPHPREGIONR */ + " ORR r1, r1, #(0x1 << 1) \n" /* Enable PERIPHPREGIONR EL2 */ + " ORR r1, r1, #(0x1) \n" /* Enable PERIPHPREGIONR EL1 and EL0 */ + " DSB \n" /* Ensuring memory access complete */ + " MCR p15, #0, r1, c15, c0,#0 \n" /* PERIPHREGIONR */ + " ISB \n" /* Ensuring Context-changing */ + ::: "memory"); + + __asm volatile ( + "cpsr_save: \n" + " MRS r0, CPSR \n" /* Original PSR value */ + " BIC r0, r0, %[bsp_mode_mask] \n" /* Clear the mode bits */ + " ORR r0, r0, %[bsp_svc_mode] \n" /* Set SVC mode bits */ + " MSR SPSR_hyp, r0 \n" + ::[bsp_mode_mask] "i" (BSP_MODE_MASK), [bsp_svc_mode] "i" (BSP_SVC_MODE) : "memory"); + + __asm volatile ( + "exception_return: \n" + " LDR r1, =stack_init \n" + " MSR ELR_hyp, r1 \n" + " ERET \n" /* Branch to stack_init and enter EL1 */ + ::: "memory"); +} + +/** @} (end addtogroup BSP_MCU) */ + +#if defined(__ICCARM__) + #define BSP_SYSTEMINIT_B_INSTRUCTION SystemInit(); + + #define WEAK_REF_ATTRIBUTE + + #pragma weak Undefined_Handler = Default_Handler + #pragma weak SVC_Handler = Default_Handler + #pragma weak Prefetch_Handler = Default_Handler + #pragma weak Abort_Handler = Default_Handler + #pragma weak Reserved_Handler = Default_Handler + #pragma weak FIQ_Handler = Default_Handler +#elif defined(__GNUC__) + + #define BSP_SYSTEMINIT_B_INSTRUCTION __asm volatile ("B SystemInit"); + + #define WEAK_REF_ATTRIBUTE __attribute__((weak, alias("Default_Handler"))) +#endif + +void Undefined_Handler(void) WEAK_REF_ATTRIBUTE; +void SVC_Handler(void) WEAK_REF_ATTRIBUTE; +void Prefetch_Handler(void) WEAK_REF_ATTRIBUTE; +void Abort_Handler(void) WEAK_REF_ATTRIBUTE; +void Reserved_Handler(void) WEAK_REF_ATTRIBUTE; +void FIQ_Handler(void) WEAK_REF_ATTRIBUTE; + +/*******************************************************************************************************************//** + * After system_init, EL1 settings start here. + **********************************************************************************************************************/ +BSP_TARGET_ARM BSP_ATTRIBUTE_STACKLESS void stack_init (void) +{ + __asm volatile ( + "stack_initialization: \n" + + /* Stack setting for EL1 */ + " CPS #17 \n" /* FIQ mode */ + " MOV sp, %[bsp_fiq_stack_end_address] \n" + " CPS #18 \n" /* IRQ mode */ + " MOV sp, %[bsp_irq_stack_end_address] \n" + " CPS #23 \n" /* Abort mode */ + " MOV sp, %[bsp_abort_stack_end_address] \n" + " CPS #27 \n" /* Undefined mode */ + " MOV sp, %[bsp_undefined_stack_end_address] \n" + " CPS #31 \n" /* System mode */ + " MOV sp, %[bsp_system_stack_end_address] \n" + " CPS #19 \n" /* SVC mode */ + " MOV sp, %[bsp_svc_stack_end_address] \n" + " B fpu_slavetcm_init \n" /* Branch to fpu_slavetcm_init */ + ::[bsp_fiq_stack_end_address] "r" (BSP_FIQ_STACK_END_ADDRESS), + [bsp_irq_stack_end_address] "r" (BSP_IRQ_STACK_END_ADDRESS), + [bsp_abort_stack_end_address] "r" (BSP_ABORT_STACK_END_ADDRESS), + [bsp_undefined_stack_end_address] "r" (BSP_UNDEFINED_STACK_END_ADDRESS), + [bsp_system_stack_end_address] "r" (BSP_SYSTEM_STACK_END_ADDRESS), + [bsp_svc_stack_end_address] "r" (BSP_SVC_STACK_END_ADDRESS) : "memory"); +} + +/*******************************************************************************************************************//** + * Enable FPU and enable privileged/unprivileged access for TCM. + **********************************************************************************************************************/ +BSP_TARGET_ARM void fpu_slavetcm_init (void) +{ +#if __FPU_USED + + /* Initialize FPU and Advanced SIMD setting */ + bsp_fpu_advancedsimd_init(); +#endif + /* Enable SLAVEPCTLR TCM access lvl slaves */ + bsp_slavetcm_enable(); + + BSP_SYSTEMINIT_B_INSTRUCTION +} + +__WEAK BSP_TARGET_ARM BSP_ATTRIBUTE_STACKLESS void IRQ_Handler (void) +{ + __asm volatile ( + "SUB lr, lr, #4 \n" + "SRSDB sp!, #31 \n" /* Store LR_irq and SPSR_irq in system mode stack. */ + "CPS #31 \n" /* Switch to system mode. */ + "PUSH {r0-r3, r12} \n" /* Store other AAPCS registers. */ + +#if __FPU_USED + "VMRS r0, FPSCR \n" + "STMDB sp!, {r0} \n" /* Store FPSCR register. */ + "SUB sp, sp, #4 \n" + "VPUSH {d0-d15} \n" /* Store FPU registers. */ + "VPUSH {d16-d31} \n" /* Store FPU registers. */ +#endif + + "MRC p15, #0, r3, c12, c12, #2 \n" /* Read HPPIR1 to r3. */ + "MRC p15, #0, r0, c12, c12, #0 \n" /* Read IAR1 to r0. */ + + "PUSH {r0} \n" /* Store the INTID. */ + "MOV r1, sp \n" /* Make alignment for stack. */ + "AND r1, r1, #4 \n" + "SUB sp, sp, r1 \n" + "PUSH {r1, lr} \n" + + "LDR r1,=bsp_common_interrupt_handler \n" + "BLX r1 \n" /* Jump to bsp_common_interrupt_handler, First argument (r0) = ICC_IAR1 read value. */ + + "POP {r1, lr} \n" + "ADD sp, sp, r1 \n" + "POP {r0} \n" /* Restore the INTID to r0. */ + + "MCR p15, #0, r0, c12, c12, #1 \n" /* Write INTID to EOIR. */ + +#if __FPU_USED + "VPOP {d16-d31} \n" /* Restore FPU registers. */ + "VPOP {d0-d15} \n" /* Restore FPU registers. */ + "ADD sp, sp, #4 \n" + "POP {r0} \n" + "VMSR FPSCR, r0 \n" /* Restore FPSCR register. */ +#endif + + "POP {r0-r3, r12} \n" /* Restore registers. */ + "RFEIA sp! \n" /* Return from system mode tack using RFE. */ + ::: "memory"); +} + +__WEAK BSP_TARGET_ARM BSP_ATTRIBUTE_STACKLESS void Reset_Handler (void) +{ + /* Enable access to BTCM */ + __asm volatile ( + "set_IMP_BTCMREGIONR: \n" + " MRC p15, #0, r0, c9, c1, #1 \n" /* Read IMP_BTCMREGIONR to r0 */ + " MOVW r1, %[bsp_imp_btcmregionr_mask_l] \n" + " MOVT r1, #0 \n" + " AND r0, r0, r1 \n" /* Masked out BASEADDRESS and ENABLEELx bits */ + " MOVW r1, %[bsp_imp_btcmregionr_enableel_l] \n" + " MOVT r1, %[bsp_imp_btcmregionr_enableel_h] \n" + " ORR r0, r0, r1 \n" /* Set base address and enable EL2, EL1, EL0 access */ + " DSB \n" /* Ensuring memory access complete */ + + " MCR p15, #0, r0, c9, c1, #1 \n" /* Write r0 to IMP_BTCMREGIONR */ + " ISB \n" /* Ensuring Context-changing */ + ::[bsp_imp_btcmregionr_mask_l] "i" (BSP_IMP_BTCMREGIONR_MASK_L), + [bsp_imp_btcmregionr_enableel_l] "i" (BSP_IMP_BTCMREGIONR_ENABLEEL_L), + [bsp_imp_btcmregionr_enableel_h] "i" (BSP_IMP_BTCMREGIONR_ENABLEEL_H) : "memory"); + + /* Branch to system_init */ + __asm volatile ("B system_init"); +} diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/system_core.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/system_core.c new file mode 100644 index 00000000000..cc47895c3f8 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/system_core.c @@ -0,0 +1,617 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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 +#include "bsp_api.h" + +#include "../../../../../mcu/all/bsp_clocks.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define BSP_CPCAR_CP_ENABLE (0x00F00000) +#define BSP_FPEXC_EN_ENABLE (0x40000000) +#define BSP_TCM_ALL_ACCESS_ENABLE (0x00000003) + +#define BSP_PRIORITY_MASK BSP_FEATURE_BSP_IRQ_PRIORITY_MASK /* Priority mask value for GIC */ +#define BSP_ENABLE_GROUP_INT (0x00000001) /* Enable Group1 interrupt value */ +#define BSP_ICC_CTLR (0x00000001) /* ICC_BPR0 is used for Group1 interrupt */ + +#define BSP_BG_REGION_ENABLE (0x00020000) /* Enable EL1 background region */ +#define BSP_BG_REGION_DISABLE (0x00000000) /* Disable EL1 background region */ +#define BSP_SCTLR_BR_BIT (BSP_CFG_SCTLR_BR_BIT) /* Enable EL1 background region */ + +#define BSP_ICACHE_ENABLE (0x00001000) +#define BSP_ICACHE_DISABLE (0x00000000) + +#define BSP_DATACACHE_ENABLE (0x00000004) +#define BSP_DATACACHE_DISABLE (0x00000000) + +#define BSP_WRITE_THROUGH_TRANSIENT (0x0003) /* Normal-Memory: Write-Through transient */ +#define BSP_NON_CACHEABLE (0x0004) /* Normal-Memory: Non-Cacheable */ +#define BSP_WRITE_BACK_TRANSIENT (0x0007) /* Normal-Memory: Write-Back transient */ +#define BSP_WRITE_NON_THROUGH (0x000B) /* Normal-Memory: Write-Through non-transient. */ +#define BSP_WRITE_BACK_NON_TRANSIENT (0x000F) /* Normal-Memory: Write-Back non-transient. */ + +#define BSP_TYPE_NORMAL_MEMORY (0) +#define BSP_TYPE_DEVICE_MEMORY (1) + +#define BSP_READ_ALLOCATE (0xFFFF) /* Read allocate (bit1=1, "1" mask except bit1) */ +#define BSP_READ_NOT_ALLOCATE (0xFFFD) /* Read not allocate (bit1=0, "1" mask except bit1) */ +#define BSP_WRITE_ALLOCATE (0xFFFF) /* Write allocate (bit0=1, "1" mask except bit0) */ +#define BSP_WRITE_NOT_ALLOCATE (0xFFFE) /* Write not allocate (bit0=0, "1" mask except bit0) */ + +#define BSP_DEVICE_NGNRNE (0x0000) /* Device-nGnRnE memory */ +#define BSP_DEVICE_NGNRE (0x0004) /* Device-nGnRE memory */ +#define BSP_DEVICE_NGRE (0x0008) /* Device-nGRE memory */ +#define BSP_DEVICE_GRE (0x000C) /* Device-GRE memory */ + +#define BSP_OFFSET_ATTR0_INNER (0) +#define BSP_OFFSET_ATTR0_OUTER (4) +#define BSP_OFFSET_ATTR0_DEVICE (0) +#define BSP_OFFSET_ATTR1_INNER (8) +#define BSP_OFFSET_ATTR1_OUTER (12) +#define BSP_OFFSET_ATTR1_DEVICE (8) + +#define BSP_OFFSET_ATTR2_INNER (16) +#define BSP_OFFSET_ATTR2_OUTER (20) +#define BSP_OFFSET_ATTR2_DEVICE (16) +#define BSP_OFFSET_ATTR3_INNER (24) +#define BSP_OFFSET_ATTR3_OUTER (28) +#define BSP_OFFSET_ATTR3_DEVICE (24) + +#define BSP_OFFSET_ATTR4_INNER (0) +#define BSP_OFFSET_ATTR4_OUTER (4) +#define BSP_OFFSET_ATTR4_DEVICE (0) +#define BSP_OFFSET_ATTR5_INNER (8) +#define BSP_OFFSET_ATTR5_OUTER (12) +#define BSP_OFFSET_ATTR5_DEVICE (8) + +#define BSP_OFFSET_ATTR6_INNER (16) +#define BSP_OFFSET_ATTR6_OUTER (20) +#define BSP_OFFSET_ATTR6_DEVICE (16) +#define BSP_OFFSET_ATTR7_INNER (24) +#define BSP_OFFSET_ATTR7_OUTER (28) +#define BSP_OFFSET_ATTR7_DEVICE (24) + +#define BSP_NON_SHAREABLE (0 << 3) +#define BSP_OUTER_SHAREABLE (2 << 3) +#define BSP_INNER_SHAREABLE (3 << 3) +#define BSP_EL1RW_EL0NO (0 << 1) +#define BSP_EL1RW_EL0RW (1 << 1) +#define BSP_EL1RO_EL0NO (2 << 1) +#define BSP_EL1RO_EL0RO (3 << 1) +#define BSP_EXECUTE_ENABLE (0) +#define BSP_EXECUTE_NEVER (1) +#define BSP_REGION_DISABLE (0) +#define BSP_REGION_ENABLE (1) +#define BSP_ATTRINDEX0 (0 << 1) +#define BSP_ATTRINDEX1 (1 << 1) +#define BSP_ATTRINDEX2 (2 << 1) +#define BSP_ATTRINDEX3 (3 << 1) +#define BSP_ATTRINDEX4 (4 << 1) +#define BSP_ATTRINDEX5 (5 << 1) +#define BSP_ATTRINDEX6 (6 << 1) +#define BSP_ATTRINDEX7 (7 << 1) + +/* Attr0 */ +#if BSP_CFG_CPU_MPU_ATTR0_TYPE == BSP_TYPE_DEVICE_MEMORY /* MEMORY TYPE == DEVICE */ + #define BSP_CFG_CPU_MPU_ATTR0 (BSP_CFG_CPU_MPU_ATTR0_DEVICE_TYPE << BSP_OFFSET_ATTR0_DEVICE) +#else /* MEMORY TYPE == NORMAL MEMORY */ + #define BSP_CFG_CPU_MPU_ATTR0 (((BSP_CFG_CPU_MPU_ATTR0_INNER & \ + (BSP_CFG_CPU_MPU_ATTR0_INNER_READ) & \ + (BSP_CFG_CPU_MPU_ATTR0_INNER_WRITE)) << BSP_OFFSET_ATTR0_INNER) | \ + ((BSP_CFG_CPU_MPU_ATTR0_OUTER & \ + (BSP_CFG_CPU_MPU_ATTR0_OUTER_READ) & \ + (BSP_CFG_CPU_MPU_ATTR0_OUTER_WRITE)) << BSP_OFFSET_ATTR0_OUTER)) +#endif /* BSP_CFG_CPU_MPU_ATTR0_TYPE */ + +/* Attr1 */ +#if BSP_CFG_CPU_MPU_ATTR1_TYPE == BSP_TYPE_DEVICE_MEMORY /* MEMORY TYPE == DEVICE */ + #define BSP_CFG_CPU_MPU_ATTR1 (BSP_CFG_CPU_MPU_ATTR1_DEVICE_TYPE << BSP_OFFSET_ATTR1_DEVICE) +#else /* MEMORY TYPE == NORMAL MEMORY */ + #define BSP_CFG_CPU_MPU_ATTR1 (((BSP_CFG_CPU_MPU_ATTR1_INNER & \ + (BSP_CFG_CPU_MPU_ATTR1_INNER_READ) & \ + (BSP_CFG_CPU_MPU_ATTR1_INNER_WRITE)) << BSP_OFFSET_ATTR1_INNER) | \ + ((BSP_CFG_CPU_MPU_ATTR1_OUTER & \ + (BSP_CFG_CPU_MPU_ATTR1_OUTER_READ) & \ + (BSP_CFG_CPU_MPU_ATTR1_OUTER_WRITE)) << BSP_OFFSET_ATTR1_OUTER)) +#endif /* BSP_CFG_CPU_MPU_ATTR1_TYPE */ + +/* Attr2 */ +#if BSP_CFG_CPU_MPU_ATTR2_TYPE == BSP_TYPE_DEVICE_MEMORY /* MEMORY TYPE == DEVICE */ + #define BSP_CFG_CPU_MPU_ATTR2 (BSP_CFG_CPU_MPU_ATTR2_DEVICE_TYPE << BSP_OFFSET_ATTR2_DEVICE) +#else /* MEMORY TYPE == NORMAL MEMORY */ + #define BSP_CFG_CPU_MPU_ATTR2 (((BSP_CFG_CPU_MPU_ATTR2_INNER & \ + (BSP_CFG_CPU_MPU_ATTR2_INNER_READ) & \ + (BSP_CFG_CPU_MPU_ATTR2_INNER_WRITE)) << BSP_OFFSET_ATTR2_INNER) | \ + ((BSP_CFG_CPU_MPU_ATTR2_OUTER & \ + (BSP_CFG_CPU_MPU_ATTR2_OUTER_READ) & \ + (BSP_CFG_CPU_MPU_ATTR2_OUTER_WRITE)) << BSP_OFFSET_ATTR2_OUTER)) +#endif /* BSP_CFG_CPU_MPU_ATTR2_TYPE */ + +/* Attr3 */ +#if BSP_CFG_CPU_MPU_ATTR3_TYPE == BSP_TYPE_DEVICE_MEMORY /* MEMORY TYPE == DEVICE */ + #define BSP_CFG_CPU_MPU_ATTR3 (BSP_CFG_CPU_MPU_ATTR3_DEVICE_TYPE << BSP_OFFSET_ATTR3_DEVICE) +#else /* MEMORY TYPE == NORMAL MEMORY */ + #define BSP_CFG_CPU_MPU_ATTR3 (((BSP_CFG_CPU_MPU_ATTR3_INNER & \ + (BSP_CFG_CPU_MPU_ATTR3_INNER_READ) & \ + (BSP_CFG_CPU_MPU_ATTR3_INNER_WRITE)) << BSP_OFFSET_ATTR3_INNER) | \ + ((BSP_CFG_CPU_MPU_ATTR3_OUTER & \ + (BSP_CFG_CPU_MPU_ATTR3_OUTER_READ) & \ + (BSP_CFG_CPU_MPU_ATTR3_OUTER_WRITE)) << BSP_OFFSET_ATTR3_OUTER)) +#endif /* BSP_CFG_CPU_MPU_ATTR3_TYPE */ + +/* Attr4 */ +#if BSP_CFG_CPU_MPU_ATTR4_TYPE == BSP_TYPE_DEVICE_MEMORY /* MEMORY TYPE == DEVICE */ + #define BSP_CFG_CPU_MPU_ATTR4 (BSP_CFG_CPU_MPU_ATTR4_DEVICE_TYPE << BSP_OFFSET_ATTR4_DEVICE) +#else /* MEMORY TYPE == NORMAL MEMORY */ + #define BSP_CFG_CPU_MPU_ATTR4 (((BSP_CFG_CPU_MPU_ATTR4_INNER & \ + (BSP_CFG_CPU_MPU_ATTR4_INNER_READ) & \ + (BSP_CFG_CPU_MPU_ATTR4_INNER_WRITE)) << BSP_OFFSET_ATTR4_INNER) | \ + ((BSP_CFG_CPU_MPU_ATTR4_OUTER & \ + (BSP_CFG_CPU_MPU_ATTR4_OUTER_READ) & \ + (BSP_CFG_CPU_MPU_ATTR4_OUTER_WRITE)) << BSP_OFFSET_ATTR4_OUTER)) +#endif /* BSP_CFG_CPU_MPU_ATTR4_TYPE */ + +/* Attr5 */ +#if BSP_CFG_CPU_MPU_ATTR5_TYPE == BSP_TYPE_DEVICE_MEMORY /* MEMORY TYPE == DEVICE */ + #define BSP_CFG_CPU_MPU_ATTR5 (BSP_CFG_CPU_MPU_ATTR5_DEVICE_TYPE << BSP_OFFSET_ATTR5_DEVICE) +#else /* MEMORY TYPE == NORMAL MEMORY */ + #define BSP_CFG_CPU_MPU_ATTR5 (((BSP_CFG_CPU_MPU_ATTR5_INNER & \ + (BSP_CFG_CPU_MPU_ATTR5_INNER_READ) & \ + (BSP_CFG_CPU_MPU_ATTR5_INNER_WRITE)) << BSP_OFFSET_ATTR5_INNER) | \ + ((BSP_CFG_CPU_MPU_ATTR5_OUTER & \ + (BSP_CFG_CPU_MPU_ATTR5_OUTER_READ) & \ + (BSP_CFG_CPU_MPU_ATTR5_OUTER_WRITE)) << BSP_OFFSET_ATTR5_OUTER)) +#endif /* BSP_CFG_CPU_MPU_ATTR5_TYPE */ + +/* Attr6 */ +#if BSP_CFG_CPU_MPU_ATTR6_TYPE == BSP_TYPE_DEVICE_MEMORY /* MEMORY TYPE == DEVICE */ + #define BSP_CFG_CPU_MPU_ATTR6 (BSP_CFG_CPU_MPU_ATTR6_DEVICE_TYPE << BSP_OFFSET_ATTR6_DEVICE) +#else /* MEMORY TYPE == NORMAL MEMORY */ + #define BSP_CFG_CPU_MPU_ATTR6 (((BSP_CFG_CPU_MPU_ATTR6_INNER & \ + (BSP_CFG_CPU_MPU_ATTR6_INNER_READ) & \ + (BSP_CFG_CPU_MPU_ATTR6_INNER_WRITE)) << BSP_OFFSET_ATTR6_INNER) | \ + ((BSP_CFG_CPU_MPU_ATTR6_OUTER & \ + (BSP_CFG_CPU_MPU_ATTR6_OUTER_READ) & \ + (BSP_CFG_CPU_MPU_ATTR6_OUTER_WRITE)) << BSP_OFFSET_ATTR6_OUTER)) +#endif /* BSP_CFG_CPU_MPU_ATTR6_TYPE */ + +/* Attr7 */ +#if BSP_CFG_CPU_MPU_ATTR7_TYPE == BSP_TYPE_DEVICE_MEMORY /* MEMORY TYPE == DEVICE */ + #define BSP_CFG_CPU_MPU_ATTR7 (BSP_CFG_CPU_MPU_ATTR7_DEVICE_TYPE << BSP_OFFSET_ATTR7_DEVICE) +#else /* MEMORY TYPE == NORMAL MEMORY */ + #define BSP_CFG_CPU_MPU_ATTR7 (((BSP_CFG_CPU_MPU_ATTR7_INNER & \ + (BSP_CFG_CPU_MPU_ATTR7_INNER_READ) & \ + (BSP_CFG_CPU_MPU_ATTR7_INNER_WRITE)) << BSP_OFFSET_ATTR7_INNER) | \ + ((BSP_CFG_CPU_MPU_ATTR7_OUTER & \ + (BSP_CFG_CPU_MPU_ATTR7_OUTER_READ) & \ + (BSP_CFG_CPU_MPU_ATTR7_OUTER_WRITE)) << BSP_OFFSET_ATTR7_OUTER)) +#endif /* BSP_CFG_CPU_MPU_ATTR7_TYPE */ + +#define ATTR_3_2_1_0 (BSP_CFG_CPU_MPU_ATTR3 | BSP_CFG_CPU_MPU_ATTR2 | BSP_CFG_CPU_MPU_ATTR1 | \ + BSP_CFG_CPU_MPU_ATTR0) +#define ATTR_7_6_5_4 (BSP_CFG_CPU_MPU_ATTR7 | BSP_CFG_CPU_MPU_ATTR6 | BSP_CFG_CPU_MPU_ATTR5 | \ + BSP_CFG_CPU_MPU_ATTR4) + +#if (BSP_TYPE_NORMAL_MEMORY == BSP_CFG_CPU_MPU_ATTR0_TYPE) + #if ((BSP_WRITE_THROUGH_TRANSIENT == BSP_CFG_CPU_MPU_ATTR0_INNER) && \ + (BSP_READ_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR0_INNER_READ) && \ + (BSP_WRITE_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR0_INNER_WRITE)) + #error "If you select Write-Through transient, set either Read or Write to allocate." + #endif + #if ((BSP_WRITE_THROUGH_TRANSIENT == BSP_CFG_CPU_MPU_ATTR0_OUTER) && \ + (BSP_READ_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR0_OUTER_READ) && \ + (BSP_WRITE_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR0_OUTER_WRITE)) + #error "If you select Write-Through transient, set either Read or Write to allocate." + #endif +#endif + +#if (BSP_TYPE_NORMAL_MEMORY == BSP_CFG_CPU_MPU_ATTR1_TYPE) + #if ((BSP_WRITE_THROUGH_TRANSIENT == BSP_CFG_CPU_MPU_ATTR1_INNER) && \ + (BSP_READ_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR1_INNER_READ) && \ + (BSP_WRITE_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR1_INNER_WRITE)) + #error "If you select Write-Through transient, set either Read or Write to allocate." + #endif + #if ((BSP_WRITE_THROUGH_TRANSIENT == BSP_CFG_CPU_MPU_ATTR1_OUTER) && \ + (BSP_READ_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR1_OUTER_READ) && \ + (BSP_WRITE_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR1_OUTER_WRITE)) + #error "If you select Write-Through transient, set either Read or Write to allocate." + #endif +#endif + +#if (BSP_TYPE_NORMAL_MEMORY == BSP_CFG_CPU_MPU_ATTR2_TYPE) + #if ((BSP_WRITE_THROUGH_TRANSIENT == BSP_CFG_CPU_MPU_ATTR2_INNER) && \ + (BSP_READ_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR2_INNER_READ) && \ + (BSP_WRITE_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR2_INNER_WRITE)) + #error "If you select Write-Through transient, set either Read or Write to allocate." + #endif + #if ((BSP_WRITE_THROUGH_TRANSIENT == BSP_CFG_CPU_MPU_ATTR2_OUTER) && \ + (BSP_READ_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR2_OUTER_READ) && \ + (BSP_WRITE_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR2_OUTER_WRITE)) + #error "If you select Write-Through transient, set either Read or Write to allocate." + #endif +#endif + +#if (BSP_TYPE_NORMAL_MEMORY == BSP_CFG_CPU_MPU_ATTR3_TYPE) + #if ((BSP_WRITE_THROUGH_TRANSIENT == BSP_CFG_CPU_MPU_ATTR3_INNER) && \ + (BSP_READ_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR3_INNER_READ) && \ + (BSP_WRITE_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR3_INNER_WRITE)) + #error "If you select Write-Through transient, set either Read or Write to allocate." + #endif + #if ((BSP_WRITE_THROUGH_TRANSIENT == BSP_CFG_CPU_MPU_ATTR3_OUTER) && \ + (BSP_READ_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR3_OUTER_READ) && \ + (BSP_WRITE_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR3_OUTER_WRITE)) + #error "If you select Write-Through transient, set either Read or Write to allocate." + #endif +#endif + +#if (BSP_TYPE_NORMAL_MEMORY == BSP_CFG_CPU_MPU_ATTR4_TYPE) + #if ((BSP_WRITE_THROUGH_TRANSIENT == BSP_CFG_CPU_MPU_ATTR4_INNER) && \ + (BSP_READ_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR4_INNER_READ) && \ + (BSP_WRITE_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR4_INNER_WRITE)) + #error "If you select Write-Through transient, set either Read or Write to allocate." + #endif + #if ((BSP_WRITE_THROUGH_TRANSIENT == BSP_CFG_CPU_MPU_ATTR4_OUTER) && \ + (BSP_READ_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR4_OUTER_READ) && \ + (BSP_WRITE_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR4_OUTER_WRITE)) + #error "If you select Write-Through transient, set either Read or Write to allocate." + #endif +#endif + +#if (BSP_TYPE_NORMAL_MEMORY == BSP_CFG_CPU_MPU_ATTR5_TYPE) + #if ((BSP_WRITE_THROUGH_TRANSIENT == BSP_CFG_CPU_MPU_ATTR5_INNER) && \ + (BSP_READ_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR5_INNER_READ) && \ + (BSP_WRITE_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR5_INNER_WRITE)) + #error "If you select Write-Through transient, set either Read or Write to allocate." + #endif + #if ((BSP_WRITE_THROUGH_TRANSIENT == BSP_CFG_CPU_MPU_ATTR5_OUTER) && \ + (BSP_READ_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR5_OUTER_READ) && \ + (BSP_WRITE_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR5_OUTER_WRITE)) + #error "If you select Write-Through transient, set either Read or Write to allocate." + #endif +#endif + +#if (BSP_TYPE_NORMAL_MEMORY == BSP_CFG_CPU_MPU_ATTR6_TYPE) + #if ((BSP_WRITE_THROUGH_TRANSIENT == BSP_CFG_CPU_MPU_ATTR6_INNER) && \ + (BSP_READ_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR6_INNER_READ) && \ + (BSP_WRITE_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR6_INNER_WRITE)) + #error "If you select Write-Through transient, set either Read or Write to allocate." + #endif + #if ((BSP_WRITE_THROUGH_TRANSIENT == BSP_CFG_CPU_MPU_ATTR6_OUTER) && \ + (BSP_READ_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR6_OUTER_READ) && \ + (BSP_WRITE_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR6_OUTER_WRITE)) + #error "If you select Write-Through transient, set either Read or Write to allocate." + #endif +#endif + +#if (BSP_TYPE_NORMAL_MEMORY == BSP_CFG_CPU_MPU_ATTR7_TYPE) + #if ((BSP_WRITE_THROUGH_TRANSIENT == BSP_CFG_CPU_MPU_ATTR7_INNER) && \ + (BSP_READ_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR7_INNER_READ) && \ + (BSP_WRITE_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR7_INNER_WRITE)) + #error "If you select Write-Through transient, set either Read or Write to allocate." + #endif + #if ((BSP_WRITE_THROUGH_TRANSIENT == BSP_CFG_CPU_MPU_ATTR7_OUTER) && \ + (BSP_READ_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR7_OUTER_READ) && \ + (BSP_WRITE_NOT_ALLOCATE == BSP_CFG_CPU_MPU_ATTR7_OUTER_WRITE)) + #error "If you select Write-Through transient, set either Read or Write to allocate." + #endif +#endif + +/* Region template */ +#define EL1_MPU_REGION_COUNT (24) + +#define EL1_MPU_REGIONXX_BASE(n) ((BSP_CFG_EL1_MPU_REGION ## n ## _BASE & 0xFFFFFFC0) | \ + BSP_CFG_EL1_MPU_REGION ## n ## _SH | \ + BSP_CFG_EL1_MPU_REGION ## n ## _AP | \ + BSP_CFG_EL1_MPU_REGION ## n ## _XN) + +#define EL1_MPU_REGIONXX_LIMIT(n) ((BSP_CFG_EL1_MPU_REGION ## n ## _LIMIT & 0xFFFFFFC0) | \ + BSP_CFG_EL1_MPU_REGION ## n ## _ATTRINDEX | \ + BSP_CFG_EL1_MPU_REGION ## n ## _ENABLE) + +/* region 0 */ +#define EL1_MPU_REGION00_BASE EL1_MPU_REGIONXX_BASE(00) +#define EL1_MPU_REGION00_LIMIT EL1_MPU_REGIONXX_LIMIT(00) + +/* region 1 */ +#define EL1_MPU_REGION01_BASE EL1_MPU_REGIONXX_BASE(01) +#define EL1_MPU_REGION01_LIMIT EL1_MPU_REGIONXX_LIMIT(01) + +/* region 2 */ +#define EL1_MPU_REGION02_BASE EL1_MPU_REGIONXX_BASE(02) +#define EL1_MPU_REGION02_LIMIT EL1_MPU_REGIONXX_LIMIT(02) + +/* region 3 */ +#define EL1_MPU_REGION03_BASE EL1_MPU_REGIONXX_BASE(03) +#define EL1_MPU_REGION03_LIMIT EL1_MPU_REGIONXX_LIMIT(03) + +/* region 4 */ +#define EL1_MPU_REGION04_BASE EL1_MPU_REGIONXX_BASE(04) +#define EL1_MPU_REGION04_LIMIT EL1_MPU_REGIONXX_LIMIT(04) + +/* region 5 */ +#define EL1_MPU_REGION05_BASE EL1_MPU_REGIONXX_BASE(05) +#define EL1_MPU_REGION05_LIMIT EL1_MPU_REGIONXX_LIMIT(05) + +/* region 6 */ +#define EL1_MPU_REGION06_BASE EL1_MPU_REGIONXX_BASE(06) +#define EL1_MPU_REGION06_LIMIT EL1_MPU_REGIONXX_LIMIT(06) + +/* region 7 */ +#define EL1_MPU_REGION07_BASE EL1_MPU_REGIONXX_BASE(07) +#define EL1_MPU_REGION07_LIMIT EL1_MPU_REGIONXX_LIMIT(07) + +/* region 8 */ +#define EL1_MPU_REGION08_BASE EL1_MPU_REGIONXX_BASE(08) +#define EL1_MPU_REGION08_LIMIT EL1_MPU_REGIONXX_LIMIT(08) + +/* region 9 */ +#define EL1_MPU_REGION09_BASE EL1_MPU_REGIONXX_BASE(09) +#define EL1_MPU_REGION09_LIMIT EL1_MPU_REGIONXX_LIMIT(09) + +/* region 10 */ +#define EL1_MPU_REGION10_BASE EL1_MPU_REGIONXX_BASE(10) +#define EL1_MPU_REGION10_LIMIT EL1_MPU_REGIONXX_LIMIT(10) + +/* region 11 */ +#define EL1_MPU_REGION11_BASE EL1_MPU_REGIONXX_BASE(11) +#define EL1_MPU_REGION11_LIMIT EL1_MPU_REGIONXX_LIMIT(11) + +/* region 12 */ +#define EL1_MPU_REGION12_BASE EL1_MPU_REGIONXX_BASE(12) +#define EL1_MPU_REGION12_LIMIT EL1_MPU_REGIONXX_LIMIT(12) + +/* region 13 */ +#define EL1_MPU_REGION13_BASE EL1_MPU_REGIONXX_BASE(13) +#define EL1_MPU_REGION13_LIMIT EL1_MPU_REGIONXX_LIMIT(13) + +/* region 14 */ +#define EL1_MPU_REGION14_BASE EL1_MPU_REGIONXX_BASE(14) +#define EL1_MPU_REGION14_LIMIT EL1_MPU_REGIONXX_LIMIT(14) + +/* region 15 */ +#define EL1_MPU_REGION15_BASE EL1_MPU_REGIONXX_BASE(15) +#define EL1_MPU_REGION15_LIMIT EL1_MPU_REGIONXX_LIMIT(15) + +/* region 16 */ +#define EL1_MPU_REGION16_BASE EL1_MPU_REGIONXX_BASE(16) +#define EL1_MPU_REGION16_LIMIT EL1_MPU_REGIONXX_LIMIT(16) + +/* region 17 */ +#define EL1_MPU_REGION17_BASE EL1_MPU_REGIONXX_BASE(17) +#define EL1_MPU_REGION17_LIMIT EL1_MPU_REGIONXX_LIMIT(17) + +/* region 18 */ +#define EL1_MPU_REGION18_BASE EL1_MPU_REGIONXX_BASE(18) +#define EL1_MPU_REGION18_LIMIT EL1_MPU_REGIONXX_LIMIT(18) + +/* region 19 */ +#define EL1_MPU_REGION19_BASE EL1_MPU_REGIONXX_BASE(19) +#define EL1_MPU_REGION19_LIMIT EL1_MPU_REGIONXX_LIMIT(19) + +/* region 20 */ +#define EL1_MPU_REGION20_BASE EL1_MPU_REGIONXX_BASE(20) +#define EL1_MPU_REGION20_LIMIT EL1_MPU_REGIONXX_LIMIT(20) + +/* region 21 */ +#define EL1_MPU_REGION21_BASE EL1_MPU_REGIONXX_BASE(21) +#define EL1_MPU_REGION21_LIMIT EL1_MPU_REGIONXX_LIMIT(21) + +/* region 22 */ +#define EL1_MPU_REGION22_BASE EL1_MPU_REGIONXX_BASE(22) +#define EL1_MPU_REGION22_LIMIT EL1_MPU_REGIONXX_LIMIT(22) + +/* region 23 */ +#define EL1_MPU_REGION23_BASE EL1_MPU_REGIONXX_BASE(23) +#define EL1_MPU_REGION23_LIMIT EL1_MPU_REGIONXX_LIMIT(23) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ +typedef struct st_bsp_mpu_config +{ + uint32_t base; + uint32_t limit; +} bsp_mpu_config_t; + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ +static const bsp_mpu_config_t g_bsp_el1_mpu[EL1_MPU_REGION_COUNT] = +{ + {EL1_MPU_REGION00_BASE, EL1_MPU_REGION00_LIMIT}, + {EL1_MPU_REGION01_BASE, EL1_MPU_REGION01_LIMIT}, + {EL1_MPU_REGION02_BASE, EL1_MPU_REGION02_LIMIT}, + {EL1_MPU_REGION03_BASE, EL1_MPU_REGION03_LIMIT}, + {EL1_MPU_REGION04_BASE, EL1_MPU_REGION04_LIMIT}, + {EL1_MPU_REGION05_BASE, EL1_MPU_REGION05_LIMIT}, + {EL1_MPU_REGION06_BASE, EL1_MPU_REGION06_LIMIT}, + {EL1_MPU_REGION07_BASE, EL1_MPU_REGION07_LIMIT}, + {EL1_MPU_REGION08_BASE, EL1_MPU_REGION08_LIMIT}, + {EL1_MPU_REGION09_BASE, EL1_MPU_REGION09_LIMIT}, + {EL1_MPU_REGION10_BASE, EL1_MPU_REGION10_LIMIT}, + {EL1_MPU_REGION11_BASE, EL1_MPU_REGION11_LIMIT}, + {EL1_MPU_REGION12_BASE, EL1_MPU_REGION12_LIMIT}, + {EL1_MPU_REGION13_BASE, EL1_MPU_REGION13_LIMIT}, + {EL1_MPU_REGION14_BASE, EL1_MPU_REGION14_LIMIT}, + {EL1_MPU_REGION15_BASE, EL1_MPU_REGION15_LIMIT}, + {EL1_MPU_REGION16_BASE, EL1_MPU_REGION16_LIMIT}, + {EL1_MPU_REGION17_BASE, EL1_MPU_REGION17_LIMIT}, + {EL1_MPU_REGION18_BASE, EL1_MPU_REGION18_LIMIT}, + {EL1_MPU_REGION19_BASE, EL1_MPU_REGION19_LIMIT}, + {EL1_MPU_REGION20_BASE, EL1_MPU_REGION20_LIMIT}, + {EL1_MPU_REGION21_BASE, EL1_MPU_REGION21_LIMIT}, + {EL1_MPU_REGION22_BASE, EL1_MPU_REGION22_LIMIT}, + {EL1_MPU_REGION23_BASE, EL1_MPU_REGION23_LIMIT}, +}; + +#if __FPU_USED +void bsp_fpu_advancedsimd_init(void); + +#endif + +void bsp_slavetcm_enable(void); +void bsp_memory_protect_setting(void); +void bsp_mpu_init(uint32_t region, uint32_t base, uint32_t limit); +void bsp_irq_cfg_common(void); + +#if __FPU_USED + +/*******************************************************************************************************************//** + * Initialize FPU and Advanced SIMD setting. + **********************************************************************************************************************/ +void bsp_fpu_advancedsimd_init (void) +{ + uint32_t apacr; + uint32_t fpexc; + + /* Enables cp10 and cp11 accessing */ + apacr = __get_CPACR(); + apacr |= BSP_CPCAR_CP_ENABLE; + __set_CPACR(apacr); + __ISB(); + + /* Enables the FPU */ + fpexc = __get_FPEXC(); + fpexc |= BSP_FPEXC_EN_ENABLE; + __set_FPEXC(fpexc); + __ISB(); +} + +#endif + +/*******************************************************************************************************************//** + * Settings the privilege level required for the AXIS to access the TCM. + **********************************************************************************************************************/ +void bsp_slavetcm_enable (void) +{ + uint32_t imp_slavepctlr; + + /* Enable TCM access privilege and non privilege */ + imp_slavepctlr = __get_IMP_SLAVEPCTLR(); + imp_slavepctlr |= BSP_TCM_ALL_ACCESS_ENABLE; + __DSB(); + + __set_IMP_SLAVEPCTLR(imp_slavepctlr); + __ISB(); +} + +/*******************************************************************************************************************//** + * Initialize memory protection settings. + **********************************************************************************************************************/ +void bsp_memory_protect_setting (void) +{ + uint32_t sctlr; + uint32_t mair0; + uint32_t mair1; + uint32_t region; + + /* Adopt EL1 default memory map as background map */ + sctlr = __get_SCTLR(); + sctlr |= BSP_SCTLR_BR_BIT; + __DSB(); + __set_SCTLR(sctlr); + __ISB(); + + /* Configure Memory Attribute Indirection Registers */ + mair0 = ATTR_3_2_1_0; + mair1 = ATTR_7_6_5_4; + __set_MAIR0(mair0); + __set_MAIR1(mair1); + __DSB(); + + /* Setup region. */ + for (region = 0; region < EL1_MPU_REGION_COUNT; region++) + { + bsp_mpu_init(region, g_bsp_el1_mpu[region].base, g_bsp_el1_mpu[region].limit); + } + + R_BSP_CacheInvalidateAll(); + + R_BSP_CacheEnableMemoryProtect(); + +#if (BSP_ICACHE_ENABLE == BSP_CFG_SCTLR_I_BIT) + R_BSP_CacheEnableInst(); +#else + R_BSP_CacheDisableInst(); +#endif + +#if (BSP_DATACACHE_ENABLE == BSP_CFG_SCTLR_C_BIT) + R_BSP_CacheEnableData(); +#else + R_BSP_CacheDisableData(); +#endif +} + +/*******************************************************************************************************************//** + * Core MPU initialization block. + **********************************************************************************************************************/ +void bsp_mpu_init (uint32_t region, uint32_t base, uint32_t limit) +{ + /* Selects the current EL1-controlled MPU region registers, PRBAR, and PRLAR */ + __set_PRSELR(region); + __DSB(); + + /* Set the base address and attributes of the MPU region controlled by EL1 */ + __set_PRBAR(base); + __DSB(); + + /* Set the limit address and attributes of the MPU region controlled by EL1 */ + __set_PRLAR(limit); + __DSB(); +} + +/*******************************************************************************************************************//** + * Initialize common configuration settings for interrupts + **********************************************************************************************************************/ +void bsp_irq_cfg_common (void) +{ + uint32_t icc_pmr; + uint32_t icc_igrpen1; + uint32_t icc_ctlr; + + /* Set priority mask level for CPU interface */ + icc_pmr = BSP_PRIORITY_MASK; + __set_ICC_PMR(icc_pmr); + + /* Enable group 1 interrupts */ + icc_igrpen1 = BSP_ENABLE_GROUP_INT; + __set_ICC_IGRPEN1(icc_igrpen1); + + /* Use ICC_BPR0 for interrupt preemption for both group 0 and group 1 interrupts */ + icc_ctlr = __get_ICC_CTLR(); + icc_ctlr |= BSP_ICC_CTLR; + __set_ICC_CTLR(icc_ctlr); + + __ISB(); +} diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c new file mode 100644 index 00000000000..72bd1de7517 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.c @@ -0,0 +1,197 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ +extern void bsp_master_mpu_init(void); +extern void bsp_global_system_counter_init(void); + +#if BSP_FEATURE_TFU_SUPPORTED +extern void bsp_tfu_init(void); + +#endif + +#if BSP_CFG_C_RUNTIME_INIT +extern void bsp_loader_data_init(void); +extern void bsp_loader_bss_init(void); +extern void bsp_static_constructor_init(void); + +#endif + +#if !(BSP_CFG_RAM_EXECUTION) +extern void bsp_copy_to_ram(void); +extern void bsp_application_bss_init(void); + +#endif + +#if !BSP_CFG_PORT_PROTECT +extern void bsp_release_port_protect(void); + +#endif + +extern void bsp_memory_protect_setting(void); +extern void bsp_irq_cfg_common(void); + +extern void R_BSP_WarmStart(bsp_warm_start_event_t event); + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ +int32_t main(void); + +#if BSP_CFG_EARLY_INIT +static void bsp_init_uninitialized_vars(void); + +#endif + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Initialize the MCU and the runtime environment. + **********************************************************************************************************************/ +void SystemInit (void) +{ +#if BSP_CFG_EARLY_INIT + + /* Initialize uninitialized BSP variables early for use in R_BSP_WarmStart. */ + bsp_init_uninitialized_vars(); +#endif + + /* Call before initializing clock and variables. */ + R_BSP_WarmStart(BSP_WARM_START_RESET); + + /* Configure system clocks. */ + bsp_clock_init(); + + /* Call post clock initialization hook. */ + R_BSP_WarmStart(BSP_WARM_START_POST_CLOCK); + +#if BSP_CFG_C_RUNTIME_INIT + + /* Copy the loader data from external Flash to internal RAM. */ + bsp_loader_data_init(); + + /* Clear loader bss section in internal RAM. */ + bsp_loader_bss_init(); +#endif + + /* Initialize SystemCoreClock variable. */ + SystemCoreClockUpdate(); + + /* Set memory attributes, etc. */ + bsp_memory_protect_setting(); + +#if !(BSP_CFG_RAM_EXECUTION) + + /* Copy the application program from external Flash to internal RAM. */ + bsp_copy_to_ram(); + + /* Clear bss section in internal RAM. */ + bsp_application_bss_init(); +#endif + +#if BSP_CFG_C_RUNTIME_INIT + + /* Initialize static constructors */ + bsp_static_constructor_init(); +#endif + +#if !BSP_CFG_PORT_PROTECT + + /* When writing to the PRCR register the upper 8-bits must be the correct key. Set lower bits to 0 to + * disable writes. */ + bsp_release_port_protect(); +#endif + + /* Call Post C runtime initialization hook. */ + R_BSP_WarmStart(BSP_WARM_START_POST_C); + + /* Initialize the Master-MPU settings. */ + bsp_master_mpu_init(); + + /* Initialize global system counter. The counter is enabled and is incrementing. */ + bsp_global_system_counter_init(); + + /* GIC initialization */ + bsp_irq_cfg_common(); + + /* Initialize GIC interrupts. */ + bsp_irq_cfg(); + +#if BSP_FEATURE_TFU_SUPPORTED + + /* Initialize the TFU settings. */ + bsp_tfu_init(); +#endif + +#if defined(__GNUC__) + extern void entry(void); + entry(); +#elif defined(__ICCARM__) + extern void __low_level_init(void); + __low_level_init(); +#else + /* Jump to main. */ + main(); +#endif +} + +/** @} (end addtogroup BSP_MCU) */ + +#if BSP_CFG_EARLY_INIT + +/*******************************************************************************************************************//** + * Initialize BSP variables not handled by C runtime startup. + **********************************************************************************************************************/ +static void bsp_init_uninitialized_vars (void) +{ + g_protect_port_counter = 0; + + extern volatile uint16_t g_protect_counters[]; + for (uint32_t i = 0; i < 4; i++) + { + g_protect_counters[i] = 0; + } + + SystemCoreClockUpdate(); +} + +#endif diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c new file mode 100644 index 00000000000..66d5fa642e4 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.c @@ -0,0 +1,822 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_PRV_MASTER_MPU_REGION_NUM (8) + +#define BSP_PRV_MASTER_MPU_STADD(master, region) (BSP_CFG_MPU ## master ## _STADD ## region | \ + (BSP_CFG_MPU ## master ## _WRITE ## region << 1) | \ + BSP_CFG_MPU ## master ## _READ ## region) + +#define BSP_PRV_MASTER_MPU_ENDADD(master, region) (BSP_CFG_MPU ## master ## _ENDADD ## region) + +#if defined(__ICCARM__) + #if BSP_CFG_C_RUNTIME_INIT + #define BSP_PRV_SECTION_LDR_DATA_ROM_ADDRESS __section_begin("LDR_DATA_RBLOCK") + #define BSP_PRV_SECTION_LDR_DATA_RAM_START __section_begin("LDR_DATA_WBLOCK") + #define BSP_PRV_SECTION_LDR_DATA_RAM_END __section_end("LDR_DATA_WBLOCK") + + #define BSP_PRV_SECTION_LDR_DATA_BSS_START __section_begin("LDR_DATA_ZBLOCK") + #define BSP_PRV_SECTION_LDR_DATA_BSS_END __section_end("LDR_DATA_ZBLOCK") + + #endif + + #if !(BSP_CFG_RAM_EXECUTION) + #define BSP_PRV_SECTION_VECTOR_ROM_ADDRESS __section_begin("VECTOR_RBLOCK") + #define BSP_PRV_SECTION_VECTOR_RAM_START __section_begin("VECTOR_WBLOCK") + #define BSP_PRV_SECTION_VECTOR_RAM_END __section_end("VECTOR_WBLOCK") + + #define BSP_PRV_SECTION_USER_PRG_ROM_ADDRESS __section_begin("USER_PRG_RBLOCK") + #define BSP_PRV_SECTION_USER_PRG_RAM_START __section_begin("USER_PRG_WBLOCK") + #define BSP_PRV_SECTION_USER_PRG_RAM_END __section_end("USER_PRG_WBLOCK") + + #define BSP_PRV_SECTION_USER_DATA_ROM_ADDRESS __section_begin("USER_DATA_RBLOCK") + #define BSP_PRV_SECTION_USER_DATA_RAM_START __section_begin("USER_DATA_WBLOCK") + #define BSP_PRV_SECTION_USER_DATA_RAM_END __section_end("USER_DATA_WBLOCK") + + #define BSP_PRV_SECTION_USER_DATA_NONCACHE_ROM_ADDRESS __section_begin("USER_DATA_NONCACHE_RBLOCK") + #define BSP_PRV_SECTION_USER_DATA_NONCACHE_RAM_START __section_begin("USER_DATA_NONCACHE_WBLOCK") + #define BSP_PRV_SECTION_USER_DATA_NONCACHE_RAM_END __section_end("USER_DATA_NONCACHE_WBLOCK") + + #define BSP_PRV_SECTION_USER_DATA_BSS_START __section_begin("USER_DATA_ZBLOCK") + #define BSP_PRV_SECTION_USER_DATA_BSS_END __section_end("USER_DATA_ZBLOCK") + + #endif + + #if BSP_CFG_RAM_EXECUTION + #define BSP_PRV_SECTION_NONCACHE_BUFFER_BSS_START __section_begin("NONCACHE_BUFFER_ZBLOCK") + #define BSP_PRV_SECTION_NONCACHE_BUFFER_BSS_END __section_end("NONCACHE_BUFFER_ZBLOCK") + + #define BSP_PRV_SECTION_SHARED_NONCACHE_BUFFER_BSS_START __section_begin("SHARED_NONCACHE_BUFFER_ZBLOCK") + #define BSP_PRV_SECTION_SHARED_NONCACHE_BUFFER_BSS_END __section_end("SHARED_NONCACHE_BUFFER_ZBLOCK") + + #define BSP_PRV_SECTION_DMAC_LINK_MODE_BSS_START __section_begin("DMAC_LINK_MODE_ZBLOCK") + #define BSP_PRV_SECTION_DMAC_LINK_MODE_BSS_END __section_end("DMAC_LINK_MODE_ZBLOCK") + + #endif + +#elif defined(__GNUC__) + #if BSP_CFG_C_RUNTIME_INIT + #define BSP_PRV_SECTION_LDR_DATA_ROM_ADDRESS &_mloader_data + #define BSP_PRV_SECTION_LDR_DATA_RAM_START &__loader_data_start + #define BSP_PRV_SECTION_LDR_DATA_RAM_END &__loader_data_end + + #define BSP_PRV_SECTION_LDR_DATA_BSS_START &__loader_bss_start + #define BSP_PRV_SECTION_LDR_DATA_BSS_END &__loader_bss_end + + #endif + + #if !(BSP_CFG_RAM_EXECUTION) + #define BSP_PRV_SECTION_VECTOR_ROM_ADDRESS &_mfvector + #define BSP_PRV_SECTION_VECTOR_RAM_START &_fvector_start + #define BSP_PRV_SECTION_VECTOR_RAM_END &_fvector_end + + #define BSP_PRV_SECTION_USER_PRG_ROM_ADDRESS &_mtext + #define BSP_PRV_SECTION_USER_PRG_RAM_START &_text_start + #define BSP_PRV_SECTION_USER_PRG_RAM_END &_text_end + + #define BSP_PRV_SECTION_USER_DATA_ROM_ADDRESS &_mdata + #define BSP_PRV_SECTION_USER_DATA_RAM_START &_data_start + #define BSP_PRV_SECTION_USER_DATA_RAM_END &_data_end + + #define BSP_PRV_SECTION_USER_DATA_NONCACHE_ROM_ADDRESS &_mdata_noncache + #define BSP_PRV_SECTION_USER_DATA_NONCACHE_RAM_START &_data_noncache_start + #define BSP_PRV_SECTION_USER_DATA_NONCACHE_RAM_END &_data_noncache_end + + #endif + + #define BSP_PRV_SECTION_USER_DATA_BSS_START &__bss_start__ + #define BSP_PRV_SECTION_USER_DATA_BSS_END &__bss_end__ + + #if BSP_CFG_RAM_EXECUTION + #define BSP_PRV_SECTION_NONCACHE_BUFFER_BSS_START &_ncbuffer_start + #define BSP_PRV_SECTION_NONCACHE_BUFFER_BSS_END &_ncbuffer_end + + #define BSP_PRV_SECTION_SHARED_NONCACHE_BUFFER_BSS_START &_sncbuffer_start + #define BSP_PRV_SECTION_SHARED_NONCACHE_BUFFER_BSS_END &_sncbuffer_end + + #define BSP_PRV_SECTION_DMAC_LINK_MODE_BSS_START &_DmacLinkMode_start + #define BSP_PRV_SECTION_DMAC_LINK_MODE_BSS_END &_DmacLinkMode_end + + #endif + +#endif + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/** System Clock Frequency (Core Clock) */ +uint32_t SystemCoreClock = 0U; + +/** @} (end addtogroup BSP_MCU) */ + +#if defined(__ICCARM__) + #if BSP_CFG_C_RUNTIME_INIT + #pragma section="LDR_DATA_RBLOCK" + #pragma section="LDR_DATA_WBLOCK" + #pragma section="LDR_DATA_ZBLOCK" + + #endif + + #if !(BSP_CFG_RAM_EXECUTION) + #pragma section="VECTOR_RBLOCK" + #pragma section="VECTOR_WBLOCK" + + #pragma section="USER_PRG_RBLOCK" + #pragma section="USER_PRG_WBLOCK" + + #pragma section="USER_DATA_RBLOCK" + #pragma section="USER_DATA_WBLOCK" + #pragma section="USER_DATA_ZBLOCK" + + #pragma section="USER_DATA_NONCACHE_RBLOCK" + #pragma section="USER_DATA_NONCACHE_WBLOCK" + + #endif + + #if BSP_CFG_RAM_EXECUTION + #pragma section="NONCACHE_BUFFER_ZBLOCK" + #pragma section="SHARED_NONCACHE_BUFFER_ZBLOCK" + #pragma section="DMAC_LINK_MODE_ZBLOCK" + + #endif + +#elif defined(__GNUC__) + #if BSP_CFG_C_RUNTIME_INIT +extern void * _mloader_data; +extern void * __loader_data_start; +extern void * __loader_data_end; + +extern void * __loader_bss_start; +extern void * __loader_bss_end; + +extern void (* __preinit_array_start[])(void); +extern void (* __preinit_array_end[])(void); +extern void (* __init_array_start[])(void); +extern void (* __init_array_end[])(void); + + #endif + + #if !(BSP_CFG_RAM_EXECUTION) +extern void * _mfvector; +extern void * _fvector_start; +extern void * _fvector_end; + +extern void * _mtext; +extern void * _text_start; +extern void * _text_end; + +extern void * _mdata; +extern void * _data_start; +extern void * _data_end; + +extern void * _mdata_noncache; +extern void * _data_noncache_start; +extern void * _data_noncache_end; + + #endif + +extern void * __bss_start__; +extern void * __bss_end__; + + #if BSP_CFG_RAM_EXECUTION +extern void * _ncbuffer_start; +extern void * _ncbuffer_end; + +extern void * _sncbuffer_start; +extern void * _sncbuffer_end; + +extern void * _DmacLinkMode_start; +extern void * _DmacLinkMode_end; + + #endif +#endif + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ +#if defined(__ICCARM__) + #if BSP_CFG_C_RUNTIME_INIT +extern void __iar_data_init3(void); + + #endif +#endif + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ +#if (1 == BSP_FEATURE_BSP_MASTER_MPU0_SUPPORTED) +const uint32_t g_bsp_master_mpu0_cfg[BSP_PRV_MASTER_MPU_REGION_NUM][2] = +{ + {BSP_PRV_MASTER_MPU_STADD(0, 0), BSP_PRV_MASTER_MPU_ENDADD(0, 0)}, + {BSP_PRV_MASTER_MPU_STADD(0, 1), BSP_PRV_MASTER_MPU_ENDADD(0, 1)}, + {BSP_PRV_MASTER_MPU_STADD(0, 2), BSP_PRV_MASTER_MPU_ENDADD(0, 2)}, + {BSP_PRV_MASTER_MPU_STADD(0, 3), BSP_PRV_MASTER_MPU_ENDADD(0, 3)}, + {BSP_PRV_MASTER_MPU_STADD(0, 4), BSP_PRV_MASTER_MPU_ENDADD(0, 4)}, + {BSP_PRV_MASTER_MPU_STADD(0, 5), BSP_PRV_MASTER_MPU_ENDADD(0, 5)}, + {BSP_PRV_MASTER_MPU_STADD(0, 6), BSP_PRV_MASTER_MPU_ENDADD(0, 6)}, + {BSP_PRV_MASTER_MPU_STADD(0, 7), BSP_PRV_MASTER_MPU_ENDADD(0, 7)} +}; + +#endif +#if (1 == BSP_FEATURE_BSP_MASTER_MPU1_SUPPORTED) +const uint32_t g_bsp_master_mpu1_cfg[BSP_PRV_MASTER_MPU_REGION_NUM][2] = +{ + {BSP_PRV_MASTER_MPU_STADD(1, 0), BSP_PRV_MASTER_MPU_ENDADD(1, 0)}, + {BSP_PRV_MASTER_MPU_STADD(1, 1), BSP_PRV_MASTER_MPU_ENDADD(1, 1)}, + {BSP_PRV_MASTER_MPU_STADD(1, 2), BSP_PRV_MASTER_MPU_ENDADD(1, 2)}, + {BSP_PRV_MASTER_MPU_STADD(1, 3), BSP_PRV_MASTER_MPU_ENDADD(1, 3)}, + {BSP_PRV_MASTER_MPU_STADD(1, 4), BSP_PRV_MASTER_MPU_ENDADD(1, 4)}, + {BSP_PRV_MASTER_MPU_STADD(1, 5), BSP_PRV_MASTER_MPU_ENDADD(1, 5)}, + {BSP_PRV_MASTER_MPU_STADD(1, 6), BSP_PRV_MASTER_MPU_ENDADD(1, 6)}, + {BSP_PRV_MASTER_MPU_STADD(1, 7), BSP_PRV_MASTER_MPU_ENDADD(1, 7)} +}; + +#endif +#if (1 == BSP_FEATURE_BSP_MASTER_MPU2_SUPPORTED) +const uint32_t g_bsp_master_mpu2_cfg[BSP_PRV_MASTER_MPU_REGION_NUM][2] = +{ + {BSP_PRV_MASTER_MPU_STADD(2, 0), BSP_PRV_MASTER_MPU_ENDADD(2, 0)}, + {BSP_PRV_MASTER_MPU_STADD(2, 1), BSP_PRV_MASTER_MPU_ENDADD(2, 1)}, + {BSP_PRV_MASTER_MPU_STADD(2, 2), BSP_PRV_MASTER_MPU_ENDADD(2, 2)}, + {BSP_PRV_MASTER_MPU_STADD(2, 3), BSP_PRV_MASTER_MPU_ENDADD(2, 3)}, + {BSP_PRV_MASTER_MPU_STADD(2, 4), BSP_PRV_MASTER_MPU_ENDADD(2, 4)}, + {BSP_PRV_MASTER_MPU_STADD(2, 5), BSP_PRV_MASTER_MPU_ENDADD(2, 5)}, + {BSP_PRV_MASTER_MPU_STADD(2, 6), BSP_PRV_MASTER_MPU_ENDADD(2, 6)}, + {BSP_PRV_MASTER_MPU_STADD(2, 7), BSP_PRV_MASTER_MPU_ENDADD(2, 7)} +}; + +#endif +#if (1 == BSP_FEATURE_BSP_MASTER_MPU3_SUPPORTED) +const uint32_t g_bsp_master_mpu3_cfg[BSP_PRV_MASTER_MPU_REGION_NUM][2] = +{ + {BSP_PRV_MASTER_MPU_STADD(3, 0), BSP_PRV_MASTER_MPU_ENDADD(3, 0)}, + {BSP_PRV_MASTER_MPU_STADD(3, 1), BSP_PRV_MASTER_MPU_ENDADD(3, 1)}, + {BSP_PRV_MASTER_MPU_STADD(3, 2), BSP_PRV_MASTER_MPU_ENDADD(3, 2)}, + {BSP_PRV_MASTER_MPU_STADD(3, 3), BSP_PRV_MASTER_MPU_ENDADD(3, 3)}, + {BSP_PRV_MASTER_MPU_STADD(3, 4), BSP_PRV_MASTER_MPU_ENDADD(3, 4)}, + {BSP_PRV_MASTER_MPU_STADD(3, 5), BSP_PRV_MASTER_MPU_ENDADD(3, 5)}, + {BSP_PRV_MASTER_MPU_STADD(3, 6), BSP_PRV_MASTER_MPU_ENDADD(3, 6)}, + {BSP_PRV_MASTER_MPU_STADD(3, 7), BSP_PRV_MASTER_MPU_ENDADD(3, 7)} +}; + +#endif +#if (1 == BSP_FEATURE_BSP_MASTER_MPU4_SUPPORTED) +const uint32_t g_bsp_master_mpu4_cfg[BSP_PRV_MASTER_MPU_REGION_NUM][2] = +{ + {BSP_PRV_MASTER_MPU_STADD(4, 0), BSP_PRV_MASTER_MPU_ENDADD(4, 0)}, + {BSP_PRV_MASTER_MPU_STADD(4, 1), BSP_PRV_MASTER_MPU_ENDADD(4, 1)}, + {BSP_PRV_MASTER_MPU_STADD(4, 2), BSP_PRV_MASTER_MPU_ENDADD(4, 2)}, + {BSP_PRV_MASTER_MPU_STADD(4, 3), BSP_PRV_MASTER_MPU_ENDADD(4, 3)}, + {BSP_PRV_MASTER_MPU_STADD(4, 4), BSP_PRV_MASTER_MPU_ENDADD(4, 4)}, + {BSP_PRV_MASTER_MPU_STADD(4, 5), BSP_PRV_MASTER_MPU_ENDADD(4, 5)}, + {BSP_PRV_MASTER_MPU_STADD(4, 6), BSP_PRV_MASTER_MPU_ENDADD(4, 6)}, + {BSP_PRV_MASTER_MPU_STADD(4, 7), BSP_PRV_MASTER_MPU_ENDADD(4, 7)} +}; + +#endif +#if (1 == BSP_FEATURE_BSP_MASTER_MPU6_SUPPORTED) +const uint32_t g_bsp_master_mpu6_cfg[BSP_PRV_MASTER_MPU_REGION_NUM][2] = +{ + {BSP_PRV_MASTER_MPU_STADD(6, 0), BSP_PRV_MASTER_MPU_ENDADD(6, 0)}, + {BSP_PRV_MASTER_MPU_STADD(6, 1), BSP_PRV_MASTER_MPU_ENDADD(6, 1)}, + {BSP_PRV_MASTER_MPU_STADD(6, 2), BSP_PRV_MASTER_MPU_ENDADD(6, 2)}, + {BSP_PRV_MASTER_MPU_STADD(6, 3), BSP_PRV_MASTER_MPU_ENDADD(6, 3)}, + {BSP_PRV_MASTER_MPU_STADD(6, 4), BSP_PRV_MASTER_MPU_ENDADD(6, 4)}, + {BSP_PRV_MASTER_MPU_STADD(6, 5), BSP_PRV_MASTER_MPU_ENDADD(6, 5)}, + {BSP_PRV_MASTER_MPU_STADD(6, 6), BSP_PRV_MASTER_MPU_ENDADD(6, 6)}, + {BSP_PRV_MASTER_MPU_STADD(6, 7), BSP_PRV_MASTER_MPU_ENDADD(6, 7)} +}; + +#endif +#if (1 == BSP_FEATURE_BSP_MASTER_MPU7_SUPPORTED) +const uint32_t g_bsp_master_mpu7_cfg[BSP_PRV_MASTER_MPU_REGION_NUM][2] = +{ + {BSP_PRV_MASTER_MPU_STADD(7, 0), BSP_PRV_MASTER_MPU_ENDADD(7, 0)}, + {BSP_PRV_MASTER_MPU_STADD(7, 1), BSP_PRV_MASTER_MPU_ENDADD(7, 1)}, + {BSP_PRV_MASTER_MPU_STADD(7, 2), BSP_PRV_MASTER_MPU_ENDADD(7, 2)}, + {BSP_PRV_MASTER_MPU_STADD(7, 3), BSP_PRV_MASTER_MPU_ENDADD(7, 3)}, + {BSP_PRV_MASTER_MPU_STADD(7, 4), BSP_PRV_MASTER_MPU_ENDADD(7, 4)}, + {BSP_PRV_MASTER_MPU_STADD(7, 5), BSP_PRV_MASTER_MPU_ENDADD(7, 5)}, + {BSP_PRV_MASTER_MPU_STADD(7, 6), BSP_PRV_MASTER_MPU_ENDADD(7, 6)}, + {BSP_PRV_MASTER_MPU_STADD(7, 7), BSP_PRV_MASTER_MPU_ENDADD(7, 7)} +}; + +#endif +#if (1 == BSP_FEATURE_BSP_MASTER_MPU8_SUPPORTED) +const uint32_t g_bsp_master_mpu8_cfg[BSP_PRV_MASTER_MPU_REGION_NUM][2] = +{ + {BSP_PRV_MASTER_MPU_STADD(8, 0), BSP_PRV_MASTER_MPU_ENDADD(8, 0)}, + {BSP_PRV_MASTER_MPU_STADD(8, 1), BSP_PRV_MASTER_MPU_ENDADD(8, 1)}, + {BSP_PRV_MASTER_MPU_STADD(8, 2), BSP_PRV_MASTER_MPU_ENDADD(8, 2)}, + {BSP_PRV_MASTER_MPU_STADD(8, 3), BSP_PRV_MASTER_MPU_ENDADD(8, 3)}, + {BSP_PRV_MASTER_MPU_STADD(8, 4), BSP_PRV_MASTER_MPU_ENDADD(8, 4)}, + {BSP_PRV_MASTER_MPU_STADD(8, 5), BSP_PRV_MASTER_MPU_ENDADD(8, 5)}, + {BSP_PRV_MASTER_MPU_STADD(8, 6), BSP_PRV_MASTER_MPU_ENDADD(8, 6)}, + {BSP_PRV_MASTER_MPU_STADD(8, 7), BSP_PRV_MASTER_MPU_ENDADD(8, 7)} +}; + +#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_C_RUNTIME_INIT +void bsp_loader_data_init(void); +void bsp_loader_bss_init(void); +void bsp_static_constructor_init(void); + +#endif + +void bsp_copy_multibyte(uintptr_t * src, uintptr_t * dst, uintptr_t bytesize); +void bsp_bss_init_multibyte(uintptr_t * src, uintptr_t bytesize); + +#if !(BSP_CFG_RAM_EXECUTION) +void bsp_copy_to_ram(void); +void bsp_application_bss_init(void); + +#endif + +void bsp_master_mpu_init(void); +void bsp_global_system_counter_init(void); + +#if BSP_FEATURE_TFU_SUPPORTED +void bsp_tfu_init(void); + +#endif + +#if !BSP_CFG_PORT_PROTECT +void bsp_release_port_protect(void); + +#endif + +/*******************************************************************************************************************//** + * Initialize the Master-MPU settings. + **********************************************************************************************************************/ +void bsp_master_mpu_init (void) +{ + /* Disable register protection for Master-MPU related registers. */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_SYSTEM); + + for (uint8_t region_num = 0; region_num < BSP_PRV_MASTER_MPU_REGION_NUM; region_num++) + { +#if (1 == BSP_FEATURE_BSP_MASTER_MPU0_SUPPORTED) + R_MPU0->RGN[region_num].STADD = g_bsp_master_mpu0_cfg[region_num][0]; + R_MPU0->RGN[region_num].ENDADD = g_bsp_master_mpu0_cfg[region_num][1]; +#endif +#if (1 == BSP_FEATURE_BSP_MASTER_MPU1_SUPPORTED) + R_MPU1->RGN[region_num].STADD = g_bsp_master_mpu1_cfg[region_num][0]; + R_MPU1->RGN[region_num].ENDADD = g_bsp_master_mpu1_cfg[region_num][1]; +#endif +#if (1 == BSP_FEATURE_BSP_MASTER_MPU2_SUPPORTED) + R_MPU2->RGN[region_num].STADD = g_bsp_master_mpu2_cfg[region_num][0]; + R_MPU2->RGN[region_num].ENDADD = g_bsp_master_mpu2_cfg[region_num][1]; +#endif +#if (1 == BSP_FEATURE_BSP_MASTER_MPU3_SUPPORTED) + R_MPU3->RGN[region_num].STADD = g_bsp_master_mpu3_cfg[region_num][0]; + R_MPU3->RGN[region_num].ENDADD = g_bsp_master_mpu3_cfg[region_num][1]; +#endif +#if (1 == BSP_FEATURE_BSP_MASTER_MPU4_SUPPORTED) + R_MPU4->RGN[region_num].STADD = g_bsp_master_mpu4_cfg[region_num][0]; + R_MPU4->RGN[region_num].ENDADD = g_bsp_master_mpu4_cfg[region_num][1]; +#endif +#if (1 == BSP_FEATURE_BSP_MASTER_MPU6_SUPPORTED) + R_MPU6->RGN[region_num].STADD = g_bsp_master_mpu6_cfg[region_num][0]; + R_MPU6->RGN[region_num].ENDADD = g_bsp_master_mpu6_cfg[region_num][1]; +#endif +#if (1 == BSP_FEATURE_BSP_MASTER_MPU7_SUPPORTED) + R_MPU7->RGN[region_num].STADD = g_bsp_master_mpu7_cfg[region_num][0]; + R_MPU7->RGN[region_num].ENDADD = g_bsp_master_mpu7_cfg[region_num][1]; +#endif +#if (1 == BSP_FEATURE_BSP_MASTER_MPU8_SUPPORTED) + R_MPU8->RGN[region_num].STADD = g_bsp_master_mpu8_cfg[region_num][0]; + R_MPU8->RGN[region_num].ENDADD = g_bsp_master_mpu8_cfg[region_num][1]; +#endif + } + + /* Enable register protection for Master-MPU related registers. */ + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_SYSTEM); +} + +/*******************************************************************************************************************//** + * Initialize global system counter. The counter is enabled and is incrementing. + **********************************************************************************************************************/ +void bsp_global_system_counter_init (void) +{ + /* Initialize registers related the global system counter. */ + R_GSC->CNTCR &= (uint32_t) (~R_GSC_CNTCR_EN_Msk); + R_GSC->CNTFID0 = BSP_GLOBAL_SYSTEM_COUNTER_CLOCK_HZ; + R_GSC->CNTCVL = 0; + R_GSC->CNTCVU = 0; + R_GSC->CNTCR |= R_GSC_CNTCR_EN_Msk; +} + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * 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 + * + * + * @note All programs to be executed when BSP_WARM_START_RESET or BSP_WARM_START_POST_CLOCK event occurs should be + * placed in BTCM. These events occur before copying the application program in startup code is executed, and + * therefore the application program is located on ROM and cannot be executed at that time. + * Linker script for FSP specifies that .warm_start section is to be placed at BTCM. Adding the section + * designation to function or variable definition makes it easy to place at BTCM. + **********************************************************************************************************************/ +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 */ + } +} + +/** @} (end addtogroup BSP_MCU) */ + +#if BSP_CFG_C_RUNTIME_INIT + +/*******************************************************************************************************************//** + * Copy the loader data block from external Flash to internal RAM. + **********************************************************************************************************************/ +void bsp_loader_data_init (void) +{ + #if (!defined(__GNUC__) || !(BSP_CFG_RAM_EXECUTION)) + + /* Define destination/source address pointer and block size */ + uintptr_t * src; + uintptr_t * dst; + uintptr_t size; + + /* Copy loader data block */ + src = (uintptr_t *) BSP_PRV_SECTION_LDR_DATA_ROM_ADDRESS; + dst = (uintptr_t *) BSP_PRV_SECTION_LDR_DATA_RAM_START; + size = (uintptr_t) BSP_PRV_SECTION_LDR_DATA_RAM_END - (uintptr_t) BSP_PRV_SECTION_LDR_DATA_RAM_START; + bsp_copy_multibyte(src, dst, size); + #endif +} + +/*******************************************************************************************************************//** + * Clear the loader bss block in internal RAM. + **********************************************************************************************************************/ +void bsp_loader_bss_init (void) +{ + /* Define source address pointer and block size */ + uintptr_t * src; + uintptr_t size; + + /* Clear loader bss block. */ + src = (uintptr_t *) BSP_PRV_SECTION_LDR_DATA_BSS_START; + size = (uintptr_t) BSP_PRV_SECTION_LDR_DATA_BSS_END - (uintptr_t) BSP_PRV_SECTION_LDR_DATA_BSS_START; + bsp_bss_init_multibyte(src, size); + + #if BSP_CFG_RAM_EXECUTION + #if defined(__ICCARM__) + + /* Initialize the application data and clear the application bss. + * This code is for RAM Execution. If you want to boot with ROM, + * enable app_copy and app_bss_init, and disable this code. + * Also need to change icf file. */ + __iar_data_init3(); + #elif defined(__GNUC__) + + /* Clear application bss block. */ + src = (uintptr_t *) BSP_PRV_SECTION_USER_DATA_BSS_START; + size = (uintptr_t) BSP_PRV_SECTION_USER_DATA_BSS_END - (uintptr_t) BSP_PRV_SECTION_USER_DATA_BSS_START; + bsp_bss_init_multibyte(src, size); + #endif + + /* Clear non-cache buffer block. */ + src = (uintptr_t *) BSP_PRV_SECTION_NONCACHE_BUFFER_BSS_START; + size = (uintptr_t) BSP_PRV_SECTION_NONCACHE_BUFFER_BSS_END - + (uintptr_t) BSP_PRV_SECTION_NONCACHE_BUFFER_BSS_START; + bsp_bss_init_multibyte(src, size); + + /* Clear shared non-cache buffer block. */ + src = (uintptr_t *) BSP_PRV_SECTION_SHARED_NONCACHE_BUFFER_BSS_START; + size = (uintptr_t) BSP_PRV_SECTION_SHARED_NONCACHE_BUFFER_BSS_END - + (uintptr_t) BSP_PRV_SECTION_SHARED_NONCACHE_BUFFER_BSS_START; + bsp_bss_init_multibyte(src, size); + + /* Clear DMAC link mode data block. */ + src = (uintptr_t *) BSP_PRV_SECTION_DMAC_LINK_MODE_BSS_START; + size = (uintptr_t) BSP_PRV_SECTION_DMAC_LINK_MODE_BSS_END - + (uintptr_t) BSP_PRV_SECTION_DMAC_LINK_MODE_BSS_START; + bsp_bss_init_multibyte(src, size); + #endif +} + +#endif + +/*******************************************************************************************************************//** + * Copy the memory block from Source address to Destination address by the multi byte unit. + **********************************************************************************************************************/ +void bsp_copy_multibyte (uintptr_t * src, uintptr_t * dst, uintptr_t bytesize) +{ + uintptr_t i; + uintptr_t cnt; + + uintptr_t src_mod; + uint8_t * src_single_byte; + uint8_t * dst_single_byte; + + if (0 != bytesize) + { + /* Copy Count in single byte unit */ + src_mod = (uintptr_t) src % sizeof(uintptr_t); + + if (0 != src_mod) + { + src_single_byte = (uint8_t *) src; + dst_single_byte = (uint8_t *) dst; + + for (i = 0; i < src_mod; i++) + { + *dst_single_byte++ = *src_single_byte++; + } + + dst = (uintptr_t *) dst_single_byte; + src = (uintptr_t *) src_single_byte; + bytesize -= src_mod; + } + else + { + /* Do nothing */ + } + + /* Copy Count in multi byte unit */ + cnt = (bytesize + (sizeof(uintptr_t) - 1)) / sizeof(uintptr_t); + + for (i = 0; i < cnt; i++) + { + *dst++ = *src++; + } + + /* Ensuring data-changing */ + __asm volatile ("DSB SY"); + } + else + { + /* Do nothing */ + } +} + +/*******************************************************************************************************************//** + * Clear the bss block by the multi byte unit. + **********************************************************************************************************************/ +void bsp_bss_init_multibyte (uintptr_t * src, uintptr_t bytesize) +{ + uintptr_t i; + uintptr_t cnt; + uintptr_t zero = 0; + + uintptr_t src_mod; + uint8_t * src_single_byte; + uint8_t zero_single_byte = 0; + + if (0 != bytesize) + { + /* Clear Count in single byte unit */ + src_mod = (uintptr_t) src % sizeof(uintptr_t); + + if (0 != src_mod) + { + src_single_byte = (uint8_t *) src; + + for (i = 0; i < src_mod; i++) + { + *src_single_byte++ = zero_single_byte; + } + + src = (uintptr_t *) src_single_byte; + bytesize -= src_mod; + } + else + { + /* Do nothing */ + } + + /* Clear Count in multi byte unit */ + cnt = (bytesize + (sizeof(uintptr_t) - 1)) / sizeof(uintptr_t); + + for (i = 0; i < cnt; i++) + { + *src++ = zero; + } + + /* Ensuring data-changing */ + __asm volatile ("DSB SY"); + } + else + { + /* Do nothing */ + } +} + +#if !(BSP_CFG_RAM_EXECUTION) + +/*******************************************************************************************************************//** + * Copy the application program block from external Flash to internal RAM. + **********************************************************************************************************************/ +void bsp_copy_to_ram (void) +{ + /* Define destination/source address pointer and block size */ + uintptr_t * src; + uintptr_t * dst; + uintptr_t size; + + /* Copy exception vector block */ + src = (uintptr_t *) BSP_PRV_SECTION_VECTOR_ROM_ADDRESS; + dst = (uintptr_t *) BSP_PRV_SECTION_VECTOR_RAM_START; + size = (uintptr_t) BSP_PRV_SECTION_VECTOR_RAM_END - (uintptr_t) BSP_PRV_SECTION_VECTOR_RAM_START; + bsp_copy_multibyte(src, dst, size); + + /* Copy user program block */ + src = (uintptr_t *) BSP_PRV_SECTION_USER_PRG_ROM_ADDRESS; + dst = (uintptr_t *) BSP_PRV_SECTION_USER_PRG_RAM_START; + size = (uintptr_t) BSP_PRV_SECTION_USER_PRG_RAM_END - (uintptr_t) BSP_PRV_SECTION_USER_PRG_RAM_START; + bsp_copy_multibyte(src, dst, size); + + /* Copy user data block */ + src = (uintptr_t *) BSP_PRV_SECTION_USER_DATA_ROM_ADDRESS; + dst = (uintptr_t *) BSP_PRV_SECTION_USER_DATA_RAM_START; + size = (uintptr_t) BSP_PRV_SECTION_USER_DATA_RAM_END - (uintptr_t) BSP_PRV_SECTION_USER_DATA_RAM_START; + bsp_copy_multibyte(src, dst, size); + + /* Copy user data_noncache block */ + src = (uintptr_t *) BSP_PRV_SECTION_USER_DATA_NONCACHE_ROM_ADDRESS; + dst = (uintptr_t *) BSP_PRV_SECTION_USER_DATA_NONCACHE_RAM_START; + size = (uintptr_t) BSP_PRV_SECTION_USER_DATA_NONCACHE_RAM_END - + (uintptr_t) BSP_PRV_SECTION_USER_DATA_NONCACHE_RAM_START; + bsp_copy_multibyte(src, dst, size); +} + +/*******************************************************************************************************************//** + * Clear the application bss block in internal RAM. + **********************************************************************************************************************/ +void bsp_application_bss_init (void) +{ + /* Define source address pointer and block size */ + uintptr_t * src; + uintptr_t size; + + /* Clear application bss block. */ + src = (uintptr_t *) BSP_PRV_SECTION_USER_DATA_BSS_START; + size = (uintptr_t) BSP_PRV_SECTION_USER_DATA_BSS_END - (uintptr_t) BSP_PRV_SECTION_USER_DATA_BSS_START; + bsp_bss_init_multibyte(src, size); +} + +#endif + +#if BSP_FEATURE_TFU_SUPPORTED +void bsp_tfu_init (void) +{ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_LPC_RESET); + R_BSP_MODULE_START(FSP_IP_TFU, 0U); + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_LPC_RESET); +} + +#endif + +#if !BSP_CFG_PORT_PROTECT +void bsp_release_port_protect (void) +{ + /** When writing to the PRCR register the upper 8-bits must be the correct key. Set lower bits to 0 to + * disable writes. */ + R_RWP_NS->PRCRN = ((R_RWP_NS->PRCRN | BSP_IO_PRV_PRCR_KEY) | BSP_IO_REG_PROTECT_GPIO); + R_RWP_S->PRCRS = ((R_RWP_S->PRCRS | BSP_IO_PRV_PRCR_KEY) | BSP_IO_REG_PROTECT_GPIO); +} + +#endif + +/*******************************************************************************************************************//** + * Initialize static constructors. + **********************************************************************************************************************/ +#if BSP_CFG_C_RUNTIME_INIT +void bsp_static_constructor_init (void) +{ + #if defined(__ICCARM__) + #if !(BSP_CFG_RAM_EXECUTION) + + /* In the case of ROM boot, initialization of static constructors is performed by __iar_data_init3(). */ + __iar_data_init3(); + #endif + #elif defined(__GNUC__) + intptr_t count; + intptr_t i; + + count = __preinit_array_end - __preinit_array_start; + for (i = 0; i < count; i++) + { + __preinit_array_start[i](); + } + + count = __init_array_end - __init_array_start; + for (i = 0; i < count; i++) + { + __init_array_start[i](); + } + #endif +} + +#endif + +/* This vector table is for SGI and PPI interrupts. */ +BSP_DONT_REMOVE fsp_vector_t g_sgi_ppi_vector_table[BSP_CORTEX_VECTOR_TABLE_ENTRIES] = +{ + NULL, /* INTID0 : SOFTWARE_GENERATE_INT0 */ + NULL, /* INTID1 : SOFTWARE_GENERATE_INT1 */ + NULL, /* INTID2 : SOFTWARE_GENERATE_INT2 */ + NULL, /* INTID3 : SOFTWARE_GENERATE_INT3 */ + NULL, /* INTID4 : SOFTWARE_GENERATE_INT4 */ + NULL, /* INTID5 : SOFTWARE_GENERATE_INT5 */ + NULL, /* INTID6 : SOFTWARE_GENERATE_INT6 */ + NULL, /* INTID7 : SOFTWARE_GENERATE_INT7 */ + NULL, /* INTID8 : SOFTWARE_GENERATE_INT8 */ + NULL, /* INTID9 : SOFTWARE_GENERATE_INT9 */ + NULL, /* INTID10 : SOFTWARE_GENERATE_INT10 */ + NULL, /* INTID11 : SOFTWARE_GENERATE_INT11 */ + NULL, /* INTID12 : SOFTWARE_GENERATE_INT12 */ + NULL, /* INTID13 : SOFTWARE_GENERATE_INT13 */ + NULL, /* INTID14 : SOFTWARE_GENERATE_INT14 */ + NULL, /* INTID15 : SOFTWARE_GENERATE_INT15 */ + NULL, /* INTID16 : RESERVED */ + NULL, /* INTID17 : RESERVED */ + NULL, /* INTID18 : RESERVED */ + NULL, /* INTID19 : RESERVED */ + NULL, /* INTID20 : RESERVED */ + NULL, /* INTID21 : RESERVED */ + NULL, /* INTID22 : DEBUG_COMMUNICATIONS_CHANNEL_INT */ + NULL, /* INTID23 : PERFORMANCE_MONITOR_COUNTER_OVERFLOW_INT */ + NULL, /* INTID24 : CROSS_TRIGGER_INTERFACE_INT */ + NULL, /* INTID25 : VIRTUAL_CPU_INTERFACE_MAINTENANCE_INT */ + NULL, /* INTID26 : HYPERVISOR_TIMER_INT */ + NULL, /* INTID27 : VIRTUAL_TIMER_INT */ + NULL, /* INTID28 : RESERVED */ + NULL, /* INTID29 : RESERVED */ + NULL, /* INTID30 : NON-SECURE_PHYSICAL_TIMER_INT */ + NULL, /* INTID31 : RESERVED */ +}; diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_cache.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_cache.c new file mode 100644 index 00000000000..4a42d4ca6c1 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_cache.c @@ -0,0 +1,752 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_PRV_SCTLR_ELX_BIT_I (0x1000U) +#define BSP_PRV_SCTLR_ELX_BIT_C (0x4U) +#define BSP_PRV_SCTLR_ELX_BIT_M (0x1U) + +#define BSP_PRV_CLIDR_CTYPE_OFFSET (3U) +#define BSP_PRV_CLIDR_CTYPE_MASK (7U) +#define BSP_PRV_CLIDR_CTYPE_EXIST_DATACACHE (2U) +#define BSP_PRV_CLIDR_LOC_OFFSET (24U) +#define BSP_PRV_CLIDR_LOC_MASK (7U) + +#define BSP_PRV_CCSIDR_LINESIZE_OFFSET (0U) +#define BSP_PRV_CCSIDR_LINESIZE_MASK (7U) +#define BSP_PRV_CCSIDR_LINESIZE_ACTUAL_VALUE (4U) +#define BSP_PRV_CCSIDR_ASSOCIATIVITY_OFFSET (3U) +#define BSP_PRV_CCSIDR_ASSOCIATIVITY_MASK (0x3FFU) +#define BSP_PRV_CCSIDR_NUMSETS_OFFSET (13U) +#define BSP_PRV_CCSIDR_NUMSETS_MASK (0x7FFFU) +#define BSP_PRV_CCSIDR_SHIFT_MAX (32U) + +#define BSP_PRV_CSSELR_LEVEL_OFFSET (1U) + +#define BSP_PRV_CTR_IMINLINE_OFFSET (0U) +#define BSP_PRV_CTR_IMINLINE_MASK (0xFU) +#define BSP_PRV_CTR_IMINLINE_NUMBER_OF_WORDS (4U) +#define BSP_PRV_CTR_IMINLINE_ADDRESS_MASK (1U) +#define BSP_PRV_CTR_DMINLINE_OFFSET (16U) +#define BSP_PRV_CTR_DMINLINE_MASK (0xFU) +#define BSP_PRV_CTR_DMINLINE_NUMBER_OF_WORDS (4U) +#define BSP_PRV_CTR_DMINLINE_ADDRESS_MASK (1U) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Enable instruction caching. + **********************************************************************************************************************/ +void R_BSP_CacheEnableInst (void) +{ + uintptr_t sctlr; + + sctlr = __get_SCTLR(); + sctlr |= BSP_PRV_SCTLR_ELX_BIT_I; + + __asm volatile ("DSB SY"); + + __set_SCTLR(sctlr); + + __asm volatile ("ISB SY"); +} + +/*******************************************************************************************************************//** + * Enable data caching. + **********************************************************************************************************************/ +void R_BSP_CacheEnableData (void) +{ + uintptr_t sctlr; + + sctlr = __get_SCTLR(); + sctlr |= BSP_PRV_SCTLR_ELX_BIT_C; + + __asm volatile ("DSB SY"); + + __set_SCTLR(sctlr); + + __asm volatile ("ISB SY"); +} + +/*******************************************************************************************************************//** + * Enable memory protect. + **********************************************************************************************************************/ +void R_BSP_CacheEnableMemoryProtect (void) +{ + uintptr_t sctlr; + + sctlr = __get_SCTLR(); + sctlr |= BSP_PRV_SCTLR_ELX_BIT_M; + + __asm volatile ("DSB SY"); + + __set_SCTLR(sctlr); + + __asm volatile ("ISB SY"); +} + +/*******************************************************************************************************************//** + * Disable instruction caching. + **********************************************************************************************************************/ +void R_BSP_CacheDisableInst (void) +{ + uintptr_t sctlr; + + sctlr = __get_SCTLR(); + sctlr &= ~(BSP_PRV_SCTLR_ELX_BIT_I); + + __asm volatile ("DSB SY"); + + __set_SCTLR(sctlr); + + __asm volatile ("ISB SY"); +} + +/*******************************************************************************************************************//** + * Disable data caching. + **********************************************************************************************************************/ +void R_BSP_CacheDisableData (void) +{ + uintptr_t sctlr; + + sctlr = __get_SCTLR(); + sctlr &= ~(BSP_PRV_SCTLR_ELX_BIT_C); + + __asm volatile ("DSB SY"); + + __set_SCTLR(sctlr); + + __asm volatile ("ISB SY"); +} + +/*******************************************************************************************************************//** + * Disable memory protect. + **********************************************************************************************************************/ +void R_BSP_CacheDisableMemoryProtect (void) +{ + uintptr_t sctlr; + + sctlr = __get_SCTLR(); + sctlr &= ~(BSP_PRV_SCTLR_ELX_BIT_M); + + __asm volatile ("DSB SY"); + + __set_SCTLR(sctlr); + + __asm volatile ("ISB SY"); +} + +/*******************************************************************************************************************//** + * Clean data cache by set/way. + * Clean means writing the cache data to memory and clear the dirty bits + * if there is a discrepancy between the cache and memory data. + **********************************************************************************************************************/ +void R_BSP_CacheCleanAll (void) +{ + uintptr_t clidr; + uintptr_t clidr_loc; + uintptr_t clidr_ctype; + uintptr_t clidr_ctype_shift; + + uintptr_t csselr; + uintptr_t csselr_level; + + uintptr_t ccsidr; + uintptr_t ccsidr_linesize; + uintptr_t ccsidr_associativity; + uintptr_t ccsidr_associativity_clz; + uintptr_t ccsidr_associativity_value; + uintptr_t ccsidr_associativity_msb; + uintptr_t ccsidr_numsets; + uintptr_t ccsidr_numsets_total; + + uintptr_t dccsw; + + __asm volatile ("DSB SY"); + + __set_ICIALLU(0); + + __asm volatile ("DMB SY"); + + /* Reads the maximum level of cache implemented */ + clidr = __get_CLIDR(); + clidr_loc = (clidr >> BSP_PRV_CLIDR_LOC_OFFSET) & BSP_PRV_CLIDR_LOC_MASK; + + /* If the cache does not exist, do not process */ + if (0 != clidr_loc) + { + /* Loop until all levels of cache are processed */ + for (csselr = 0; csselr < clidr_loc; csselr++) + { + /* Read the current level cache type */ + clidr_ctype_shift = csselr * BSP_PRV_CLIDR_CTYPE_OFFSET; + clidr_ctype = (clidr >> clidr_ctype_shift) & BSP_PRV_CLIDR_CTYPE_MASK; + + /* If no data cache exists in the current level of cache, do not process */ + if (BSP_PRV_CLIDR_CTYPE_EXIST_DATACACHE <= clidr_ctype) + { + /* Set the current level to Cache Size Selection Register */ + csselr_level = csselr << BSP_PRV_CSSELR_LEVEL_OFFSET; + __set_CSSELR(csselr_level); + + __asm volatile ("DSB SY"); + + /* Read the line size, number of ways, and number of sets for the current level of cache */ + ccsidr = __get_CCSIDR(); + ccsidr_linesize = ((ccsidr >> BSP_PRV_CCSIDR_LINESIZE_OFFSET) & BSP_PRV_CCSIDR_LINESIZE_MASK) + + BSP_PRV_CCSIDR_LINESIZE_ACTUAL_VALUE; + ccsidr_associativity = (ccsidr >> BSP_PRV_CCSIDR_ASSOCIATIVITY_OFFSET) & + BSP_PRV_CCSIDR_ASSOCIATIVITY_MASK; + ccsidr_numsets = (ccsidr >> BSP_PRV_CCSIDR_NUMSETS_OFFSET) & BSP_PRV_CCSIDR_NUMSETS_MASK; + + /* Count consecutive number of 0 starting from the most significant bit (CLZ = Count Leading Zeros) */ + ccsidr_associativity_clz = __CLZ((uint32_t) ccsidr_associativity); + if (BSP_PRV_CCSIDR_SHIFT_MAX == ccsidr_associativity_clz) + { + ccsidr_associativity_clz--; + } + else + { + /* Do Nothing */ + } + + /* Loop until all sets are processed */ + while (1) + { + /* Working copy of number of ways */ + ccsidr_associativity_value = ccsidr_associativity; + + /* Loop until all ways are processed */ + while (1) + { + ccsidr_associativity_msb = (ccsidr_associativity_value << ccsidr_associativity_clz) | + csselr_level; /* Left shift way */ + ccsidr_numsets_total = ccsidr_numsets << ccsidr_linesize; /* Left shift set */ + dccsw = ccsidr_associativity_msb | ccsidr_numsets_total; /* Combine set and way */ + + /* DCCSW - Data or unified Cache line Clean by Set/Way */ + __set_DCCSW(dccsw); + + if (0 != ccsidr_associativity_value) + { + ccsidr_associativity_value--; + } + else + { + break; + } + } + + if (0 != ccsidr_numsets) + { + ccsidr_numsets--; + } + else + { + break; + } + } + } + else + { + /* Do Nothing */ + } + } + + __asm volatile ("DSB SY"); + __asm volatile ("ISB SY"); + } + else + { + /* Do Nothing */ + } +} + +/*******************************************************************************************************************//** + * Invalidate data cache by set/way. + * Also Invalidate instruction cache. + * + * Invalidate means to delete cache data. + **********************************************************************************************************************/ +void R_BSP_CacheInvalidateAll (void) +{ + uintptr_t clidr; + uintptr_t clidr_loc; + uintptr_t clidr_ctype; + uintptr_t clidr_ctype_shift; + + uintptr_t csselr; + uintptr_t csselr_level; + + uintptr_t ccsidr; + uintptr_t ccsidr_linesize; + uintptr_t ccsidr_associativity; + uintptr_t ccsidr_associativity_clz; + uintptr_t ccsidr_associativity_value; + uintptr_t ccsidr_associativity_msb; + uintptr_t ccsidr_numsets; + uintptr_t ccsidr_numsets_total; + + uintptr_t dcisw; + + __asm volatile ("DSB SY"); + + __set_ICIALLU(0); + + __asm volatile ("DMB SY"); + + /* Reads the maximum level of cache implemented */ + clidr = __get_CLIDR(); + clidr_loc = (clidr >> BSP_PRV_CLIDR_LOC_OFFSET) & BSP_PRV_CLIDR_LOC_MASK; + + /* If the cache does not exist, do not process */ + if (0 != clidr_loc) + { + /* Loop until all levels of cache are processed */ + for (csselr = 0; csselr < clidr_loc; csselr++) + { + /* Read the current level cache type */ + clidr_ctype_shift = csselr * BSP_PRV_CLIDR_CTYPE_OFFSET; + clidr_ctype = (clidr >> clidr_ctype_shift) & BSP_PRV_CLIDR_CTYPE_MASK; + + /* If no data cache exists in the current level of cache, do not process */ + if (BSP_PRV_CLIDR_CTYPE_EXIST_DATACACHE <= clidr_ctype) + { + /* Set the current level to Cache Size Selection Register */ + csselr_level = csselr << BSP_PRV_CSSELR_LEVEL_OFFSET; + __set_CSSELR(csselr_level); + + __asm volatile ("DSB SY"); + + /* Read the line size, number of ways, and number of sets for the current level of cache */ + ccsidr = __get_CCSIDR(); + ccsidr_linesize = ((ccsidr >> BSP_PRV_CCSIDR_LINESIZE_OFFSET) & BSP_PRV_CCSIDR_LINESIZE_MASK) + + BSP_PRV_CCSIDR_LINESIZE_ACTUAL_VALUE; + ccsidr_associativity = (ccsidr >> BSP_PRV_CCSIDR_ASSOCIATIVITY_OFFSET) & + BSP_PRV_CCSIDR_ASSOCIATIVITY_MASK; + ccsidr_numsets = (ccsidr >> BSP_PRV_CCSIDR_NUMSETS_OFFSET) & BSP_PRV_CCSIDR_NUMSETS_MASK; + + /* Count consecutive number of 0 starting from the most significant bit (CLZ = Count Leading Zeros) */ + ccsidr_associativity_clz = __CLZ((uint32_t) ccsidr_associativity); + if (BSP_PRV_CCSIDR_SHIFT_MAX == ccsidr_associativity_clz) + { + ccsidr_associativity_clz--; + } + else + { + /* Do Nothing */ + } + + /* Loop until all sets are processed */ + while (1) + { + /* Working copy of number of ways */ + ccsidr_associativity_value = ccsidr_associativity; + + /* Loop until all ways are processed */ + while (1) + { + ccsidr_associativity_msb = (ccsidr_associativity_value << ccsidr_associativity_clz) | + csselr_level; /* Left shift way */ + ccsidr_numsets_total = ccsidr_numsets << ccsidr_linesize; /* Left shift set */ + dcisw = ccsidr_associativity_msb | ccsidr_numsets_total; /* Combine set and way */ + + /* DCISW - Data or unified Cache line Invalidate by Set/Way */ + __set_DCISW(dcisw); + + if (0 != ccsidr_associativity_value) + { + ccsidr_associativity_value--; + } + else + { + break; + } + } + + if (0 != ccsidr_numsets) + { + ccsidr_numsets--; + } + else + { + break; + } + } + } + else + { + /* Do Nothing */ + } + } + + __asm volatile ("DSB SY"); + __asm volatile ("ISB SY"); + } + else + { + /* Do Nothing */ + } +} + +/*******************************************************************************************************************//** + * Clean and Invalidate data cache by set/way. + * Also Invalidate instruction cache. + * + * Clean means writing the cache data to memory and clear the dirty bits + * if there is a discrepancy between the cache and memory data. + * + * Invalidate means to delete cache data. + **********************************************************************************************************************/ +void R_BSP_CacheCleanInvalidateAll (void) +{ + uintptr_t clidr; + uintptr_t clidr_loc; + uintptr_t clidr_ctype; + uintptr_t clidr_ctype_shift; + + uintptr_t csselr; + uintptr_t csselr_level; + + uintptr_t ccsidr; + uintptr_t ccsidr_linesize; + uintptr_t ccsidr_associativity; + uintptr_t ccsidr_associativity_clz; + uintptr_t ccsidr_associativity_value; + uintptr_t ccsidr_associativity_msb; + uintptr_t ccsidr_numsets; + uintptr_t ccsidr_numsets_total; + + uintptr_t dccisw; + + __asm volatile ("DSB SY"); + + __set_ICIALLU(0); + + __asm volatile ("DMB SY"); + + /* Reads the maximum level of cache implemented */ + clidr = __get_CLIDR(); + clidr_loc = (clidr >> BSP_PRV_CLIDR_LOC_OFFSET) & BSP_PRV_CLIDR_LOC_MASK; + + /* If the cache does not exist, do not process */ + if (0 != clidr_loc) + { + /* Loop until all levels of cache are processed */ + for (csselr = 0; csselr < clidr_loc; csselr++) + { + /* Read the current level cache type */ + clidr_ctype_shift = csselr * BSP_PRV_CLIDR_CTYPE_OFFSET; + clidr_ctype = (clidr >> clidr_ctype_shift) & BSP_PRV_CLIDR_CTYPE_MASK; + + /* If no data cache exists in the current level of cache, do not process */ + if (BSP_PRV_CLIDR_CTYPE_EXIST_DATACACHE <= clidr_ctype) + { + /* Set the current level to Cache Size Selection Register */ + csselr_level = csselr << BSP_PRV_CSSELR_LEVEL_OFFSET; + __set_CSSELR(csselr_level); + + __asm volatile ("DSB SY"); + + /* Read the line size, number of ways, and number of sets for the current level of cache */ + ccsidr = __get_CCSIDR(); + ccsidr_linesize = ((ccsidr >> BSP_PRV_CCSIDR_LINESIZE_OFFSET) & BSP_PRV_CCSIDR_LINESIZE_MASK) + + BSP_PRV_CCSIDR_LINESIZE_ACTUAL_VALUE; + ccsidr_associativity = (ccsidr >> BSP_PRV_CCSIDR_ASSOCIATIVITY_OFFSET) & + BSP_PRV_CCSIDR_ASSOCIATIVITY_MASK; + ccsidr_numsets = (ccsidr >> BSP_PRV_CCSIDR_NUMSETS_OFFSET) & BSP_PRV_CCSIDR_NUMSETS_MASK; + + /* Count consecutive number of 0 starting from the most significant bit (CLZ = Count Leading Zeros) */ + ccsidr_associativity_clz = __CLZ((uint32_t) ccsidr_associativity); + if (BSP_PRV_CCSIDR_SHIFT_MAX == ccsidr_associativity_clz) + { + ccsidr_associativity_clz--; + } + else + { + /* Do Nothing */ + } + + /* Loop until all sets are processed */ + while (1) + { + /* Working copy of number of ways */ + ccsidr_associativity_value = ccsidr_associativity; + + /* Loop until all ways are processed */ + while (1) + { + ccsidr_associativity_msb = (ccsidr_associativity_value << ccsidr_associativity_clz) | + csselr_level; /* Left shift way */ + ccsidr_numsets_total = ccsidr_numsets << ccsidr_linesize; /* Left shift set */ + dccisw = ccsidr_associativity_msb | ccsidr_numsets_total; /* Combine set and way */ + + /* DCCISW - Data or unified Cache line Clean and Invalidate by Set/Way */ + __set_DCCISW(dccisw); + + if (0 != ccsidr_associativity_value) + { + ccsidr_associativity_value--; + } + else + { + break; + } + } + + if (0 != ccsidr_numsets) + { + ccsidr_numsets--; + } + else + { + break; + } + } + } + else + { + /* Do Nothing */ + } + } + + __asm volatile ("DSB SY"); + __asm volatile ("ISB SY"); + } + else + { + /* Do Nothing */ + } +} + +/*******************************************************************************************************************//** + * Clean data cache and Invalidate instruction cache by address. + * + * Clean means writing the cache data to memory and clear the dirty bits + * if there is a discrepancy between the cache and memory data. + * + * Invalidate means to delete cache data. + * + * @param[in] base_address Start address of area you want to Clean. + * @param[in] length Size of area you want to Clean. + **********************************************************************************************************************/ +void R_BSP_CacheCleanRange (uintptr_t base_address, uintptr_t length) +{ + uintptr_t end_address; + uintptr_t ctr; + + uintptr_t dminline; + uintptr_t dminline_size; + uintptr_t dccvac; + + uintptr_t iminline; + uintptr_t iminline_size; + uintptr_t icivau; + + end_address = base_address + length; + + /* Calculate data cache line size */ + ctr = __get_CTR(); + dminline = (ctr >> BSP_PRV_CTR_DMINLINE_OFFSET) & BSP_PRV_CTR_DMINLINE_MASK; + dminline_size = (BSP_PRV_CTR_DMINLINE_NUMBER_OF_WORDS << dminline); + + /* Align base address with cache line */ + dccvac = base_address & ~(dminline_size - BSP_PRV_CTR_DMINLINE_ADDRESS_MASK); + do + { + /* Data or unified Cache line Clean by VA to PoC */ + __set_DCCVAC(dccvac); + + dccvac += dminline_size; /* Next data line */ + } while (end_address > dccvac); + + __asm volatile ("DSB SY"); + + /* Calculate instruction cache line size */ + iminline = (ctr >> BSP_PRV_CTR_IMINLINE_OFFSET) & BSP_PRV_CTR_IMINLINE_MASK; + iminline_size = (BSP_PRV_CTR_IMINLINE_NUMBER_OF_WORDS << iminline); + + /* Align base address with cache line */ + icivau = base_address & ~(iminline_size - BSP_PRV_CTR_IMINLINE_ADDRESS_MASK); + do + { + /* Instruction Cache line Invalidate by VA to PoU */ + __set_ICIVAU(icivau); + + icivau += iminline_size; /* Next data line */ + } while (end_address == icivau); + + __asm volatile ("DSB SY"); + __asm volatile ("ISB SY"); +} + +/*******************************************************************************************************************//** + * Invalidate instruction and data cache by address. + * + * Invalidate means to delete cache data. + * + * @param[in] base_address Start address of area you want to Invalidate. + * @param[in] length Size of area you want to Invalidate. + **********************************************************************************************************************/ +void R_BSP_CacheInvalidateRange (uintptr_t base_address, uintptr_t length) +{ + uintptr_t end_address; + uintptr_t ctr; + + uintptr_t dminline; + uintptr_t dminline_size; + uintptr_t dcivac; + + uintptr_t iminline; + uintptr_t iminline_size; + uintptr_t icivau; + + end_address = base_address + length; + + /* Calculate data cache line size */ + ctr = __get_CTR(); + dminline = (ctr >> BSP_PRV_CTR_DMINLINE_OFFSET) & BSP_PRV_CTR_DMINLINE_MASK; + dminline_size = (BSP_PRV_CTR_DMINLINE_NUMBER_OF_WORDS << dminline); + + /* Align base address with cache line */ + dcivac = base_address & ~(dminline_size - BSP_PRV_CTR_DMINLINE_ADDRESS_MASK); + do + { + /* Data or unified Cache line Invalidate by VA to PoC */ + __set_DCIVAC(dcivac); + + dcivac += dminline_size; /* Next data line */ + } while (end_address > dcivac); + + __asm volatile ("DSB SY"); + + /* Calculate instruction cache line size */ + iminline = (ctr >> BSP_PRV_CTR_IMINLINE_OFFSET) & BSP_PRV_CTR_IMINLINE_MASK; + iminline_size = (BSP_PRV_CTR_IMINLINE_NUMBER_OF_WORDS << iminline); + + /* Align base address with cache line */ + icivau = base_address & ~(iminline_size - BSP_PRV_CTR_IMINLINE_ADDRESS_MASK); + do + { + /* Instruction Cache line Invalidate by VA to PoU */ + __set_ICIVAU(icivau); + + icivau += iminline_size; /* Next data line */ + } while (end_address == icivau); + + __asm volatile ("DSB SY"); + __asm volatile ("ISB SY"); +} + +/*******************************************************************************************************************//** + * Clean and Invalidate data cache and Invalidate instruction cache by address. + * + * Clean means writing the cache data to memory and clear the dirty bits + * if there is a discrepancy between the cache and memory data. + * + * Invalidate means to delete cache data. + * + * @param[in] base_address Start address of area you want to Clean and Invalidate. + * @param[in] length Size of area you want to Clean and Invalidate. + **********************************************************************************************************************/ +void R_BSP_CacheCleanInvalidateRange (uintptr_t base_address, uintptr_t length) +{ + uintptr_t end_address; + uintptr_t ctr; + + uintptr_t dminline; + uintptr_t dminline_size; + uintptr_t dccivac; + + uintptr_t iminline; + uintptr_t iminline_size; + uintptr_t icivau; + + end_address = base_address + length; + + /* Calculate data cache line size */ + ctr = __get_CTR(); + dminline = (ctr >> BSP_PRV_CTR_DMINLINE_OFFSET) & BSP_PRV_CTR_DMINLINE_MASK; + dminline_size = (BSP_PRV_CTR_DMINLINE_NUMBER_OF_WORDS << dminline); + + /* Align base address with cache line */ + dccivac = base_address & ~(dminline_size - BSP_PRV_CTR_DMINLINE_ADDRESS_MASK); + do + { + /* Data or unified Cache line Clean and Invalidate by VA to PoC */ + __set_DCCIVAC(dccivac); + + dccivac += dminline_size; /* Next data line */ + } while (end_address > dccivac); + + __asm volatile ("DSB SY"); + + /* Calculate instruction cache line size */ + iminline = (ctr >> BSP_PRV_CTR_IMINLINE_OFFSET) & BSP_PRV_CTR_IMINLINE_MASK; + iminline_size = (BSP_PRV_CTR_IMINLINE_NUMBER_OF_WORDS << iminline); + + /* Align base address with cache line */ + icivau = base_address & ~(iminline_size - BSP_PRV_CTR_IMINLINE_ADDRESS_MASK); + do + { + /* Instruction Cache line Invalidate by VA to PoU */ + __set_ICIVAU(icivau); + + icivau += iminline_size; /* Next data line */ + } while (end_address == icivau); + + __asm volatile ("DSB SY"); + __asm volatile ("ISB SY"); +} + +/*******************************************************************************************************************//** + * Powers on and off the L3 cache way. + * CA55 only. + **********************************************************************************************************************/ +void R_BSP_CacheL3PowerCtrl (void) +{ + r_bsp_cache_l3_power_ctrl(); +} + +/*******************************************************************************************************************//** + * @} (end addtogroup BSP_MCU) + **********************************************************************************************************************/ diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_cache.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_cache.h new file mode 100644 index 00000000000..8f311e8c5dc --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_cache.h @@ -0,0 +1,67 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_CACHE_H +#define BSP_CACHE_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#if defined(BSP_CFG_CORE_CR52) + #include "cr/bsp_cache_core.h" +#endif + +/** 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_CacheEnableInst(void); +void R_BSP_CacheEnableData(void); +void R_BSP_CacheEnableMemoryProtect(void); +void R_BSP_CacheDisableInst(void); +void R_BSP_CacheDisableData(void); +void R_BSP_CacheDisableMemoryProtect(void); +void R_BSP_CacheCleanAll(void); +void R_BSP_CacheInvalidateAll(void); +void R_BSP_CacheCleanInvalidateAll(void); +void R_BSP_CacheCleanRange(uintptr_t base_address, uintptr_t length); +void R_BSP_CacheInvalidateRange(uintptr_t base_address, uintptr_t length); +void R_BSP_CacheCleanInvalidateRange(uintptr_t base_address, uintptr_t length); +void R_BSP_CacheL3PowerCtrl(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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_clocks.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_clocks.c new file mode 100644 index 00000000000..8d7da17b406 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_clocks.c @@ -0,0 +1,374 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* Key code for writing PRCR register. */ +#define BSP_PRV_PRCR_KEY (0xA500U) +#define BSP_PRV_PRCR_CGC_UNLOCK ((BSP_PRV_PRCR_KEY) | 0x1U) +#define BSP_PRV_PRCR_LOCK ((BSP_PRV_PRCR_KEY) | 0x0U) + +/* Key code for writing PCMD register. */ +#define BSP_PRV_PCMD_KEY (0xA5U) + +/* Calculate the value to write to SCKCR. */ +#define BSP_PRV_STARTUP_SCKCR_FSELXSPI0_DIVSELXSPI0_BITS (BSP_CFG_FSELXSPI0_DIVSELXSPI0 & 0x47U) +#define BSP_PRV_STARTUP_SCKCR_FSELXSPI1_DIVSELXSPI1_BITS ((BSP_CFG_FSELXSPI1_DIVSELXSPI1 & 0x47U) << 8U) +#define BSP_PRV_STARTUP_SCKCR_CKIO_BITS ((BSP_CFG_CKIO & 7U) << 16U) +#define BSP_PRV_STARTUP_SCKCR_FSELCANFD_BITS ((BSP_CFG_FSELCANFD & 1U) << 20U) +#define BSP_PRV_STARTUP_SCKCR_PHYSEL_BITS ((BSP_CFG_PHYSEL & 1U) << 21U) +#define BSP_PRV_STARTUP_SCKCR_CLMASEL_BITS ((BSP_CFG_CLMASEL & 1U) << 22U) +#define BSP_PRV_STARTUP_SCKCR_SPI0ASYNCSEL_BITS ((BSP_CFG_SPI0ASYNCCLK & 1U) << 24U) +#define BSP_PRV_STARTUP_SCKCR_SPI1ASYNCSEL_BITS ((BSP_CFG_SPI1ASYNCCLK & 1U) << 25U) +#define BSP_PRV_STARTUP_SCKCR_SPI2ASYNCSEL_BITS ((BSP_CFG_SPI2ASYNCCLK & 1U) << 26U) +#define BSP_PRV_STARTUP_SCKCR_SCI0ASYNCSEL_BITS ((BSP_CFG_SCI0ASYNCCLK & 1U) << 27U) +#define BSP_PRV_STARTUP_SCKCR_SCI1ASYNCSEL_BITS ((BSP_CFG_SCI1ASYNCCLK & 1U) << 28U) +#define BSP_PRV_STARTUP_SCKCR_SCI2ASYNCSEL_BITS ((BSP_CFG_SCI2ASYNCCLK & 1U) << 29U) +#define BSP_PRV_STARTUP_SCKCR_SCI3ASYNCSEL_BITS ((BSP_CFG_SCI3ASYNCCLK & 1U) << 30U) +#define BSP_PRV_STARTUP_SCKCR_SCI4ASYNCSEL_BITS ((BSP_CFG_SCI4ASYNCCLK & 1U) << 31U) + +/* Calculate the value to write to SCKCR2. */ +#define BSP_PRV_STARTUP_SCKCR2_FSELCPU0_BITS (BSP_CFG_FSELCPU0 & 3U) +#define BSP_PRV_STARTUP_SCKCR2_RESERVED_BIT4_BITS (1U << 4U) // The write value should be 1. +#define BSP_PRV_STARTUP_SCKCR2_DIVSELSUB_BITS ((BSP_CFG_DIVSELSUB & 1U) << 5U) +#define BSP_PRV_STARTUP_SCKCR2_SPI3ASYNCSEL_BITS ((BSP_CFG_SPI3ASYNCCLK & 1U) << 24U) +#define BSP_PRV_STARTUP_SCKCR2_SCI5ASYNCSEL_BITS ((BSP_CFG_SCI5ASYNCCLK & 1U) << 25U) + +#define BSP_PRV_STARTUP_SCKCR (BSP_PRV_STARTUP_SCKCR_FSELXSPI0_DIVSELXSPI0_BITS | \ + BSP_PRV_STARTUP_SCKCR_FSELXSPI1_DIVSELXSPI1_BITS | \ + BSP_PRV_STARTUP_SCKCR_CKIO_BITS | \ + BSP_PRV_STARTUP_SCKCR_FSELCANFD_BITS | \ + BSP_PRV_STARTUP_SCKCR_PHYSEL_BITS | \ + BSP_PRV_STARTUP_SCKCR_CLMASEL_BITS | \ + BSP_PRV_STARTUP_SCKCR_SPI0ASYNCSEL_BITS | \ + BSP_PRV_STARTUP_SCKCR_SPI1ASYNCSEL_BITS | \ + BSP_PRV_STARTUP_SCKCR_SPI2ASYNCSEL_BITS | \ + BSP_PRV_STARTUP_SCKCR_SCI0ASYNCSEL_BITS | \ + BSP_PRV_STARTUP_SCKCR_SCI1ASYNCSEL_BITS | \ + BSP_PRV_STARTUP_SCKCR_SCI2ASYNCSEL_BITS | \ + BSP_PRV_STARTUP_SCKCR_SCI3ASYNCSEL_BITS | \ + BSP_PRV_STARTUP_SCKCR_SCI4ASYNCSEL_BITS) + +#define BSP_PRV_STARTUP_SCKCR2 (BSP_PRV_STARTUP_SCKCR2_FSELCPU0_BITS | \ + BSP_PRV_STARTUP_SCKCR2_RESERVED_BIT4_BITS | \ + BSP_PRV_STARTUP_SCKCR2_DIVSELSUB_BITS | \ + BSP_PRV_STARTUP_SCKCR2_SPI3ASYNCSEL_BITS | \ + BSP_PRV_STARTUP_SCKCR2_SCI5ASYNCSEL_BITS) + +#define BSP_PRV_STARTUP_SCKCR2_FSELCPU0_ICLK_MUL2 (BSP_CLOCKS_FSELCPU0_ICLK_MUL2 << \ + R_SYSC_S_SCKCR2_FSELCPU0_Pos) + +/* Calculate the value to write to HIZCTRLEN. */ +#define BSP_PRV_STARTUP_HIZCTRLEN ((BSP_CFG_CLMA1MASK << 2) | (BSP_CFG_CLMA0MASK << 1) | \ + BSP_CFG_CLMA3MASK) + +/* Frequencies of clocks. */ +#define BSP_PRV_CPU_FREQ_200_MHZ (200000000U) // CPU frequency is 200 MHz +#define BSP_PRV_CPU_FREQ_150_MHZ (150000000U) // CPU frequency is 150 MHz + +/* Command sequence for enabling CLMA. */ +#define BSP_PRV_CTL0_ENABLE_TARGET_CMD (0x01) +#define BSP_PRV_CTL0_ENABLE_REVERSED_CMD (0xFE) + +#define BSP_PRV_LOCO_STABILIZATION_COUNT (40000) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ +#if !BSP_CFG_SOFT_RESET_SUPPORTED +static void bsp_prv_clock_set_hard_reset(void); + +#endif + +/*******************************************************************************************************************//** + * @internal + * @addtogroup BSP_MCU_PRV Internal BSP Documentation + * @ingroup RENESAS_INTERNAL + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Update SystemCoreClock variable based on current clock settings. + **********************************************************************************************************************/ +void SystemCoreClockUpdate (void) +{ + uint32_t devselsub = R_SYSC_S->SCKCR2_b.DIVSELSUB; + uint32_t fselcpu = (R_SYSC_S->SCKCR2_b.FSELCPU0 & 1U); + + if (0U == devselsub) + { + SystemCoreClock = BSP_PRV_CPU_FREQ_200_MHZ << fselcpu; + } + else + { + SystemCoreClock = BSP_PRV_CPU_FREQ_150_MHZ << fselcpu; + } +} + +/*******************************************************************************************************************//** + * 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] sckcr Value to set in SCKCR register + * @param[in] sckcr2 Value to set in SCKCR2 register + **********************************************************************************************************************/ +void bsp_prv_clock_set (uint32_t sckcr, uint32_t sckcr2) +{ + volatile uint32_t dummy; + sckcr = sckcr & BSP_PRV_SCKCR_MASK; + sckcr2 = sckcr2 & BSP_PRV_SCKCR2_MASK; + + /* Set the system source clock */ + R_SYSC_S->SCKCR2 = sckcr2; + + /** In order to secure processing after clock frequency is changed, + * dummy read the same register at least eight times. + * Refer to "Notes on Clock Generation Circuit" in the RZ microprocessor manual. */ + dummy = R_SYSC_S->SCKCR2; + dummy = R_SYSC_S->SCKCR2; + dummy = R_SYSC_S->SCKCR2; + dummy = R_SYSC_S->SCKCR2; + dummy = R_SYSC_S->SCKCR2; + dummy = R_SYSC_S->SCKCR2; + dummy = R_SYSC_S->SCKCR2; + dummy = R_SYSC_S->SCKCR2; + + R_SYSC_NS->SCKCR = sckcr; + + /** In order to secure processing after clock frequency is changed, + * dummy read the same register at least eight times. + * Refer to "Notes on Clock Generation Circuit" in the RZ microprocessor manual. */ + dummy = R_SYSC_NS->SCKCR; + dummy = R_SYSC_NS->SCKCR; + dummy = R_SYSC_NS->SCKCR; + dummy = R_SYSC_NS->SCKCR; + dummy = R_SYSC_NS->SCKCR; + dummy = R_SYSC_NS->SCKCR; + dummy = R_SYSC_NS->SCKCR; + dummy = R_SYSC_NS->SCKCR; + + FSP_PARAMETER_NOT_USED(dummy); + + /* Clock is now at requested frequency. */ + + /* Update the CMSIS core clock variable so that it reflects the new ICLK frequency. */ + SystemCoreClockUpdate(); +} + +#if !BSP_CFG_SOFT_RESET_SUPPORTED + +static void bsp_prv_clock_set_hard_reset (void) +{ + volatile uint32_t dummy; + uint32_t sckcr = BSP_PRV_STARTUP_SCKCR & BSP_PRV_SCKCR_MASK; + uint32_t sckcr2 = BSP_PRV_STARTUP_SCKCR2 & BSP_PRV_SCKCR2_MASK; + + /* Set the system source clock */ + R_SYSC_S->SCKCR2 = sckcr2; + + /** In order to secure processing after clock frequency is changed, + * dummy read the same register at least eight times. + * Refer to "Notes on Clock Generation Circuit" in the RZ microprocessor manual. */ + dummy = R_SYSC_S->SCKCR2; + dummy = R_SYSC_S->SCKCR2; + dummy = R_SYSC_S->SCKCR2; + dummy = R_SYSC_S->SCKCR2; + dummy = R_SYSC_S->SCKCR2; + dummy = R_SYSC_S->SCKCR2; + dummy = R_SYSC_S->SCKCR2; + dummy = R_SYSC_S->SCKCR2; + + R_SYSC_NS->SCKCR = sckcr; + + /** In order to secure processing after clock frequency is changed, + * dummy read the same register at least eight times. + * Refer to "Notes on Clock Generation Circuit" in the RZ microprocessor manual. */ + dummy = R_SYSC_NS->SCKCR; + dummy = R_SYSC_NS->SCKCR; + dummy = R_SYSC_NS->SCKCR; + dummy = R_SYSC_NS->SCKCR; + dummy = R_SYSC_NS->SCKCR; + dummy = R_SYSC_NS->SCKCR; + dummy = R_SYSC_NS->SCKCR; + dummy = R_SYSC_NS->SCKCR; + + FSP_PARAMETER_NOT_USED(dummy); + + /* Clock is now at requested frequency. */ + + /* Update the CMSIS core clock variable so that it reflects the new ICLK frequency. */ + SystemCoreClockUpdate(); +} + +#endif + +/*******************************************************************************************************************//** + * Initializes system clocks. Makes no assumptions about current register settings. + **********************************************************************************************************************/ +void bsp_clock_init (void) +{ + volatile uint32_t dummy = 0; + + /* Unlock CGC protection registers. */ + R_RWP_NS->PRCRN = (uint16_t) BSP_PRV_PRCR_CGC_UNLOCK; + R_RWP_S->PRCRS = (uint16_t) BSP_PRV_PRCR_CGC_UNLOCK; + + /* The SystemCoreClock needs to be updated before calling R_BSP_SoftwareDelay. */ + SystemCoreClockUpdate(); + + /* Set source clock and dividers. */ +#if BSP_CFG_SOFT_RESET_SUPPORTED + bsp_prv_clock_set(BSP_PRV_STARTUP_SCKCR, BSP_PRV_STARTUP_SCKCR2); +#else + bsp_prv_clock_set_hard_reset(); +#endif + +#if (BSP_CLOCKS_PLL1_INITIAL != BSP_CFG_PLL1) + R_SYSC_S->PLL1EN = BSP_CFG_PLL1; +#endif + +#if (BSP_CLOCKS_LOCO_ENABLE == BSP_CFG_LOCO_ENABLE) + R_SYSC_S->LOCOCR = BSP_CLOCKS_LOCO_ENABLE; + + /* Only start using the LOCO clock after + * the LOCO oscillation stabilization time (tLOCOWT) has elapsed. */ + for (uint16_t i = 0; i < BSP_PRV_LOCO_STABILIZATION_COUNT; i++) + { + __asm volatile ("nop"); + } +#endif + + R_SYSC_S->HIZCTRLEN = BSP_PRV_STARTUP_HIZCTRLEN; + +#if (BSP_CLOCKS_CLMA0_ENABLE == BSP_CFG_CLMA0_ENABLE) + + /* Set the lower and upper limit for comparing frequency domains. */ + R_CLMA0->CMPL = BSP_CFG_CLMA0_CMPL; + R_CLMA0->CMPH = BSP_CFG_CLMA0_CMPH; + + /* Enabling CLMA0 operation. */ + do + { + R_CLMA0->PCMD = BSP_PRV_PCMD_KEY; + + R_CLMA0->CTL0 = BSP_PRV_CTL0_ENABLE_TARGET_CMD; + R_CLMA0->CTL0 = BSP_PRV_CTL0_ENABLE_REVERSED_CMD; + R_CLMA0->CTL0 = BSP_PRV_CTL0_ENABLE_TARGET_CMD; + + if (1 != R_CLMA0->CTL0) + { + /* Check the value of PROTSR register. */ + dummy = R_CLMA0->PROTSR; + } + } while (1 == R_CLMA0->PROTSR_b.PRERR); +#endif + +#if (BSP_CLOCKS_CLMA1_ENABLE == BSP_CFG_CLMA1_ENABLE) + + /* Set the lower and upper limit for comparing frequency domains. */ + R_CLMA1->CMPL = BSP_CFG_CLMA1_CMPL; + R_CLMA1->CMPH = BSP_CFG_CLMA1_CMPH; + + /* Enabling CLMA1 operation. */ + do + { + R_CLMA1->PCMD = BSP_PRV_PCMD_KEY; + + R_CLMA1->CTL0 = BSP_PRV_CTL0_ENABLE_TARGET_CMD; + R_CLMA1->CTL0 = BSP_PRV_CTL0_ENABLE_REVERSED_CMD; + R_CLMA1->CTL0 = BSP_PRV_CTL0_ENABLE_TARGET_CMD; + + if (1 != R_CLMA1->CTL0) + { + /* Check the value of PROTSR register. */ + dummy = R_CLMA1->PROTSR; + } + } while (1 == R_CLMA1->PROTSR_b.PRERR); +#endif + +#if (BSP_CLOCKS_CLMA2_ENABLE == BSP_CFG_CLMA2_ENABLE) + + /* Set the lower and upper limit for comparing frequency domains. */ + R_CLMA2->CMPL = BSP_CFG_CLMA2_CMPL; + R_CLMA2->CMPH = BSP_CFG_CLMA2_CMPH; + + /* Enabling CLMA2 operation. */ + do + { + R_CLMA2->PCMD = BSP_PRV_PCMD_KEY; + + R_CLMA2->CTL0 = BSP_PRV_CTL0_ENABLE_TARGET_CMD; + R_CLMA2->CTL0 = BSP_PRV_CTL0_ENABLE_REVERSED_CMD; + R_CLMA2->CTL0 = BSP_PRV_CTL0_ENABLE_TARGET_CMD; + + if (1 != R_CLMA2->CTL0) + { + /* Check the value of PROTSR register. */ + dummy = R_CLMA2->PROTSR; + } + } while (1 == R_CLMA2->PROTSR_b.PRERR); +#endif + +#if (BSP_CLOCKS_CLMA3_ENABLE == BSP_CFG_CLMA3_ENABLE) + + /* Set the lower and upper limit for comparing frequency domains. */ + R_CLMA3->CMPL = BSP_CFG_CLMA3_CMPL; + R_CLMA3->CMPH = BSP_CFG_CLMA3_CMPH; + + /* Enabling CLMA3 operation. */ + do + { + R_CLMA3->PCMD = BSP_PRV_PCMD_KEY; + + R_CLMA3->CTL0 = BSP_PRV_CTL0_ENABLE_TARGET_CMD; + R_CLMA3->CTL0 = BSP_PRV_CTL0_ENABLE_REVERSED_CMD; + R_CLMA3->CTL0 = BSP_PRV_CTL0_ENABLE_TARGET_CMD; + + if (1 != R_CLMA3->CTL0) + { + /* Check the value of PROTSR register. */ + dummy = R_CLMA3->PROTSR; + } + } while (1 == R_CLMA3->PROTSR_b.PRERR); +#endif + + /* Lock CGC and LPM protection registers. */ + R_RWP_NS->PRCRN = (uint16_t) BSP_PRV_PRCR_LOCK; + R_RWP_S->PRCRS = (uint16_t) BSP_PRV_PRCR_LOCK; + + FSP_PARAMETER_NOT_USED(dummy); +} + +/** @} (end addtogroup BSP_MCU_PRV) */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_clocks.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_clocks.h new file mode 100644 index 00000000000..b292987ccd9 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_clocks.h @@ -0,0 +1,221 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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 , "Project 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 + **********************************************************************************************************************/ + +/* 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. */ + +/* xSPI unit0 clock options. */ +#define BSP_CLOCKS_XSPI0_CLOCK_DIV0_133_3_MHZ (0x02) // xSPI0 base clock 800MHz and xSPI0 clock 133.3MHz. +#define BSP_CLOCKS_XSPI0_CLOCK_DIV0_100_0_MHZ (0x03) // xSPI0 base clock 800MHz and xSPI0 clock 100.0 MHz. +#define BSP_CLOCKS_XSPI0_CLOCK_DIV0_50_0_MHZ (0x04) // xSPI0 base clock 800MHz and xSPI0 clock 50.0 MHz. +#define BSP_CLOCKS_XSPI0_CLOCK_DIV0_25_0_MHZ (0x05) // xSPI0 base clock 800MHz and xSPI0 clock 25.0 MHz. +#define BSP_CLOCKS_XSPI0_CLOCK_DIV0_12_5_MHZ (0x06) // xSPI0 base clock 800MHz and xSPI0 clock 12.5 MHz. +#define BSP_CLOCKS_XSPI0_CLOCK_DIV1_75_0_MHZ (0x43) // xSPI0 base clock 600MHz and xSPI0 clock 75.0 MHz. +#define BSP_CLOCKS_XSPI0_CLOCK_DIV1_37_5_MHZ (0x44) // xSPI0 base clock 600MHz and xSPI0 clock 37.5 MHz. + +/* xSPI unit1 clock options. */ +#define BSP_CLOCKS_XSPI1_CLOCK_DIV0_133_3_MHZ (0x02) // xSPI1 base clock 800MHz and xSPI1 clock 133.3MHz. +#define BSP_CLOCKS_XSPI1_CLOCK_DIV0_100_0_MHZ (0x03) // xSPI1 base clock 800MHz and xSPI1 clock 100.0 MHz. +#define BSP_CLOCKS_XSPI1_CLOCK_DIV0_50_0_MHZ (0x04) // xSPI1 base clock 800MHz and xSPI1 clock 50.0 MHz. +#define BSP_CLOCKS_XSPI1_CLOCK_DIV0_25_0_MHZ (0x05) // xSPI1 base clock 800MHz and xSPI1 clock 25.0 MHz. +#define BSP_CLOCKS_XSPI1_CLOCK_DIV0_12_5_MHZ (0x06) // xSPI1 base clock 800MHz and xSPI1 clock 12.5 MHz. +#define BSP_CLOCKS_XSPI1_CLOCK_DIV1_75_0_MHZ (0x43) // xSPI1 base clock 600MHz and xSPI1 clock 75.0 MHz. +#define BSP_CLOCKS_XSPI1_CLOCK_DIV1_37_5_MHZ (0x44) // xSPI1 base clock 600MHz and xSPI1 clock 37.5 MHz. + +/* CKIO clock options. */ +#define BSP_CLOCKS_CKIO_ICLK_DIV2 (0) // CKIO clock 100.0 MHz (when SCKCR2.DIVSELSUB = 0), + // or 75.0 MHz (when SCKCR2.DIVSELSUB = 1). +#define BSP_CLOCKS_CKIO_ICLK_DIV3 (1) // CKIO clock 66.7 MHz (when SCKCR2.DIVSELSUB = 0), + // or 50.0 MHz (when SCKCR2.DIVSELSUB = 1). +#define BSP_CLOCKS_CKIO_ICLK_DIV4 (2) // CKIO clock 50.0 MHz (when SCKCR2.DIVSELSUB = 0), + // or 37.5 MHz (when SCKCR2.DIVSELSUB = 1). +#define BSP_CLOCKS_CKIO_ICLK_DIV5 (3) // CKIO clock 40.0 MHz (when SCKCR2.DIVSELSUB = 0), + // or 30.0 MHz (when SCKCR2.DIVSELSUB = 1). +#define BSP_CLOCKS_CKIO_ICLK_DIV6 (4) // CKIO clock 33.3 MHz (when SCKCR2.DIVSELSUB = 0), + // or 25.0 MHz (when SCKCR2.DIVSELSUB = 1). +#define BSP_CLOCKS_CKIO_ICLK_DIV7 (5) // CKIO clock 28.6 MHz (when SCKCR2.DIVSELSUB = 0), + // or 21.4 MHz (when SCKCR2.DIVSELSUB = 1). +#define BSP_CLOCKS_CKIO_ICLK_DIV8 (6) // CKIO clock 25.0 MHz (when SCKCR2.DIVSELSUB = 0), + // or 18.75 MHz (when SCKCR2.DIVSELSUB = 1). + +/* CANFD clock options. */ +#define BSP_CLOCKS_CANFD_CLOCK_80_MHZ (0) // CANFD clock 80 MHz. +#define BSP_CLOCKS_CANFD_CLOCK_40_MHZ (1) // CANFD clock 40 MHz. + +/* Ethernet PHY reference clock (ETHn_REFCLK : n = 0 to 2) options. */ +#define BSP_CLOCKS_PHYSEL_PLL1_DIV (0) // PLL1 devider clock. +#define BSP_CLOCKS_PHYSEL_MAINOSC_DIV (1) // Main clock oscillator. + +/* Alternative clock options when main clock abnormal oscillation is detected in CLMA3. */ +#define BSP_CLOCKS_CLMASEL_LOCO (0) // LOCO clock. +#define BSP_CLOCKS_CLMASEL_PLL (1) // PLL clock. + +/* SPI clock options. */ +#define BSP_CLOCKS_SPI0_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ (0) // SPI0 asynchronous serial clock 75.0 MHz. +#define BSP_CLOCKS_SPI0_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ (1) // SPI0 asynchronous serial clock 96.0 MHz. +#define BSP_CLOCKS_SPI1_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ (0) // SPI1 asynchronous serial clock 75.0 MHz. +#define BSP_CLOCKS_SPI1_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ (1) // SPI1 asynchronous serial clock 96.0 MHz. +#define BSP_CLOCKS_SPI2_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ (0) // SPI2 asynchronous serial clock 75.0 MHz. +#define BSP_CLOCKS_SPI2_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ (1) // SPI2 asynchronous serial clock 96.0 MHz. +#define BSP_CLOCKS_SPI3_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ (0) // SPI3 asynchronous serial clock 75.0 MHz. +#define BSP_CLOCKS_SPI3_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ (1) // SPI3 asynchronous serial clock 96.0 MHz. + +/* SCI clock options. */ +#define BSP_CLOCKS_SCI0_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ (0) // SCI0 asynchronous serial clock 75.0 MHz. +#define BSP_CLOCKS_SCI0_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ (1) // SCI0 asynchronous serial clock 96.0 MHz. +#define BSP_CLOCKS_SCI1_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ (0) // SCI1 asynchronous serial clock 75.0 MHz. +#define BSP_CLOCKS_SCI1_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ (1) // SCI1 asynchronous serial clock 96.0 MHz. +#define BSP_CLOCKS_SCI2_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ (0) // SCI2 asynchronous serial clock 75.0 MHz. +#define BSP_CLOCKS_SCI2_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ (1) // SCI2 asynchronous serial clock 96.0 MHz. +#define BSP_CLOCKS_SCI3_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ (0) // SCI3 asynchronous serial clock 75.0 MHz. +#define BSP_CLOCKS_SCI3_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ (1) // SCI3 asynchronous serial clock 96.0 MHz. +#define BSP_CLOCKS_SCI4_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ (0) // SCI4 asynchronous serial clock 75.0 MHz. +#define BSP_CLOCKS_SCI4_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ (1) // SCI4 asynchronous serial clock 96.0 MHz. +#define BSP_CLOCKS_SCI5_ASYNCHRONOUS_SERIAL_CLOCK_75_MHZ (0) // SCI5 asynchronous serial clock 75.0 MHz. +#define BSP_CLOCKS_SCI5_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ (1) // SCI5 asynchronous serial clock 96.0 MHz. + +/* CPU0 clock options. */ +#define BSP_CLOCKS_FSELCPU0_ICLK_MUL2 (1) // CPU0 clock 400 MHz (when SCKCR2.DIVSELSUB = 0), + // or 300 MHz (when SCKCR2.DIVSELSUB = 1). +#define BSP_CLOCKS_FSELCPU0_ICLK_MUL1 (0) // CPU0 clock 200 MHz (when SCKCR2.DIVSELSUB = 0), + // or 150 MHz (when SCKCR2.DIVSELSUB = 1). + +/* Peripheral module base clock options. */ +#define BSP_CLOCKS_DIVSELSUB_0 (0) // ICLK:200MHz, PCLKH:200MHz, PCLKM:100MHz, + // PCLKL:50MHz, PCLKADC:25MHz, PCLKGPTL:400MHz. +#define BSP_CLOCKS_DIVSELSUB_1 (1) // ICLK:150MHz, PCLKH:150MHz, PCLKM:75 MHz, + // PCLKL:37.5MHz, PCLKADC:18.75MHz, PCLKGPTL:300MHz. + +/* LOCO enable options. */ +#define BSP_CLOCKS_LOCO_DISABLE (0) // LOCO Stop +#define BSP_CLOCKS_LOCO_ENABLE (1) // LOCO Run + +/* PLL1 enable options. */ +#define BSP_CLOCKS_PLL1_INITIAL (0xFF) // Initial (This value should not be reflected in the register) +#define BSP_CLOCKS_PLL1_STANDBY (0) // PLL1 is standby state. +#define BSP_CLOCKS_PLL1_NORMAL (1) // PLL1 is normal state. + +/* CLMA error mask options. */ +#define BSP_CLOCKS_CLMA0_ERROR_MASK (0) // CLMA0 error is not transferred to POE3 and POEG. +#define BSP_CLOCKS_CLMA0_ERROR_NOT_MASK (1) // CLMA0 error is transferred to POE3 and POEG. +#define BSP_CLOCKS_CLMA1_ERROR_MASK (0) // CLMA1 error is not transferred to POE3 and POEG. +#define BSP_CLOCKS_CLMA1_ERROR_NOT_MASK (1) // CLMA1 error is transferred to POE3 and POEG. +#define BSP_CLOCKS_CLMA3_ERROR_MASK (0) // CLMA3 error is not transferred to POE3 and POEG. +#define BSP_CLOCKS_CLMA3_ERROR_NOT_MASK (1) // CLMA3 error is transferred to POE3 and POEG. + +/* CLMA enable options. */ +#define BSP_CLOCKS_CLMA0_DISABLE (0) // Disable CLMA0 operation. +#define BSP_CLOCKS_CLMA0_ENABLE (1) // Enable CLMA0 operation. +#define BSP_CLOCKS_CLMA1_DISABLE (0) // Disable CLMA1 operation. +#define BSP_CLOCKS_CLMA1_ENABLE (1) // Enable CLMA1 operation. +#define BSP_CLOCKS_CLMA2_DISABLE (0) // Disable CLMA2 operation. +#define BSP_CLOCKS_CLMA2_ENABLE (1) // Enable CLMA2 operation. +#define BSP_CLOCKS_CLMA3_DISABLE (0) // Disable CLMA3 operation. +#define BSP_CLOCKS_CLMA3_ENABLE (1) // Enable CLMA3 operation. + +/* Create a mask of valid bits in SCKCR. */ +#define BSP_PRV_SCKCR_FSELXSPI0_MASK (7U << 0) +#define BSP_PRV_SCKCR_DIVSELXSPI0_MASK (1U << 6) +#define BSP_PRV_SCKCR_FSELXSPI1_MASK (7U << 8) +#define BSP_PRV_SCKCR_DIVSELXSPI1_MASK (1U << 14) +#define BSP_PRV_SCKCR_CKIO_MASK (7U << 16) +#define BSP_PRV_SCKCR_FSELCANFD_MASK (1U << 20) +#define BSP_PRV_SCKCR_PHYSEL_MASK (1U << 21) +#define BSP_PRV_SCKCR_CLMASEL_MASK (1U << 22) +#define BSP_PRV_SCKCR_SPI0ASYNCSEL_MASK (1U << 24) +#define BSP_PRV_SCKCR_SPI1ASYNCSEL_MASK (1U << 25) +#define BSP_PRV_SCKCR_SPI2ASYNCSEL_MASK (1U << 26) +#define BSP_PRV_SCKCR_SCI0ASYNCSEL_MASK (1U << 27) +#define BSP_PRV_SCKCR_SCI1ASYNCSEL_MASK (1U << 28) +#define BSP_PRV_SCKCR_SCI2ASYNCSEL_MASK (1U << 29) +#define BSP_PRV_SCKCR_SCI3ASYNCSEL_MASK (1U << 30) +#define BSP_PRV_SCKCR_SCI4ASYNCSEL_MASK (1U << 31) +#define BSP_PRV_SCKCR_MASK (((((((((((((((BSP_PRV_SCKCR_FSELXSPI0_MASK | \ + BSP_PRV_SCKCR_DIVSELXSPI0_MASK) | \ + BSP_PRV_SCKCR_FSELXSPI1_MASK) | \ + BSP_PRV_SCKCR_DIVSELXSPI1_MASK) | \ + BSP_PRV_SCKCR_CKIO_MASK) | \ + BSP_PRV_SCKCR_FSELCANFD_MASK) | \ + BSP_PRV_SCKCR_PHYSEL_MASK) | \ + BSP_PRV_SCKCR_CLMASEL_MASK) | \ + BSP_PRV_SCKCR_SPI0ASYNCSEL_MASK) | \ + BSP_PRV_SCKCR_SPI1ASYNCSEL_MASK) | \ + BSP_PRV_SCKCR_SPI2ASYNCSEL_MASK) | \ + BSP_PRV_SCKCR_SCI0ASYNCSEL_MASK) | \ + BSP_PRV_SCKCR_SCI1ASYNCSEL_MASK) | \ + BSP_PRV_SCKCR_SCI2ASYNCSEL_MASK) | \ + BSP_PRV_SCKCR_SCI3ASYNCSEL_MASK) | \ + BSP_PRV_SCKCR_SCI4ASYNCSEL_MASK) +#define BSP_PRV_SCKCR_DIVSELXSPI_MASK (BSP_PRV_SCKCR_DIVSELXSPI0_MASK | \ + BSP_PRV_SCKCR_DIVSELXSPI1_MASK) + +/* Create a mask of valid bits in SCKCR2. */ +#define BSP_PRV_SCKCR2_FSELCPU0_MASK (3U << 0) +#define BSP_PRV_SCKCR2_RESERVED_BIT4_MASK (1U << 4) +#define BSP_PRV_SCKCR2_DIVSELSUB_MASK (1U << 5) +#define BSP_PRV_SCKCR2_SPI3ASYNCSEL_MASK (1U << 24) +#define BSP_PRV_SCKCR2_SCI5ASYNCSEL_MASK (1U << 25) +#define BSP_PRV_SCKCR2_MASK ((((BSP_PRV_SCKCR2_FSELCPU0_MASK | \ + BSP_PRV_SCKCR2_RESERVED_BIT4_MASK) | \ + BSP_PRV_SCKCR2_DIVSELSUB_MASK) | \ + BSP_PRV_SCKCR2_SPI3ASYNCSEL_MASK) | \ + BSP_PRV_SCKCR2_SCI5ASYNCSEL_MASK) + +#define BSP_PRV_FSELCPU0_INIT (0x02U) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * 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 + +/* Used internally by CGC */ + +void bsp_prv_clock_set(uint32_t sckcr, uint32_t sckcr2); + +/** 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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_common.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_common.c new file mode 100644 index 00000000000..4f70b298c67 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_common.c @@ -0,0 +1,221 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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 + **********************************************************************************************************************/ +#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 + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/* System clock frequency information */ +const uint32_t g_bsp_system_clock_select[][2] = +{ + {BSP_PRV_CPU_FREQ_200_MHZ, BSP_PRV_CPU_FREQ_150_MHZ }, // FSP_PRIV_CLOCK_CPU0 + {0, 0 }, // Reserved + {BSP_PRV_ICLK_FREQ_200_MHZ, BSP_PRV_ICLK_FREQ_150_MHZ }, // FSP_PRIV_CLOCK_ICLK + {BSP_PRV_PCLKH_FREQ_200_MHZ, BSP_PRV_PCLKH_FREQ_150_MHZ }, // FSP_PRIV_CLOCK_PCLKH + {BSP_PRV_PCLKM_FREQ_100_MHZ, BSP_PRV_PCLKM_FREQ_75_MHZ }, // FSP_PRIV_CLOCK_PCLKM + {BSP_PRV_PCLKL_FREQ_50_MHZ, BSP_PRV_PCLKL_FREQ_37_5_MHZ }, // FSP_PRIV_CLOCK_PCLKL + {BSP_PRV_PCLKADC_FREQ_25_MHZ, BSP_PRV_PCLKADC_FREQ_18_75_MHZ}, // FSP_PRIV_CLOCK_PCLKADC + {BSP_PRV_PCLKGPTL_FREQ_400_MHZ, BSP_PRV_PCLKGPTL_FREQ_300_MHZ }, // FSP_PRIV_CLOCK_PCLKGPTL + {BSP_PRV_PCLKSPI_FREQ_75_MHZ, BSP_PRV_PCLKSPI_FREQ_96_MHZ }, // FSP_PRIV_CLOCK_PCLKSPI0 + {BSP_PRV_PCLKSPI_FREQ_75_MHZ, BSP_PRV_PCLKSPI_FREQ_96_MHZ }, // FSP_PRIV_CLOCK_PCLKSPI1 + {BSP_PRV_PCLKSPI_FREQ_75_MHZ, BSP_PRV_PCLKSPI_FREQ_96_MHZ }, // FSP_PRIV_CLOCK_PCLKSPI2 + {BSP_PRV_PCLKSPI_FREQ_75_MHZ, BSP_PRV_PCLKSPI_FREQ_96_MHZ }, // FSP_PRIV_CLOCK_PCLKSPI3 + {BSP_PRV_PCLKSCI_FREQ_75_MHZ, BSP_PRV_PCLKSCI_FREQ_96_MHZ }, // FSP_PRIV_CLOCK_PCLKSCI0 + {BSP_PRV_PCLKSCI_FREQ_75_MHZ, BSP_PRV_PCLKSCI_FREQ_96_MHZ }, // FSP_PRIV_CLOCK_PCLKSCI1 + {BSP_PRV_PCLKSCI_FREQ_75_MHZ, BSP_PRV_PCLKSCI_FREQ_96_MHZ }, // FSP_PRIV_CLOCK_PCLKSCI2 + {BSP_PRV_PCLKSCI_FREQ_75_MHZ, BSP_PRV_PCLKSCI_FREQ_96_MHZ }, // FSP_PRIV_CLOCK_PCLKSCI3 + {BSP_PRV_PCLKSCI_FREQ_75_MHZ, BSP_PRV_PCLKSCI_FREQ_96_MHZ }, // FSP_PRIV_CLOCK_PCLKSCI4 + {BSP_PRV_PCLKSCI_FREQ_75_MHZ, BSP_PRV_PCLKSCI_FREQ_96_MHZ }, // FSP_PRIV_CLOCK_PCLKSCI5 + {BSP_PRV_PCLKCAN_FREQ_80_MHZ, BSP_PRV_PCLKCAN_FREQ_40_MHZ }, // FSP_PRIV_CLOCK_PCLKCAN +}; + +/* System clock frequency information for CKIO */ +const uint32_t g_bsp_system_clock_select_ckio[][2] = +{ + {BSP_PRV_CKIO_FREQ_100_MHZ, BSP_PRV_CKIO_FREQ_75_MHZ }, // CKIO = 000b + {BSP_PRV_CKIO_FREQ_66_7_MHZ, BSP_PRV_CKIO_FREQ_50_MHZ }, // CKIO = 001b + {BSP_PRV_CKIO_FREQ_50_MHZ, BSP_PRV_CKIO_FREQ_37_5_MHZ }, // CKIO = 010b + {BSP_PRV_CKIO_FREQ_40_MHZ, BSP_PRV_CKIO_FREQ_30_MHZ }, // CKIO = 011b + {BSP_PRV_CKIO_FREQ_33_3_MHZ, BSP_PRV_CKIO_FREQ_25_MHZ }, // CKIO = 100b + {BSP_PRV_CKIO_FREQ_28_6_MHZ, BSP_PRV_CKIO_FREQ_21_4_MHZ }, // CKIO = 101b + {BSP_PRV_CKIO_FREQ_25_MHZ, BSP_PRV_CKIO_FREQ_18_75_MHZ }, // CKIO = 110b + {BSP_PRV_CKIO_FREQ_NOT_SUPPORTED, BSP_PRV_CKIO_FREQ_NOT_SUPPORTED}, // CKIO = 111b +}; + +/* System clock frequency information for XSPI_CLK */ +const uint32_t g_bsp_system_clock_select_xspi_clk[][2] = +{ + {BSP_PRV_XSPI_CLK_FREQ_NOT_SUPPORTED, BSP_PRV_XSPI_CLK_FREQ_NOT_SUPPORTED}, // FSELXSPIn = 000b + {BSP_PRV_XSPI_CLK_FREQ_NOT_SUPPORTED, BSP_PRV_XSPI_CLK_FREQ_NOT_SUPPORTED}, // FSELXSPIn = 001b + {BSP_PRV_XSPI_CLK_FREQ_133_3_MHZ, BSP_PRV_XSPI_CLK_FREQ_NOT_SUPPORTED}, // FSELXSPIn = 010b + {BSP_PRV_XSPI_CLK_FREQ_100_MHZ, BSP_PRV_XSPI_CLK_FREQ_75_MHZ }, // FSELXSPIn = 011b + {BSP_PRV_XSPI_CLK_FREQ_50_MHZ, BSP_PRV_XSPI_CLK_FREQ_37_5_MHZ }, // FSELXSPIn = 100b + {BSP_PRV_XSPI_CLK_FREQ_25_MHZ, BSP_PRV_XSPI_CLK_FREQ_NOT_SUPPORTED}, // FSELXSPIn = 101b + {BSP_PRV_XSPI_CLK_FREQ_12_5_MHZ, BSP_PRV_XSPI_CLK_FREQ_NOT_SUPPORTED}, // FSELXSPIn = 110b + {BSP_PRV_XSPI_CLK_FREQ_NOT_SUPPORTED, BSP_PRV_XSPI_CLK_FREQ_NOT_SUPPORTED}, // FSELXSPIn = 111b +}; + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/* 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; + +/*********************************************************************************************************************** + * 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 + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * 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 + +/** @} (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. */ + } +} + +#endif diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_common.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_common.h new file mode 100644 index 00000000000..f6f12905bc6 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_common.h @@ -0,0 +1,435 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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/fsp_common_api.h" +#include "bsp_compiler_support.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) + +/* Vector Number offset */ +#define BSP_VECTOR_NUM_OFFSET (32) +#define BSP_INTERRUPT_TYPE_OFFSET (16U) + +#define FSP_CONTEXT_SAVE +#define FSP_CONTEXT_RESTORE + +#define BSP_PRV_CPU_FREQ_200_MHZ (200000000U) // CPU frequency is 200 MHz +#define BSP_PRV_CPU_FREQ_150_MHZ (150000000U) // CPU frequency is 150 MHz + +#define BSP_PRV_ICLK_FREQ_200_MHZ (200000000U) // ICLK frequency is 200 MHz +#define BSP_PRV_ICLK_FREQ_150_MHZ (150000000U) // ICLK frequency is 150 MHz + +#define BSP_PRV_PCLKH_FREQ_200_MHZ (200000000U) // PCLKH frequency is 200 MHz +#define BSP_PRV_PCLKH_FREQ_150_MHZ (150000000U) // PCLKH frequency is 150 MHz + +#define BSP_PRV_PCLKM_FREQ_100_MHZ (100000000U) // PCLKM frequency is 100 MHz +#define BSP_PRV_PCLKM_FREQ_75_MHZ (75000000U) // PCLKM frequency is 750 MHz + +#define BSP_PRV_PCLKL_FREQ_50_MHZ (50000000U) // PCLKL frequency is 50 MHz +#define BSP_PRV_PCLKL_FREQ_37_5_MHZ (37500000U) // PCLKL frequency is 37.5 MHz + +#define BSP_PRV_PCLKADC_FREQ_25_MHZ (25000000U) // PCLKADC frequency is 25 MHz +#define BSP_PRV_PCLKADC_FREQ_18_75_MHZ (18750000U) // PCLKADC frequency is 18.75 MHz + +#define BSP_PRV_PCLKGPTL_FREQ_400_MHZ (400000000U) // PCLKGPTL frequency is 400 MHz +#define BSP_PRV_PCLKGPTL_FREQ_300_MHZ (300000000U) // PCLKGPTL frequency is 300 MHz + +#define BSP_PRV_PCLKSCI_FREQ_75_MHZ (75000000U) // PCLKSCI frequency is 75 MHz +#define BSP_PRV_PCLKSCI_FREQ_96_MHZ (96000000U) // PCLKSCI frequency is 96 MHz + +#define BSP_PRV_PCLKSPI_FREQ_75_MHZ (75000000U) // PCLKSPI frequency is 75 MHz +#define BSP_PRV_PCLKSPI_FREQ_96_MHZ (96000000U) // PCLKSPI frequency is 96 MHz + +#define BSP_PRV_PCLKCAN_FREQ_80_MHZ (80000000U) // PCLKCAN frequency is 80 MHz +#define BSP_PRV_PCLKCAN_FREQ_40_MHZ (40000000U) // PCLKCAN frequency is 40 MHz + +#define BSP_PRV_CKIO_FREQ_100_MHZ (100000000U) // CKIO frequency is 100 MHz +#define BSP_PRV_CKIO_FREQ_75_MHZ (75000000U) // CKIO frequency is 75 MHz +#define BSP_PRV_CKIO_FREQ_66_7_MHZ (66666666U) // CKIO frequency is 66.7 MHz +#define BSP_PRV_CKIO_FREQ_50_MHZ (50000000U) // CKIO frequency is 50 MHz +#define BSP_PRV_CKIO_FREQ_40_MHZ (40000000U) // CKIO frequency is 40 MHz +#define BSP_PRV_CKIO_FREQ_37_5_MHZ (37500000U) // CKIO frequency is 37.5 MHz +#define BSP_PRV_CKIO_FREQ_33_3_MHZ (33333333U) // CKIO frequency is 33.3MHz +#define BSP_PRV_CKIO_FREQ_30_MHZ (30000000U) // CKIO frequency is 30 MHz +#define BSP_PRV_CKIO_FREQ_28_6_MHZ (28571428U) // CKIO frequency is 28.6 MHz +#define BSP_PRV_CKIO_FREQ_25_MHZ (25000000U) // CKIO frequency is 25 MHz +#define BSP_PRV_CKIO_FREQ_21_4_MHZ (21428571U) // CKIO frequency is 21.4 MHz +#define BSP_PRV_CKIO_FREQ_18_75_MHZ (18750000U) // CKIO frequency is 18.75 MHz +#define BSP_PRV_CKIO_FREQ_NOT_SUPPORTED (0xFFFFFFFFU) // CKIO frequency is not supported + +#define BSP_PRV_XSPI_CLK_FREQ_133_3_MHZ (133333333U) // XSPI_CLK frequency is 133.3 MHz +#define BSP_PRV_XSPI_CLK_FREQ_100_MHZ (100000000U) // XSPI_CLK frequency is 100.0 MHz +#define BSP_PRV_XSPI_CLK_FREQ_75_MHZ (75000000U) // XSPI_CLK frequency is 75.0 MHz +#define BSP_PRV_XSPI_CLK_FREQ_50_MHZ (50000000U) // XSPI_CLK frequency is 50.0 MHz +#define BSP_PRV_XSPI_CLK_FREQ_37_5_MHZ (37500000U) // XSPI_CLK frequency is 37.5 MHz +#define BSP_PRV_XSPI_CLK_FREQ_25_MHZ (25000000U) // XSPI_CLK frequency is 25.0 MHz +#define BSP_PRV_XSPI_CLK_FREQ_12_5_MHZ (12500000U) // XSPI_CLK frequency is 12.5 MHz +#define BSP_PRV_XSPI_CLK_FREQ_NOT_SUPPORTED (0xFFFFFFFFU) // XSPI_CLK frequency is not supported + +/** 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 + +/* Function-like macro used to wait for a condition to be met with timeout, + * most often used to wait for hardware register updates. */ +#define BSP_HARDWARE_REGISTER_WAIT_WTIH_TIMEOUT(reg, required_value, timeout) \ + while ((timeout)) \ + { \ + if ((required_value) == (reg)) \ + { \ + break; \ + } \ + (timeout)--; \ + } + +#ifndef BSP_CFG_IRQ_MASK_LEVEL_FOR_CRITICAL_SECTION + #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 uintptr_t old_mask_level = 0U +#endif + +/* These macros abstract methods to save and restore the interrupt state. */ +#define FSP_CRITICAL_SECTION_GET_CURRENT_STATE __get_ICC_PMR +#define FSP_CRITICAL_SECTION_SET_STATE __set_ICC_PMR +#define FSP_CRITICAL_SECTION_IRQ_MASK_SET ((uint8_t) (BSP_CFG_IRQ_MASK_LEVEL_FOR_CRITICAL_SECTION << \ + BSP_FEATURE_BSP_IRQ_PRIORITY_POS_BIT)) + +/** 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. */ +#define FSP_PRIV_CORTEX_PROCESSOR_EXCEPTIONS (32U) + +/** Used to signify that the requested IRQ vector is not defined in this system. */ +#define FSP_INVALID_VECTOR ((IRQn_Type) - 33) + +/* This macro Enable or Disable interrupts. */ +#define BSP_INTERRUPT_ENABLE __asm volatile ("cpsie i"); \ + __asm volatile ("isb"); + +#define BSP_INTERRUPT_DISABLE __asm volatile ("cpsid i"); \ + __asm volatile ("isb"); + +/** 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 + +/*********************************************************************************************************************** + * 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. */ +typedef enum e_fsp_priv_clock +{ + FSP_PRIV_CLOCK_CPU0 = 0, + FSP_PRIV_CLOCK_ICLK = 2, + FSP_PRIV_CLOCK_PCLKH = 3, + FSP_PRIV_CLOCK_PCLKM = 4, + FSP_PRIV_CLOCK_PCLKL = 5, + FSP_PRIV_CLOCK_PCLKADC = 6, + FSP_PRIV_CLOCK_PCLKGPTL = 7, + FSP_PRIV_CLOCK_PCLKSPI0 = 8, + FSP_PRIV_CLOCK_PCLKSPI1 = 9, + FSP_PRIV_CLOCK_PCLKSPI2 = 10, + FSP_PRIV_CLOCK_PCLKSPI3 = 11, + FSP_PRIV_CLOCK_PCLKSCI0 = 12, + FSP_PRIV_CLOCK_PCLKSCI1 = 13, + FSP_PRIV_CLOCK_PCLKSCI2 = 14, + FSP_PRIV_CLOCK_PCLKSCI3 = 15, + FSP_PRIV_CLOCK_PCLKSCI4 = 16, + FSP_PRIV_CLOCK_PCLKSCI5 = 17, + FSP_PRIV_CLOCK_PCLKCAN = 18, + FSP_PRIV_CLOCK_CKIO = 19, + FSP_PRIV_CLOCK_XSPI0_CLK = 20, + FSP_PRIV_CLOCK_XSPI1_CLK = 21, +} fsp_priv_clock_t; + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +extern const uint32_t g_bsp_system_clock_select[][2]; +extern const uint32_t g_bsp_system_clock_select_ckio[][2]; +extern const uint32_t g_bsp_system_clock_select_xspi_clk[][2]; + +extern IRQn_Type g_current_interrupt_num[]; +extern uint8_t g_current_interrupt_pointer; + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Inline Functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Return active interrupt vector number value + * + * @return Active interrupt vector number value + **********************************************************************************************************************/ +__STATIC_INLINE IRQn_Type R_FSP_CurrentIrqGet (void) +{ + /* Return the current interrupt number. */ + return g_current_interrupt_num[(g_current_interrupt_pointer - 1U)]; +} + +/*******************************************************************************************************************//** + * 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 clock_hz = 0; + uint32_t fselcpu0 = R_SYSC_S->SCKCR2_b.FSELCPU0; + + switch (clock) + { + case FSP_PRIV_CLOCK_CPU0: + { + clock_hz = g_bsp_system_clock_select[clock][R_SYSC_S->SCKCR2_b.DIVSELSUB] << fselcpu0; + break; + } + + /* These iclk and pclk cases are intentionally combined. */ + case FSP_PRIV_CLOCK_ICLK: + case FSP_PRIV_CLOCK_PCLKH: + case FSP_PRIV_CLOCK_PCLKM: + case FSP_PRIV_CLOCK_PCLKL: + case FSP_PRIV_CLOCK_PCLKADC: + case FSP_PRIV_CLOCK_PCLKGPTL: + { + clock_hz = g_bsp_system_clock_select[clock][R_SYSC_S->SCKCR2_b.DIVSELSUB]; + break; + } + + case FSP_PRIV_CLOCK_PCLKSPI0: + { + clock_hz = g_bsp_system_clock_select[clock][R_SYSC_NS->SCKCR_b.SPI0ASYNCSEL]; + break; + } + + case FSP_PRIV_CLOCK_PCLKSPI1: + { + clock_hz = g_bsp_system_clock_select[clock][R_SYSC_NS->SCKCR_b.SPI1ASYNCSEL]; + break; + } + + case FSP_PRIV_CLOCK_PCLKSPI2: + { + clock_hz = g_bsp_system_clock_select[clock][R_SYSC_NS->SCKCR_b.SPI2ASYNCSEL]; + break; + } + + case FSP_PRIV_CLOCK_PCLKSPI3: + { + clock_hz = g_bsp_system_clock_select[clock][R_SYSC_S->SCKCR2_b.SPI3ASYNCSEL]; + break; + } + + case FSP_PRIV_CLOCK_PCLKSCI0: + { + clock_hz = g_bsp_system_clock_select[clock][R_SYSC_NS->SCKCR_b.SCI0ASYNCSEL]; + break; + } + + case FSP_PRIV_CLOCK_PCLKSCI1: + { + clock_hz = g_bsp_system_clock_select[clock][R_SYSC_NS->SCKCR_b.SCI1ASYNCSEL]; + break; + } + + case FSP_PRIV_CLOCK_PCLKSCI2: + { + clock_hz = g_bsp_system_clock_select[clock][R_SYSC_NS->SCKCR_b.SCI2ASYNCSEL]; + break; + } + + case FSP_PRIV_CLOCK_PCLKSCI3: + { + clock_hz = g_bsp_system_clock_select[clock][R_SYSC_NS->SCKCR_b.SCI3ASYNCSEL]; + break; + } + + case FSP_PRIV_CLOCK_PCLKSCI4: + { + clock_hz = g_bsp_system_clock_select[clock][R_SYSC_NS->SCKCR_b.SCI4ASYNCSEL]; + break; + } + + case FSP_PRIV_CLOCK_PCLKSCI5: + { + clock_hz = g_bsp_system_clock_select[clock][R_SYSC_S->SCKCR2_b.SCI5ASYNCSEL]; + break; + } + + case FSP_PRIV_CLOCK_PCLKCAN: + { + clock_hz = g_bsp_system_clock_select[clock][R_SYSC_NS->SCKCR_b.FSELCANFD]; + break; + } + + case FSP_PRIV_CLOCK_CKIO: + { + uint32_t ckio = R_SYSC_NS->SCKCR_b.CKIO; + clock_hz = g_bsp_system_clock_select_ckio[ckio][R_SYSC_S->SCKCR2_b.DIVSELSUB]; + break; + } + + case FSP_PRIV_CLOCK_XSPI0_CLK: + { + uint32_t fselxspi0 = R_SYSC_NS->SCKCR_b.FSELXSPI0; + clock_hz = g_bsp_system_clock_select_xspi_clk[fselxspi0][R_SYSC_NS->SCKCR_b.DIVSELXSPI0]; + break; + } + + case FSP_PRIV_CLOCK_XSPI1_CLK: + { + uint32_t fselxspi1 = R_SYSC_NS->SCKCR_b.FSELXSPI1; + clock_hz = g_bsp_system_clock_select_xspi_clk[fselxspi1][R_SYSC_NS->SCKCR_b.DIVSELXSPI1]; + break; + } + + default: + { + break; + } + } + + return clock_hz; +} + +#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 + +/** @} (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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_compiler_support.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_compiler_support.h new file mode 100644 index 00000000000..d593dee9d60 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_compiler_support.h @@ -0,0 +1,110 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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 + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#if (defined(__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) + #include +#endif + +/** Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */ +FSP_HEADER + +/*********************************************************************************************************************** + * 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" + #define BSP_SECTION_HEAP BSP_UNINIT_SECTION_PREFIX ".heap" + #define BSP_DONT_REMOVE + #define BSP_ATTRIBUTE_STACKLESS __attribute__((naked)) + #define BSP_FORCE_INLINE __attribute__((always_inline)) + #define BSP_TARGET_ARM #pragma arm +#elif defined(__GNUC__) /* GCC compiler */ + #define BSP_UNINIT_SECTION_PREFIX + #define BSP_SECTION_HEAP ".heap" + #define BSP_DONT_REMOVE + #define BSP_ATTRIBUTE_STACKLESS __attribute__((naked)) + #define BSP_FORCE_INLINE __attribute__((always_inline)) + #define BSP_TARGET_ARM __attribute__((target("arm"))) +#elif defined(__ICCARM__) /* IAR compiler */ + #define BSP_UNINIT_SECTION_PREFIX + #define BSP_SECTION_HEAP "HEAP" + #define BSP_DONT_REMOVE __root + #define BSP_ATTRIBUTE_STACKLESS __stackless + #define BSP_FORCE_INLINE _Pragma("inline=forced") + #define BSP_TARGET_ARM __arm +#endif + +#define BSP_SECTION_FIQ_STACK BSP_UNINIT_SECTION_PREFIX ".fiq_stack" +#define BSP_SECTION_IRQ_STACK BSP_UNINIT_SECTION_PREFIX ".irq_stack" +#define BSP_SECTION_ABT_STACK BSP_UNINIT_SECTION_PREFIX ".abt_stack" +#define BSP_SECTION_UND_STACK BSP_UNINIT_SECTION_PREFIX ".und_stack" +#define BSP_SECTION_SYS_STACK BSP_UNINIT_SECTION_PREFIX ".sys_stack" +#define BSP_SECTION_SVC_STACK BSP_UNINIT_SECTION_PREFIX ".svc_stack" +#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" +#define BSP_SECTION_LOADER_PARAM ".loader_param" + +/* 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))) + +#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) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/** @} (end of 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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_delay.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_delay.c new file mode 100644 index 00000000000..e24d3f0abc8 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_delay.c @@ -0,0 +1,159 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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) +#define BSP_DELAY_SIGNIFICANT_DIGITS (10000) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * 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 200 MHz one cycle takes 1/200 microsecond or 5 nanoseconds.@n + * At 800 MHz one cycle takes 1/800 microsecond or 1.25 nanoseconds.@n + * Therefore one run through bsp_prv_software_delay_loop() takes: + * ~ (1.25 * BSP_DELAY_LOOP_CYCLES) or 5 ns. + * A delay of 2 us therefore requires 2000ns/5ns or 400 loops. + * + * The 'theoretical' maximum delay that may be obtained is determined by a full 32 bit loop count and the system clock rate. + * @200MHz: ((0xFFFFFFFF loops * 4 cycles /loop) / 200000000) = 85 seconds. + * @800MHz: ((0xFFFFFFFF loops * 4 cycles /loop) / 800000000) = 21 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. @200 MHz, for example, a request for 85 seconds will be closer to 86 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 R_BSP_SoftwareDelay() obtains the system clock value by reading the SystemCoreClock variable. + * Therefore, R_BSP_SoftwareDelay() cannot be used until after the SystemCoreClock has been updated. + * The SystemCoreClock is updated by executing SystemCoreClockUpdate() in startup; + * users cannot call R_BSP_SoftwareDelay() inside R_BSP_WarmStart(BSP_WARM_START_RESET) and + * R_BSP_WarmStart(BSP_WARM_START_POST_CLOCK) since they are invoked before SystemCoreClockUpdate() in startup. + * + * @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: + * - CR52: 87-94 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. + **********************************************************************************************************************/ + +void R_BSP_SoftwareDelay (uint32_t delay, bsp_delay_units_t units) +{ + uint32_t cpu_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; + + cpu_hz = SystemCoreClock; /** Get the system clock frequency in Hz. */ + + /* BSP_DELAY_SIGNIFICANT_DIGITS to keep the decimal point. */ + ns_per_cycle = BSP_DELAY_NS_PER_SECOND / (cpu_hz / BSP_DELAY_SIGNIFICANT_DIGITS); /** 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) + { + ns_64bits = ns_64bits * (uint64_t) BSP_DELAY_SIGNIFICANT_DIGITS; + + /* No, we will not overflow. + * Multiply the calculation result by BSP_DELAY_SIGNIFICANT_DIGITS to disable the retention of the decimal point.*/ + cycles_requested = (uint32_t) (ns_64bits / (uint64_t) ns_per_cycle); + loops_required = cycles_requested / BSP_DELAY_LOOP_CYCLES; + } + else + { + /* We did overflow. Try dividing down first. + * Multiply the calculation result by BSP_DELAY_SIGNIFICANT_DIGITS to disable the retention of the decimal point.*/ + total_us = (total_us / (ns_per_cycle * BSP_DELAY_LOOP_CYCLES)) * BSP_DELAY_SIGNIFICANT_DIGITS; + 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. + **********************************************************************************************************************/ +void bsp_prv_software_delay_loop (uint32_t loop_cnt) +{ + r_bsp_software_delay_loop(loop_cnt); +} diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_delay.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_delay.h new file mode 100644 index 00000000000..82e69ab1188 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_delay.h @@ -0,0 +1,72 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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" + **********************************************************************************************************************/ +#if defined(BSP_CFG_CORE_CR52) + #include "cr/bsp_delay_core.h" +#endif + +#include "bsp_compiler_support.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 + **********************************************************************************************************************/ + +/** 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) + **********************************************************************************************************************/ + +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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_exceptions.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_exceptions.h new file mode 100644 index 00000000000..37b0468ac00 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_exceptions.h @@ -0,0 +1,50 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_EXCEPTIONS_H +#define BSP_EXCEPTIONS_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 + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/** 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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_io.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_io.c new file mode 100644 index 00000000000..4cf8a6285a6 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_io.c @@ -0,0 +1,41 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_port_counter; + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_io.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_io.h new file mode 100644 index 00000000000..0da51954ec8 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_io.h @@ -0,0 +1,544 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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/toggle access to port pins and read/write access to port. + * + * @{ + **********************************************************************************************************************/ + +#ifndef BSP_IO_H +#define BSP_IO_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 + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* Private definition to set enumeration values. */ +#define BSP_IO_PRV_8BIT_MASK (0xFF) +#define BSP_IO_PM_OUTPUT (3U) + +/* Key code for writing PRCR register. */ +#define BSP_IO_PRV_PRCR_KEY (0xA500U) +#define BSP_IO_REG_PROTECT_GPIO (0x0004U) + +/* Difference between safety and non safety I/O port region addresses. */ +#define BSP_IO_REGION_ADDRESS_DIFF (R_PORT_SR_BASE - R_PORT_NSR_BASE) + +/* Shift to get port in bsp_io_port_t and bsp_io_port_pin_t enums. */ +#define BSP_IO_PRV_PORT_OFFSET (8U) + +/*********************************************************************************************************************** + * 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_15 = 0x0F00, ///< IO port 15 + BSP_IO_PORT_16 = 0x1000, ///< IO port 16 + BSP_IO_PORT_17 = 0x1100, ///< IO port 17 + BSP_IO_PORT_18 = 0x1200, ///< IO port 18 + BSP_IO_PORT_19 = 0x1300, ///< IO port 19 + BSP_IO_PORT_20 = 0x1400, ///< IO port 20 + BSP_IO_PORT_21 = 0x1500, ///< IO port 21 + BSP_IO_PORT_22 = 0x1600, ///< IO port 22 + BSP_IO_PORT_23 = 0x1700, ///< IO port 23 + BSP_IO_PORT_24 = 0x1800, ///< IO port 24 +} bsp_io_port_t; + +/** Superset list of all possible IO port pins. */ +typedef enum e_bsp_io_port_pin +{ + BSP_IO_PORT_00_PIN_0 = 0x0000, ///< IO port 0 pin 0 + BSP_IO_PORT_00_PIN_1 = 0x0001, ///< IO port 0 pin 1 + BSP_IO_PORT_00_PIN_2 = 0x0002, ///< IO port 0 pin 2 + BSP_IO_PORT_00_PIN_3 = 0x0003, ///< IO port 0 pin 3 + BSP_IO_PORT_00_PIN_4 = 0x0004, ///< IO port 0 pin 4 + BSP_IO_PORT_00_PIN_5 = 0x0005, ///< IO port 0 pin 5 + BSP_IO_PORT_00_PIN_6 = 0x0006, ///< IO port 0 pin 6 + BSP_IO_PORT_00_PIN_7 = 0x0007, ///< IO port 0 pin 7 + + BSP_IO_PORT_01_PIN_0 = 0x0100, ///< IO port 1 pin 0 + BSP_IO_PORT_01_PIN_1 = 0x0101, ///< IO port 1 pin 1 + BSP_IO_PORT_01_PIN_2 = 0x0102, ///< IO port 1 pin 2 + BSP_IO_PORT_01_PIN_3 = 0x0103, ///< IO port 1 pin 3 + BSP_IO_PORT_01_PIN_4 = 0x0104, ///< IO port 1 pin 4 + BSP_IO_PORT_01_PIN_5 = 0x0105, ///< IO port 1 pin 5 + BSP_IO_PORT_01_PIN_6 = 0x0106, ///< IO port 1 pin 6 + BSP_IO_PORT_01_PIN_7 = 0x0107, ///< IO port 1 pin 7 + + BSP_IO_PORT_02_PIN_0 = 0x0200, ///< IO port 2 pin 0 + BSP_IO_PORT_02_PIN_1 = 0x0201, ///< IO port 2 pin 1 + BSP_IO_PORT_02_PIN_2 = 0x0202, ///< IO port 2 pin 2 + BSP_IO_PORT_02_PIN_3 = 0x0203, ///< IO port 2 pin 3 + BSP_IO_PORT_02_PIN_4 = 0x0204, ///< IO port 2 pin 4 + BSP_IO_PORT_02_PIN_5 = 0x0205, ///< IO port 2 pin 5 + BSP_IO_PORT_02_PIN_6 = 0x0206, ///< IO port 2 pin 6 + BSP_IO_PORT_02_PIN_7 = 0x0207, ///< IO port 2 pin 7 + + BSP_IO_PORT_03_PIN_0 = 0x0300, ///< IO port 3 pin 0 + BSP_IO_PORT_03_PIN_1 = 0x0301, ///< IO port 3 pin 1 + BSP_IO_PORT_03_PIN_2 = 0x0302, ///< IO port 3 pin 2 + BSP_IO_PORT_03_PIN_3 = 0x0303, ///< IO port 3 pin 3 + BSP_IO_PORT_03_PIN_4 = 0x0304, ///< IO port 3 pin 4 + BSP_IO_PORT_03_PIN_5 = 0x0305, ///< IO port 3 pin 5 + BSP_IO_PORT_03_PIN_6 = 0x0306, ///< IO port 3 pin 6 + BSP_IO_PORT_03_PIN_7 = 0x0307, ///< IO port 3 pin 7 + + BSP_IO_PORT_04_PIN_0 = 0x0400, ///< IO port 4 pin 0 + BSP_IO_PORT_04_PIN_1 = 0x0401, ///< IO port 4 pin 1 + BSP_IO_PORT_04_PIN_2 = 0x0402, ///< IO port 4 pin 2 + BSP_IO_PORT_04_PIN_3 = 0x0403, ///< IO port 4 pin 3 + BSP_IO_PORT_04_PIN_4 = 0x0404, ///< IO port 4 pin 4 + BSP_IO_PORT_04_PIN_5 = 0x0405, ///< IO port 4 pin 5 + BSP_IO_PORT_04_PIN_6 = 0x0406, ///< IO port 4 pin 6 + BSP_IO_PORT_04_PIN_7 = 0x0407, ///< IO port 4 pin 7 + + BSP_IO_PORT_05_PIN_0 = 0x0500, ///< IO port 5 pin 0 + BSP_IO_PORT_05_PIN_1 = 0x0501, ///< IO port 5 pin 1 + BSP_IO_PORT_05_PIN_2 = 0x0502, ///< IO port 5 pin 2 + BSP_IO_PORT_05_PIN_3 = 0x0503, ///< IO port 5 pin 3 + BSP_IO_PORT_05_PIN_4 = 0x0504, ///< IO port 5 pin 4 + BSP_IO_PORT_05_PIN_5 = 0x0505, ///< IO port 5 pin 5 + BSP_IO_PORT_05_PIN_6 = 0x0506, ///< IO port 5 pin 6 + BSP_IO_PORT_05_PIN_7 = 0x0507, ///< IO port 5 pin 7 + + BSP_IO_PORT_06_PIN_0 = 0x0600, ///< IO port 6 pin 0 + BSP_IO_PORT_06_PIN_1 = 0x0601, ///< IO port 6 pin 1 + BSP_IO_PORT_06_PIN_2 = 0x0602, ///< IO port 6 pin 2 + BSP_IO_PORT_06_PIN_3 = 0x0603, ///< IO port 6 pin 3 + BSP_IO_PORT_06_PIN_4 = 0x0604, ///< IO port 6 pin 4 + BSP_IO_PORT_06_PIN_5 = 0x0605, ///< IO port 6 pin 5 + BSP_IO_PORT_06_PIN_6 = 0x0606, ///< IO port 6 pin 6 + BSP_IO_PORT_06_PIN_7 = 0x0607, ///< IO port 6 pin 7 + + BSP_IO_PORT_07_PIN_0 = 0x0700, ///< IO port 7 pin 0 + BSP_IO_PORT_07_PIN_1 = 0x0701, ///< IO port 7 pin 1 + BSP_IO_PORT_07_PIN_2 = 0x0702, ///< IO port 7 pin 2 + BSP_IO_PORT_07_PIN_3 = 0x0703, ///< IO port 7 pin 3 + BSP_IO_PORT_07_PIN_4 = 0x0704, ///< IO port 7 pin 4 + BSP_IO_PORT_07_PIN_5 = 0x0705, ///< IO port 7 pin 5 + BSP_IO_PORT_07_PIN_6 = 0x0706, ///< IO port 7 pin 6 + BSP_IO_PORT_07_PIN_7 = 0x0707, ///< IO port 7 pin 7 + + BSP_IO_PORT_08_PIN_0 = 0x0800, ///< IO port 8 pin 0 + BSP_IO_PORT_08_PIN_1 = 0x0801, ///< IO port 8 pin 1 + BSP_IO_PORT_08_PIN_2 = 0x0802, ///< IO port 8 pin 2 + BSP_IO_PORT_08_PIN_3 = 0x0803, ///< IO port 8 pin 3 + BSP_IO_PORT_08_PIN_4 = 0x0804, ///< IO port 8 pin 4 + BSP_IO_PORT_08_PIN_5 = 0x0805, ///< IO port 8 pin 5 + BSP_IO_PORT_08_PIN_6 = 0x0806, ///< IO port 8 pin 6 + BSP_IO_PORT_08_PIN_7 = 0x0807, ///< IO port 8 pin 7 + + BSP_IO_PORT_09_PIN_0 = 0x0900, ///< IO port 9 pin 0 + BSP_IO_PORT_09_PIN_1 = 0x0901, ///< IO port 9 pin 1 + BSP_IO_PORT_09_PIN_2 = 0x0902, ///< IO port 9 pin 2 + BSP_IO_PORT_09_PIN_3 = 0x0903, ///< IO port 9 pin 3 + BSP_IO_PORT_09_PIN_4 = 0x0904, ///< IO port 9 pin 4 + BSP_IO_PORT_09_PIN_5 = 0x0905, ///< IO port 9 pin 5 + BSP_IO_PORT_09_PIN_6 = 0x0906, ///< IO port 9 pin 6 + BSP_IO_PORT_09_PIN_7 = 0x0907, ///< IO port 9 pin 7 + + BSP_IO_PORT_10_PIN_0 = 0x0A00, ///< IO port 10 pin 0 + BSP_IO_PORT_10_PIN_1 = 0x0A01, ///< IO port 10 pin 1 + BSP_IO_PORT_10_PIN_2 = 0x0A02, ///< IO port 10 pin 2 + BSP_IO_PORT_10_PIN_3 = 0x0A03, ///< IO port 10 pin 3 + BSP_IO_PORT_10_PIN_4 = 0x0A04, ///< IO port 10 pin 4 + BSP_IO_PORT_10_PIN_5 = 0x0A05, ///< IO port 10 pin 5 + BSP_IO_PORT_10_PIN_6 = 0x0A06, ///< IO port 10 pin 6 + BSP_IO_PORT_10_PIN_7 = 0x0A07, ///< IO port 10 pin 7 + + BSP_IO_PORT_11_PIN_0 = 0x0B00, ///< IO port 11 pin 0 + BSP_IO_PORT_11_PIN_1 = 0x0B01, ///< IO port 11 pin 1 + BSP_IO_PORT_11_PIN_2 = 0x0B02, ///< IO port 11 pin 2 + BSP_IO_PORT_11_PIN_3 = 0x0B03, ///< IO port 11 pin 3 + BSP_IO_PORT_11_PIN_4 = 0x0B04, ///< IO port 11 pin 4 + BSP_IO_PORT_11_PIN_5 = 0x0B05, ///< IO port 11 pin 5 + BSP_IO_PORT_11_PIN_6 = 0x0B06, ///< IO port 11 pin 6 + BSP_IO_PORT_11_PIN_7 = 0x0B07, ///< IO port 11 pin 7 + + BSP_IO_PORT_12_PIN_0 = 0x0C00, ///< IO port 12 pin 0 + BSP_IO_PORT_12_PIN_1 = 0x0C01, ///< IO port 12 pin 1 + BSP_IO_PORT_12_PIN_2 = 0x0C02, ///< IO port 12 pin 2 + BSP_IO_PORT_12_PIN_3 = 0x0C03, ///< IO port 12 pin 3 + BSP_IO_PORT_12_PIN_4 = 0x0C04, ///< IO port 12 pin 4 + BSP_IO_PORT_12_PIN_5 = 0x0C05, ///< IO port 12 pin 5 + BSP_IO_PORT_12_PIN_6 = 0x0C06, ///< IO port 12 pin 6 + BSP_IO_PORT_12_PIN_7 = 0x0C07, ///< IO port 12 pin 7 + + BSP_IO_PORT_13_PIN_0 = 0x0D00, ///< IO port 13 pin 0 + BSP_IO_PORT_13_PIN_1 = 0x0D01, ///< IO port 13 pin 1 + BSP_IO_PORT_13_PIN_2 = 0x0D02, ///< IO port 13 pin 2 + BSP_IO_PORT_13_PIN_3 = 0x0D03, ///< IO port 13 pin 3 + BSP_IO_PORT_13_PIN_4 = 0x0D04, ///< IO port 13 pin 4 + BSP_IO_PORT_13_PIN_5 = 0x0D05, ///< IO port 13 pin 5 + BSP_IO_PORT_13_PIN_6 = 0x0D06, ///< IO port 13 pin 6 + BSP_IO_PORT_13_PIN_7 = 0x0D07, ///< IO port 13 pin 7 + + BSP_IO_PORT_14_PIN_0 = 0x0E00, ///< IO port 14 pin 0 + BSP_IO_PORT_14_PIN_1 = 0x0E01, ///< IO port 14 pin 1 + BSP_IO_PORT_14_PIN_2 = 0x0E02, ///< IO port 14 pin 2 + BSP_IO_PORT_14_PIN_3 = 0x0E03, ///< IO port 14 pin 3 + BSP_IO_PORT_14_PIN_4 = 0x0E04, ///< IO port 14 pin 4 + BSP_IO_PORT_14_PIN_5 = 0x0E05, ///< IO port 14 pin 5 + BSP_IO_PORT_14_PIN_6 = 0x0E06, ///< IO port 14 pin 6 + BSP_IO_PORT_14_PIN_7 = 0x0E07, ///< IO port 14 pin 7 + + BSP_IO_PORT_15_PIN_0 = 0x0F00, ///< IO port 15 pin 0 + BSP_IO_PORT_15_PIN_1 = 0x0F01, ///< IO port 15 pin 1 + BSP_IO_PORT_15_PIN_2 = 0x0F02, ///< IO port 15 pin 2 + BSP_IO_PORT_15_PIN_3 = 0x0F03, ///< IO port 15 pin 3 + BSP_IO_PORT_15_PIN_4 = 0x0F04, ///< IO port 15 pin 4 + BSP_IO_PORT_15_PIN_5 = 0x0F05, ///< IO port 15 pin 5 + BSP_IO_PORT_15_PIN_6 = 0x0F06, ///< IO port 15 pin 6 + BSP_IO_PORT_15_PIN_7 = 0x0F07, ///< IO port 15 pin 7 + + BSP_IO_PORT_16_PIN_0 = 0x1000, ///< IO port 16 pin 0 + BSP_IO_PORT_16_PIN_1 = 0x1001, ///< IO port 16 pin 1 + BSP_IO_PORT_16_PIN_2 = 0x1002, ///< IO port 16 pin 2 + BSP_IO_PORT_16_PIN_3 = 0x1003, ///< IO port 16 pin 3 + BSP_IO_PORT_16_PIN_4 = 0x1004, ///< IO port 16 pin 4 + BSP_IO_PORT_16_PIN_5 = 0x1005, ///< IO port 16 pin 5 + BSP_IO_PORT_16_PIN_6 = 0x1006, ///< IO port 16 pin 6 + BSP_IO_PORT_16_PIN_7 = 0x1007, ///< IO port 16 pin 7 + + BSP_IO_PORT_17_PIN_0 = 0x1100, ///< IO port 17 pin 0 + BSP_IO_PORT_17_PIN_1 = 0x1101, ///< IO port 17 pin 1 + BSP_IO_PORT_17_PIN_2 = 0x1102, ///< IO port 17 pin 2 + BSP_IO_PORT_17_PIN_3 = 0x1103, ///< IO port 17 pin 3 + BSP_IO_PORT_17_PIN_4 = 0x1104, ///< IO port 17 pin 4 + BSP_IO_PORT_17_PIN_5 = 0x1105, ///< IO port 17 pin 5 + BSP_IO_PORT_17_PIN_6 = 0x1106, ///< IO port 17 pin 6 + BSP_IO_PORT_17_PIN_7 = 0x1107, ///< IO port 17 pin 7 + + BSP_IO_PORT_18_PIN_0 = 0x1200, ///< IO port 18 pin 0 + BSP_IO_PORT_18_PIN_1 = 0x1201, ///< IO port 18 pin 1 + BSP_IO_PORT_18_PIN_2 = 0x1202, ///< IO port 18 pin 2 + BSP_IO_PORT_18_PIN_3 = 0x1203, ///< IO port 18 pin 3 + BSP_IO_PORT_18_PIN_4 = 0x1204, ///< IO port 18 pin 4 + BSP_IO_PORT_18_PIN_5 = 0x1205, ///< IO port 18 pin 5 + BSP_IO_PORT_18_PIN_6 = 0x1206, ///< IO port 18 pin 6 + BSP_IO_PORT_18_PIN_7 = 0x1207, ///< IO port 18 pin 7 + + BSP_IO_PORT_19_PIN_0 = 0x1300, ///< IO port 19 pin 0 + BSP_IO_PORT_19_PIN_1 = 0x1301, ///< IO port 19 pin 1 + BSP_IO_PORT_19_PIN_2 = 0x1302, ///< IO port 19 pin 2 + BSP_IO_PORT_19_PIN_3 = 0x1303, ///< IO port 19 pin 3 + BSP_IO_PORT_19_PIN_4 = 0x1304, ///< IO port 19 pin 4 + BSP_IO_PORT_19_PIN_5 = 0x1305, ///< IO port 19 pin 5 + BSP_IO_PORT_19_PIN_6 = 0x1306, ///< IO port 19 pin 6 + BSP_IO_PORT_19_PIN_7 = 0x1307, ///< IO port 19 pin 7 + + BSP_IO_PORT_20_PIN_0 = 0x1400, ///< IO port 20 pin 0 + BSP_IO_PORT_20_PIN_1 = 0x1401, ///< IO port 20 pin 1 + BSP_IO_PORT_20_PIN_2 = 0x1402, ///< IO port 20 pin 2 + BSP_IO_PORT_20_PIN_3 = 0x1403, ///< IO port 20 pin 3 + BSP_IO_PORT_20_PIN_4 = 0x1404, ///< IO port 20 pin 4 + BSP_IO_PORT_20_PIN_5 = 0x1405, ///< IO port 20 pin 5 + BSP_IO_PORT_20_PIN_6 = 0x1406, ///< IO port 20 pin 6 + BSP_IO_PORT_20_PIN_7 = 0x1407, ///< IO port 20 pin 7 + + BSP_IO_PORT_21_PIN_0 = 0x1500, ///< IO port 21 pin 0 + BSP_IO_PORT_21_PIN_1 = 0x1501, ///< IO port 21 pin 1 + BSP_IO_PORT_21_PIN_2 = 0x1502, ///< IO port 21 pin 2 + BSP_IO_PORT_21_PIN_3 = 0x1503, ///< IO port 21 pin 3 + BSP_IO_PORT_21_PIN_4 = 0x1504, ///< IO port 21 pin 4 + BSP_IO_PORT_21_PIN_5 = 0x1505, ///< IO port 21 pin 5 + BSP_IO_PORT_21_PIN_6 = 0x1506, ///< IO port 21 pin 6 + BSP_IO_PORT_21_PIN_7 = 0x1507, ///< IO port 21 pin 7 + + BSP_IO_PORT_22_PIN_0 = 0x1600, ///< IO port 22 pin 0 + BSP_IO_PORT_22_PIN_1 = 0x1601, ///< IO port 22 pin 1 + BSP_IO_PORT_22_PIN_2 = 0x1602, ///< IO port 22 pin 2 + BSP_IO_PORT_22_PIN_3 = 0x1603, ///< IO port 22 pin 3 + BSP_IO_PORT_22_PIN_4 = 0x1604, ///< IO port 22 pin 4 + BSP_IO_PORT_22_PIN_5 = 0x1605, ///< IO port 22 pin 5 + BSP_IO_PORT_22_PIN_6 = 0x1606, ///< IO port 22 pin 6 + BSP_IO_PORT_22_PIN_7 = 0x1607, ///< IO port 22 pin 7 + + BSP_IO_PORT_23_PIN_0 = 0x1700, ///< IO port 23 pin 0 + BSP_IO_PORT_23_PIN_1 = 0x1701, ///< IO port 23 pin 1 + BSP_IO_PORT_23_PIN_2 = 0x1702, ///< IO port 23 pin 2 + BSP_IO_PORT_23_PIN_3 = 0x1703, ///< IO port 23 pin 3 + BSP_IO_PORT_23_PIN_4 = 0x1704, ///< IO port 23 pin 4 + BSP_IO_PORT_23_PIN_5 = 0x1705, ///< IO port 23 pin 5 + BSP_IO_PORT_23_PIN_6 = 0x1706, ///< IO port 23 pin 6 + BSP_IO_PORT_23_PIN_7 = 0x1707, ///< IO port 23 pin 7 + + BSP_IO_PORT_24_PIN_0 = 0x1800, ///< IO port 24 pin 0 + BSP_IO_PORT_24_PIN_1 = 0x1801, ///< IO port 24 pin 1 + BSP_IO_PORT_24_PIN_2 = 0x1802, ///< IO port 24 pin 2 + BSP_IO_PORT_24_PIN_3 = 0x1803, ///< IO port 24 pin 3 + BSP_IO_PORT_24_PIN_4 = 0x1804, ///< IO port 24 pin 4 + BSP_IO_PORT_24_PIN_5 = 0x1805, ///< IO port 24 pin 5 + BSP_IO_PORT_24_PIN_6 = 0x1806, ///< IO port 24 pin 6 + BSP_IO_PORT_24_PIN_7 = 0x1807, ///< IO port 24 pin 7 +} bsp_io_port_pin_t; + +/** Offset for pin safety region access */ +typedef enum e_bsp_io_region +{ + BSP_IO_REGION_NOT_SAFE = 0, ///< Non safety region + BSP_IO_REGION_SAFE = BSP_IO_REGION_ADDRESS_DIFF, ///< Safety region +} bsp_io_region_t; + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ +extern volatile uint32_t g_protect_port_counter; + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Inline Functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Set the output level of the pin in the specified region. + * + * @param[in] region The target IO region + * @param[in] pin The pin + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_PinSet (bsp_io_region_t region, bsp_io_port_pin_t pin) +{ + /* Casting to a uint8_t type is valid because only the lower 8 bits of pin(uint16_t) are extracted by masking on + * the right side. */ + ((R_PORT_COMMON_Type *) (R_PORT_NSR_BASE + region))->P[pin >> + BSP_IO_PRV_PORT_OFFSET] |= + (uint8_t) (1UL << (pin & BSP_IO_PRV_8BIT_MASK)); +} + +/*******************************************************************************************************************//** + * Clear the output level of the pin in the specified region. + * + * @param[in] region The target IO region + * @param[in] pin The pin + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_PinClear (bsp_io_region_t region, bsp_io_port_pin_t pin) +{ + /* Casting to a uint8_t type is valid because only the lower 8 bits of pin(uint16_t) are extracted by masking on + * the right side. */ + ((R_PORT_COMMON_Type *) (R_PORT_NSR_BASE + region))->P[pin >> BSP_IO_PRV_PORT_OFFSET] &= + (uint8_t) (~(1UL << (pin & BSP_IO_PRV_8BIT_MASK))); +} + +/*******************************************************************************************************************//** + * Toggle the output level of the pin in the specified region. + * + * @param[in] region The target IO region + * @param[in] pin The pin + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_PinToggle (bsp_io_region_t region, bsp_io_port_pin_t pin) +{ + /* Casting to a uint8_t type is valid because only the lower 8 bits of pin(uint16_t) are extracted by masking on + * the right side. */ + ((R_PORT_COMMON_Type *) (R_PORT_NSR_BASE + region))->P[pin >> + BSP_IO_PRV_PORT_OFFSET] ^= + (uint8_t) (1UL << (pin & BSP_IO_PRV_8BIT_MASK)); +} + +/*******************************************************************************************************************//** + * Read the input level of the pin in the specified region. + * + * @param[in] region The target IO region + * @param[in] pin The pin + * + * @retval Current input level + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t R_BSP_FastPinRead (bsp_io_region_t region, bsp_io_port_pin_t pin) +{ + return (uint32_t) ((((R_PORT_COMMON_Type *) (R_PORT_NSR_BASE + region))->PIN[pin >> BSP_IO_PRV_PORT_OFFSET]) >> + (pin & BSP_IO_PRV_8BIT_MASK)) & 0x00000001UL; +} + +/*******************************************************************************************************************//** + * Set the output value of the port in the specified region. All pins in the port must be set to the same IO region to + * use this function. + * + * @param[in] region The target IO region + * @param[in] port The port + * @param[in] set_value The setting value + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_PortWrite (bsp_io_region_t region, bsp_io_port_t port, uint8_t set_value) +{ + ((R_PORT_COMMON_Type *) (R_PORT_NSR_BASE + region))->P[port >> BSP_IO_PRV_PORT_OFFSET] = set_value; +} + +/*******************************************************************************************************************//** + * Read the input value of the port in the specified region. All pins in the port must be set to the same IO region to + * use this function. + * + * @param[in] region The target IO region + * @param[in] port The port + * + * @retval Current input value + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t R_BSP_PortRead (bsp_io_region_t region, bsp_io_port_t port) +{ + return (uint32_t) (((R_PORT_COMMON_Type *) (R_PORT_NSR_BASE + region))->PIN[port >> BSP_IO_PRV_PORT_OFFSET]); +} + +/*******************************************************************************************************************//** + * 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_PORT_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_port_counter) + { + /** 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. */ + R_RWP_NS->PRCRN = ((R_RWP_NS->PRCRN | BSP_IO_PRV_PRCR_KEY) | BSP_IO_REG_PROTECT_GPIO); + R_RWP_S->PRCRS = ((R_RWP_S->PRCRS | BSP_IO_PRV_PRCR_KEY) | BSP_IO_REG_PROTECT_GPIO); + } + + /** Increment the protect counter */ + g_protect_port_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_PORT_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_port_counter) + { + /* Decrement the protect counter */ + g_protect_port_counter--; + } + + /** Is it safe to disable writing of PFS? */ + if (0 == g_protect_port_counter) + { + /** 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. */ + R_RWP_NS->PRCRN = ((R_RWP_NS->PRCRN | BSP_IO_PRV_PRCR_KEY) & (uint16_t) (~BSP_IO_REG_PROTECT_GPIO)); + R_RWP_S->PRCRS = ((R_RWP_S->PRCRS | BSP_IO_PRV_PRCR_KEY) & (uint16_t) (~BSP_IO_REG_PROTECT_GPIO)); + } + + /** Restore the interrupt state */ + FSP_CRITICAL_SECTION_EXIT; +#endif +} + +/*******************************************************************************************************************//** + * Read IO region of the pin. + * + * @param[in] pin The pin + * + * @retval BSP_IO_REGION_SAFE IO region of the pin is safety + * @retval BSP_IO_REGION_NOT_SAFE IO region of the pin is non-safety + * + * This function can be given as an argument to pin/port access functions described below. When used in a function + * starting with R_BSP_Port, any one pin in the port should be given as an argument to this function. + * R_BSP_PinSet(), R_BSP_PinClear(), R_BSP_PinToggle(), R_BSP_FastPinRead(), R_BSP_PortWrite(), R_BSP_PortRead() + * + * @note This function can be used to get the region of a specified pin, but the overhead should be considered if this + * function is executed each time the pin is accessed. When accessing the same pin repeatedly, it is recommended + * that the value obtained by this function be held in a variable beforehand, and the value of the variable be + * used as the region argument of the pin access function. + **********************************************************************************************************************/ +__STATIC_INLINE bsp_io_region_t R_BSP_IoRegionGet (bsp_io_port_pin_t pin) +{ + /* Casting to a uint32_t type is valid because the range of values represented by uint32_t is not over in the + * calculation process of the right-hand side. */ + uint32_t aselp = + ((uint32_t) ((R_PTADR->RSELP[pin >> BSP_IO_PRV_PORT_OFFSET]) >> (pin & BSP_IO_PRV_8BIT_MASK)) & 0x00000001UL); + + if (0U == aselp) + { + return BSP_IO_REGION_SAFE; + } + else + { + return BSP_IO_REGION_NOT_SAFE; + } +} + +/** @} (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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_irq.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_irq.c new file mode 100644 index 00000000000..3fe92cc3e2d --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_irq.c @@ -0,0 +1,50 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Initialize interrupt controller. + * + * @retval None + **********************************************************************************************************************/ +void bsp_irq_cfg (void) +{ + bsp_irq_core_cfg(); +} diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_irq.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_irq.h new file mode 100644 index 00000000000..f8fa8e2d021 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_irq.h @@ -0,0 +1,236 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_IRQ_H +#define BSP_IRQ_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ +#if defined(BSP_CFG_CORE_CR52) + #include "cr/bsp_irq_core.h" +#endif + +/** 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) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Inline Functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @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. */ + r_fsp_irq_context_set(irq, p_context); +} + +/*******************************************************************************************************************//** + * Clear the GIC pending interrupt. + * + * @param[in] irq Interrupt for which to clear the Pending bit. Note that the enums listed for IRQn_Type are + * only those for the Cortex Processor Exceptions Numbers. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqClearPending (IRQn_Type irq) +{ + r_bsp_irq_clear_pending(irq); +} + +/*******************************************************************************************************************//** + * Get the GIC pending interrupt. + * + * @param[in] irq Interrupt that gets a pending bit.. Note that the enums listed for IRQn_Type are + * only those for the Cortex Processor Exceptions Numbers. + * + * @return Value indicating the status of the level interrupt. + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t R_BSP_IrqPendingGet (IRQn_Type irq) +{ + return r_bsp_irq_pending_get(irq); +} + +/*******************************************************************************************************************//** + * Sets the interrupt priority and context. + * + * @param[in] irq The IRQ number to configure. + * @param[in] priority GIC priority of the interrupt + * @param[in] p_context The interrupt context is a pointer to data required in the ISR. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqCfg (IRQn_Type const irq, uint32_t priority, void * p_context) +{ + r_bsp_irq_cfg(irq, priority); + + /* Store the context. The context is recovered in the ISR. */ + R_FSP_IsrContextSet(irq, p_context); +} + +/*******************************************************************************************************************//** + * Enable the IRQ in the GIC (Without clearing the pending bit). + * + * @param[in] irq The IRQ number to enable. Note that the enums listed for IRQn_Type are only those for the + * Cortex Processor Exceptions Numbers. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqEnableNoClear (IRQn_Type const irq) +{ + r_bsp_irq_enable_no_clear(irq); +} + +/*******************************************************************************************************************//** + * Enable the IRQ in the GIC (With clearing the pending bit). + * + * @param[in] irq The IRQ number to enable. Note that the enums listed for IRQn_Type are only those for the + * Cortex Processor Exceptions Numbers. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqEnable (IRQn_Type const irq) +{ + /* Clear pending interrupts in the GIC. */ + R_BSP_IrqClearPending(irq); + + /* Enable the interrupt in the GIC. */ + R_BSP_IrqEnableNoClear(irq); +} + +/*******************************************************************************************************************//** + * Disables interrupts in the GIC. + * + * @param[in] irq The IRQ number to disable in the GIC. Note that the enums listed for IRQn_Type are + * only those for the Cortex Processor Exceptions Numbers. + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqDisable (IRQn_Type const irq) +{ + r_bsp_irq_disable(irq); +} + +/*******************************************************************************************************************//** + * Sets the interrupt priority and context, clears pending interrupts, then enables the interrupt. + * + * @param[in] irq Interrupt number. + * @param[in] priority GIC priority of the interrupt + * @param[in] p_context The interrupt context is a pointer to data required in the ISR. + **********************************************************************************************************************/ +__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 + BSP_VECTOR_NUM_OFFSET]; +} + +/*******************************************************************************************************************//** + * Sets the interrupt detect type. + * + * @param[in] irq The IRQ number to configure. + * @param[in] detect_type GIC detect type of the interrupt (0 : active-HIGH level, 1 : rising edge-triggerd). + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqDetectTypeSet (IRQn_Type const irq, uint32_t detect_type) +{ + r_bsp_irq_detect_type_set(irq, detect_type); +} + +/*******************************************************************************************************************//** + * Sets the interrupt Group. + * + * @param[in] irq The IRQ number to configure. + * @param[in] interrupt_group GIC interrupt group number ( 0 : FIQ, 1 : IRQ ). + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqGroupSet (IRQn_Type const irq, uint32_t interrupt_group) +{ + r_bsp_irq_group_set(irq, interrupt_group); +} + +/*******************************************************************************************************************//** + * Sets the interrupt mask level. + * + * @param[in] mask_level The interrupt mask level + **********************************************************************************************************************/ +__STATIC_INLINE void R_BSP_IrqMaskLevelSet (uint32_t mask_level) +{ + FSP_CRITICAL_SECTION_SET_STATE(mask_level << BSP_FEATURE_BSP_IRQ_PRIORITY_POS_BIT); +} + +/*******************************************************************************************************************//** + * Gets the interrupt mask level. + * + * @return Value indicating the interrupt mask level. + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t R_BSP_IrqMaskLevelGet (void) +{ + return (uint32_t) ((FSP_CRITICAL_SECTION_GET_CURRENT_STATE() >> BSP_FEATURE_BSP_IRQ_PRIORITY_POS_BIT) & + 0x0000001FUL); +} + +/** @} (end addtogroup BSP_MCU) */ + +/*******************************************************************************************************************//** + * @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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_mcu_api.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_mcu_api.h new file mode 100644 index 00000000000..12eab87147f --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_mcu_api.h @@ -0,0 +1,64 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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 + +/*********************************************************************************************************************** + * 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 + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ +typedef struct st_bsp_event_info +{ + IRQn_Type irq; + elc_event_t event; +} bsp_event_info_t; + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +void R_BSP_RegisterProtectEnable(bsp_reg_protect_t regs_to_protect); +void R_BSP_RegisterProtectDisable(bsp_reg_protect_t regs_to_unprotect); +void R_BSP_SoftwareDelay(uint32_t delay, bsp_delay_units_t units); +void R_BSP_SystemReset(void); +void R_BSP_CPUReset(bsp_reset_t cpu); +void R_BSP_CPUResetRelease(bsp_reset_t cpu); +void R_BSP_ModuleResetEnable(bsp_module_reset_t module_to_enable); +void R_BSP_ModuleResetDisable(bsp_module_reset_t module_to_disable); + +/** 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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_module_stop.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_module_stop.h new file mode 100644 index 00000000000..fa92dd9cdb6 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_module_stop.h @@ -0,0 +1,228 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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 + +/*********************************************************************************************************************** + * 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 + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * 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. + **********************************************************************************************************************/ +#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); \ + BSP_MSTP_REG_ ## ip(channel); \ + BSP_MSTP_DMY_ ## ip(channel); \ + BSP_MSTP_DMY_ ## ip(channel); \ + BSP_MSTP_DMY_ ## ip(channel); \ + BSP_MSTP_DMY_ ## ip(channel); \ + BSP_MSTP_DMY_ ## ip(channel); \ + FSP_CRITICAL_SECTION_EXIT;} + +/*******************************************************************************************************************//** + * 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. + **********************************************************************************************************************/ +#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); \ + BSP_MSTP_REG_ ## ip(channel); \ + FSP_CRITICAL_SECTION_EXIT;} + +/** @} (end addtogroup BSP_MCU) */ + +#define BSP_MSTP_REG_FSP_IP_BSC(channel) R_SYSC_NS->MSTPCRA +#define BSP_MSTP_BIT_FSP_IP_BSC(channel) (1U); +#define BSP_MSTP_DMY_FSP_IP_BSC(channel) R_BSC->SDCR; + +#define BSP_MSTP_REG_FSP_IP_XSPI(channel) R_SYSC_NS->MSTPCRA +#define BSP_MSTP_BIT_FSP_IP_XSPI(channel) (1U << (4U + channel)); +#define BSP_MSTP_DMY_FSP_IP_XSPI(channel) (0 >= channel) ? R_XSPI0->WRAPCFG : R_XSPI1->WRAPCFG + +#define BSP_MSTP_REG_FSP_IP_SCI(channel) *((4U >= channel) ? &R_SYSC_NS->MSTPCRA : &R_SYSC_S->MSTPCRG) +#define BSP_MSTP_BIT_FSP_IP_SCI(channel) ((4U >= channel) ? (1U << (8U + channel)) : (1U)); +#define BSP_MSTP_DMY_FSP_IP_SCI(channel) (0 >= channel) ? R_SCI0->RDR : ((1 >= channel) ? R_SCI1->RDR : \ + ((2 >= \ + channel) ? R_SCI2->RDR : ((3 >= \ + channel) \ + ? R_SCI3 \ + ->RDR : \ + ((4 \ + >= \ + channel) \ + ? R_SCI4 \ + ->RDR : \ + R_SCI5-> \ + RDR)))) + +#define BSP_MSTP_REG_FSP_IP_IIC(channel) *((1U >= channel) ? &R_SYSC_NS->MSTPCRB : &R_SYSC_S->MSTPCRG) +#define BSP_MSTP_BIT_FSP_IP_IIC(channel) ((1U >= channel) ? (1U << (0U + channel)) : (1U << (1U))); +#define BSP_MSTP_DMY_FSP_IP_IIC(channel) (0 >= channel) ? R_IIC0->ICCR1 : ((1 >= channel) ? R_IIC1->ICCR1 \ + : R_IIC2->ICCR1) + +#define BSP_MSTP_REG_FSP_IP_SPI(channel) *((2U >= channel) ? &R_SYSC_NS->MSTPCRB : &R_SYSC_S->MSTPCRG) +#define BSP_MSTP_BIT_FSP_IP_SPI(channel) ((2U >= channel) ? (1U << (4U + channel)) : (1U << (2U))); +#define BSP_MSTP_DMY_FSP_IP_SPI(channel) (0 >= channel) ? R_SPI0->SPCKD : ((1 >= channel) ? R_SPI1->SPCKD : \ + ((2 >= \ + channel) ? R_SPI2->SPCKD : R_SPI3 \ + ->SPCKD)) + +#define BSP_MSTP_REG_FSP_IP_MTU3(channel) R_SYSC_NS->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_MTU3(channel) (1U); +#define BSP_MSTP_DMY_FSP_IP_MTU3(channel) R_MTU0->TCR; + +#define BSP_MSTP_REG_FSP_IP_GPT(channel) *((13U >= channel) ? &R_SYSC_NS->MSTPCRC : &R_SYSC_S->MSTPCRG) +#define BSP_MSTP_BIT_FSP_IP_GPT(channel) ((6U >= channel) ? (1U << (1U)) : ((13U >= channel) ? \ + (1U << (2U)) : (1U << (3U)))); +#define BSP_MSTP_DMY_FSP_IP_GPT(channel) (6 >= \ + channel) ? R_GPT0->GTSTR : ((13 >= \ + channel) ? R_GPT7->GTSTR : R_GPT14-> \ + GTSTR); +#define BSP_MSTP_REG_FSP_IP_TFU(channel) R_SYSC_NS->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_TFU(channel) (1U << (5U)); +#define BSP_MSTP_DMY_FSP_IP_TFU(channel) R_TFU->TRGSTS; + +#define BSP_MSTP_REG_FSP_IP_ADC12(channel) R_SYSC_NS->MSTPCRC +#define BSP_MSTP_BIT_FSP_IP_ADC12(channel) (1U << (6U + channel)); +#define BSP_MSTP_DMY_FSP_IP_ADC12(channel) (0 >= channel) ? R_ADC120->ADCSR : R_ADC121->ADCSR; + +#define BSP_MSTP_REG_FSP_IP_DSMIF(channel) R_SYSC_NS->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_DSMIF(channel) (1U << (0U + channel)); +#define BSP_MSTP_DMY_FSP_IP_DSMIF(channel) (0 >= channel) ? R_DSMIF0->DSSEICR : R_DSMIF1->DSSEICR + +#define BSP_MSTP_REG_FSP_IP_CMT(channel) R_SYSC_NS->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_CMT(channel) (1U << (2U + channel)); +#define BSP_MSTP_DMY_FSP_IP_CMT(channel) (0 >= \ + channel) ? R_CMT->UNT[0].CMSTR0 : ((1 >= \ + channel) ? R_CMT->UNT[1].CMSTR0 \ + : R_CMT->UNT[2].CMSTR0) + +#define BSP_MSTP_REG_FSP_IP_CMTW(channel) R_SYSC_NS->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_CMTW(channel) (1U << (5U + channel)); +#define BSP_MSTP_DMY_FSP_IP_CMTW(channel) (0 >= channel) ? R_CMTW0->CMWSTR : R_CMTW1->CMWSTR + +#define BSP_MSTP_REG_FSP_IP_TSU(channel) R_SYSC_NS->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_TSU(channel) (1U << (7U)); +#define BSP_MSTP_DMY_FSP_IP_TSU(channel) R_TSU->TSUSM; + +#define BSP_MSTP_REG_FSP_IP_DOC(channel) R_SYSC_NS->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_DOC(channel) (1U << (8U)); +#define BSP_MSTP_DMY_FSP_IP_DOC(channel) R_DOC->DOCR + +#define BSP_MSTP_REG_FSP_IP_CRC(channel) *((0U == channel) ? &R_SYSC_NS->MSTPCRD : &R_SYSC_S->MSTPCRG) +#define BSP_MSTP_BIT_FSP_IP_CRC(channel) ((0U == channel) ? (1U << (9U)) : (1U << (4U))); +#define BSP_MSTP_DMY_FSP_IP_CRC(channel) (0 >= channel) ? R_CRC0->CRCDIR : R_CRC1->CRCDIR; + +#define BSP_MSTP_REG_FSP_IP_CANFD(channel) R_SYSC_NS->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_CANFD(channel) (1U << (10U)); +#define BSP_MSTP_DMY_FSP_IP_CANFD(channel) R_CANFD->CFDGIPV; + +#define BSP_MSTP_REG_FSP_IP_CKIO(channel) R_SYSC_NS->MSTPCRD +#define BSP_MSTP_BIT_FSP_IP_CKIO(channel) (1U << (11U)); +#define BSP_MSTP_DMY_FSP_IP_CKIO(channel) ; + +#define BSP_MSTP_REG_FSP_IP_GMAC(channel) R_SYSC_NS->MSTPCRE +#define BSP_MSTP_BIT_FSP_IP_GMAC(channel) (1U); +#define BSP_MSTP_DMY_FSP_IP_GMAC(channel) R_GMAC->MAC_Configuration + +#define BSP_MSTP_REG_FSP_IP_ETHSW(channel) R_SYSC_NS->MSTPCRE +#define BSP_MSTP_BIT_FSP_IP_ETHSW(channel) (1U << (1U)); +#define BSP_MSTP_DMY_FSP_IP_ETHSW(channel) R_ETHSW->REVISION + +#define BSP_MSTP_REG_FSP_IP_ESC(channel) R_SYSC_NS->MSTPCRE +#define BSP_MSTP_BIT_FSP_IP_ESC(channel) (1U << (2U)); +#define BSP_MSTP_DMY_FSP_IP_ESC(channel) R_ESC->TYPE; + +#define BSP_MSTP_REG_FSP_IP_ETHSS(channel) R_SYSC_NS->MSTPCRE +#define BSP_MSTP_BIT_FSP_IP_ETHSS(channel) (1U << (3U)); +#define BSP_MSTP_DMY_FSP_IP_ETHSS(channel) R_ETHSS->PRCMD + +#define BSP_MSTP_REG_FSP_IP_ENCIF(channel) R_SYSC_NS->MSTPCRE +#define BSP_MSTP_BIT_FSP_IP_ENCIF(channel) (1U << (4U)); +#define BSP_MSTP_DMY_FSP_IP_ENCIF(channel) ; + +#define BSP_MSTP_REG_FSP_IP_USBHS(channel) R_SYSC_NS->MSTPCRE +#define BSP_MSTP_BIT_FSP_IP_USBHS(channel) (1U << (8U)); +#define BSP_MSTP_DMY_FSP_IP_USBHS(channel) R_USBHC->HCREVISION; + +#define BSP_MSTP_REG_FSP_IP_TRACECLOCK(channel) R_SYSC_S->MSTPCRF +#define BSP_MSTP_BIT_FSP_IP_TRACECLOCK(channel) (1U << (0U)); +#define BSP_MSTP_DMY_FSP_IP_TRACECLOCK(channel) ; + +#define BSP_MSTP_REG_FSP_IP_RTC(channel) R_SYSC_S->MSTPCRG +#define BSP_MSTP_BIT_FSP_IP_RTC(channel) (1U << (5U)); +#define BSP_MSTP_DMY_FSP_IP_RTC(channel) R_RTC->RTCA0CTL0; + +#define BSP_MSTP_REG_FSP_IP_CLMA(channel) R_SYSC_S->MSTPCRG +#define BSP_MSTP_BIT_FSP_IP_CLMA(channel) ((2U >= channel) ? \ + (1U << (9U + channel)) : (1U << (8U))); +#define BSP_MSTP_DMY_FSP_IP_CLMA(channel) (0 >= \ + channel) ? R_CLMA0->CTL0 : ((1 >= \ + channel) ? R_CLMA1->CTL0 : ((2 >= \ + channel) ? \ + R_CLMA2-> \ + CTL0 : \ + R_CLMA3-> \ + CTL0)); + +#define BSP_MSTP_REG_FSP_IP_SHOSTIF(channel) R_SYSC_S->MSTPCRI +#define BSP_MSTP_BIT_FSP_IP_SHOSTIF(channel) (1U << (1U)); +#define BSP_MSTP_DMY_FSP_IP_SHOSTIF(channel) ; + +#define BSP_MSTP_REG_FSP_IP_PHOSTIF(channel) R_SYSC_S->MSTPCRI +#define BSP_MSTP_BIT_FSP_IP_PHOSTIF(channel) (1U << (0U)); +#define BSP_MSTP_DMY_FSP_IP_PHOSTIF(channel) ; + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/** 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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_register_protection.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_register_protection.c new file mode 100644 index 00000000000..8db202648dc --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_register_protection.c @@ -0,0 +1,116 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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) + **********************************************************************************************************************/ + +/** Used for holding reference counters for protection bits. */ +volatile uint16_t g_protect_counters[] = +{ + 0U, 0U, 0U, 0U +}; + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/** 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. */ + 0x0004U, /* PRC2. */ + 0x0008U, /* PRC3. */ +}; + +/*******************************************************************************************************************//** + * @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) +{ + /* 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. */ + R_RWP_NS->PRCRN = ((R_RWP_NS->PRCRN | BSP_PRV_PRCR_KEY) & (uint16_t) (~g_prcr_masks[regs_to_protect])); + R_RWP_S->PRCRS = ((R_RWP_S->PRCRS | BSP_PRV_PRCR_KEY) & (uint16_t) (~g_prcr_masks[regs_to_protect])); + } +} + +/*******************************************************************************************************************//** + * 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) +{ + /* 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. */ + R_RWP_NS->PRCRN = ((R_RWP_NS->PRCRN | BSP_PRV_PRCR_KEY) | g_prcr_masks[regs_to_unprotect]); + R_RWP_S->PRCRS = ((R_RWP_S->PRCRS | BSP_PRV_PRCR_KEY) | g_prcr_masks[regs_to_unprotect]); + } + + /** Increment the protect counter */ + g_protect_counters[regs_to_unprotect]++; +} + +/** @} (end addtogroup BSP_MCU) */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_register_protection.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_register_protection.h new file mode 100644 index 00000000000..63917ea4690 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_register_protection.h @@ -0,0 +1,76 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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 + +/*********************************************************************************************************************** + * 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 + +/*********************************************************************************************************************** + * 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 low power consumption and reset. */ + BSP_REG_PROTECT_LPC_RESET, + + /** Enables writing to the registers related to GPIO. */ + BSP_REG_PROTECT_GPIO, + + /** Enables writing to the registers related to Non-Safety reg. */ + BSP_REG_PROTECT_SYSTEM, +} 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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_reset.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_reset.c new file mode 100644 index 00000000000..a8b44d2419d --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_reset.c @@ -0,0 +1,139 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_RESET_MRCTL_BIT_SHIFT_MASK (0x0000001FU) +#define BSP_RESET_MRCTL_SELECT_MASK (0x001F0000U) +#define BSP_RESET_MRCTL_REGION_SELECT_MASK (0x00400000U) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * + * @{ + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Occur the system software reset. + **********************************************************************************************************************/ +void R_BSP_SystemReset (void) +{ + /* System software reset. */ + R_SYSC_S->SWRSYS = BSP_PRV_RESET_KEY; +} + +/*******************************************************************************************************************//** + * Occur the CPU software reset. + * + * @param[in] cpu to be reset state. + **********************************************************************************************************************/ +void R_BSP_CPUReset (bsp_reset_t cpu) +{ + /* CPU0 software reset. */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_LPC_RESET); + R_SYSC_S->SWRCPU0 = BSP_PRV_RESET_KEY; + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_LPC_RESET); + __WFI(); + FSP_PARAMETER_NOT_USED(cpu); +} + +/*******************************************************************************************************************//** + * Release the CPU reset state. + * + * @param[in] cpu to be release reset state. + **********************************************************************************************************************/ +void R_BSP_CPUResetRelease (bsp_reset_t cpu) +{ + /* Release CPU0 reset state. */ + R_SYSC_S->SWRCPU0 = BSP_PRV_RESET_RELEASE_KEY; + FSP_PARAMETER_NOT_USED(cpu); +} + +/*******************************************************************************************************************//** + * Enable module reset state. + * + * @param[in] module_to_enable Modules to enable module reset state. + **********************************************************************************************************************/ +void R_BSP_ModuleResetEnable (bsp_module_reset_t module_to_enable) +{ + volatile uint32_t mrctl; + uint32_t * p_reg; + + /** When MRCTLn register exists in the safety region, + * it is necessary to add an offset of safety region. */ + p_reg = (uint32_t *) &R_SYSC_NS->MRCTLA + + (((module_to_enable & BSP_RESET_MRCTL_SELECT_MASK) >> 16U) + + (module_to_enable & BSP_RESET_MRCTL_REGION_SELECT_MASK)); + mrctl = 1U << (module_to_enable & BSP_RESET_MRCTL_BIT_SHIFT_MASK); + + /** Enable module reset state using MRCTLE register. */ + *p_reg |= mrctl; + + /** To ensure processing after module reset. */ + mrctl = *(volatile uint32_t *) (p_reg); +} + +/*******************************************************************************************************************//** + * Disable module reset state. + * + * @param[in] module_to_disable Modules to disable module reset state. + **********************************************************************************************************************/ +void R_BSP_ModuleResetDisable (bsp_module_reset_t module_to_disable) +{ + volatile uint32_t mrctl; + uint32_t * p_reg; + + /** When MRCTLn register exists in the safety region, + * it is necessary to add an offset of safety region. */ + p_reg = (uint32_t *) &R_SYSC_NS->MRCTLA + + (((module_to_disable & BSP_RESET_MRCTL_SELECT_MASK) >> 16U) + + (module_to_disable & BSP_RESET_MRCTL_REGION_SELECT_MASK)); + mrctl = 1U << (module_to_disable & BSP_RESET_MRCTL_BIT_SHIFT_MASK); + + /** Disable module stop state using MRCTLn register. */ + *p_reg &= ~mrctl; + + /** In order to secure processing after release from module reset, + * dummy read the same register at least three times. + * Refer to "Notes on Module Reset Control Register Operation" of the RZ microprocessor manual. */ + mrctl = *(volatile uint32_t *) (p_reg); + mrctl = *(volatile uint32_t *) (p_reg); + mrctl = *(volatile uint32_t *) (p_reg); +} + +/** @} (end addtogroup BSP_MCU) */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_reset.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_reset.h new file mode 100644 index 00000000000..10cd9c44db4 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_reset.h @@ -0,0 +1,150 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_RESET_H +#define BSP_RESET_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 + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* Key code for writing reset register. */ +#define BSP_PRV_RESET_KEY (0x4321A501U) +#define BSP_PRV_RESET_RELEASE_KEY (0x00000000U) + +/* MRCTL register selection. Bits 16-20 assign values in order for the module control registers (A=0, E=4). + * Bit 24 indicates whether MRCTLn register is in the safety region. */ +#define BSP_RESET_MRCTLA_SELECT (0x00000000U) +#define BSP_RESET_MRCTLE_SELECT (0x00040000U) +#define BSP_RESET_MRCTLI_SELECT (0x00480000U) + +/* MRCTL register bit number. */ +#define BSP_RESET_MRCTL_BIT0_SHIFT (0x00000000U) +#define BSP_RESET_MRCTL_BIT1_SHIFT (0x00000001U) +#define BSP_RESET_MRCTL_BIT2_SHIFT (0x00000002U) +#define BSP_RESET_MRCTL_BIT3_SHIFT (0x00000003U) +#define BSP_RESET_MRCTL_BIT4_SHIFT (0x00000004U) +#define BSP_RESET_MRCTL_BIT5_SHIFT (0x00000005U) +#define BSP_RESET_MRCTL_BIT6_SHIFT (0x00000006U) +#define BSP_RESET_MRCTL_BIT7_SHIFT (0x00000007U) +#define BSP_RESET_MRCTL_BIT8_SHIFT (0x00000008U) +#define BSP_RESET_MRCTL_BIT9_SHIFT (0x00000009U) +#define BSP_RESET_MRCTL_BIT10_SHIFT (0x0000000AU) +#define BSP_RESET_MRCTL_BIT11_SHIFT (0x0000000BU) +#define BSP_RESET_MRCTL_BIT12_SHIFT (0x0000000CU) +#define BSP_RESET_MRCTL_BIT13_SHIFT (0x0000000DU) +#define BSP_RESET_MRCTL_BIT14_SHIFT (0x0000000EU) +#define BSP_RESET_MRCTL_BIT15_SHIFT (0x0000000FU) +#define BSP_RESET_MRCTL_BIT16_SHIFT (0x00000010U) +#define BSP_RESET_MRCTL_BIT17_SHIFT (0x00000011U) +#define BSP_RESET_MRCTL_BIT18_SHIFT (0x00000012U) +#define BSP_RESET_MRCTL_BIT19_SHIFT (0x00000013U) +#define BSP_RESET_MRCTL_BIT20_SHIFT (0x00000014U) +#define BSP_RESET_MRCTL_BIT21_SHIFT (0x00000015U) +#define BSP_RESET_MRCTL_BIT22_SHIFT (0x00000016U) +#define BSP_RESET_MRCTL_BIT23_SHIFT (0x00000017U) +#define BSP_RESET_MRCTL_BIT24_SHIFT (0x00000018U) +#define BSP_RESET_MRCTL_BIT25_SHIFT (0x00000019U) +#define BSP_RESET_MRCTL_BIT26_SHIFT (0x0000001AU) +#define BSP_RESET_MRCTL_BIT27_SHIFT (0x0000001BU) +#define BSP_RESET_MRCTL_BIT28_SHIFT (0x0000001CU) +#define BSP_RESET_MRCTL_BIT29_SHIFT (0x0000001DU) +#define BSP_RESET_MRCTL_BIT30_SHIFT (0x0000001EU) +#define BSP_RESET_MRCTL_BIT31_SHIFT (0x0000001FU) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU + * @{ + **********************************************************************************************************************/ + +/** CPU to be reset target.*/ +typedef enum e_bsp_reset +{ + BSP_RESET_CR52_0 = 0, ///< Software reset for CR52_0 +} bsp_reset_t; + +/** The different types of registers that can control the reset of peripheral modules related to Ethernet. */ +typedef enum e_bsp_module_reset +{ + /** Enables writing to the registers related to xSPI Unit 0 reset control. */ + BSP_MODULE_RESET_XSPI0 = (BSP_RESET_MRCTLA_SELECT | BSP_RESET_MRCTL_BIT4_SHIFT), + + /** Enables writing to the registers related to xSPI Unit 1 reset control. */ + BSP_MODULE_RESET_XSPI1 = (BSP_RESET_MRCTLA_SELECT | BSP_RESET_MRCTL_BIT5_SHIFT), + + /** Enables writing to the registers related to GMAC (PCLKH clock domain) reset control. */ + BSP_MODULE_RESET_GMAC0_PCLKH = (BSP_RESET_MRCTLE_SELECT | BSP_RESET_MRCTL_BIT0_SHIFT), + + /** Enables writing to the registers related to GMAC (PCLKM clock domain) reset control. */ + BSP_MODULE_RESET_GMAC0_PCLKM = (BSP_RESET_MRCTLE_SELECT | BSP_RESET_MRCTL_BIT1_SHIFT), + + /** Enables writing to the registers related to ETHSW reset control. */ + BSP_MODULE_RESET_ETHSW = (BSP_RESET_MRCTLE_SELECT | BSP_RESET_MRCTL_BIT2_SHIFT), + + /** Enables writing to the registers related to ESC (Bus clock domain) reset control. */ + BSP_MODULE_RESET_ESC_BUS = (BSP_RESET_MRCTLE_SELECT | BSP_RESET_MRCTL_BIT3_SHIFT), + + /** Enables writing to the registers related to ESC (IP clock domain) reset control. */ + BSP_MODULE_RESET_ESC_IP = (BSP_RESET_MRCTLE_SELECT | BSP_RESET_MRCTL_BIT4_SHIFT), + + /** Enables writing to the registers related to Ethernet subsystem register reset control. */ + BSP_MODULE_RESET_ESC_ETH_SUBSYSTEM = (BSP_RESET_MRCTLE_SELECT | BSP_RESET_MRCTL_BIT5_SHIFT), + + /** Enables writing to the registers related to MII converter reset control. */ + BSP_MODULE_RESET_MII = (BSP_RESET_MRCTLE_SELECT | BSP_RESET_MRCTL_BIT6_SHIFT), + + /** Enables writing to the registers related to PHOSTIF reset control. */ + BSP_MODULE_RESET_PHOSTIF = (BSP_RESET_MRCTLI_SELECT | BSP_RESET_MRCTL_BIT0_SHIFT), + + /** Enables writing to the registers related to SHOSTIF (Master bus clock domain) reset control. */ + BSP_MODULE_RESET_SHOSTIF_MASTER_BUS_CLOCK = (BSP_RESET_MRCTLI_SELECT | BSP_RESET_MRCTL_BIT1_SHIFT), + + /** Enables writing to the registers related to SHOSTIF (Slave bus clock domain) reset control. */ + BSP_MODULE_RESET_SHOSTIF_SLAVE_BUS_CLOCK = (BSP_RESET_MRCTLI_SELECT | BSP_RESET_MRCTL_BIT2_SHIFT), + + /** Enables writing to the registers related to SHOSTIF (IP clock domain) reset control. */ + BSP_MODULE_RESET_SHOSTIF_IP_CLOCK = (BSP_RESET_MRCTLI_SELECT | BSP_RESET_MRCTL_BIT3_SHIFT), +} bsp_module_reset_t; + +/** @} (end addtogroup BSP_MCU) */ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/** 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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_sbrk.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_sbrk.c new file mode 100644 index 00000000000..35759244d0e --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_sbrk.c @@ -0,0 +1,108 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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 +#include +#include "bsp_api.h" + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private function prototypes + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ +caddr_t _sbrk(int incr); + +/*******************************************************************************************************************//** + * @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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_tfu.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_tfu.h new file mode 100644 index 00000000000..42304d7d02f --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/bsp_tfu.h @@ -0,0 +1,228 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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 + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * 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 + +#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 + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * 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; +} + +/** @} (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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_cache_core.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_cache_core.c new file mode 100644 index 00000000000..f85e3dbdae9 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_cache_core.c @@ -0,0 +1,48 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Powers on and off the L3 cache way. + **********************************************************************************************************************/ +void r_bsp_cache_l3_power_ctrl (void) +{ + /* Does nothing because CR52 does not have the CLUSTERPWRCTLR register. */ +} diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_cache_core.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_cache_core.h new file mode 100644 index 00000000000..a0ca23c5e6b --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_cache_core.h @@ -0,0 +1,52 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_CACHE_CORE_H +#define BSP_CACHE_CORE_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 + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +void r_bsp_cache_l3_power_ctrl(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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_delay_core.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_delay_core.c new file mode 100644 index 00000000000..9eea2c8a1da --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_delay_core.c @@ -0,0 +1,63 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * 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 r_bsp_software_delay_loop (__attribute__((unused)) uint32_t loop_cnt) +{ + __asm volatile ("sw_delay_loop: \n" + +#if defined(__ICCARM__) || defined(__ARMCC_VERSION) + " subs r0, #1 \n" ///< 1 cycle +#elif defined(__GNUC__) + " sub r0, r0, #1 \n" ///< 1 cycle +#endif + + " cmp r0, #0 \n" ///< 1 cycle + + " bne sw_delay_loop \n" ///< 2 cycles + + " bx lr \n"); ///< 2 cycles +} diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_delay_core.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_delay_core.h new file mode 100644 index 00000000000..1e31cd2b4e1 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_delay_core.h @@ -0,0 +1,63 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_CORE_H +#define BSP_DELAY_CORE_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 + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/* The number of cycles required per software delay loop. */ +#ifndef BSP_DELAY_LOOP_CYCLES + #define BSP_DELAY_LOOP_CYCLES (4) +#endif + +/* Calculates the number of delay loops to pass to r_bsp_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 r_bsp_software_delay_loop cannot be called with a loop count + * of 0. */ +#define BSP_DELAY_LOOPS_CALCULATE(cycles) (((cycles) / BSP_DELAY_LOOP_CYCLES) + 1U) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +BSP_ATTRIBUTE_STACKLESS void r_bsp_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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.c new file mode 100644 index 00000000000..d31ab2fb5b1 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.c @@ -0,0 +1,146 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_CLEAR_REG_MAX (13U) +#define BSP_PRV_ALL_BIT_CLEAR (0xFFFFFFFFU) + +#define BSP_PRV_ID_MASK (0x000003FFU) +#define BSP_PRV_INTERRUPTABLE_NUM (32U) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ +#if VECTOR_DATA_IRQ_COUNT > 0 +extern fsp_vector_t g_vector_table[BSP_ICU_VECTOR_MAX_ENTRIES]; +#endif +extern fsp_vector_t g_sgi_ppi_vector_table[BSP_CORTEX_VECTOR_TABLE_ENTRIES]; + +extern const uint32_t BSP_GICD_ICFGR_INIT[BSP_NON_SELECTABLE_ICFGR_MAX]; + +/* This table is used to store the context in the ISR. */ +void * gp_renesas_isr_context[BSP_ICU_VECTOR_MAX_ENTRIES + BSP_CORTEX_VECTOR_TABLE_ENTRIES]; + +/* GIC current interrupt ID and variable. */ +IRQn_Type g_current_interrupt_num[BSP_PRV_INTERRUPTABLE_NUM]; +uint8_t g_current_interrupt_pointer = 0; + +const bsp_interrupt_event_t g_interrupt_event_link_select[BSP_ICU_VECTOR_MAX_ENTRIES] BSP_WEAK_REFERENCE = +{ + (bsp_interrupt_event_t) 0 +}; + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * 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_core_cfg (void) +{ + uint32_t gicd_reg_num; + GICD_Type * GICD; + GICR_CONTROL_TARGET_Type * GICR_TARGET0_IFREG; + + GICD = BSP_PRV_GICD_ADDRESS; + GICR_TARGET0_IFREG = BSP_PRV_GICR_TARGET0_IFREG_ADDRESS; + + /* Enable Group1 interrupts from the GIC Distributor to the GIC CPU interface. */ + GICD->GICD_CTLR |= 0x00000002UL; + + /* Release Processor Sleep state of the target. */ + GICR_TARGET0_IFREG->GICR_WAKER = 0x00000000UL; + + /* Initialize GICD_ICFGR register for the edge-triggered interrupt. */ + for (gicd_reg_num = 0; gicd_reg_num < BSP_NON_SELECTABLE_ICFGR_MAX; gicd_reg_num++) + { + GICD->GICD_ICFGR[gicd_reg_num] = BSP_GICD_ICFGR_INIT[gicd_reg_num]; + } + + /* Clear the Pending and Active bit for the all interrupts. */ + for (gicd_reg_num = 0; gicd_reg_num < BSP_PRV_CLEAR_REG_MAX; gicd_reg_num++) + { + GICD->GICD_ICPENDR[gicd_reg_num] = BSP_PRV_ALL_BIT_CLEAR; + GICD->GICD_ICACTIVER[gicd_reg_num] = BSP_PRV_ALL_BIT_CLEAR; + } + + __asm volatile ("cpsie i \n" /* Enable IRQ Interrupts */ + "cpsie f \n" /* Enable FIQ Interrupts */ + "cpsie a \n" /* Enable SError Interrupts */ + "isb"); /* Ensuring Context-changing */ +} + +/*******************************************************************************************************************//** + * This function is called first when an interrupt is generated and branches to each interrupt isr function. + * + * @param[in] id GIC INTID used to identify the interrupt. + **********************************************************************************************************************/ +void bsp_common_interrupt_handler (uint32_t id) +{ + uint16_t gic_intid; + IRQn_Type irq; + + /* Get interrupt ID (GIC INTID). */ + gic_intid = (uint16_t) (id & BSP_PRV_ID_MASK); + + irq = (IRQn_Type) (gic_intid - BSP_CORTEX_VECTOR_TABLE_ENTRIES); + + /* Remain the interrupt number */ + g_current_interrupt_num[g_current_interrupt_pointer++] = irq; + __asm volatile ("dmb"); + + BSP_CFG_MULTIPLEX_INTERRUPT_ENABLE + +#if VECTOR_DATA_IRQ_COUNT > 0 + if (BSP_CORTEX_VECTOR_TABLE_ENTRIES <= gic_intid) + { + /* Branch to an interrupt handler. */ + g_vector_table[irq](); + } + else +#endif + { + /* Branch to an interrupt handler. */ + g_sgi_ppi_vector_table[gic_intid](); + } + + g_current_interrupt_pointer--; + + BSP_CFG_MULTIPLEX_INTERRUPT_DISABLE +} diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.h new file mode 100644 index 00000000000..60588e23256 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.h @@ -0,0 +1,347 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_IRQ_CORE_H +#define BSP_IRQ_CORE_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 + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#define BSP_ICU_VECTOR_MAX_ENTRIES (BSP_VECTOR_TABLE_MAX_ENTRIES) + +#define BSP_PRV_GICD_ADDRESS (GICD0) +#define BSP_PRV_GICR_TARGET0_INTREG_ADDRESS (GICR0_TARGET0_INTREG) +#define BSP_PRV_GICR_TARGET0_IFREG_ADDRESS (GICR0_TARGET0_IFREG) + +#define BSP_EVENT_SGI_PPI_ARRAY_NUM (2U) +#define BSP_NON_SELECTABLE_ICFGR_MAX (BSP_VECTOR_TABLE_MAX_ENTRIES / BSP_INTERRUPT_TYPE_OFFSET) + +#define BSP_PRV_IRQ_CONFIG_MASK (0x000000FFU) +#define BSP_PRV_GICD_ICFGR_INT_CONFIG_MASK (1UL << 1UL) + +#define BSP_PRV_GIC_REG_STRIDE04 (4U) +#define BSP_PRV_GIC_REG_STRIDE16 (16U) +#define BSP_PRV_GIC_REG_STRIDE32 (32U) + +#define BSP_PRV_GIC_REG_BITS1 (1U) +#define BSP_PRV_GIC_REG_BITS2 (2U) +#define BSP_PRV_GIC_REG_BITS8 (8U) + +#define BSP_PRV_GIC_REG_MASK_1BIT (1U) + +#define BSP_PRV_GIC_LOWEST_PPI_INTERRUPT_NUM (-17) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ +extern void * gp_renesas_isr_context[BSP_ICU_VECTOR_MAX_ENTRIES + BSP_CORTEX_VECTOR_TABLE_ENTRIES]; + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Inline Functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @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_irq_context_set (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 + BSP_VECTOR_NUM_OFFSET] = p_context; +} + +/*******************************************************************************************************************//** + * Clear the GIC pending interrupt. + * + * @param[in] irq Interrupt for which to clear the Pending bit. Note that the enums listed for IRQn_Type are + * only those for the Cortex Processor Exceptions Numbers. + **********************************************************************************************************************/ +__STATIC_INLINE void r_bsp_irq_clear_pending (IRQn_Type irq) +{ + GICD_Type * GICD; + GICR_SGI_PPI_Type * GICR_TARGET0_INTREG; + + GICD = BSP_PRV_GICD_ADDRESS; + GICR_TARGET0_INTREG = BSP_PRV_GICR_TARGET0_INTREG_ADDRESS; + + if (irq >= 0) + { + uint32_t _irq = (uint32_t) irq; + GICD->GICD_ICPENDR[_irq / BSP_PRV_GIC_REG_STRIDE32] = + (uint32_t) (BSP_PRV_GIC_REG_BITS1 << (_irq % BSP_PRV_GIC_REG_STRIDE32)); + } + else + { + uint32_t _irq = (uint32_t) (irq + BSP_VECTOR_NUM_OFFSET); + GICR_TARGET0_INTREG->GICR_ICPENDR0 = (uint32_t) (BSP_PRV_GIC_REG_BITS1 << _irq); + } +} + +/*******************************************************************************************************************//** + * Get the GIC pending interrupt. + * + * @param[in] irq Interrupt that gets a pending bit.. Note that the enums listed for IRQn_Type are + * only those for the Cortex Processor Exceptions Numbers. + * + * @return Value indicating the status of the level interrupt. + **********************************************************************************************************************/ +__STATIC_INLINE uint32_t r_bsp_irq_pending_get (IRQn_Type irq) +{ + GICD_Type * GICD; + GICR_SGI_PPI_Type * GICR_TARGET0_INTREG; + uint32_t value = 0; + + GICD = BSP_PRV_GICD_ADDRESS; + GICR_TARGET0_INTREG = BSP_PRV_GICR_TARGET0_INTREG_ADDRESS; + + if (irq >= 0) + { + uint32_t _irq = (uint32_t) irq; + uint32_t shift = (_irq % BSP_PRV_GIC_REG_STRIDE32); + value = (GICD->GICD_ISPENDR[_irq / BSP_PRV_GIC_REG_STRIDE32] >> shift) & (uint32_t) (BSP_PRV_GIC_REG_MASK_1BIT); + } + else + { + uint32_t _irq = (uint32_t) (irq + BSP_VECTOR_NUM_OFFSET); + uint32_t shift = _irq; + value = (GICR_TARGET0_INTREG->GICR_ISPENDR0 >> shift) & (uint32_t) (BSP_PRV_GIC_REG_MASK_1BIT); + } + + return value; +} + +/*******************************************************************************************************************//** + * Sets the interrupt priority and context. + * + * @param[in] irq The IRQ number to configure. + * @param[in] priority GIC priority of the interrupt + **********************************************************************************************************************/ +__STATIC_INLINE void r_bsp_irq_cfg (IRQn_Type const irq, uint32_t priority) +{ +#if (52U == __CORTEX_R) + GICD_Type * GICD; + GICR_SGI_PPI_Type * GICR_TARGET0_INTREG; + + GICD = BSP_PRV_GICD_ADDRESS; + GICR_TARGET0_INTREG = BSP_PRV_GICR_TARGET0_INTREG_ADDRESS; + + if (irq >= 0) + { + uint32_t _irq = (uint32_t) irq; + + /* Set the interrupt group to 1 (IRQ) */ + GICD->GICD_IGROUPR[_irq / BSP_PRV_GIC_REG_STRIDE32] |= + (uint32_t) (BSP_PRV_GIC_REG_BITS1 << (_irq % BSP_PRV_GIC_REG_STRIDE32)); + + /* Set the interrupt priority */ + GICD->GICD_IPRIORITYR[_irq / BSP_PRV_GIC_REG_STRIDE04] &= + (uint32_t) (~(BSP_PRV_IRQ_CONFIG_MASK << (BSP_PRV_GIC_REG_BITS8 * (_irq % BSP_PRV_GIC_REG_STRIDE04)))); + GICD->GICD_IPRIORITYR[_irq / BSP_PRV_GIC_REG_STRIDE04] |= + (priority << + (BSP_FEATURE_BSP_IRQ_PRIORITY_POS_BIT + (BSP_PRV_GIC_REG_BITS8 * (_irq % BSP_PRV_GIC_REG_STRIDE04)))); + } + else + { + uint32_t _irq = (uint32_t) (irq + BSP_VECTOR_NUM_OFFSET); + + /* Set the interrupt group to 1 (IRQ) */ + GICR_TARGET0_INTREG->GICR_IGROUPR0 |= (uint32_t) (BSP_PRV_GIC_REG_BITS1 << _irq); + + /* Set the interrupt priority */ + GICR_TARGET0_INTREG->GICR_IPRIORITYR[_irq / BSP_PRV_GIC_REG_STRIDE04] &= + (uint32_t) (~(BSP_PRV_IRQ_CONFIG_MASK << (BSP_PRV_GIC_REG_BITS8 * (_irq % BSP_PRV_GIC_REG_STRIDE04)))); + GICR_TARGET0_INTREG->GICR_IPRIORITYR[_irq / BSP_PRV_GIC_REG_STRIDE04] |= + (priority << + (BSP_FEATURE_BSP_IRQ_PRIORITY_POS_BIT + (BSP_PRV_GIC_REG_BITS8 * (_irq % BSP_PRV_GIC_REG_STRIDE04)))); + } +#endif +} + +/*******************************************************************************************************************//** + * Enable the IRQ in the GIC (Without clearing the pending bit). + * + * @param[in] irq The IRQ number to enable. Note that the enums listed for IRQn_Type are only those for the + * Cortex Processor Exceptions Numbers. + **********************************************************************************************************************/ +__STATIC_INLINE void r_bsp_irq_enable_no_clear (IRQn_Type const irq) +{ + GICD_Type * GICD; + GICR_SGI_PPI_Type * GICR_TARGET0_INTREG; + + GICD = BSP_PRV_GICD_ADDRESS; + GICR_TARGET0_INTREG = BSP_PRV_GICR_TARGET0_INTREG_ADDRESS; + + if (irq >= 0) + { + uint32_t _irq = (uint32_t) irq; + GICD->GICD_ISENABLER[_irq / BSP_PRV_GIC_REG_STRIDE32] |= + (uint32_t) (BSP_PRV_GIC_REG_BITS1 << (_irq % BSP_PRV_GIC_REG_STRIDE32)); + } + else + { + uint32_t _irq = (uint32_t) (irq + BSP_VECTOR_NUM_OFFSET); + GICR_TARGET0_INTREG->GICR_ISENABLER0 |= (uint32_t) (BSP_PRV_GIC_REG_BITS1 << _irq); + } +} + +/*******************************************************************************************************************//** + * Disables interrupts in the GIC. + * + * @param[in] irq The IRQ number to disable in the GIC. Note that the enums listed for IRQn_Type are + * only those for the Cortex Processor Exceptions Numbers. + **********************************************************************************************************************/ +__STATIC_INLINE void r_bsp_irq_disable (IRQn_Type const irq) +{ + GICD_Type * GICD; + GICR_SGI_PPI_Type * GICR_TARGET0_INTREG; + + GICD = BSP_PRV_GICD_ADDRESS; + GICR_TARGET0_INTREG = BSP_PRV_GICR_TARGET0_INTREG_ADDRESS; + + if (irq >= 0) + { + uint32_t _irq = (uint32_t) irq; + GICD->GICD_ICENABLER[_irq / BSP_PRV_GIC_REG_STRIDE32] = + (uint32_t) (BSP_PRV_GIC_REG_BITS1 << (_irq % BSP_PRV_GIC_REG_STRIDE32)); + } + else + { + uint32_t _irq = (uint32_t) (irq + BSP_VECTOR_NUM_OFFSET); + GICR_TARGET0_INTREG->GICR_ICENABLER0 = (uint32_t) (BSP_PRV_GIC_REG_BITS1 << _irq); + } + + __DSB(); + __ISB(); +} + +/*******************************************************************************************************************//** + * Sets the interrupt detect type. + * + * @param[in] irq The IRQ number to configure. + * @param[in] detect_type GIC detect type of the interrupt (0 : active-HIGH level, 1 : rising edge-triggerd). + **********************************************************************************************************************/ +__STATIC_INLINE void r_bsp_irq_detect_type_set (IRQn_Type const irq, uint32_t detect_type) +{ + GICD_Type * GICD; + GICR_SGI_PPI_Type * GICR_TARGET0_INTREG; + + GICD = BSP_PRV_GICD_ADDRESS; + GICR_TARGET0_INTREG = BSP_PRV_GICR_TARGET0_INTREG_ADDRESS; + + if (irq >= 0) + { + uint32_t _irq = (uint32_t) irq; + if (0 != detect_type) + { + GICD->GICD_ICFGR[_irq / BSP_PRV_GIC_REG_STRIDE16] |= + (uint32_t) (BSP_PRV_GICD_ICFGR_INT_CONFIG_MASK << + (BSP_PRV_GIC_REG_BITS2 * (_irq % BSP_PRV_GIC_REG_STRIDE16))); + } + else + { + GICD->GICD_ICFGR[_irq / BSP_PRV_GIC_REG_STRIDE16] &= + ~((uint32_t) (BSP_PRV_GICD_ICFGR_INT_CONFIG_MASK << + (BSP_PRV_GIC_REG_BITS2 * (_irq % BSP_PRV_GIC_REG_STRIDE16)))); + } + } + else if (irq >= BSP_PRV_GIC_LOWEST_PPI_INTERRUPT_NUM) + { + uint32_t _irq = (uint32_t) (irq + BSP_VECTOR_NUM_OFFSET); + if (0 != detect_type) + { + GICR_TARGET0_INTREG->GICR_ICFGR1 |= + (uint32_t) (BSP_PRV_GICD_ICFGR_INT_CONFIG_MASK << + (BSP_PRV_GIC_REG_BITS2 * (_irq % BSP_PRV_GIC_REG_STRIDE16))); + } + else + { + GICR_TARGET0_INTREG->GICR_ICFGR1 &= + ~((uint32_t) (BSP_PRV_GICD_ICFGR_INT_CONFIG_MASK << + (BSP_PRV_GIC_REG_BITS2 * (_irq % BSP_PRV_GIC_REG_STRIDE16)))); + } + } + else + { + /* The register that sets the SGI interrupt type (GICR_ICFGR0) is read-only, so do not set it. */ + } +} + +/*******************************************************************************************************************//** + * Sets the interrupt Group. + * + * @param[in] irq The IRQ number to configure. + * @param[in] interrupt_group GIC interrupt group number ( 0 : FIQ, 1 : IRQ ). + **********************************************************************************************************************/ +__STATIC_INLINE void r_bsp_irq_group_set (IRQn_Type const irq, uint32_t interrupt_group) +{ + GICD_Type * GICD; + GICR_SGI_PPI_Type * GICR_TARGET0_INTREG; + + GICD = BSP_PRV_GICD_ADDRESS; + GICR_TARGET0_INTREG = BSP_PRV_GICR_TARGET0_INTREG_ADDRESS; + + if (irq >= 0) + { + uint32_t _irq = (uint32_t) irq; + GICD->GICD_IGROUPR[_irq / BSP_PRV_GIC_REG_STRIDE32] |= (interrupt_group << (_irq % BSP_PRV_GIC_REG_STRIDE32)); + } + else + { + uint32_t _irq = (uint32_t) (irq + BSP_VECTOR_NUM_OFFSET); + GICR_TARGET0_INTREG->GICR_IGROUPR0 |= interrupt_group << _irq; + } +} + +/*******************************************************************************************************************//** + * @internal + * @addtogroup BSP_MCU_PRV Internal BSP Documentation + * @ingroup RENESAS_INTERNAL + * @{ + **********************************************************************************************************************/ + +/* Public functions defined in bsp.h */ +void bsp_irq_core_cfg(void); // Used internally by BSP +void bsp_common_interrupt_handler(uint32_t id); + +/** @} (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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_elc.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_elc.h new file mode 100644 index 00000000000..8362b2fb7cc --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_elc.h @@ -0,0 +1,523 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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 + +/*********************************************************************************************************************** + * 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 + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU_RZN2L + * @{ + **********************************************************************************************************************/ + +/** 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_rzn2l +{ + ELC_EVENT_INTCPU0 = (0), // Software interrupt 0 + ELC_EVENT_INTCPU1 = (1), // Software interrupt 1 + ELC_EVENT_INTCPU2 = (2), // Software interrupt 2 + ELC_EVENT_INTCPU3 = (3), // Software interrupt 3 + ELC_EVENT_INTCPU4 = (4), // Software interrupt 4 + ELC_EVENT_INTCPU5 = (5), // Software interrupt 5 + ELC_EVENT_IRQ0 = (6), // External pin interrupt 0 + ELC_EVENT_IRQ1 = (7), // External pin interrupt 1 + ELC_EVENT_IRQ2 = (8), // External pin interrupt 2 + ELC_EVENT_IRQ3 = (9), // External pin interrupt 3 + ELC_EVENT_IRQ4 = (10), // External pin interrupt 4 + ELC_EVENT_IRQ5 = (11), // External pin interrupt 5 + ELC_EVENT_IRQ6 = (12), // External pin interrupt 6 + ELC_EVENT_IRQ7 = (13), // External pin interrupt 7 + ELC_EVENT_IRQ8 = (14), // External pin interrupt 8 + ELC_EVENT_IRQ9 = (15), // External pin interrupt 9 + ELC_EVENT_IRQ10 = (16), // External pin interrupt 10 + ELC_EVENT_IRQ11 = (17), // External pin interrupt 11 + ELC_EVENT_IRQ12 = (18), // External pin interrupt 12 + ELC_EVENT_IRQ13 = (19), // External pin interrupt 13 + ELC_EVENT_BSC_CMI = (20), // Refresh compare match interrupt + ELC_EVENT_DMAC0_INT0 = (21), // DMAC0 transfer completion 0 + ELC_EVENT_DMAC0_INT1 = (22), // DMAC0 transfer completion 1 + ELC_EVENT_DMAC0_INT2 = (23), // DMAC0 transfer completion 2 + ELC_EVENT_DMAC0_INT3 = (24), // DMAC0 transfer completion 3 + ELC_EVENT_DMAC0_INT4 = (25), // DMAC0 transfer completion 4 + ELC_EVENT_DMAC0_INT5 = (26), // DMAC0 transfer completion 5 + ELC_EVENT_DMAC0_INT6 = (27), // DMAC0 transfer completion 6 + ELC_EVENT_DMAC0_INT7 = (28), // DMAC0 transfer completion 7 + ELC_EVENT_DMAC1_INT0 = (37), // DMAC1 transfer completion 0 + ELC_EVENT_DMAC1_INT1 = (38), // DMAC1 transfer completion 1 + ELC_EVENT_DMAC1_INT2 = (39), // DMAC1 transfer completion 2 + ELC_EVENT_DMAC1_INT3 = (40), // DMAC1 transfer completion 3 + ELC_EVENT_DMAC1_INT4 = (41), // DMAC1 transfer completion 4 + ELC_EVENT_DMAC1_INT5 = (42), // DMAC1 transfer completion 5 + ELC_EVENT_DMAC1_INT6 = (43), // DMAC1 transfer completion 6 + ELC_EVENT_DMAC1_INT7 = (44), // DMAC1 transfer completion 7 + ELC_EVENT_CMT0_CMI = (53), // CMT0 Compare match + ELC_EVENT_CMT1_CMI = (54), // CMT1 Compare match + ELC_EVENT_CMT2_CMI = (55), // CMT2 Compare match + ELC_EVENT_CMT3_CMI = (56), // CMT3 Compare match + ELC_EVENT_CMT4_CMI = (57), // CMT4 Compare match + ELC_EVENT_CMT5_CMI = (58), // CMT5 Compare match + ELC_EVENT_CMTW0_CMWI = (59), // CMTW0 Compare match + ELC_EVENT_CMTW0_IC0I = (60), // CMTW0 Input capture of register 0 + ELC_EVENT_CMTW0_IC1I = (61), // CMTW0 Input capture of register 1 + ELC_EVENT_CMTW0_OC0I = (62), // CMTW0 Output compare of register 0 + ELC_EVENT_CMTW0_OC1I = (63), // CMTW0 Output compare of register 1 + ELC_EVENT_CMTW1_CMWI = (64), // CMTW1 Compare match + ELC_EVENT_CMTW1_IC0I = (65), // CMTW1 Input capture of register 0 + ELC_EVENT_CMTW1_IC1I = (66), // CMTW1 Input capture of register 1 + ELC_EVENT_CMTW1_OC0I = (67), // CMTW1 Output compare of register 0 + ELC_EVENT_CMTW1_OC1I = (68), // CMTW1 Output compare of register 1 + ELC_EVENT_TGIA0 = (69), // MTU0.TGRA input capture/compare match + ELC_EVENT_TGIB0 = (70), // MTU0.TGRB input capture/compare match + ELC_EVENT_TGIC0 = (71), // MTU0.TGRC input capture/compare match + ELC_EVENT_TGID0 = (72), // MTU0.TGRD input capture/compare match + ELC_EVENT_TCIV0 = (73), // MTU0.TCNT overflow + ELC_EVENT_TGIE0 = (74), // MTU0.TGRE compare match + ELC_EVENT_TGIF0 = (75), // MTU0.TGRF compare match + ELC_EVENT_TGIA1 = (76), // MTU1.TGRA input capture/compare match + ELC_EVENT_TGIB1 = (77), // MTU1.TGRB input capture/compare match + ELC_EVENT_TCIV1 = (78), // MTU1.TCNT overflow + ELC_EVENT_TCIU1 = (79), // MTU1.TCNT underflow + ELC_EVENT_TGIA2 = (80), // MTU2.TGRA input capture/compare match + ELC_EVENT_TGIB2 = (81), // MTU2.TGRB input capture/compare match + ELC_EVENT_TCIV2 = (82), // MTU2.TCNT overflow + ELC_EVENT_TCIU2 = (83), // MTU2.TCNT underflow + ELC_EVENT_TGIA3 = (84), // MTU3.TGRA input capture/compare match + ELC_EVENT_TGIB3 = (85), // MTU3.TGRB input capture/compare match + ELC_EVENT_TGIC3 = (86), // MTU3.TGRC input capture/compare match + ELC_EVENT_TGID3 = (87), // MTU3.TGRD input capture/compare match + ELC_EVENT_TCIV3 = (88), // MTU3.TCNT overflow + ELC_EVENT_TGIA4 = (89), // MTU4.TGRA input capture/compare match + ELC_EVENT_TGIB4 = (90), // MTU4.TGRB input capture/compare match + ELC_EVENT_TGIC4 = (91), // MTU4.TGRC input capture/compare match + ELC_EVENT_TGID4 = (92), // MTU4.TGRD input capture/compare match + ELC_EVENT_TCIV4 = (93), // MTU4.TCNT overflow/underflow + ELC_EVENT_TGIU5 = (94), // MTU5.TGRU input capture/compare match + ELC_EVENT_TGIV5 = (95), // MTU5.TGRV input capture/compare match + ELC_EVENT_TGIW5 = (96), // MTU5.TGRW input capture/compare match + ELC_EVENT_TGIA6 = (97), // MTU6.TGRA input capture/compare match + ELC_EVENT_TGIB6 = (98), // MTU6.TGRB input capture/compare match + ELC_EVENT_TGIC6 = (99), // MTU6.TGRC input capture/compare match + ELC_EVENT_TGID6 = (100), // MTU6.TGRD input capture/compare match + ELC_EVENT_TCIV6 = (101), // MTU6.TCNT overflow + ELC_EVENT_TGIA7 = (102), // MTU7.TGRA input capture/compare match + ELC_EVENT_TGIB7 = (103), // MTU7.TGRB input capture/compare match + ELC_EVENT_TGIC7 = (104), // MTU7.TGRC input capture/compare match + ELC_EVENT_TGID7 = (105), // MTU7.TGRD input capture/compare match + ELC_EVENT_TCIV7 = (106), // MTU7.TCNT overflow/underflow + ELC_EVENT_TGIA8 = (107), // MTU8.TGRA input capture/compare match + ELC_EVENT_TGIB8 = (108), // MTU8.TGRB input capture/compare match + ELC_EVENT_TGIC8 = (109), // MTU8.TGRC input capture/compare match + ELC_EVENT_TGID8 = (110), // MTU8.TGRD input capture/compare match + ELC_EVENT_TCIV8 = (111), // MTU8.TCNT overflow + ELC_EVENT_OEI1 = (112), // Output enable interrupt 1 + ELC_EVENT_OEI2 = (113), // Output enable interrupt 2 + ELC_EVENT_OEI3 = (114), // Output enable interrupt 3 + ELC_EVENT_OEI4 = (115), // Output enable interrupt 4 + ELC_EVENT_GPT0_CCMPA = (116), // GPT0 GTCCRA input capture/compare match + ELC_EVENT_GPT0_CCMPB = (117), // GPT0 GTCCRB input capture/compare match + ELC_EVENT_GPT0_CMPC = (118), // GPT0 GTCCRC compare match + ELC_EVENT_GPT0_CMPD = (119), // GPT0 GTCCRD compare match + ELC_EVENT_GPT0_CMPE = (120), // GPT0 GTCCRE compare match + ELC_EVENT_GPT0_CMPF = (121), // GPT0 GTCCRF compare match + ELC_EVENT_GPT0_OVF = (122), // GPT0 GTCNT overflow (GTPR compare match) + ELC_EVENT_GPT0_UDF = (123), // GPT0 GTCNT underflow + ELC_EVENT_GPT0_DTE = (124), // GPT0 Dead time error + ELC_EVENT_GPT1_CCMPA = (125), // GPT1 GTCCRA input capture/compare match + ELC_EVENT_GPT1_CCMPB = (126), // GPT1 GTCCRB input capture/compare match + ELC_EVENT_GPT1_CMPC = (127), // GPT1 GTCCRC compare match + ELC_EVENT_GPT1_CMPD = (128), // GPT1 GTCCRD compare match + ELC_EVENT_GPT1_CMPE = (129), // GPT1 GTCCRE compare match + ELC_EVENT_GPT1_CMPF = (130), // GPT1 GTCCRF compare match + ELC_EVENT_GPT1_OVF = (131), // GPT1 GTCNT overflow (GTPR compare match) + ELC_EVENT_GPT1_UDF = (132), // GPT1 GTCNT underflow + ELC_EVENT_GPT1_DTE = (133), // GPT1 Dead time error + ELC_EVENT_GPT2_CCMPA = (134), // GPT2 GTCCRA input capture/compare match + ELC_EVENT_GPT2_CCMPB = (135), // GPT2 GTCCRB input capture/compare match + ELC_EVENT_GPT2_CMPC = (136), // GPT2 GTCCRC compare match + ELC_EVENT_GPT2_CMPD = (137), // GPT2 GTCCRD compare match + ELC_EVENT_GPT2_CMPE = (138), // GPT2 GTCCRE compare match + ELC_EVENT_GPT2_CMPF = (139), // GPT2 GTCCRF compare match + ELC_EVENT_GPT2_OVF = (140), // GPT2 GTCNT overflow (GTPR compare match) + ELC_EVENT_GPT2_UDF = (141), // GPT2 GTCNT underflow + ELC_EVENT_GPT2_DTE = (142), // GPT2 Dead time error + ELC_EVENT_GPT3_CCMPA = (143), // GPT3 GTCCRA input capture/compare match + ELC_EVENT_GPT3_CCMPB = (144), // GPT3 GTCCRB input capture/compare match + ELC_EVENT_GPT3_CMPC = (145), // GPT3 GTCCRC compare match + ELC_EVENT_GPT3_CMPD = (146), // GPT3 GTCCRD compare match + ELC_EVENT_GPT3_CMPE = (147), // GPT3 GTCCRE compare match + ELC_EVENT_GPT3_CMPF = (148), // GPT3 GTCCRF compare match + ELC_EVENT_GPT3_OVF = (149), // GPT3 GTCNT overflow (GTPR compare match) + ELC_EVENT_GPT3_UDF = (150), // GPT3 GTCNT underflow + ELC_EVENT_GPT3_DTE = (151), // GPT3 Dead time error + ELC_EVENT_GPT4_CCMPA = (152), // GPT4 GTCCRA input capture/compare match + ELC_EVENT_GPT4_CCMPB = (153), // GPT4 GTCCRB input capture/compare match + ELC_EVENT_GPT4_CMPC = (154), // GPT4 GTCCRC compare match + ELC_EVENT_GPT4_CMPD = (155), // GPT4 GTCCRD compare match + ELC_EVENT_GPT4_CMPE = (156), // GPT4 GTCCRE compare match + ELC_EVENT_GPT4_CMPF = (157), // GPT4 GTCCRF compare match + ELC_EVENT_GPT4_OVF = (158), // GPT4 GTCNT overflow (GTPR compare match) + ELC_EVENT_GPT4_UDF = (159), // GPT4 GTCNT underflow + ELC_EVENT_GPT4_DTE = (160), // GPT4 Dead time error + ELC_EVENT_GPT5_CCMPA = (161), // GPT5 GTCCRA input capture/compare match + ELC_EVENT_GPT5_CCMPB = (162), // GPT5 GTCCRB input capture/compare match + ELC_EVENT_GPT5_CMPC = (163), // GPT5 GTCCRC compare match + ELC_EVENT_GPT5_CMPD = (164), // GPT5 GTCCRD compare match + ELC_EVENT_GPT5_CMPE = (165), // GPT5 GTCCRE compare match + ELC_EVENT_GPT5_CMPF = (166), // GPT5 GTCCRF compare match + ELC_EVENT_GPT5_OVF = (167), // GPT5 GTCNT overflow (GTPR compare match) + ELC_EVENT_GPT5_UDF = (168), // GPT5 GTCNT underflow + ELC_EVENT_GPT5_DTE = (169), // GPT5 Dead time error + ELC_EVENT_GPT6_CCMPA = (170), // GPT6 GTCCRA input capture/compare match + ELC_EVENT_GPT6_CCMPB = (171), // GPT6 GTCCRB input capture/compare match + ELC_EVENT_GPT6_CMPC = (172), // GPT6 GTCCRC compare match + ELC_EVENT_GPT6_CMPD = (173), // GPT6 GTCCRD compare match + ELC_EVENT_GPT6_CMPE = (174), // GPT6 GTCCRE compare match + ELC_EVENT_GPT6_CMPF = (175), // GPT6 GTCCRF compare match + ELC_EVENT_GPT6_OVF = (176), // GPT6 GTCNT overflow (GTPR compare match) + ELC_EVENT_GPT6_UDF = (177), // GPT6 GTCNT underflow + ELC_EVENT_GPT6_DTE = (178), // GPT6 Dead time error + ELC_EVENT_GPT7_CCMPA = (179), // GPT7 GTCCRA input capture/compare match + ELC_EVENT_GPT7_CCMPB = (180), // GPT7 GTCCRB input capture/compare match + ELC_EVENT_GPT7_CMPC = (181), // GPT7 GTCCRC compare match + ELC_EVENT_GPT7_CMPD = (182), // GPT7 GTCCRD compare match + ELC_EVENT_GPT7_CMPE = (183), // GPT7 GTCCRE compare match + ELC_EVENT_GPT7_CMPF = (184), // GPT7 GTCCRF compare match + ELC_EVENT_GPT7_OVF = (185), // GPT7 GTCNT overflow (GTPR compare match) + ELC_EVENT_GPT7_UDF = (186), // GPT7 GTCNT underflow + ELC_EVENT_GPT7_DTE = (187), // GPT7 Dead time error + ELC_EVENT_GPT8_CCMPA = (188), // GPT8 GTCCRA input capture/compare match + ELC_EVENT_GPT8_CCMPB = (189), // GPT8 GTCCRB input capture/compare match + ELC_EVENT_GPT8_CMPC = (190), // GPT8 GTCCRC compare match + ELC_EVENT_GPT8_CMPD = (191), // GPT8 GTCCRD compare match + ELC_EVENT_GPT8_CMPE = (192), // GPT8 GTCCRE compare match + ELC_EVENT_GPT8_CMPF = (193), // GPT8 GTCCRF compare match + ELC_EVENT_GPT8_OVF = (194), // GPT8 GTCNT overflow (GTPR compare match) + ELC_EVENT_GPT8_UDF = (195), // GPT8 GTCNT underflow + ELC_EVENT_GPT8_DTE = (196), // GPT8 Dead time error + ELC_EVENT_GPT9_CCMPA = (197), // GPT9 GTCCRA input capture/compare match + ELC_EVENT_GPT9_CCMPB = (198), // GPT9 GTCCRB input capture/compare match + ELC_EVENT_GPT9_CMPC = (199), // GPT9 GTCCRC compare match + ELC_EVENT_GPT9_CMPD = (200), // GPT9 GTCCRD compare match + ELC_EVENT_GPT9_CMPE = (201), // GPT9 GTCCRE compare match + ELC_EVENT_GPT9_CMPF = (202), // GPT9 GTCCRF compare match + ELC_EVENT_GPT9_OVF = (203), // GPT9 GTCNT overflow (GTPR compare match) + ELC_EVENT_GPT9_UDF = (204), // GPT9 GTCNT underflow + ELC_EVENT_GPT9_DTE = (205), // GPT9 Dead time error + ELC_EVENT_GPT10_CCMPA = (206), // GPT10 GTCCRA input capture/compare match + ELC_EVENT_GPT10_CCMPB = (207), // GPT10 GTCCRB input capture/compare match + ELC_EVENT_GPT10_CMPC = (208), // GPT10 GTCCRC compare match + ELC_EVENT_GPT10_CMPD = (209), // GPT10 GTCCRD compare match + ELC_EVENT_GPT10_CMPE = (210), // GPT10 GTCCRE compare match + ELC_EVENT_GPT10_CMPF = (211), // GPT10 GTCCRF compare match + ELC_EVENT_GPT10_OVF = (212), // GPT10 GTCNT overflow (GTPR compare match) + ELC_EVENT_GPT10_UDF = (213), // GPT10 GTCNT underflow + ELC_EVENT_GPT10_DTE = (214), // GPT10 Dead time error + ELC_EVENT_GPT11_CCMPA = (215), // GPT11 GTCCRA input capture/compare match + ELC_EVENT_GPT11_CCMPB = (216), // GPT11 GTCCRB input capture/compare match + ELC_EVENT_GPT11_CMPC = (217), // GPT11 GTCCRC compare match + ELC_EVENT_GPT11_CMPD = (218), // GPT11 GTCCRD compare match + ELC_EVENT_GPT11_CMPE = (219), // GPT11 GTCCRE compare match + ELC_EVENT_GPT11_CMPF = (220), // GPT11 GTCCRF compare match + ELC_EVENT_GPT11_OVF = (221), // GPT11 GTCNT overflow (GTPR compare match) + ELC_EVENT_GPT11_UDF = (222), // GPT11 GTCNT underflow + ELC_EVENT_GPT11_DTE = (223), // GPT11 Dead time error + ELC_EVENT_GPT12_CCMPA = (224), // GPT12 GTCCRA input capture/compare match + ELC_EVENT_GPT12_CCMPB = (225), // GPT12 GTCCRB input capture/compare match + ELC_EVENT_GPT12_CMPC = (226), // GPT12 GTCCRC compare match + ELC_EVENT_GPT12_CMPD = (227), // GPT12 GTCCRD compare match + ELC_EVENT_GPT12_CMPE = (228), // GPT12 GTCCRE compare match + ELC_EVENT_GPT12_CMPF = (229), // GPT12 GTCCRF compare match + ELC_EVENT_GPT12_OVF = (230), // GPT12 GTCNT overflow (GTPR compare match) + ELC_EVENT_GPT12_UDF = (231), // GPT12 GTCNT underflow + ELC_EVENT_GPT12_DTE = (232), // GPT12 Dead time error + ELC_EVENT_GPT13_CCMPA = (233), // GPT13 GTCCRA input capture/compare match + ELC_EVENT_GPT13_CCMPB = (234), // GPT13 GTCCRB input capture/compare match + ELC_EVENT_GPT13_CMPC = (235), // GPT13 GTCCRC compare match + ELC_EVENT_GPT13_CMPD = (236), // GPT13 GTCCRD compare match + ELC_EVENT_GPT13_CMPE = (237), // GPT13 GTCCRE compare match + ELC_EVENT_GPT13_CMPF = (238), // GPT13 GTCCRF compare match + ELC_EVENT_GPT13_OVF = (239), // GPT13 GTCNT overflow (GTPR compare match) + ELC_EVENT_GPT13_UDF = (240), // GPT13 GTCNT underflow + ELC_EVENT_GPT13_DTE = (241), // GPT13 Dead time error + ELC_EVENT_POEG0_GROUP0 = (242), // POEG group A interrupt for channels in LLPP + ELC_EVENT_POEG0_GROUP1 = (243), // POEG group B interrupt for channels in LLPP + ELC_EVENT_POEG0_GROUP2 = (244), // POEG group C interrupt for channels in LLPP + ELC_EVENT_POEG0_GROUP3 = (245), // POEG group D interrupt for channels in LLPP + ELC_EVENT_POEG1_GROUP0 = (246), // POEG group A interrupt for channels in NONSAFETY + ELC_EVENT_POEG1_GROUP1 = (247), // POEG group B interrupt for channels in NONSAFETY + ELC_EVENT_POEG1_GROUP2 = (248), // POEG group C interrupt for channels in NONSAFETY + ELC_EVENT_POEG1_GROUP3 = (249), // POEG group D interrupt for channels in NONSAFETY + ELC_EVENT_GMAC_LPI = (250), // GMAC1 energy efficient + ELC_EVENT_GMAC_PMT = (251), // GMAC1 power management + ELC_EVENT_GMAC_SBD = (252), // GMAC1 general interrupt + ELC_EVENT_ETHSW_INTR = (253), // Ethernet Switch interrupt + ELC_EVENT_ETHSW_DLR = (254), // Ethernet Switch DLR interrupt + ELC_EVENT_ETHSW_PRP = (255), // Ethernet Switch PRP interrupt + ELC_EVENT_ETHSW_IHUB = (256), // Ethernet Switch Integrated Hub interrupt + ELC_EVENT_ETHSW_PTRN0 = (257), // Ethernet Switch RX Pattern Matcher interrupt 0 + ELC_EVENT_ETHSW_PTRN1 = (258), // Ethernet Switch RX Pattern Matcher interrupt 1 + ELC_EVENT_ETHSW_PTRN2 = (259), // Ethernet Switch RX Pattern Matcher interrupt 2 + ELC_EVENT_ETHSW_PTRN3 = (260), // Ethernet Switch RX Pattern Matcher interrupt 3 + ELC_EVENT_ETHSW_PTRN4 = (261), // Ethernet Switch RX Pattern Matcher interrupt 4 + ELC_EVENT_ETHSW_PTRN5 = (262), // Ethernet Switch RX Pattern Matcher interrupt 5 + ELC_EVENT_ETHSW_PTRN6 = (263), // Ethernet Switch RX Pattern Matcher interrupt 6 + ELC_EVENT_ETHSW_PTRN7 = (264), // Ethernet Switch RX Pattern Matcher interrupt 7 + ELC_EVENT_ETHSW_PTRN8 = (265), // Ethernet Switch RX Pattern Matcher interrupt 8 + ELC_EVENT_ETHSW_PTRN9 = (266), // Ethernet Switch RX Pattern Matcher interrupt 9 + ELC_EVENT_ETHSW_PTRN10 = (267), // Ethernet Switch RX Pattern Matcher interrupt 10 + ELC_EVENT_ETHSW_PTRN11 = (268), // Ethernet Switch RX Pattern Matcher interrupt 11 + ELC_EVENT_ETHSW_PTPOUT0 = (269), // Ethernet switch timer pulse output 0 + ELC_EVENT_ETHSW_PTPOUT1 = (270), // Ethernet switch timer pulse output 1 + ELC_EVENT_ETHSW_PTPOUT2 = (271), // Ethernet switch timer pulse output 2 + ELC_EVENT_ETHSW_PTPOUT3 = (272), // Ethernet switch timer pulse output 3 + ELC_EVENT_ETHSW_TDMAOUT0 = (273), // Ethernet Switch TDMA timer output 0 + ELC_EVENT_ETHSW_TDMAOUT1 = (274), // Ethernet Switch TDMA timer output 1 + ELC_EVENT_ETHSW_TDMAOUT2 = (275), // Ethernet Switch TDMA timer output 2 + ELC_EVENT_ETHSW_TDMAOUT3 = (276), // Ethernet Switch TDMA timer output 3 + ELC_EVENT_ESC_SYNC0 = (277), // EtherCAT Sync0 interrupt + ELC_EVENT_ESC_SYNC1 = (278), // EtherCAT Sync1 interrupt + ELC_EVENT_ESC_CAT = (279), // EtherCAT interrupt + ELC_EVENT_ESC_SOF = (280), // EtherCAT SOF interrupt + ELC_EVENT_ESC_EOF = (281), // EtherCAT EOF interrupt + ELC_EVENT_ESC_WDT = (282), // EtherCAT WDT interrupt + ELC_EVENT_ESC_RST = (283), // EtherCAT RESET interrupt + ELC_EVENT_USB_HI = (284), // USB (Host) interrupt + ELC_EVENT_USB_FI = (285), // USB (Function) interrupt + ELC_EVENT_USB_FDMA0 = (286), // USB (Function) DMA 0 transmit completion + ELC_EVENT_USB_FDMA1 = (287), // USB (Function) DMA 1 transmit completion + ELC_EVENT_SCI0_ERI = (288), // SCI0 Receive error + ELC_EVENT_SCI0_RXI = (289), // SCI0 Receive data full + ELC_EVENT_SCI0_TXI = (290), // SCI0 Transmit data empty + ELC_EVENT_SCI0_TEI = (291), // SCI0 Transmit end + ELC_EVENT_SCI1_ERI = (292), // SCI1 Receive error + ELC_EVENT_SCI1_RXI = (293), // SCI1 Receive data full + ELC_EVENT_SCI1_TXI = (294), // SCI1 Transmit data empty + ELC_EVENT_SCI1_TEI = (295), // SCI1 Transmit end + ELC_EVENT_SCI2_ERI = (296), // SCI2 Receive error + ELC_EVENT_SCI2_RXI = (297), // SCI2 Receive data full + ELC_EVENT_SCI2_TXI = (298), // SCI2 Transmit data empty + ELC_EVENT_SCI2_TEI = (299), // SCI2 Transmit end + ELC_EVENT_SCI3_ERI = (300), // SCI3 Receive error + ELC_EVENT_SCI3_RXI = (301), // SCI3 Receive data full + ELC_EVENT_SCI3_TXI = (302), // SCI3 Transmit data empty + ELC_EVENT_SCI3_TEI = (303), // SCI3 Transmit end + ELC_EVENT_SCI4_ERI = (304), // SCI4 Receive error + ELC_EVENT_SCI4_RXI = (305), // SCI4 Receive data full + ELC_EVENT_SCI4_TXI = (306), // SCI4 Transmit data empty + ELC_EVENT_SCI4_TEI = (307), // SCI4 Transmit end + ELC_EVENT_IIC0_EEI = (308), // IIC0 Transfer error or event generation + ELC_EVENT_IIC0_RXI = (309), // IIC0 Receive data full + ELC_EVENT_IIC0_TXI = (310), // IIC0 Transmit data empty + ELC_EVENT_IIC0_TEI = (311), // IIC0 Transmit end + ELC_EVENT_IIC1_EEI = (312), // IIC1 Transfer error or event generation + ELC_EVENT_IIC1_RXI = (313), // IIC1 Receive data full + ELC_EVENT_IIC1_TXI = (314), // IIC1 Transmit data empty + ELC_EVENT_IIC1_TEI = (315), // IIC1 Transmit end + ELC_EVENT_CAN_RXF = (316), // CANFD RX FIFO interrupt + ELC_EVENT_CAN_GLERR = (317), // CANFD Global error interrupt + ELC_EVENT_CAN0_TX = (318), // CAFND0 Channel TX interrupt + ELC_EVENT_CAN0_CHERR = (319), // CAFND0 Channel CAN error interrupt + ELC_EVENT_CAN0_COMFRX = (320), // CAFND0 Common RX FIFO or TXQ interrupt + ELC_EVENT_CAN1_TX = (321), // CAFND1 Channel TX interrupt + ELC_EVENT_CAN1_CHERR = (322), // CAFND1 Channel CAN error interrupt + ELC_EVENT_CAN1_COMFRX = (323), // CAFND1 Common RX FIFO or TXQ interrupt + ELC_EVENT_SPI0_SPRI = (324), // SPI0 Reception buffer full + ELC_EVENT_SPI0_SPTI = (325), // SPI0 Transmit buffer empty + ELC_EVENT_SPI0_SPII = (326), // SPI0 SPI idle + ELC_EVENT_SPI0_SPEI = (327), // SPI0 errors + ELC_EVENT_SPI0_SPCEND = (328), // SPI0 Communication complete + ELC_EVENT_SPI1_SPRI = (329), // SPI1 Reception buffer full + ELC_EVENT_SPI1_SPTI = (330), // SPI1 Transmit buffer empty + ELC_EVENT_SPI1_SPII = (331), // SPI1 SPI idle + ELC_EVENT_SPI1_SPEI = (332), // SPI1 errors + ELC_EVENT_SPI1_SPCEND = (333), // SPI1 Communication complete + ELC_EVENT_SPI2_SPRI = (334), // SPI2 Reception buffer full + ELC_EVENT_SPI2_SPTI = (335), // SPI2 Transmit buffer empty + ELC_EVENT_SPI2_SPII = (336), // SPI2 SPI idle + ELC_EVENT_SPI2_SPEI = (337), // SPI2 errors + ELC_EVENT_SPI2_SPCEND = (338), // SPI2 Communication complete + ELC_EVENT_XSPI0_INT = (339), // xSPI0 Interrupt + ELC_EVENT_XSPI0_INTERR = (340), // xSPI0 Error interrupt + ELC_EVENT_XSPI1_INT = (341), // xSPI1 Interrupt + ELC_EVENT_XSPI1_INTERR = (342), // xSPI1 Error interrupt + ELC_EVENT_DSMIF0_CDRUI = (343), // DSMIF0 current data register update (ORed ch0 to ch2) + ELC_EVENT_DSMIF1_CDRUI = (344), // DSMIF1 current data register update (ORed ch3 to ch5) + ELC_EVENT_ADC0_ADI = (345), // ADC0 A/D scan end interrupt + ELC_EVENT_ADC0_GBADI = (346), // ADC0 A/D scan end interrupt for Group B + ELC_EVENT_ADC0_GCADI = (347), // ADC0 A/D scan end interrupt for Group C + ELC_EVENT_ADC0_CMPAI = (348), // ADC0 Window A compare match + ELC_EVENT_ADC0_CMPBI = (349), // ADC0 Window B compare match + ELC_EVENT_ADC1_ADI = (350), // ADC1 A/D scan end interrupt + ELC_EVENT_ADC1_GBADI = (351), // ADC1 A/D scan end interrupt for Group B + ELC_EVENT_ADC1_GCADI = (352), // ADC1 A/D scan end interrupt for Group C + ELC_EVENT_ADC1_CMPAI = (353), // ADC1 Window A compare match + ELC_EVENT_ADC1_CMPBI = (354), // ADC1 Window B compare match + ELC_EVENT_MBX_INT0 = (372), // Mailbox (Host CPU to Cortex-R52) interrupt 0 + ELC_EVENT_MBX_INT1 = (373), // Mailbox (Host CPU to Cortex-R52) interrupt 1 + ELC_EVENT_MBX_INT2 = (374), // Mailbox (Host CPU to Cortex-R52) interrupt 2 + ELC_EVENT_MBX_INT3 = (375), // Mailbox (Host CPU to Cortex-R52) interrupt 3 + ELC_EVENT_CPU0_ERR0 = (384), // Cortex-R52 CPU0 error event 0 + ELC_EVENT_CPU0_ERR1 = (385), // Cortex-R52 CPU0 error event 1 + ELC_EVENT_PERI_ERR0 = (388), // Peripherals error event 0 + ELC_EVENT_PERI_ERR1 = (389), // Peripherals error event 1 + ELC_EVENT_SHOST_INT = (390), // SHOSTIF interrupt + ELC_EVENT_PHOST_INT = (391), // PHOSTIF interrupt + ELC_EVENT_INTCPU6 = (392), // Software interrupt 6 + ELC_EVENT_INTCPU7 = (393), // Software interrupt 7 + ELC_EVENT_IRQ14 = (394), // External pin interrupt 14 + ELC_EVENT_IRQ15 = (395), // External pin interrupt 15 + ELC_EVENT_GPT14_CCMPA = (396), // GPT14 GTCCRA input capture/compare match + ELC_EVENT_GPT14_CCMPB = (397), // GPT14 GTCCRB input capture/compare match + ELC_EVENT_GPT14_CMPC = (398), // GPT14 GTCCRC compare match + ELC_EVENT_GPT14_CMPD = (399), // GPT14 GTCCRD compare match + ELC_EVENT_GPT14_CMPE = (400), // GPT14 GTCCRE compare match + ELC_EVENT_GPT14_CMPF = (401), // GPT14 GTCCRF compare match + ELC_EVENT_GPT14_OVF = (402), // GPT14 GTCNT overflow (GTPR compare match) + ELC_EVENT_GPT14_UDF = (403), // GPT14 GTCNT underflow + ELC_EVENT_GPT15_CCMPA = (404), // GPT15 GTCCRA input capture/compare match + ELC_EVENT_GPT15_CCMPB = (405), // GPT15 GTCCRB input capture/compare match + ELC_EVENT_GPT15_CMPC = (406), // GPT15 GTCCRC compare match + ELC_EVENT_GPT15_CMPD = (407), // GPT15 GTCCRD compare match + ELC_EVENT_GPT15_CMPE = (408), // GPT15 GTCCRE compare match + ELC_EVENT_GPT15_CMPF = (409), // GPT15 GTCCRF compare match + ELC_EVENT_GPT15_OVF = (410), // GPT15 GTCNT overflow (GTPR compare match) + ELC_EVENT_GPT15_UDF = (411), // GPT15 GTCNT underflow + ELC_EVENT_GPT16_CCMPA = (412), // GPT16 GTCCRA input capture/compare match + ELC_EVENT_GPT16_CCMPB = (413), // GPT16 GTCCRB input capture/compare match + ELC_EVENT_GPT16_CMPC = (414), // GPT16 GTCCRC compare match + ELC_EVENT_GPT16_CMPD = (415), // GPT16 GTCCRD compare match + ELC_EVENT_GPT16_CMPE = (416), // GPT16 GTCCRE compare match + ELC_EVENT_GPT16_CMPF = (417), // GPT16 GTCCRF compare match + ELC_EVENT_GPT16_OVF = (418), // GPT16 GTCNT overflow (GTPR compare match) + ELC_EVENT_GPT16_UDF = (419), // GPT16 GTCNT underflow + ELC_EVENT_GPT17_CCMPA = (420), // GPT17 GTCCRA input capture/compare match + ELC_EVENT_GPT17_CCMPB = (421), // GPT17 GTCCRB input capture/compare match + ELC_EVENT_GPT17_CMPC = (422), // GPT17 GTCCRC compare match + ELC_EVENT_GPT17_CMPD = (423), // GPT17 GTCCRD compare match + ELC_EVENT_GPT17_CMPE = (424), // GPT17 GTCCRE compare match + ELC_EVENT_GPT17_CMPF = (425), // GPT17 GTCCRF compare match + ELC_EVENT_GPT17_OVF = (426), // GPT17 GTCNT overflow (GTPR compare match) + ELC_EVENT_GPT17_UDF = (427), // GPT17 GTCNT underflow + ELC_EVENT_POEG2_GROUP0 = (428), // POEG group A interrupt for channels in SAFETY + ELC_EVENT_POEG2_GROUP1 = (429), // POEG group B interrupt for channels in SAFETY + ELC_EVENT_POEG2_GROUP2 = (430), // POEG group C interrupt for channels in SAFETY + ELC_EVENT_POEG2_GROUP3 = (431), // POEG group D interrupt for channels in SAFETY + ELC_EVENT_RTC_ALM = (432), // Alarm interrupt + ELC_EVENT_RTC_1S = (433), // 1 second interrupt + ELC_EVENT_RTC_PRD = (434), // Fixed interval interrupt + ELC_EVENT_SCI5_ERI = (435), // SCI5 Receive error + ELC_EVENT_SCI5_RXI = (436), // SCI5 Receive data full + ELC_EVENT_SCI5_TXI = (437), // SCI5 Transmit data empty + ELC_EVENT_SCI5_TEI = (438), // SCI5 Transmit end + ELC_EVENT_IIC2_EEI = (439), // IIC2 Transfer error or event generation + ELC_EVENT_IIC2_RXI = (440), // IIC2 Receive data full + ELC_EVENT_IIC2_TXI = (441), // IIC2 Transmit data empty + ELC_EVENT_IIC2_TEI = (442), // IIC2 Transmit end + ELC_EVENT_SPI3_SPRI = (443), // SPI3 Reception buffer full + ELC_EVENT_SPI3_SPTI = (444), // SPI3 Transmit buffer empty + ELC_EVENT_SPI3_SPII = (445), // SPI3 SPI idle + ELC_EVENT_SPI3_SPEI = (446), // SPI3 errors + ELC_EVENT_SPI3_SPCEND = (447), // SPI3 Communication complete + ELC_EVENT_DREQ = (448), // External DMA request + ELC_EVENT_CAN_RF_DMAREQ0 = (449), // CAFND RX FIFO 0 DMA request + ELC_EVENT_CAN_RF_DMAREQ1 = (450), // CAFND RX FIFO 1 DMA request + ELC_EVENT_CAN_RF_DMAREQ2 = (451), // CAFND RX FIFO 2 DMA request + ELC_EVENT_CAN_RF_DMAREQ3 = (452), // CAFND RX FIFO 3 DMA request + ELC_EVENT_CAN_RF_DMAREQ4 = (453), // CAFND RX FIFO 4 DMA request + ELC_EVENT_CAN_RF_DMAREQ5 = (454), // CAFND RX FIFO 5 DMA request + ELC_EVENT_CAN_RF_DMAREQ6 = (455), // CAFND RX FIFO 6 DMA request + ELC_EVENT_CAN_RF_DMAREQ7 = (456), // CAFND RX FIFO 7 DMA request + ELC_EVENT_CAN0_CF_DMAREQ = (457), // CAFND0 First common FIFO DMA request + ELC_EVENT_CAN1_CF_DMAREQ = (458), // CAFND1 First common FIFO DMA request + ELC_EVENT_ADC0_WCMPM = (459), // ADC0 compare match + ELC_EVENT_ADC0_WCMPUM = (460), // ADC0 compare mismatch + ELC_EVENT_ADC1_WCMPM = (461), // ADC1 compare match + ELC_EVENT_ADC1_WCMPUM = (462), // ADC1 compare mismatch + ELC_EVENT_TCIV4_OF = (463), // MTU4.TCNT overflow + ELC_EVENT_TCIV4_UF = (464), // MTU4.TCNT underflow + ELC_EVENT_TCIV7_OF = (465), // MTU7.TCNT overflow + ELC_EVENT_TCIV7_UF = (466), // MTU7.TCNT underflow + ELC_EVENT_IOPORT_GROUP1 = (467), // Input edge detection of input port group 1 + ELC_EVENT_IOPORT_GROUP2 = (468), // Input edge detection of input port group 2 + ELC_EVENT_IOPORT_SINGLE0 = (469), // Input edge detection of single input port 0 + ELC_EVENT_IOPORT_SINGLE1 = (470), // Input edge detection of single input port 1 + ELC_EVENT_IOPORT_SINGLE2 = (471), // Input edge detection of single input port 2 + ELC_EVENT_IOPORT_SINGLE3 = (472), // Input edge detection of single input port 3 + ELC_EVENT_GPT0_ADTRGA = (473), // GPT0 GTADTRA compare match + ELC_EVENT_GPT0_ADTRGB = (474), // GPT0 GTADTRB compare match + ELC_EVENT_GPT1_ADTRGA = (475), // GPT1 GTADTRA compare match + ELC_EVENT_GPT1_ADTRGB = (476), // GPT1 GTADTRB compare match + ELC_EVENT_GPT2_ADTRGA = (477), // GPT2 GTADTRA compare match + ELC_EVENT_GPT2_ADTRGB = (478), // GPT2 GTADTRB compare match + ELC_EVENT_GPT3_ADTRGA = (479), // GPT3 GTADTRA compare match + ELC_EVENT_GPT3_ADTRGB = (480), // GPT3 GTADTRB compare match + ELC_EVENT_GPT4_ADTRGA = (481), // GPT4 GTADTRA compare match + ELC_EVENT_GPT4_ADTRGB = (482), // GPT4 GTADTRB compare match + ELC_EVENT_GPT5_ADTRGA = (483), // GPT5 GTADTRA compare match + ELC_EVENT_GPT5_ADTRGB = (484), // GPT5 GTADTRB compare match + ELC_EVENT_GPT6_ADTRGA = (485), // GPT6 GTADTRA compare match + ELC_EVENT_GPT6_ADTRGB = (486), // GPT6 GTADTRB compare match + ELC_EVENT_GPT7_ADTRGA = (487), // GPT7 GTADTRA compare match + ELC_EVENT_GPT7_ADTRGB = (488), // GPT7 GTADTRB compare match + ELC_EVENT_GPT8_ADTRGA = (489), // GPT8 GTADTRA compare match + ELC_EVENT_GPT8_ADTRGB = (490), // GPT8 GTADTRB compare match + ELC_EVENT_GPT9_ADTRGA = (491), // GPT9 GTADTRA compare match + ELC_EVENT_GPT9_ADTRGB = (492), // GPT9 GTADTRB compare match + ELC_EVENT_GPT10_ADTRGA = (493), // GPT10 GTADTRA compare match + ELC_EVENT_GPT10_ADTRGB = (494), // GPT10 GTADTRB compare match + ELC_EVENT_GPT11_ADTRGA = (495), // GPT11 GTADTRA compare match + ELC_EVENT_GPT11_ADTRGB = (496), // GPT11 GTADTRB compare match + ELC_EVENT_GPT12_ADTRGA = (497), // GPT12 GTADTRA compare match + ELC_EVENT_GPT12_ADTRGB = (498), // GPT12 GTADTRB compare match + ELC_EVENT_GPT13_ADTRGA = (499), // GPT13 GTADTRA compare match + ELC_EVENT_GPT13_ADTRGB = (500), // GPT13 GTADTRB compare match + ELC_EVENT_NONE +} elc_event_t; + +/** @} (end addtogroup BSP_MCU_RZN2L) */ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/** 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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_feature.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_feature.h new file mode 100644 index 00000000000..f4a7fa9a188 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_feature.h @@ -0,0 +1,242 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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" + **********************************************************************************************************************/ + +/** 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_FEATURE_ADC_ADDITION_SUPPORTED (1U) +#define BSP_FEATURE_ADC_CALIBRATION_REG_AVAILABLE (0U) +#define BSP_FEATURE_ADC_CLOCK_SOURCE (FSP_PRIV_CLOCK_PCLKADC) +#define BSP_FEATURE_ADC_GROUP_B_SENSORS_ALLOWED (1U) +#define BSP_FEATURE_ADC_HAS_ADCER_ADPRC (1U) +#define BSP_FEATURE_ADC_HAS_ADCER_ADRFMT (1U) +#define BSP_FEATURE_ADC_HAS_PGA (1U) +#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_REGISTER_MASK_TYPE (1U) +#define BSP_FEATURE_ADC_SENSOR_MIN_SAMPLING_TIME (4150U) +#define BSP_FEATURE_ADC_SENSORS_EXCLUSIVE (0U) +#define BSP_FEATURE_ADC_TSN_CALIBRATION_AVAILABLE (0U) +#define BSP_FEATURE_ADC_TSN_CALIBRATION32_AVAILABLE (1U) +#define BSP_FEATURE_ADC_TSN_CALIBRATION32_MASK (0x00000FFFU) +#define BSP_FEATURE_ADC_TSN_CONTROL_AVAILABLE (1U) +#define BSP_FEATURE_ADC_TSN_SLOPE (4000U) +#define BSP_FEATURE_ADC_UNIT_0_CHANNELS (0x000F) // 0 to 3 in unit 0 +#define BSP_FEATURE_ADC_UNIT_1_CHANNELS (0x00FF) // 0 to 7 in unit 1 +#define BSP_FEATURE_ADC_VALID_UNIT_MASK (3U) + +#define BSP_FEATURE_BSP_IRQ_PRIORITY_MASK (0xF8U) +#define BSP_FEATURE_BSP_IRQ_PRIORITY_POS_BIT (3U) +#define BSP_FEATURE_BSP_MASTER_MPU0_SUPPORTED (1U) +#define BSP_FEATURE_BSP_MASTER_MPU1_SUPPORTED (1U) +#define BSP_FEATURE_BSP_MASTER_MPU2_SUPPORTED (1U) +#define BSP_FEATURE_BSP_MASTER_MPU3_SUPPORTED (1U) +#define BSP_FEATURE_BSP_MASTER_MPU4_SUPPORTED (1U) +#define BSP_FEATURE_BSP_MASTER_MPU6_SUPPORTED (1U) +#define BSP_FEATURE_BSP_MASTER_MPU7_SUPPORTED (1U) +#define BSP_FEATURE_BSP_MASTER_MPU8_SUPPORTED (1U) + +#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 (2U) + +#define BSP_FEATURE_CANFD_NUM_CHANNELS (2U) + +#define BSP_FEATURE_CGC_HAS_BCLK (1U) +#define BSP_FEATURE_CGC_HAS_FCLK (1U) +#define BSP_FEATURE_CGC_HAS_FLDWAITR (0U) +#define BSP_FEATURE_CGC_HAS_FLWT (1U) +#define BSP_FEATURE_CGC_HAS_HOCOWTCR (1U) +#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_PLL (1U) +#define BSP_FEATURE_CGC_HAS_PLL2 (0U) +#define BSP_FEATURE_CGC_HAS_SRAMPRCR2 (0U) +#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_ICLK_DIV_RESET (BSP_CLOCKS_SYS_CLOCK_DIV_4) +#define BSP_FEATURE_CGC_LOCO_CONTROL_ADDRESS (0x81280070U) +#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 (0x30U) +#define BSP_FEATURE_CGC_MODRV_SHIFT (0x4U) +#define BSP_FEATURE_CGC_PLL1_CONTROL_ADDRESS (0x81280050U) +#define BSP_FEATURE_CGC_PLLCCR_MAX_HZ (240000000U) +#define BSP_FEATURE_CGC_PLLCCR_TYPE (1U) +#define BSP_FEATURE_CGC_PLLCCR_WAIT_US (0U) // No wait between setting PLLCCR and clearing PLLSTP +#define BSP_FEATURE_CGC_SCKDIVCR_BCLK_MATCHES_PCLKB (0U) +#define BSP_FEATURE_CGC_SODRV_MASK (0x02U) +#define BSP_FEATURE_CGC_SODRV_SHIFT (0x1U) +#define BSP_FEATURE_CGC_STARTUP_OPCCR_MODE (0U) + +#define BSP_FEATURE_CMT_VALID_CHANNEL_MASK (0x3FU) + +#define BSP_FEATURE_CMTW_VALID_CHANNEL_MASK (0x3U) + +#define BSP_FEATURE_CRC_VALID_CHANNEL_MASK (0x3U) + +#define BSP_FEATURE_DMAC_MAX_CHANNEL (8U) +#define BSP_FEATURE_DMAC_MAX_UNIT (2U) +#define BSP_FEATURE_DMAC_UNIT0_ERROR_NUM (5U) + +#define BSP_FEATURE_DSMIF_CHANNEL_STATUS (1U) +#define BSP_FEATURE_DSMIF_DATA_FORMAT_SEL (0U) +#define BSP_FEATURE_DSMIF_ERROR_STATUS_CLR (5U) +#define BSP_FEATURE_DSMIF_OVERCURRENT_DETECT_CONTROL (1U) +#define BSP_FEATURE_DSMIF_OVERCURRENT_DETECT_ISR (1U) +#define BSP_FEATURE_DSMIF_OVERCURRENT_DETECT_NOTIFY (0U) +#define BSP_FEATURE_DSMIF_OVERCURRENT_ERROR_STATUS (1U) +#define BSP_FEATURE_DSMIF_OVERCURRENT_NOTIFY_STATUS (0U) + +#define BSP_FEATURE_ELC_ELC_SSEL_NUM (19) +#define BSP_FEATURE_ELC_EVENT_MASK_NUM (4U) +#define BSP_FEATURE_ELC_PERIPHERAL_0_MASK (0xFFFFFFFFU) // ELC event source no.0 to 31 available on this MCU +#define BSP_FEATURE_ELC_PERIPHERAL_1_MASK (0x007FF9FFU) // ELC event source no.32 to 63 available on this MCU. +#define BSP_FEATURE_ELC_PERIPHERAL_2_MASK (0x00000000U) // ELC event source no.64 to 95 available on this MCU. +#define BSP_FEATURE_ELC_PERIPHERAL_3_MASK (0x00000000U) // ELC event source no.96 to 127 available on this MCU. +#define BSP_FEATURE_ELC_PERIPHERAL_TYPE (1U) + +#define BSP_FEATURE_ESC_MAX_PORTS (3U) +#define BSP_FEATURE_ETHER_FIFO_DEPTH (0x0000070FU) +#define BSP_FEATURE_ETHER_PHY_MAX_CHANNELS (3U) +#define BSP_FEATURE_ETHSS_MAX_PORTS (3U) +#define BSP_FEATURE_ETHSS_SWITCH_MODE_BIT_MASK (3U) + +#define BSP_FEATURE_ETHSW_MAX_CHANNELS (1U) +#define BSP_FEATURE_ETHSW_SUPPORTED (1U) +#define BSP_FEATURE_GMAC_MAX_CHANNELS (1U) +#define BSP_FEATURE_GMAC_MAX_PORTS (3U) + +#define BSP_FEATURE_GPT_32BIT_CHANNEL_MASK (0x3FFFF) +#define BSP_FEATURE_GPT_LLPP_BASE_CHANNEL (0) // LLPP channel: ch0-6 +#define BSP_FEATURE_GPT_LLPP_CHANNEL_MASK (0x0007F) +#define BSP_FEATURE_GPT_NONSAFETY_BASE_CHANNEL (7) // Non-safety channel: ch7-13 +#define BSP_FEATURE_GPT_NONSAFETY_CHANNEL_MASK (0x0007F) +#define BSP_FEATURE_GPT_SAFETY_BASE_CHANNEL (14) // safety channel: ch14-17 +#define BSP_FEATURE_GPT_SAFETY_CHANNEL_MASK (0x0000F) +#define BSP_FEATURE_GPT_VALID_CHANNEL_MASK (0x3FFFF) + +#define BSP_FEATURE_GPTE_CHANNEL_MASK (0xF0) +#define BSP_FEATURE_GPTEH_CHANNEL_MASK (0xF) + +#define BSP_FEATURE_ICU_ERROR_PERI_ERR_REG_NUM (2U) +#define BSP_FEATURE_ICU_ERROR_PERI_ERR0_REG_MASK (0xFFFFFEFFU) +#define BSP_FEATURE_ICU_ERROR_PERI_ERR1_REG_MASK (0x19FFA3FFU) +#define BSP_FEATURE_ICU_ERROR_PERIPHERAL_TYPE (1U) +#define BSP_FEATURE_ICU_HAS_WUPEN1 (0U) +#define BSP_FEATURE_ICU_IRQ_CHANNELS_MASK (0xFFFFU) +#define BSP_FEATURE_ICU_WUPEN_MASK (0xFF4FFFFFU) + +#define BSP_FEATURE_IIC_FAST_MODE_PLUS (0U) +#define BSP_FEATURE_IIC_SAFETY_CHANNEL (2U) +#define BSP_FEATURE_IIC_SAFETY_CHANNEL_BASE_ADDRESS (R_IIC2_BASE) +#define BSP_FEATURE_IIC_VALID_CHANNEL_MASK (0x07) + +#define BSP_FEATURE_IOPORT_ELC_PORTS (4U) +#define BSP_FEATURE_IOPORT_HAS_ETHERNET (1U) + +#define BSP_FEATURE_LPM_CHANGE_MSTP_ARRAY {{0, 15}, {0, 13}, {1, 31}, {1, 6}, {1, 5}, {1, 4}, {2, 5}} +#define BSP_FEATURE_LPM_CHANGE_MSTP_REQUIRED (1U) +#define BSP_FEATURE_LPM_DPSIEGR_MASK (0x00137FFFU) +#define BSP_FEATURE_LPM_DPSIER_MASK (0x071F7FFFU) +#define BSP_FEATURE_LPM_HAS_DEEP_STANDBY (1U) +#define BSP_FEATURE_LPM_HAS_SBYCR_OPE (1U) +#define BSP_FEATURE_LPM_HAS_SNZEDCR1 (0U) +#define BSP_FEATURE_LPM_HAS_SNZREQCR1 (0U) +#define BSP_FEATURE_LPM_HAS_STCONR (1U) +#define BSP_FEATURE_LPM_SBYCR_WRITE1_B14 (0U) +#define BSP_FEATURE_LPM_SNZEDCR_MASK (0x000000FFU) +#define BSP_FEATURE_LPM_SNZREQCR_MASK (0x7342FFFFU) + +#define BSP_FEATURE_MTU3_MAX_CHANNELS (9U) +#define BSP_FEATURE_MTU3_UVW_MAX_CHANNELS (3U) +#define BSP_FEATURE_MTU3_VALID_CHANNEL_MASK (0x01FF) + +#define BSP_FEATURE_OSPI_DEVICE_0_START_ADDRESS (0x0U) +#define BSP_FEATURE_OSPI_DEVICE_1_START_ADDRESS (0x0U) + +#define BSP_FEATURE_POE3_ERROR_SIGNAL_TYPE (1U) +#define BSP_FEATURE_POE3_PIN_SELECT_TYPE (1U) + +#define BSP_FEATURE_POEG_CHANNEL_MASK (0xFU) +#define BSP_FEATURE_POEG_ERROR_SIGNAL_TYPE (1U) +#define BSP_FEATURE_POEG_GROUP_OFSSET_ADDRESS (0x400) +#define BSP_FEATURE_POEG_LLPP_UNIT (0U) +#define BSP_FEATURE_POEG_MAX_UNIT (2U) +#define BSP_FEATURE_POEG_NONSAFETY_UNIT (1U) +#define BSP_FEATURE_POEG_SAFETY_UNIT (2U) + +#define BSP_FEATURE_SCI_ADDRESS_MATCH_CHANNELS (BSP_FEATURE_SCI_CHANNELS) +#define BSP_FEATURE_SCI_CHANNELS (0x3FU) +#define BSP_FEATURE_SCI_SAFETY_CHANNEL (5U) +#define BSP_FEATURE_SCI_SAFETY_CHANNEL_BASE_ADDRESS (R_SCI5_BASE) +#define BSP_FEATURE_SCI_UART_CSTPEN_CHANNELS (0x03FU) +#define BSP_FEATURE_SCI_UART_FIFO_CHANNELS (0x3FFU) +#define BSP_FEATURE_SCI_UART_FIFO_DEPTH (16U) + +#define BSP_FEATURE_SEM_SUPPORTED (0U) + +#define BSP_FEATURE_SPI_HAS_BYTE_SWAP (1U) +#define BSP_FEATURE_SPI_HAS_SPCR3 (0U) +#define BSP_FEATURE_SPI_HAS_SSL_LEVEL_KEEP (1U) +#define BSP_FEATURE_SPI_MAX_CHANNEL (4U) +#define BSP_FEATURE_SPI_SAFETY_CHANNEL (3U) +#define BSP_FEATURE_SPI_SAFETY_CHANNEL_BASE_ADDRESS (R_SPI3_BASE) + +#define BSP_FEATURE_TFU_SUPPORTED (1U) + +#define BSP_FEATURE_XSPI_CHANNELS (0x03U) +#define BSP_FEATURE_XSPI_NUM_CHIP_SELECT (2U) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/** 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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_irq_sense.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_irq_sense.c new file mode 100644 index 00000000000..b524d268706 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_irq_sense.c @@ -0,0 +1,86 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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) + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * @addtogroup BSP_MCU_RZN2L + * @{ + **********************************************************************************************************************/ + +/** Array of GICD_ICFGR initialization value. */ +const uint32_t BSP_GICD_ICFGR_INIT[BSP_NON_SELECTABLE_ICFGR_MAX] = +{ + 0xAAAAAAAAUL, /* Event No. 0 to 15 */ + 0x000000AAUL, /* Event No. 16 to 31 */ + 0x00000000UL, /* Event No. 32 to 47 */ + 0xAAAAA800UL, /* Event No. 48 to 63 */ + 0xAAAAAAAAUL, /* Event No. 64 to 79 */ + 0xAAAAAAAAUL, /* Event No. 80 to 95 */ + 0xAAAAAAAAUL, /* Event No. 96 to 111 */ + 0xAAAAAA00UL, /* Event No. 112 to 127 */ + 0xAAAAAAAAUL, /* Event No. 128 to 143 */ + 0xAAAAAAAAUL, /* Event No. 144 to 159 */ + 0xAAAAAAAAUL, /* Event No. 160 to 175 */ + 0xAAAAAAAAUL, /* Event No. 176 to 191 */ + 0xAAAAAAAAUL, /* Event No. 192 to 207 */ + 0xAAAAAAAAUL, /* Event No. 208 to 223 */ + 0xAAAAAAAAUL, /* Event No. 224 to 239 */ + 0x0000000AUL, /* Event No. 240 to 255 */ + 0xA8000000UL, /* Event No. 256 to 271 */ + 0xA82A2AAAUL, /* Event No. 272 to 287 */ + 0x28282828UL, /* Event No. 288 to 303 */ + 0x00282828UL, /* Event No. 304 to 319 */ + 0xA82A0A00UL, /* Event No. 320 to 335 */ + 0xA0AA8020UL, /* Event No. 336 to 351 */ + 0x00000002UL, /* Event No. 352 to 367 */ + 0x00000000UL, /* Event No. 368 to 383 */ + 0xAAAA0A0AUL, /* Event No. 384 to 399 */ + 0xAAAAAAAAUL, /* Event No. 400 to 415 */ + 0x00AAAAAAUL, /* Event No. 416 to 431 */ + 0x828A0A2AUL, /* Event No. 432 to 447 */ +}; + +const uint32_t BSP_GICR_SGI_PPI_ICFGR_INIT[BSP_EVENT_SGI_PPI_ARRAY_NUM] = +{ + 0xAAAAAAAAUL, /* event SGI */ + 0x00020000UL, /* event PPI */ +}; + +/** @} (end addtogroup BSP_MCU_RZN2L) */ + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_loader_param.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_loader_param.c new file mode 100644 index 00000000000..3933a103ba5 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_loader_param.c @@ -0,0 +1,69 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_CFG_RAM_EXECUTION) + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ + #define BSP_LOADER_PARAM_MAX (19) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global variables (to be accessed by other files) + **********************************************************************************************************************/ + +/* Parameter Information for the Loader. */ +BSP_DONT_REMOVE const uint32_t g_bsp_loader_param[BSP_LOADER_PARAM_MAX] BSP_PLACE_IN_SECTION(BSP_SECTION_LOADER_PARAM) = +{ + BSP_CFG_CACHE_FLG, + BSP_CFG_CS0BCR_V_WRAPCFG_V, + BSP_CFG_CS0WCR_V_COMCFG_V, + BSP_CFG_DUMMY0_BMCFG_V, + BSP_CFG_BSC_FLG_xSPI_FLG, + BSP_CFG_LDR_ADDR_NML, + BSP_CFG_LDR_SIZE_NML, + BSP_CFG_DEST_ADDR_NML, + BSP_CFG_DUMMY1, + BSP_CFG_DUMMY2, + BSP_CFG_DUMMY3_CSSCTL_V, + BSP_CFG_DUMMY4_LIOCFGCS0_V, + BSP_CFG_DUMMY5, + BSP_CFG_DUMMY6, + BSP_CFG_DUMMY7, + BSP_CFG_DUMMY8, + BSP_CFG_DUMMY9, + BSP_CFG_DUMMY10_ACCESS_SPEED, + BSP_CFG_CHECK_SUM +}; + +/*********************************************************************************************************************** + * Private global variables and functions + **********************************************************************************************************************/ + +#endif diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_mcu_info.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_mcu_info.h new file mode 100644 index 00000000000..e0b338a753e --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_mcu_info.h @@ -0,0 +1,64 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_RZN2L RZN2L + * @includedoc config_bsp_rzn2l_fsp.html + * @{ + **********************************************************************************************************************/ + +/** @} (end defgroup BSP_MCU_RZN2L) */ + +#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" + +/** 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 + **********************************************************************************************************************/ +typedef elc_event_t bsp_interrupt_event_t; + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/** 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/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_override.h b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_override.h new file mode 100644 index 00000000000..ea77b6eb9aa --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/bsp/mcu/rzn2l/bsp_override.h @@ -0,0 +1,1455 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_RZN2L + * @{ + **********************************************************************************************************************/ + +/** @} (end addtogroup BSP_MCU_RZN2L) */ + +#ifndef BSP_OVERRIDE_H +#define BSP_OVERRIDE_H + +/*********************************************************************************************************************** + * Includes , "Project Includes" + **********************************************************************************************************************/ + +/* BSP Common Includes. */ +#include "../../src/bsp/mcu/all/bsp_common.h" + +/* BSP MPU 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_clocks.h" +#include "../../src/bsp/mcu/all/bsp_module_stop.h" +#include "../../src/bsp/mcu/all/bsp_reset.h" +#include "../../src/bsp/mcu/all/bsp_cache.h" + +/* Factory MPU 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" + +/* BSP TFU Includes. */ +#if BSP_FEATURE_TFU_SUPPORTED + #include "../../src/bsp/mcu/all/bsp_tfu.h" +#endif + +/** 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 overrides required for this MPU. */ +#define BSP_OVERRIDE_ADC_MODE_T +#define BSP_OVERRIDE_ADC_CHANNEL_T +#define BSP_OVERRIDE_CGC_CLOCK_T +#define BSP_OVERRIDE_CGC_PLL_CFG_T +#define BSP_OVERRIDE_CGC_DIVIDER_CFG_T +#define BSP_OVERRIDE_CGC_CLOCK_CHANGE_T +#define BSP_OVERRIDE_CGC_CLOCKS_CFG_T +#define BSP_OVERRIDE_ELC_PERIPHERAL_T +#define BSP_OVERRIDE_ERROR_EVENT_T +#define BSP_OVERRIDE_ETHER_EVENT_T +#define BSP_OVERRIDE_ETHER_CALLBACK_ARGS_T +#define BSP_OVERRIDE_ETHER_PHY_LSI_TYPE_T +#define BSP_OVERRIDE_ETHER_SWITCH_CALLBACK_ARGS_T +#define BSP_OVERRIDE_POE3_STATE_T +#define BSP_OVERRIDE_POEG_STATE_T +#define BSP_OVERRIDE_POEG_TRIGGER_T +#define BSP_OVERRIDE_TRANSFER_MODE_T +#define BSP_OVERRIDE_TRANSFER_SIZE_T +#define BSP_OVERRIDE_TRANSFER_ADDR_MODE_T +#define BSP_OVERRIDE_TRANSFER_CALLBACK_ARGS_T +#define BSP_OVERRIDE_TRANSFER_INFO_T + +/* Override definitions. */ + +#define ELC_PERIPHERAL_NUM (55U) + +/* Private definition to set enumeration values. */ +#define IOPORT_P_OFFSET (0U) +#define IOPORT_PM_OFFSET (1U) +#define IOPORT_PMC_OFFSET (3U) +#define IOPORT_PFC_OFFSET (4U) +#define IOPORT_DRCTL_OFFSET (8U) +#define IOPORT_RSELP_OFFSET (14U) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ + +/*============================================== + * ADC API Overrides + *==============================================*/ + +/** ADC operation mode definitions */ +typedef enum e_adc_mode +{ + ADC_MODE_SINGLE_SCAN = 0, ///< Single scan - one or more channels + ADC_MODE_GROUP_SCAN = 1, ///< Two trigger sources to trigger scan for two groups which contain one or more channels + ADC_MODE_CONTINUOUS_SCAN = 2, ///< Continuous scan - one or more channels + ADC_MODE_SYNCHRONIZE_SCAN = 3, ///< Channel synchronization control mode + ADC_MODE_INDIVIDUAL_SCAN = 4, ///< Channel individual control mode +} adc_mode_t; + +/** ADC channels */ +typedef enum e_adc_channel +{ + ADC_CHANNEL_0 = 0, ///< ADC channel 0 + ADC_CHANNEL_1 = 1, ///< ADC channel 1 + ADC_CHANNEL_2 = 2, ///< ADC channel 2 + ADC_CHANNEL_3 = 3, ///< ADC channel 3 + ADC_CHANNEL_4 = 4, ///< ADC channel 4 + ADC_CHANNEL_5 = 5, ///< ADC channel 5 + ADC_CHANNEL_6 = 6, ///< ADC channel 6 + ADC_CHANNEL_7 = 7, ///< ADC channel 7 + ADC_CHANNEL_8 = 8, ///< ADC channel 8 + ADC_CHANNEL_9 = 9, ///< ADC channel 9 + ADC_CHANNEL_10 = 10, ///< ADC channel 10 + ADC_CHANNEL_11 = 11, ///< ADC channel 11 + ADC_CHANNEL_12 = 12, ///< ADC channel 12 + ADC_CHANNEL_13 = 13, ///< ADC channel 13 + ADC_CHANNEL_14 = 14, ///< ADC channel 14 + ADC_CHANNEL_15 = 15, ///< ADC channel 15 + ADC_CHANNEL_16 = 16, ///< ADC channel 16 + ADC_CHANNEL_17 = 17, ///< ADC channel 17 + ADC_CHANNEL_18 = 18, ///< ADC channel 18 + ADC_CHANNEL_19 = 19, ///< ADC channel 19 + ADC_CHANNEL_20 = 20, ///< ADC channel 20 + ADC_CHANNEL_21 = 21, ///< ADC channel 21 + ADC_CHANNEL_22 = 22, ///< ADC channel 22 + ADC_CHANNEL_23 = 23, ///< ADC channel 23 + ADC_CHANNEL_24 = 24, ///< ADC channel 24 + ADC_CHANNEL_25 = 25, ///< ADC channel 25 + ADC_CHANNEL_26 = 26, ///< ADC channel 26 + ADC_CHANNEL_27 = 27, ///< ADC channel 27 + ADC_CHANNEL_DUPLEX_A = 50, ///< Data duplexing register A + ADC_CHANNEL_DUPLEX_B = 51, ///< Data duplexing register B + ADC_CHANNEL_DUPLEX = -4, ///< Data duplexing register + ADC_CHANNEL_TEMPERATURE = -3, ///< Temperature sensor output + ADC_CHANNEL_VOLT = -2, ///< Internal reference voltage + ADC_CHANNEL_0_DSMIF_CAPTURE_A = 0x100, ///< ADC channel 0 Capture Current Data Register A + ADC_CHANNEL_0_DSMIF_CAPTURE_B = 0x200, ///< ADC channel 0 Capture Current Data Register B + ADC_CHANNEL_1_DSMIF_CAPTURE_A = 0x101, ///< ADC channel 1 Capture Current Data Register A + ADC_CHANNEL_1_DSMIF_CAPTURE_B = 0x201, ///< ADC channel 1 Capture Current Data Register B + ADC_CHANNEL_2_DSMIF_CAPTURE_A = 0x102, ///< ADC channel 2 Capture Current Data Register A + ADC_CHANNEL_2_DSMIF_CAPTURE_B = 0x202, ///< ADC channel 2 Capture Current Data Register B +} adc_channel_t; + +/*============================================== + * CGC API Overrides + *==============================================*/ + +/** Divider values of clock provided to xSPI */ +typedef enum e_cgc_fsel_xspi_clock_div +{ + CGC_FSEL_XSPI_CLOCK_DIV_6 = 0x02, ///< XSPI_CLKn 133.3MHz (XSPI base clock divided by 3) + CGC_FSEL_XSPI_CLOCK_DIV_8 = 0x03, ///< XSPI_CLKn 100.0MHz / 75.0MHz (XSPI base clock divided by 3 / divided by 4) + CGC_FSEL_XSPI_CLOCK_DIV_16 = 0x04, ///< XSPI_CLKn 50.0MHz / 37.5MHz (XSPI base clock divided by 3 / divided by 4) + CGC_FSEL_XSPI_CLOCK_DIV_32 = 0x05, ///< XSPI_CLKn 25.0MHz (XSPI base clock divided by 3) + CGC_FSEL_XSPI_CLOCK_DIV_64 = 0x06, ///< XSPI_CLKn 12.5MHz (XSPI base clock divided by 3) +} cgc_fsel_xspi_clock_div_t; + +/** Divider values of base clock generated for xSPI */ +typedef enum e_cgc_divsel_xspi_clock_div +{ + CGC_DIVSEL_XSPI_CLOCK_DIV_3 = 0x00, ///< XSPI base clock divided by 3 + CGC_DIVSEL_XSPI_CLOCK_DIV_4 = 0x01, ///< XSPI base clock divided by 4 +} cgc_divsel_xspi_clock_div_t; + +/** Clock output divider values */ +typedef enum e_cgc_clock_out_clock_div +{ + CGC_CLOCK_OUT_CLOCK_DIV_2 = 0, ///< CKIO 100.0MHz / 75.0MHz (Base clock divided by 3 / divided by 4) + CGC_CLOCK_OUT_CLOCK_DIV_3 = 1, ///< CKIO 66.7MHz / 50.0MHz (Base clock divided by 3 / divided by 4) + CGC_CLOCK_OUT_CLOCK_DIV_4 = 2, ///< CKIO 50.0MHz / 37.5MHz (Base clock divided by 3 / divided by 4) + CGC_CLOCK_OUT_CLOCK_DIV_5 = 3, ///< CKIO 40.0MHz / 30.0MHz (Base clock divided by 3 / divided by 4) + CGC_CLOCK_OUT_CLOCK_DIV_6 = 4, ///< CKIO 33.3MHz / 25.0MHz (Base clock divided by 3 / divided by 4) + CGC_CLOCK_OUT_CLOCK_DIV_7 = 5, ///< CKIO 28.6MHz / 21.4MHz (Base clock divided by 3 / divided by 4) + CGC_CLOCK_OUT_CLOCK_DIV_8 = 6, ///< CKIO 25.0MHz / 18.75MHz (Base clock divided by 3 / divided by 4) +} cgc_clock_out_clock_div_t; + +/** CANFD clock divider values */ +typedef enum e_cgc_canfd_clock_div +{ + CGC_CANFD_CLOCK_DIV_10 = 0, ///< CANFD clock 80.0MHz + CGC_CANFD_CLOCK_DIV_20 = 1, ///< CANFD clock 40.0MHz +} cgc_canfd_clock_div_t; + +/** PHY clock source identifiers */ +typedef enum e_cgc_phy_clock +{ + CGC_PHY_CLOCK_PLL1 = 0, ///< PLL1 divider clock + CGC_PHY_CLOCK_MAIN_OSC = 1, ///< Main clock oscillator +} cgc_phy_clock_t; + +/** SPI asynchronous serial clock frequency */ +typedef enum e_cgc_spi_async_clock +{ + CGC_SPI_ASYNC_CLOCK_75MHZ = 0, ///< SPI asynchronous serial clock 75MHz + CGC_SPI_ASYNC_CLOCK_96MHZ = 1, ///< SPI asynchronous serial clock 96MHz +} cgc_spi_async_clock_t; + +/** SCI asynchronous serial clock frequency */ +typedef enum e_cgc_sci_async_clock +{ + CGC_SCI_ASYNC_CLOCK_75MHZ = 0, ///< SCI asynchronous serial clock 75MHz + CGC_SCI_ASYNC_CLOCK_96MHZ = 1, ///< SCI asynchronous serial clock 96MHz +} cgc_sci_async_clock_t; + +/** CPU clock divider values */ +typedef enum e_cgc_cpu_clock_div +{ + CGC_CPU_CLOCK_DIV_2 = 0, ///< CPU 200.0MHz / 150.0MHz (Base clock divided by 3 / divided by 4) + CGC_CPU_CLOCK_DIV_1 = 1, ///< CPU 400.0MHz / 300.0MHz (Base clock divided by 3 / divided by 4) +} cgc_cpu_clock_div_t; + +/** Base clock divider values */ +typedef enum e_cgc_baseclock_div +{ + CGC_BASECLOCK_DIV_3 = 0, ///< Base clock divided by 3 (ICLK=200.0MHz etc.) + CGC_BASECLOCK_DIV_4 = 1, ///< Base clock divided by 4 (ICLK=150.0MHz etc.) +} cgc_baseclock_div_t; + +/** System clock source identifiers */ +typedef enum e_cgc_clock +{ + CGC_CLOCK_LOCO = 0, ///< The low speed on chip oscillator + CGC_CLOCK_PLL0 = 1, ///< The PLL0 oscillator + CGC_CLOCK_PLL1 = 2, ///< The PLL1 oscillator +} cgc_clock_t; + +/** Clock configuration structure - Dummy definition because it is not used in this MPU. + * Set NULL as an input parameter to the @ref cgc_api_t::clockStart function for the PLL clock. */ +typedef struct st_cgc_pll_cfg +{ + uint32_t dummy; /* Dummy. */ +} cgc_pll_cfg_t; + +/** Clock configuration structure */ +typedef struct st_cgc_divider_cfg +{ + union + { + uint32_t sckcr_w; ///< System Clock Control Register + + struct + { + cgc_fsel_xspi_clock_div_t fselxspi0 : 3; ///< Divider value for XSPI_CLK0 + uint32_t : 3; + cgc_divsel_xspi_clock_div_t divselxspi0 : 1; ///< Divider base value for XSPI_CLK0 + uint32_t : 1; + cgc_fsel_xspi_clock_div_t fselxspi1 : 3; ///< Divider value for XSPI_CLK1 + uint32_t : 3; + cgc_divsel_xspi_clock_div_t divselxspi1 : 1; ///< Divider base value for XSPI_CLK1 + uint32_t : 1; + cgc_clock_out_clock_div_t ckio_div : 3; ///< Divider value for CKIO + uint32_t : 1; + cgc_canfd_clock_div_t fselcanfd_div : 1; ///< Divider value for CANFD clock + cgc_phy_clock_t phy_sel : 1; ///< Ethernet PHY reference clock output + uint32_t : 2; + cgc_spi_async_clock_t spi0_async_sel : 1; ///< SPI0 asynchronous serial clock + cgc_spi_async_clock_t spi1_async_sel : 1; ///< SPI1 asynchronous serial clock + cgc_spi_async_clock_t spi2_async_sel : 1; ///< SPI2 asynchronous serial clock + cgc_sci_async_clock_t sci0_async_sel : 1; ///< SCI0 asynchronous serial clock + cgc_sci_async_clock_t sci1_async_sel : 1; ///< SCI1 asynchronous serial clock + cgc_sci_async_clock_t sci2_async_sel : 1; ///< SCI2 asynchronous serial clock + cgc_sci_async_clock_t sci3_async_sel : 1; ///< SCI3 asynchronous serial clock + cgc_sci_async_clock_t sci4_async_sel : 1; ///< SCI4 asynchronous serial clock + } sckcr_b; + }; + + union + { + uint32_t sckcr2_w; ///< System Clock Control Register 2 + + struct + { + cgc_cpu_clock_div_t fsel0cr52 : 1; ///< Divider value for Cortex-R52 CPU0 + uint32_t : 4; + cgc_baseclock_div_t div_sub_sel : 1; ///< Divider value for base clock + uint32_t : 18; + cgc_spi_async_clock_t spi3_async_sel : 1; ///< SPI3 asynchronous serial clock + cgc_sci_async_clock_t sci5_async_sel : 1; ///< SCI5 asynchronous serial clock + uint32_t : 6; + } sckcr2_b; + }; +} cgc_divider_cfg_t; + +/** Clock options */ +typedef enum e_cgc_clock_change +{ + CGC_CLOCK_CHANGE_START = 0, ///< Start the clock + CGC_CLOCK_CHANGE_STOP = 1, ///< Stop the clock + CGC_CLOCK_CHANGE_NONE = 2, ///< No change to the clock +} cgc_clock_change_t; + +/** Clock configuration */ +typedef struct st_cgc_clocks_cfg +{ + cgc_divider_cfg_t divider_cfg; ///< Clock dividers structure + cgc_clock_change_t loco_state; ///< State of LOCO + cgc_clock_change_t pll1_state; ///< State of PLL1 +} cgc_clocks_cfg_t; + +/*============================================== + * ELC API Overrides + *==============================================*/ + +/** Possible peripherals to be linked to event signals (not all available on all MPUs) */ +typedef enum e_elc_peripheral +{ + ELC_PERIPHERAL_MTU0 = (0), + ELC_PERIPHERAL_MTU3 = (1), + ELC_PERIPHERAL_MTU4 = (2), + ELC_PERIPHERAL_LLPPGPT_A = (3), + ELC_PERIPHERAL_LLPPGPT_B = (4), + ELC_PERIPHERAL_LLPPGPT_C = (5), + ELC_PERIPHERAL_LLPPGPT_D = (6), + ELC_PERIPHERAL_LLPPGPT_E = (7), + ELC_PERIPHERAL_LLPPGPT_F = (8), + ELC_PERIPHERAL_LLPPGPT_G = (9), + ELC_PERIPHERAL_LLPPGPT_H = (10), + ELC_PERIPHERAL_NONSAFTYGPT_A = (11), + ELC_PERIPHERAL_NONSAFTYGPT_B = (12), + ELC_PERIPHERAL_NONSAFTYGPT_C = (13), + ELC_PERIPHERAL_NONSAFTYGPT_D = (14), + ELC_PERIPHERAL_NONSAFTYGPT_E = (15), + ELC_PERIPHERAL_NONSAFTYGPT_F = (16), + ELC_PERIPHERAL_NONSAFTYGPT_G = (17), + ELC_PERIPHERAL_NONSAFTYGPT_H = (18), + ELC_PERIPHERAL_ADC0_A = (19), + ELC_PERIPHERAL_ADC0_B = (20), + ELC_PERIPHERAL_ADC1_A = (21), + ELC_PERIPHERAL_ADC1_B = (22), + ELC_PERIPHERAL_DSMIF0_CAP0 = (23), + ELC_PERIPHERAL_DSMIF0_CAP1 = (24), + ELC_PERIPHERAL_DSMIF0_CAP2 = (25), + ELC_PERIPHERAL_DSMIF0_CAP3 = (26), + ELC_PERIPHERAL_DSMIF0_CAP4 = (27), + ELC_PERIPHERAL_DSMIF0_CAP5 = (28), + ELC_PERIPHERAL_DSMIF0_CDCNT0 = (29), + ELC_PERIPHERAL_DSMIF0_CDCNT1 = (30), + ELC_PERIPHERAL_DSMIF0_CDCNT2 = (31), + ELC_PERIPHERAL_DSMIF1_CAP0 = (32), + ELC_PERIPHERAL_DSMIF1_CAP1 = (33), + ELC_PERIPHERAL_DSMIF1_CAP2 = (34), + ELC_PERIPHERAL_DSMIF1_CAP3 = (35), + ELC_PERIPHERAL_DSMIF1_CAP4 = (36), + ELC_PERIPHERAL_DSMIF1_CAP5 = (37), + ELC_PERIPHERAL_DSMIF1_CDCNT0 = (38), + ELC_PERIPHERAL_DSMIF1_CDCNT1 = (39), + ELC_PERIPHERAL_DSMIF1_CDCNT2 = (40), + ELC_PERIPHERAL_ESC0 = (43), + ELC_PERIPHERAL_ESC1 = (44), + ELC_PERIPHERAL_GMA0 = (45), + ELC_PERIPHERAL_GMA1 = (46), + ELC_PERIPHERAL_OUTPORTGR1 = (47), + ELC_PERIPHERAL_OUTPORTGR2 = (48), + ELC_PERIPHERAL_INPORTGR1 = (49), + ELC_PERIPHERAL_INPORTGR2 = (50), + ELC_PERIPHERAL_SINGLEPORT0 = (51), + ELC_PERIPHERAL_SINGLEPORT1 = (52), + ELC_PERIPHERAL_SINGLEPORT2 = (53), + ELC_PERIPHERAL_SINGLEPORT3 = (54), +} elc_peripheral_t; + +/*============================================== + * ERROR API Overrides + *==============================================*/ + +/** Error event source. */ +typedef enum e_error_event +{ + ERROR_EVENT_CPU0, ///< Error event from CPU0 + ERROR_EVENT_PERIPHERAL_0, ///< Error event from Peripheral 0 + ERROR_EVENT_PERIPHERAL_1, ///< Error event from Peripheral 1 +} error_event_t; + +/*============================================== + * ETHER API Overrides + *==============================================*/ + +/** Event code of callback function */ +typedef enum e_ether_event +{ + ETHER_EVENT_WAKEON_LAN, ///< Magic packet detection event + ETHER_EVENT_LINK_ON, ///< Link up detection event + ETHER_EVENT_LINK_OFF, ///< Link down detection event + ETHER_EVENT_SBD_INTERRUPT, ///< SBD Interrupt event + ETHER_EVENT_PMT_INTERRUPT ///< PMT Interrupt event +} ether_event_t; + +/** Ether Callback function parameter data */ +typedef struct st_ether_callback_args +{ + uint32_t channel; ///< Device channel number + ether_event_t event; ///< Event code + + uint32_t status_ether; ///< Interrupt status of SDB or PMT + uint32_t status_link; ///< Link status + + void const * p_context; ///< Placeholder for user data. +} ether_callback_args_t; + +/*============================================== + * ETHER PHY API Overrides + *==============================================*/ + +/** Phy LSI */ +typedef enum e_ether_phy_lsi_type +{ + ETHER_PHY_LSI_TYPE_DEFAULT = 0, ///< Select default configuration. This type dose not change Phy LSI default setting by strapping option. + ETHER_PHY_LSI_TYPE_VSC8541 = 1, ///< Select configuration forVSC8541 + ETHER_PHY_LSI_TYPE_KSZ9131 = 2, ///< Select configuration forKSZ9131 + ETHER_PHY_LSI_TYPE_KSZ9031 = 3, ///< Select configuration forKSZ9031 + ETHER_PHY_LSI_TYPE_KSZ8081 = 4, ///< Select configuration forKSZ8081 + ETHER_PHY_LSI_TYPE_KSZ8041 = 5, ///< Select configuration forKSZ8041 + ETHER_PHY_LSI_TYPE_CUSTOM = 0xFFU, ///< Select configuration for User custom. +} ether_phy_lsi_type_t; + +/*============================================== + * ETHER SWITCH API Overrides + *==============================================*/ + +/** Ether Switch Event code of callback function */ +typedef enum e_ether_switch_event +{ + ETHER_SWITCH_EVENT_LINK_CHANGE ///< Change Link status +} ether_switch_event_t; + +/** Ether Switch Callback function parameter data */ +typedef struct st_ether_switch_callback_args +{ + uint32_t channel; ///< Device channel number + ether_switch_event_t event; ///< Event code + + uint32_t status_link; ///< Link status bit0:port0. bit1:port1. bit2:port2, bit3:port3 + + void const * p_context; ///< Placeholder for user data. +} ether_switch_callback_args_t; + +/*============================================== + * IOPORT API Overrides + *==============================================*/ + +/** Superset of all peripheral functions. */ +typedef enum e_ioport_pin_pfc +{ + IOPORT_PIN_P000_PFC_00_ETH2_RXD3 = (0x00U << IOPORT_PFC_OFFSET), ///< P00_0 / ETHER_ETHn / ETH2_RXD3 + IOPORT_PIN_P000_PFC_02_D15 = (0x02U << IOPORT_PFC_OFFSET), ///< P00_0 / BSC / D15 + IOPORT_PIN_P000_PFC_03_SCK2 = (0x03U << IOPORT_PFC_OFFSET), ///< P00_0 / SCIn / SCK2 + IOPORT_PIN_P000_PFC_04_DE2 = (0x04U << IOPORT_PFC_OFFSET), ///< P00_0 / SCIn / DE2 + IOPORT_PIN_P000_PFC_05_HD15 = (0x05U << IOPORT_PFC_OFFSET), ///< P00_0 / PHOSTIF / HD15 + IOPORT_PIN_P001_PFC_00_IRQ0 = (0x00U << IOPORT_PFC_OFFSET), ///< P00_1 / IRQ / IRQ0 + IOPORT_PIN_P001_PFC_01_ETH2_RXDV = (0x01U << IOPORT_PFC_OFFSET), ///< P00_1 / ETHER_ETHn / ETH2_RXDV + IOPORT_PIN_P001_PFC_03_A13 = (0x03U << IOPORT_PFC_OFFSET), ///< P00_1 / BSC / A13 + IOPORT_PIN_P001_PFC_04_MTIC5U = (0x04U << IOPORT_PFC_OFFSET), ///< P00_1 / MTU3n / MTIC5U + IOPORT_PIN_P001_PFC_05_RXD2_SCL2_MISO2 = (0x05U << IOPORT_PFC_OFFSET), ///< P00_1 / SCIn / RXD2_SCL2_MISO2 + IOPORT_PIN_P002_PFC_00_ETH2_TXEN = (0x00U << IOPORT_PFC_OFFSET), ///< P00_2 / ETHER_ETHn / ETH2_TXEN + IOPORT_PIN_P002_PFC_02_RD = (0x02U << IOPORT_PFC_OFFSET), ///< P00_2 / BSC / RD + IOPORT_PIN_P002_PFC_03_MTIC5V = (0x03U << IOPORT_PFC_OFFSET), ///< P00_2 / MTU3n / MTIC5V + IOPORT_PIN_P002_PFC_04_TXD2_SDA2_MOSI2 = (0x04U << IOPORT_PFC_OFFSET), ///< P00_2 / SCIn / TXD2_SDA2_MOSI2 + IOPORT_PIN_P002_PFC_05_USB_OVRCUR = (0x05U << IOPORT_PFC_OFFSET), ///< P00_2 / USB_HS / USB_OVRCUR + IOPORT_PIN_P003_PFC_00_IRQ1 = (0x00U << IOPORT_PFC_OFFSET), ///< P00_3 / IRQ / IRQ1 + IOPORT_PIN_P003_PFC_01_ETH2_REFCLK = (0x01U << IOPORT_PFC_OFFSET), ///< P00_3 / ETHER_ETHn / ETH2_REFCLK + IOPORT_PIN_P003_PFC_02_RMII2_REFCLK = (0x02U << IOPORT_PFC_OFFSET), ///< P00_3 / ETHER_ETHn / RMII2_REFCLK + IOPORT_PIN_P003_PFC_04_RD_WR = (0x04U << IOPORT_PFC_OFFSET), ///< P00_3 / BSC / RD_WR + IOPORT_PIN_P003_PFC_05_MTIC5W = (0x05U << IOPORT_PFC_OFFSET), ///< P00_3 / MTU3n / MTIC5W + IOPORT_PIN_P003_PFC_06_SS2_CTS2_RTS2 = (0x06U << IOPORT_PFC_OFFSET), ///< P00_3 / SCIn / SS2_CTS2_RTS2 + IOPORT_PIN_P004_PFC_00_IRQ13 = (0x00U << IOPORT_PFC_OFFSET), ///< P00_4 / IRQ / IRQ13 + IOPORT_PIN_P004_PFC_01_ETH2_RXER = (0x01U << IOPORT_PFC_OFFSET), ///< P00_4 / ETHER_ETHn / ETH2_RXER + IOPORT_PIN_P004_PFC_03_WAIT = (0x03U << IOPORT_PFC_OFFSET), ///< P00_4 / BSC / WAIT + IOPORT_PIN_P004_PFC_04_MTIOC3A = (0x04U << IOPORT_PFC_OFFSET), ///< P00_4 / MTU3n / MTIOC3A + IOPORT_PIN_P004_PFC_05_GTIOC0A = (0x05U << IOPORT_PFC_OFFSET), ///< P00_4 / GPTn / GTIOC0A + IOPORT_PIN_P004_PFC_06_MCLK0 = (0x06U << IOPORT_PFC_OFFSET), ///< P00_4 / DSMIFn / MCLK0 + IOPORT_PIN_P004_PFC_07_HWAIT = (0x07U << IOPORT_PFC_OFFSET), ///< P00_4 / PHOSTIF / HWAIT + IOPORT_PIN_P005_PFC_00_ETHSW_PHYLINK2 = (0x00U << IOPORT_PFC_OFFSET), ///< P00_5 / ETHER_ETHSW / ETHSW_PHYLINK2 + IOPORT_PIN_P005_PFC_02_CS0 = (0x02U << IOPORT_PFC_OFFSET), ///< P00_5 / BSC / CS0 + IOPORT_PIN_P005_PFC_03_ESC_PHYLINK2 = (0x03U << IOPORT_PFC_OFFSET), ///< P00_5 / ETHER_ESC / ESC_PHYLINK2 + IOPORT_PIN_P005_PFC_04_MTIOC3C = (0x04U << IOPORT_PFC_OFFSET), ///< P00_5 / MTU3n / MTIOC3C + IOPORT_PIN_P005_PFC_05_GTIOC0B = (0x05U << IOPORT_PFC_OFFSET), ///< P00_5 / GPTn / GTIOC0B + IOPORT_PIN_P005_PFC_06_MDAT0 = (0x06U << IOPORT_PFC_OFFSET), ///< P00_5 / DSMIFn / MDAT0 + IOPORT_PIN_P005_PFC_07_ETHSW_PHYLINK0 = (0x07U << IOPORT_PFC_OFFSET), ///< P00_5 / ETHER_ETHSW / ETHSW_PHYLINK0 + IOPORT_PIN_P005_PFC_08_ESC_PHYLINK0 = (0x08U << IOPORT_PFC_OFFSET), ///< P00_5 / ETHER_ESC / ESC_PHYLINK0 + IOPORT_PIN_P006_PFC_00_ETH2_TXCLK = (0x00U << IOPORT_PFC_OFFSET), ///< P00_6 / ETHER_ETHn / ETH2_TXCLK + IOPORT_PIN_P006_PFC_01_CS5 = (0x01U << IOPORT_PFC_OFFSET), ///< P00_6 / BSC / CS5 + IOPORT_PIN_P006_PFC_02_MTIOC3B = (0x02U << IOPORT_PFC_OFFSET), ///< P00_6 / MTU3n / MTIOC3B + IOPORT_PIN_P006_PFC_03_GTIOC1A = (0x03U << IOPORT_PFC_OFFSET), ///< P00_6 / GPTn / GTIOC1A + IOPORT_PIN_P007_PFC_00_IRQ13 = (0x00U << IOPORT_PFC_OFFSET), ///< P00_7 / IRQ / IRQ13 + IOPORT_PIN_P007_PFC_01_RAS = (0x01U << IOPORT_PFC_OFFSET), ///< P00_7 / BSC / RAS + IOPORT_PIN_P007_PFC_02_MTIOC4A = (0x02U << IOPORT_PFC_OFFSET), ///< P00_7 / MTU3n / MTIOC4A + IOPORT_PIN_P007_PFC_03_GTIOC2A = (0x03U << IOPORT_PFC_OFFSET), ///< P00_7 / GPTn / GTIOC2A + IOPORT_PIN_P010_PFC_00_GMAC_MDIO = (0x00U << IOPORT_PFC_OFFSET), ///< P01_0 / ETHER_GMAC / GMAC_MDIO + IOPORT_PIN_P010_PFC_01_ETHSW_MDIO = (0x01U << IOPORT_PFC_OFFSET), ///< P01_0 / ETHER_ETHSW / ETHSW_MDIO + IOPORT_PIN_P010_PFC_02_CAS = (0x02U << IOPORT_PFC_OFFSET), ///< P01_0 / BSC / CAS + IOPORT_PIN_P010_PFC_03_ESC_MDIO = (0x03U << IOPORT_PFC_OFFSET), ///< P01_0 / ETHER_ESC / ESC_MDIO + IOPORT_PIN_P010_PFC_04_MTIOC4C = (0x04U << IOPORT_PFC_OFFSET), ///< P01_0 / MTU3n / MTIOC4C + IOPORT_PIN_P010_PFC_05_GTIOC3A = (0x05U << IOPORT_PFC_OFFSET), ///< P01_0 / GPTn / GTIOC3A + IOPORT_PIN_P010_PFC_06_CTS2 = (0x06U << IOPORT_PFC_OFFSET), ///< P01_0 / SCIn / CTS2 + IOPORT_PIN_P010_PFC_07_MCLK1 = (0x07U << IOPORT_PFC_OFFSET), ///< P01_0 / DSMIFn / MCLK1 + IOPORT_PIN_P011_PFC_00_GMAC_MDC = (0x00U << IOPORT_PFC_OFFSET), ///< P01_1 / ETHER_GMAC / GMAC_MDC + IOPORT_PIN_P011_PFC_01_ETHSW_MDC = (0x01U << IOPORT_PFC_OFFSET), ///< P01_1 / ETHER_ETHSW / ETHSW_MDC + IOPORT_PIN_P011_PFC_02_CKE = (0x02U << IOPORT_PFC_OFFSET), ///< P01_1 / BSC / CKE + IOPORT_PIN_P011_PFC_03_ESC_MDC = (0x03U << IOPORT_PFC_OFFSET), ///< P01_1 / ETHER_ESC / ESC_MDC + IOPORT_PIN_P011_PFC_04_MTIOC3D = (0x04U << IOPORT_PFC_OFFSET), ///< P01_1 / MTU3n / MTIOC3D + IOPORT_PIN_P011_PFC_05_GTIOC1B = (0x05U << IOPORT_PFC_OFFSET), ///< P01_1 / GPTn / GTIOC1B + IOPORT_PIN_P011_PFC_06_DE2 = (0x06U << IOPORT_PFC_OFFSET), ///< P01_1 / SCIn / DE2 + IOPORT_PIN_P011_PFC_07_MDAT1 = (0x07U << IOPORT_PFC_OFFSET), ///< P01_1 / DSMIFn / MDAT1 + IOPORT_PIN_P012_PFC_00_IRQ2 = (0x00U << IOPORT_PFC_OFFSET), ///< P01_2 / IRQ / IRQ2 + IOPORT_PIN_P012_PFC_01_ETH2_TXD3 = (0x01U << IOPORT_PFC_OFFSET), ///< P01_2 / ETHER_ETHn / ETH2_TXD3 + IOPORT_PIN_P012_PFC_02_CS2 = (0x02U << IOPORT_PFC_OFFSET), ///< P01_2 / BSC / CS2 + IOPORT_PIN_P012_PFC_03_MTIOC4B = (0x03U << IOPORT_PFC_OFFSET), ///< P01_2 / MTU3n / MTIOC4B + IOPORT_PIN_P012_PFC_04_GTIOC2B = (0x04U << IOPORT_PFC_OFFSET), ///< P01_2 / GPTn / GTIOC2B + IOPORT_PIN_P013_PFC_00_ETH2_TXD2 = (0x00U << IOPORT_PFC_OFFSET), ///< P01_3 / ETHER_ETHn / ETH2_TXD2 + IOPORT_PIN_P013_PFC_01_AH = (0x01U << IOPORT_PFC_OFFSET), ///< P01_3 / BSC / AH + IOPORT_PIN_P013_PFC_02_MTIOC4D = (0x02U << IOPORT_PFC_OFFSET), ///< P01_3 / MTU3n / MTIOC4D + IOPORT_PIN_P013_PFC_03_GTIOC3B = (0x03U << IOPORT_PFC_OFFSET), ///< P01_3 / GPTn / GTIOC3B + IOPORT_PIN_P014_PFC_00_IRQ3 = (0x00U << IOPORT_PFC_OFFSET), ///< P01_4 / IRQ / IRQ3 + IOPORT_PIN_P014_PFC_01_ETH2_TXD1 = (0x01U << IOPORT_PFC_OFFSET), ///< P01_4 / ETHER_ETHn / ETH2_TXD1 + IOPORT_PIN_P014_PFC_02_WE1_DQMLU = (0x02U << IOPORT_PFC_OFFSET), ///< P01_4 / BSC / WE1_DQMLU + IOPORT_PIN_P014_PFC_03_POE0 = (0x03U << IOPORT_PFC_OFFSET), ///< P01_4 / MTU_POE3 / POE0 + IOPORT_PIN_P015_PFC_00_ETH2_TXD0 = (0x00U << IOPORT_PFC_OFFSET), ///< P01_5 / ETHER_ETHn / ETH2_TXD0 + IOPORT_PIN_P015_PFC_01_WE0_DQMLL = (0x01U << IOPORT_PFC_OFFSET), ///< P01_5 / BSC / WE0_DQMLL + IOPORT_PIN_P016_PFC_00_GMAC_PTPTRG1 = (0x00U << IOPORT_PFC_OFFSET), ///< P01_6 / ETHER_GMAC / GMAC_PTPTRG1 + IOPORT_PIN_P016_PFC_01_TRACEDATA0 = (0x01U << IOPORT_PFC_OFFSET), ///< P01_6 / TRACE / TRACEDATA0 + IOPORT_PIN_P016_PFC_02_A20 = (0x02U << IOPORT_PFC_OFFSET), ///< P01_6 / BSC / A20 + IOPORT_PIN_P016_PFC_03_ESC_LATCH1 = (0x03U << IOPORT_PFC_OFFSET), ///< P01_6 / ETHER_ESC / ESC_LATCH1 + IOPORT_PIN_P016_PFC_04_ESC_LATCH0 = (0x04U << IOPORT_PFC_OFFSET), ///< P01_6 / ETHER_ESC / ESC_LATCH0 + IOPORT_PIN_P016_PFC_05_MTIOC1A = (0x05U << IOPORT_PFC_OFFSET), ///< P01_6 / MTU3n / MTIOC1A + IOPORT_PIN_P016_PFC_06_GTIOC9A = (0x06U << IOPORT_PFC_OFFSET), ///< P01_6 / GPTn / GTIOC9A + IOPORT_PIN_P016_PFC_07_CTS1 = (0x07U << IOPORT_PFC_OFFSET), ///< P01_6 / SCIn / CTS1 + IOPORT_PIN_P016_PFC_08_CANTXDP1 = (0x08U << IOPORT_PFC_OFFSET), ///< P01_6 / CANFDn / CANTXDP1 + IOPORT_PIN_P016_PFC_0A_HA20 = (0x0AU << IOPORT_PFC_OFFSET), ///< P01_6 / PHOSTIF / HA20 + IOPORT_PIN_P017_PFC_00_ETHSW_LPI1 = (0x00U << IOPORT_PFC_OFFSET), ///< P01_7 / ETHER_ETHSW / ETHSW_LPI1 + IOPORT_PIN_P017_PFC_01_TRACEDATA1 = (0x01U << IOPORT_PFC_OFFSET), ///< P01_7 / TRACE / TRACEDATA1 + IOPORT_PIN_P017_PFC_02_A19 = (0x02U << IOPORT_PFC_OFFSET), ///< P01_7 / BSC / A19 + IOPORT_PIN_P017_PFC_03_MTIOC1B = (0x03U << IOPORT_PFC_OFFSET), ///< P01_7 / MTU3n / MTIOC1B + IOPORT_PIN_P017_PFC_04_GTIOC9B = (0x04U << IOPORT_PFC_OFFSET), ///< P01_7 / GPTn / GTIOC9B + IOPORT_PIN_P017_PFC_05_ADTRG0 = (0x05U << IOPORT_PFC_OFFSET), ///< P01_7 / ADCn / ADTRG0 + IOPORT_PIN_P017_PFC_06_SCK1 = (0x06U << IOPORT_PFC_OFFSET), ///< P01_7 / SCIn / SCK1 + IOPORT_PIN_P017_PFC_07_SPI_RSPCK3 = (0x07U << IOPORT_PFC_OFFSET), ///< P01_7 / SPIn / SPI_RSPCK3 + IOPORT_PIN_P017_PFC_08_CANRX0 = (0x08U << IOPORT_PFC_OFFSET), ///< P01_7 / CANFDn / CANRX0 + IOPORT_PIN_P017_PFC_0A_HA19 = (0x0AU << IOPORT_PFC_OFFSET), ///< P01_7 / PHOSTIF / HA19 + IOPORT_PIN_P020_PFC_00_IRQ4 = (0x00U << IOPORT_PFC_OFFSET), ///< P02_0 / IRQ / IRQ4 + IOPORT_PIN_P020_PFC_01_ETHSW_LPI2 = (0x01U << IOPORT_PFC_OFFSET), ///< P02_0 / ETHER_ETHSW / ETHSW_LPI2 + IOPORT_PIN_P020_PFC_02_TRACEDATA2 = (0x02U << IOPORT_PFC_OFFSET), ///< P02_0 / TRACE / TRACEDATA2 + IOPORT_PIN_P020_PFC_03_A18 = (0x03U << IOPORT_PFC_OFFSET), ///< P02_0 / BSC / A18 + IOPORT_PIN_P020_PFC_04_GTADSML0 = (0x04U << IOPORT_PFC_OFFSET), ///< P02_0 / GPT / GTADSML0 + IOPORT_PIN_P020_PFC_05_RXD1_SCL1_MISO1 = (0x05U << IOPORT_PFC_OFFSET), ///< P02_0 / SCIn / RXD1_SCL1_MISO1 + IOPORT_PIN_P020_PFC_06_SPI_MISO3 = (0x06U << IOPORT_PFC_OFFSET), ///< P02_0 / SPIn / SPI_MISO3 + IOPORT_PIN_P020_PFC_07_CANTX1 = (0x07U << IOPORT_PFC_OFFSET), ///< P02_0 / CANFDn / CANTX1 + IOPORT_PIN_P020_PFC_08_USB_OTGID = (0x08U << IOPORT_PFC_OFFSET), ///< P02_0 / USB_HS / USB_OTGID + IOPORT_PIN_P020_PFC_0A_HA18 = (0x0AU << IOPORT_PFC_OFFSET), ///< P02_0 / PHOSTIF / HA18 + IOPORT_PIN_P021_PFC_00_ETHSW_PTPOUT1 = (0x00U << IOPORT_PFC_OFFSET), ///< P02_1 / ETHER_ETHSW / ETHSW_PTPOUT1 + IOPORT_PIN_P021_PFC_01_A17 = (0x01U << IOPORT_PFC_OFFSET), ///< P02_1 / BSC / A17 + IOPORT_PIN_P021_PFC_02_ESC_SYNC1 = (0x02U << IOPORT_PFC_OFFSET), ///< P02_1 / ETHER_ESC / ESC_SYNC1 + IOPORT_PIN_P021_PFC_03_ESC_SYNC0 = (0x03U << IOPORT_PFC_OFFSET), ///< P02_1 / ETHER_ESC / ESC_SYNC0 + IOPORT_PIN_P021_PFC_04_DE1 = (0x04U << IOPORT_PFC_OFFSET), ///< P02_1 / SCIn / DE1 + IOPORT_PIN_P021_PFC_05_HA17 = (0x05U << IOPORT_PFC_OFFSET), ///< P02_1 / PHOSTIF / HA17 + IOPORT_PIN_P022_PFC_00_IRQ14 = (0x00U << IOPORT_PFC_OFFSET), ///< P02_2 / IRQ / IRQ14 + IOPORT_PIN_P022_PFC_01_ETHSW_TDMAOUT0 = (0x01U << IOPORT_PFC_OFFSET), ///< P02_2 / ETHER_ETHSW / ETHSW_TDMAOUT0 + IOPORT_PIN_P022_PFC_02_A16 = (0x02U << IOPORT_PFC_OFFSET), ///< P02_2 / BSC / A16 + IOPORT_PIN_P022_PFC_03_MTIOC2A = (0x03U << IOPORT_PFC_OFFSET), ///< P02_2 / MTU3n / MTIOC2A + IOPORT_PIN_P022_PFC_04_GTIOC10A = (0x04U << IOPORT_PFC_OFFSET), ///< P02_2 / GPTn / GTIOC10A + IOPORT_PIN_P022_PFC_05_POE10 = (0x05U << IOPORT_PFC_OFFSET), ///< P02_2 / MTU_POE3 / POE10 + IOPORT_PIN_P022_PFC_06_TXD1_SDA1_MOSI1 = (0x06U << IOPORT_PFC_OFFSET), ///< P02_2 / SCIn / TXD1_SDA1_MOSI1 + IOPORT_PIN_P022_PFC_07_SPI_MOSI3 = (0x07U << IOPORT_PFC_OFFSET), ///< P02_2 / SPIn / SPI_MOSI3 + IOPORT_PIN_P022_PFC_08_CANTX0 = (0x08U << IOPORT_PFC_OFFSET), ///< P02_2 / CANFDn / CANTX0 + IOPORT_PIN_P022_PFC_0A_RTCAT1HZ = (0x0AU << IOPORT_PFC_OFFSET), ///< P02_2 / RTC / RTCAT1HZ + IOPORT_PIN_P022_PFC_0B_HA16 = (0x0BU << IOPORT_PFC_OFFSET), ///< P02_2 / PHOSTIF / HA16 + IOPORT_PIN_P023_PFC_00_IRQ15 = (0x00U << IOPORT_PFC_OFFSET), ///< P02_3 / IRQ / IRQ15 + IOPORT_PIN_P023_PFC_01_ETHSW_TDMAOUT1 = (0x01U << IOPORT_PFC_OFFSET), ///< P02_3 / ETHER_ETHSW / ETHSW_TDMAOUT1 + IOPORT_PIN_P023_PFC_02_A15 = (0x02U << IOPORT_PFC_OFFSET), ///< P02_3 / BSC / A15 + IOPORT_PIN_P023_PFC_03_AH = (0x03U << IOPORT_PFC_OFFSET), ///< P02_3 / BSC / AH + IOPORT_PIN_P023_PFC_04_MTIOC2B = (0x04U << IOPORT_PFC_OFFSET), ///< P02_3 / MTU3n / MTIOC2B + IOPORT_PIN_P023_PFC_05_GTIOC10B = (0x05U << IOPORT_PFC_OFFSET), ///< P02_3 / GPTn / GTIOC10B + IOPORT_PIN_P023_PFC_06_POE11 = (0x06U << IOPORT_PFC_OFFSET), ///< P02_3 / MTU_POE3 / POE11 + IOPORT_PIN_P023_PFC_07_SS1_CTS1_RTS1 = (0x07U << IOPORT_PFC_OFFSET), ///< P02_3 / SCIn / SS1_CTS1_RTS1 + IOPORT_PIN_P023_PFC_08_SPI_SSL30 = (0x08U << IOPORT_PFC_OFFSET), ///< P02_3 / SPIn / SPI_SSL30 + IOPORT_PIN_P023_PFC_09_CANRX1 = (0x09U << IOPORT_PFC_OFFSET), ///< P02_3 / CANFDn / CANRX1 + IOPORT_PIN_P023_PFC_0B_HA15 = (0x0BU << IOPORT_PFC_OFFSET), ///< P02_3 / PHOSTIF / HA15 + IOPORT_PIN_P024_PFC_00_TDO = (0x00U << IOPORT_PFC_OFFSET), ///< P02_4 / JTAG/SWD / TDO + IOPORT_PIN_P024_PFC_01_WE0_DQMLL = (0x01U << IOPORT_PFC_OFFSET), ///< P02_4 / BSC / WE0_DQMLL + IOPORT_PIN_P024_PFC_02_DE1 = (0x02U << IOPORT_PFC_OFFSET), ///< P02_4 / SCIn / DE1 + IOPORT_PIN_P024_PFC_03_SPI_SSL33 = (0x03U << IOPORT_PFC_OFFSET), ///< P02_4 / SPIn / SPI_SSL33 + IOPORT_PIN_P025_PFC_00_ETHSW_TDMAOUT3 = (0x00U << IOPORT_PFC_OFFSET), ///< P02_5 / ETHER_ETHSW / ETHSW_TDMAOUT3 + IOPORT_PIN_P025_PFC_01_TDI = (0x01U << IOPORT_PFC_OFFSET), ///< P02_5 / JTAG/SWD / TDI + IOPORT_PIN_P025_PFC_02_WE1_DQMLU = (0x02U << IOPORT_PFC_OFFSET), ///< P02_5 / BSC / WE1_DQMLU + IOPORT_PIN_P025_PFC_03_SCK5 = (0x03U << IOPORT_PFC_OFFSET), ///< P02_5 / SCIn / SCK5 + IOPORT_PIN_P025_PFC_04_SPI_SSL31 = (0x04U << IOPORT_PFC_OFFSET), ///< P02_5 / SPIn / SPI_SSL31 + IOPORT_PIN_P026_PFC_00_TMS_SWDIO = (0x00U << IOPORT_PFC_OFFSET), ///< P02_6 / JTAG/SWD / TMS_SWDIO + IOPORT_PIN_P026_PFC_01_RXD5_SCL5_MISO5 = (0x01U << IOPORT_PFC_OFFSET), ///< P02_6 / SCIn / RXD5_SCL5_MISO5 + IOPORT_PIN_P027_PFC_00_TCK_SWCLK = (0x00U << IOPORT_PFC_OFFSET), ///< P02_7 / JTAG/SWD / TCK_SWCLK + IOPORT_PIN_P027_PFC_01_TXD5_SDA5_MOSI5 = (0x01U << IOPORT_PFC_OFFSET), ///< P02_7 / SCIn / TXD5_SDA5_MOSI5 + IOPORT_PIN_P030_PFC_00_IRQ14 = (0x00U << IOPORT_PFC_OFFSET), ///< P03_0 / IRQ / IRQ14 + IOPORT_PIN_P030_PFC_01_TRACEDATA3 = (0x01U << IOPORT_PFC_OFFSET), ///< P03_0 / TRACE / TRACEDATA3 + IOPORT_PIN_P030_PFC_02_A14 = (0x02U << IOPORT_PFC_OFFSET), ///< P03_0 / BSC / A14 + IOPORT_PIN_P030_PFC_03_CS5 = (0x03U << IOPORT_PFC_OFFSET), ///< P03_0 / BSC / CS5 + IOPORT_PIN_P030_PFC_04_GTADSML1 = (0x04U << IOPORT_PFC_OFFSET), ///< P03_0 / GPT / GTADSML1 + IOPORT_PIN_P030_PFC_05_SCK2 = (0x05U << IOPORT_PFC_OFFSET), ///< P03_0 / SCIn / SCK2 + IOPORT_PIN_P030_PFC_06_SPI_SSL32 = (0x06U << IOPORT_PFC_OFFSET), ///< P03_0 / SPIn / SPI_SSL32 + IOPORT_PIN_P030_PFC_07_CANTXDP1 = (0x07U << IOPORT_PFC_OFFSET), ///< P03_0 / CANFDn / CANTXDP1 + IOPORT_PIN_P030_PFC_09_HA14 = (0x09U << IOPORT_PFC_OFFSET), ///< P03_0 / PHOSTIF / HA14 + IOPORT_PIN_P035_PFC_00_IRQ5 = (0x00U << IOPORT_PFC_OFFSET), ///< P03_5 / IRQ / IRQ5 + IOPORT_PIN_P035_PFC_01_ETH2_CRS = (0x01U << IOPORT_PFC_OFFSET), ///< P03_5 / ETHER_ETHn / ETH2_CRS + IOPORT_PIN_P035_PFC_02_A12 = (0x02U << IOPORT_PFC_OFFSET), ///< P03_5 / BSC / A12 + IOPORT_PIN_P035_PFC_03_MTIOC3A = (0x03U << IOPORT_PFC_OFFSET), ///< P03_5 / MTU3n / MTIOC3A + IOPORT_PIN_P035_PFC_04_GTIOC4A = (0x04U << IOPORT_PFC_OFFSET), ///< P03_5 / GPTn / GTIOC4A + IOPORT_PIN_P035_PFC_05_RXD2_SCL2_MISO2 = (0x05U << IOPORT_PFC_OFFSET), ///< P03_5 / SCIn / RXD2_SCL2_MISO2 + IOPORT_PIN_P035_PFC_06_MCLK2 = (0x06U << IOPORT_PFC_OFFSET), ///< P03_5 / DSMIFn / MCLK2 + IOPORT_PIN_P035_PFC_07_HA12 = (0x07U << IOPORT_PFC_OFFSET), ///< P03_5 / PHOSTIF / HA12 + IOPORT_PIN_P036_PFC_00_IRQ8 = (0x00U << IOPORT_PFC_OFFSET), ///< P03_6 / IRQ / IRQ8 + IOPORT_PIN_P036_PFC_01_ETH2_COL = (0x01U << IOPORT_PFC_OFFSET), ///< P03_6 / ETHER_ETHn / ETH2_COL + IOPORT_PIN_P036_PFC_02_TRACEDATA4 = (0x02U << IOPORT_PFC_OFFSET), ///< P03_6 / TRACE / TRACEDATA4 + IOPORT_PIN_P036_PFC_03_A11 = (0x03U << IOPORT_PFC_OFFSET), ///< P03_6 / BSC / A11 + IOPORT_PIN_P036_PFC_04_MTIOC3B = (0x04U << IOPORT_PFC_OFFSET), ///< P03_6 / MTU3n / MTIOC3B + IOPORT_PIN_P036_PFC_05_GTIOC4B = (0x05U << IOPORT_PFC_OFFSET), ///< P03_6 / GPTn / GTIOC4B + IOPORT_PIN_P036_PFC_06_TXD2_SDA2_MOSI2 = (0x06U << IOPORT_PFC_OFFSET), ///< P03_6 / SCIn / TXD2_SDA2_MOSI2 + IOPORT_PIN_P036_PFC_07_SPI_SSL13 = (0x07U << IOPORT_PFC_OFFSET), ///< P03_6 / SPIn / SPI_SSL13 + IOPORT_PIN_P036_PFC_08_MDAT2 = (0x08U << IOPORT_PFC_OFFSET), ///< P03_6 / DSMIFn / MDAT2 + IOPORT_PIN_P036_PFC_09_HA11 = (0x09U << IOPORT_PFC_OFFSET), ///< P03_6 / PHOSTIF / HA11 + IOPORT_PIN_P037_PFC_00_IRQ9 = (0x00U << IOPORT_PFC_OFFSET), ///< P03_7 / IRQ / IRQ9 + IOPORT_PIN_P037_PFC_01_ETH2_TXER = (0x01U << IOPORT_PFC_OFFSET), ///< P03_7 / ETHER_ETHn / ETH2_TXER + IOPORT_PIN_P037_PFC_02_TRACEDATA5 = (0x02U << IOPORT_PFC_OFFSET), ///< P03_7 / TRACE / TRACEDATA5 + IOPORT_PIN_P037_PFC_03_A10 = (0x03U << IOPORT_PFC_OFFSET), ///< P03_7 / BSC / A10 + IOPORT_PIN_P037_PFC_04_MTIOC3C = (0x04U << IOPORT_PFC_OFFSET), ///< P03_7 / MTU3n / MTIOC3C + IOPORT_PIN_P037_PFC_05_GTIOC5A = (0x05U << IOPORT_PFC_OFFSET), ///< P03_7 / GPTn / GTIOC5A + IOPORT_PIN_P037_PFC_06_SCK3 = (0x06U << IOPORT_PFC_OFFSET), ///< P03_7 / SCIn / SCK3 + IOPORT_PIN_P037_PFC_07_HA10 = (0x07U << IOPORT_PFC_OFFSET), ///< P03_7 / PHOSTIF / HA10 + IOPORT_PIN_P040_PFC_00_TRACEDATA6 = (0x00U << IOPORT_PFC_OFFSET), ///< P04_0 / TRACE / TRACEDATA6 + IOPORT_PIN_P040_PFC_01_A9 = (0x01U << IOPORT_PFC_OFFSET), ///< P04_0 / BSC / A9 + IOPORT_PIN_P040_PFC_02_MTIOC3D = (0x02U << IOPORT_PFC_OFFSET), ///< P04_0 / MTU3n / MTIOC3D + IOPORT_PIN_P040_PFC_03_GTIOC5B = (0x03U << IOPORT_PFC_OFFSET), ///< P04_0 / GPTn / GTIOC5B + IOPORT_PIN_P040_PFC_04_RXD3_SCL3_MISO3 = (0x04U << IOPORT_PFC_OFFSET), ///< P04_0 / SCIn / RXD3_SCL3_MISO3 + IOPORT_PIN_P040_PFC_05_HA9 = (0x05U << IOPORT_PFC_OFFSET), ///< P04_0 / PHOSTIF / HA9 + IOPORT_PIN_P041_PFC_00_CKIO = (0x00U << IOPORT_PFC_OFFSET), ///< P04_1 / BSC / CKIO + IOPORT_PIN_P041_PFC_01_TXD3_SDA3_MOSI3 = (0x01U << IOPORT_PFC_OFFSET), ///< P04_1 / SCIn / TXD3_SDA3_MOSI3 + IOPORT_PIN_P041_PFC_02_SPI_MOSI0 = (0x02U << IOPORT_PFC_OFFSET), ///< P04_1 / SPIn / SPI_MOSI0 + IOPORT_PIN_P041_PFC_03_IIC_SDA2 = (0x03U << IOPORT_PFC_OFFSET), ///< P04_1 / IICn / IIC_SDA2 + IOPORT_PIN_P041_PFC_04_HCKIO = (0x04U << IOPORT_PFC_OFFSET), ///< P04_1 / PHOSTIF / HCKIO + IOPORT_PIN_P044_PFC_00_IRQ10 = (0x00U << IOPORT_PFC_OFFSET), ///< P04_4 / IRQ / IRQ10 + IOPORT_PIN_P044_PFC_01_TRACEDATA7 = (0x01U << IOPORT_PFC_OFFSET), ///< P04_4 / TRACE / TRACEDATA7 + IOPORT_PIN_P044_PFC_02_A8 = (0x02U << IOPORT_PFC_OFFSET), ///< P04_4 / BSC / A8 + IOPORT_PIN_P044_PFC_03_GTADSMP0 = (0x03U << IOPORT_PFC_OFFSET), ///< P04_4 / GPT / GTADSMP0 + IOPORT_PIN_P044_PFC_04_POE10 = (0x04U << IOPORT_PFC_OFFSET), ///< P04_4 / MTU_POE3 / POE10 + IOPORT_PIN_P044_PFC_05_CTS3 = (0x05U << IOPORT_PFC_OFFSET), ///< P04_4 / SCIn / CTS3 + IOPORT_PIN_P044_PFC_06_SPI_RSPCK1 = (0x06U << IOPORT_PFC_OFFSET), ///< P04_4 / SPIn / SPI_RSPCK1 + IOPORT_PIN_P044_PFC_08_HA8 = (0x08U << IOPORT_PFC_OFFSET), ///< P04_4 / PHOSTIF / HA8 + IOPORT_PIN_P045_PFC_00_A7 = (0x00U << IOPORT_PFC_OFFSET), ///< P04_5 / BSC / A7 + IOPORT_PIN_P045_PFC_01_DE3 = (0x01U << IOPORT_PFC_OFFSET), ///< P04_5 / SCIn / DE3 + IOPORT_PIN_P045_PFC_02_ETHSW_PTPOUT0 = (0x02U << IOPORT_PFC_OFFSET), ///< P04_5 / ETHER_ETHSW / ETHSW_PTPOUT0 + IOPORT_PIN_P045_PFC_03_ESC_SYNC0 = (0x03U << IOPORT_PFC_OFFSET), ///< P04_5 / ETHER_ESC / ESC_SYNC0 + IOPORT_PIN_P045_PFC_04_ESC_SYNC1 = (0x04U << IOPORT_PFC_OFFSET), ///< P04_5 / ETHER_ESC / ESC_SYNC1 + IOPORT_PIN_P045_PFC_05_HA7 = (0x05U << IOPORT_PFC_OFFSET), ///< P04_5 / PHOSTIF / HA7 + IOPORT_PIN_P046_PFC_00_ETH1_TXER = (0x00U << IOPORT_PFC_OFFSET), ///< P04_6 / ETHER_ETHn / ETH1_TXER + IOPORT_PIN_P046_PFC_01_A6 = (0x01U << IOPORT_PFC_OFFSET), ///< P04_6 / BSC / A6 + IOPORT_PIN_P046_PFC_02_DACK = (0x02U << IOPORT_PFC_OFFSET), ///< P04_6 / DMAC / DACK + IOPORT_PIN_P046_PFC_03_RTCAT1HZ = (0x03U << IOPORT_PFC_OFFSET), ///< P04_6 / RTC / RTCAT1HZ + IOPORT_PIN_P046_PFC_04_HA6 = (0x04U << IOPORT_PFC_OFFSET), ///< P04_6 / PHOSTIF / HA6 + IOPORT_PIN_P047_PFC_00_ETH0_TXER = (0x00U << IOPORT_PFC_OFFSET), ///< P04_7 / ETHER_ETHn / ETH0_TXER + IOPORT_PIN_P047_PFC_01_A5 = (0x01U << IOPORT_PFC_OFFSET), ///< P04_7 / BSC / A5 + IOPORT_PIN_P047_PFC_02_SPI_SSL21 = (0x02U << IOPORT_PFC_OFFSET), ///< P04_7 / SPIn / SPI_SSL21 + IOPORT_PIN_P047_PFC_03_ETH2_TXER = (0x03U << IOPORT_PFC_OFFSET), ///< P04_7 / ETHER_ETHn / ETH2_TXER + IOPORT_PIN_P047_PFC_04_HA5 = (0x04U << IOPORT_PFC_OFFSET), ///< P04_7 / PHOSTIF / HA5 + IOPORT_PIN_P050_PFC_00_IRQ12 = (0x00U << IOPORT_PFC_OFFSET), ///< P05_0 / IRQ / IRQ12 + IOPORT_PIN_P050_PFC_01_ETH1_CRS = (0x01U << IOPORT_PFC_OFFSET), ///< P05_0 / ETHER_ETHn / ETH1_CRS + IOPORT_PIN_P050_PFC_02_A4 = (0x02U << IOPORT_PFC_OFFSET), ///< P05_0 / BSC / A4 + IOPORT_PIN_P050_PFC_03_MTIOC4A = (0x03U << IOPORT_PFC_OFFSET), ///< P05_0 / MTU3n / MTIOC4A + IOPORT_PIN_P050_PFC_04_GTIOC6A = (0x04U << IOPORT_PFC_OFFSET), ///< P05_0 / GPTn / GTIOC6A + IOPORT_PIN_P050_PFC_05_CMTW0_TOC0 = (0x05U << IOPORT_PFC_OFFSET), ///< P05_0 / CMTWn / CMTW0_TOC0 + IOPORT_PIN_P050_PFC_06_SS5_CTS5_RTS5 = (0x06U << IOPORT_PFC_OFFSET), ///< P05_0 / SCIn / SS5_CTS5_RTS5 + IOPORT_PIN_P050_PFC_07_CANTXDP0 = (0x07U << IOPORT_PFC_OFFSET), ///< P05_0 / CANFDn / CANTXDP0 + IOPORT_PIN_P050_PFC_08_USB_VBUSEN = (0x08U << IOPORT_PFC_OFFSET), ///< P05_0 / USB_HS / USB_VBUSEN + IOPORT_PIN_P050_PFC_09_MCLK3 = (0x09U << IOPORT_PFC_OFFSET), ///< P05_0 / DSMIFn / MCLK3 + IOPORT_PIN_P050_PFC_0B_HA4 = (0x0BU << IOPORT_PFC_OFFSET), ///< P05_0 / PHOSTIF / HA4 + IOPORT_PIN_P051_PFC_00_IRQ13 = (0x00U << IOPORT_PFC_OFFSET), ///< P05_1 / IRQ / IRQ13 + IOPORT_PIN_P051_PFC_01_ETH1_COL = (0x01U << IOPORT_PFC_OFFSET), ///< P05_1 / ETHER_ETHn / ETH1_COL + IOPORT_PIN_P051_PFC_02_A3 = (0x02U << IOPORT_PFC_OFFSET), ///< P05_1 / BSC / A3 + IOPORT_PIN_P051_PFC_03_MTIOC4B = (0x03U << IOPORT_PFC_OFFSET), ///< P05_1 / MTU3n / MTIOC4B + IOPORT_PIN_P051_PFC_04_GTIOC6B = (0x04U << IOPORT_PFC_OFFSET), ///< P05_1 / GPTn / GTIOC6B + IOPORT_PIN_P051_PFC_05_CMTW0_TIC1 = (0x05U << IOPORT_PFC_OFFSET), ///< P05_1 / CMTWn / CMTW0_TIC1 + IOPORT_PIN_P051_PFC_06_CTS5 = (0x06U << IOPORT_PFC_OFFSET), ///< P05_1 / SCIn / CTS5 + IOPORT_PIN_P051_PFC_07_CANRXDP0 = (0x07U << IOPORT_PFC_OFFSET), ///< P05_1 / CANFDn / CANRXDP0 + IOPORT_PIN_P051_PFC_08_USB_EXICEN = (0x08U << IOPORT_PFC_OFFSET), ///< P05_1 / USB_HS / USB_EXICEN + IOPORT_PIN_P051_PFC_09_MDAT3 = (0x09U << IOPORT_PFC_OFFSET), ///< P05_1 / DSMIFn / MDAT3 + IOPORT_PIN_P051_PFC_0B_HA3 = (0x0BU << IOPORT_PFC_OFFSET), ///< P05_1 / PHOSTIF / HA3 + IOPORT_PIN_P052_PFC_00_IRQ14 = (0x00U << IOPORT_PFC_OFFSET), ///< P05_2 / IRQ / IRQ14 + IOPORT_PIN_P052_PFC_01_ETH0_CRS = (0x01U << IOPORT_PFC_OFFSET), ///< P05_2 / ETHER_ETHn / ETH0_CRS + IOPORT_PIN_P052_PFC_02_A2 = (0x02U << IOPORT_PFC_OFFSET), ///< P05_2 / BSC / A2 + IOPORT_PIN_P052_PFC_03_MTIOC4C = (0x03U << IOPORT_PFC_OFFSET), ///< P05_2 / MTU3n / MTIOC4C + IOPORT_PIN_P052_PFC_04_GTETRGSA = (0x04U << IOPORT_PFC_OFFSET), ///< P05_2 / GPT_POEG / GTETRGSA + IOPORT_PIN_P052_PFC_05_GTIOC7A = (0x05U << IOPORT_PFC_OFFSET), ///< P05_2 / GPTn / GTIOC7A + IOPORT_PIN_P052_PFC_06_CMTW0_TOC0 = (0x06U << IOPORT_PFC_OFFSET), ///< P05_2 / CMTWn / CMTW0_TOC0 + IOPORT_PIN_P052_PFC_07_DE5 = (0x07U << IOPORT_PFC_OFFSET), ///< P05_2 / SCIn / DE5 + IOPORT_PIN_P052_PFC_08_IIC_SCL1 = (0x08U << IOPORT_PFC_OFFSET), ///< P05_2 / IICn / IIC_SCL1 + IOPORT_PIN_P052_PFC_09_CANRX0 = (0x09U << IOPORT_PFC_OFFSET), ///< P05_2 / CANFDn / CANRX0 + IOPORT_PIN_P052_PFC_0A_DREQ = (0x0AU << IOPORT_PFC_OFFSET), ///< P05_2 / DMAC / DREQ + IOPORT_PIN_P052_PFC_0B_USB_VBUSEN = (0x0BU << IOPORT_PFC_OFFSET), ///< P05_2 / USB_HS / USB_VBUSEN + IOPORT_PIN_P052_PFC_0D_HA2 = (0x0DU << IOPORT_PFC_OFFSET), ///< P05_2 / PHOSTIF / HA2 + IOPORT_PIN_P053_PFC_00_IRQ15 = (0x00U << IOPORT_PFC_OFFSET), ///< P05_3 / IRQ / IRQ15 + IOPORT_PIN_P053_PFC_01_ETH0_COL = (0x01U << IOPORT_PFC_OFFSET), ///< P05_3 / ETHER_ETHn / ETH0_COL + IOPORT_PIN_P053_PFC_02_A1 = (0x02U << IOPORT_PFC_OFFSET), ///< P05_3 / BSC / A1 + IOPORT_PIN_P053_PFC_03_MTIOC4D = (0x03U << IOPORT_PFC_OFFSET), ///< P05_3 / MTU3n / MTIOC4D + IOPORT_PIN_P053_PFC_04_GTETRGSB = (0x04U << IOPORT_PFC_OFFSET), ///< P05_3 / GPT_POEG / GTETRGSB + IOPORT_PIN_P053_PFC_05_GTIOC7B = (0x05U << IOPORT_PFC_OFFSET), ///< P05_3 / GPTn / GTIOC7B + IOPORT_PIN_P053_PFC_06_POE11 = (0x06U << IOPORT_PFC_OFFSET), ///< P05_3 / MTU_POE3 / POE11 + IOPORT_PIN_P053_PFC_07_CMTW0_TIC0 = (0x07U << IOPORT_PFC_OFFSET), ///< P05_3 / CMTWn / CMTW0_TIC0 + IOPORT_PIN_P053_PFC_08_SCK4 = (0x08U << IOPORT_PFC_OFFSET), ///< P05_3 / SCIn / SCK4 + IOPORT_PIN_P053_PFC_09_IIC_SDA1 = (0x09U << IOPORT_PFC_OFFSET), ///< P05_3 / IICn / IIC_SDA1 + IOPORT_PIN_P053_PFC_0A_CANTX0 = (0x0AU << IOPORT_PFC_OFFSET), ///< P05_3 / CANFDn / CANTX0 + IOPORT_PIN_P053_PFC_0B_USB_EXICEN = (0x0BU << IOPORT_PFC_OFFSET), ///< P05_3 / USB_HS / USB_EXICEN + IOPORT_PIN_P053_PFC_0D_HA1 = (0x0DU << IOPORT_PFC_OFFSET), ///< P05_3 / PHOSTIF / HA1 + IOPORT_PIN_P054_PFC_00_IRQ12 = (0x00U << IOPORT_PFC_OFFSET), ///< P05_4 / IRQ / IRQ12 + IOPORT_PIN_P054_PFC_01_ETHSW_LPI0 = (0x01U << IOPORT_PFC_OFFSET), ///< P05_4 / ETHER_ETHSW / ETHSW_LPI0 + IOPORT_PIN_P054_PFC_02_A0 = (0x02U << IOPORT_PFC_OFFSET), ///< P05_4 / BSC / A0 + IOPORT_PIN_P054_PFC_03_GTIOC14A = (0x03U << IOPORT_PFC_OFFSET), ///< P05_4 / GPTn / GTIOC14A + IOPORT_PIN_P054_PFC_04_RXD4_SCL4_MISO4 = (0x04U << IOPORT_PFC_OFFSET), ///< P05_4 / SCIn / RXD4_SCL4_MISO4 + IOPORT_PIN_P054_PFC_05_SPI_SSL00 = (0x05U << IOPORT_PFC_OFFSET), ///< P05_4 / SPIn / SPI_SSL00 + IOPORT_PIN_P054_PFC_06_CANTXDP0 = (0x06U << IOPORT_PFC_OFFSET), ///< P05_4 / CANFDn / CANTXDP0 + IOPORT_PIN_P054_PFC_07_DACK = (0x07U << IOPORT_PFC_OFFSET), ///< P05_4 / DMAC / DACK + IOPORT_PIN_P054_PFC_08_USB_OVRCUR = (0x08U << IOPORT_PFC_OFFSET), ///< P05_4 / USB_HS / USB_OVRCUR + IOPORT_PIN_P054_PFC_0A_HA0 = (0x0AU << IOPORT_PFC_OFFSET), ///< P05_4 / PHOSTIF / HA0 + IOPORT_PIN_P055_PFC_00_ETHSW_PHYLINK1 = (0x00U << IOPORT_PFC_OFFSET), ///< P05_5 / ETHER_ETHSW / ETHSW_PHYLINK1 + IOPORT_PIN_P055_PFC_02_ESC_PHYLINK1 = (0x02U << IOPORT_PFC_OFFSET), ///< P05_5 / ETHER_ESC / ESC_PHYLINK1 + IOPORT_PIN_P055_PFC_03_GTIOC14B = (0x03U << IOPORT_PFC_OFFSET), ///< P05_5 / GPTn / GTIOC14B + IOPORT_PIN_P055_PFC_04_CMTW0_TOC1 = (0x04U << IOPORT_PFC_OFFSET), ///< P05_5 / CMTWn / CMTW0_TOC1 + IOPORT_PIN_P055_PFC_05_SPI_RSPCK2 = (0x05U << IOPORT_PFC_OFFSET), ///< P05_5 / SPIn / SPI_RSPCK2 + IOPORT_PIN_P056_PFC_00_IRQ12 = (0x00U << IOPORT_PFC_OFFSET), ///< P05_6 / IRQ / IRQ12 + IOPORT_PIN_P056_PFC_01_ETH1_RXER = (0x01U << IOPORT_PFC_OFFSET), ///< P05_6 / ETHER_ETHn / ETH1_RXER + IOPORT_PIN_P056_PFC_03_GTIOC15A = (0x03U << IOPORT_PFC_OFFSET), ///< P05_6 / GPTn / GTIOC15A + IOPORT_PIN_P056_PFC_04_CMTW1_TIC0 = (0x04U << IOPORT_PFC_OFFSET), ///< P05_6 / CMTWn / CMTW1_TIC0 + IOPORT_PIN_P056_PFC_05_SPI_SSL22 = (0x05U << IOPORT_PFC_OFFSET), ///< P05_6 / SPIn / SPI_SSL22 + IOPORT_PIN_P057_PFC_00_ETH1_TXD2 = (0x00U << IOPORT_PFC_OFFSET), ///< P05_7 / ETHER_ETHn / ETH1_TXD2 + IOPORT_PIN_P057_PFC_02_GTIOC15B = (0x02U << IOPORT_PFC_OFFSET), ///< P05_7 / GPTn / GTIOC15B + IOPORT_PIN_P057_PFC_03_CMTW1_TOC1 = (0x03U << IOPORT_PFC_OFFSET), ///< P05_7 / CMTWn / CMTW1_TOC1 + IOPORT_PIN_P057_PFC_04_TXD4_SDA4_MOSI4 = (0x04U << IOPORT_PFC_OFFSET), ///< P05_7 / SCIn / TXD4_SDA4_MOSI4 + IOPORT_PIN_P057_PFC_05_SPI_SSL23 = (0x05U << IOPORT_PFC_OFFSET), ///< P05_7 / SPIn / SPI_SSL23 + IOPORT_PIN_P060_PFC_00_ETH1_TXD3 = (0x00U << IOPORT_PFC_OFFSET), ///< P06_0 / ETHER_ETHn / ETH1_TXD3 + IOPORT_PIN_P060_PFC_02_GTIOC16A = (0x02U << IOPORT_PFC_OFFSET), ///< P06_0 / GPTn / GTIOC16A + IOPORT_PIN_P060_PFC_03_CMTW1_TOC0 = (0x03U << IOPORT_PFC_OFFSET), ///< P06_0 / CMTWn / CMTW1_TOC0 + IOPORT_PIN_P060_PFC_04_SS4_CTS4_RTS4 = (0x04U << IOPORT_PFC_OFFSET), ///< P06_0 / SCIn / SS4_CTS4_RTS4 + IOPORT_PIN_P060_PFC_05_SPI_SSL23 = (0x05U << IOPORT_PFC_OFFSET), ///< P06_0 / SPIn / SPI_SSL23 + IOPORT_PIN_P060_PFC_06_CANRX1 = (0x06U << IOPORT_PFC_OFFSET), ///< P06_0 / CANFDn / CANRX1 + IOPORT_PIN_P061_PFC_00_ETH1_REFCLK = (0x00U << IOPORT_PFC_OFFSET), ///< P06_1 / ETHER_ETHn / ETH1_REFCLK + IOPORT_PIN_P061_PFC_01_RMII1_REFCLK = (0x01U << IOPORT_PFC_OFFSET), ///< P06_1 / ETHER_ETHn / RMII1_REFCLK + IOPORT_PIN_P061_PFC_03_GTIOC16B = (0x03U << IOPORT_PFC_OFFSET), ///< P06_1 / GPTn / GTIOC16B + IOPORT_PIN_P061_PFC_04_CTS4 = (0x04U << IOPORT_PFC_OFFSET), ///< P06_1 / SCIn / CTS4 + IOPORT_PIN_P061_PFC_05_SPI_SSL22 = (0x05U << IOPORT_PFC_OFFSET), ///< P06_1 / SPIn / SPI_SSL22 + IOPORT_PIN_P061_PFC_06_CANTX1 = (0x06U << IOPORT_PFC_OFFSET), ///< P06_1 / CANFDn / CANTX1 + IOPORT_PIN_P062_PFC_00_ETH1_TXD1 = (0x00U << IOPORT_PFC_OFFSET), ///< P06_2 / ETHER_ETHn / ETH1_TXD1 + IOPORT_PIN_P062_PFC_02_GTIOC17A = (0x02U << IOPORT_PFC_OFFSET), ///< P06_2 / GPTn / GTIOC17A + IOPORT_PIN_P062_PFC_03_CANRXDP1 = (0x03U << IOPORT_PFC_OFFSET), ///< P06_2 / CANFDn / CANRXDP1 + IOPORT_PIN_P063_PFC_00_ETH1_TXD0 = (0x00U << IOPORT_PFC_OFFSET), ///< P06_3 / ETHER_ETHn / ETH1_TXD0 + IOPORT_PIN_P063_PFC_02_GTIOC17B = (0x02U << IOPORT_PFC_OFFSET), ///< P06_3 / GPTn / GTIOC17B + IOPORT_PIN_P063_PFC_03_CMTW1_TIC1 = (0x03U << IOPORT_PFC_OFFSET), ///< P06_3 / CMTWn / CMTW1_TIC1 + IOPORT_PIN_P063_PFC_04_DE4 = (0x04U << IOPORT_PFC_OFFSET), ///< P06_3 / SCIn / DE4 + IOPORT_PIN_P063_PFC_05_SPI_MISO1 = (0x05U << IOPORT_PFC_OFFSET), ///< P06_3 / SPIn / SPI_MISO1 + IOPORT_PIN_P063_PFC_06_CANTXDP1 = (0x06U << IOPORT_PFC_OFFSET), ///< P06_3 / CANFDn / CANTXDP1 + IOPORT_PIN_P064_PFC_00_ETH1_TXCLK = (0x00U << IOPORT_PFC_OFFSET), ///< P06_4 / ETHER_ETHn / ETH1_TXCLK + IOPORT_PIN_P064_PFC_02_GTIOC11A = (0x02U << IOPORT_PFC_OFFSET), ///< P06_4 / GPTn / GTIOC11A + IOPORT_PIN_P064_PFC_03_SPI_MOSI1 = (0x03U << IOPORT_PFC_OFFSET), ///< P06_4 / SPIn / SPI_MOSI1 + IOPORT_PIN_P065_PFC_00_ETH1_TXEN = (0x00U << IOPORT_PFC_OFFSET), ///< P06_5 / ETHER_ETHn / ETH1_TXEN + IOPORT_PIN_P065_PFC_02_GTIOC11B = (0x02U << IOPORT_PFC_OFFSET), ///< P06_5 / GPTn / GTIOC11B + IOPORT_PIN_P066_PFC_00_ETH1_RXD0 = (0x00U << IOPORT_PFC_OFFSET), ///< P06_6 / ETHER_ETHn / ETH1_RXD0 + IOPORT_PIN_P066_PFC_02_GTIOC12A = (0x02U << IOPORT_PFC_OFFSET), ///< P06_6 / GPTn / GTIOC12A + IOPORT_PIN_P066_PFC_03_SPI_SSL10 = (0x03U << IOPORT_PFC_OFFSET), ///< P06_6 / SPIn / SPI_SSL10 + IOPORT_PIN_P067_PFC_00_ETH1_RXD1 = (0x00U << IOPORT_PFC_OFFSET), ///< P06_7 / ETHER_ETHn / ETH1_RXD1 + IOPORT_PIN_P067_PFC_02_GTIOC12B = (0x02U << IOPORT_PFC_OFFSET), ///< P06_7 / GPTn / GTIOC12B + IOPORT_PIN_P067_PFC_03_SPI_SSL11 = (0x03U << IOPORT_PFC_OFFSET), ///< P06_7 / SPIn / SPI_SSL11 + IOPORT_PIN_P070_PFC_00_ETH1_RXD2 = (0x00U << IOPORT_PFC_OFFSET), ///< P07_0 / ETHER_ETHn / ETH1_RXD2 + IOPORT_PIN_P070_PFC_02_GTIOC13A = (0x02U << IOPORT_PFC_OFFSET), ///< P07_0 / GPTn / GTIOC13A + IOPORT_PIN_P071_PFC_00_ETH1_RXD3 = (0x00U << IOPORT_PFC_OFFSET), ///< P07_1 / ETHER_ETHn / ETH1_RXD3 + IOPORT_PIN_P071_PFC_02_GTIOC13B = (0x02U << IOPORT_PFC_OFFSET), ///< P07_1 / GPTn / GTIOC13B + IOPORT_PIN_P072_PFC_00_ETH1_RXDV = (0x00U << IOPORT_PFC_OFFSET), ///< P07_2 / ETHER_ETHn / ETH1_RXDV + IOPORT_PIN_P073_PFC_00_ETH1_RXCLK = (0x00U << IOPORT_PFC_OFFSET), ///< P07_3 / ETHER_ETHn / ETH1_RXCLK + IOPORT_PIN_P074_PFC_00_IRQ1 = (0x00U << IOPORT_PFC_OFFSET), ///< P07_4 / IRQ / IRQ1 + IOPORT_PIN_P074_PFC_01_ADTRG0 = (0x01U << IOPORT_PFC_OFFSET), ///< P07_4 / ADCn / ADTRG0 + IOPORT_PIN_P074_PFC_02_USB_VBUSIN = (0x02U << IOPORT_PFC_OFFSET), ///< P07_4 / USB_HS / USB_VBUSIN + IOPORT_PIN_P084_PFC_00_ETH0_RXD3 = (0x00U << IOPORT_PFC_OFFSET), ///< P08_4 / ETHER_ETHn / ETH0_RXD3 + IOPORT_PIN_P084_PFC_02_MTIOC6A = (0x02U << IOPORT_PFC_OFFSET), ///< P08_4 / MTU3n / MTIOC6A + IOPORT_PIN_P085_PFC_00_ETH0_RXDV = (0x00U << IOPORT_PFC_OFFSET), ///< P08_5 / ETHER_ETHn / ETH0_RXDV + IOPORT_PIN_P085_PFC_01_MTIOC6B = (0x01U << IOPORT_PFC_OFFSET), ///< P08_5 / MTU3n / MTIOC6B + IOPORT_PIN_P086_PFC_00_ETH0_RXCLK = (0x00U << IOPORT_PFC_OFFSET), ///< P08_6 / ETHER_ETHn / ETH0_RXCLK + IOPORT_PIN_P086_PFC_01_MTIOC6C = (0x01U << IOPORT_PFC_OFFSET), ///< P08_6 / MTU3n / MTIOC6C + IOPORT_PIN_P087_PFC_00_GMAC_MDC = (0x00U << IOPORT_PFC_OFFSET), ///< P08_7 / ETHER_GMAC / GMAC_MDC + IOPORT_PIN_P087_PFC_01_ETHSW_MDC = (0x01U << IOPORT_PFC_OFFSET), ///< P08_7 / ETHER_ETHSW / ETHSW_MDC + IOPORT_PIN_P087_PFC_03_ESC_MDC = (0x03U << IOPORT_PFC_OFFSET), ///< P08_7 / ETHER_ESC / ESC_MDC + IOPORT_PIN_P087_PFC_04_MTIOC6D = (0x04U << IOPORT_PFC_OFFSET), ///< P08_7 / MTU3n / MTIOC6D + IOPORT_PIN_P090_PFC_00_GMAC_MDIO = (0x00U << IOPORT_PFC_OFFSET), ///< P09_0 / ETHER_GMAC / GMAC_MDIO + IOPORT_PIN_P090_PFC_01_ETHSW_MDIO = (0x01U << IOPORT_PFC_OFFSET), ///< P09_0 / ETHER_ETHSW / ETHSW_MDIO + IOPORT_PIN_P090_PFC_03_ESC_MDIO = (0x03U << IOPORT_PFC_OFFSET), ///< P09_0 / ETHER_ESC / ESC_MDIO + IOPORT_PIN_P090_PFC_04_MTIOC7A = (0x04U << IOPORT_PFC_OFFSET), ///< P09_0 / MTU3n / MTIOC7A + IOPORT_PIN_P091_PFC_00_ETH0_REFCLK = (0x00U << IOPORT_PFC_OFFSET), ///< P09_1 / ETHER_ETHn / ETH0_REFCLK + IOPORT_PIN_P091_PFC_01_RMII0_REFCLK = (0x01U << IOPORT_PFC_OFFSET), ///< P09_1 / ETHER_ETHn / RMII0_REFCLK + IOPORT_PIN_P091_PFC_02_MTIOC7B = (0x02U << IOPORT_PFC_OFFSET), ///< P09_1 / MTU3n / MTIOC7B + IOPORT_PIN_P092_PFC_00_IRQ0 = (0x00U << IOPORT_PFC_OFFSET), ///< P09_2 / IRQ / IRQ0 + IOPORT_PIN_P092_PFC_01_ETH0_RXER = (0x01U << IOPORT_PFC_OFFSET), ///< P09_2 / ETHER_ETHn / ETH0_RXER + IOPORT_PIN_P092_PFC_03_MTIOC7C = (0x03U << IOPORT_PFC_OFFSET), ///< P09_2 / MTU3n / MTIOC7C + IOPORT_PIN_P093_PFC_00_ETH0_TXD3 = (0x00U << IOPORT_PFC_OFFSET), ///< P09_3 / ETHER_ETHn / ETH0_TXD3 + IOPORT_PIN_P093_PFC_01_MTIOC7D = (0x01U << IOPORT_PFC_OFFSET), ///< P09_3 / MTU3n / MTIOC7D + IOPORT_PIN_P094_PFC_00_ETH0_TXD2 = (0x00U << IOPORT_PFC_OFFSET), ///< P09_4 / ETHER_ETHn / ETH0_TXD2 + IOPORT_PIN_P095_PFC_00_ETH0_TXD1 = (0x00U << IOPORT_PFC_OFFSET), ///< P09_5 / ETHER_ETHn / ETH0_TXD1 + IOPORT_PIN_P096_PFC_00_ETH0_TXD0 = (0x00U << IOPORT_PFC_OFFSET), ///< P09_6 / ETHER_ETHn / ETH0_TXD0 + IOPORT_PIN_P097_PFC_00_ETH0_TXCLK = (0x00U << IOPORT_PFC_OFFSET), ///< P09_7 / ETHER_ETHn / ETH0_TXCLK + IOPORT_PIN_P100_PFC_00_ETH0_TXEN = (0x00U << IOPORT_PFC_OFFSET), ///< P10_0 / ETHER_ETHn / ETH0_TXEN + IOPORT_PIN_P101_PFC_00_ETH0_RXD0 = (0x00U << IOPORT_PFC_OFFSET), ///< P10_1 / ETHER_ETHn / ETH0_RXD0 + IOPORT_PIN_P102_PFC_00_ETH0_RXD1 = (0x00U << IOPORT_PFC_OFFSET), ///< P10_2 / ETHER_ETHn / ETH0_RXD1 + IOPORT_PIN_P103_PFC_00_ETH0_RXD2 = (0x00U << IOPORT_PFC_OFFSET), ///< P10_3 / ETHER_ETHn / ETH0_RXD2 + IOPORT_PIN_P103_PFC_01_RTCAT1HZ = (0x01U << IOPORT_PFC_OFFSET), ///< P10_3 / RTC / RTCAT1HZ + IOPORT_PIN_P104_PFC_00_IRQ11 = (0x00U << IOPORT_PFC_OFFSET), ///< P10_4 / IRQ / IRQ11 + IOPORT_PIN_P104_PFC_01_ETHSW_PHYLINK0 = (0x01U << IOPORT_PFC_OFFSET), ///< P10_4 / ETHER_ETHSW / ETHSW_PHYLINK0 + IOPORT_PIN_P104_PFC_03_ESC_PHYLINK0 = (0x03U << IOPORT_PFC_OFFSET), ///< P10_4 / ETHER_ESC / ESC_PHYLINK0 + IOPORT_PIN_P124_PFC_01_ETH1_CRS = (0x01U << IOPORT_PFC_OFFSET), ///< P12_4 / ETHER_ETHn / ETH1_CRS + IOPORT_PIN_P124_PFC_02_TRACEDATA0 = (0x02U << IOPORT_PFC_OFFSET), ///< P12_4 / TRACE / TRACEDATA0 + IOPORT_PIN_P124_PFC_03_D15 = (0x03U << IOPORT_PFC_OFFSET), ///< P12_4 / BSC / D15 + IOPORT_PIN_P124_PFC_04_MTIOC8B = (0x04U << IOPORT_PFC_OFFSET), ///< P12_4 / MTU3n / MTIOC8B + IOPORT_PIN_P124_PFC_05_GTIOC8B = (0x05U << IOPORT_PFC_OFFSET), ///< P12_4 / GPTn / GTIOC8B + IOPORT_PIN_P124_PFC_06_SPI_SSL01 = (0x06U << IOPORT_PFC_OFFSET), ///< P12_4 / SPIn / SPI_SSL01 + IOPORT_PIN_P124_PFC_08_MBX_HINT = (0x08U << IOPORT_PFC_OFFSET), ///< P12_4 / MBXSEM / MBX_HINT + IOPORT_PIN_P132_PFC_00_IRQ5 = (0x00U << IOPORT_PFC_OFFSET), ///< P13_2 / IRQ / IRQ5 + IOPORT_PIN_P132_PFC_02_ETHSW_PTPOUT2 = (0x02U << IOPORT_PFC_OFFSET), ///< P13_2 / ETHER_ETHSW / ETHSW_PTPOUT2 + IOPORT_PIN_P132_PFC_03_TRACEDATA6 = (0x03U << IOPORT_PFC_OFFSET), ///< P13_2 / TRACE / TRACEDATA6 + IOPORT_PIN_P132_PFC_04_D9 = (0x04U << IOPORT_PFC_OFFSET), ///< P13_2 / BSC / D9 + IOPORT_PIN_P132_PFC_05_ESC_I2CCLK = (0x05U << IOPORT_PFC_OFFSET), ///< P13_2 / ETHER_ESC / ESC_I2CCLK + IOPORT_PIN_P132_PFC_06_MTIOC0A = (0x06U << IOPORT_PFC_OFFSET), ///< P13_2 / MTU3n / MTIOC0A + IOPORT_PIN_P132_PFC_07_GTIOC10A = (0x07U << IOPORT_PFC_OFFSET), ///< P13_2 / GPTn / GTIOC10A + IOPORT_PIN_P132_PFC_08_POE8 = (0x08U << IOPORT_PFC_OFFSET), ///< P13_2 / MTU_POE3 / POE8 + IOPORT_PIN_P132_PFC_09_SS1_CTS1_RTS1 = (0x09U << IOPORT_PFC_OFFSET), ///< P13_2 / SCIn / SS1_CTS1_RTS1 + IOPORT_PIN_P132_PFC_0A_SPI_MISO0 = (0x0AU << IOPORT_PFC_OFFSET), ///< P13_2 / SPIn / SPI_MISO0 + IOPORT_PIN_P132_PFC_0B_IIC_SCL0 = (0x0BU << IOPORT_PFC_OFFSET), ///< P13_2 / IICn / IIC_SCL0 + IOPORT_PIN_P132_PFC_0C_MCLK4 = (0x0CU << IOPORT_PFC_OFFSET), ///< P13_2 / DSMIFn / MCLK4 + IOPORT_PIN_P132_PFC_0E_A13 = (0x0EU << IOPORT_PFC_OFFSET), ///< P13_2 / BSC / A13 + IOPORT_PIN_P133_PFC_01_ETHSW_PTPOUT3 = (0x01U << IOPORT_PFC_OFFSET), ///< P13_3 / ETHER_ETHSW / ETHSW_PTPOUT3 + IOPORT_PIN_P133_PFC_02_TRACEDATA7 = (0x02U << IOPORT_PFC_OFFSET), ///< P13_3 / TRACE / TRACEDATA7 + IOPORT_PIN_P133_PFC_03_D8 = (0x03U << IOPORT_PFC_OFFSET), ///< P13_3 / BSC / D8 + IOPORT_PIN_P133_PFC_04_ESC_I2CDATA = (0x04U << IOPORT_PFC_OFFSET), ///< P13_3 / ETHER_ESC / ESC_I2CDATA + IOPORT_PIN_P133_PFC_05_MTIOC0C = (0x05U << IOPORT_PFC_OFFSET), ///< P13_3 / MTU3n / MTIOC0C + IOPORT_PIN_P133_PFC_06_MTIOC0B = (0x06U << IOPORT_PFC_OFFSET), ///< P13_3 / MTU3n / MTIOC0B + IOPORT_PIN_P133_PFC_07_GTIOC10B = (0x07U << IOPORT_PFC_OFFSET), ///< P13_3 / GPTn / GTIOC10B + IOPORT_PIN_P133_PFC_08_CMTW1_TOC0 = (0x08U << IOPORT_PFC_OFFSET), ///< P13_3 / CMTWn / CMTW1_TOC0 + IOPORT_PIN_P133_PFC_09_CTS1 = (0x09U << IOPORT_PFC_OFFSET), ///< P13_3 / SCIn / CTS1 + IOPORT_PIN_P133_PFC_0A_SPI_RSPCK0 = (0x0AU << IOPORT_PFC_OFFSET), ///< P13_3 / SPIn / SPI_RSPCK0 + IOPORT_PIN_P133_PFC_0B_IIC_SDA0 = (0x0BU << IOPORT_PFC_OFFSET), ///< P13_3 / IICn / IIC_SDA0 + IOPORT_PIN_P133_PFC_0C_MDAT4 = (0x0CU << IOPORT_PFC_OFFSET), ///< P13_3 / DSMIFn / MDAT4 + IOPORT_PIN_P133_PFC_0E_RD = (0x0EU << IOPORT_PFC_OFFSET), ///< P13_3 / BSC / RD + IOPORT_PIN_P134_PFC_01_ESC_RESETOUT = (0x01U << IOPORT_PFC_OFFSET), ///< P13_4 / ETHER_ESC / ESC_RESETOUT + IOPORT_PIN_P134_PFC_02_MTIOC0D = (0x02U << IOPORT_PFC_OFFSET), ///< P13_4 / MTU3n / MTIOC0D + IOPORT_PIN_P134_PFC_03_GTIOC8B = (0x03U << IOPORT_PFC_OFFSET), ///< P13_4 / GPTn / GTIOC8B + IOPORT_PIN_P134_PFC_05_A0 = (0x05U << IOPORT_PFC_OFFSET), ///< P13_4 / BSC / A0 + IOPORT_PIN_P135_PFC_00_XSPI0_WP1 = (0x00U << IOPORT_PFC_OFFSET), ///< P13_5 / XSPIn / XSPI0_WP1 + IOPORT_PIN_P135_PFC_01_GMAC_PTPTRG0 = (0x01U << IOPORT_PFC_OFFSET), ///< P13_5 / ETHER_GMAC / GMAC_PTPTRG0 + IOPORT_PIN_P135_PFC_02_ESC_LATCH0 = (0x02U << IOPORT_PFC_OFFSET), ///< P13_5 / ETHER_ESC / ESC_LATCH0 + IOPORT_PIN_P135_PFC_03_ESC_LATCH1 = (0x03U << IOPORT_PFC_OFFSET), ///< P13_5 / ETHER_ESC / ESC_LATCH1 + IOPORT_PIN_P135_PFC_04_MTCLKA = (0x04U << IOPORT_PFC_OFFSET), ///< P13_5 / MTU3 / MTCLKA + IOPORT_PIN_P135_PFC_05_SPI_RSPCK1 = (0x05U << IOPORT_PFC_OFFSET), ///< P13_5 / SPIn / SPI_RSPCK1 + IOPORT_PIN_P135_PFC_06_IIC_SCL2 = (0x06U << IOPORT_PFC_OFFSET), ///< P13_5 / IICn / IIC_SCL2 + IOPORT_PIN_P136_PFC_00_XSPI0_WP0 = (0x00U << IOPORT_PFC_OFFSET), ///< P13_6 / XSPIn / XSPI0_WP0 + IOPORT_PIN_P136_PFC_01_ETHSW_PTPOUT0 = (0x01U << IOPORT_PFC_OFFSET), ///< P13_6 / ETHER_ETHSW / ETHSW_PTPOUT0 + IOPORT_PIN_P136_PFC_02_ESC_SYNC0 = (0x02U << IOPORT_PFC_OFFSET), ///< P13_6 / ETHER_ESC / ESC_SYNC0 + IOPORT_PIN_P136_PFC_03_ESC_SYNC1 = (0x03U << IOPORT_PFC_OFFSET), ///< P13_6 / ETHER_ESC / ESC_SYNC1 + IOPORT_PIN_P136_PFC_04_MTCLKB = (0x04U << IOPORT_PFC_OFFSET), ///< P13_6 / MTU3 / MTCLKB + IOPORT_PIN_P137_PFC_00_XSPI0_ECS1 = (0x00U << IOPORT_PFC_OFFSET), ///< P13_7 / XSPIn / XSPI0_ECS1 + IOPORT_PIN_P137_PFC_01_GMAC_PTPTRG1 = (0x01U << IOPORT_PFC_OFFSET), ///< P13_7 / ETHER_GMAC / GMAC_PTPTRG1 + IOPORT_PIN_P137_PFC_02_ESC_LATCH1 = (0x02U << IOPORT_PFC_OFFSET), ///< P13_7 / ETHER_ESC / ESC_LATCH1 + IOPORT_PIN_P137_PFC_03_ESC_LATCH0 = (0x03U << IOPORT_PFC_OFFSET), ///< P13_7 / ETHER_ESC / ESC_LATCH0 + IOPORT_PIN_P137_PFC_04_MTCLKC = (0x04U << IOPORT_PFC_OFFSET), ///< P13_7 / MTU3 / MTCLKC + IOPORT_PIN_P137_PFC_05_MBX_HINT = (0x05U << IOPORT_PFC_OFFSET), ///< P13_7 / MBXSEM / MBX_HINT + IOPORT_PIN_P140_PFC_00_XSPI0_INT0 = (0x00U << IOPORT_PFC_OFFSET), ///< P14_0 / XSPIn / XSPI0_INT0 + IOPORT_PIN_P140_PFC_01_ETHSW_PTPOUT1 = (0x01U << IOPORT_PFC_OFFSET), ///< P14_0 / ETHER_ETHSW / ETHSW_PTPOUT1 + IOPORT_PIN_P140_PFC_02_ESC_SYNC1 = (0x02U << IOPORT_PFC_OFFSET), ///< P14_0 / ETHER_ESC / ESC_SYNC1 + IOPORT_PIN_P140_PFC_03_ESC_SYNC0 = (0x03U << IOPORT_PFC_OFFSET), ///< P14_0 / ETHER_ESC / ESC_SYNC0 + IOPORT_PIN_P140_PFC_04_MTCLKD = (0x04U << IOPORT_PFC_OFFSET), ///< P14_0 / MTU3 / MTCLKD + IOPORT_PIN_P141_PFC_00_XSPI0_INT1 = (0x00U << IOPORT_PFC_OFFSET), ///< P14_1 / XSPIn / XSPI0_INT1 + IOPORT_PIN_P141_PFC_01_ETH1_COL = (0x01U << IOPORT_PFC_OFFSET), ///< P14_1 / ETHER_ETHn / ETH1_COL + IOPORT_PIN_P141_PFC_03_MTIOC8A = (0x03U << IOPORT_PFC_OFFSET), ///< P14_1 / MTU3n / MTIOC8A + IOPORT_PIN_P141_PFC_04_GTIOC8A = (0x04U << IOPORT_PFC_OFFSET), ///< P14_1 / GPTn / GTIOC8A + IOPORT_PIN_P141_PFC_06_GMAC_PTPTRG1 = (0x06U << IOPORT_PFC_OFFSET), ///< P14_1 / ETHER_GMAC / GMAC_PTPTRG1 + IOPORT_PIN_P141_PFC_07_ESC_LATCH0 = (0x07U << IOPORT_PFC_OFFSET), ///< P14_1 / ETHER_ESC / ESC_LATCH0 + IOPORT_PIN_P141_PFC_08_ESC_LATCH1 = (0x08U << IOPORT_PFC_OFFSET), ///< P14_1 / ETHER_ESC / ESC_LATCH1 + IOPORT_PIN_P141_PFC_09_HSPI_IO0 = (0x09U << IOPORT_PFC_OFFSET), ///< P14_1 / SHOSTIF / HSPI_IO0 + IOPORT_PIN_P142_PFC_00_IRQ6 = (0x00U << IOPORT_PFC_OFFSET), ///< P14_2 / IRQ / IRQ6 + IOPORT_PIN_P142_PFC_01_XSPI0_ECS0 = (0x01U << IOPORT_PFC_OFFSET), ///< P14_2 / XSPIn / XSPI0_ECS0 + IOPORT_PIN_P142_PFC_02_ETH0_CRS = (0x02U << IOPORT_PFC_OFFSET), ///< P14_2 / ETHER_ETHn / ETH0_CRS + IOPORT_PIN_P142_PFC_04_MTIOC8B = (0x04U << IOPORT_PFC_OFFSET), ///< P14_2 / MTU3n / MTIOC8B + IOPORT_PIN_P142_PFC_05_GTIOC8B = (0x05U << IOPORT_PFC_OFFSET), ///< P14_2 / GPTn / GTIOC8B + IOPORT_PIN_P142_PFC_07_ETH2_CRS = (0x07U << IOPORT_PFC_OFFSET), ///< P14_2 / ETHER_ETHn / ETH2_CRS + IOPORT_PIN_P142_PFC_08_HSPI_CK = (0x08U << IOPORT_PFC_OFFSET), ///< P14_2 / SHOSTIF / HSPI_CK + IOPORT_PIN_P143_PFC_00_XSPI0_RSTO1 = (0x00U << IOPORT_PFC_OFFSET), ///< P14_3 / XSPIn / XSPI0_RSTO1 + IOPORT_PIN_P143_PFC_01_ETH0_COL = (0x01U << IOPORT_PFC_OFFSET), ///< P14_3 / ETHER_ETHn / ETH0_COL + IOPORT_PIN_P143_PFC_04_MTIOC0A = (0x04U << IOPORT_PFC_OFFSET), ///< P14_3 / MTU3n / MTIOC0A + IOPORT_PIN_P143_PFC_06_ETH2_COL = (0x06U << IOPORT_PFC_OFFSET), ///< P14_3 / ETHER_ETHn / ETH2_COL + IOPORT_PIN_P143_PFC_07_HSPI_IO1 = (0x07U << IOPORT_PFC_OFFSET), ///< P14_3 / SHOSTIF / HSPI_IO1 + IOPORT_PIN_P144_PFC_00_XSPI0_DS = (0x00U << IOPORT_PFC_OFFSET), ///< P14_4 / XSPIn / XSPI0_DS + IOPORT_PIN_P144_PFC_01_BS = (0x01U << IOPORT_PFC_OFFSET), ///< P14_4 / BSC / BS + IOPORT_PIN_P144_PFC_02_ESC_IRQ = (0x02U << IOPORT_PFC_OFFSET), ///< P14_4 / ETHER_ESC / ESC_IRQ + IOPORT_PIN_P144_PFC_03_MTIOC0B = (0x03U << IOPORT_PFC_OFFSET), ///< P14_4 / MTU3n / MTIOC0B + IOPORT_PIN_P144_PFC_04_HBS = (0x04U << IOPORT_PFC_OFFSET), ///< P14_4 / PHOSTIF / HBS + IOPORT_PIN_P145_PFC_00_XSPI0_CKN = (0x00U << IOPORT_PFC_OFFSET), ///< P14_5 / XSPIn / XSPI0_CKN + IOPORT_PIN_P145_PFC_01_CS3 = (0x01U << IOPORT_PFC_OFFSET), ///< P14_5 / BSC / CS3 + IOPORT_PIN_P145_PFC_02_POE8 = (0x02U << IOPORT_PFC_OFFSET), ///< P14_5 / MTU_POE3 / POE8 + IOPORT_PIN_P145_PFC_03_HSPI_INT = (0x03U << IOPORT_PFC_OFFSET), ///< P14_5 / SHOSTIF / HSPI_INT + IOPORT_PIN_P146_PFC_00_XSPI0_CKP = (0x00U << IOPORT_PFC_OFFSET), ///< P14_6 / XSPIn / XSPI0_CKP + IOPORT_PIN_P146_PFC_01_A21 = (0x01U << IOPORT_PFC_OFFSET), ///< P14_6 / BSC / A21 + IOPORT_PIN_P147_PFC_00_XSPI0_IO0 = (0x00U << IOPORT_PFC_OFFSET), ///< P14_7 / XSPIn / XSPI0_IO0 + IOPORT_PIN_P147_PFC_01_A22 = (0x01U << IOPORT_PFC_OFFSET), ///< P14_7 / BSC / A22 + IOPORT_PIN_P147_PFC_02_SCK5 = (0x02U << IOPORT_PFC_OFFSET), ///< P14_7 / SCIn / SCK5 + IOPORT_PIN_P147_PFC_03_SPI_MISO1 = (0x03U << IOPORT_PFC_OFFSET), ///< P14_7 / SPIn / SPI_MISO1 + IOPORT_PIN_P147_PFC_04_BS = (0x04U << IOPORT_PFC_OFFSET), ///< P14_7 / BSC / BS + IOPORT_PIN_P150_PFC_00_XSPI0_IO1 = (0x00U << IOPORT_PFC_OFFSET), ///< P15_0 / XSPIn / XSPI0_IO1 + IOPORT_PIN_P150_PFC_01_A23 = (0x01U << IOPORT_PFC_OFFSET), ///< P15_0 / BSC / A23 + IOPORT_PIN_P150_PFC_02_RXD5_SCL5_MISO5 = (0x02U << IOPORT_PFC_OFFSET), ///< P15_0 / SCIn / RXD5_SCL5_MISO5 + IOPORT_PIN_P150_PFC_03_SPI_MOSI1 = (0x03U << IOPORT_PFC_OFFSET), ///< P15_0 / SPIn / SPI_MOSI1 + IOPORT_PIN_P150_PFC_04_CKE = (0x04U << IOPORT_PFC_OFFSET), ///< P15_0 / BSC / CKE + IOPORT_PIN_P151_PFC_00_XSPI0_IO2 = (0x00U << IOPORT_PFC_OFFSET), ///< P15_1 / XSPIn / XSPI0_IO2 + IOPORT_PIN_P151_PFC_01_A24 = (0x01U << IOPORT_PFC_OFFSET), ///< P15_1 / BSC / A24 + IOPORT_PIN_P151_PFC_02_MTIOC0C = (0x02U << IOPORT_PFC_OFFSET), ///< P15_1 / MTU3n / MTIOC0C + IOPORT_PIN_P151_PFC_03_TXD5_SDA5_MOSI5 = (0x03U << IOPORT_PFC_OFFSET), ///< P15_1 / SCIn / TXD5_SDA5_MOSI5 + IOPORT_PIN_P151_PFC_04_SPI_SSL10 = (0x04U << IOPORT_PFC_OFFSET), ///< P15_1 / SPIn / SPI_SSL10 + IOPORT_PIN_P151_PFC_05_CAS = (0x05U << IOPORT_PFC_OFFSET), ///< P15_1 / BSC / CAS + IOPORT_PIN_P152_PFC_00_XSPI0_IO3 = (0x00U << IOPORT_PFC_OFFSET), ///< P15_2 / XSPIn / XSPI0_IO3 + IOPORT_PIN_P152_PFC_01_A25 = (0x01U << IOPORT_PFC_OFFSET), ///< P15_2 / BSC / A25 + IOPORT_PIN_P152_PFC_02_MTIOC0D = (0x02U << IOPORT_PFC_OFFSET), ///< P15_2 / MTU3n / MTIOC0D + IOPORT_PIN_P152_PFC_03_SS5_CTS5_RTS5 = (0x03U << IOPORT_PFC_OFFSET), ///< P15_2 / SCIn / SS5_CTS5_RTS5 + IOPORT_PIN_P152_PFC_04_SPI_SSL11 = (0x04U << IOPORT_PFC_OFFSET), ///< P15_2 / SPIn / SPI_SSL11 + IOPORT_PIN_P152_PFC_05_RAS = (0x05U << IOPORT_PFC_OFFSET), ///< P15_2 / BSC / RAS + IOPORT_PIN_P153_PFC_00_XSPI0_IO4 = (0x00U << IOPORT_PFC_OFFSET), ///< P15_3 / XSPIn / XSPI0_IO4 + IOPORT_PIN_P153_PFC_01_MTIOC8C = (0x01U << IOPORT_PFC_OFFSET), ///< P15_3 / MTU3n / MTIOC8C + IOPORT_PIN_P153_PFC_02_MCLK1 = (0x02U << IOPORT_PFC_OFFSET), ///< P15_3 / DSMIFn / MCLK1 + IOPORT_PIN_P153_PFC_03_D11 = (0x03U << IOPORT_PFC_OFFSET), ///< P15_3 / BSC / D11 + IOPORT_PIN_P154_PFC_00_XSPI0_IO5 = (0x00U << IOPORT_PFC_OFFSET), ///< P15_4 / XSPIn / XSPI0_IO5 + IOPORT_PIN_P154_PFC_01_MTIOC8D = (0x01U << IOPORT_PFC_OFFSET), ///< P15_4 / MTU3n / MTIOC8D + IOPORT_PIN_P154_PFC_02_MDAT1 = (0x02U << IOPORT_PFC_OFFSET), ///< P15_4 / DSMIFn / MDAT1 + IOPORT_PIN_P154_PFC_03_D12 = (0x03U << IOPORT_PFC_OFFSET), ///< P15_4 / BSC / D12 + IOPORT_PIN_P155_PFC_00_XSPI0_IO6 = (0x00U << IOPORT_PFC_OFFSET), ///< P15_5 / XSPIn / XSPI0_IO6 + IOPORT_PIN_P155_PFC_01_MCLK2 = (0x01U << IOPORT_PFC_OFFSET), ///< P15_5 / DSMIFn / MCLK2 + IOPORT_PIN_P155_PFC_02_D13 = (0x02U << IOPORT_PFC_OFFSET), ///< P15_5 / BSC / D13 + IOPORT_PIN_P156_PFC_00_XSPI0_IO7 = (0x00U << IOPORT_PFC_OFFSET), ///< P15_6 / XSPIn / XSPI0_IO7 + IOPORT_PIN_P156_PFC_01_SPI_SSL12 = (0x01U << IOPORT_PFC_OFFSET), ///< P15_6 / SPIn / SPI_SSL12 + IOPORT_PIN_P156_PFC_02_MDAT2 = (0x02U << IOPORT_PFC_OFFSET), ///< P15_6 / DSMIFn / MDAT2 + IOPORT_PIN_P156_PFC_03_D14 = (0x03U << IOPORT_PFC_OFFSET), ///< P15_6 / BSC / D14 + IOPORT_PIN_P157_PFC_00_XSPI0_CS0 = (0x00U << IOPORT_PFC_OFFSET), ///< P15_7 / XSPIn / XSPI0_CS0 + IOPORT_PIN_P157_PFC_01_CTS5 = (0x01U << IOPORT_PFC_OFFSET), ///< P15_7 / SCIn / CTS5 + IOPORT_PIN_P157_PFC_02_SPI_SSL13 = (0x02U << IOPORT_PFC_OFFSET), ///< P15_7 / SPIn / SPI_SSL13 + IOPORT_PIN_P157_PFC_03_TEND = (0x03U << IOPORT_PFC_OFFSET), ///< P15_7 / DMAC / TEND + IOPORT_PIN_P160_PFC_00_XSPI0_CS1 = (0x00U << IOPORT_PFC_OFFSET), ///< P16_0 / XSPIn / XSPI0_CS1 + IOPORT_PIN_P160_PFC_01_ETH0_TXER = (0x01U << IOPORT_PFC_OFFSET), ///< P16_0 / ETHER_ETHn / ETH0_TXER + IOPORT_PIN_P160_PFC_02_TXD0_SDA0_MOSI0 = (0x02U << IOPORT_PFC_OFFSET), ///< P16_0 / SCIn / TXD0_SDA0_MOSI0 + IOPORT_PIN_P160_PFC_03_SPI_MOSI3 = (0x03U << IOPORT_PFC_OFFSET), ///< P16_0 / SPIn / SPI_MOSI3 + IOPORT_PIN_P160_PFC_04_MCLK3 = (0x04U << IOPORT_PFC_OFFSET), ///< P16_0 / DSMIFn / MCLK3 + IOPORT_PIN_P160_PFC_06_ETH2_REFCLK = (0x06U << IOPORT_PFC_OFFSET), ///< P16_0 / ETHER_ETHn / ETH2_REFCLK + IOPORT_PIN_P160_PFC_07_HSPI_CS = (0x07U << IOPORT_PFC_OFFSET), ///< P16_0 / SHOSTIF / HSPI_CS + IOPORT_PIN_P161_PFC_00_XSPI0_RESET0 = (0x00U << IOPORT_PFC_OFFSET), ///< P16_1 / XSPIn / XSPI0_RESET0 + IOPORT_PIN_P161_PFC_01_CMTW0_TOC1 = (0x01U << IOPORT_PFC_OFFSET), ///< P16_1 / CMTWn / CMTW0_TOC1 + IOPORT_PIN_P161_PFC_02_ADTRG0 = (0x02U << IOPORT_PFC_OFFSET), ///< P16_1 / ADCn / ADTRG0 + IOPORT_PIN_P161_PFC_03_RXD0_SCL0_MISO0 = (0x03U << IOPORT_PFC_OFFSET), ///< P16_1 / SCIn / RXD0_SCL0_MISO0 + IOPORT_PIN_P161_PFC_04_SPI_MISO3 = (0x04U << IOPORT_PFC_OFFSET), ///< P16_1 / SPIn / SPI_MISO3 + IOPORT_PIN_P161_PFC_05_MDAT3 = (0x05U << IOPORT_PFC_OFFSET), ///< P16_1 / DSMIFn / MDAT3 + IOPORT_PIN_P161_PFC_07_CS2 = (0x07U << IOPORT_PFC_OFFSET), ///< P16_1 / BSC / CS2 + IOPORT_PIN_P161_PFC_08_HCS1 = (0x08U << IOPORT_PFC_OFFSET), ///< P16_1 / PHOSTIF / HCS1 + IOPORT_PIN_P162_PFC_00_NMI = (0x00U << IOPORT_PFC_OFFSET), ///< P16_2 / IRQ / NMI + IOPORT_PIN_P162_PFC_01_XSPI0_RESET1 = (0x01U << IOPORT_PFC_OFFSET), ///< P16_2 / XSPIn / XSPI0_RESET1 + IOPORT_PIN_P162_PFC_02_CTS0 = (0x02U << IOPORT_PFC_OFFSET), ///< P16_2 / SCIn / CTS0 + IOPORT_PIN_P162_PFC_03_SPI_RSPCK3 = (0x03U << IOPORT_PFC_OFFSET), ///< P16_2 / SPIn / SPI_RSPCK3 + IOPORT_PIN_P162_PFC_04_USB_EXICEN = (0x04U << IOPORT_PFC_OFFSET), ///< P16_2 / USB_HS / USB_EXICEN + IOPORT_PIN_P162_PFC_06_HSPI_IO2 = (0x06U << IOPORT_PFC_OFFSET), ///< P16_2 / SHOSTIF / HSPI_IO2 + IOPORT_PIN_P162_PFC_07_HERROUT = (0x07U << IOPORT_PFC_OFFSET), ///< P16_2 / PHOSTIF / HERROUT + IOPORT_PIN_P163_PFC_00_IRQ7 = (0x00U << IOPORT_PFC_OFFSET), ///< P16_3 / IRQ / IRQ7 + IOPORT_PIN_P163_PFC_01_XSPI0_RSTO0 = (0x01U << IOPORT_PFC_OFFSET), ///< P16_3 / XSPIn / XSPI0_RSTO0 + IOPORT_PIN_P163_PFC_02_ETH1_TXER = (0x02U << IOPORT_PFC_OFFSET), ///< P16_3 / ETHER_ETHn / ETH1_TXER + IOPORT_PIN_P163_PFC_03_GTADSMP1 = (0x03U << IOPORT_PFC_OFFSET), ///< P16_3 / GPT / GTADSMP1 + IOPORT_PIN_P163_PFC_04_SCK0 = (0x04U << IOPORT_PFC_OFFSET), ///< P16_3 / SCIn / SCK0 + IOPORT_PIN_P163_PFC_05_SPI_SSL30 = (0x05U << IOPORT_PFC_OFFSET), ///< P16_3 / SPIn / SPI_SSL30 + IOPORT_PIN_P163_PFC_07_ETH1_CRS = (0x07U << IOPORT_PFC_OFFSET), ///< P16_3 / ETHER_ETHn / ETH1_CRS + IOPORT_PIN_P163_PFC_08_CS3 = (0x08U << IOPORT_PFC_OFFSET), ///< P16_3 / BSC / CS3 + IOPORT_PIN_P163_PFC_09_HSPI_IO3 = (0x09U << IOPORT_PFC_OFFSET), ///< P16_3 / SHOSTIF / HSPI_IO3 + IOPORT_PIN_P165_PFC_00_MTIC5U = (0x00U << IOPORT_PFC_OFFSET), ///< P16_5 / MTU3n / MTIC5U + IOPORT_PIN_P165_PFC_01_TXD0_SDA0_MOSI0 = (0x01U << IOPORT_PFC_OFFSET), ///< P16_5 / SCIn / TXD0_SDA0_MOSI0 + IOPORT_PIN_P165_PFC_02_A15 = (0x02U << IOPORT_PFC_OFFSET), ///< P16_5 / BSC / A15 + IOPORT_PIN_P165_PFC_03_HSPI_IO4 = (0x03U << IOPORT_PFC_OFFSET), ///< P16_5 / SHOSTIF / HSPI_IO4 + IOPORT_PIN_P166_PFC_00_IRQ8 = (0x00U << IOPORT_PFC_OFFSET), ///< P16_6 / IRQ / IRQ8 + IOPORT_PIN_P166_PFC_01_MTIC5V = (0x01U << IOPORT_PFC_OFFSET), ///< P16_6 / MTU3n / MTIC5V + IOPORT_PIN_P166_PFC_02_RXD0_SCL0_MISO0 = (0x02U << IOPORT_PFC_OFFSET), ///< P16_6 / SCIn / RXD0_SCL0_MISO0 + IOPORT_PIN_P166_PFC_03_CS0 = (0x03U << IOPORT_PFC_OFFSET), ///< P16_6 / BSC / CS0 + IOPORT_PIN_P166_PFC_04_HSPI_IO5 = (0x04U << IOPORT_PFC_OFFSET), ///< P16_6 / SHOSTIF / HSPI_IO5 + IOPORT_PIN_P166_PFC_05_HCS0 = (0x05U << IOPORT_PFC_OFFSET), ///< P16_6 / PHOSTIF / HCS0 + IOPORT_PIN_P167_PFC_00_MTIC5W = (0x00U << IOPORT_PFC_OFFSET), ///< P16_7 / MTU3n / MTIC5W + IOPORT_PIN_P167_PFC_01_SCK0 = (0x01U << IOPORT_PFC_OFFSET), ///< P16_7 / SCIn / SCK0 + IOPORT_PIN_P167_PFC_02_XSPI1_IO0 = (0x02U << IOPORT_PFC_OFFSET), ///< P16_7 / XSPIn / XSPI1_IO0 + IOPORT_PIN_P167_PFC_03_A13 = (0x03U << IOPORT_PFC_OFFSET), ///< P16_7 / BSC / A13 + IOPORT_PIN_P167_PFC_04_HA13 = (0x04U << IOPORT_PFC_OFFSET), ///< P16_7 / PHOSTIF / HA13 + IOPORT_PIN_P170_PFC_00_ESC_IRQ = (0x00U << IOPORT_PFC_OFFSET), ///< P17_0 / ETHER_ESC / ESC_IRQ + IOPORT_PIN_P170_PFC_01_SS0_CTS0_RTS0 = (0x01U << IOPORT_PFC_OFFSET), ///< P17_0 / SCIn / SS0_CTS0_RTS0 + IOPORT_PIN_P170_PFC_02_XSPI1_IO1 = (0x02U << IOPORT_PFC_OFFSET), ///< P17_0 / XSPIn / XSPI1_IO1 + IOPORT_PIN_P173_PFC_00_TRACECTL = (0x00U << IOPORT_PFC_OFFSET), ///< P17_3 / TRACE / TRACECTL + IOPORT_PIN_P173_PFC_01_GTETRGA = (0x01U << IOPORT_PFC_OFFSET), ///< P17_3 / GPT_POEG / GTETRGA + IOPORT_PIN_P173_PFC_02_POE0 = (0x02U << IOPORT_PFC_OFFSET), ///< P17_3 / MTU_POE3 / POE0 + IOPORT_PIN_P173_PFC_03_ADTRG1 = (0x03U << IOPORT_PFC_OFFSET), ///< P17_3 / ADCn / ADTRG1 + IOPORT_PIN_P173_PFC_04_SPI_SSL31 = (0x04U << IOPORT_PFC_OFFSET), ///< P17_3 / SPIn / SPI_SSL31 + IOPORT_PIN_P173_PFC_05_DREQ = (0x05U << IOPORT_PFC_OFFSET), ///< P17_3 / DMAC / DREQ + IOPORT_PIN_P173_PFC_07_XSPI1_IO2 = (0x07U << IOPORT_PFC_OFFSET), ///< P17_3 / XSPIn / XSPI1_IO2 + IOPORT_PIN_P174_PFC_00_TRACECLK = (0x00U << IOPORT_PFC_OFFSET), ///< P17_4 / TRACE / TRACECLK + IOPORT_PIN_P174_PFC_01_MTIOC3C = (0x01U << IOPORT_PFC_OFFSET), ///< P17_4 / MTU3n / MTIOC3C + IOPORT_PIN_P174_PFC_02_GTETRGB = (0x02U << IOPORT_PFC_OFFSET), ///< P17_4 / GPT_POEG / GTETRGB + IOPORT_PIN_P174_PFC_03_GTIOC0A = (0x03U << IOPORT_PFC_OFFSET), ///< P17_4 / GPTn / GTIOC0A + IOPORT_PIN_P174_PFC_04_CTS3 = (0x04U << IOPORT_PFC_OFFSET), ///< P17_4 / SCIn / CTS3 + IOPORT_PIN_P174_PFC_05_SPI_SSL32 = (0x05U << IOPORT_PFC_OFFSET), ///< P17_4 / SPIn / SPI_SSL32 + IOPORT_PIN_P174_PFC_07_XSPI1_IO3 = (0x07U << IOPORT_PFC_OFFSET), ///< P17_4 / XSPIn / XSPI1_IO3 + IOPORT_PIN_P174_PFC_08_DACK = (0x08U << IOPORT_PFC_OFFSET), ///< P17_4 / DMAC / DACK + IOPORT_PIN_P175_PFC_01_MTIOC3A = (0x01U << IOPORT_PFC_OFFSET), ///< P17_5 / MTU3n / MTIOC3A + IOPORT_PIN_P175_PFC_02_GTETRGC = (0x02U << IOPORT_PFC_OFFSET), ///< P17_5 / GPT_POEG / GTETRGC + IOPORT_PIN_P175_PFC_03_GTIOC0B = (0x03U << IOPORT_PFC_OFFSET), ///< P17_5 / GPTn / GTIOC0B + IOPORT_PIN_P175_PFC_04_TEND = (0x04U << IOPORT_PFC_OFFSET), ///< P17_5 / DMAC / TEND + IOPORT_PIN_P175_PFC_05_USB_OVRCUR = (0x05U << IOPORT_PFC_OFFSET), ///< P17_5 / USB_HS / USB_OVRCUR + IOPORT_PIN_P176_PFC_00_MTIOC3B = (0x00U << IOPORT_PFC_OFFSET), ///< P17_6 / MTU3n / MTIOC3B + IOPORT_PIN_P176_PFC_01_GTIOC1A = (0x01U << IOPORT_PFC_OFFSET), ///< P17_6 / GPTn / GTIOC1A + IOPORT_PIN_P176_PFC_02_SCK3 = (0x02U << IOPORT_PFC_OFFSET), ///< P17_6 / SCIn / SCK3 + IOPORT_PIN_P176_PFC_04_XSPI1_DS = (0x04U << IOPORT_PFC_OFFSET), ///< P17_6 / XSPIn / XSPI1_DS + IOPORT_PIN_P176_PFC_05_RD_WR = (0x05U << IOPORT_PFC_OFFSET), ///< P17_6 / BSC / RD_WR + IOPORT_PIN_P176_PFC_06_HWRSTB = (0x06U << IOPORT_PFC_OFFSET), ///< P17_6 / PHOSTIF / HWRSTB + IOPORT_PIN_P177_PFC_00_MTIOC4A = (0x00U << IOPORT_PFC_OFFSET), ///< P17_7 / MTU3n / MTIOC4A + IOPORT_PIN_P177_PFC_01_MTIOC4C = (0x01U << IOPORT_PFC_OFFSET), ///< P17_7 / MTU3n / MTIOC4C + IOPORT_PIN_P177_PFC_02_GTIOC2A = (0x02U << IOPORT_PFC_OFFSET), ///< P17_7 / GPTn / GTIOC2A + IOPORT_PIN_P177_PFC_03_GTIOC3A = (0x03U << IOPORT_PFC_OFFSET), ///< P17_7 / GPTn / GTIOC3A + IOPORT_PIN_P177_PFC_04_RXD3_SCL3_MISO3 = (0x04U << IOPORT_PFC_OFFSET), ///< P17_7 / SCIn / RXD3_SCL3_MISO3 + IOPORT_PIN_P177_PFC_05_DACK = (0x05U << IOPORT_PFC_OFFSET), ///< P17_7 / DMAC / DACK + IOPORT_PIN_P177_PFC_07_XSPI1_CKP = (0x07U << IOPORT_PFC_OFFSET), ///< P17_7 / XSPIn / XSPI1_CKP + IOPORT_PIN_P177_PFC_08_RD = (0x08U << IOPORT_PFC_OFFSET), ///< P17_7 / BSC / RD + IOPORT_PIN_P177_PFC_09_HRD = (0x09U << IOPORT_PFC_OFFSET), ///< P17_7 / PHOSTIF / HRD + IOPORT_PIN_P180_PFC_00_MTIOC4C = (0x00U << IOPORT_PFC_OFFSET), ///< P18_0 / MTU3n / MTIOC4C + IOPORT_PIN_P180_PFC_01_MTIOC4A = (0x01U << IOPORT_PFC_OFFSET), ///< P18_0 / MTU3n / MTIOC4A + IOPORT_PIN_P180_PFC_02_GTIOC3A = (0x02U << IOPORT_PFC_OFFSET), ///< P18_0 / GPTn / GTIOC3A + IOPORT_PIN_P180_PFC_03_GTIOC2A = (0x03U << IOPORT_PFC_OFFSET), ///< P18_0 / GPTn / GTIOC2A + IOPORT_PIN_P180_PFC_04_TXD3_SDA3_MOSI3 = (0x04U << IOPORT_PFC_OFFSET), ///< P18_0 / SCIn / TXD3_SDA3_MOSI3 + IOPORT_PIN_P180_PFC_05_WE0_DQMLL = (0x05U << IOPORT_PFC_OFFSET), ///< P18_0 / BSC / WE0_DQMLL + IOPORT_PIN_P180_PFC_06_HSPI_IO6 = (0x06U << IOPORT_PFC_OFFSET), ///< P18_0 / SHOSTIF / HSPI_IO6 + IOPORT_PIN_P180_PFC_07_HWR0 = (0x07U << IOPORT_PFC_OFFSET), ///< P18_0 / PHOSTIF / HWR0 + IOPORT_PIN_P181_PFC_00_IRQ10 = (0x00U << IOPORT_PFC_OFFSET), ///< P18_1 / IRQ / IRQ10 + IOPORT_PIN_P181_PFC_01_MTIOC3D = (0x01U << IOPORT_PFC_OFFSET), ///< P18_1 / MTU3n / MTIOC3D + IOPORT_PIN_P181_PFC_02_GTIOC1B = (0x02U << IOPORT_PFC_OFFSET), ///< P18_1 / GPTn / GTIOC1B + IOPORT_PIN_P181_PFC_03_ADTRG1 = (0x03U << IOPORT_PFC_OFFSET), ///< P18_1 / ADCn / ADTRG1 + IOPORT_PIN_P181_PFC_04_SS3_CTS3_RTS3 = (0x04U << IOPORT_PFC_OFFSET), ///< P18_1 / SCIn / SS3_CTS3_RTS3 + IOPORT_PIN_P181_PFC_06_WE1_DQMLU = (0x06U << IOPORT_PFC_OFFSET), ///< P18_1 / BSC / WE1_DQMLU + IOPORT_PIN_P181_PFC_07_HSPI_IO7 = (0x07U << IOPORT_PFC_OFFSET), ///< P18_1 / SHOSTIF / HSPI_IO7 + IOPORT_PIN_P181_PFC_08_HWR1 = (0x08U << IOPORT_PFC_OFFSET), ///< P18_1 / PHOSTIF / HWR1 + IOPORT_PIN_P182_PFC_00_MTIOC4B = (0x00U << IOPORT_PFC_OFFSET), ///< P18_2 / MTU3n / MTIOC4B + IOPORT_PIN_P182_PFC_01_MTIOC4D = (0x01U << IOPORT_PFC_OFFSET), ///< P18_2 / MTU3n / MTIOC4D + IOPORT_PIN_P182_PFC_02_GTIOC2B = (0x02U << IOPORT_PFC_OFFSET), ///< P18_2 / GPTn / GTIOC2B + IOPORT_PIN_P182_PFC_03_GTIOC3B = (0x03U << IOPORT_PFC_OFFSET), ///< P18_2 / GPTn / GTIOC3B + IOPORT_PIN_P182_PFC_05_XSPI1_CS0 = (0x05U << IOPORT_PFC_OFFSET), ///< P18_2 / XSPIn / XSPI1_CS0 + IOPORT_PIN_P182_PFC_06_ETH1_COL = (0x06U << IOPORT_PFC_OFFSET), ///< P18_2 / ETHER_ETHn / ETH1_COL + IOPORT_PIN_P182_PFC_07_BS = (0x07U << IOPORT_PFC_OFFSET), ///< P18_2 / BSC / BS + IOPORT_PIN_P182_PFC_08_SCK0 = (0x08U << IOPORT_PFC_OFFSET), ///< P18_2 / SCIn / SCK0 + IOPORT_PIN_P182_PFC_09_IIC_SDA2 = (0x09U << IOPORT_PFC_OFFSET), ///< P18_2 / IICn / IIC_SDA2 + IOPORT_PIN_P183_PFC_00_IRQ0 = (0x00U << IOPORT_PFC_OFFSET), ///< P18_3 / IRQ / IRQ0 + IOPORT_PIN_P183_PFC_01_MTIOC4D = (0x01U << IOPORT_PFC_OFFSET), ///< P18_3 / MTU3n / MTIOC4D + IOPORT_PIN_P183_PFC_02_MTIOC4B = (0x02U << IOPORT_PFC_OFFSET), ///< P18_3 / MTU3n / MTIOC4B + IOPORT_PIN_P183_PFC_03_GTIOC3B = (0x03U << IOPORT_PFC_OFFSET), ///< P18_3 / GPTn / GTIOC3B + IOPORT_PIN_P183_PFC_04_GTIOC2B = (0x04U << IOPORT_PFC_OFFSET), ///< P18_3 / GPTn / GTIOC2B + IOPORT_PIN_P183_PFC_05_CMTW1_TIC1 = (0x05U << IOPORT_PFC_OFFSET), ///< P18_3 / CMTWn / CMTW1_TIC1 + IOPORT_PIN_P183_PFC_06_CANRXDP1 = (0x06U << IOPORT_PFC_OFFSET), ///< P18_3 / CANFDn / CANRXDP1 + IOPORT_PIN_P183_PFC_08_XSPI1_IO4 = (0x08U << IOPORT_PFC_OFFSET), ///< P18_3 / XSPIn / XSPI1_IO4 + IOPORT_PIN_P183_PFC_09_ETH2_CRS = (0x09U << IOPORT_PFC_OFFSET), ///< P18_3 / ETHER_ETHn / ETH2_CRS + IOPORT_PIN_P183_PFC_0A_CKE = (0x0AU << IOPORT_PFC_OFFSET), ///< P18_3 / BSC / CKE + IOPORT_PIN_P184_PFC_00_IRQ1 = (0x00U << IOPORT_PFC_OFFSET), ///< P18_4 / IRQ / IRQ1 + IOPORT_PIN_P184_PFC_01_MTIC5U = (0x01U << IOPORT_PFC_OFFSET), ///< P18_4 / MTU3n / MTIC5U + IOPORT_PIN_P184_PFC_02_TXD4_SDA4_MOSI4 = (0x02U << IOPORT_PFC_OFFSET), ///< P18_4 / SCIn / TXD4_SDA4_MOSI4 + IOPORT_PIN_P184_PFC_03_SPI_RSPCK2 = (0x03U << IOPORT_PFC_OFFSET), ///< P18_4 / SPIn / SPI_RSPCK2 + IOPORT_PIN_P184_PFC_05_XSPI1_IO5 = (0x05U << IOPORT_PFC_OFFSET), ///< P18_4 / XSPIn / XSPI1_IO5 + IOPORT_PIN_P184_PFC_06_ETH1_CRS = (0x06U << IOPORT_PFC_OFFSET), ///< P18_4 / ETHER_ETHn / ETH1_CRS + IOPORT_PIN_P184_PFC_07_CAS = (0x07U << IOPORT_PFC_OFFSET), ///< P18_4 / BSC / CAS + IOPORT_PIN_P184_PFC_08_CANTX0 = (0x08U << IOPORT_PFC_OFFSET), ///< P18_4 / CANFDn / CANTX0 + IOPORT_PIN_P185_PFC_00_TRACECTL = (0x00U << IOPORT_PFC_OFFSET), ///< P18_5 / TRACE / TRACECTL + IOPORT_PIN_P185_PFC_01_MTIC5V = (0x01U << IOPORT_PFC_OFFSET), ///< P18_5 / MTU3n / MTIC5V + IOPORT_PIN_P185_PFC_02_RXD4_SCL4_MISO4 = (0x02U << IOPORT_PFC_OFFSET), ///< P18_5 / SCIn / RXD4_SCL4_MISO4 + IOPORT_PIN_P185_PFC_03_SPI_MOSI2 = (0x03U << IOPORT_PFC_OFFSET), ///< P18_5 / SPIn / SPI_MOSI2 + IOPORT_PIN_P185_PFC_05_XSPI1_IO6 = (0x05U << IOPORT_PFC_OFFSET), ///< P18_5 / XSPIn / XSPI1_IO6 + IOPORT_PIN_P185_PFC_06_ETH2_COL = (0x06U << IOPORT_PFC_OFFSET), ///< P18_5 / ETHER_ETHn / ETH2_COL + IOPORT_PIN_P185_PFC_07_RAS = (0x07U << IOPORT_PFC_OFFSET), ///< P18_5 / BSC / RAS + IOPORT_PIN_P185_PFC_08_CANRX0 = (0x08U << IOPORT_PFC_OFFSET), ///< P18_5 / CANFDn / CANRX0 + IOPORT_PIN_P186_PFC_00_IRQ11 = (0x00U << IOPORT_PFC_OFFSET), ///< P18_6 / IRQ / IRQ11 + IOPORT_PIN_P186_PFC_01_TRACECLK = (0x01U << IOPORT_PFC_OFFSET), ///< P18_6 / TRACE / TRACECLK + IOPORT_PIN_P186_PFC_02_MTIC5W = (0x02U << IOPORT_PFC_OFFSET), ///< P18_6 / MTU3n / MTIC5W + IOPORT_PIN_P186_PFC_03_ADTRG0 = (0x03U << IOPORT_PFC_OFFSET), ///< P18_6 / ADCn / ADTRG0 + IOPORT_PIN_P186_PFC_04_SCK4 = (0x04U << IOPORT_PFC_OFFSET), ///< P18_6 / SCIn / SCK4 + IOPORT_PIN_P186_PFC_05_SPI_MISO2 = (0x05U << IOPORT_PFC_OFFSET), ///< P18_6 / SPIn / SPI_MISO2 + IOPORT_PIN_P186_PFC_06_IIC_SCL2 = (0x06U << IOPORT_PFC_OFFSET), ///< P18_6 / IICn / IIC_SCL2 + IOPORT_PIN_P186_PFC_08_XSPI1_IO7 = (0x08U << IOPORT_PFC_OFFSET), ///< P18_6 / XSPIn / XSPI1_IO7 + IOPORT_PIN_P186_PFC_09_ETH1_COL = (0x09U << IOPORT_PFC_OFFSET), ///< P18_6 / ETHER_ETHn / ETH1_COL + IOPORT_PIN_P186_PFC_0A_DE4 = (0x0AU << IOPORT_PFC_OFFSET), ///< P18_6 / SCIn / DE4 + IOPORT_PIN_P190_PFC_00_USB_VBUSEN = (0x00U << IOPORT_PFC_OFFSET), ///< P19_0 / USB_HS / USB_VBUSEN + IOPORT_PIN_P201_PFC_00_ETHSW_TDMAOUT0 = (0x00U << IOPORT_PFC_OFFSET), ///< P20_1 / ETHER_ETHSW / ETHSW_TDMAOUT0 + IOPORT_PIN_P201_PFC_01_ESC_LINKACT0 = (0x01U << IOPORT_PFC_OFFSET), ///< P20_1 / ETHER_ESC / ESC_LINKACT0 + IOPORT_PIN_P201_PFC_02_ETHSW_PTPOUT3 = (0x02U << IOPORT_PFC_OFFSET), ///< P20_1 / ETHER_ETHSW / ETHSW_PTPOUT3 + IOPORT_PIN_P202_PFC_00_ETHSW_TDMAOUT1 = (0x00U << IOPORT_PFC_OFFSET), ///< P20_2 / ETHER_ETHSW / ETHSW_TDMAOUT1 + IOPORT_PIN_P202_PFC_01_ESC_LEDRUN = (0x01U << IOPORT_PFC_OFFSET), ///< P20_2 / ETHER_ESC / ESC_LEDRUN + IOPORT_PIN_P202_PFC_02_ESC_LEDSTER = (0x02U << IOPORT_PFC_OFFSET), ///< P20_2 / ETHER_ESC / ESC_LEDSTER + IOPORT_PIN_P202_PFC_03_DE3 = (0x03U << IOPORT_PFC_OFFSET), ///< P20_2 / SCIn / DE3 + IOPORT_PIN_P202_PFC_04_ETHSW_PTPOUT2 = (0x04U << IOPORT_PFC_OFFSET), ///< P20_2 / ETHER_ETHSW / ETHSW_PTPOUT2 + IOPORT_PIN_P203_PFC_00_ETHSW_TDMAOUT2 = (0x00U << IOPORT_PFC_OFFSET), ///< P20_3 / ETHER_ETHSW / ETHSW_TDMAOUT2 + IOPORT_PIN_P203_PFC_01_ESC_LEDERR = (0x01U << IOPORT_PFC_OFFSET), ///< P20_3 / ETHER_ESC / ESC_LEDERR + IOPORT_PIN_P203_PFC_02_ETHSW_PTPOUT1 = (0x02U << IOPORT_PFC_OFFSET), ///< P20_3 / ETHER_ETHSW / ETHSW_PTPOUT1 + IOPORT_PIN_P204_PFC_00_ETHSW_TDMAOUT3 = (0x00U << IOPORT_PFC_OFFSET), ///< P20_4 / ETHER_ETHSW / ETHSW_TDMAOUT3 + IOPORT_PIN_P204_PFC_01_ESC_LINKACT1 = (0x01U << IOPORT_PFC_OFFSET), ///< P20_4 / ETHER_ESC / ESC_LINKACT1 + IOPORT_PIN_P204_PFC_02_ETHSW_PTPOUT0 = (0x02U << IOPORT_PFC_OFFSET), ///< P20_4 / ETHER_ETHSW / ETHSW_PTPOUT0 + IOPORT_PIN_P211_PFC_00_TRACEDATA0 = (0x00U << IOPORT_PFC_OFFSET), ///< P21_1 / TRACE / TRACEDATA0 + IOPORT_PIN_P211_PFC_01_D0 = (0x01U << IOPORT_PFC_OFFSET), ///< P21_1 / BSC / D0 + IOPORT_PIN_P211_PFC_02_MTIOC6A = (0x02U << IOPORT_PFC_OFFSET), ///< P21_1 / MTU3n / MTIOC6A + IOPORT_PIN_P211_PFC_03_GTIOC14A = (0x03U << IOPORT_PFC_OFFSET), ///< P21_1 / GPTn / GTIOC14A + IOPORT_PIN_P211_PFC_04_CMTW0_TIC0 = (0x04U << IOPORT_PFC_OFFSET), ///< P21_1 / CMTWn / CMTW0_TIC0 + IOPORT_PIN_P211_PFC_05_SCK5 = (0x05U << IOPORT_PFC_OFFSET), ///< P21_1 / SCIn / SCK5 + IOPORT_PIN_P211_PFC_06_SPI_SSL20 = (0x06U << IOPORT_PFC_OFFSET), ///< P21_1 / SPIn / SPI_SSL20 + IOPORT_PIN_P211_PFC_07_IIC_SCL1 = (0x07U << IOPORT_PFC_OFFSET), ///< P21_1 / IICn / IIC_SCL1 + IOPORT_PIN_P211_PFC_08_MCLK0 = (0x08U << IOPORT_PFC_OFFSET), ///< P21_1 / DSMIFn / MCLK0 + IOPORT_PIN_P211_PFC_0A_ESC_SYNC0 = (0x0AU << IOPORT_PFC_OFFSET), ///< P21_1 / ETHER_ESC / ESC_SYNC0 + IOPORT_PIN_P211_PFC_0B_ESC_SYNC1 = (0x0BU << IOPORT_PFC_OFFSET), ///< P21_1 / ETHER_ESC / ESC_SYNC1 + IOPORT_PIN_P211_PFC_0C_HSPI_INT = (0x0CU << IOPORT_PFC_OFFSET), ///< P21_1 / SHOSTIF / HSPI_INT + IOPORT_PIN_P211_PFC_0D_HD0 = (0x0DU << IOPORT_PFC_OFFSET), ///< P21_1 / PHOSTIF / HD0 + IOPORT_PIN_P212_PFC_00_TRACEDATA1 = (0x00U << IOPORT_PFC_OFFSET), ///< P21_2 / TRACE / TRACEDATA1 + IOPORT_PIN_P212_PFC_01_D1 = (0x01U << IOPORT_PFC_OFFSET), ///< P21_2 / BSC / D1 + IOPORT_PIN_P212_PFC_02_MTIOC6B = (0x02U << IOPORT_PFC_OFFSET), ///< P21_2 / MTU3n / MTIOC6B + IOPORT_PIN_P212_PFC_03_GTIOC14B = (0x03U << IOPORT_PFC_OFFSET), ///< P21_2 / GPTn / GTIOC14B + IOPORT_PIN_P212_PFC_04_CMTW0_TIC1 = (0x04U << IOPORT_PFC_OFFSET), ///< P21_2 / CMTWn / CMTW0_TIC1 + IOPORT_PIN_P212_PFC_05_RXD5_SCL5_MISO5 = (0x05U << IOPORT_PFC_OFFSET), ///< P21_2 / SCIn / RXD5_SCL5_MISO5 + IOPORT_PIN_P212_PFC_06_SPI_MISO2 = (0x06U << IOPORT_PFC_OFFSET), ///< P21_2 / SPIn / SPI_MISO2 + IOPORT_PIN_P212_PFC_07_IIC_SDA1 = (0x07U << IOPORT_PFC_OFFSET), ///< P21_2 / IICn / IIC_SDA1 + IOPORT_PIN_P212_PFC_08_MDAT0 = (0x08U << IOPORT_PFC_OFFSET), ///< P21_2 / DSMIFn / MDAT0 + IOPORT_PIN_P212_PFC_0A_ESC_SYNC0 = (0x0AU << IOPORT_PFC_OFFSET), ///< P21_2 / ETHER_ESC / ESC_SYNC0 + IOPORT_PIN_P212_PFC_0B_ESC_SYNC1 = (0x0BU << IOPORT_PFC_OFFSET), ///< P21_2 / ETHER_ESC / ESC_SYNC1 + IOPORT_PIN_P212_PFC_0C_HD1 = (0x0CU << IOPORT_PFC_OFFSET), ///< P21_2 / PHOSTIF / HD1 + IOPORT_PIN_P213_PFC_00_TRACEDATA2 = (0x00U << IOPORT_PFC_OFFSET), ///< P21_3 / TRACE / TRACEDATA2 + IOPORT_PIN_P213_PFC_01_D2 = (0x01U << IOPORT_PFC_OFFSET), ///< P21_3 / BSC / D2 + IOPORT_PIN_P213_PFC_02_MTIOC6C = (0x02U << IOPORT_PFC_OFFSET), ///< P21_3 / MTU3n / MTIOC6C + IOPORT_PIN_P213_PFC_03_GTIOC15A = (0x03U << IOPORT_PFC_OFFSET), ///< P21_3 / GPTn / GTIOC15A + IOPORT_PIN_P213_PFC_04_TXD5_SDA5_MOSI5 = (0x04U << IOPORT_PFC_OFFSET), ///< P21_3 / SCIn / TXD5_SDA5_MOSI5 + IOPORT_PIN_P213_PFC_05_SPI_SSL33 = (0x05U << IOPORT_PFC_OFFSET), ///< P21_3 / SPIn / SPI_SSL33 + IOPORT_PIN_P213_PFC_06_MCLK1 = (0x06U << IOPORT_PFC_OFFSET), ///< P21_3 / DSMIFn / MCLK1 + IOPORT_PIN_P213_PFC_08_NMI = (0x08U << IOPORT_PFC_OFFSET), ///< P21_3 / IRQ / NMI + IOPORT_PIN_P213_PFC_09_HD2 = (0x09U << IOPORT_PFC_OFFSET), ///< P21_3 / PHOSTIF / HD2 + IOPORT_PIN_P214_PFC_00_TRACEDATA3 = (0x00U << IOPORT_PFC_OFFSET), ///< P21_4 / TRACE / TRACEDATA3 + IOPORT_PIN_P214_PFC_01_D3 = (0x01U << IOPORT_PFC_OFFSET), ///< P21_4 / BSC / D3 + IOPORT_PIN_P214_PFC_02_MTIOC6D = (0x02U << IOPORT_PFC_OFFSET), ///< P21_4 / MTU3n / MTIOC6D + IOPORT_PIN_P214_PFC_03_GTIOC15B = (0x03U << IOPORT_PFC_OFFSET), ///< P21_4 / GPTn / GTIOC15B + IOPORT_PIN_P214_PFC_04_SS5_CTS5_RTS5 = (0x04U << IOPORT_PFC_OFFSET), ///< P21_4 / SCIn / SS5_CTS5_RTS5 + IOPORT_PIN_P214_PFC_05_SPI_SSL02 = (0x05U << IOPORT_PFC_OFFSET), ///< P21_4 / SPIn / SPI_SSL02 + IOPORT_PIN_P214_PFC_06_MDAT1 = (0x06U << IOPORT_PFC_OFFSET), ///< P21_4 / DSMIFn / MDAT1 + IOPORT_PIN_P214_PFC_08_ETHSW_PTPOUT1 = (0x08U << IOPORT_PFC_OFFSET), ///< P21_4 / ETHER_ETHSW / ETHSW_PTPOUT1 + IOPORT_PIN_P214_PFC_09_ESC_SYNC0 = (0x09U << IOPORT_PFC_OFFSET), ///< P21_4 / ETHER_ESC / ESC_SYNC0 + IOPORT_PIN_P214_PFC_0A_ESC_SYNC1 = (0x0AU << IOPORT_PFC_OFFSET), ///< P21_4 / ETHER_ESC / ESC_SYNC1 + IOPORT_PIN_P214_PFC_0B_HD3 = (0x0BU << IOPORT_PFC_OFFSET), ///< P21_4 / PHOSTIF / HD3 + IOPORT_PIN_P214_PFC_0C_MBX_HINT = (0x0CU << IOPORT_PFC_OFFSET), ///< P21_4 / MBXSEM / MBX_HINT + IOPORT_PIN_P215_PFC_00_IRQ6 = (0x00U << IOPORT_PFC_OFFSET), ///< P21_5 / IRQ / IRQ6 + IOPORT_PIN_P215_PFC_01_TRACEDATA4 = (0x01U << IOPORT_PFC_OFFSET), ///< P21_5 / TRACE / TRACEDATA4 + IOPORT_PIN_P215_PFC_02_D4 = (0x02U << IOPORT_PFC_OFFSET), ///< P21_5 / BSC / D4 + IOPORT_PIN_P215_PFC_03_MTIOC7A = (0x03U << IOPORT_PFC_OFFSET), ///< P21_5 / MTU3n / MTIOC7A + IOPORT_PIN_P215_PFC_04_GTIOC16A = (0x04U << IOPORT_PFC_OFFSET), ///< P21_5 / GPTn / GTIOC16A + IOPORT_PIN_P215_PFC_05_CMTW1_TOC1 = (0x05U << IOPORT_PFC_OFFSET), ///< P21_5 / CMTWn / CMTW1_TOC1 + IOPORT_PIN_P215_PFC_06_ADTRG1 = (0x06U << IOPORT_PFC_OFFSET), ///< P21_5 / ADCn / ADTRG1 + IOPORT_PIN_P215_PFC_07_CTS5 = (0x07U << IOPORT_PFC_OFFSET), ///< P21_5 / SCIn / CTS5 + IOPORT_PIN_P215_PFC_08_SPI_MISO0 = (0x08U << IOPORT_PFC_OFFSET), ///< P21_5 / SPIn / SPI_MISO0 + IOPORT_PIN_P215_PFC_09_MCLK2 = (0x09U << IOPORT_PFC_OFFSET), ///< P21_5 / DSMIFn / MCLK2 + IOPORT_PIN_P215_PFC_0B_HD4 = (0x0BU << IOPORT_PFC_OFFSET), ///< P21_5 / PHOSTIF / HD4 + IOPORT_PIN_P216_PFC_00_IRQ9 = (0x00U << IOPORT_PFC_OFFSET), ///< P21_6 / IRQ / IRQ9 + IOPORT_PIN_P216_PFC_01_TRACEDATA5 = (0x01U << IOPORT_PFC_OFFSET), ///< P21_6 / TRACE / TRACEDATA5 + IOPORT_PIN_P216_PFC_02_D5 = (0x02U << IOPORT_PFC_OFFSET), ///< P21_6 / BSC / D5 + IOPORT_PIN_P216_PFC_03_MTIOC7B = (0x03U << IOPORT_PFC_OFFSET), ///< P21_6 / MTU3n / MTIOC7B + IOPORT_PIN_P216_PFC_04_GTIOC16B = (0x04U << IOPORT_PFC_OFFSET), ///< P21_6 / GPTn / GTIOC16B + IOPORT_PIN_P216_PFC_05_CTS0 = (0x05U << IOPORT_PFC_OFFSET), ///< P21_6 / SCIn / CTS0 + IOPORT_PIN_P216_PFC_06_TEND = (0x06U << IOPORT_PFC_OFFSET), ///< P21_6 / DMAC / TEND + IOPORT_PIN_P216_PFC_07_MDAT2 = (0x07U << IOPORT_PFC_OFFSET), ///< P21_6 / DSMIFn / MDAT2 + IOPORT_PIN_P216_PFC_08_HD5 = (0x08U << IOPORT_PFC_OFFSET), ///< P21_6 / PHOSTIF / HD5 + IOPORT_PIN_P217_PFC_00_IRQ10 = (0x00U << IOPORT_PFC_OFFSET), ///< P21_7 / IRQ / IRQ10 + IOPORT_PIN_P217_PFC_01_TRACEDATA6 = (0x01U << IOPORT_PFC_OFFSET), ///< P21_7 / TRACE / TRACEDATA6 + IOPORT_PIN_P217_PFC_02_D6 = (0x02U << IOPORT_PFC_OFFSET), ///< P21_7 / BSC / D6 + IOPORT_PIN_P217_PFC_03_MTIOC7C = (0x03U << IOPORT_PFC_OFFSET), ///< P21_7 / MTU3n / MTIOC7C + IOPORT_PIN_P217_PFC_04_GTIOC17A = (0x04U << IOPORT_PFC_OFFSET), ///< P21_7 / GPTn / GTIOC17A + IOPORT_PIN_P217_PFC_05_DE0 = (0x05U << IOPORT_PFC_OFFSET), ///< P21_7 / SCIn / DE0 + IOPORT_PIN_P217_PFC_06_DREQ = (0x06U << IOPORT_PFC_OFFSET), ///< P21_7 / DMAC / DREQ + IOPORT_PIN_P217_PFC_07_MCLK3 = (0x07U << IOPORT_PFC_OFFSET), ///< P21_7 / DSMIFn / MCLK3 + IOPORT_PIN_P217_PFC_08_HD6 = (0x08U << IOPORT_PFC_OFFSET), ///< P21_7 / PHOSTIF / HD6 + IOPORT_PIN_P220_PFC_00_IRQ15 = (0x00U << IOPORT_PFC_OFFSET), ///< P22_0 / IRQ / IRQ15 + IOPORT_PIN_P220_PFC_01_TRACEDATA7 = (0x01U << IOPORT_PFC_OFFSET), ///< P22_0 / TRACE / TRACEDATA7 + IOPORT_PIN_P220_PFC_02_D7 = (0x02U << IOPORT_PFC_OFFSET), ///< P22_0 / BSC / D7 + IOPORT_PIN_P220_PFC_03_MTIOC7D = (0x03U << IOPORT_PFC_OFFSET), ///< P22_0 / MTU3n / MTIOC7D + IOPORT_PIN_P220_PFC_04_GTIOC17B = (0x04U << IOPORT_PFC_OFFSET), ///< P22_0 / GPTn / GTIOC17B + IOPORT_PIN_P220_PFC_05_DE5 = (0x05U << IOPORT_PFC_OFFSET), ///< P22_0 / SCIn / DE5 + IOPORT_PIN_P220_PFC_06_MDAT3 = (0x06U << IOPORT_PFC_OFFSET), ///< P22_0 / DSMIFn / MDAT3 + IOPORT_PIN_P220_PFC_07_HD7 = (0x07U << IOPORT_PFC_OFFSET), ///< P22_0 / PHOSTIF / HD7 + IOPORT_PIN_P221_PFC_00_TRACECTL = (0x00U << IOPORT_PFC_OFFSET), ///< P22_1 / TRACE / TRACECTL + IOPORT_PIN_P221_PFC_01_D8 = (0x01U << IOPORT_PFC_OFFSET), ///< P22_1 / BSC / D8 + IOPORT_PIN_P221_PFC_02_ESC_LINKACT2 = (0x02U << IOPORT_PFC_OFFSET), ///< P22_1 / ETHER_ESC / ESC_LINKACT2 + IOPORT_PIN_P221_PFC_03_POE4 = (0x03U << IOPORT_PFC_OFFSET), ///< P22_1 / MTU_POE3 / POE4 + IOPORT_PIN_P221_PFC_04_SS4_CTS4_RTS4 = (0x04U << IOPORT_PFC_OFFSET), ///< P22_1 / SCIn / SS4_CTS4_RTS4 + IOPORT_PIN_P221_PFC_05_HD8 = (0x05U << IOPORT_PFC_OFFSET), ///< P22_1 / PHOSTIF / HD8 + IOPORT_PIN_P221_PFC_06_GTETRGB = (0x06U << IOPORT_PFC_OFFSET), ///< P22_1 / GPT_POEG / GTETRGB + IOPORT_PIN_P222_PFC_00_IRQ4 = (0x00U << IOPORT_PFC_OFFSET), ///< P22_2 / IRQ / IRQ4 + IOPORT_PIN_P222_PFC_01_TRACECLK = (0x01U << IOPORT_PFC_OFFSET), ///< P22_2 / TRACE / TRACECLK + IOPORT_PIN_P222_PFC_02_D9 = (0x02U << IOPORT_PFC_OFFSET), ///< P22_2 / BSC / D9 + IOPORT_PIN_P222_PFC_03_MTIOC8C = (0x03U << IOPORT_PFC_OFFSET), ///< P22_2 / MTU3n / MTIOC8C + IOPORT_PIN_P222_PFC_04_GTETRGSA = (0x04U << IOPORT_PFC_OFFSET), ///< P22_2 / GPT_POEG / GTETRGSA + IOPORT_PIN_P222_PFC_05_SPI_SSL12 = (0x05U << IOPORT_PFC_OFFSET), ///< P22_2 / SPIn / SPI_SSL12 + IOPORT_PIN_P222_PFC_07_HD9 = (0x07U << IOPORT_PFC_OFFSET), ///< P22_2 / PHOSTIF / HD9 + IOPORT_PIN_P222_PFC_08_MCLK1 = (0x08U << IOPORT_PFC_OFFSET), ///< P22_2 / DSMIFn / MCLK1 + IOPORT_PIN_P223_PFC_00_D10 = (0x00U << IOPORT_PFC_OFFSET), ///< P22_3 / BSC / D10 + IOPORT_PIN_P223_PFC_01_MTIOC8D = (0x01U << IOPORT_PFC_OFFSET), ///< P22_3 / MTU3n / MTIOC8D + IOPORT_PIN_P223_PFC_02_GTETRGSB = (0x02U << IOPORT_PFC_OFFSET), ///< P22_3 / GPT_POEG / GTETRGSB + IOPORT_PIN_P223_PFC_04_RXD5_SCL5_MISO5 = (0x04U << IOPORT_PFC_OFFSET), ///< P22_3 / SCIn / RXD5_SCL5_MISO5 + IOPORT_PIN_P223_PFC_05_HD10 = (0x05U << IOPORT_PFC_OFFSET), ///< P22_3 / PHOSTIF / HD10 + IOPORT_PIN_P237_PFC_00_ETH2_RXD0 = (0x00U << IOPORT_PFC_OFFSET), ///< P23_7 / ETHER_ETHn / ETH2_RXD0 + IOPORT_PIN_P237_PFC_02_D11 = (0x02U << IOPORT_PFC_OFFSET), ///< P23_7 / BSC / D11 + IOPORT_PIN_P237_PFC_03_BS = (0x03U << IOPORT_PFC_OFFSET), ///< P23_7 / BSC / BS + IOPORT_PIN_P237_PFC_04_MTIOC0A = (0x04U << IOPORT_PFC_OFFSET), ///< P23_7 / MTU3n / MTIOC0A + IOPORT_PIN_P237_PFC_05_GTETRGA = (0x05U << IOPORT_PFC_OFFSET), ///< P23_7 / GPT_POEG / GTETRGA + IOPORT_PIN_P237_PFC_06_SCK1 = (0x06U << IOPORT_PFC_OFFSET), ///< P23_7 / SCIn / SCK1 + IOPORT_PIN_P237_PFC_07_MCLK4 = (0x07U << IOPORT_PFC_OFFSET), ///< P23_7 / DSMIFn / MCLK4 + IOPORT_PIN_P237_PFC_09_HD11 = (0x09U << IOPORT_PFC_OFFSET), ///< P23_7 / PHOSTIF / HD11 + IOPORT_PIN_P240_PFC_00_ETH2_RXD1 = (0x00U << IOPORT_PFC_OFFSET), ///< P24_0 / ETHER_ETHn / ETH2_RXD1 + IOPORT_PIN_P240_PFC_02_D12 = (0x02U << IOPORT_PFC_OFFSET), ///< P24_0 / BSC / D12 + IOPORT_PIN_P240_PFC_03_CKE = (0x03U << IOPORT_PFC_OFFSET), ///< P24_0 / BSC / CKE + IOPORT_PIN_P240_PFC_04_MTIOC0B = (0x04U << IOPORT_PFC_OFFSET), ///< P24_0 / MTU3n / MTIOC0B + IOPORT_PIN_P240_PFC_05_GTETRGB = (0x05U << IOPORT_PFC_OFFSET), ///< P24_0 / GPT_POEG / GTETRGB + IOPORT_PIN_P240_PFC_06_RXD1_SCL1_MISO1 = (0x06U << IOPORT_PFC_OFFSET), ///< P24_0 / SCIn / RXD1_SCL1_MISO1 + IOPORT_PIN_P240_PFC_07_DREQ = (0x07U << IOPORT_PFC_OFFSET), ///< P24_0 / DMAC / DREQ + IOPORT_PIN_P240_PFC_08_MDAT4 = (0x08U << IOPORT_PFC_OFFSET), ///< P24_0 / DSMIFn / MDAT4 + IOPORT_PIN_P240_PFC_0A_HD12 = (0x0AU << IOPORT_PFC_OFFSET), ///< P24_0 / PHOSTIF / HD12 + IOPORT_PIN_P241_PFC_00_ETH2_RXCLK = (0x00U << IOPORT_PFC_OFFSET), ///< P24_1 / ETHER_ETHn / ETH2_RXCLK + IOPORT_PIN_P241_PFC_02_D13 = (0x02U << IOPORT_PFC_OFFSET), ///< P24_1 / BSC / D13 + IOPORT_PIN_P241_PFC_03_CAS = (0x03U << IOPORT_PFC_OFFSET), ///< P24_1 / BSC / CAS + IOPORT_PIN_P241_PFC_04_MTIOC0C = (0x04U << IOPORT_PFC_OFFSET), ///< P24_1 / MTU3n / MTIOC0C + IOPORT_PIN_P241_PFC_05_GTETRGC = (0x05U << IOPORT_PFC_OFFSET), ///< P24_1 / GPT_POEG / GTETRGC + IOPORT_PIN_P241_PFC_06_POE8 = (0x06U << IOPORT_PFC_OFFSET), ///< P24_1 / MTU_POE3 / POE8 + IOPORT_PIN_P241_PFC_07_MCLK5 = (0x07U << IOPORT_PFC_OFFSET), ///< P24_1 / DSMIFn / MCLK5 + IOPORT_PIN_P241_PFC_09_HD13 = (0x09U << IOPORT_PFC_OFFSET), ///< P24_1 / PHOSTIF / HD13 + IOPORT_PIN_P242_PFC_00_ETH2_RXD2 = (0x00U << IOPORT_PFC_OFFSET), ///< P24_2 / ETHER_ETHn / ETH2_RXD2 + IOPORT_PIN_P242_PFC_02_D14 = (0x02U << IOPORT_PFC_OFFSET), ///< P24_2 / BSC / D14 + IOPORT_PIN_P242_PFC_03_RAS = (0x03U << IOPORT_PFC_OFFSET), ///< P24_2 / BSC / RAS + IOPORT_PIN_P242_PFC_04_MTIOC0D = (0x04U << IOPORT_PFC_OFFSET), ///< P24_2 / MTU3n / MTIOC0D + IOPORT_PIN_P242_PFC_05_GTETRGD = (0x05U << IOPORT_PFC_OFFSET), ///< P24_2 / GPT_POEG / GTETRGD + IOPORT_PIN_P242_PFC_06_TXD1_SDA1_MOSI1 = (0x06U << IOPORT_PFC_OFFSET), ///< P24_2 / SCIn / TXD1_SDA1_MOSI1 + IOPORT_PIN_P242_PFC_07_MDAT5 = (0x07U << IOPORT_PFC_OFFSET), ///< P24_2 / DSMIFn / MDAT5 + IOPORT_PIN_P242_PFC_09_HD14 = (0x09U << IOPORT_PFC_OFFSET), ///< P24_2 / PHOSTIF / HD14 + + /** Marks end of enum - used by parameter checking */ + IOPORT_PERIPHERAL_END +} ioport_pin_pfc_t; + +/** Options to configure pin functions */ +typedef enum e_ioport_cfg_options +{ + IOPORT_CFG_PORT_DIRECTION_HIZ = 0x00000000 << IOPORT_PM_OFFSET, ///< Sets the pin direction to Hi-Z + IOPORT_CFG_PORT_DIRECTION_INPUT = 0x00000001 << IOPORT_PM_OFFSET, ///< Sets the pin direction to input (default) + IOPORT_CFG_PORT_DIRECTION_OUTPUT = 0x00000002 << IOPORT_PM_OFFSET, ///< Sets the pin direction to output + IOPORT_CFG_PORT_DIRECTION_OUTPUT_INPUT = 0x00000003 << IOPORT_PM_OFFSET, ///< Sets the pin direction to output (data is input to input buffer) + IOPORT_CFG_PORT_OUTPUT_LOW = 0x00000000 << IOPORT_P_OFFSET, ///< Sets the pin level to low + IOPORT_CFG_PORT_OUTPUT_HIGH = 0x00000001 << IOPORT_P_OFFSET, ///< Sets the pin level to high + IOPORT_CFG_PORT_GPIO = 0x00000000 << IOPORT_PMC_OFFSET, ///< Enables pin to operate as an GPIO pin + IOPORT_CFG_PORT_PERI = 0x00000001 << IOPORT_PMC_OFFSET, ///< Enables pin to operate as a peripheral pin + IOPORT_CFG_DRIVE_LOW = 0x00000000 << IOPORT_DRCTL_OFFSET, ///< Sets pin drive output to low + IOPORT_CFG_DRIVE_MID = 0x00000001 << IOPORT_DRCTL_OFFSET, ///< Sets pin drive output to medium + IOPORT_CFG_DRIVE_HIGH = 0x00000002 << IOPORT_DRCTL_OFFSET, ///< Sets pin drive output to high + IOPORT_CFG_DRIVE_UHIGH = 0x00000003 << IOPORT_DRCTL_OFFSET, ///< Sets pin drive output to ultra high + IOPORT_CFG_PULLUP_DOWN_DISABLE = 0x00000000 << IOPORT_DRCTL_OFFSET, ///< Disables the pin's pull-up / pull-down + IOPORT_CFG_PULLUP_ENABLE = 0x00000004 << IOPORT_DRCTL_OFFSET, ///< Enables the pin's internal pull-up + IOPORT_CFG_PULLDOWN_ENABLE = 0x00000008 << IOPORT_DRCTL_OFFSET, ///< Enables the pin's pull-down + IOPORT_CFG_SCHMITT_TRIGGER_DISABLE = 0x00000000 << IOPORT_DRCTL_OFFSET, ///< Disables schmitt trigger input + IOPORT_CFG_SCHMITT_TRIGGER_ENABLE = 0x00000010 << IOPORT_DRCTL_OFFSET, ///< Enables schmitt trigger input + IOPORT_CFG_SLEW_RATE_SLOW = 0x00000000 << IOPORT_DRCTL_OFFSET, ///< Sets the slew rate to slow + IOPORT_CFG_SLEW_RATE_FAST = 0x00000020 << IOPORT_DRCTL_OFFSET, ///< Sets the slew rate to fast + IOPORT_CFG_REGION_SAFETY = 0x00000000 << IOPORT_RSELP_OFFSET, ///< Selects safety region + IOPORT_CFG_REGION_NSAFETY = 0x00000001 << IOPORT_RSELP_OFFSET, ///< Selects non safety region + IOPORT_CFG_PIM_TTL = 0x00000020, ///< This macro has been unsupported + IOPORT_CFG_NMOS_ENABLE = 0x00000040, ///< This macro has been unsupported + IOPORT_CFG_PMOS_ENABLE = 0x00000080, ///< This macro has been unsupported + IOPORT_CFG_DRIVE_HS_HIGH = 0x00000800, ///< This macro has been unsupported + IOPORT_CFG_DRIVE_MID_IIC = 0x00000C00, ///< This macro has been unsupported + IOPORT_CFG_EVENT_RISING_EDGE = 0x00001000, ///< This macro has been unsupported + IOPORT_CFG_EVENT_FALLING_EDGE = 0x00002000, ///< This macro has been unsupported + IOPORT_CFG_EVENT_BOTH_EDGES = 0x00003000, ///< This macro has been unsupported + IOPORT_CFG_IRQ_ENABLE = 0x00004000, ///< This macro has been unsupported + IOPORT_CFG_ANALOG_ENABLE = 0x00008000, ///< This macro has been unsupported + IOPORT_CFG_PERIPHERAL_PIN = 0x00010000 ///< This macro has been unsupported +} ioport_cfg_options_t; + +/*============================================== + * POE3 API Overrides + *==============================================*/ + +/** POE3 states. */ +typedef enum e_poe3_state +{ + POE3_STATE_NO_DISABLE_REQUEST = 0, ///< Timer output is not disabled by POE3 + POE3_STATE_POE0_HIGH_IMPEDANCE_REQUEST = 1U, ///< Timer output disabled due to POE0# pin + POE3_STATE_POE4_HIGH_IMPEDANCE_REQUEST = 1U << 1, ///< Timer output disabled due to POE4# pin + POE3_STATE_POE8_HIGH_IMPEDANCE_REQUEST = 1U << 2, ///< Timer output disabled due to POE8# pin + POE3_STATE_POE10_HIGH_IMPEDANCE_REQUEST = 1U << 3, ///< Timer output disabled due to POE10# pin + POE3_STATE_POE11_HIGH_IMPEDANCE_REQUEST = 1U << 4, ///< Timer output disabled due to POE11# pin + + POE3_STATE_SOFTWARE_STOP_DISABLE_REQUEST = 1U << 5, ///< Timer output disabled due to poe3_api_t::outputDisable() + POE3_STATE_OSCILLATION_STOP_DISABLE_REQUEST = 1U << 6, ///< Timer output disabled due to main oscillator stop + + POE3_STATE_DSMIF0_ERROR_REQUEST = 1U << 7, ///< Timer output disabled due to DSMIF0 error + POE3_STATE_DSMIF1_ERROR_REQUEST = 1U << 8, ///< Timer output disabled due to DSMIF1 error + + POE3_STATE_OUTPUT_SHORT_CIRCUIT_1_ERROR_REQUEST = 1U << 9, ///< Timer output disabled due to output short circuit 1 + POE3_STATE_OUTPUT_SHORT_CIRCUIT_2_ERROR_REQUEST = 1U << 10, ///< Timer output disabled due to output short circuit 2 +} poe3_state_t; + +/*============================================== + * POEG API Overrides + *==============================================*/ + +/** POEG states. */ +typedef enum e_poeg_state +{ + POEG_STATE_NO_DISABLE_REQUEST = 0, ///< GPT output is not disabled by POEG + POEG_STATE_PIN_DISABLE_REQUEST = 1U << 0, ///< GPT output disabled due to GTETRG pin level + POEG_STATE_GPT_OR_COMPARATOR_DISABLE_REQUEST = 1U << 1, ///< GPT output disabled due to high speed analog comparator or GPT + POEG_STATE_OSCILLATION_STOP_DISABLE_REQUEST = 1U << 2, ///< GPT output disabled due to main oscillator stop + POEG_STATE_SOFTWARE_STOP_DISABLE_REQUEST = 1U << 3, ///< GPT output disabled due to poeg_api_t::outputDisable() + + /** GPT output disable request active from the GTETRG pin. If a filter is used, this flag represents the state of + * the filtered input. */ + POEG_STATE_PIN_DISABLE_REQUEST_ACTIVE = 1U << 16, + POEG_STATE_DSMIF0_DISABLE_REQUEST = 1U << 24, ///< GPT output disabled due to DSMIF0 error 0 + POEG_STATE_DSMIF1_DISABLE_REQUEST = 1U << 25, ///< GPT output disabled due to DSMIF1 error 0 +} poeg_state_t; + +/** Triggers that will disable GPT output pins. */ +typedef enum e_poeg_trigger +{ + /** Software disable is always supported with POEG. Select this option if no other triggers are used. */ + POEG_TRIGGER_SOFTWARE = 0U, + POEG_TRIGGER_PIN = 1U << 0, ///< Disable GPT output based on GTETRG input level + POEG_TRIGGER_GPT_OUTPUT_LEVEL = 1U << 1, ///< Disable GPT output based on GPT output pin levels + POEG_TRIGGER_OSCILLATION_STOP = 1U << 2, ///< Disable GPT output based on main oscillator stop + POEG_TRIGGER_ACMPHS0 = 1U << 4, ///< Disable GPT output based on ACMPHS0 comparator result + POEG_TRIGGER_ACMPHS1 = 1U << 5, ///< Disable GPT output based on ACMPHS1 comparator result + POEG_TRIGGER_ACMPHS2 = 1U << 6, ///< Disable GPT output based on ACMPHS2 comparator result + POEG_TRIGGER_ACMPHS3 = 1U << 7, ///< Disable GPT output based on ACMPHS3 comparator result + POEG_TRIGGER_ACMPHS4 = 1U << 8, ///< Disable GPT output based on ACMPHS4 comparator result + POEG_TRIGGER_ACMPHS5 = 1U << 9, ///< Disable GPT output based on ACMPHS5 comparator result + + /** The GPT output pins can be disabled when DSMIF error occurs (LLPP only). */ + POEG_TRIGGER_DERR0E = 1U << 22, ///< Permit output disabled by DSMIF0 error detection + POEG_TRIGGER_DERR1E = 1U << 23, ///< Permit output disabled by DSMIF1 error detection +} poeg_trigger_t; + +/*============================================== + * Transfer API Overrides + *==============================================*/ + +/** Events that can trigger a callback function. */ +typedef enum e_transfer_event +{ + TRANSFER_EVENT_TRANSFER_END = 0, ///< Transfer has completed. + TRANSFER_EVENT_TRANSFER_ERROR = 1, ///< Transfer error has occurred. +} transfer_event_t; + +/** Transfer mode describes what will happen when a transfer request occurs. */ +typedef enum e_transfer_mode +{ + /** Normal mode. */ + TRANSFER_MODE_NORMAL = 0, + + /** Block mode. */ + TRANSFER_MODE_BLOCK = 1 +} transfer_mode_t; + +/** Transfer size specifies the size of each individual transfer. */ +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_8_BYTE = 3, ///< Each transfer transfers a 64-bit value + TRANSFER_SIZE_16_BYTE = 4, ///< Each transfer transfers a 128-bit value + TRANSFER_SIZE_32_BYTE = 5, ///< Each transfer transfers a 256-bit value + TRANSFER_SIZE_64_BYTE = 6 ///< Each transfer transfers a 512-bit value +} transfer_size_t; + +/** Address mode specifies whether to modify (increment or decrement) pointer after each transfer. */ +typedef enum e_transfer_addr_mode +{ + /** Address pointer is incremented by associated @ref transfer_size_t after each transfer. */ + TRANSFER_ADDR_MODE_INCREMENTED = 0, + + /** Address pointer remains fixed after each transfer. */ + TRANSFER_ADDR_MODE_FIXED = 1 +} transfer_addr_mode_t; + +/** Callback function parameter data. */ +typedef struct st_transfer_callback_args_t +{ + transfer_event_t event; ///< Event code + void const * p_context; ///< Placeholder for user data. Set in transfer_api_t::open function in ::transfer_cfg_t. +} transfer_callback_args_t; + +/** This structure specifies the properties of the transfer. */ +typedef struct st_transfer_info +{ + /** Select what happens to destination pointer after each transfer. */ + transfer_addr_mode_t dest_addr_mode; + + /** Select what happens to source pointer after each transfer. */ + transfer_addr_mode_t src_addr_mode; + + /** Select mode from @ref transfer_mode_t. */ + transfer_mode_t mode; + + /** Source pointer. */ + void const * volatile p_src; + + /** Destination pointer. */ + void * volatile p_dest; + + /** Length of each transfer. */ + volatile uint32_t length; + + /** Select number of source bytes to transfer at once. */ + transfer_size_t src_size; + + /** Select number of destination bytes to transfer at once. */ + transfer_size_t dest_size; + + /** Next1 Register set settings */ + void const * p_next1_src; + void * p_next1_dest; + uint32_t next1_length; +} transfer_info_t; + +/*********************************************************************************************************************** + * Exported global variables + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Exported global functions (to be accessed by other files) + **********************************************************************************************************************/ + +/** 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/rzn2l_etherkit/rzn/fsp/src/r_ioport/r_ioport.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/r_ioport/r_ioport.c new file mode 100644 index 00000000000..a192ee17d4d --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/r_ioport/r_ioport.c @@ -0,0 +1,957 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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) + +/* 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_8BIT_MASK (0x00FFU) + +/* Added definitions */ +#define IOPORT_PIN_NUM_MUX (8U) +#define IOPORT_REGION_SEL_SAFE (0U) +#define IOPORT_REGION_SEL_NSAFE (1U) +#define IOPORT_RSEL_MASK (0x01U) +#define IOPORT_PM_BIT_MASK (0x0003U) +#define IOPORT_PFC_BIT_MASK (0x0000000FU) +#define IOPORT_DRTCL_BIT_MASK (0x000000FFU) +#define IOPORT_ELC_PEL_MASK (0x80) +#define IOOPRT_ELC_PGC_MASK (0x88) +#define IOPORT_ELC_PEL_PSM_HIGH (0x20) + +/* Switch IOPORT register region either safety or non safety */ +#define IOPORT_PRV_PORT_ADDRESS(region_sel) (region_sel == 1 ? (R_PORT_NSR) : (R_PORT_SR)) + +/*********************************************************************************************************************** + * Typedef definitions + **********************************************************************************************************************/ +typedef struct st_ioport_cfg_data +{ + uint32_t p_reg : 1; + uint32_t pm_reg : 2; + uint32_t pmc_reg : 1; + uint32_t pfc_reg : 4; + uint32_t drct_reg : 6; + uint32_t rsel_reg : 1; + uint32_t reserved : 17; +} ioport_cfg_data_t; + +/*********************************************************************************************************************** + * Private function prototypes + **********************************************************************************************************************/ +static void r_ioport_pins_config(const ioport_cfg_t * p_cfg); +static void r_ioport_pin_set(bsp_io_port_pin_t pin, ioport_cfg_data_t * p_cfg_data); +static void r_ioport_event_config(const ioport_extend_cfg_t * p_extend_cfg_data); + +/*********************************************************************************************************************** + * 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, +}; + +/*******************************************************************************************************************//** + * @addtogroup IOPORT + * @{ + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Functions + **********************************************************************************************************************/ + +/*******************************************************************************************************************//** + * Initializes internal driver data, then calls pin configuration function to configure pins. + * + * @retval FSP_SUCCESS Pin configuration data written to the multiple registers + * @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); + FSP_ERROR_RETURN(IOPORT_OPEN != p_instance_ctrl->open, FSP_ERR_ALREADY_OPEN); +#endif + + /* Set driver status to open */ + p_instance_ctrl->open = IOPORT_OPEN; + + p_instance_ctrl->p_cfg = p_cfg; + + r_ioport_pins_config(p_cfg); + + r_ioport_event_config(p_cfg->p_extend); + + 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 the multiple registers. + * Implements @ref ioport_api_t::pinsCfg. + * + * This function initializes the supplied list of the multiple registers with the supplied values. This data can be generated + * by the Pins tab of the RZ/N2L 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 the multiple registers + * @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 + + R_BSP_PinAccessEnable(); + + r_ioport_pin_set(pin, (ioport_cfg_data_t *) &cfg); + + R_BSP_PinAccessDisable(); + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Reads the level on a pin. Implements @ref ioport_api_t::pinRead. + * + * The level for the specifed pin will be reterned by PINm register. + * + * @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_FastPinRead(R_BSP_IoRegionGet(pin), 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 by PINm register. + * 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 + + R_PORT_COMMON_Type * p_ioport_regs; + ioport_size_t safe_value; + ioport_size_t nsafe_value; + + /* Get port number */ + uint32_t port_num = (IOPORT_PRV_PORT_BITS & (ioport_size_t) port) >> IOPORT_PRV_PORT_OFFSET; + + /* Get the RSELP register value */ + ioport_size_t rselp_value = (ioport_size_t) R_PTADR->RSELP[port_num]; + + /* Get the port register address in non safety region */ + p_ioport_regs = IOPORT_PRV_PORT_ADDRESS(IOPORT_REGION_SEL_NSAFE); + + /* Read the specified port states in non safety region */ + nsafe_value = (ioport_size_t) (p_ioport_regs->PIN[port_num] & rselp_value); + + /* Get the port register address in safety region */ + p_ioport_regs = IOPORT_PRV_PORT_ADDRESS(IOPORT_REGION_SEL_SAFE); + + /* Read the specified port states in safety region */ + safe_value = (ioport_size_t) (p_ioport_regs->PIN[port_num] & ~(rselp_value)); + + /* Read the specified port states */ + *p_port_value = nsafe_value | safe_value; + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * Writes to multiple pins on a port. Implements @ref ioport_api_t::portWrite. + * + * The output 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 = 0x00FF, 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 Pm 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 + + R_PORT_COMMON_Type * p_ioport_regs; + ioport_size_t temp_value; + ioport_size_t write_mask; + + /* mask value: lower word is valid, upper word is invalid */ + mask &= IOPORT_PRV_8BIT_MASK; + + /* Get port number */ + uint32_t port_num = (IOPORT_PRV_PORT_BITS & (ioport_size_t) port) >> IOPORT_PRV_PORT_OFFSET; + + /* Get the RSELP register value */ + ioport_size_t rselp_value = R_PTADR->RSELP[port_num]; + + /* Set value to non safety region register */ + write_mask = rselp_value & mask; + if (write_mask) + { + /* Get the port register address */ + p_ioport_regs = IOPORT_PRV_PORT_ADDRESS(IOPORT_REGION_SEL_NSAFE); + + /* Output data store of the specified pins sets to low output */ + temp_value = (ioport_size_t) (p_ioport_regs->P[port_num] & (~write_mask)); + + /* Write output data to P register of the specified pins */ + p_ioport_regs->P[port_num] = (uint8_t) (temp_value | (value & write_mask)); + } + + /* Set value to safety region register */ + write_mask = (ioport_size_t) ((~rselp_value) & mask); + if (write_mask) + { + /* Get the port register address */ + p_ioport_regs = IOPORT_PRV_PORT_ADDRESS(IOPORT_REGION_SEL_SAFE); + + /* Output data store of the specified pins sets to low output */ + temp_value = (ioport_size_t) (p_ioport_regs->P[port_num] & (~write_mask)); + + /* Write output data to P register of the specified pins */ + p_ioport_regs->P[port_num] = (uint8_t) (temp_value | (value & write_mask)); + } + + 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 Pm 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 + + R_PORT_COMMON_Type * p_ioport_regs; + + /* Get port and pin number */ + uint32_t port_num = (IOPORT_PRV_PORT_BITS & (ioport_size_t) pin) >> IOPORT_PRV_PORT_OFFSET; + uint32_t pin_num = (IOPORT_PRV_PIN_BITS & (ioport_size_t) pin); + + /* Get the port register address */ + p_ioport_regs = (IOPORT_PRV_PORT_ADDRESS(((uint16_t) (R_PTADR->RSELP[port_num] >> pin_num) & + IOPORT_RSEL_MASK))); + + /* Set output level to P register of the specified pin */ + if (BSP_IO_LEVEL_LOW == level) + { + p_ioport_regs->P[port_num] &= (uint8_t) (~(1U << pin_num)); + } + else + { + p_ioport_regs->P[port_num] |= (uint8_t) (1U << pin_num); + } + + 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 mask 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 pin_num; + +#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 > (uint16_t) 0, FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + /* mask value: lower word is valid, upper word is invalid */ + mask &= IOPORT_PRV_8BIT_MASK; + + for (pin_num = 0U; pin_num < IOPORT_PIN_NUM_MUX; pin_num++) + { + if (mask & (1U << pin_num)) + { + /* Get port number */ + uint32_t port_num = (IOPORT_PRV_PORT_BITS & (ioport_size_t) port) >> IOPORT_PRV_PORT_OFFSET; + + /* Get the port register address */ + R_PORT_COMMON_Type * p_ioport_regs = + IOPORT_PRV_PORT_ADDRESS(((uint16_t) (R_PTADR->RSELP[port_num] >> pin_num) & + IOPORT_RSEL_MASK)); + + /* Set */ + uint16_t set_bits = (uint16_t) (direction_values & (IOPORT_PM_BIT_MASK << (pin_num * 2U))); + + /* Set the direction value */ + uint16_t temp_value = (uint16_t) (p_ioport_regs->PM[port_num] & ~(IOPORT_PM_BIT_MASK << (pin_num * 2U))); + p_ioport_regs->PM[port_num] = temp_value | set_bits; + } + } + + 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 + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PortEventInputRead (ioport_ctrl_t * const p_ctrl, bsp_io_port_t port, ioport_size_t * p_event_data) +{ + uint8_t portgroup = 0U; + 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); + FSP_ASSERT(NULL != p_event_data); + FSP_ERROR_RETURN((port == BSP_IO_PORT_16) || (port == BSP_IO_PORT_18), FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + const ioport_extend_cfg_t * elc_cfg = p_instance_ctrl->p_cfg->p_extend; + + /* Get register address */ + R_PORT_COMMON_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS(IOPORT_REGION_SEL_NSAFE); + + /* Get port group number for the specified port */ + if (BSP_IO_PORT_16 == port) + { + portgroup = 0U; + } + else if (BSP_IO_PORT_18 == port) + { + portgroup = 1U; + } + else + { + /* Do Nothing */ + } + + /* Read current value of buffer value from ELC_PDBF register for the specified port group */ + *p_event_data = + (uint16_t) (p_ioport_regs->ELC_PDBF[portgroup].BY & elc_cfg->port_group_input_cfg[portgroup].pin_select); + + 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. + **********************************************************************************************************************/ +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) +{ + uint8_t portgroup = 0U; + uint8_t portvalue; + uint8_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((port_number == BSP_IO_PORT_16 >> IOPORT_PRV_PORT_OFFSET) || + (port_number == BSP_IO_PORT_18 >> IOPORT_PRV_PORT_OFFSET), + FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + /* Get port and pin number */ + uint32_t port_num = (IOPORT_PRV_PORT_BITS & (ioport_size_t) pin); + uint32_t pin_num = (IOPORT_PRV_PIN_BITS & (ioport_size_t) pin); + + /* Get register address */ + R_PORT_COMMON_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS(IOPORT_REGION_SEL_NSAFE); + + /* Get port group number for the specified port */ + if (BSP_IO_PORT_16 == port_num) + { + portgroup = 0U; + } + else if (BSP_IO_PORT_18 == port_num) + { + portgroup = 1U; + } + else + { + /* Do Nothing */ + } + + /* Read current value of buffer value from ELC_PDBF register for the specified port group */ + portvalue = p_ioport_regs->ELC_PDBF[portgroup].BY; + mask = (uint8_t) (1U << pin_num); + + 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 + **********************************************************************************************************************/ +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) +{ + uint8_t portgroup = 0U; + ioport_size_t temp_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_value > (ioport_size_t) 0, FSP_ERR_INVALID_ARGUMENT); + FSP_ERROR_RETURN((port == BSP_IO_PORT_16) || (port == BSP_IO_PORT_18), FSP_ERR_INVALID_ARGUMENT); +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + + R_BSP_PinAccessEnable(); // Unlock Register Write Protection + + /* Get register address */ + R_PORT_COMMON_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS(IOPORT_REGION_SEL_NSAFE); + + /* Get port group number for the specified port */ + if (BSP_IO_PORT_16 == port) + { + portgroup = 0U; + } + else if (BSP_IO_PORT_18 == port) + { + portgroup = 1U; + } + else + { + /* Do Nothing */ + } + + temp_value = p_ioport_regs->ELC_PDBF[portgroup].BY; + temp_value &= (ioport_size_t) (~mask_value); + + p_ioport_regs->ELC_PDBF[portgroup].BY = (uint8_t) (temp_value | event_data); + + R_BSP_PinAccessDisable(); // Lock Register Write Protection + + 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 + **********************************************************************************************************************/ +fsp_err_t R_IOPORT_PinEventOutputWrite (ioport_ctrl_t * const p_ctrl, bsp_io_port_pin_t pin, bsp_io_level_t pin_value) +{ + uint8_t singleport = 0U; + uint8_t cnt; + 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); + 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((port_number == BSP_IO_PORT_16 >> IOPORT_PRV_PORT_OFFSET) || + (port_number == BSP_IO_PORT_18 >> IOPORT_PRV_PORT_OFFSET), + FSP_ERR_INVALID_ARGUMENT); +#endif + + const ioport_extend_cfg_t * elc_cfg = p_instance_ctrl->p_cfg->p_extend; + + R_BSP_PinAccessEnable(); // Unlock Register Write Protection + + /* Get register address */ + R_PORT_COMMON_Type * p_ioport_regs = IOPORT_PRV_PORT_ADDRESS(IOPORT_REGION_SEL_NSAFE); + + for (cnt = 0; cnt < IOPORT_SINGLE_PORT_NUM; cnt++) + { + if ((bsp_io_port_pin_t) elc_cfg->single_port_cfg[cnt].port_num == pin) + { + singleport = cnt; + } + } + + if (BSP_IO_LEVEL_HIGH == pin_value) + { + p_ioport_regs->ELC_PEL[singleport] |= (uint8_t) IOPORT_ELC_PEL_PSM_HIGH; + } + else + { + p_ioport_regs->ELC_PEL[singleport] &= (uint8_t) (~IOPORT_ELC_PEL_PSM_HIGH); + } + + R_BSP_PinAccessDisable(); // Lock Register Write Protection + + 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) +{ + uint16_t pin_count; + ioport_cfg_t * p_pin_data; + + p_pin_data = (ioport_cfg_t *) p_cfg; + + R_BSP_PinAccessEnable(); // Unlock Register Write Protection + + for (pin_count = 0U; pin_count < p_pin_data->number_of_pins; pin_count++) + { + r_ioport_pin_set(p_pin_data->p_pin_cfg_data[pin_count].pin, + (ioport_cfg_data_t *) &p_pin_data->p_pin_cfg_data[pin_count].pin_cfg); + } + + R_BSP_PinAccessDisable(); // Lock Register Write Protection +} + +/*******************************************************************************************************************//** + * Writes to the specified pin's multiple registers + * + * @param[in] pin Pin to write parameter data for + * @param[in] p_cfg_data Value to be written to the multiple registers + * + **********************************************************************************************************************/ +static void r_ioport_pin_set (bsp_io_port_pin_t pin, ioport_cfg_data_t * p_cfg_data) +{ + R_PORT_COMMON_Type * p_ioport_regs; + uint32_t temp_value; + + /* Get port and pin number */ + uint32_t port = (IOPORT_PRV_PORT_BITS & (ioport_size_t) pin) >> IOPORT_PRV_PORT_OFFSET; + uint32_t pin_num = (IOPORT_PRV_PIN_BITS & (ioport_size_t) pin); + + /* Setting for Safety region or Non safety region */ + if (p_cfg_data->rsel_reg == 1U) // Setting for Non safety region + { + R_PTADR->RSELP[port] |= (uint8_t) (1U << pin_num); + p_ioport_regs = IOPORT_PRV_PORT_ADDRESS(IOPORT_REGION_SEL_NSAFE); + } + else // Setting for Safety region + { + R_PTADR->RSELP[port] &= (uint8_t) (~(1U << pin_num)); + p_ioport_regs = IOPORT_PRV_PORT_ADDRESS(IOPORT_REGION_SEL_SAFE); + } + + /* Setting DRCTL register */ + if (3U >= pin_num) + { + temp_value = p_ioport_regs->DRCTL[port].L & ~(IOPORT_DRTCL_BIT_MASK << (pin_num * 8U)); + p_ioport_regs->DRCTL[port].L = temp_value | (uint32_t) (p_cfg_data->drct_reg << (pin_num * 8U)); + } + else if (3U < pin_num) + { + temp_value = p_ioport_regs->DRCTL[port].H & ~(IOPORT_DRTCL_BIT_MASK << ((pin_num - 4U) * 8U)); + p_ioport_regs->DRCTL[port].H = temp_value | (uint32_t) (p_cfg_data->drct_reg << ((pin_num - 4U) * 8U)); + } + else + { + /* Do Nothing */ + } + + /* Setting for GPIO or peripheral */ + if (1U == p_cfg_data->pmc_reg) // Setting for peripheral + { + temp_value = p_ioport_regs->PFC[port] & ~(IOPORT_PFC_BIT_MASK << (pin_num * 4U)); + p_ioport_regs->PFC[port] = temp_value | (uint32_t) (p_cfg_data->pfc_reg << (pin_num * 4U)); // Setting PFC register + + /* Setting peripheral for port mode */ + p_ioport_regs->PMC[port] |= (uint8_t) (p_cfg_data->pmc_reg << pin_num); // Setting PMC register + } + else // Setting for GPIO + { + /* Setting GPIO for port mode */ + p_ioport_regs->PMC[port] &= (uint8_t) (~(1U << pin_num)); // Setting PMC register + + /* Setting for input or output */ + if (1U == p_cfg_data->pm_reg) // Setting for input + { + /* Setting PM register. */ + /* 01b: Input */ + temp_value = (uint32_t) (p_ioport_regs->PM[port] & ~(IOPORT_PM_BIT_MASK << (pin_num * 2U))); + p_ioport_regs->PM[port] = (uint16_t) (temp_value | (uint32_t) (1U << (pin_num * 2U))); + } + else if (1U < p_cfg_data->pm_reg) // Setting for two kinds of Output + { + /* Setting P register */ + if (0U == p_cfg_data->p_reg) // Low output setting + { + p_ioport_regs->P[port] &= (uint8_t) (~(1U << pin_num)); + } + else if (1U == p_cfg_data->p_reg) // High output setting + { + p_ioport_regs->P[port] |= (uint8_t) (1U << pin_num); + } + else + { + /* Do Nothing */ + } + + /* Setting PM register. */ + /* 10b: Output */ + /* 11b: Output(output data is input to input buffer) */ + temp_value = (uint32_t) (p_ioport_regs->PM[port] & ~(IOPORT_PM_BIT_MASK << (pin_num * 2U))); + p_ioport_regs->PM[port] = (uint16_t) (temp_value | (uint32_t) (p_cfg_data->pm_reg << (pin_num * 2U))); + } + else + { + /* Do Nothing */ + } + } +} + +/*******************************************************************************************************************//** + * Writes to the specified pin's multiple registers to generate event link function + * + * @param[in] p_extend_cfg_data Value to be written to the multiple registers + * + **********************************************************************************************************************/ +static void r_ioport_event_config (const ioport_extend_cfg_t * p_extend_cfg_data) +{ + uint8_t event_num; + uint8_t temp_value = 0x00; + uint8_t single_enable = 0x00; + uint8_t group_enable = 0x00; + R_PORT_COMMON_Type * p_ioport_regs; + ioport_extend_cfg_t * ex_cfg; + + ex_cfg = (ioport_extend_cfg_t *) p_extend_cfg_data; + + R_BSP_PinAccessEnable(); // Unlock Register Write Protection + + /* Get register address */ + p_ioport_regs = IOPORT_PRV_PORT_ADDRESS(IOPORT_REGION_SEL_NSAFE); + + /* Single port configuration */ + for (event_num = 0U; event_num < IOPORT_SINGLE_PORT_NUM; event_num++) + { + uint8_t port = + (uint8_t) ((ex_cfg->single_port_cfg[event_num].port_num & IOPORT_PRV_PORT_BITS) >> IOPORT_PRV_PORT_OFFSET); + uint8_t pin_num = (uint8_t) ex_cfg->single_port_cfg[event_num].port_num & IOPORT_PRV_PIN_BITS; + + temp_value = p_ioport_regs->ELC_PEL[event_num] & IOPORT_ELC_PEL_MASK; + + /* Port selection */ + if ((BSP_IO_PORT_16 >> IOPORT_PRV_PORT_OFFSET) == port) + { + temp_value |= 1U << 3; + } + else if ((BSP_IO_PORT_18 >> IOPORT_PRV_PORT_OFFSET) == port) + { + temp_value |= 1U << 4; + } + else + { + /* Do Nothing */ + } + + temp_value |= pin_num; // Pin number setting + + /* When the pin specified as single input port, Set edge detection */ + /* When the pin specified as single output port, Set output operation */ + if (IOPORT_EVENT_DIRECTION_INPUT == ex_cfg->single_port_cfg[event_num].direction) + { + temp_value |= (uint8_t) (ex_cfg->single_port_cfg[event_num].edge_detection << 5); // Edge detection + + /* Edge detection enable */ + p_ioport_regs->ELC_DPTC |= (uint8_t) (1U << event_num); + } + else + { + temp_value |= (uint8_t) (ex_cfg->single_port_cfg[event_num].operation << 5); // Output operation + } + + /* Set to ELC port setting register */ + p_ioport_regs->ELC_PEL[event_num] = temp_value; + + /* Single port event link function enable */ + if (IOPORT_EVENT_CONTROL_ENABLE == ex_cfg->single_port_cfg[event_num].event_control) + { + single_enable |= (uint8_t) (1U << event_num); + } + } + + /* Port group configuration */ + for (event_num = 0U; event_num < IOPORT_PORT_GROUP_NUM; event_num++) + { + /* Pin selection */ + uint8_t group_pin = ex_cfg->port_group_input_cfg[event_num].pin_select | + ex_cfg->port_group_output_cfg[event_num].pin_select; + p_ioport_regs->ELC_PGR[event_num] = group_pin; + + if (IOPORT_EVENT_CONTROL_ENABLE == ex_cfg->port_group_input_cfg[event_num].event_control) + { + /* Input port group control */ + temp_value = p_ioport_regs->ELC_PGC[event_num] & IOOPRT_ELC_PGC_MASK; + temp_value |= ex_cfg->port_group_input_cfg[event_num].edge_detection; // Edge detection + temp_value |= (uint8_t) (ex_cfg->port_group_input_cfg[event_num].overwrite_control << 2U); // Overwrite setting + + /* Buffer register initialization */ + p_ioport_regs->ELC_PDBF[event_num].BY = ex_cfg->port_group_input_cfg[event_num].buffer_init_value; + + /* Input port group event link function enable */ + group_enable |= (uint8_t) (1U << event_num); + } + + /* Output port group operation */ + temp_value |= (uint8_t) (ex_cfg->port_group_output_cfg[event_num].operation << 4); + + /* Set to port group control register */ + p_ioport_regs->ELC_PGC[event_num] = temp_value; + } + + /* Set to ELC port event control register */ + p_ioport_regs->ELC_ELSR2 = (uint8_t) ((single_enable << 4) | (group_enable << 2)); + + R_BSP_PinAccessDisable(); // Lock Register Write Protection +} diff --git a/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/r_sci_uart/r_sci_uart.c b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/r_sci_uart/r_sci_uart.c new file mode 100644 index 00000000000..dff83ec6b74 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn/fsp/src/r_sci_uart/r_sci_uart.c @@ -0,0 +1,1934 @@ +/*********************************************************************************************************************** + * Copyright [2020-2024] Renesas Electronics Corporation and/or its affiliates. All Rights Reserved. + * + * This software and documentation are supplied by Renesas Electronics Corporation and/or its affiliates 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_uart.h" +#include + +#if SCI_UART_CFG_DMAC_SUPPORTED + #include "r_dmac.h" +#endif + +/*********************************************************************************************************************** + * Macro definitions + **********************************************************************************************************************/ +#ifndef SCI_UART_CFG_RX_ENABLE + #define SCI_UART_CFG_RX_ENABLE 1 +#endif +#ifndef SCI_UART_CFG_TX_ENABLE + #define SCI_UART_CFG_TX_ENABLE 1 +#endif + +/** Number of divisors in the data table used for baud rate calculation. */ +#define SCI_UART_NUM_DIVISORS_ASYNC (13U) + +/** Valid range of values for the modulation duty register is 128 - 256 (256 = modulation disabled). */ +#define SCI_UART_MDDR_MIN (128U) +#define SCI_UART_MDDR_MAX (256U) + +/** The bit rate register is 8-bits, so the maximum value is 255. */ +#define SCI_UART_BRR_MAX (255U) + +/** No limit to the number of bytes to read or write if DMAC is not used. */ +#define SCI_UART_MAX_READ_WRITE_NO_DMAC (0xFFFFFFFFU) + +/** Mask of invalid data bits in 9-bit mode. */ +#define SCI_UART_ALIGN_2_BYTES (0x1U) + +/** Clock frequency 96MHz. */ +#define SCI_UART_CLOCK_96MHZ (96000000) + +/** "SCIU" in ASCII. Used to determine if the control block is open. */ +#define SCI_UART_OPEN (0x53434955U) + +#define SCI_UART_BRR_DEFAULT_VALUE (0xFFU) +#define SCI_UART_MDDR_DEFAULT_VALUE (0xFFU) +#define SCI_UART_FCR_DEFAULT_VALUE (0x1F1F0000) + +#define SCI_UART_CCR0_DEFAULT_VALUE (0x00000000) +#define SCI_UART_CCR1_DEFAULT_VALUE (0x00000010) +#define SCI_UART_CCR2_DEFAULT_VALUE (0xFF00FF04) +#define SCI_UART_CCR3_DEFAULT_VALUE (0x00001203) +#define SCI_UART_CCR4_DEFAULT_VALUE (0x00000000) + +#define SCI_UART_CFCLR_ALL_FLAG_CLEAR (0xBD070010) +#define SCI_UART_FFCLR_ALL_FLAG_CLEAR (0x00000001) + +/** SCI CCR0 register bit masks */ +#define SCI_UART_CCR0_IDSEL_MASK (0x00000400) +#define SCI_UART_CCR0_TEIE_MASK (0x00200000) +#define SCI_UART_CCR0_RE_MASK (0x00000001) +#define SCI_UART_CCR0_TE_MASK (0x00000010) +#define SCI_UART_CCR0_RIE_MASK (0x00010000) +#define SCI_UART_CCR0_TIE_MASK (0x00100000) + +/** SCI CCR1 register bit offsets */ +#define SCI_UART_CCR1_CTSE_OFFSET (0U) +#define SCI_UART_CCR1_SPB2DT_BIT (4U) +#define SCI_UART_CCR1_OUTPUT_ENABLE_MASK (0x00000020) +#define SCI_UART_CCR1_PARITY_OFFSET (8U) +#define SCI_UART_CCR1_PARITY_MASK (0x00000300U) +#define SCI_UART_CCR1_FLOW_CTSRTS_MASK (0x00000003U) +#define SCI_UART_CCR1_NFCS_OFFSET (24U) +#define SCI_UART_CCR1_NFCS_VALUE_MASK (0x07U) +#define SCI_UART_CCR1_NFEN_OFFSET (28U) + +/** SCI CCR2 register bit offsets */ +#define SCI_UART_CCR2_BRME_OFFSET (16U) +#define SCI_UART_CCR2_ABCSE_OFFSET (6U) +#define SCI_UART_CCR2_ABCS_OFFSET (5U) +#define SCI_UART_CCR2_BDGM_OFFSET (4U) +#define SCI_UART_CCR2_CKS_OFFSET (20U) +#define SCI_UART_CCR2_CKS_VALUE_MASK (0x03U) ///< CKS: 2 bits +#define SCI_UART_CCR2_BRR_OFFSET (8U) +#define SCI_UART_CCR2_BRR_VALUE_MASK (0xFFU) ///< BRR: 8bits +#define SCI_UART_CCR2_MDDR_OFFSET (24U) +#define SCI_UART_CCR2_MDDR_VALUE_MASK (0xFFU) ///< MDDR: 8bits + +#define SCI_UART_CCR2_BAUD_SETTING_MASK ((1U << SCI_UART_CCR2_BRME_OFFSET) | \ + (1U << SCI_UART_CCR2_ABCSE_OFFSET) | \ + (1U << SCI_UART_CCR2_ABCS_OFFSET) | \ + (1U << SCI_UART_CCR2_BDGM_OFFSET) | \ + (SCI_UART_CCR2_CKS_VALUE_MASK << SCI_UART_CCR2_CKS_OFFSET) | \ + (SCI_UART_CCR2_BRR_VALUE_MASK << SCI_UART_CCR2_BRR_OFFSET) | \ + (SCI_UART_CCR2_MDDR_VALUE_MASK << SCI_UART_CCR2_MDDR_OFFSET)) + +/** SCI CCR3 register bit masks */ +#define SCI_UART_CCR3_BPEN_OFFSET (7U) +#define SCI_UART_CCR3_CHR_OFFSET (8U) +#define SCI_UART_CCR3_STP_OFFSET (14U) +#define SCI_UART_CCR3_RxDSEL_OFFSET (15U) +#define SCI_UART_CCR3_FM_OFFSET (20U) +#define SCI_UART_CCR3_CKE_OFFSET (24U) +#define SCI_UART_CCR3_CKE_MASK (0x03000000U) +#define SCI_UART_CCR3_CKE_VALUE_MASK (0x03U) + +/** SCI CSR register receiver error bit masks */ +#define SCI_UART_CSR_ORER_MASK (0x01000000) +#define SCI_UART_CSR_FER_MASK (0x10000000) +#define SCI_UART_CSR_PER_MASK (0x08000000) +#define SCI_UART_RCVR_ERR_MASK (SCI_UART_CSR_ORER_MASK | SCI_UART_CSR_FER_MASK | SCI_UART_CSR_PER_MASK) + +/** SCI CFCLR register receiver clear error bit masks */ +#define SCI_UART_CFCLR_ORERC_MASK (0x01000000) +#define SCI_UART_CFCLR_FERC_MASK (0x10000000) +#define SCI_UART_CFCLE_PERC_MASK (0x08000000) +#define SCI_UART_RCVR_ERRCLR_MASK (SCI_UART_CFCLR_ORERC_MASK | SCI_UART_CFCLR_FERC_MASK | \ + SCI_UART_CFCLE_PERC_MASK) + +#define SCI_REG_SIZE (R_SCI1_BASE - R_SCI0_BASE) + +#define SCI_UART_INVALID_8BIT_PARAM (0xFFU) +#define SCI_UART_INVALID_16BIT_PARAM (0xFFFFU) + +#define SCI_UART_TDR_9BIT_MASK (0x1FFU) + +#define SCI_UART_FCR_TRIGGER_MASK (0xF) +#define SCI_UART_FCR_RSTRG_OFFSET (24U) +#define SCI_UART_FCR_RTRG_OFFSET (16U) +#define SCI_UART_FCR_TTRG_OFFSET (8U) +#define SCI_UART_FCR_TTRG_DMAC_VALUE (0x0F) +#define SCI_UART_FCR_RESET_TX_RX (0x00808000) + +#define SCI_UART_DMAC_MAX_TRANSFER (0xFFFFFFFFU) + +/*********************************************************************************************************************** + * Private constants + **********************************************************************************************************************/ +static const int32_t SCI_UART_100_PERCENT_X_1000 = 100000; +static const int32_t SCI_UART_MDDR_DIVISOR = 256; + +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) +static const uint32_t SCI_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; + +/*********************************************************************************************************************** + * Private function prototypes + **********************************************************************************************************************/ +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + +static fsp_err_t r_sci_read_write_param_check(sci_uart_instance_ctrl_t const * const p_instance_ctrl, + uint8_t const * const addr, + uint32_t const bytes); + +#endif + +static void r_sci_uart_config_set(sci_uart_instance_ctrl_t * const p_instance_ctrl, uart_cfg_t const * const p_cfg); + +#if SCI_UART_CFG_DMAC_SUPPORTED +static fsp_err_t r_sci_uart_transfer_configure(sci_uart_instance_ctrl_t * const p_instance_ctrl, + transfer_instance_t const * p_transfer, + uint32_t * p_transfer_reg, + uint32_t address); + +static fsp_err_t r_sci_uart_transfer_open(sci_uart_instance_ctrl_t * const p_instance_ctrl, + uart_cfg_t const * const p_cfg); + +static void r_sci_uart_transfer_close(sci_uart_instance_ctrl_t * p_instance_ctrl); + +#endif + +static void r_sci_uart_baud_set(R_SCI0_Type * p_sci_reg, sci_baud_setting_t const * const p_baud_setting); +static void r_sci_uart_call_callback(sci_uart_instance_ctrl_t * p_instance_ctrl, uint32_t data, uart_event_t event); + +#if SCI_UART_CFG_FIFO_SUPPORT +static void r_sci_uart_fifo_cfg(sci_uart_instance_ctrl_t * const p_instance_ctrl); + +#endif + +static void r_sci_irq_cfg(sci_uart_instance_ctrl_t * const p_instance_ctrl, uint8_t const ipl, IRQn_Type const p_irq); + +static void r_sci_irqs_cfg(sci_uart_instance_ctrl_t * const p_instance_ctrl, uart_cfg_t const * const p_cfg); + +#if (SCI_UART_CFG_TX_ENABLE) +void r_sci_uart_write_no_transfer(sci_uart_instance_ctrl_t * const p_instance_ctrl); + +#endif + +#if (SCI_UART_CFG_RX_ENABLE) +void r_sci_uart_rxi_read_no_transfer(sci_uart_instance_ctrl_t * const p_instance_ctrl); + +static void sci_uart_rxi_common(sci_uart_instance_ctrl_t * p_instance_ctrl); + +void sci_uart_rxi_isr(void); + +void sci_uart_rx_dmac_callback(sci_uart_instance_ctrl_t * p_instance_ctrl); + +void r_sci_uart_read_data(sci_uart_instance_ctrl_t * const p_instance_ctrl, uint32_t * const p_data); + +void sci_uart_eri_isr(void); + +#endif + +#if (SCI_UART_CFG_TX_ENABLE) +static void sci_uart_txi_common(sci_uart_instance_ctrl_t * p_instance_ctrl); + +void sci_uart_txi_isr(void); + +void sci_uart_tx_dmac_callback(sci_uart_instance_ctrl_t * p_instance_ctrl); + +void sci_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_uart"; +#endif + +/** Baud rate divisor information (UART mode) */ +static const baud_setting_const_t g_async_baud[SCI_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_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 = +{ + .open = R_SCI_UART_Open, + .close = R_SCI_UART_Close, + .write = R_SCI_UART_Write, + .read = R_SCI_UART_Read, + .infoGet = R_SCI_UART_InfoGet, + .baudSet = R_SCI_UART_BaudSet, + .communicationAbort = R_SCI_UART_Abort, + .callbackSet = R_SCI_UART_CallbackSet, + .readStop = R_SCI_UART_ReadStop, +}; + +/*******************************************************************************************************************//** + * @addtogroup SCI_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_ALREADY_OPEN Control block has already been opened or channel is being used by another + * instance. Call close() then open() to reconfigure. + * @retval FSP_ERR_INVALID_ARGUMENT Invalid input parameter. + * + * @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_UART_Open (uart_ctrl_t * const p_ctrl, uart_cfg_t const * const p_cfg) +{ + sci_uart_instance_ctrl_t * p_instance_ctrl = (sci_uart_instance_ctrl_t *) p_ctrl; + +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + + /* Check parameters. */ + FSP_ASSERT(p_instance_ctrl); + FSP_ASSERT(p_cfg); + FSP_ASSERT(p_cfg->p_callback); + FSP_ASSERT(p_cfg->p_extend); + FSP_ASSERT(((sci_uart_extended_cfg_t *) p_cfg->p_extend)->p_baud_setting); + FSP_ERROR_RETURN(SCI_UART_OPEN != p_instance_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_UART_CFG_DMAC_SUPPORTED + #if (SCI_UART_CFG_RX_ENABLE) + if (NULL != p_cfg->p_transfer_rx) + { + /* DMAC activation is not available for safety channel. */ + FSP_ERROR_RETURN(BSP_FEATURE_SCI_SAFETY_CHANNEL != p_cfg->channel, FSP_ERR_INVALID_ARGUMENT); + } + #endif + #if (SCI_UART_CFG_TX_ENABLE) + if (NULL != p_cfg->p_transfer_tx) + { + /* DMAC activation is not available for safety channel. */ + FSP_ERROR_RETURN(BSP_FEATURE_SCI_SAFETY_CHANNEL != p_cfg->channel, FSP_ERR_INVALID_ARGUMENT); + } + #endif + #endif + + if (SCI_UART_FLOW_CONTROL_CTSRTS == ((sci_uart_extended_cfg_t *) p_cfg->p_extend)->flow_control) + { + FSP_ERROR_RETURN( + ((sci_uart_extended_cfg_t *) p_cfg->p_extend)->flow_control_pin != (bsp_io_port_pin_t) SCI_UART_INVALID_16BIT_PARAM, + FSP_ERR_INVALID_ARGUMENT); + } + + if (SCI_UART_FLOW_CONTROL_HARDWARE_CTSRTS == ((sci_uart_extended_cfg_t *) p_cfg->p_extend)->flow_control) + { + FSP_ERROR_RETURN((0U != (((1U << (p_cfg->channel)) & BSP_FEATURE_SCI_UART_CSTPEN_CHANNELS))), + FSP_ERR_INVALID_ARGUMENT); + } + + FSP_ASSERT(UART_PARITY_ZERO != p_cfg->parity); + 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_instance_ctrl->fifo_depth = 0U; +#if SCI_UART_CFG_FIFO_SUPPORT + + /* Check if the channel supports fifo */ + if (BSP_FEATURE_SCI_UART_FIFO_CHANNELS & (1U << p_cfg->channel)) + { + p_instance_ctrl->fifo_depth = BSP_FEATURE_SCI_UART_FIFO_DEPTH; + } +#endif + + p_instance_ctrl->p_cfg = p_cfg; + + p_instance_ctrl->p_callback = p_cfg->p_callback; + p_instance_ctrl->p_context = p_cfg->p_context; + p_instance_ctrl->p_callback_memory = NULL; + sci_uart_extended_cfg_t * p_extend = (sci_uart_extended_cfg_t *) p_cfg->p_extend; + + p_instance_ctrl->data_bytes = 1U; + if (UART_DATA_BITS_9 == p_cfg->data_bits) + { + p_instance_ctrl->data_bytes = 2U; + } + + /* Configure the interrupts. */ + r_sci_irqs_cfg(p_instance_ctrl, p_cfg); + + /* Enable the SCI channel and reset the registers to their initial state. */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_LPC_RESET); + R_BSP_MODULE_START(FSP_IP_SCI, p_cfg->channel); + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_LPC_RESET); + + if (p_cfg->channel != BSP_FEATURE_SCI_SAFETY_CHANNEL) + { + /* Non-Safety Peripheral */ + p_instance_ctrl->p_reg = + (R_SCI0_Type *) ((uint32_t) R_SCI0 + (p_cfg->channel * ((uint32_t) R_SCI1 - (uint32_t) R_SCI0))); + } + else + { + /* Safety Peripheral */ + p_instance_ctrl->p_reg = (R_SCI0_Type *) BSP_FEATURE_SCI_SAFETY_CHANNEL_BASE_ADDRESS; + } + +#if SCI_UART_CFG_DMAC_SUPPORTED + + /* Configure the transfer interface for transmission and reception if provided. */ + fsp_err_t err = r_sci_uart_transfer_open(p_instance_ctrl, p_cfg); + + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); +#endif + + p_instance_ctrl->p_reg->CCR0 = SCI_UART_CCR0_DEFAULT_VALUE; + FSP_HARDWARE_REGISTER_WAIT(p_instance_ctrl->p_reg->CCR0_b.RE, 0); + FSP_HARDWARE_REGISTER_WAIT(p_instance_ctrl->p_reg->CCR0_b.TE, 0); + p_instance_ctrl->p_reg->CCR1 = SCI_UART_CCR1_DEFAULT_VALUE; + p_instance_ctrl->p_reg->CCR2 = SCI_UART_CCR2_DEFAULT_VALUE; + p_instance_ctrl->p_reg->CCR3 = SCI_UART_CCR3_DEFAULT_VALUE; + p_instance_ctrl->p_reg->CCR4 = SCI_UART_CCR4_DEFAULT_VALUE; + + /* Set the UART configuration settings provided in ::uart_cfg_t and ::sci_uart_extended_cfg_t. */ + r_sci_uart_config_set(p_instance_ctrl, p_cfg); + + p_instance_ctrl->p_reg->CFCLR = SCI_UART_CFCLR_ALL_FLAG_CLEAR; + +#if SCI_UART_CFG_FIFO_SUPPORT + p_instance_ctrl->p_reg->FFCLR = SCI_UART_FFCLR_ALL_FLAG_CLEAR; +#endif + + p_instance_ctrl->p_tx_src = NULL; + p_instance_ctrl->tx_src_bytes = 0U; + p_instance_ctrl->p_rx_dest = NULL; + p_instance_ctrl->rx_dest_bytes = 0; + + uint32_t ccr0 = SCI_UART_CCR0_IDSEL_MASK; +#if (SCI_UART_CFG_RX_ENABLE) + + /* If reception is enabled at build time, enable reception. */ + /* NOTE: Transmitter and its interrupt are enabled in R_SCI_UART_Write(). */ + R_BSP_IrqEnable(p_instance_ctrl->p_cfg->rxi_irq); + R_BSP_IrqEnable(p_instance_ctrl->p_cfg->eri_irq); + + ccr0 |= (SCI_UART_CCR0_RIE_MASK | SCI_UART_CCR0_RE_MASK); +#endif + +#if (SCI_UART_CFG_TX_ENABLE) + R_BSP_IrqEnable(p_instance_ctrl->p_cfg->txi_irq); + R_BSP_IrqEnable(p_instance_ctrl->p_cfg->tei_irq); + + ccr0 |= SCI_UART_CCR0_TE_MASK; +#endif + p_instance_ctrl->p_reg->CCR0 = ccr0; + + FSP_HARDWARE_REGISTER_WAIT(p_instance_ctrl->p_reg->CCR0_b.RE, 1); + FSP_HARDWARE_REGISTER_WAIT(p_instance_ctrl->p_reg->CCR0_b.TE, 1); + + /* Set flow control pins. */ + p_instance_ctrl->flow_pin = p_extend->flow_control_pin; + +#if SCI_UART_CFG_FLOW_CONTROL_SUPPORT + if (p_instance_ctrl->flow_pin != (bsp_io_port_pin_t) SCI_UART_INVALID_16BIT_PARAM) + { + R_BSP_PinAccessEnable(); + R_BSP_PinClear(R_BSP_IoRegionGet(p_instance_ctrl->flow_pin), p_instance_ctrl->flow_pin); + R_BSP_PinAccessDisable(); + } +#endif + + p_instance_ctrl->open = SCI_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_UART_Close (uart_ctrl_t * const p_ctrl) +{ + sci_uart_instance_ctrl_t * p_instance_ctrl = (sci_uart_instance_ctrl_t *) p_ctrl; +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_instance_ctrl); + FSP_ERROR_RETURN(SCI_UART_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); +#endif + + /* Mark the channel not open so other APIs cannot use it. */ + p_instance_ctrl->open = 0U; + + /* Disable interrupts, receiver, and transmitter. Disable baud clock output.*/ + p_instance_ctrl->p_reg->CCR0 = SCI_UART_CCR0_DEFAULT_VALUE; + FSP_HARDWARE_REGISTER_WAIT(p_instance_ctrl->p_reg->CCR0_b.RE, 0); + FSP_HARDWARE_REGISTER_WAIT(p_instance_ctrl->p_reg->CCR0_b.TE, 0); + p_instance_ctrl->p_reg->CCR3 &= ~(SCI_UART_CCR3_CKE_MASK); + +#if (SCI_UART_CFG_RX_ENABLE) + + /* If reception is enabled at build time, disable reception irqs. */ + R_BSP_IrqDisable(p_instance_ctrl->p_cfg->rxi_irq); + R_BSP_IrqDisable(p_instance_ctrl->p_cfg->eri_irq); +#endif +#if (SCI_UART_CFG_TX_ENABLE) + + /* If transmission is enabled at build time, disable transmission irqs. */ + R_BSP_IrqDisable(p_instance_ctrl->p_cfg->txi_irq); + R_BSP_IrqDisable(p_instance_ctrl->p_cfg->tei_irq); +#endif +#if SCI_UART_CFG_DMAC_SUPPORTED + + /* Close the lower level transfer instances. */ + r_sci_uart_transfer_close(p_instance_ctrl); +#endif + + /* Remove power to the channel. */ + /* Disable the clock to the SCI channel. */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_LPC_RESET); + R_BSP_MODULE_STOP(FSP_IP_SCI, p_instance_ctrl->p_cfg->channel); + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_LPC_RESET); + + 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. + * @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_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::reconfigure + * + * @note If 9-bit data length is specified at R_SCI_UART_Open call, p_dest must be aligned 16-bit boundary. + **********************************************************************************************************************/ +fsp_err_t R_SCI_UART_Read (uart_ctrl_t * const p_ctrl, uint8_t * const p_dest, uint32_t const bytes) +{ +#if (SCI_UART_CFG_RX_ENABLE) + sci_uart_instance_ctrl_t * p_instance_ctrl = (sci_uart_instance_ctrl_t *) p_ctrl; + fsp_err_t err = FSP_SUCCESS; + + #if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + err = r_sci_read_write_param_check(p_instance_ctrl, p_dest, bytes); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + FSP_ERROR_RETURN(0U == p_instance_ctrl->rx_dest_bytes, FSP_ERR_IN_USE); + #endif + + #if SCI_UART_CFG_DMAC_SUPPORTED + + /* Configure transfer instance to receive the requested number of bytes if transfer is used for reception. */ + if (NULL != p_instance_ctrl->p_cfg->p_transfer_rx) + { + p_instance_ctrl->p_cfg->p_transfer_rx->p_cfg->p_info->p_dest = (void *) p_dest; + p_instance_ctrl->p_cfg->p_transfer_rx->p_cfg->p_info->length = bytes; + + /* Disable the corresponding IRQ when transferring using DMAC. */ + R_BSP_IrqDisable(p_instance_ctrl->p_cfg->rxi_irq); + + err = p_instance_ctrl->p_cfg->p_transfer_rx->p_api->reconfigure(p_instance_ctrl->p_cfg->p_transfer_rx->p_ctrl, + p_instance_ctrl->p_cfg->p_transfer_rx->p_cfg->p_info); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + } + #endif + + /* Save the destination address and size for use in rxi_isr. */ + p_instance_ctrl->p_rx_dest = p_dest; + p_instance_ctrl->rx_dest_bytes = bytes; + + return err; +#else + FSP_PARAMETER_NOT_USED(p_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. + * @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_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::reconfigure + * + * @note If 9-bit data length is specified at R_SCI_UART_Open call, p_src must be aligned on a 16-bit boundary. + **********************************************************************************************************************/ +fsp_err_t R_SCI_UART_Write (uart_ctrl_t * const p_ctrl, uint8_t const * const p_src, uint32_t const bytes) +{ +#if (SCI_UART_CFG_TX_ENABLE) + sci_uart_instance_ctrl_t * p_instance_ctrl = (sci_uart_instance_ctrl_t *) p_ctrl; + #if SCI_UART_CFG_PARAM_CHECKING_ENABLE || SCI_UART_CFG_DMAC_SUPPORTED + fsp_err_t err = FSP_SUCCESS; + #endif + + #if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + err = r_sci_read_write_param_check(p_instance_ctrl, p_src, bytes); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + FSP_ERROR_RETURN(0U == p_instance_ctrl->tx_src_bytes, FSP_ERR_IN_USE); + #endif + + /* Transmit interrupts must be disabled to start with. */ + p_instance_ctrl->p_reg->CCR0 &= (uint32_t) ~(SCI_UART_CCR0_TIE_MASK | SCI_UART_CCR0_TEIE_MASK); + + p_instance_ctrl->tx_src_bytes = bytes - p_instance_ctrl->data_bytes; + p_instance_ctrl->p_tx_src = p_src + p_instance_ctrl->data_bytes; + + #if SCI_UART_CFG_DMAC_SUPPORTED + + /* If a transfer instance is used for transmission, reset the transfer instance to transmit the requested + * data. */ + if ((NULL != p_instance_ctrl->p_cfg->p_transfer_tx) && p_instance_ctrl->tx_src_bytes) + { + uint32_t num_transfers = p_instance_ctrl->tx_src_bytes; + p_instance_ctrl->tx_src_bytes = 0U; + + p_instance_ctrl->p_cfg->p_transfer_tx->p_cfg->p_info->p_src = (void const *) p_instance_ctrl->p_tx_src; + p_instance_ctrl->p_cfg->p_transfer_tx->p_cfg->p_info->length = num_transfers; + + /* Disable the corresponding IRQ when transferring using DMAC. */ + R_BSP_IrqDisable(p_instance_ctrl->p_cfg->txi_irq); + + err = p_instance_ctrl->p_cfg->p_transfer_tx->p_api->reconfigure(p_instance_ctrl->p_cfg->p_transfer_tx->p_ctrl, + p_instance_ctrl->p_cfg->p_transfer_tx->p_cfg->p_info); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + } + #endif + + /* Trigger a TXI interrupt. This triggers the transfer instance or a TXI interrupt if the transfer instance is + * not used. */ + p_instance_ctrl->p_reg->CCR0 |= SCI_UART_CCR0_TIE_MASK; + + /* The first byte is sent from this function to trigger the first TXI event. This + * method is used instead of setting TE and TIE at the same time as recommended in the hardware manual to avoid + * the one frame delay that occurs when the TE bit is set. */ + if (2U == p_instance_ctrl->data_bytes) + { + p_instance_ctrl->p_reg->TDR_b.TDAT = (*(uint16_t *) (p_src)) & SCI_UART_TDR_9BIT_MASK; + } + else + { + p_instance_ctrl->p_reg->TDR_b.TDAT = *(p_src); + } + + #if SCI_UART_CFG_FIFO_SUPPORT + + /* The behavior of the TDRE flag differs between when FIFO is used and not used. + * When using FIFO, clear the flag manually to detect the interrupt at the edge. */ + p_instance_ctrl->p_reg->CFCLR_b.TDREC = 1; + #endif + + return FSP_SUCCESS; +#else + FSP_PARAMETER_NOT_USED(p_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. + **********************************************************************************************************************/ +fsp_err_t R_SCI_UART_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) +{ + sci_uart_instance_ctrl_t * p_instance_ctrl = (sci_uart_instance_ctrl_t *) p_ctrl; + +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_instance_ctrl); + FSP_ASSERT(p_callback); + FSP_ERROR_RETURN(SCI_UART_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); +#endif + + /* Store callback and context */ + p_instance_ctrl->p_callback = p_callback; + p_instance_ctrl->p_context = p_context; + p_instance_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_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_UART_BaudSet (uart_ctrl_t * const p_ctrl, void const * const p_baud_setting) +{ + sci_uart_instance_ctrl_t * p_instance_ctrl = (sci_uart_instance_ctrl_t *) p_ctrl; + +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_instance_ctrl); + FSP_ERROR_RETURN(SCI_UART_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + + /* Verify that the On-Chip baud rate generator is currently selected. */ + FSP_ASSERT((p_instance_ctrl->p_reg->CCR3_b.CKE & 0x2) == 0U); +#endif + + /* Save CCR0 configurations except transmit interrupts. Resuming transmission after reconfiguring baud settings is + * not supported. */ + uint32_t preserved_ccr0 = p_instance_ctrl->p_reg->CCR0 & (uint32_t) ~(R_SCI0_CCR0_TIE_Msk | R_SCI0_CCR0_TEIE_Msk); + + /* Disables transmitter and receiver. This terminates any in-progress transmission. */ + p_instance_ctrl->p_reg->CCR0 = preserved_ccr0 & + (uint32_t) ~(R_SCI0_CCR0_TE_Msk | R_SCI0_CCR0_RE_Msk | R_SCI0_CCR0_RIE_Msk); + FSP_HARDWARE_REGISTER_WAIT(p_instance_ctrl->p_reg->CCR0_b.RE, 0); + FSP_HARDWARE_REGISTER_WAIT(p_instance_ctrl->p_reg->CCR0_b.TE, 0); + p_instance_ctrl->p_tx_src = NULL; + + /* Apply new baud rate register settings. */ + r_sci_uart_baud_set(p_instance_ctrl->p_reg, p_baud_setting); + + /* Restore all settings except transmit interrupts. */ + p_instance_ctrl->p_reg->CCR0 = preserved_ccr0; + FSP_HARDWARE_REGISTER_WAIT((p_instance_ctrl->p_reg->CCR0 & R_SCI0_CCR0_RE_Msk), + (preserved_ccr0 & R_SCI0_CCR0_RE_Msk)); + FSP_HARDWARE_REGISTER_WAIT((p_instance_ctrl->p_reg->CCR0 & R_SCI0_CCR0_TE_Msk), + (preserved_ccr0 & R_SCI0_CCR0_TE_Msk)); + + 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_UART_InfoGet (uart_ctrl_t * const p_ctrl, uart_info_t * const p_info) +{ +#if SCI_UART_CFG_PARAM_CHECKING_ENABLE || SCI_UART_CFG_DMAC_SUPPORTED + sci_uart_instance_ctrl_t * p_instance_ctrl = (sci_uart_instance_ctrl_t *) p_ctrl; +#else + FSP_PARAMETER_NOT_USED(p_ctrl); +#endif + +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_instance_ctrl); + FSP_ASSERT(p_info); + FSP_ERROR_RETURN(SCI_UART_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); +#endif + + p_info->read_bytes_max = SCI_UART_MAX_READ_WRITE_NO_DMAC; + p_info->write_bytes_max = SCI_UART_MAX_READ_WRITE_NO_DMAC; + +#if (SCI_UART_CFG_RX_ENABLE) + + /* Store number of bytes that can be read at a time. */ + #if SCI_UART_CFG_DMAC_SUPPORTED + if (NULL != p_instance_ctrl->p_cfg->p_transfer_rx) + { + p_info->read_bytes_max = SCI_UART_DMAC_MAX_TRANSFER; + } + #endif +#endif + +#if (SCI_UART_CFG_TX_ENABLE) + + /* Store number of bytes that can be written at a time. */ + #if SCI_UART_CFG_DMAC_SUPPORTED + if (NULL != p_instance_ctrl->p_cfg->p_transfer_tx) + { + p_info->write_bytes_max = SCI_UART_DMAC_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_UART_Abort (uart_ctrl_t * const p_ctrl, uart_dir_t communication_to_abort) +{ + sci_uart_instance_ctrl_t * p_instance_ctrl = (sci_uart_instance_ctrl_t *) p_ctrl; + fsp_err_t err = FSP_ERR_UNSUPPORTED; + +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_instance_ctrl); + FSP_ERROR_RETURN(SCI_UART_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); +#endif + +#if (SCI_UART_CFG_TX_ENABLE) + if (UART_DIR_TX & communication_to_abort) + { + err = FSP_SUCCESS; + p_instance_ctrl->p_reg->CCR0 &= (uint32_t) ~(SCI_UART_CCR0_TIE_MASK | SCI_UART_CCR0_TEIE_MASK); + + /* Make sure no transmission is in progress. */ + FSP_HARDWARE_REGISTER_WAIT(p_instance_ctrl->p_reg->CSR_b.TEND, 1U); + + #if SCI_UART_CFG_DMAC_SUPPORTED + if (NULL != p_instance_ctrl->p_cfg->p_transfer_tx) + { + err = p_instance_ctrl->p_cfg->p_transfer_tx->p_api->disable(p_instance_ctrl->p_cfg->p_transfer_tx->p_ctrl); + + /* Now that the transfer using DMAC is finished, enable the corresponding IRQ. */ + R_BSP_IrqEnable(p_instance_ctrl->p_cfg->txi_irq); + } + #endif + + #if SCI_UART_CFG_FIFO_SUPPORT + if (0U != p_instance_ctrl->fifo_depth) + { + /* Reset the transmit fifo */ + p_instance_ctrl->p_reg->FCR_b.TFRST = 1U; + } + #endif + p_instance_ctrl->tx_src_bytes = 0U; + + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + } +#endif +#if (SCI_UART_CFG_RX_ENABLE) + if (UART_DIR_RX & communication_to_abort) + { + err = FSP_SUCCESS; + + p_instance_ctrl->rx_dest_bytes = 0U; + + #if SCI_UART_CFG_DMAC_SUPPORTED + if (NULL != p_instance_ctrl->p_cfg->p_transfer_rx) + { + err = p_instance_ctrl->p_cfg->p_transfer_rx->p_api->disable(p_instance_ctrl->p_cfg->p_transfer_rx->p_ctrl); + + /* Now that the transfer using DMAC is finished, enable the corresponding IRQ. */ + R_BSP_IrqEnable(p_instance_ctrl->p_cfg->rxi_irq); + } + #endif + + #if SCI_UART_CFG_FIFO_SUPPORT + if (0U != p_instance_ctrl->fifo_depth) + { + /* Reset the receive fifo */ + p_instance_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 or remaining_bytes 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_UART_ReadStop (uart_ctrl_t * const p_ctrl, uint32_t * remaining_bytes) +{ + sci_uart_instance_ctrl_t * p_instance_ctrl = (sci_uart_instance_ctrl_t *) p_ctrl; + +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_instance_ctrl); + FSP_ASSERT(remaining_bytes); + FSP_ERROR_RETURN(SCI_UART_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); +#endif + +#if (SCI_UART_CFG_RX_ENABLE) + *remaining_bytes = p_instance_ctrl->rx_dest_bytes; + p_instance_ctrl->rx_dest_bytes = 0U; + #if SCI_UART_CFG_DMAC_SUPPORTED + if (NULL != p_instance_ctrl->p_cfg->p_transfer_rx) + { + fsp_err_t err = p_instance_ctrl->p_cfg->p_transfer_rx->p_api->disable( + p_instance_ctrl->p_cfg->p_transfer_rx->p_ctrl); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + + /* Now that the transfer using DMAC is finished, enable the corresponding IRQ. */ + R_BSP_IrqEnable(p_instance_ctrl->p_cfg->rxi_irq); + + transfer_properties_t transfer_info; + err = p_instance_ctrl->p_cfg->p_transfer_rx->p_api->infoGet(p_instance_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_UART_CFG_FIFO_SUPPORT + if (0U != p_instance_ctrl->fifo_depth) + { + /* Reset the receive fifo */ + p_instance_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] p_baud_target Baudrate calculation configuration. + * @param[in] clock_source Clock source (PCLKM or SCInASYNCCLK) used for baudrate calculation. + * @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%. + * Clock source frequency could not be get. + **********************************************************************************************************************/ +fsp_err_t R_SCI_UART_BaudCalculate (sci_uart_baud_calculation_t const * const p_baud_target, + sci_uart_clock_source_t clock_source, + sci_baud_setting_t * const p_baud_setting) +{ +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(p_baud_target); + FSP_ASSERT(p_baud_setting); + FSP_ERROR_RETURN(SCI_UART_MAX_BAUD_RATE_ERROR_X_1000 >= p_baud_target->baud_rate_error_x_1000, + FSP_ERR_INVALID_ARGUMENT); + FSP_ERROR_RETURN((0U != p_baud_target->baudrate), FSP_ERR_INVALID_ARGUMENT); +#endif + + p_baud_setting->baudrate_bits_b.brr = SCI_UART_BRR_MAX; + p_baud_setting->baudrate_bits_b.brme = 0U; + p_baud_setting->baudrate_bits_b.mddr = SCI_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_UART_100_PERCENT_X_1000; + uint32_t hit_mddr = 0U; + uint32_t divisor = 0U; + + uint32_t freq_hz = 0U; + if (SCI_UART_CLOCK_SOURCE_PCLKM == clock_source) + { + freq_hz = R_FSP_SystemClockHzGet(FSP_PRIV_CLOCK_PCLKM); + } + else + { + freq_hz = + R_FSP_SystemClockHzGet((fsp_priv_clock_t) ((uint8_t) FSP_PRIV_CLOCK_PCLKSCI0 + (uint8_t) clock_source)); + } + + FSP_ERROR_RETURN(0U != freq_hz, FSP_ERR_INVALID_ARGUMENT); + + for (uint32_t select_16_base_clk_cycles = 0U; + select_16_base_clk_cycles <= 1U && (hit_bit_err > ((int32_t) p_baud_target->baud_rate_error_x_1000)); + select_16_base_clk_cycles++) + { + for (uint32_t i = 0U; i < SCI_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] * p_baud_target->baudrate; + uint32_t temp_brr = freq_hz / divisor; + + if (temp_brr <= (SCI_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_UART_100_PERCENT_X_1000) / + err_divisor) - SCI_UART_100_PERCENT_X_1000); + + uint32_t mddr = 0U; + if (p_baud_target->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 256. + * MDDR = ((div_coefficient * baud * 256) * (BRR + 1)) / PCLK */ + mddr = (uint32_t) err_divisor / (freq_hz / SCI_UART_MDDR_MAX); + + /* The maximum value that could result from the calculation above is 256, which is a valid MDDR + * value, so only the lower bound is checked. */ + if (mddr < SCI_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_UART_100_PERCENT_X_1000) * (int32_t) mddr) / + SCI_UART_MDDR_DIVISOR) - SCI_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 (p_baud_target->bitrate_modulation) + { + p_baud_setting->baudrate_bits_b.brme = 1U; + p_baud_setting->baudrate_bits_b.mddr = (uint8_t) 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) p_baud_target->baud_rate_error_x_1000), FSP_ERR_INVALID_ARGUMENT); + + return FSP_SUCCESS; +} + +/*******************************************************************************************************************//** + * @} (end addtogroup SCI_UART) + **********************************************************************************************************************/ + +/*********************************************************************************************************************** + * Private Functions + **********************************************************************************************************************/ + +#if (SCI_UART_CFG_PARAM_CHECKING_ENABLE) + +/*******************************************************************************************************************//** + * Parameter error check function for read/write. + * + * @param[in] p_instance_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_read_write_param_check (sci_uart_instance_ctrl_t const * const p_instance_ctrl, + uint8_t const * const addr, + uint32_t const bytes) +{ + FSP_ASSERT(p_instance_ctrl); + FSP_ASSERT(addr); + FSP_ASSERT(0U != bytes); + FSP_ERROR_RETURN(SCI_UART_OPEN == p_instance_ctrl->open, FSP_ERR_NOT_OPEN); + + if (2U == p_instance_ctrl->data_bytes) + { + /* Do not allow odd buffer address if data length is 9 bits. */ + FSP_ERROR_RETURN((0U == ((uint32_t) addr & SCI_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_UART_CFG_DMAC_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_uart_transfer_configure (sci_uart_instance_ctrl_t * const p_instance_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_UART_CFG_PARAM_CHECKING_ENABLE) + FSP_ASSERT(NULL != p_transfer->p_api); + FSP_ASSERT(NULL != p_transfer->p_ctrl); + 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 + + /* Casting for compatibility with 7 or 8 bit mode. */ + *p_transfer_reg = sci_buffer_address; + + transfer_info_t * p_info = p_transfer->p_cfg->p_info; + if (UART_DATA_BITS_9 == p_instance_ctrl->p_cfg->data_bits) + { + p_info->src_size = TRANSFER_SIZE_2_BYTE; + p_info->dest_size = TRANSFER_SIZE_2_BYTE; + } + else + { + p_info->src_size = TRANSFER_SIZE_1_BYTE; + p_info->dest_size = TRANSFER_SIZE_1_BYTE; + } + + 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_UART_CFG_DMAC_SUPPORTED + +/*******************************************************************************************************************//** + * Configures UART related transfer drivers (if enabled). + * + * @param[in] p_instance_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_uart_transfer_open (sci_uart_instance_ctrl_t * const p_instance_ctrl, + uart_cfg_t const * const p_cfg) +{ + fsp_err_t err = FSP_SUCCESS; + + #if (SCI_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->mode = TRANSFER_MODE_NORMAL; + p_info->src_addr_mode = TRANSFER_ADDR_MODE_FIXED; + p_info->dest_addr_mode = TRANSFER_ADDR_MODE_INCREMENTED; + + err = + r_sci_uart_transfer_configure(p_instance_ctrl, + p_cfg->p_transfer_rx, + (uint32_t *) &p_info->p_src, + (uint32_t) &(p_instance_ctrl->p_reg->RDR)); + FSP_ERROR_RETURN(FSP_SUCCESS == err, err); + } + #endif + #if (SCI_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->mode = TRANSFER_MODE_NORMAL; + p_info->src_addr_mode = TRANSFER_ADDR_MODE_INCREMENTED; + p_info->dest_addr_mode = TRANSFER_ADDR_MODE_FIXED; + + err = + r_sci_uart_transfer_configure(p_instance_ctrl, + p_cfg->p_transfer_tx, + (uint32_t *) &p_info->p_dest, + (uint32_t) &p_instance_ctrl->p_reg->TDR); + + #if (SCI_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_instance_ctrl Pointer to UART control structure + * @param[in] p_cfg Pointer to UART specific configuration structure + **********************************************************************************************************************/ +static void r_sci_uart_config_set (sci_uart_instance_ctrl_t * const p_instance_ctrl, uart_cfg_t const * const p_cfg) +{ + /* CCR3 register setting. */ + uint32_t ccr3 = SCI_UART_CCR3_DEFAULT_VALUE; + +#if SCI_UART_CFG_FIFO_SUPPORT + ccr3 |= (1U << SCI_UART_CCR3_FM_OFFSET); + + /* Configure FIFO related registers. */ + r_sci_uart_fifo_cfg(p_instance_ctrl); +#else + + /* If fifo support is disabled and the current channel supports fifo make sure it's disabled. */ + if (BSP_FEATURE_SCI_UART_FIFO_CHANNELS & (1U << p_cfg->channel)) + { + p_instance_ctrl->p_reg->FCR = SCI_UART_FCR_DEFAULT_VALUE; + } +#endif + + /* Configure data size. */ + if (UART_DATA_BITS_7 == p_cfg->data_bits) + { + ccr3 |= (1U << SCI_UART_CCR3_CHR_OFFSET); + } + else if (UART_DATA_BITS_9 == p_cfg->data_bits) + { + ccr3 &= ~(1U << (SCI_UART_CCR3_CHR_OFFSET + 1)); + } + else + { + /* Do nothing. Default is 8-bit mode. */ + } + + /* Configure stop bits. */ + ccr3 |= (uint32_t) p_cfg->stop_bits << SCI_UART_CCR3_STP_OFFSET; + + /* Configure CKE bits. */ + sci_uart_extended_cfg_t * p_extend = (sci_uart_extended_cfg_t *) p_cfg->p_extend; + ccr3 |= (p_extend->clock & SCI_UART_CCR3_CKE_VALUE_MASK) << SCI_UART_CCR3_CKE_OFFSET; + + /* Starts reception on falling edge of RXD if enabled in extension (otherwise reception starts at low level + * of RXD). */ + ccr3 |= (p_extend->rx_edge_start & 1U) << SCI_UART_CCR3_RxDSEL_OFFSET; + + ccr3 |= ((uint32_t) p_extend->rs485_setting.enable << R_SCI0_CCR3_DEN_Pos) & R_SCI0_CCR3_DEN_Msk; + + /* Configure SPEN bit. */ + if (SCI_UART_CLOCK_SOURCE_PCLKM == p_extend->clock_source) + { + ccr3 |= 1U << SCI_UART_CCR3_BPEN_OFFSET; + } + + /* Write to the CCR3 register. */ + p_instance_ctrl->p_reg->CCR3 = ccr3; + + /* CCR1 register setting. */ + uint32_t ccr1 = SCI_UART_CCR1_DEFAULT_VALUE; + + /* Configure flow control pin. */ + ccr1 |= ((uint32_t) (p_extend->flow_control << R_SCI0_CCR1_CTSE_Pos) & SCI_UART_CCR1_FLOW_CTSRTS_MASK); + + /* Set the default level of the TX pin to 1. */ + ccr1 |= (uint32_t) (1U << SCI_UART_CCR1_SPB2DT_BIT | SCI_UART_CCR1_OUTPUT_ENABLE_MASK); + + /* Configure parity bits. */ + if (0 != p_cfg->parity) + { + ccr1 |= + (((UART_PARITY_EVEN == + p_cfg->parity) ? 1U : 3U) << SCI_UART_CCR1_PARITY_OFFSET) & SCI_UART_CCR1_PARITY_MASK; + } + + if (SCI_UART_NOISE_CANCELLATION_DISABLE != p_extend->noise_cancel) + { + /* Select noise filter clock */ + ccr1 |= (uint32_t) (((p_extend->noise_cancel & 0x07U) - 1) & SCI_UART_CCR1_NFCS_VALUE_MASK) << + SCI_UART_CCR1_NFCS_OFFSET; + + /* Enables the noise cancellation */ + ccr1 |= (uint32_t) 1 << SCI_UART_CCR1_NFEN_OFFSET; + } + + p_instance_ctrl->p_reg->CCR1 = ccr1; + + if ((SCI_UART_CLOCK_EXT8X == p_extend->clock) || (SCI_UART_CLOCK_EXT16X == p_extend->clock)) + { + /* Use external clock for baud rate */ + p_instance_ctrl->p_reg->CCR2_b.BRR = SCI_UART_BRR_DEFAULT_VALUE; + + if (SCI_UART_CLOCK_EXT8X == p_extend->clock) + { + /* Set baud rate as (external clock / 8) */ + p_instance_ctrl->p_reg->CCR2 |= 1U << SCI_UART_CCR2_ABCS_OFFSET; + } + } + else + { + /* Set the baud rate settings for the internal baud rate generator. */ + r_sci_uart_baud_set(p_instance_ctrl->p_reg, p_extend->p_baud_setting); + } + + /* Configure RS-485 DE assertion settings. */ + uint32_t dcr = ((uint32_t) (p_extend->rs485_setting.polarity << R_SCI0_DCR_DEPOL_Pos)) & R_SCI0_DCR_DEPOL_Msk; + dcr |= ((uint32_t) p_extend->rs485_setting.assertion_time << R_SCI0_DCR_DEAST_Pos) & + R_SCI0_DCR_DEAST_Msk; + dcr |= ((uint32_t) p_extend->rs485_setting.negation_time << R_SCI0_DCR_DENGT_Pos) & + R_SCI0_DCR_DENGT_Msk; + p_instance_ctrl->p_reg->DCR = dcr; +} + +#if SCI_UART_CFG_FIFO_SUPPORT + +/*******************************************************************************************************************//** + * Resets FIFO related registers. + * + * @param[in] p_instance_ctrl Pointer to UART instance control + * @param[in] p_cfg Pointer to UART configuration structure + **********************************************************************************************************************/ +static void r_sci_uart_fifo_cfg (sci_uart_instance_ctrl_t * const p_instance_ctrl) +{ + if (0U != p_instance_ctrl->fifo_depth) + { + /* Set the tx and rx reset bits */ + uint32_t fcr = 0U; + + #if (SCI_UART_CFG_TX_ENABLE) + #if SCI_UART_CFG_DMAC_SUPPORTED + if (NULL != p_instance_ctrl->p_cfg->p_transfer_tx) + { + /* When DMAC transfer is used, set TTRG[4:0] = 0x0F. */ + fcr |= SCI_UART_FCR_TTRG_DMAC_VALUE << SCI_UART_FCR_TTRG_OFFSET; + } + #endif + #endif + + #if (SCI_UART_CFG_RX_ENABLE) + #if SCI_UART_CFG_DMAC_SUPPORTED + + /* If DMAC is used keep the receive trigger at the default level of 0. */ + if (NULL == p_instance_ctrl->p_cfg->p_transfer_rx) + #endif + { + /* Otherwise, set receive trigger number as configured by the user. */ + sci_uart_extended_cfg_t const * p_extend = p_instance_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. */ + fcr |= (((p_instance_ctrl->fifo_depth - 1U) & p_extend->rx_fifo_trigger) & SCI_UART_FCR_TRIGGER_MASK) << + SCI_UART_FCR_RTRG_OFFSET; + } + + /* RTS asserts when the amount of received data stored in the fifo is equal or less than this value. */ + fcr |= ((p_instance_ctrl->fifo_depth - 1U) & SCI_UART_FCR_TRIGGER_MASK) << SCI_UART_FCR_RSTRG_OFFSET; + #endif + + /* Set the FCR and reset the fifos. */ + p_instance_ctrl->p_reg->FCR = (uint32_t) (fcr | SCI_UART_FCR_RESET_TX_RX); + } +} + +#endif + +/*******************************************************************************************************************//** + * Sets interrupt priority and initializes vector info. + * + * @param[in] p_instance_ctrl Pointer to driver control block + * @param[in] ipl Interrupt priority level + * @param[in] irq IRQ number for this interrupt + **********************************************************************************************************************/ +static void r_sci_irq_cfg (sci_uart_instance_ctrl_t * const p_instance_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_IrqCfg(irq, ipl, p_instance_ctrl); +} + +/*******************************************************************************************************************//** + * Sets interrupt priority and initializes vector info for all interrupts. + * + * @param[in] p_instance_ctrl Pointer to UART instance control block + * @param[in] p_cfg Pointer to UART specific configuration structure + **********************************************************************************************************************/ +static void r_sci_irqs_cfg (sci_uart_instance_ctrl_t * const p_instance_ctrl, uart_cfg_t const * const p_cfg) +{ +#if (SCI_UART_CFG_RX_ENABLE) + + /* ERI is optional. */ + r_sci_irq_cfg(p_instance_ctrl, p_cfg->eri_ipl, p_cfg->eri_irq); + r_sci_irq_cfg(p_instance_ctrl, p_cfg->rxi_ipl, p_cfg->rxi_irq); +#endif +#if (SCI_UART_CFG_TX_ENABLE) + r_sci_irq_cfg(p_instance_ctrl, p_cfg->txi_ipl, p_cfg->txi_irq); + + r_sci_irq_cfg(p_instance_ctrl, p_cfg->tei_ipl, p_cfg->tei_irq); +#endif +} + +#if SCI_UART_CFG_DMAC_SUPPORTED + +/*******************************************************************************************************************//** + * Closes transfer interfaces. + * + * @param[in] p_instance_ctrl Pointer to UART instance control block + **********************************************************************************************************************/ +static void r_sci_uart_transfer_close (sci_uart_instance_ctrl_t * p_instance_ctrl) +{ + #if (SCI_UART_CFG_RX_ENABLE) + if (NULL != p_instance_ctrl->p_cfg->p_transfer_rx) + { + p_instance_ctrl->p_cfg->p_transfer_rx->p_api->close(p_instance_ctrl->p_cfg->p_transfer_rx->p_ctrl); + } + #endif + #if (SCI_UART_CFG_TX_ENABLE) + if (NULL != p_instance_ctrl->p_cfg->p_transfer_tx) + { + p_instance_ctrl->p_cfg->p_transfer_tx->p_api->close(p_instance_ctrl->p_cfg->p_transfer_tx->p_ctrl); + } + #endif +} + +#endif + +/*******************************************************************************************************************//** + * Changes baud rate based on predetermined register settings. + * + * @param[in] p_sci_reg Base pointer for SCI registers + * @param[in] p_baud_setting Pointer to other divisor related settings + * + * @note The transmitter and receiver (TE and RE bits in SCR) must be disabled prior to calling this function. + **********************************************************************************************************************/ +static void r_sci_uart_baud_set (R_SCI0_Type * p_sci_reg, sci_baud_setting_t const * const p_baud_setting) +{ + p_sci_reg->CCR2 = (uint32_t) ((p_sci_reg->CCR2 & ~(SCI_UART_CCR2_BAUD_SETTING_MASK)) | + (p_baud_setting->baudrate_bits & SCI_UART_CCR2_BAUD_SETTING_MASK)); +} + +/*******************************************************************************************************************//** + * Calls user callback. + * + * @param[in] p_instance_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_uart_call_callback (sci_uart_instance_ctrl_t * p_instance_ctrl, uint32_t data, uart_event_t event) +{ + uart_callback_args_t args; + + /* Store callback arguments in memory provided by user if available. */ + uart_callback_args_t * p_args = p_instance_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_instance_ctrl->p_cfg->channel; + p_args->data = data; + p_args->event = event; + p_args->p_context = p_instance_ctrl->p_context; + + p_instance_ctrl->p_callback(p_args); + + if (NULL != p_instance_ctrl->p_callback_memory) + { + /* Restore callback memory in case this is a nested interrupt. */ + *p_instance_ctrl->p_callback_memory = args; + } +} + +#if (SCI_UART_CFG_TX_ENABLE) + +/*******************************************************************************************************************//** + * Common processing for TXI interrupt and DMA transfer completion interrupt in UART write mode. This function writes + * the next data. After the last data byte is written, this function disables the TXI interrupt and enables the TEI + * (transmit end) interrupt. + **********************************************************************************************************************/ +static void sci_uart_txi_common (sci_uart_instance_ctrl_t * p_instance_ctrl) +{ + if ((NULL == p_instance_ctrl->p_cfg->p_transfer_tx) && (0U != p_instance_ctrl->tx_src_bytes)) + { + if (2U == p_instance_ctrl->data_bytes) + { + p_instance_ctrl->p_reg->TDR_b.TDAT = (*(uint16_t *) (p_instance_ctrl->p_tx_src)) & SCI_UART_TDR_9BIT_MASK; + } + else + { + p_instance_ctrl->p_reg->TDR_b.TDAT = *(p_instance_ctrl->p_tx_src); + } + + /* Update pointer to the next data and number of remaining bytes in the control block. */ + p_instance_ctrl->tx_src_bytes -= p_instance_ctrl->data_bytes; + p_instance_ctrl->p_tx_src += p_instance_ctrl->data_bytes; + + /* If transfer is not used, write data until FIFO is full. */ + #if SCI_UART_CFG_FIFO_SUPPORT + if (0U != p_instance_ctrl->fifo_depth) + { + uint32_t fifo_count = p_instance_ctrl->p_reg->FTSR_b.T; + for (uint32_t cnt = fifo_count; (cnt < p_instance_ctrl->fifo_depth) && p_instance_ctrl->tx_src_bytes; cnt++) + { + if (2U == p_instance_ctrl->data_bytes) + { + p_instance_ctrl->p_reg->TDR_b.TDAT = (*(uint16_t *) (p_instance_ctrl->p_tx_src)) & + SCI_UART_TDR_9BIT_MASK; + } + else + { + p_instance_ctrl->p_reg->TDR_b.TDAT = *(p_instance_ctrl->p_tx_src); + } + + p_instance_ctrl->tx_src_bytes -= p_instance_ctrl->data_bytes; + p_instance_ctrl->p_tx_src += p_instance_ctrl->data_bytes; + } + + /* Clear TDRE flag */ + p_instance_ctrl->p_reg->CFCLR_b.TDREC = 1; + } + #endif + } + + if (0U == p_instance_ctrl->tx_src_bytes) + { + /* After all data has been transmitted, disable transmit interrupts and enable the transmit end interrupt. */ + uint32_t ccr0_temp = p_instance_ctrl->p_reg->CCR0; + ccr0_temp |= SCI_UART_CCR0_TEIE_MASK; + ccr0_temp &= (uint32_t) ~SCI_UART_CCR0_TIE_MASK; + p_instance_ctrl->p_reg->CCR0 = ccr0_temp; + + p_instance_ctrl->p_tx_src = NULL; + r_sci_uart_call_callback(p_instance_ctrl, 0U, UART_EVENT_TX_DATA_EMPTY); + } +} + +/*******************************************************************************************************************//** + * TXI interrupt handler 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 function calls sci_uart_txi_common(). + **********************************************************************************************************************/ +void sci_uart_txi_isr (void) +{ + SCI_UART_CFG_MULTIPLEX_INTERRUPT_ENABLE; + + /* Save context if RTOS is used */ + FSP_CONTEXT_SAVE; + + IRQn_Type irq = R_FSP_CurrentIrqGet(); + + /* Recover ISR context saved in open. */ + sci_uart_instance_ctrl_t * p_instance_ctrl = (sci_uart_instance_ctrl_t *) R_FSP_IsrContextGet(irq); + + sci_uart_txi_common(p_instance_ctrl); + + /* Restore context if RTOS is used */ + FSP_CONTEXT_RESTORE; + + SCI_UART_CFG_MULTIPLEX_INTERRUPT_DISABLE; +} + +/*******************************************************************************************************************//** + * Callback that must be called after a TX DMAC transfer completes. + * + * @param[in] p_instance_ctrl Pointer to SCI_UART instance control block + **********************************************************************************************************************/ +void sci_uart_tx_dmac_callback (sci_uart_instance_ctrl_t * p_instance_ctrl) +{ + SCI_UART_CFG_MULTIPLEX_INTERRUPT_ENABLE; + + /* Now that the transfer using DMAC is finished, enable the corresponding IRQ. */ + R_BSP_IrqEnable(p_instance_ctrl->p_cfg->txi_irq); + + sci_uart_txi_common(p_instance_ctrl); + + SCI_UART_CFG_MULTIPLEX_INTERRUPT_DISABLE; +} + +#endif + +#if (SCI_UART_CFG_RX_ENABLE) + +/*******************************************************************************************************************//** + * Common processing for RXI interrupt and DMA transfer completion interrupt in UART read mode. 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_UART_Read() + * if a transfer instance is used for reception. + * - UART_EVENT_RX_CHAR: Data is received asynchronously (read has not been called) + * + * This function also calls the callback function for RTS pin control if it is registered in R_SCI_UART_Open(). This is + * special functionality to expand SCI hardware capability and make RTS/CTS hardware flow control possible. If macro + * 'SCI_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 called again just before leaving this function to set the RTS pin low. + * @retval none + **********************************************************************************************************************/ +static void sci_uart_rxi_common (sci_uart_instance_ctrl_t * p_instance_ctrl) +{ + #if SCI_UART_CFG_DMAC_SUPPORTED + if ((p_instance_ctrl->p_cfg->p_transfer_rx == NULL) || (0 == p_instance_ctrl->rx_dest_bytes)) + #endif + { + #if (SCI_UART_CFG_FLOW_CONTROL_SUPPORT) + if (p_instance_ctrl->flow_pin != (bsp_io_port_pin_t) SCI_UART_INVALID_16BIT_PARAM) + { + R_BSP_PinAccessEnable(); + + /* Pause the transmission of data from the other device. */ + R_BSP_PinSet(R_BSP_IoRegionGet(p_instance_ctrl->flow_pin), p_instance_ctrl->flow_pin); + } + #endif + + uint32_t data; + #if SCI_UART_CFG_FIFO_SUPPORT + do + { + if ((p_instance_ctrl->fifo_depth > 0U)) + { + if (p_instance_ctrl->p_reg->FRSR_b.R > 0U) + { + data = p_instance_ctrl->p_reg->RDR_b.RDAT; + } + else + { + break; + } + } + else + { + data = p_instance_ctrl->p_reg->RDR_b.RDAT; + } + + #else + { + data = p_instance_ctrl->p_reg->RDR_b.RDAT; + #endif + if (0 == p_instance_ctrl->rx_dest_bytes) + { + /* Call user callback with the data. */ + r_sci_uart_call_callback(p_instance_ctrl, data, UART_EVENT_RX_CHAR); + } + else + { + memcpy((void *) p_instance_ctrl->p_rx_dest, &data, p_instance_ctrl->data_bytes); + p_instance_ctrl->p_rx_dest += p_instance_ctrl->data_bytes; + p_instance_ctrl->rx_dest_bytes -= p_instance_ctrl->data_bytes; + + if (0 == p_instance_ctrl->rx_dest_bytes) + { + r_sci_uart_call_callback(p_instance_ctrl, 0U, UART_EVENT_RX_COMPLETE); + } + } + + #if SCI_UART_CFG_FIFO_SUPPORT + } while ((p_instance_ctrl->fifo_depth > 0U) && ((p_instance_ctrl->p_reg->FRSR_b.R) > 0U)); + + if (p_instance_ctrl->fifo_depth > 0U) + { + p_instance_ctrl->p_reg->CFCLR_b.RDRFC = 1; + } + + #else + } + #endif + #if (SCI_UART_CFG_FLOW_CONTROL_SUPPORT) + if (p_instance_ctrl->flow_pin != (bsp_io_port_pin_t) SCI_UART_INVALID_16BIT_PARAM) + { + /* Resume the transmission of data from the other device. */ + R_BSP_PinClear(R_BSP_IoRegionGet(p_instance_ctrl->flow_pin), p_instance_ctrl->flow_pin); + R_BSP_PinAccessDisable(); + } + #endif + } + + #if SCI_UART_CFG_DMAC_SUPPORTED + else + { + p_instance_ctrl->rx_dest_bytes = 0; + p_instance_ctrl->p_rx_dest = NULL; + + /* Call callback */ + r_sci_uart_call_callback(p_instance_ctrl, 0U, UART_EVENT_RX_COMPLETE); + } + #endif +} + +/*******************************************************************************************************************//** + * RXI interrupt handler for UART mode. RXI interrupt happens when data arrives to the data register or the FIFO + * register. This function calls sci_uart_rxi_common(). + **********************************************************************************************************************/ +void sci_uart_rxi_isr (void) +{ + SCI_UART_CFG_MULTIPLEX_INTERRUPT_ENABLE; + + /* Save context if RTOS is used */ + FSP_CONTEXT_SAVE; + + IRQn_Type irq = R_FSP_CurrentIrqGet(); + + /* Recover ISR context saved in open. */ + sci_uart_instance_ctrl_t * p_instance_ctrl = (sci_uart_instance_ctrl_t *) R_FSP_IsrContextGet(irq); + + sci_uart_rxi_common(p_instance_ctrl); + + /* Restore context if RTOS is used */ + FSP_CONTEXT_RESTORE; + + SCI_UART_CFG_MULTIPLEX_INTERRUPT_DISABLE; +} + +/*******************************************************************************************************************//** + * Callback that must be called after a RX DMAC transfer completes. + * + * @param[in] p_instance_ctrl Pointer to SCI_UART instance control block + **********************************************************************************************************************/ +void sci_uart_rx_dmac_callback (sci_uart_instance_ctrl_t * p_instance_ctrl) +{ + SCI_UART_CFG_MULTIPLEX_INTERRUPT_ENABLE; + + /* Now that the transfer using DMAC is finished, enable the corresponding IRQ. */ + R_BSP_IrqEnable(p_instance_ctrl->p_cfg->rxi_irq); + + sci_uart_rxi_common(p_instance_ctrl); + + SCI_UART_CFG_MULTIPLEX_INTERRUPT_DISABLE; +} + +#endif + +#if (SCI_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_UART_Open()). + **********************************************************************************************************************/ +void sci_uart_tei_isr (void) +{ + SCI_UART_CFG_MULTIPLEX_INTERRUPT_ENABLE; + + /* Save context if RTOS is used */ + FSP_CONTEXT_SAVE; + + IRQn_Type irq = R_FSP_CurrentIrqGet(); + + /* Recover ISR context saved in open. */ + sci_uart_instance_ctrl_t * p_instance_ctrl = (sci_uart_instance_ctrl_t *) R_FSP_IsrContextGet(irq); + + /* Receiving TEI(transmit end interrupt) means the completion of transmission, so call callback function here. */ + p_instance_ctrl->p_reg->CCR0 &= (uint32_t) ~(SCI_UART_CCR0_TIE_MASK | SCI_UART_CCR0_TEIE_MASK); + + /* Dummy read to ensure that interrupts are disabled. */ + volatile uint32_t dummy = p_instance_ctrl->p_reg->CCR0; + FSP_PARAMETER_NOT_USED(dummy); + + r_sci_uart_call_callback(p_instance_ctrl, 0U, UART_EVENT_TX_COMPLETE); + + /* Restore context if RTOS is used */ + FSP_CONTEXT_RESTORE; + + SCI_UART_CFG_MULTIPLEX_INTERRUPT_DISABLE; +} + +#endif + +#if (SCI_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_UART_Open() with the event code that triggered the interrupt. + **********************************************************************************************************************/ +void sci_uart_eri_isr (void) +{ + SCI_UART_CFG_MULTIPLEX_INTERRUPT_ENABLE; + + /* Save context if RTOS is used */ + FSP_CONTEXT_SAVE; + + IRQn_Type irq = R_FSP_CurrentIrqGet(); + + /* Recover ISR context saved in open. */ + sci_uart_instance_ctrl_t * p_instance_ctrl = (sci_uart_instance_ctrl_t *) R_FSP_IsrContextGet(irq); + + uint32_t data = 0U; + uart_event_t event = (uart_event_t) 0U; + + /* Read data. */ + data = p_instance_ctrl->p_reg->RDR_b.RDAT; + + /* Determine cause of error. */ + uint32_t csr = p_instance_ctrl->p_reg->CSR & SCI_UART_RCVR_ERR_MASK; + + if (csr & SCI_UART_CSR_ORER_MASK) + { + event |= UART_EVENT_ERR_OVERFLOW; + } + + if (csr & SCI_UART_CSR_FER_MASK) + { + event |= UART_EVENT_ERR_FRAMING; + } + + if (csr & SCI_UART_CSR_PER_MASK) + { + event |= UART_EVENT_ERR_PARITY; + } + + /* Check if there is a break detected. */ + if ((UART_EVENT_ERR_FRAMING == (event & UART_EVENT_ERR_FRAMING)) && (0U == p_instance_ctrl->p_reg->CSR_b.RXDMON)) + { + event |= UART_EVENT_BREAK_DETECT; + } + + /* Clear error condition. */ + p_instance_ctrl->p_reg->CFCLR |= (uint32_t) (SCI_UART_RCVR_ERRCLR_MASK); + + /* Dummy read to ensure that interrupt event is cleared. */ + volatile uint32_t dummy = p_instance_ctrl->p_reg->CSR; + FSP_PARAMETER_NOT_USED(dummy); + + /* Call callback. */ + r_sci_uart_call_callback(p_instance_ctrl, data, event); + + /* Restore context if RTOS is used */ + FSP_CONTEXT_RESTORE; + + SCI_UART_CFG_MULTIPLEX_INTERRUPT_DISABLE; +} + +#endif diff --git a/bsp/renesas/rzn2l_etherkit/rzn_cfg.txt b/bsp/renesas/rzn2l_etherkit/rzn_cfg.txt new file mode 100644 index 00000000000..0cdda28820f --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_cfg.txt @@ -0,0 +1,1158 @@ +FSP Configuration + Board "RSK+RZN2L (xSPI0 x1 boot mode)" + Parameter information for the loader: CACHE_FLG: 0x00000000 + Parameter information for the loader: WRAPCFG_V: 0x00000000 + Parameter information for the loader: COMCFG_V: 0x00000000 + Parameter information for the loader: BMCFG_V: 0x00000000 + Parameter information for the loader: xSPI_FLG: 0x00000000 + Parameter information for the loader: LDR_ADDR_NML: 0x6000004C + Parameter information for the loader: LDR_SIZE_NML: 0x00006000 + Parameter information for the loader: DEST_ADDR_NML: 0x00102000 + Parameter information for the loader: CSSCTL_V: 0x0000003F + Parameter information for the loader: LIOCFGCS0_V: 0x00070000 + Parameter information for the loader: ACCESS_SPEED: 0x00000006 + Parameter information for the loader: CHECK_SUM: Auto Calculate. + + R9A07G084M04GBG + part_number: R9A07G084M04GBG + atcm_size_bytes: 131072 + btcm_size_bytes: 131072 + system_ram_size_bytes: 1572864 + package_style: FBGA + package_pins: 225 + Cortex-R52 CPU core: CPU0 + + RZN2L Memory Config + Master MPU: MPU0 : DMAC Unit0: Enable or disable read control for Region 0: Disabled + Master MPU: MPU0 : DMAC Unit0: Enable or disable write control for Region 0: Disabled + Master MPU: MPU0 : DMAC Unit0: Region 0 Start: 0x00000000 + Master MPU: MPU0 : DMAC Unit0: Region 0 End: 0x00000C00 + Master MPU: MPU0 : DMAC Unit0: Enable or disable read control for Region 1: Disabled + Master MPU: MPU0 : DMAC Unit0: Enable or disable write control for Region 1: Disabled + Master MPU: MPU0 : DMAC Unit0: Region 1 Start: 0x00000000 + Master MPU: MPU0 : DMAC Unit0: Region 1 End: 0x00000C00 + Master MPU: MPU0 : DMAC Unit0: Enable or disable read control for Region 2: Disabled + Master MPU: MPU0 : DMAC Unit0: Enable or disable write control for Region 2: Disabled + Master MPU: MPU0 : DMAC Unit0: Region 2 Start: 0x00000000 + Master MPU: MPU0 : DMAC Unit0: Region 2 End: 0x00000C00 + Master MPU: MPU0 : DMAC Unit0: Enable or disable read control for Region 3: Disabled + Master MPU: MPU0 : DMAC Unit0: Enable or disable write control for Region 3: Disabled + Master MPU: MPU0 : DMAC Unit0: Region 3 Start: 0x00000000 + Master MPU: MPU0 : DMAC Unit0: Region 3 End: 0x00000C00 + Master MPU: MPU0 : DMAC Unit0: Enable or disable read control for Region 4: Disabled + Master MPU: MPU0 : DMAC Unit0: Enable or disable write control for Region 4: Disabled + Master MPU: MPU0 : DMAC Unit0: Region 4 Start: 0x00000000 + Master MPU: MPU0 : DMAC Unit0: Region 4 End: 0x00000C00 + Master MPU: MPU0 : DMAC Unit0: Enable or disable read control for Region 5: Disabled + Master MPU: MPU0 : DMAC Unit0: Enable or disable write control for Region 5: Disabled + Master MPU: MPU0 : DMAC Unit0: Region 5 Start: 0x00000000 + Master MPU: MPU0 : DMAC Unit0: Region 5 End: 0x00000C00 + Master MPU: MPU0 : DMAC Unit0: Enable or disable read control for Region 6: Disabled + Master MPU: MPU0 : DMAC Unit0: Enable or disable write control for Region 6: Disabled + Master MPU: MPU0 : DMAC Unit0: Region 6 Start: 0x00000000 + Master MPU: MPU0 : DMAC Unit0: Region 6 End: 0x00000C00 + Master MPU: MPU0 : DMAC Unit0: Enable or disable read control for Region 7: Disabled + Master MPU: MPU0 : DMAC Unit0: Enable or disable write control for Region 7: Disabled + Master MPU: MPU0 : DMAC Unit0: Region 7 Start: 0x00000000 + Master MPU: MPU0 : DMAC Unit0: Region 7 End: 0x00000C00 + Master MPU: MPU1 : DMAC Unit1: Enable or disable read control for Region 0: Disabled + Master MPU: MPU1 : DMAC Unit1: Enable or disable write control for Region 0: Disabled + Master MPU: MPU1 : DMAC Unit1: Region 0 Start: 0x00000000 + Master MPU: MPU1 : DMAC Unit1: Region 0 End: 0x00000C00 + Master MPU: MPU1 : DMAC Unit1: Enable or disable read control for Region 1: Disabled + Master MPU: MPU1 : DMAC Unit1: Enable or disable write control for Region 1: Disabled + Master MPU: MPU1 : DMAC Unit1: Region 1 Start: 0x00000000 + Master MPU: MPU1 : DMAC Unit1: Region 1 End: 0x00000C00 + Master MPU: MPU1 : DMAC Unit1: Enable or disable read control for Region 2: Disabled + Master MPU: MPU1 : DMAC Unit1: Enable or disable write control for Region 2: Disabled + Master MPU: MPU1 : DMAC Unit1: Region 2 Start: 0x00000000 + Master MPU: MPU1 : DMAC Unit1: Region 2 End: 0x00000C00 + Master MPU: MPU1 : DMAC Unit1: Enable or disable read control for Region 3: Disabled + Master MPU: MPU1 : DMAC Unit1: Enable or disable write control for Region 3: Disabled + Master MPU: MPU1 : DMAC Unit1: Region 3 Start: 0x00000000 + Master MPU: MPU1 : DMAC Unit1: Region 3 End: 0x00000C00 + Master MPU: MPU1 : DMAC Unit1: Enable or disable read control for Region 4: Disabled + Master MPU: MPU1 : DMAC Unit1: Enable or disable write control for Region 4: Disabled + Master MPU: MPU1 : DMAC Unit1: Region 4 Start: 0x00000000 + Master MPU: MPU1 : DMAC Unit1: Region 4 End: 0x00000C00 + Master MPU: MPU1 : DMAC Unit1: Enable or disable read control for Region 5: Disabled + Master MPU: MPU1 : DMAC Unit1: Enable or disable write control for Region 5: Disabled + Master MPU: MPU1 : DMAC Unit1: Region 5 Start: 0x00000000 + Master MPU: MPU1 : DMAC Unit1: Region 5 End: 0x00000C00 + Master MPU: MPU1 : DMAC Unit1: Enable or disable read control for Region 6: Disabled + Master MPU: MPU1 : DMAC Unit1: Enable or disable write control for Region 6: Disabled + Master MPU: MPU1 : DMAC Unit1: Region 6 Start: 0x00000000 + Master MPU: MPU1 : DMAC Unit1: Region 6 End: 0x00000C00 + Master MPU: MPU1 : DMAC Unit1: Enable or disable read control for Region 7: Disabled + Master MPU: MPU1 : DMAC Unit1: Enable or disable write control for Region 7: Disabled + Master MPU: MPU1 : DMAC Unit1: Region 7 Start: 0x00000000 + Master MPU: MPU1 : DMAC Unit1: Region 7 End: 0x00000C00 + Master MPU: MPU2 : GMAC: Enable or disable read control for Region 0: Disabled + Master MPU: MPU2 : GMAC: Enable or disable write control for Region 0: Disabled + Master MPU: MPU2 : GMAC: Region 0 Start: 0x00000000 + Master MPU: MPU2 : GMAC: Region 0 End: 0x00000C00 + Master MPU: MPU2 : GMAC: Enable or disable read control for Region 1: Disabled + Master MPU: MPU2 : GMAC: Enable or disable write control for Region 1: Disabled + Master MPU: MPU2 : GMAC: Region 1 Start: 0x00000000 + Master MPU: MPU2 : GMAC: Region 1 End: 0x00000C00 + Master MPU: MPU2 : GMAC: Enable or disable read control for Region 2: Disabled + Master MPU: MPU2 : GMAC: Enable or disable write control for Region 2: Disabled + Master MPU: MPU2 : GMAC: Region 2 Start: 0x00000000 + Master MPU: MPU2 : GMAC: Region 2 End: 0x00000C00 + Master MPU: MPU2 : GMAC: Enable or disable read control for Region 3: Disabled + Master MPU: MPU2 : GMAC: Enable or disable write control for Region 3: Disabled + Master MPU: MPU2 : GMAC: Region 3 Start: 0x00000000 + Master MPU: MPU2 : GMAC: Region 3 End: 0x00000C00 + Master MPU: MPU2 : GMAC: Enable or disable read control for Region 4: Disabled + Master MPU: MPU2 : GMAC: Enable or disable write control for Region 4: Disabled + Master MPU: MPU2 : GMAC: Region 4 Start: 0x00000000 + Master MPU: MPU2 : GMAC: Region 4 End: 0x00000C00 + Master MPU: MPU2 : GMAC: Enable or disable read control for Region 5: Disabled + Master MPU: MPU2 : GMAC: Enable or disable write control for Region 5: Disabled + Master MPU: MPU2 : GMAC: Region 5 Start: 0x00000000 + Master MPU: MPU2 : GMAC: Region 5 End: 0x00000C00 + Master MPU: MPU2 : GMAC: Enable or disable read control for Region 6: Disabled + Master MPU: MPU2 : GMAC: Enable or disable write control for Region 6: Disabled + Master MPU: MPU2 : GMAC: Region 6 Start: 0x00000000 + Master MPU: MPU2 : GMAC: Region 6 End: 0x00000C00 + Master MPU: MPU2 : GMAC: Enable or disable read control for Region 7: Disabled + Master MPU: MPU2 : GMAC: Enable or disable write control for Region 7: Disabled + Master MPU: MPU2 : GMAC: Region 7 Start: 0x00000000 + Master MPU: MPU2 : GMAC: Region 7 End: 0x00000C00 + Master MPU: MPU3 : USB Host: Enable or disable read control for Region 0: Disabled + Master MPU: MPU3 : USB Host: Enable or disable write control for Region 0: Disabled + Master MPU: MPU3 : USB Host: Region 0 Start: 0x00000000 + Master MPU: MPU3 : USB Host: Region 0 End: 0x00000000 + Master MPU: MPU3 : USB Host: Enable or disable read control for Region 1: Disabled + Master MPU: MPU3 : USB Host: Enable or disable write control for Region 1: Disabled + Master MPU: MPU3 : USB Host: Region 1 Start: 0x00000000 + Master MPU: MPU3 : USB Host: Region 1 End: 0x00000000 + Master MPU: MPU3 : USB Host: Enable or disable read control for Region 2: Disabled + Master MPU: MPU3 : USB Host: Enable or disable write control for Region 2: Disabled + Master MPU: MPU3 : USB Host: Region 2 Start: 0x00000000 + Master MPU: MPU3 : USB Host: Region 2 End: 0x00000000 + Master MPU: MPU3 : USB Host: Enable or disable read control for Region 3: Disabled + Master MPU: MPU3 : USB Host: Enable or disable write control for Region 3: Disabled + Master MPU: MPU3 : USB Host: Region 3 Start: 0x00000000 + Master MPU: MPU3 : USB Host: Region 3 End: 0x00000000 + Master MPU: MPU3 : USB Host: Enable or disable read control for Region 4: Disabled + Master MPU: MPU3 : USB Host: Enable or disable write control for Region 4: Disabled + Master MPU: MPU3 : USB Host: Region 4 Start: 0x00000000 + Master MPU: MPU3 : USB Host: Region 4 End: 0x00000000 + Master MPU: MPU3 : USB Host: Enable or disable read control for Region 5: Disabled + Master MPU: MPU3 : USB Host: Enable or disable write control for Region 5: Disabled + Master MPU: MPU3 : USB Host: Region 5 Start: 0x00000000 + Master MPU: MPU3 : USB Host: Region 5 End: 0x00000000 + Master MPU: MPU3 : USB Host: Enable or disable read control for Region 6: Disabled + Master MPU: MPU3 : USB Host: Enable or disable write control for Region 6: Disabled + Master MPU: MPU3 : USB Host: Region 6 Start: 0x00000000 + Master MPU: MPU3 : USB Host: Region 6 End: 0x00000000 + Master MPU: MPU3 : USB Host: Enable or disable read control for Region 7: Disabled + Master MPU: MPU3 : USB Host: Enable or disable write control for Region 7: Disabled + Master MPU: MPU3 : USB Host: Region 7 Start: 0x00000000 + Master MPU: MPU3 : USB Host: Region 7 End: 0x00000000 + Master MPU: MPU4 : USB Function: Enable or disable read control for Region 0: Disabled + Master MPU: MPU4 : USB Function: Enable or disable write control for Region 0: Disabled + Master MPU: MPU4 : USB Function: Region 0 Start: 0x00000000 + Master MPU: MPU4 : USB Function: Region 0 End: 0x00000000 + Master MPU: MPU4 : USB Function: Enable or disable read control for Region 1: Disabled + Master MPU: MPU4 : USB Function: Enable or disable write control for Region 1: Disabled + Master MPU: MPU4 : USB Function: Region 1 Start: 0x00000000 + Master MPU: MPU4 : USB Function: Region 1 End: 0x00000000 + Master MPU: MPU4 : USB Function: Enable or disable read control for Region 2: Disabled + Master MPU: MPU4 : USB Function: Enable or disable write control for Region 2: Disabled + Master MPU: MPU4 : USB Function: Region 2 Start: 0x00000000 + Master MPU: MPU4 : USB Function: Region 2 End: 0x00000000 + Master MPU: MPU4 : USB Function: Enable or disable read control for Region 3: Disabled + Master MPU: MPU4 : USB Function: Enable or disable write control for Region 3: Disabled + Master MPU: MPU4 : USB Function: Region 3 Start: 0x00000000 + Master MPU: MPU4 : USB Function: Region 3 End: 0x00000000 + Master MPU: MPU4 : USB Function: Enable or disable read control for Region 4: Disabled + Master MPU: MPU4 : USB Function: Enable or disable write control for Region 4: Disabled + Master MPU: MPU4 : USB Function: Region 4 Start: 0x00000000 + Master MPU: MPU4 : USB Function: Region 4 End: 0x00000000 + Master MPU: MPU4 : USB Function: Enable or disable read control for Region 5: Disabled + Master MPU: MPU4 : USB Function: Enable or disable write control for Region 5: Disabled + Master MPU: MPU4 : USB Function: Region 5 Start: 0x00000000 + Master MPU: MPU4 : USB Function: Region 5 End: 0x00000000 + Master MPU: MPU4 : USB Function: Enable or disable read control for Region 6: Disabled + Master MPU: MPU4 : USB Function: Enable or disable write control for Region 6: Disabled + Master MPU: MPU4 : USB Function: Region 6 Start: 0x00000000 + Master MPU: MPU4 : USB Function: Region 6 End: 0x00000000 + Master MPU: MPU4 : USB Function: Enable or disable read control for Region 7: Disabled + Master MPU: MPU4 : USB Function: Enable or disable write control for Region 7: Disabled + Master MPU: MPU4 : USB Function: Region 7 Start: 0x00000000 + Master MPU: MPU4 : USB Function: Region 7 End: 0x00000000 + Master MPU: MPU6 : CoreSight: Enable or disable read control for Region 0: Disabled + Master MPU: MPU6 : CoreSight: Enable or disable write control for Region 0: Disabled + Master MPU: MPU6 : CoreSight: Region 0 Start: 0x00000000 + Master MPU: MPU6 : CoreSight: Region 0 End: 0x00000C00 + Master MPU: MPU6 : CoreSight: Enable or disable read control for Region 1: Disabled + Master MPU: MPU6 : CoreSight: Enable or disable write control for Region 1: Disabled + Master MPU: MPU6 : CoreSight: Region 1 Start: 0x00000000 + Master MPU: MPU6 : CoreSight: Region 1 End: 0x00000C00 + Master MPU: MPU6 : CoreSight: Enable or disable read control for Region 2: Disabled + Master MPU: MPU6 : CoreSight: Enable or disable write control for Region 2: Disabled + Master MPU: MPU6 : CoreSight: Region 2 Start: 0x00000000 + Master MPU: MPU6 : CoreSight: Region 2 End: 0x00000C00 + Master MPU: MPU6 : CoreSight: Enable or disable read control for Region 3: Disabled + Master MPU: MPU6 : CoreSight: Enable or disable write control for Region 3: Disabled + Master MPU: MPU6 : CoreSight: Region 3 Start: 0x00000000 + Master MPU: MPU6 : CoreSight: Region 3 End: 0x00000C00 + Master MPU: MPU6 : CoreSight: Enable or disable read control for Region 4: Disabled + Master MPU: MPU6 : CoreSight: Enable or disable write control for Region 4: Disabled + Master MPU: MPU6 : CoreSight: Region 4 Start: 0x00000000 + Master MPU: MPU6 : CoreSight: Region 4 End: 0x00000C00 + Master MPU: MPU6 : CoreSight: Enable or disable read control for Region 5: Disabled + Master MPU: MPU6 : CoreSight: Enable or disable write control for Region 5: Disabled + Master MPU: MPU6 : CoreSight: Region 5 Start: 0x00000000 + Master MPU: MPU6 : CoreSight: Region 5 End: 0x00000C00 + Master MPU: MPU6 : CoreSight: Enable or disable read control for Region 6: Disabled + Master MPU: MPU6 : CoreSight: Enable or disable write control for Region 6: Disabled + Master MPU: MPU6 : CoreSight: Region 6 Start: 0x00000000 + Master MPU: MPU6 : CoreSight: Region 6 End: 0x00000C00 + Master MPU: MPU6 : CoreSight: Enable or disable read control for Region 7: Disabled + Master MPU: MPU6 : CoreSight: Enable or disable write control for Region 7: Disabled + Master MPU: MPU6 : CoreSight: Region 7 Start: 0x00000000 + Master MPU: MPU6 : CoreSight: Region 7 End: 0x00000C00 + Master MPU: MPU7 : SHOSTIF: Enable or disable read control for Region 0: Disabled + Master MPU: MPU7 : SHOSTIF: Enable or disable write control for Region 0: Disabled + Master MPU: MPU7 : SHOSTIF: Region 0 Start: 0x00000000 + Master MPU: MPU7 : SHOSTIF: Region 0 End: 0x00000000 + Master MPU: MPU7 : SHOSTIF: Enable or disable read control for Region 1: Disabled + Master MPU: MPU7 : SHOSTIF: Enable or disable write control for Region 1: Disabled + Master MPU: MPU7 : SHOSTIF: Region 1 Start: 0x00000000 + Master MPU: MPU7 : SHOSTIF: Region 1 End: 0x00000000 + Master MPU: MPU7 : SHOSTIF: Enable or disable read control for Region 2: Disabled + Master MPU: MPU7 : SHOSTIF: Enable or disable write control for Region 2: Disabled + Master MPU: MPU7 : SHOSTIF: Region 2 Start: 0x00000000 + Master MPU: MPU7 : SHOSTIF: Region 2 End: 0x00000000 + Master MPU: MPU7 : SHOSTIF: Enable or disable read control for Region 3: Disabled + Master MPU: MPU7 : SHOSTIF: Enable or disable write control for Region 3: Disabled + Master MPU: MPU7 : SHOSTIF: Region 3 Start: 0x00000000 + Master MPU: MPU7 : SHOSTIF: Region 3 End: 0x00000000 + Master MPU: MPU7 : SHOSTIF: Enable or disable read control for Region 4: Disabled + Master MPU: MPU7 : SHOSTIF: Enable or disable write control for Region 4: Disabled + Master MPU: MPU7 : SHOSTIF: Region 4 Start: 0x00000000 + Master MPU: MPU7 : SHOSTIF: Region 4 End: 0x00000000 + Master MPU: MPU7 : SHOSTIF: Enable or disable read control for Region 5: Disabled + Master MPU: MPU7 : SHOSTIF: Enable or disable write control for Region 5: Disabled + Master MPU: MPU7 : SHOSTIF: Region 5 Start: 0x00000000 + Master MPU: MPU7 : SHOSTIF: Region 5 End: 0x00000000 + Master MPU: MPU7 : SHOSTIF: Enable or disable read control for Region 6: Disabled + Master MPU: MPU7 : SHOSTIF: Enable or disable write control for Region 6: Disabled + Master MPU: MPU7 : SHOSTIF: Region 6 Start: 0x00000000 + Master MPU: MPU7 : SHOSTIF: Region 6 End: 0x00000000 + Master MPU: MPU7 : SHOSTIF: Enable or disable read control for Region 7: Disabled + Master MPU: MPU7 : SHOSTIF: Enable or disable write control for Region 7: Disabled + Master MPU: MPU7 : SHOSTIF: Region 7 Start: 0x00000000 + Master MPU: MPU7 : SHOSTIF: Region 7 End: 0x00000000 + Master MPU: MPU8 : PHOSTIF: Enable or disable read control for Region 0: Disabled + Master MPU: MPU8 : PHOSTIF: Enable or disable write control for Region 0: Disabled + Master MPU: MPU8 : PHOSTIF: Region 0 Start: 0x00000000 + Master MPU: MPU8 : PHOSTIF: Region 0 End: 0x00000000 + Master MPU: MPU8 : PHOSTIF: Enable or disable read control for Region 1: Disabled + Master MPU: MPU8 : PHOSTIF: Enable or disable write control for Region 1: Disabled + Master MPU: MPU8 : PHOSTIF: Region 1 Start: 0x00000000 + Master MPU: MPU8 : PHOSTIF: Region 1 End: 0x00000000 + Master MPU: MPU8 : PHOSTIF: Enable or disable read control for Region 2: Disabled + Master MPU: MPU8 : PHOSTIF: Enable or disable write control for Region 2: Disabled + Master MPU: MPU8 : PHOSTIF: Region 2 Start: 0x00000000 + Master MPU: MPU8 : PHOSTIF: Region 2 End: 0x00000000 + Master MPU: MPU8 : PHOSTIF: Enable or disable read control for Region 3: Disabled + Master MPU: MPU8 : PHOSTIF: Enable or disable write control for Region 3: Disabled + Master MPU: MPU8 : PHOSTIF: Region 3 Start: 0x00000000 + Master MPU: MPU8 : PHOSTIF: Region 3 End: 0x00000000 + Master MPU: MPU8 : PHOSTIF: Enable or disable read control for Region 4: Disabled + Master MPU: MPU8 : PHOSTIF: Enable or disable write control for Region 4: Disabled + Master MPU: MPU8 : PHOSTIF: Region 4 Start: 0x00000000 + Master MPU: MPU8 : PHOSTIF: Region 4 End: 0x00000000 + Master MPU: MPU8 : PHOSTIF: Enable or disable read control for Region 5: Disabled + Master MPU: MPU8 : PHOSTIF: Enable or disable write control for Region 5: Disabled + Master MPU: MPU8 : PHOSTIF: Region 5 Start: 0x00000000 + Master MPU: MPU8 : PHOSTIF: Region 5 End: 0x00000000 + Master MPU: MPU8 : PHOSTIF: Enable or disable read control for Region 6: Disabled + Master MPU: MPU8 : PHOSTIF: Enable or disable write control for Region 6: Disabled + Master MPU: MPU8 : PHOSTIF: Region 6 Start: 0x00000000 + Master MPU: MPU8 : PHOSTIF: Region 6 End: 0x00000000 + Master MPU: MPU8 : PHOSTIF: Enable or disable read control for Region 7: Disabled + Master MPU: MPU8 : PHOSTIF: Enable or disable write control for Region 7: Disabled + Master MPU: MPU8 : PHOSTIF: Region 7 Start: 0x00000000 + Master MPU: MPU8 : PHOSTIF: Region 7 End: 0x00000000 + CPU MPU: Attribute: Attribute 0: Memory Type: Normal memory + CPU MPU: Attribute: Attribute 0: Normal Memory: Inner: Memory Attribute Indirection: Write-Back non-transient + CPU MPU: Attribute: Attribute 0: Normal Memory: Inner: Read: Allocate + CPU MPU: Attribute: Attribute 0: Normal Memory: Inner: Write: Allocate + CPU MPU: Attribute: Attribute 0: Normal Memory: Outer: Memory Attribute Indirection: Write-Back non-transient + CPU MPU: Attribute: Attribute 0: Normal Memory: Outer: Read: Allocate + CPU MPU: Attribute: Attribute 0: Normal Memory: Outer: Write: Allocate + CPU MPU: Attribute: Attribute 0: Device Memory: Device Type: Device-nGnRnE memory + CPU MPU: Attribute: Attribute 1: Memory Type: Normal memory + CPU MPU: Attribute: Attribute 1: Normal Memory: Inner: Memory Attribute Indirection: Write-Through non-transient + CPU MPU: Attribute: Attribute 1: Normal Memory: Inner: Read: Allocate + CPU MPU: Attribute: Attribute 1: Normal Memory: Inner: Write: Allocate + CPU MPU: Attribute: Attribute 1: Normal Memory: Outer: Memory Attribute Indirection: Write-Through non-transient + CPU MPU: Attribute: Attribute 1: Normal Memory: Outer: Read: Allocate + CPU MPU: Attribute: Attribute 1: Normal Memory: Outer: Write: Allocate + CPU MPU: Attribute: Attribute 1: Device Memory: Device Type: Device-nGnRnE memory + CPU MPU: Attribute: Attribute 2: Memory Type: Normal memory + CPU MPU: Attribute: Attribute 2: Normal Memory: Inner: Memory Attribute Indirection: Write-Through non-transient + CPU MPU: Attribute: Attribute 2: Normal Memory: Inner: Read: Do not allocate + CPU MPU: Attribute: Attribute 2: Normal Memory: Inner: Write: Do not allocate + CPU MPU: Attribute: Attribute 2: Normal Memory: Outer: Memory Attribute Indirection: Write-Through non-transient + CPU MPU: Attribute: Attribute 2: Normal Memory: Outer: Read: Do not allocate + CPU MPU: Attribute: Attribute 2: Normal Memory: Outer: Write: Do not allocate + CPU MPU: Attribute: Attribute 2: Device Memory: Device Type: Device-nGnRnE memory + CPU MPU: Attribute: Attribute 3: Memory Type: Normal memory + CPU MPU: Attribute: Attribute 3: Normal Memory: Inner: Memory Attribute Indirection: Non-Cacheable + CPU MPU: Attribute: Attribute 3: Normal Memory: Inner: Read: Do not allocate + CPU MPU: Attribute: Attribute 3: Normal Memory: Inner: Write: Do not allocate + CPU MPU: Attribute: Attribute 3: Normal Memory: Outer: Memory Attribute Indirection: Non-Cacheable + CPU MPU: Attribute: Attribute 3: Normal Memory: Outer: Read: Do not allocate + CPU MPU: Attribute: Attribute 3: Normal Memory: Outer: Write: Do not allocate + CPU MPU: Attribute: Attribute 3: Device Memory: Device Type: Device-nGnRnE memory + CPU MPU: Attribute: Attribute 4: Memory Type: Device memory + CPU MPU: Attribute: Attribute 4: Normal Memory: Inner: Memory Attribute Indirection: Write-Through transient + CPU MPU: Attribute: Attribute 4: Normal Memory: Inner: Read: Do not allocate + CPU MPU: Attribute: Attribute 4: Normal Memory: Inner: Write: Do not allocate + CPU MPU: Attribute: Attribute 4: Normal Memory: Outer: Memory Attribute Indirection: Write-Through transient + CPU MPU: Attribute: Attribute 4: Normal Memory: Outer: Read: Do not allocate + CPU MPU: Attribute: Attribute 4: Normal Memory: Outer: Write: Do not allocate + CPU MPU: Attribute: Attribute 4: Device Memory: Device Type: Device-nGnRnE memory + CPU MPU: Attribute: Attribute 5: Memory Type: Device memory + CPU MPU: Attribute: Attribute 5: Normal Memory: Inner: Memory Attribute Indirection: Write-Through transient + CPU MPU: Attribute: Attribute 5: Normal Memory: Inner: Read: Do not allocate + CPU MPU: Attribute: Attribute 5: Normal Memory: Inner: Write: Do not allocate + CPU MPU: Attribute: Attribute 5: Normal Memory: Outer: Memory Attribute Indirection: Write-Through transient + CPU MPU: Attribute: Attribute 5: Normal Memory: Outer: Read: Do not allocate + CPU MPU: Attribute: Attribute 5: Normal Memory: Outer: Write: Do not allocate + CPU MPU: Attribute: Attribute 5: Device Memory: Device Type: Device-nGnRE memory + CPU MPU: Attribute: Attribute 6: Memory Type: Device memory + CPU MPU: Attribute: Attribute 6: Normal Memory: Inner: Memory Attribute Indirection: Write-Through transient + CPU MPU: Attribute: Attribute 6: Normal Memory: Inner: Read: Do not allocate + CPU MPU: Attribute: Attribute 6: Normal Memory: Inner: Write: Do not allocate + CPU MPU: Attribute: Attribute 6: Normal Memory: Outer: Memory Attribute Indirection: Write-Through transient + CPU MPU: Attribute: Attribute 6: Normal Memory: Outer: Read: Do not allocate + CPU MPU: Attribute: Attribute 6: Normal Memory: Outer: Write: Do not allocate + CPU MPU: Attribute: Attribute 6: Device Memory: Device Type: Device-nGRE memory + CPU MPU: Attribute: Attribute 7: Memory Type: Device memory + CPU MPU: Attribute: Attribute 7: Normal Memory: Inner: Memory Attribute Indirection: Write-Through transient + CPU MPU: Attribute: Attribute 7: Normal Memory: Inner: Read: Do not allocate + CPU MPU: Attribute: Attribute 7: Normal Memory: Inner: Write: Do not allocate + CPU MPU: Attribute: Attribute 7: Normal Memory: Outer: Memory Attribute Indirection: Write-Through transient + CPU MPU: Attribute: Attribute 7: Normal Memory: Outer: Read: Do not allocate + CPU MPU: Attribute: Attribute 7: Normal Memory: Outer: Write: Do not allocate + CPU MPU: Attribute: Attribute 7: Device Memory: Device Type: Device-GRE memory + CPU MPU: Region: Region 00: Name: ATCM + CPU MPU: Region: Region 00: Base: 0x00000000 + CPU MPU: Region: Region 00: Limit: 0x0001FFFF + CPU MPU: Region: Region 00: Sharebility field: Outer Shareable + CPU MPU: Region: Region 00: Access Permission(EL1 / EL0): ReadWrite / ReadWrite + CPU MPU: Region: Region 00: Execute never: Execute Enable + CPU MPU: Region: Region 00: Attribute Index: Attribute 3 + CPU MPU: Region: Region 00: Region enable: Enabled + CPU MPU: Region: Region 01: Name: BTCM + CPU MPU: Region: Region 01: Base: 0x00100000 + CPU MPU: Region: Region 01: Limit: 0x0011FFFF + CPU MPU: Region: Region 01: Sharebility field: Outer Shareable + CPU MPU: Region: Region 01: Access Permission(EL1 / EL0): ReadWrite / ReadWrite + CPU MPU: Region: Region 01: Execute never: Execute Enable + CPU MPU: Region: Region 01: Attribute Index: Attribute 3 + CPU MPU: Region: Region 01: Region enable: Enabled + CPU MPU: Region: Region 02: Name: System RAM + CPU MPU: Region: Region 02: Base: 0x10000000 + CPU MPU: Region: Region 02: Limit: 0x1017FFFF + CPU MPU: Region: Region 02: Sharebility field: Non-shareable + CPU MPU: Region: Region 02: Access Permission(EL1 / EL0): ReadWrite / ReadWrite + CPU MPU: Region: Region 02: Execute never: Execute Enable + CPU MPU: Region: Region 02: Attribute Index: Attribute 1 + CPU MPU: Region: Region 02: Region enable: Enabled + CPU MPU: Region: Region 03: Name: Mirror area of System RAM + CPU MPU: Region: Region 03: Base: 0x30000000 + CPU MPU: Region: Region 03: Limit: 0x3017FFFF + CPU MPU: Region: Region 03: Sharebility field: Outer Shareable + CPU MPU: Region: Region 03: Access Permission(EL1 / EL0): ReadWrite / ReadWrite + CPU MPU: Region: Region 03: Execute never: Execute Enable + CPU MPU: Region: Region 03: Attribute Index: Attribute 3 + CPU MPU: Region: Region 03: Region enable: Enabled + CPU MPU: Region: Region 04: Name: Mirror area of external address space + CPU MPU: Region: Region 04: Base: 0x40000000 + CPU MPU: Region: Region 04: Limit: 0x5FFFFFFF + CPU MPU: Region: Region 04: Sharebility field: Outer Shareable + CPU MPU: Region: Region 04: Access Permission(EL1 / EL0): ReadWrite / ReadWrite + CPU MPU: Region: Region 04: Execute never: Execute Enable + CPU MPU: Region: Region 04: Attribute Index: Attribute 3 + CPU MPU: Region: Region 04: Region enable: Enabled + CPU MPU: Region: Region 05: Name: External address space + CPU MPU: Region: Region 05: Base: 0x60000000 + CPU MPU: Region: Region 05: Limit: 0x7FFFFFFF + CPU MPU: Region: Region 05: Sharebility field: Non-shareable + CPU MPU: Region: Region 05: Access Permission(EL1 / EL0): ReadWrite / ReadWrite + CPU MPU: Region: Region 05: Execute never: Execute Enable + CPU MPU: Region: Region 05: Attribute Index: Attribute 1 + CPU MPU: Region: Region 05: Region enable: Enabled + CPU MPU: Region: Region 06: Name: Non-Safety Peripheral + CPU MPU: Region: Region 06: Base: 0x80000000 + CPU MPU: Region: Region 06: Limit: 0x80FFFFFF + CPU MPU: Region: Region 06: Sharebility field: Outer Shareable + CPU MPU: Region: Region 06: Access Permission(EL1 / EL0): ReadWrite / ReadWrite + CPU MPU: Region: Region 06: Execute never: Execute Never + CPU MPU: Region: Region 06: Attribute Index: Attribute 5 + CPU MPU: Region: Region 06: Region enable: Enabled + CPU MPU: Region: Region 07: Name: Safety Peripheral + CPU MPU: Region: Region 07: Base: 0x81000000 + CPU MPU: Region: Region 07: Limit: 0x81FFFFFF + CPU MPU: Region: Region 07: Sharebility field: Outer Shareable + CPU MPU: Region: Region 07: Access Permission(EL1 / EL0): ReadWrite / ReadWrite + CPU MPU: Region: Region 07: Execute never: Execute Never + CPU MPU: Region: Region 07: Attribute Index: Attribute 5 + CPU MPU: Region: Region 07: Region enable: Enabled + CPU MPU: Region: Region 08: Name: LLPP Peripheral + CPU MPU: Region: Region 08: Base: 0x90000000 + CPU MPU: Region: Region 08: Limit: 0x901FFFFF + CPU MPU: Region: Region 08: Sharebility field: Outer Shareable + CPU MPU: Region: Region 08: Access Permission(EL1 / EL0): ReadWrite / ReadWrite + CPU MPU: Region: Region 08: Execute never: Execute Never + CPU MPU: Region: Region 08: Attribute Index: Attribute 5 + CPU MPU: Region: Region 08: Region enable: Enabled + CPU MPU: Region: Region 09: Name: GIC0 + CPU MPU: Region: Region 09: Base: 0x94000000 + CPU MPU: Region: Region 09: Limit: 0x941FFFFF + CPU MPU: Region: Region 09: Sharebility field: Outer Shareable + CPU MPU: Region: Region 09: Access Permission(EL1 / EL0): ReadWrite / ReadWrite + CPU MPU: Region: Region 09: Execute never: Execute Never + CPU MPU: Region: Region 09: Attribute Index: Attribute 4 + CPU MPU: Region: Region 09: Region enable: Enabled + CPU MPU: Region: Region 10: Name: Debug Private + CPU MPU: Region: Region 10: Base: 0xC0000000 + CPU MPU: Region: Region 10: Limit: 0xC0FFFFFF + CPU MPU: Region: Region 10: Sharebility field: Outer Shareable + CPU MPU: Region: Region 10: Access Permission(EL1 / EL0): ReadWrite / ReadWrite + CPU MPU: Region: Region 10: Execute never: Execute Never + CPU MPU: Region: Region 10: Attribute Index: Attribute 4 + CPU MPU: Region: Region 10: Region enable: Enabled + CPU MPU: Region: Region 11: Name: Not Used + CPU MPU: Region: Region 11: Base: 0x00000000 + CPU MPU: Region: Region 11: Limit: 0x00000000 + CPU MPU: Region: Region 11: Sharebility field: Non-shareable + CPU MPU: Region: Region 11: Access Permission(EL1 / EL0): ReadWrite / None + CPU MPU: Region: Region 11: Execute never: Execute Enable + CPU MPU: Region: Region 11: Attribute Index: Attribute 0 + CPU MPU: Region: Region 11: Region enable: Disabled + CPU MPU: Region: Region 12: Name: Not Used + CPU MPU: Region: Region 12: Base: 0x00000000 + CPU MPU: Region: Region 12: Limit: 0x00000000 + CPU MPU: Region: Region 12: Sharebility field: Non-shareable + CPU MPU: Region: Region 12: Access Permission(EL1 / EL0): ReadWrite / None + CPU MPU: Region: Region 12: Execute never: Execute Enable + CPU MPU: Region: Region 12: Attribute Index: Attribute 0 + CPU MPU: Region: Region 12: Region enable: Disabled + CPU MPU: Region: Region 13: Name: Not Used + CPU MPU: Region: Region 13: Base: 0x00000000 + CPU MPU: Region: Region 13: Limit: 0x00000000 + CPU MPU: Region: Region 13: Sharebility field: Non-shareable + CPU MPU: Region: Region 13: Access Permission(EL1 / EL0): ReadWrite / None + CPU MPU: Region: Region 13: Execute never: Execute Enable + CPU MPU: Region: Region 13: Attribute Index: Attribute 0 + CPU MPU: Region: Region 13: Region enable: Disabled + CPU MPU: Region: Region 14: Name: Not Used + CPU MPU: Region: Region 14: Base: 0x00000000 + CPU MPU: Region: Region 14: Limit: 0x00000000 + CPU MPU: Region: Region 14: Sharebility field: Non-shareable + CPU MPU: Region: Region 14: Access Permission(EL1 / EL0): ReadWrite / None + CPU MPU: Region: Region 14: Execute never: Execute Enable + CPU MPU: Region: Region 14: Attribute Index: Attribute 0 + CPU MPU: Region: Region 14: Region enable: Disabled + CPU MPU: Region: Region 15: Name: Not Used + CPU MPU: Region: Region 15: Base: 0x00000000 + CPU MPU: Region: Region 15: Limit: 0x00000000 + CPU MPU: Region: Region 15: Sharebility field: Non-shareable + CPU MPU: Region: Region 15: Access Permission(EL1 / EL0): ReadWrite / None + CPU MPU: Region: Region 15: Execute never: Execute Enable + CPU MPU: Region: Region 15: Attribute Index: Attribute 0 + CPU MPU: Region: Region 15: Region enable: Disabled + CPU MPU: Region: Region 16: Name: Not Used + CPU MPU: Region: Region 16: Base: 0x00000000 + CPU MPU: Region: Region 16: Limit: 0x00000000 + CPU MPU: Region: Region 16: Sharebility field: Non-shareable + CPU MPU: Region: Region 16: Access Permission(EL1 / EL0): ReadWrite / None + CPU MPU: Region: Region 16: Execute never: Execute Enable + CPU MPU: Region: Region 16: Attribute Index: Attribute 0 + CPU MPU: Region: Region 16: Region enable: Disabled + CPU MPU: Region: Region 17: Name: Not Used + CPU MPU: Region: Region 17: Base: 0x00000000 + CPU MPU: Region: Region 17: Limit: 0x00000000 + CPU MPU: Region: Region 17: Sharebility field: Non-shareable + CPU MPU: Region: Region 17: Access Permission(EL1 / EL0): ReadWrite / None + CPU MPU: Region: Region 17: Execute never: Execute Enable + CPU MPU: Region: Region 17: Attribute Index: Attribute 0 + CPU MPU: Region: Region 17: Region enable: Disabled + CPU MPU: Region: Region 18: Name: Not Used + CPU MPU: Region: Region 18: Base: 0x00000000 + CPU MPU: Region: Region 18: Limit: 0x00000000 + CPU MPU: Region: Region 18: Sharebility field: Non-shareable + CPU MPU: Region: Region 18: Access Permission(EL1 / EL0): ReadWrite / None + CPU MPU: Region: Region 18: Execute never: Execute Enable + CPU MPU: Region: Region 18: Attribute Index: Attribute 0 + CPU MPU: Region: Region 18: Region enable: Disabled + CPU MPU: Region: Region 19: Name: Not Used + CPU MPU: Region: Region 19: Base: 0x00000000 + CPU MPU: Region: Region 19: Limit: 0x00000000 + CPU MPU: Region: Region 19: Sharebility field: Non-shareable + CPU MPU: Region: Region 19: Access Permission(EL1 / EL0): ReadWrite / None + CPU MPU: Region: Region 19: Execute never: Execute Enable + CPU MPU: Region: Region 19: Attribute Index: Attribute 0 + CPU MPU: Region: Region 19: Region enable: Disabled + CPU MPU: Region: Region 20: Name: Not Used + CPU MPU: Region: Region 20: Base: 0x00000000 + CPU MPU: Region: Region 20: Limit: 0x00000000 + CPU MPU: Region: Region 20: Sharebility field: Non-shareable + CPU MPU: Region: Region 20: Access Permission(EL1 / EL0): ReadWrite / None + CPU MPU: Region: Region 20: Execute never: Execute Enable + CPU MPU: Region: Region 20: Attribute Index: Attribute 0 + CPU MPU: Region: Region 20: Region enable: Disabled + CPU MPU: Region: Region 21: Name: Not Used + CPU MPU: Region: Region 21: Base: 0x00000000 + CPU MPU: Region: Region 21: Limit: 0x00000000 + CPU MPU: Region: Region 21: Sharebility field: Non-shareable + CPU MPU: Region: Region 21: Access Permission(EL1 / EL0): ReadWrite / None + CPU MPU: Region: Region 21: Execute never: Execute Enable + CPU MPU: Region: Region 21: Attribute Index: Attribute 0 + CPU MPU: Region: Region 21: Region enable: Disabled + CPU MPU: Region: Region 22: Name: Not Used + CPU MPU: Region: Region 22: Base: 0x00000000 + CPU MPU: Region: Region 22: Limit: 0x00000000 + CPU MPU: Region: Region 22: Sharebility field: Non-shareable + CPU MPU: Region: Region 22: Access Permission(EL1 / EL0): ReadWrite / None + CPU MPU: Region: Region 22: Execute never: Execute Enable + CPU MPU: Region: Region 22: Attribute Index: Attribute 0 + CPU MPU: Region: Region 22: Region enable: Disabled + CPU MPU: Region: Region 23: Name: Not Used + CPU MPU: Region: Region 23: Base: 0x00000000 + CPU MPU: Region: Region 23: Limit: 0x00000000 + CPU MPU: Region: Region 23: Sharebility field: Non-shareable + CPU MPU: Region: Region 23: Access Permission(EL1 / EL0): ReadWrite / None + CPU MPU: Region: Region 23: Execute never: Execute Enable + CPU MPU: Region: Region 23: Attribute Index: Attribute 0 + CPU MPU: Region: Region 23: Region enable: Disabled + CPU MPU: Background Region: Disabled + CPU MPU: Instruction Cache: Enabled + CPU MPU: Data Cache: Enabled + + RZN2L + stack size (bytes): FIQ stack size: 0x400 + stack size (bytes): IRQ stack size: 0x400 + stack size (bytes): ABT stack size: 0x400 + stack size (bytes): UND stack size: 0x400 + stack size (bytes): SYS stack size: 0x400 + stack size (bytes): SVC stack size: 0x400 + Heap size (bytes): 0x2000 + C Runtime Initialization : Enabled + TFU Mathlib: Enabled + + RZN2L Family + + RZN Common + MCU Vcc (mV): 3300 + Parameter checking: Disabled + Assert Failures: Return FSP_ERR_ASSERTION + Error Log: No Error Log + Soft Reset: Disabled + Port Protect: Enabled + Early BSP Initialization : Disabled + Multiplex Interrupt: Disabled + + Clocks + LOCO Enabled + PLL1 is initial state + Ethernet Clock src: Main clock oscillator + CLMA0 Enabled + CLMA0 error not mask + CLMA3 error not mask + CLMA1 error mask + CLMA3 Enabled + CLMA1 Enabled + CLMA2 Enabled + CLMA0 CMPL 1 + CLMA1 CMPL 1 + CLMA2 CMPL 1 + CLMA3 CMPL 1 + Alternative clock: LOCO + CLMA0 CMPH 1023 + CLMA1 CMPH 1023 + CLMA2 CMPH 1023 + CLMA3 CMPH 1023 + ICLK 200MHz + CPU0CLK Mulx2 + CKIO Div/4 + SCI0ASYNCCLK: 96MHz + SCI1ASYNCCLK: 96MHz + SCI2ASYNCCLK: 96MHz + SCI3ASYNCCLK: 96MHz + SCI4ASYNCCLK: 96MHz + SCI5ASYNCCLK: 96MHz + SPI0ASYNCCLK: 96MHz + SPI1ASYNCCLK: 96MHz + SPI2ASYNCCLK: 96MHz + SPI3ASYNCCLK: 96MHz + PCLKCAN 40MHz + XSPI_CLK0 133.3MHz + XSPI_CLK1 12.5MHz + + Pin Configurations + RSK+RZN2L -> g_bsp_pin_cfg + AN000 B13 SYSTEM_AN000 - - - - - - - - I "Read only" - + AN001 C12 SYSTEM_AN001 - - - - - - - - I "Read only" - + AN002 B14 SYSTEM_AN002 - - - - - - - - I "Read only" - + AN003 C13 SYSTEM_AN003 - - - - - - - - I "Read only" - + AN100 B12 SYSTEM_AN100 - - - - - - - - I "Read only" - + AN101 A14 SYSTEM_AN101 - - - - - - - - I "Read only" - + AN102 B11 SYSTEM_AN102 - - - - - - - - I "Read only" - + AN103 A13 SYSTEM_AN103 - - - - - - - - I "Read only" - + AN104 A12 SYSTEM_AN104 - - - - - - - - I "Read only" - + AN105 B10 SYSTEM_AN105 - - - - - - - - I "Read only" - + AN106 A11 SYSTEM_AN106 - - - - - - - - I "Read only" - + AN107 C9 SYSTEM_AN107 - - - - - - - - I "Read only" - + AVCC18_TSU C14 SYSTEM_AVCC18_TSU - - - - - - - - I "Read only" - + AVCC18_USB P10 SYSTEM_AVCC18_USB - - - - - - - - I "Read only" - + AVCC18_USB R10 SYSTEM_AVCC18_USB - - - - - - - - I "Read only" - + BSCANP G2 SYSTEM_BSCANP - - - - - - - - I "Read only" - + EXTAL R7 CGC_EXTAL - - - - - - - - I "Read only" - + EXTCLKIN R6 CGC_EXTCLKIN - - - - - - - - I "Read only" - + MDX P5 SYSTEM_MDX - - - - - - - - IO "Read only" - + P00_0 C4 - ETH2_RXD3 - - Disabled - - "BSC: D15; ETHER_ETH2: ETH2_RXD3; PHOSTIF: HD15; SCI2: DE2; SCI2: SCK2" - None - - + P00_1 D5 - ETH2_RXDV - - Disabled - - "BSC: A13; ETHER_ETH2: ETH2_RXDV_CRSDV_RXCTL; IRQ: IRQ0; MTU35: MTIC5U; SCI2: RXD_MISO2; SCI2: SCL2" - None - - + P00_2 A3 - ETH2_TXEN - - Disabled - - "BSC: RD#; ETHER_ETH2: ETH2_TXEN_TXCTL; MTU35: MTIC5V; SCI2: SDA2; SCI2: TXD_MOSI2; USB_HS: USB_OVRCUR" - None - - + P00_3 B3 - ETH2_REFCLK - - Disabled - - "BSC: RD_WR#; ETHER_ETH2: ETH2_REFCLK; ETHER_ETH2: ETH2_RMII2_REFCLK; IRQ: IRQ1; MTU35: MTIC5W; SCI2: CTS_RTS_SS2#" - None - - + P00_4 A4 - - - - Disabled - - "BSC: WAIT#; DSMIF0: MCLK0; ETHER_ETH2: ETH2_RXER; GPT0: GTIOC0A; IRQ: IRQ13; MTU33: MTIOC3A; PHOSTIF: HWAIT#" - None - - + P00_5 B4 - ETH2_LINK - - Disabled - - "BSC: CS0#; DSMIF0: MDAT0; ETHER_ESC: ESC_PHYLINK0; ETHER_ESC: ESC_PHYLINK2; ETHER_ETHSW: ETHSW_PHYLINK0; ETHER_ETHSW: ETHSW_PHYLINK2; GPT0: GTIOC0B; MTU33: MTIOC3C" - None - - + P00_6 C3 - ETH2_TXCLK - - Disabled - - "BSC: CS5#; ETHER_ETH2: ETH2_TXCLK_TXC; GPT1: GTIOC1A; MTU33: MTIOC3B" - None - - + P00_7 D4 - - - - Disabled - - "BSC: RAS#; GPT2: GTIOC2A; IRQ: IRQ13; MTU34: MTIOC4A" - None - - + P01_0 A2 - - - - Disabled - - "BSC: CAS#; DSMIF1: MCLK1; ETHER_ESC: ESC_MDIO; ETHER_ETHSW: ETHSW_MDIO; ETHER_GMAC: GMAC_MDIO; GPT3: GTIOC3A; MTU34: MTIOC4C; SCI2: CTS2#" - None - - + P01_1 D3 - - - - Disabled - - "BSC: CKE; DSMIF1: MDAT1; ETHER_ESC: ESC_MDC; ETHER_ETHSW: ETHSW_MDC; ETHER_GMAC: GMAC_MDC; GPT1: GTIOC1B; MTU33: MTIOC3D; SCI2: DE2" - None - - + P01_2 B2 - ETH2_TXD3 - - Disabled - - "BSC: CS2#; ETHER_ETH2: ETH2_TXD3; GPT2: GTIOC2B; IRQ: IRQ2; MTU34: MTIOC4B" - None - - + P01_3 C2 - ETH2_TXD2 - - Disabled - - "BSC: AH#; ETHER_ETH2: ETH2_TXD2; GPT3: GTIOC3B; MTU34: MTIOC4D" - None - - + P01_4 E4 - ETH2_TXD1 - - Disabled - - "BSC: WE1#_DQMLU; ETHER_ETH2: ETH2_TXD1; IRQ: IRQ3; MTU_POE3: POE0#" - None - - + P01_5 B1 - ETH2_TXD0 - - Disabled - - "BSC: WE0#_DQMLL; ETHER_ETH2: ETH2_TXD0" - None - - + P01_6 D2 - - - - Disabled - - "BSC: A20; CANFD1: CANTXDP1; ETHER_ESC: ESC_LATCH0; ETHER_ESC: ESC_LATCH1; ETHER_GMAC: GMAC_PTPTRG1; GPT9: GTIOC9A; MTU31: MTIOC1A; PHOSTIF: HA20; SCI1: CTS1#; TRACE: TRACEDATA0" - None - - + P01_7 C1 - CAN_RX - - Disabled - - "ADC0: ADTRG0#; BSC: A19; CANFD0: CANRX0; ETHER_ETHSW: ETHSW_LPI1; GPT9: GTIOC9B; MTU31: MTIOC1B; PHOSTIF: HA19; SCI1: SCK1; SPI3: SPI_RSPCK3; TRACE: TRACEDATA1" - None - - + P02_0 E3 - - - - Disabled - - "BSC: A18; CANFD1: CANTX1; ETHER_ETHSW: ETHSW_LPI2; GPT: GTADSML0; IRQ: IRQ4; PHOSTIF: HA18; SCI1: RXD_MISO1; SCI1: SCL1; SPI3: SPI_MISO3; TRACE: TRACEDATA2; USB_HS: USB_OTGID" - None - - + P02_1 D1 - - - - Disabled - - "BSC: A17; ETHER_ESC: ESC_SYNC0; ETHER_ESC: ESC_SYNC1; ETHER_ETHSW: ETHSW_PTPOUT1; PHOSTIF: HA17; SCI1: DE1" - None - - + P02_2 F3 - CAN_TX - - Disabled - - "BSC: A16; CANFD0: CANTX0; ETHER_ETHSW: ETHSW_TDMAOUT0; GPT10: GTIOC10A; IRQ: IRQ14; MTU32: MTIOC2A; MTU_POE3: POE10#; PHOSTIF: HA16; RTC: RTCAT1HZ; SCI1: SDA1; SCI1: TXD_MOSI1; SPI3: SPI_MOSI3" - None - - + P02_3 E1 - - - - Disabled - - "BSC: A15; BSC: AH#; CANFD1: CANRX1; ETHER_ETHSW: ETHSW_TDMAOUT1; GPT10: GTIOC10B; IRQ: IRQ15; MTU32: MTIOC2B; MTU_POE3: POE11#; PHOSTIF: HA15; SCI1: CTS_RTS_SS1#; SPI3: SPI_SSL30" - None - - + P02_4 F4 JTAG/SWD_TDO TDO High - "Peripheral mode" - - "BSC: WE0#_DQMLL; JTAG/SWD: TDO; SCI1: DE1; SPI3: SPI_SSL33" - O - - + P02_5 F2 JTAG/SWD_TDI TDI Low - "Peripheral mode" - - "BSC: WE1#_DQMLU; ETHER_ETHSW: ETHSW_TDMAOUT3; JTAG/SWD: TDI; SCI5: SCK5; SPI3: SPI_SSL31" - I - - + P02_6 F5 JTAG/SWD_TMS_SWDIO TMS High - "Peripheral mode" - - "JTAG/SWD: TMS_SWDIO; SCI5: RXD_MISO5; SCI5: SCL5" - IO - - + P02_7 F1 JTAG/SWD_TCK_SWCLK TCK Low - "Peripheral mode" - - "JTAG/SWD: TCK_SWCLK; SCI5: SDA5; SCI5: TXD_MOSI5" - I - - + P03_0 G3 GPIO ETH_LED4 Low - "Output mode (Low & Not Into Input)" - - "BSC: A14; BSC: CS5#; CANFD1: CANTXDP1; GPT: GTADSML1; IRQ: IRQ14; PHOSTIF: HA14; SCI2: SCK2; SPI3: SPI_SSL32; TRACE: TRACEDATA3" - IO - - + P03_5 G1 - - - - Disabled - - "BSC: A12; DSMIF2: MCLK2; ETHER_ETH2: ETH2_CRS; GPT4: GTIOC4A; IRQ: IRQ5; MTU33: MTIOC3A; PHOSTIF: HA12; SCI2: RXD_MISO2; SCI2: SCL2" - None - - + P03_6 G4 - - - - Disabled - - "BSC: A11; DSMIF2: MDAT2; ETHER_ETH2: ETH2_COL; GPT4: GTIOC4B; IRQ: IRQ8; MTU33: MTIOC3B; PHOSTIF: HA11; SCI2: SDA2; SCI2: TXD_MOSI2; SPI1: SPI_SSL13; TRACE: TRACEDATA4" - None - - + P03_7 G5 - - - - Disabled - - "BSC: A10; ETHER_ETH2: ETH2_TXER; GPT5: GTIOC5A; IRQ: IRQ9; MTU33: MTIOC3C; PHOSTIF: HA10; SCI3: SCK3; TRACE: TRACEDATA5" - None - - + P04_0 H1 - - - - Disabled - - "BSC: A9; GPT5: GTIOC5B; MTU33: MTIOC3D; PHOSTIF: HA9; SCI3: RXD_MISO3; SCI3: SCL3; TRACE: TRACEDATA6" - None - - + P04_1 H2 GPIO LED_RED1 Low - "Output mode (Low & Not Into Input)" - - "BSC: CKIO; IIC2: IIC_SDA2; PHOSTIF: HCKIO; SCI3: SDA3; SCI3: TXD_MOSI3; SPI0: SPI_MOSI0" - IO - - + P04_4 H4 GPIO ETH_LED6 Low - "Output mode (Low & Not Into Input)" - - "BSC: A8; GPT: GTADSMP0; IRQ: IRQ10; MTU_POE3: POE10#; PHOSTIF: HA8; SCI3: CTS3#; SPI1: SPI_RSPCK1; TRACE: TRACEDATA7" - IO - - + P04_5 H3 - - - - Disabled - - "BSC: A7; ETHER_ESC: ESC_SYNC0; ETHER_ESC: ESC_SYNC1; ETHER_ETHSW: ETHSW_PTPOUT0; PHOSTIF: HA7; SCI3: DE3" - None - - + P04_6 H5 - - - - Disabled - - "BSC: A6; DMAC: DACK; ETHER_ETH1: ETH1_TXER; PHOSTIF: HA6; RTC: RTCAT1HZ" - None - - + P04_7 J1 - - - - Disabled - - "BSC: A5; ETHER_ETH0: ETH0_TXER; ETHER_ETH2: ETH2_TXER; PHOSTIF: HA5; SPI2: SPI_SSL21" - None - - + P05_0 J5 GPIO ETH_LED7 Low - "Output mode (Low & Not Into Input)" - - "BSC: A4; CANFD0: CANTXDP0; CMTW0: CMTW0_TOC0; DSMIF3: MCLK3; ETHER_ETH1: ETH1_CRS; GPT6: GTIOC6A; IRQ: IRQ12; MTU34: MTIOC4A; PHOSTIF: HA4; SCI5: CTS_RTS_SS5#; USB_HS: USB_VBUSEN" - IO - - + P05_1 J2 - - - - Disabled - - "BSC: A3; CANFD0: CANRXDP0; CMTW0: CMTW0_TIC1; DSMIF3: MDAT3; ETHER_ETH1: ETH1_COL; GPT6: GTIOC6B; IRQ: IRQ13; MTU34: MTIOC4B; PHOSTIF: HA3; SCI5: CTS5#; USB_HS: USB_EXICEN" - None - - + P05_2 J4 - SCL - - Disabled - - "BSC: A2; CANFD0: CANRX0; CMTW0: CMTW0_TOC0; DMAC: DREQ; ETHER_ETH0: ETH0_CRS; GPT7: GTIOC7A; GPT_POEG: GTETRGSA; IIC1: IIC_SCL1; IRQ: IRQ14; MTU34: MTIOC4C; PHOSTIF: HA2; SCI5: DE5; USB_HS: USB_VBUSEN" - None - - + P05_3 J3 - SDA - - Disabled - - "BSC: A1; CANFD0: CANTX0; CMTW0: CMTW0_TIC0; ETHER_ETH0: ETH0_COL; GPT7: GTIOC7B; GPT_POEG: GTETRGSB; IIC1: IIC_SDA1; IRQ: IRQ15; MTU34: MTIOC4D; MTU_POE3: POE11#; PHOSTIF: HA1; SCI4: SCK4; USB_HS: USB_EXICEN" - None - - + P05_4 K1 GPIO SW2 - - "Input mode" - - "BSC: A0; CANFD0: CANTXDP0; DMAC: DACK; ETHER_ETHSW: ETHSW_LPI0; GPT14: GTIOC14A; IRQ: IRQ12; PHOSTIF: HA0; SCI4: RXD_MISO4; SCI4: SCL4; SPI0: SPI_SSL00; USB_HS: USB_OVRCUR" - IO - - + P05_5 K2 - ETH1_LINK - - Disabled - - "CMTW0: CMTW0_TOC1; ETHER_ESC: ESC_PHYLINK1; ETHER_ETHSW: ETHSW_PHYLINK1; GPT14: GTIOC14B; SPI2: SPI_RSPCK2" - None - - + P05_6 K3 - - - - Disabled - - "CMTW1: CMTW1_TIC0; ETHER_ETH1: ETH1_RXER; GPT15: GTIOC15A; IRQ: IRQ12; SPI2: SPI_SSL22" - None - - + P05_7 M1 - ETH1_TXD2 - - Disabled - - "CMTW1: CMTW1_TOC1; ETHER_ETH1: ETH1_TXD2; GPT15: GTIOC15B; SCI4: SDA4; SCI4: TXD_MOSI4; SPI2: SPI_SSL23" - None - - + P06_0 L2 - ETH1_TXD3 - - Disabled - - "CANFD1: CANRX1; CMTW1: CMTW1_TOC0; ETHER_ETH1: ETH1_TXD3; GPT16: GTIOC16A; SCI4: CTS_RTS_SS4#; SPI2: SPI_SSL23" - None - - + P06_1 L3 - ETH1_REFCLK - - Disabled - - "CANFD1: CANTX1; ETHER_ETH1: ETH1_REFCLK; ETHER_ETH1: ETH1_RMII1_REFCLK; GPT16: GTIOC16B; SCI4: CTS4#; SPI2: SPI_SSL22" - None - - + P06_2 M2 - ETH1_TXD1 - - Disabled - - "CANFD1: CANRXDP1; ETHER_ETH1: ETH1_TXD1; GPT17: GTIOC17A" - None - - + P06_3 K4 - ETH1_TXD0 - - Disabled - - "CANFD1: CANTXDP1; CMTW1: CMTW1_TIC1; ETHER_ETH1: ETH1_TXD0; GPT17: GTIOC17B; SCI4: DE4; SPI1: SPI_MISO1" - None - - + P06_4 N1 - ETH1_TXCLK - - Disabled - - "ETHER_ETH1: ETH1_TXCLK_TXC; GPT11: GTIOC11A; SPI1: SPI_MOSI1" - None - - + P06_5 N2 - ETH1_TXEN - - Disabled - - "ETHER_ETH1: ETH1_TXEN_TXCTL; GPT11: GTIOC11B" - None - - + P06_6 L4 - ETH1_RXD0 - - Disabled - - "ETHER_ETH1: ETH1_RXD0; GPT12: GTIOC12A; SPI1: SPI_SSL10" - None - - + P06_7 M3 - ETH1_RXD1 - - Disabled - - "ETHER_ETH1: ETH1_RXD1; GPT12: GTIOC12B; SPI1: SPI_SSL11" - None - - + P07_0 P1 - ETH1_RXD2 - - Disabled - - "ETHER_ETH1: ETH1_RXD2; GPT13: GTIOC13A" - None - - + P07_1 N3 - ETH1_RXD3 - - Disabled - - "ETHER_ETH1: ETH1_RXD3; GPT13: GTIOC13B" - None - - + P07_2 P2 - ETH1_RXDV - - Disabled - - "ETHER_ETH1: ETH1_RXDV_CRSDV_RXCTL" - None - - + P07_3 M4 - ETH1_RXCLK - - Disabled - - "ETHER_ETH1: ETH1_RXCLK_REF_CLK_RXC" - None - - + P07_4 R2 - USB_VBUSIN - - Disabled - - "ADC0: ADTRG0#; IRQ: IRQ1; USB_HS: USB_VBUSIN" - None - - + P08_4 N4 - ETH0_RXD3 - - Disabled - - "ETHER_ETH0: ETH0_RXD3; MTU36: MTIOC6A" - None - - + P08_5 P3 - ETH0_RXDV - - Disabled - - "ETHER_ETH0: ETH0_RXDV_CRSDV_RXCTL; MTU36: MTIOC6B" - None - - + P08_6 M5 - ETH0_RXCLK - - Disabled - - "ETHER_ETH0: ETH0_RXCLK_REF_CLK_RXC; MTU36: MTIOC6C" - None - - + P08_7 N5 - ETH_MDC - - Disabled - - "ETHER_ESC: ESC_MDC; ETHER_ETHSW: ETHSW_MDC; ETHER_GMAC: GMAC_MDC; MTU36: MTIOC6D" - None - - + P09_0 P4 - ETH_MDIO - - Disabled - - "ETHER_ESC: ESC_MDIO; ETHER_ETHSW: ETHSW_MDIO; ETHER_GMAC: GMAC_MDIO; MTU37: MTIOC7A" - None - - + P09_1 R3 - ETH0_REFCLK - - Disabled - - "ETHER_ETH0: ETH0_REFCLK; ETHER_ETH0: ETH0_RMII0_REFCLK; MTU37: MTIOC7B" - None - - + P09_2 N6 - - - - Disabled - - "ETHER_ETH0: ETH0_RXER; IRQ: IRQ0; MTU37: MTIOC7C" - None - - + P09_3 R4 - ETH0_TXD3 - - Disabled - - "ETHER_ETH0: ETH0_TXD3; MTU37: MTIOC7D" - None - - + P09_4 M6 - ETH0_TXD2 - - Disabled - - "ETHER_ETH0: ETH0_TXD2" - None - - + P09_5 N7 - ETH0_TXD1 - - Disabled - - "ETHER_ETH0: ETH0_TXD1" - None - - + P09_6 M7 - ETH0_TXD0 - - Disabled - - "ETHER_ETH0: ETH0_TXD0" - None - - + P09_7 L7 - ETH0_TXCLK - - Disabled - - "ETHER_ETH0: ETH0_TXCLK_TXC" - None - - + P10_0 N8 - ETH0_TXEN - - Disabled - - "ETHER_ETH0: ETH0_TXEN_TXCTL" - None - - + P10_1 M8 - ETH0_RXD0 - - Disabled - - "ETHER_ETH0: ETH0_RXD0" - None - - + P10_2 L8 - ETH0_RXD1 - - Disabled - - "ETHER_ETH0: ETH0_RXD1" - None - - + P10_3 L9 - ETH0_RXD2 - - Disabled - - "ETHER_ETH0: ETH0_RXD2; RTC: RTCAT1HZ" - None - - + P10_4 M9 - ETH0_LINK - - Disabled - - "ETHER_ESC: ESC_PHYLINK0; ETHER_ETHSW: ETHSW_PHYLINK0; IRQ: IRQ11" - None - - + P12_4 N11 - - - - Disabled - - "BSC: D15; ETHER_ETH1: ETH1_CRS; GPT8: GTIOC8B; MBXSEM: MBX_HINT#; MTU38: MTIOC8B; SPI0: SPI_SSL01; TRACE: TRACEDATA0" - None - - + P13_2 L10 - EEPROM_SCL - - Disabled - - "BSC: A13; BSC: D9; DSMIF4: MCLK4; ETHER_ESC: ESC_I2CCLK; ETHER_ETHSW: ETHSW_PTPOUT2; GPT10: GTIOC10A; IIC0: IIC_SCL0; IRQ: IRQ5; MTU30: MTIOC0A; MTU_POE3: POE8#; SCI1: CTS_RTS_SS1#; SPI0: SPI_MISO0; TRACE: TRACEDATA6" - None - - + P13_3 N12 - EEPROM_SDA - - Disabled - - "BSC: D8; BSC: RD#; CMTW1: CMTW1_TOC0; DSMIF4: MDAT4; ETHER_ESC: ESC_I2CDATA; ETHER_ETHSW: ETHSW_PTPOUT3; GPT10: GTIOC10B; IIC0: IIC_SDA0; MTU30: MTIOC0B; MTU30: MTIOC0C; SCI1: CTS1#; SPI0: SPI_RSPCK0; TRACE: TRACEDATA7" - None - - + P13_4 L12 GPIO ESC_RESETOUT Low - "Output mode (Low & Not Into Input)" - - "BSC: A0; ETHER_ESC: ESC_RESETOUT#; GPT8: GTIOC8B; MTU30: MTIOC0D" - IO - - + P13_5 M12 GPIO SW3_Pin2 - - "Input mode" - - "ETHER_ESC: ESC_LATCH0; ETHER_ESC: ESC_LATCH1; ETHER_GMAC: GMAC_PTPTRG0; IIC2: IIC_SCL2; MTU3: MTCLKA; SPI1: SPI_RSPCK1; XSPI0: XSPI0_WP1#" - IO - - + P13_6 M13 GPIO SW3_Pin1 - - "Input mode" - - "ETHER_ESC: ESC_SYNC0; ETHER_ESC: ESC_SYNC1; ETHER_ETHSW: ETHSW_PTPOUT0; MTU3: MTCLKB; XSPI0: XSPI0_WP0#" - IO - - + P13_7 M11 GPIO SW3_Pin4 - - "Input mode" - - "ETHER_ESC: ESC_LATCH0; ETHER_ESC: ESC_LATCH1; ETHER_GMAC: GMAC_PTPTRG1; MBXSEM: MBX_HINT#; MTU3: MTCLKC; XSPI0: XSPI0_ECS1#" - IO - - + P14_0 L13 GPIO SW3_Pin3 Low - "Output mode (Low & Not Into Input)" - - "ETHER_ESC: ESC_SYNC0; ETHER_ESC: ESC_SYNC1; ETHER_ETHSW: ETHSW_PTPOUT1; MTU3: MTCLKD; XSPI0: XSPI0_INT0#" - IO - - + P14_1 L14 GPIO - Low - "Output mode (Low & Not Into Input)" - - "ETHER_ESC: ESC_LATCH0; ETHER_ESC: ESC_LATCH1; ETHER_ETH1: ETH1_COL; ETHER_GMAC: GMAC_PTPTRG1; GPT8: GTIOC8A; MTU38: MTIOC8A; SHOSTIF: HSPI_IO0; XSPI0: XSPI0_INT1#" - IO - - + P14_2 K12 XSPI0_XSPI0_ECS0# XSPI0_ECS Low - "Peripheral mode" - - "ETHER_ETH0: ETH0_CRS; ETHER_ETH2: ETH2_CRS; GPT8: GTIOC8B; IRQ: IRQ6; MTU38: MTIOC8B; SHOSTIF: HSPI_CK; XSPI0: XSPI0_ECS0#" - I - - + P14_3 M14 GPIO - Low - "Output mode (Low & Not Into Input)" - - "ETHER_ETH0: ETH0_COL; ETHER_ETH2: ETH2_COL; MTU30: MTIOC0A; SHOSTIF: HSPI_IO1; XSPI0: XSPI0_RSTO1#" - IO - - + P14_4 J13 XSPI0_XSPI0_DS XSPI0_DS High - "Peripheral mode" - - "BSC: BS#; ETHER_ESC: ESC_IRQ; MTU30: MTIOC0B; PHOSTIF: HBS#; XSPI0: XSPI0_DS" - IO - - + P14_5 J12 XSPI0_XSPI0_CKN XSPI0_CKN High - "Peripheral mode" - - "BSC: CS3#; MTU_POE3: POE8#; SHOSTIF: HSPI_INT#; XSPI0: XSPI0_CKN" - O - - + P14_6 K13 XSPI0_XSPI0_CKP XSPI0_CKP High - "Peripheral mode" - - "BSC: A21; XSPI0: XSPI0_CKP" - O - - + P14_7 M15 XSPI0_XSPI0_IO0 XSPI0_IO0 High - "Peripheral mode" - - "BSC: A22; BSC: BS#; SCI5: SCK5; SPI1: SPI_MISO1; XSPI0: XSPI0_IO0" - IO - - + P15_0 L11 XSPI0_XSPI0_IO1 XSPI0_IO1 High - "Peripheral mode" - - "BSC: A23; BSC: CKE; SCI5: RXD_MISO5; SCI5: SCL5; SPI1: SPI_MOSI1; XSPI0: XSPI0_IO1" - IO - - + P15_1 K14 XSPI0_XSPI0_IO2 XSPI0_IO2 High - "Peripheral mode" - - "BSC: A24; BSC: CAS#; MTU30: MTIOC0C; SCI5: SDA5; SCI5: TXD_MOSI5; SPI1: SPI_SSL10; XSPI0: XSPI0_IO2" - IO - - + P15_2 K15 XSPI0_XSPI0_IO3 XSPI0_IO3 High - "Peripheral mode" - - "BSC: A25; BSC: RAS#; MTU30: MTIOC0D; SCI5: CTS_RTS_SS5#; SPI1: SPI_SSL11; XSPI0: XSPI0_IO3" - IO - - + P15_3 K11 XSPI0_XSPI0_IO4 XSPI0_IO4 High - "Peripheral mode" - - "BSC: D11; DSMIF1: MCLK1; MTU38: MTIOC8C; XSPI0: XSPI0_IO4" - IO - - + P15_4 H13 XSPI0_XSPI0_IO5 XSPI0_IO5 High - "Peripheral mode" - - "BSC: D12; DSMIF1: MDAT1; MTU38: MTIOC8D; XSPI0: XSPI0_IO5" - IO - - + P15_5 J14 XSPI0_XSPI0_IO6 XSPI0_IO6 High - "Peripheral mode" - - "BSC: D13; DSMIF2: MCLK2; XSPI0: XSPI0_IO6" - IO - - + P15_6 H12 XSPI0_XSPI0_IO7 XSPI0_IO7 High - "Peripheral mode" - - "BSC: D14; DSMIF2: MDAT2; SPI1: SPI_SSL12; XSPI0: XSPI0_IO7" - IO - - + P15_7 J15 XSPI0_XSPI0_CS0# OSPI_CS High - "Peripheral mode" - - "DMAC: TEND; SCI5: CTS5#; SPI1: SPI_SSL13; XSPI0: XSPI0_CS0#" - O - - + P16_0 G13 XSPI0_XSPI0_CS1# ORAM_CS0 High - "Peripheral mode" - - "DSMIF3: MCLK3; ETHER_ETH0: ETH0_TXER; ETHER_ETH2: ETH2_REFCLK; SCI0: SDA0; SCI0: TXD_MOSI0; SHOSTIF: HSPI_CS#; SPI3: SPI_MOSI3; XSPI0: XSPI0_CS1#" - O - - + P16_1 H11 XSPI0_XSPI0_RESET0# XSPI0_RESET0 Low - "Peripheral mode" - - "ADC0: ADTRG0#; BSC: CS2#; CMTW0: CMTW0_TOC1; DSMIF3: MDAT3; PHOSTIF: HCS1#; SCI0: RXD_MISO0; SCI0: SCL0; SPI3: SPI_MISO3; XSPI0: XSPI0_RESET0#" - O - - + P16_2 H14 - - - - Disabled - - "IRQ: NMI; PHOSTIF: HERROUT#; SCI0: CTS0#; SHOSTIF: HSPI_IO2; SPI3: SPI_RSPCK3; USB_HS: USB_EXICEN; XSPI0: XSPI0_RESET1#" - None - - + P16_3 G12 GPIO SW1 - - "Input mode" - - "BSC: CS3#; ETHER_ETH1: ETH1_CRS; ETHER_ETH1: ETH1_TXER; GPT: GTADSMP1; IRQ: IRQ7; SCI0: SCK0; SHOSTIF: HSPI_IO3; SPI3: SPI_SSL30; XSPI0: XSPI0_RSTO0#" - IO - - + P16_5 H15 SCI0_TXD_MOSI0 UART_USB_TX High - "Peripheral mode" - - "BSC: A15; MTU35: MTIC5U; SCI0: SDA0; SCI0: TXD_MOSI0; SHOSTIF: HSPI_IO4" - IO - - + P16_6 G11 SCI0_RXD_MISO0 UART_USB_RX High - "Peripheral mode" - - "BSC: CS0#; IRQ: IRQ8; MTU35: MTIC5V; PHOSTIF: HCS0#; SCI0: RXD_MISO0; SCI0: SCL0; SHOSTIF: HSPI_IO5" - IO - - + P16_7 G14 - - - - Disabled - - "BSC: A13; MTU35: MTIC5W; PHOSTIF: HA13; SCI0: SCK0; XSPI1: XSPI1_IO0" - None - - + P17_0 F12 - - - - Disabled - - "ETHER_ESC: ESC_IRQ; SCI0: CTS_RTS_SS0#; XSPI1: XSPI1_IO1" - None - - + P17_3 F14 GPIO LED_RED2 Low - "Output mode (Low & Not Into Input)" - - "ADC1: ADTRG1#; DMAC: DREQ; GPT_POEG: GTETRGA; MTU_POE3: POE0#; SPI3: SPI_SSL31; TRACE: TRACECTL; XSPI1: XSPI1_IO2" - IO - - + P17_4 F13 - - - - Disabled - - "DMAC: DACK; GPT0: GTIOC0A; GPT_POEG: GTETRGB; MTU33: MTIOC3C; SCI3: CTS3#; SPI3: SPI_SSL32; TRACE: TRACECLK; XSPI1: XSPI1_IO3" - None - - + P17_5 F15 - USB_OVRCUR - - Disabled - - "DMAC: TEND; GPT0: GTIOC0B; GPT_POEG: GTETRGC; MTU33: MTIOC3A; USB_HS: USB_OVRCUR" - None - - + P17_6 G15 - - - - Disabled - - "BSC: RD_WR#; GPT1: GTIOC1A; MTU33: MTIOC3B; PHOSTIF: HWRSTB#; SCI3: SCK3; XSPI1: XSPI1_DS" - None - - + P17_7 E15 - SCI_RXD - - Disabled - - "BSC: RD#; DMAC: DACK; GPT2: GTIOC2A; GPT3: GTIOC3A; MTU34: MTIOC4A; MTU34: MTIOC4C; PHOSTIF: HRD#; SCI3: RXD_MISO3; SCI3: SCL3; XSPI1: XSPI1_CKP" - None - - + P18_0 E14 - SCI_TXD - - Disabled - - "BSC: WE0#_DQMLL; GPT2: GTIOC2A; GPT3: GTIOC3A; MTU34: MTIOC4A; MTU34: MTIOC4C; PHOSTIF: HWR0#; SCI3: SDA3; SCI3: TXD_MOSI3; SHOSTIF: HSPI_IO6" - None - - + P18_1 D15 - - - - Disabled - - "ADC1: ADTRG1#; BSC: WE1#_DQMLU; GPT1: GTIOC1B; IRQ: IRQ10; MTU33: MTIOC3D; PHOSTIF: HWR1#; SCI3: CTS_RTS_SS3#; SHOSTIF: HSPI_IO7" - None - - + P18_2 D14 GPIO LED_GREEN Low - "Output mode (Low & Not Into Input)" - - "BSC: BS#; ETHER_ETH1: ETH1_COL; GPT2: GTIOC2B; GPT3: GTIOC3B; IIC2: IIC_SDA2; MTU34: MTIOC4B; MTU34: MTIOC4D; SCI0: SCK0; XSPI1: XSPI1_CS0#" - IO - - + P18_3 E13 - - - - Disabled - - "BSC: CKE; CANFD1: CANRXDP1; CMTW1: CMTW1_TIC1; ETHER_ETH2: ETH2_CRS; GPT2: GTIOC2B; GPT3: GTIOC3B; IRQ: IRQ0; MTU34: MTIOC4B; MTU34: MTIOC4D; XSPI1: XSPI1_IO4" - None - - + P18_4 E12 - SCK - - Disabled - - "BSC: CAS#; CANFD0: CANTX0; ETHER_ETH1: ETH1_CRS; IRQ: IRQ1; MTU35: MTIC5U; SCI4: SDA4; SCI4: TXD_MOSI4; SPI2: SPI_RSPCK2; XSPI1: XSPI1_IO5" - None - - + P18_5 D13 - MOSI - - Disabled - - "BSC: RAS#; CANFD0: CANRX0; ETHER_ETH2: ETH2_COL; MTU35: MTIC5V; SCI4: RXD_MISO4; SCI4: SCL4; SPI2: SPI_MOSI2; TRACE: TRACECTL; XSPI1: XSPI1_IO6" - None - - + P18_6 C15 - MISO - - Disabled - - "ADC0: ADTRG0#; ETHER_ETH1: ETH1_COL; IIC2: IIC_SCL2; IRQ: IRQ11; MTU35: MTIC5W; SCI4: DE4; SCI4: SCK4; SPI2: SPI_MISO2; TRACE: TRACECLK; XSPI1: XSPI1_IO7" - None - - + P19_0 B15 - USB_VBUSEN - - Disabled - - "USB_HS: USB_VBUSEN" - None - - + P20_1 B9 - ETH_LED2_MDV0 - - Disabled - - "ETHER_ESC: ESC_LINKACT0; ETHER_ETHSW: ETHSW_PTPOUT3; ETHER_ETHSW: ETHSW_TDMAOUT0" - None - - + P20_2 D8 - ETH_LED0_MDV1 - - Disabled - - "ETHER_ESC: ESC_LEDRUN; ETHER_ESC: ESC_LEDSTER; ETHER_ETHSW: ETHSW_PTPOUT2; ETHER_ETHSW: ETHSW_TDMAOUT1; SCI3: DE3" - None - - + P20_3 D9 - ETH_LED1_MDV2 - - Disabled - - "ETHER_ESC: ESC_LEDERR; ETHER_ETHSW: ETHSW_PTPOUT1; ETHER_ETHSW: ETHSW_TDMAOUT2" - None - - + P20_4 A9 - ETH_LED3_MDV3 - - Disabled - - "ETHER_ESC: ESC_LINKACT1; ETHER_ETHSW: ETHSW_PTPOUT0; ETHER_ETHSW: ETHSW_TDMAOUT3" - None - - + P21_1 B8 - CS - - Disabled - - "BSC: D0; CMTW0: CMTW0_TIC0; DSMIF0: MCLK0; ETHER_ESC: ESC_SYNC0; ETHER_ESC: ESC_SYNC1; GPT14: GTIOC14A; IIC1: IIC_SCL1; MTU36: MTIOC6A; PHOSTIF: HD0; SCI5: SCK5; SHOSTIF: HSPI_INT#; SPI2: SPI_SSL20; TRACE: TRACEDATA0" - None - - + P21_2 C8 - - - - Disabled - - "BSC: D1; CMTW0: CMTW0_TIC1; DSMIF0: MDAT0; ETHER_ESC: ESC_SYNC0; ETHER_ESC: ESC_SYNC1; GPT14: GTIOC14B; IIC1: IIC_SDA1; MTU36: MTIOC6B; PHOSTIF: HD1; SCI5: RXD_MISO5; SCI5: SCL5; SPI2: SPI_MISO2; TRACE: TRACEDATA1" - None - - + P21_3 A8 - - - - Disabled - - "BSC: D2; DSMIF1: MCLK1; GPT15: GTIOC15A; IRQ: NMI; MTU36: MTIOC6C; PHOSTIF: HD2; SCI5: SDA5; SCI5: TXD_MOSI5; SPI3: SPI_SSL33; TRACE: TRACEDATA2" - None - - + P21_4 E7 - - - - Disabled - - "BSC: D3; DSMIF1: MDAT1; ETHER_ESC: ESC_SYNC0; ETHER_ESC: ESC_SYNC1; ETHER_ETHSW: ETHSW_PTPOUT1; GPT15: GTIOC15B; MBXSEM: MBX_HINT#; MTU36: MTIOC6D; PHOSTIF: HD3; SCI5: CTS_RTS_SS5#; SPI0: SPI_SSL02; TRACE: TRACEDATA3" - None - - + P21_5 C7 - - - - Disabled - - "ADC1: ADTRG1#; BSC: D4; CMTW1: CMTW1_TOC1; DSMIF2: MCLK2; GPT16: GTIOC16A; IRQ: IRQ6; MTU37: MTIOC7A; PHOSTIF: HD4; SCI5: CTS5#; SPI0: SPI_MISO0; TRACE: TRACEDATA4" - None - - + P21_6 D7 - - - - Disabled - - "BSC: D5; DMAC: TEND; DSMIF2: MDAT2; GPT16: GTIOC16B; IRQ: IRQ9; MTU37: MTIOC7B; PHOSTIF: HD5; SCI0: CTS0#; TRACE: TRACEDATA5" - None - - + P21_7 B7 - - - - Disabled - - "BSC: D6; DMAC: DREQ; DSMIF3: MCLK3; GPT17: GTIOC17A; IRQ: IRQ10; MTU37: MTIOC7C; PHOSTIF: HD6; SCI0: DE0; TRACE: TRACEDATA6" - None - - + P22_0 A7 - - - - Disabled - - "BSC: D7; DSMIF3: MDAT3; GPT17: GTIOC17B; IRQ: IRQ15; MTU37: MTIOC7D; PHOSTIF: HD7; SCI5: DE5; TRACE: TRACEDATA7" - None - - + P22_1 A6 GPIO ETH_LED5 Low - "Output mode (Low & Not Into Input)" - - "BSC: D8; ETHER_ESC: ESC_LINKACT2; GPT_POEG: GTETRGB; MTU_POE3: POE4#; PHOSTIF: HD8; SCI4: CTS_RTS_SS4#; TRACE: TRACECTL" - IO - - + P22_2 C6 - - - - Disabled - - "BSC: D9; DSMIF1: MCLK1; GPT_POEG: GTETRGSA; IRQ: IRQ4; MTU38: MTIOC8C; PHOSTIF: HD9; SPI1: SPI_SSL12; TRACE: TRACECLK" - None - - + P22_3 B6 GPIO LED_ORANGE Low - "Output mode (Low & Not Into Input)" - - "BSC: D10; GPT_POEG: GTETRGSB; MTU38: MTIOC8D; PHOSTIF: HD10; SCI5: RXD_MISO5; SCI5: SCL5" - IO - - + P23_7 D6 - ETH2_RXD0 - - Disabled - - "BSC: BS#; BSC: D11; DSMIF4: MCLK4; ETHER_ETH2: ETH2_RXD0; GPT_POEG: GTETRGA; MTU30: MTIOC0A; PHOSTIF: HD11; SCI1: SCK1" - None - - + P24_0 A5 - ETH2_RXD1 - - Disabled - - "BSC: CKE; BSC: D12; DMAC: DREQ; DSMIF4: MDAT4; ETHER_ETH2: ETH2_RXD1; GPT_POEG: GTETRGB; MTU30: MTIOC0B; PHOSTIF: HD12; SCI1: RXD_MISO1; SCI1: SCL1" - None - - + P24_1 B5 - ETH2_RXCLK - - Disabled - - "BSC: CAS#; BSC: D13; DSMIF5: MCLK5; ETHER_ETH2: ETH2_RXCLK_REF_CLK_RXC; GPT_POEG: GTETRGC; MTU30: MTIOC0C; MTU_POE3: POE8#; PHOSTIF: HD13" - None - - + P24_2 C5 - ETH2_RXD2 - - Disabled - - "BSC: D14; BSC: RAS#; DSMIF5: MDAT5; ETHER_ETH2: ETH2_RXD2; GPT_POEG: GTETRGD; MTU30: MTIOC0D; PHOSTIF: HD14; SCI1: SDA1; SCI1: TXD_MOSI1" - None - - + RES# P6 SYSTEM_RES# - - - - - - - - I "Read only" - + TRST# E2 SYSTEM_TRST# - - - - - - - - I "Read only" - + USB_DM P13 SYSTEM_USB_DM - - - - - - - - IO "Read only" - + USB_DP R13 SYSTEM_USB_DP - - - - - - - - IO "Read only" - + USB_RREF P15 SYSTEM_USB_RREF - - - - - - - - I "Read only" - + VCC1833_0 L6 SYSTEM_VCC1833_0 - - - - - - - - I "Read only" - + VCC1833_1 K5 SYSTEM_VCC1833_1 - - - - - - - - I "Read only" - + VCC1833_2 E5 SYSTEM_VCC1833_2 - - - - - - - - I "Read only" - + VCC1833_3 J11 SYSTEM_VCC1833_3 - - - - - - - - I "Read only" - + VCC1833_4 F11 SYSTEM_VCC1833_4 - - - - - - - - I "Read only" - + VCC18_ADC0 E11 SYSTEM_VCC18_ADC0 - - - - - - - - I "Read only" - + VCC18_ADC1 E9 SYSTEM_VCC18_ADC1 - - - - - - - - I "Read only" - + VCC18_PLL0 P9 SYSTEM_VCC18_PLL0 - - - - - - - - I "Read only" - + VCC18_PLL1 N9 SYSTEM_VCC18_PLL1 - - - - - - - - I "Read only" - + VCC18_USB P11 SYSTEM_VCC18_USB - - - - - - - - I "Read only" - + VCC33 E6 SYSTEM_VCC33 - - - - - - - - I "Read only" - + VCC33 E8 SYSTEM_VCC33 - - - - - - - - I "Read only" - + VCC33 M10 SYSTEM_VCC33 - - - - - - - - I "Read only" - + VCC33 L5 SYSTEM_VCC33 - - - - - - - - I "Read only" - + VCC33_USB R11 SYSTEM_VCC33_USB - - - - - - - - I "Read only" - + VDD H10 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD G10 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD F6 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD F8 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD F9 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD G6 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD F10 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD H6 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD J6 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD K6 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD K7 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD K8 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD K10 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD P7 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD J10 SYSTEM_VDD - - - - - - - - I "Read only" - + VREFH0 C11 SYSTEM_VREFH0 - - - - - - - - I "Read only" - + VREFH1 C10 SYSTEM_VREFH1 - - - - - - - - I "Read only" - + VSS A1 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS R1 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS A10 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS R5 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS A15 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS R9 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS F7 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS G7 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS G8 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS G9 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS N10 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS H7 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS N14 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS H8 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS H9 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS E10 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS J7 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS J8 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS J9 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS K9 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS D10 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS D11 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS L1 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS L15 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS P8 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS R15 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS_ADC D12 SYSTEM_VSS_ADC - - - - - - - - I "Read only" - + VSS_USB P12 SYSTEM_VSS_USB - - - - - - - - I "Read only" - + VSS_USB P14 SYSTEM_VSS_USB - - - - - - - - I "Read only" - + VSS_USB N13 SYSTEM_VSS_USB - - - - - - - - I "Read only" - + VSS_USB N15 SYSTEM_VSS_USB - - - - - - - - I "Read only" - + VSS_USB R12 SYSTEM_VSS_USB - - - - - - - - I "Read only" - + VSS_USB R14 SYSTEM_VSS_USB - - - - - - - - I "Read only" - + XTAL R8 CGC_XTAL - - - - - - - - O "Read only" - + R9A07G084M04GBG.pincfg -> + AN000 B13 SYSTEM_AN000 - - - - - - - - I "Read only" - + AN001 C12 SYSTEM_AN001 - - - - - - - - I "Read only" - + AN002 B14 SYSTEM_AN002 - - - - - - - - I "Read only" - + AN003 C13 SYSTEM_AN003 - - - - - - - - I "Read only" - + AN100 B12 SYSTEM_AN100 - - - - - - - - I "Read only" - + AN101 A14 SYSTEM_AN101 - - - - - - - - I "Read only" - + AN102 B11 SYSTEM_AN102 - - - - - - - - I "Read only" - + AN103 A13 SYSTEM_AN103 - - - - - - - - I "Read only" - + AN104 A12 SYSTEM_AN104 - - - - - - - - I "Read only" - + AN105 B10 SYSTEM_AN105 - - - - - - - - I "Read only" - + AN106 A11 SYSTEM_AN106 - - - - - - - - I "Read only" - + AN107 C9 SYSTEM_AN107 - - - - - - - - I "Read only" - + AVCC18_TSU C14 SYSTEM_AVCC18_TSU - - - - - - - - I "Read only" - + AVCC18_USB P10 SYSTEM_AVCC18_USB - - - - - - - - I "Read only" - + AVCC18_USB R10 SYSTEM_AVCC18_USB - - - - - - - - I "Read only" - + BSCANP G2 SYSTEM_BSCANP - - - - - - - - I "Read only" - + EXTAL R7 CGC_EXTAL - - - - - - - - I "Read only" - + EXTCLKIN R6 CGC_EXTCLKIN - - - - - - - - I "Read only" - + MDX P5 SYSTEM_MDX - - - - - - - - IO "Read only" - + P00_0 C4 - ETH2_RXD3 - - Disabled - - "BSC: D15; ETHER_ETH2: ETH2_RXD3; PHOSTIF: HD15; SCI2: DE2; SCI2: SCK2" - None - - + P00_1 D5 - ETH2_RXDV - - Disabled - - "BSC: A13; ETHER_ETH2: ETH2_RXDV_CRSDV_RXCTL; IRQ: IRQ0; MTU35: MTIC5U; SCI2: RXD_MISO2; SCI2: SCL2" - None - - + P00_2 A3 - ETH2_TXEN - - Disabled - - "BSC: RD#; ETHER_ETH2: ETH2_TXEN_TXCTL; MTU35: MTIC5V; SCI2: SDA2; SCI2: TXD_MOSI2; USB_HS: USB_OVRCUR" - None - - + P00_3 B3 - ETH2_REFCLK - - Disabled - - "BSC: RD_WR#; ETHER_ETH2: ETH2_REFCLK; ETHER_ETH2: ETH2_RMII2_REFCLK; IRQ: IRQ1; MTU35: MTIC5W; SCI2: CTS_RTS_SS2#" - None - - + P00_4 A4 - - - - Disabled - - "BSC: WAIT#; DSMIF0: MCLK0; ETHER_ETH2: ETH2_RXER; GPT0: GTIOC0A; IRQ: IRQ13; MTU33: MTIOC3A; PHOSTIF: HWAIT#" - None - - + P00_5 B4 - ETH2_LINK - - Disabled - - "BSC: CS0#; DSMIF0: MDAT0; ETHER_ESC: ESC_PHYLINK0; ETHER_ESC: ESC_PHYLINK2; ETHER_ETHSW: ETHSW_PHYLINK0; ETHER_ETHSW: ETHSW_PHYLINK2; GPT0: GTIOC0B; MTU33: MTIOC3C" - None - - + P00_6 C3 - ETH2_TXCLK - - Disabled - - "BSC: CS5#; ETHER_ETH2: ETH2_TXCLK_TXC; GPT1: GTIOC1A; MTU33: MTIOC3B" - None - - + P00_7 D4 - - - - Disabled - - "BSC: RAS#; GPT2: GTIOC2A; IRQ: IRQ13; MTU34: MTIOC4A" - None - - + P01_0 A2 - - - - Disabled - - "BSC: CAS#; DSMIF1: MCLK1; ETHER_ESC: ESC_MDIO; ETHER_ETHSW: ETHSW_MDIO; ETHER_GMAC: GMAC_MDIO; GPT3: GTIOC3A; MTU34: MTIOC4C; SCI2: CTS2#" - None - - + P01_1 D3 - - - - Disabled - - "BSC: CKE; DSMIF1: MDAT1; ETHER_ESC: ESC_MDC; ETHER_ETHSW: ETHSW_MDC; ETHER_GMAC: GMAC_MDC; GPT1: GTIOC1B; MTU33: MTIOC3D; SCI2: DE2" - None - - + P01_2 B2 - ETH2_TXD3 - - Disabled - - "BSC: CS2#; ETHER_ETH2: ETH2_TXD3; GPT2: GTIOC2B; IRQ: IRQ2; MTU34: MTIOC4B" - None - - + P01_3 C2 - ETH2_TXD2 - - Disabled - - "BSC: AH#; ETHER_ETH2: ETH2_TXD2; GPT3: GTIOC3B; MTU34: MTIOC4D" - None - - + P01_4 E4 - ETH2_TXD1 - - Disabled - - "BSC: WE1#_DQMLU; ETHER_ETH2: ETH2_TXD1; IRQ: IRQ3; MTU_POE3: POE0#" - None - - + P01_5 B1 - ETH2_TXD0 - - Disabled - - "BSC: WE0#_DQMLL; ETHER_ETH2: ETH2_TXD0" - None - - + P01_6 D2 - - - - Disabled - - "BSC: A20; CANFD1: CANTXDP1; ETHER_ESC: ESC_LATCH0; ETHER_ESC: ESC_LATCH1; ETHER_GMAC: GMAC_PTPTRG1; GPT9: GTIOC9A; MTU31: MTIOC1A; PHOSTIF: HA20; SCI1: CTS1#; TRACE: TRACEDATA0" - None - - + P01_7 C1 - CAN_RX - - Disabled - - "ADC0: ADTRG0#; BSC: A19; CANFD0: CANRX0; ETHER_ETHSW: ETHSW_LPI1; GPT9: GTIOC9B; MTU31: MTIOC1B; PHOSTIF: HA19; SCI1: SCK1; SPI3: SPI_RSPCK3; TRACE: TRACEDATA1" - None - - + P02_0 E3 - - - - Disabled - - "BSC: A18; CANFD1: CANTX1; ETHER_ETHSW: ETHSW_LPI2; GPT: GTADSML0; IRQ: IRQ4; PHOSTIF: HA18; SCI1: RXD_MISO1; SCI1: SCL1; SPI3: SPI_MISO3; TRACE: TRACEDATA2; USB_HS: USB_OTGID" - None - - + P02_1 D1 - - - - Disabled - - "BSC: A17; ETHER_ESC: ESC_SYNC0; ETHER_ESC: ESC_SYNC1; ETHER_ETHSW: ETHSW_PTPOUT1; PHOSTIF: HA17; SCI1: DE1" - None - - + P02_2 F3 - CAN_TX - - Disabled - - "BSC: A16; CANFD0: CANTX0; ETHER_ETHSW: ETHSW_TDMAOUT0; GPT10: GTIOC10A; IRQ: IRQ14; MTU32: MTIOC2A; MTU_POE3: POE10#; PHOSTIF: HA16; RTC: RTCAT1HZ; SCI1: SDA1; SCI1: TXD_MOSI1; SPI3: SPI_MOSI3" - None - - + P02_3 E1 - - - - Disabled - - "BSC: A15; BSC: AH#; CANFD1: CANRX1; ETHER_ETHSW: ETHSW_TDMAOUT1; GPT10: GTIOC10B; IRQ: IRQ15; MTU32: MTIOC2B; MTU_POE3: POE11#; PHOSTIF: HA15; SCI1: CTS_RTS_SS1#; SPI3: SPI_SSL30" - None - - + P02_4 F4 JTAG/SWD_TDO TDO High - "Peripheral mode" - - "BSC: WE0#_DQMLL; JTAG/SWD: TDO; SCI1: DE1; SPI3: SPI_SSL33" - O - - + P02_5 F2 JTAG/SWD_TDI TDI Low - "Peripheral mode" - - "BSC: WE1#_DQMLU; ETHER_ETHSW: ETHSW_TDMAOUT3; JTAG/SWD: TDI; SCI5: SCK5; SPI3: SPI_SSL31" - I - - + P02_6 F5 JTAG/SWD_TMS_SWDIO TMS High - "Peripheral mode" - - "JTAG/SWD: TMS_SWDIO; SCI5: RXD_MISO5; SCI5: SCL5" - IO - - + P02_7 F1 JTAG/SWD_TCK_SWCLK TCK Low - "Peripheral mode" - - "JTAG/SWD: TCK_SWCLK; SCI5: SDA5; SCI5: TXD_MOSI5" - I - - + P03_0 G3 - ETH_LED4 Low - Disabled - - "BSC: A14; BSC: CS5#; CANFD1: CANTXDP1; GPT: GTADSML1; IRQ: IRQ14; PHOSTIF: HA14; SCI2: SCK2; SPI3: SPI_SSL32; TRACE: TRACEDATA3" - IO - - + P03_5 G1 - - - - Disabled - - "BSC: A12; DSMIF2: MCLK2; ETHER_ETH2: ETH2_CRS; GPT4: GTIOC4A; IRQ: IRQ5; MTU33: MTIOC3A; PHOSTIF: HA12; SCI2: RXD_MISO2; SCI2: SCL2" - None - - + P03_6 G4 - - - - Disabled - - "BSC: A11; DSMIF2: MDAT2; ETHER_ETH2: ETH2_COL; GPT4: GTIOC4B; IRQ: IRQ8; MTU33: MTIOC3B; PHOSTIF: HA11; SCI2: SDA2; SCI2: TXD_MOSI2; SPI1: SPI_SSL13; TRACE: TRACEDATA4" - None - - + P03_7 G5 - - - - Disabled - - "BSC: A10; ETHER_ETH2: ETH2_TXER; GPT5: GTIOC5A; IRQ: IRQ9; MTU33: MTIOC3C; PHOSTIF: HA10; SCI3: SCK3; TRACE: TRACEDATA5" - None - - + P04_0 H1 - - - - Disabled - - "BSC: A9; GPT5: GTIOC5B; MTU33: MTIOC3D; PHOSTIF: HA9; SCI3: RXD_MISO3; SCI3: SCL3; TRACE: TRACEDATA6" - None - - + P04_1 H2 - LED_RED1 Low - Disabled - - "BSC: CKIO; IIC2: IIC_SDA2; PHOSTIF: HCKIO; SCI3: SDA3; SCI3: TXD_MOSI3; SPI0: SPI_MOSI0" - IO - - + P04_4 H4 - ETH_LED6 Low - Disabled - - "BSC: A8; GPT: GTADSMP0; IRQ: IRQ10; MTU_POE3: POE10#; PHOSTIF: HA8; SCI3: CTS3#; SPI1: SPI_RSPCK1; TRACE: TRACEDATA7" - IO - - + P04_5 H3 - - - - Disabled - - "BSC: A7; ETHER_ESC: ESC_SYNC0; ETHER_ESC: ESC_SYNC1; ETHER_ETHSW: ETHSW_PTPOUT0; PHOSTIF: HA7; SCI3: DE3" - None - - + P04_6 H5 - - - - Disabled - - "BSC: A6; DMAC: DACK; ETHER_ETH1: ETH1_TXER; PHOSTIF: HA6; RTC: RTCAT1HZ" - None - - + P04_7 J1 - - - - Disabled - - "BSC: A5; ETHER_ETH0: ETH0_TXER; ETHER_ETH2: ETH2_TXER; PHOSTIF: HA5; SPI2: SPI_SSL21" - None - - + P05_0 J5 - ETH_LED7 Low - Disabled - - "BSC: A4; CANFD0: CANTXDP0; CMTW0: CMTW0_TOC0; DSMIF3: MCLK3; ETHER_ETH1: ETH1_CRS; GPT6: GTIOC6A; IRQ: IRQ12; MTU34: MTIOC4A; PHOSTIF: HA4; SCI5: CTS_RTS_SS5#; USB_HS: USB_VBUSEN" - IO - - + P05_1 J2 - - - - Disabled - - "BSC: A3; CANFD0: CANRXDP0; CMTW0: CMTW0_TIC1; DSMIF3: MDAT3; ETHER_ETH1: ETH1_COL; GPT6: GTIOC6B; IRQ: IRQ13; MTU34: MTIOC4B; PHOSTIF: HA3; SCI5: CTS5#; USB_HS: USB_EXICEN" - None - - + P05_2 J4 - SCL - - Disabled - - "BSC: A2; CANFD0: CANRX0; CMTW0: CMTW0_TOC0; DMAC: DREQ; ETHER_ETH0: ETH0_CRS; GPT7: GTIOC7A; GPT_POEG: GTETRGSA; IIC1: IIC_SCL1; IRQ: IRQ14; MTU34: MTIOC4C; PHOSTIF: HA2; SCI5: DE5; USB_HS: USB_VBUSEN" - None - - + P05_3 J3 - SDA - - Disabled - - "BSC: A1; CANFD0: CANTX0; CMTW0: CMTW0_TIC0; ETHER_ETH0: ETH0_COL; GPT7: GTIOC7B; GPT_POEG: GTETRGSB; IIC1: IIC_SDA1; IRQ: IRQ15; MTU34: MTIOC4D; MTU_POE3: POE11#; PHOSTIF: HA1; SCI4: SCK4; USB_HS: USB_EXICEN" - None - - + P05_4 K1 - SW2 - - Disabled - - "BSC: A0; CANFD0: CANTXDP0; DMAC: DACK; ETHER_ETHSW: ETHSW_LPI0; GPT14: GTIOC14A; IRQ: IRQ12; PHOSTIF: HA0; SCI4: RXD_MISO4; SCI4: SCL4; SPI0: SPI_SSL00; USB_HS: USB_OVRCUR" - IO - - + P05_5 K2 - ETH1_LINK - - Disabled - - "CMTW0: CMTW0_TOC1; ETHER_ESC: ESC_PHYLINK1; ETHER_ETHSW: ETHSW_PHYLINK1; GPT14: GTIOC14B; SPI2: SPI_RSPCK2" - None - - + P05_6 K3 - - - - Disabled - - "CMTW1: CMTW1_TIC0; ETHER_ETH1: ETH1_RXER; GPT15: GTIOC15A; IRQ: IRQ12; SPI2: SPI_SSL22" - None - - + P05_7 M1 - ETH1_TXD2 - - Disabled - - "CMTW1: CMTW1_TOC1; ETHER_ETH1: ETH1_TXD2; GPT15: GTIOC15B; SCI4: SDA4; SCI4: TXD_MOSI4; SPI2: SPI_SSL23" - None - - + P06_0 L2 - ETH1_TXD3 - - Disabled - - "CANFD1: CANRX1; CMTW1: CMTW1_TOC0; ETHER_ETH1: ETH1_TXD3; GPT16: GTIOC16A; SCI4: CTS_RTS_SS4#; SPI2: SPI_SSL23" - None - - + P06_1 L3 - ETH1_REFCLK - - Disabled - - "CANFD1: CANTX1; ETHER_ETH1: ETH1_REFCLK; ETHER_ETH1: ETH1_RMII1_REFCLK; GPT16: GTIOC16B; SCI4: CTS4#; SPI2: SPI_SSL22" - None - - + P06_2 M2 - ETH1_TXD1 - - Disabled - - "CANFD1: CANRXDP1; ETHER_ETH1: ETH1_TXD1; GPT17: GTIOC17A" - None - - + P06_3 K4 - ETH1_TXD0 - - Disabled - - "CANFD1: CANTXDP1; CMTW1: CMTW1_TIC1; ETHER_ETH1: ETH1_TXD0; GPT17: GTIOC17B; SCI4: DE4; SPI1: SPI_MISO1" - None - - + P06_4 N1 - ETH1_TXCLK - - Disabled - - "ETHER_ETH1: ETH1_TXCLK_TXC; GPT11: GTIOC11A; SPI1: SPI_MOSI1" - None - - + P06_5 N2 - ETH1_TXEN - - Disabled - - "ETHER_ETH1: ETH1_TXEN_TXCTL; GPT11: GTIOC11B" - None - - + P06_6 L4 - ETH1_RXD0 - - Disabled - - "ETHER_ETH1: ETH1_RXD0; GPT12: GTIOC12A; SPI1: SPI_SSL10" - None - - + P06_7 M3 - ETH1_RXD1 - - Disabled - - "ETHER_ETH1: ETH1_RXD1; GPT12: GTIOC12B; SPI1: SPI_SSL11" - None - - + P07_0 P1 - ETH1_RXD2 - - Disabled - - "ETHER_ETH1: ETH1_RXD2; GPT13: GTIOC13A" - None - - + P07_1 N3 - ETH1_RXD3 - - Disabled - - "ETHER_ETH1: ETH1_RXD3; GPT13: GTIOC13B" - None - - + P07_2 P2 - ETH1_RXDV - - Disabled - - "ETHER_ETH1: ETH1_RXDV_CRSDV_RXCTL" - None - - + P07_3 M4 - ETH1_RXCLK - - Disabled - - "ETHER_ETH1: ETH1_RXCLK_REF_CLK_RXC" - None - - + P07_4 R2 - USB_VBUSIN - - Disabled - - "ADC0: ADTRG0#; IRQ: IRQ1; USB_HS: USB_VBUSIN" - None - - + P08_4 N4 - ETH0_RXD3 - - Disabled - - "ETHER_ETH0: ETH0_RXD3; MTU36: MTIOC6A" - None - - + P08_5 P3 - ETH0_RXDV - - Disabled - - "ETHER_ETH0: ETH0_RXDV_CRSDV_RXCTL; MTU36: MTIOC6B" - None - - + P08_6 M5 - ETH0_RXCLK - - Disabled - - "ETHER_ETH0: ETH0_RXCLK_REF_CLK_RXC; MTU36: MTIOC6C" - None - - + P08_7 N5 - ETH_MDC - - Disabled - - "ETHER_ESC: ESC_MDC; ETHER_ETHSW: ETHSW_MDC; ETHER_GMAC: GMAC_MDC; MTU36: MTIOC6D" - None - - + P09_0 P4 - ETH_MDIO - - Disabled - - "ETHER_ESC: ESC_MDIO; ETHER_ETHSW: ETHSW_MDIO; ETHER_GMAC: GMAC_MDIO; MTU37: MTIOC7A" - None - - + P09_1 R3 - ETH0_REFCLK - - Disabled - - "ETHER_ETH0: ETH0_REFCLK; ETHER_ETH0: ETH0_RMII0_REFCLK; MTU37: MTIOC7B" - None - - + P09_2 N6 - - - - Disabled - - "ETHER_ETH0: ETH0_RXER; IRQ: IRQ0; MTU37: MTIOC7C" - None - - + P09_3 R4 - ETH0_TXD3 - - Disabled - - "ETHER_ETH0: ETH0_TXD3; MTU37: MTIOC7D" - None - - + P09_4 M6 - ETH0_TXD2 - - Disabled - - "ETHER_ETH0: ETH0_TXD2" - None - - + P09_5 N7 - ETH0_TXD1 - - Disabled - - "ETHER_ETH0: ETH0_TXD1" - None - - + P09_6 M7 - ETH0_TXD0 - - Disabled - - "ETHER_ETH0: ETH0_TXD0" - None - - + P09_7 L7 - ETH0_TXCLK - - Disabled - - "ETHER_ETH0: ETH0_TXCLK_TXC" - None - - + P10_0 N8 - ETH0_TXEN - - Disabled - - "ETHER_ETH0: ETH0_TXEN_TXCTL" - None - - + P10_1 M8 - ETH0_RXD0 - - Disabled - - "ETHER_ETH0: ETH0_RXD0" - None - - + P10_2 L8 - ETH0_RXD1 - - Disabled - - "ETHER_ETH0: ETH0_RXD1" - None - - + P10_3 L9 - ETH0_RXD2 - - Disabled - - "ETHER_ETH0: ETH0_RXD2; RTC: RTCAT1HZ" - None - - + P10_4 M9 - ETH0_LINK - - Disabled - - "ETHER_ESC: ESC_PHYLINK0; ETHER_ETHSW: ETHSW_PHYLINK0; IRQ: IRQ11" - None - - + P12_4 N11 - - - - Disabled - - "BSC: D15; ETHER_ETH1: ETH1_CRS; GPT8: GTIOC8B; MBXSEM: MBX_HINT#; MTU38: MTIOC8B; SPI0: SPI_SSL01; TRACE: TRACEDATA0" - None - - + P13_2 L10 - EEPROM_SCL - - Disabled - - "BSC: A13; BSC: D9; DSMIF4: MCLK4; ETHER_ESC: ESC_I2CCLK; ETHER_ETHSW: ETHSW_PTPOUT2; GPT10: GTIOC10A; IIC0: IIC_SCL0; IRQ: IRQ5; MTU30: MTIOC0A; MTU_POE3: POE8#; SCI1: CTS_RTS_SS1#; SPI0: SPI_MISO0; TRACE: TRACEDATA6" - None - - + P13_3 N12 - EEPROM_SDA - - Disabled - - "BSC: D8; BSC: RD#; CMTW1: CMTW1_TOC0; DSMIF4: MDAT4; ETHER_ESC: ESC_I2CDATA; ETHER_ETHSW: ETHSW_PTPOUT3; GPT10: GTIOC10B; IIC0: IIC_SDA0; MTU30: MTIOC0B; MTU30: MTIOC0C; SCI1: CTS1#; SPI0: SPI_RSPCK0; TRACE: TRACEDATA7" - None - - + P13_4 L12 - ESC_RESETOUT Low - Disabled - - "BSC: A0; ETHER_ESC: ESC_RESETOUT#; GPT8: GTIOC8B; MTU30: MTIOC0D" - IO - - + P13_5 M12 - SW3_Pin2 - - Disabled - - "ETHER_ESC: ESC_LATCH0; ETHER_ESC: ESC_LATCH1; ETHER_GMAC: GMAC_PTPTRG0; IIC2: IIC_SCL2; MTU3: MTCLKA; SPI1: SPI_RSPCK1; XSPI0: XSPI0_WP1#" - IO - - + P13_6 M13 - SW3_Pin1 - - Disabled - - "ETHER_ESC: ESC_SYNC0; ETHER_ESC: ESC_SYNC1; ETHER_ETHSW: ETHSW_PTPOUT0; MTU3: MTCLKB; XSPI0: XSPI0_WP0#" - IO - - + P13_7 M11 - SW3_Pin4 - - Disabled - - "ETHER_ESC: ESC_LATCH0; ETHER_ESC: ESC_LATCH1; ETHER_GMAC: GMAC_PTPTRG1; MBXSEM: MBX_HINT#; MTU3: MTCLKC; XSPI0: XSPI0_ECS1#" - IO - - + P14_0 L13 - SW3_Pin3 Low - Disabled - - "ETHER_ESC: ESC_SYNC0; ETHER_ESC: ESC_SYNC1; ETHER_ETHSW: ETHSW_PTPOUT1; MTU3: MTCLKD; XSPI0: XSPI0_INT0#" - IO - - + P14_1 L14 - - Low - Disabled - - "ETHER_ESC: ESC_LATCH0; ETHER_ESC: ESC_LATCH1; ETHER_ETH1: ETH1_COL; ETHER_GMAC: GMAC_PTPTRG1; GPT8: GTIOC8A; MTU38: MTIOC8A; SHOSTIF: HSPI_IO0; XSPI0: XSPI0_INT1#" - IO - - + P14_2 K12 - XSPI0_ECS Low - Disabled - - "ETHER_ETH0: ETH0_CRS; ETHER_ETH2: ETH2_CRS; GPT8: GTIOC8B; IRQ: IRQ6; MTU38: MTIOC8B; SHOSTIF: HSPI_CK; XSPI0: XSPI0_ECS0#" - I - - + P14_3 M14 - - Low - Disabled - - "ETHER_ETH0: ETH0_COL; ETHER_ETH2: ETH2_COL; MTU30: MTIOC0A; SHOSTIF: HSPI_IO1; XSPI0: XSPI0_RSTO1#" - IO - - + P14_4 J13 - XSPI0_DS Low - Disabled - - "BSC: BS#; ETHER_ESC: ESC_IRQ; MTU30: MTIOC0B; PHOSTIF: HBS#; XSPI0: XSPI0_DS" - IO - - + P14_5 J12 - XSPI0_CKN Low - Disabled - - "BSC: CS3#; MTU_POE3: POE8#; SHOSTIF: HSPI_INT#; XSPI0: XSPI0_CKN" - O - - + P14_6 K13 - XSPI0_CKP Low - Disabled - - "BSC: A21; XSPI0: XSPI0_CKP" - O - - + P14_7 M15 - XSPI0_IO0 Low - Disabled - - "BSC: A22; BSC: BS#; SCI5: SCK5; SPI1: SPI_MISO1; XSPI0: XSPI0_IO0" - IO - - + P15_0 L11 - XSPI0_IO1 Low - Disabled - - "BSC: A23; BSC: CKE; SCI5: RXD_MISO5; SCI5: SCL5; SPI1: SPI_MOSI1; XSPI0: XSPI0_IO1" - IO - - + P15_1 K14 - XSPI0_IO2 Low - Disabled - - "BSC: A24; BSC: CAS#; MTU30: MTIOC0C; SCI5: SDA5; SCI5: TXD_MOSI5; SPI1: SPI_SSL10; XSPI0: XSPI0_IO2" - IO - - + P15_2 K15 - XSPI0_IO3 Low - Disabled - - "BSC: A25; BSC: RAS#; MTU30: MTIOC0D; SCI5: CTS_RTS_SS5#; SPI1: SPI_SSL11; XSPI0: XSPI0_IO3" - IO - - + P15_3 K11 - XSPI0_IO4 Low - Disabled - - "BSC: D11; DSMIF1: MCLK1; MTU38: MTIOC8C; XSPI0: XSPI0_IO4" - IO - - + P15_4 H13 - XSPI0_IO5 Low - Disabled - - "BSC: D12; DSMIF1: MDAT1; MTU38: MTIOC8D; XSPI0: XSPI0_IO5" - IO - - + P15_5 J14 - XSPI0_IO6 Low - Disabled - - "BSC: D13; DSMIF2: MCLK2; XSPI0: XSPI0_IO6" - IO - - + P15_6 H12 - XSPI0_IO7 Low - Disabled - - "BSC: D14; DSMIF2: MDAT2; SPI1: SPI_SSL12; XSPI0: XSPI0_IO7" - IO - - + P15_7 J15 - OSPI_CS Low - Disabled - - "DMAC: TEND; SCI5: CTS5#; SPI1: SPI_SSL13; XSPI0: XSPI0_CS0#" - O - - + P16_0 G13 - ORAM_CS0 Low - Disabled - - "DSMIF3: MCLK3; ETHER_ETH0: ETH0_TXER; ETHER_ETH2: ETH2_REFCLK; SCI0: SDA0; SCI0: TXD_MOSI0; SHOSTIF: HSPI_CS#; SPI3: SPI_MOSI3; XSPI0: XSPI0_CS1#" - O - - + P16_1 H11 - XSPI0_RESET0 Low - Disabled - - "ADC0: ADTRG0#; BSC: CS2#; CMTW0: CMTW0_TOC1; DSMIF3: MDAT3; PHOSTIF: HCS1#; SCI0: RXD_MISO0; SCI0: SCL0; SPI3: SPI_MISO3; XSPI0: XSPI0_RESET0#" - O - - + P16_2 H14 - - - - Disabled - - "IRQ: NMI; PHOSTIF: HERROUT#; SCI0: CTS0#; SHOSTIF: HSPI_IO2; SPI3: SPI_RSPCK3; USB_HS: USB_EXICEN; XSPI0: XSPI0_RESET1#" - None - - + P16_3 G12 - SW1 - - Disabled - - "BSC: CS3#; ETHER_ETH1: ETH1_CRS; ETHER_ETH1: ETH1_TXER; GPT: GTADSMP1; IRQ: IRQ7; SCI0: SCK0; SHOSTIF: HSPI_IO3; SPI3: SPI_SSL30; XSPI0: XSPI0_RSTO0#" - IO - - + P16_5 H15 - UART_USB_TX Low - Disabled - - "BSC: A15; MTU35: MTIC5U; SCI0: SDA0; SCI0: TXD_MOSI0; SHOSTIF: HSPI_IO4" - IO - - + P16_6 G11 - UART_USB_RX Low - Disabled - - "BSC: CS0#; IRQ: IRQ8; MTU35: MTIC5V; PHOSTIF: HCS0#; SCI0: RXD_MISO0; SCI0: SCL0; SHOSTIF: HSPI_IO5" - IO - - + P16_7 G14 - - - - Disabled - - "BSC: A13; MTU35: MTIC5W; PHOSTIF: HA13; SCI0: SCK0; XSPI1: XSPI1_IO0" - None - - + P17_0 F12 - - - - Disabled - - "ETHER_ESC: ESC_IRQ; SCI0: CTS_RTS_SS0#; XSPI1: XSPI1_IO1" - None - - + P17_3 F14 - LED_RED2 Low - Disabled - - "ADC1: ADTRG1#; DMAC: DREQ; GPT_POEG: GTETRGA; MTU_POE3: POE0#; SPI3: SPI_SSL31; TRACE: TRACECTL; XSPI1: XSPI1_IO2" - IO - - + P17_4 F13 - - - - Disabled - - "DMAC: DACK; GPT0: GTIOC0A; GPT_POEG: GTETRGB; MTU33: MTIOC3C; SCI3: CTS3#; SPI3: SPI_SSL32; TRACE: TRACECLK; XSPI1: XSPI1_IO3" - None - - + P17_5 F15 - USB_OVRCUR - - Disabled - - "DMAC: TEND; GPT0: GTIOC0B; GPT_POEG: GTETRGC; MTU33: MTIOC3A; USB_HS: USB_OVRCUR" - None - - + P17_6 G15 - - - - Disabled - - "BSC: RD_WR#; GPT1: GTIOC1A; MTU33: MTIOC3B; PHOSTIF: HWRSTB#; SCI3: SCK3; XSPI1: XSPI1_DS" - None - - + P17_7 E15 - SCI_RXD - - Disabled - - "BSC: RD#; DMAC: DACK; GPT2: GTIOC2A; GPT3: GTIOC3A; MTU34: MTIOC4A; MTU34: MTIOC4C; PHOSTIF: HRD#; SCI3: RXD_MISO3; SCI3: SCL3; XSPI1: XSPI1_CKP" - None - - + P18_0 E14 - SCI_TXD - - Disabled - - "BSC: WE0#_DQMLL; GPT2: GTIOC2A; GPT3: GTIOC3A; MTU34: MTIOC4A; MTU34: MTIOC4C; PHOSTIF: HWR0#; SCI3: SDA3; SCI3: TXD_MOSI3; SHOSTIF: HSPI_IO6" - None - - + P18_1 D15 - - - - Disabled - - "ADC1: ADTRG1#; BSC: WE1#_DQMLU; GPT1: GTIOC1B; IRQ: IRQ10; MTU33: MTIOC3D; PHOSTIF: HWR1#; SCI3: CTS_RTS_SS3#; SHOSTIF: HSPI_IO7" - None - - + P18_2 D14 - LED_GREEN Low - Disabled - - "BSC: BS#; ETHER_ETH1: ETH1_COL; GPT2: GTIOC2B; GPT3: GTIOC3B; IIC2: IIC_SDA2; MTU34: MTIOC4B; MTU34: MTIOC4D; SCI0: SCK0; XSPI1: XSPI1_CS0#" - IO - - + P18_3 E13 - - - - Disabled - - "BSC: CKE; CANFD1: CANRXDP1; CMTW1: CMTW1_TIC1; ETHER_ETH2: ETH2_CRS; GPT2: GTIOC2B; GPT3: GTIOC3B; IRQ: IRQ0; MTU34: MTIOC4B; MTU34: MTIOC4D; XSPI1: XSPI1_IO4" - None - - + P18_4 E12 - SCK - - Disabled - - "BSC: CAS#; CANFD0: CANTX0; ETHER_ETH1: ETH1_CRS; IRQ: IRQ1; MTU35: MTIC5U; SCI4: SDA4; SCI4: TXD_MOSI4; SPI2: SPI_RSPCK2; XSPI1: XSPI1_IO5" - None - - + P18_5 D13 - MOSI - - Disabled - - "BSC: RAS#; CANFD0: CANRX0; ETHER_ETH2: ETH2_COL; MTU35: MTIC5V; SCI4: RXD_MISO4; SCI4: SCL4; SPI2: SPI_MOSI2; TRACE: TRACECTL; XSPI1: XSPI1_IO6" - None - - + P18_6 C15 - MISO - - Disabled - - "ADC0: ADTRG0#; ETHER_ETH1: ETH1_COL; IIC2: IIC_SCL2; IRQ: IRQ11; MTU35: MTIC5W; SCI4: DE4; SCI4: SCK4; SPI2: SPI_MISO2; TRACE: TRACECLK; XSPI1: XSPI1_IO7" - None - - + P19_0 B15 - USB_VBUSEN - - Disabled - - "USB_HS: USB_VBUSEN" - None - - + P20_1 B9 - ETH_LED2_MDV0 - - Disabled - - "ETHER_ESC: ESC_LINKACT0; ETHER_ETHSW: ETHSW_PTPOUT3; ETHER_ETHSW: ETHSW_TDMAOUT0" - None - - + P20_2 D8 - ETH_LED0_MDV1 - - Disabled - - "ETHER_ESC: ESC_LEDRUN; ETHER_ESC: ESC_LEDSTER; ETHER_ETHSW: ETHSW_PTPOUT2; ETHER_ETHSW: ETHSW_TDMAOUT1; SCI3: DE3" - None - - + P20_3 D9 - ETH_LED1_MDV2 - - Disabled - - "ETHER_ESC: ESC_LEDERR; ETHER_ETHSW: ETHSW_PTPOUT1; ETHER_ETHSW: ETHSW_TDMAOUT2" - None - - + P20_4 A9 - ETH_LED3_MDV3 - - Disabled - - "ETHER_ESC: ESC_LINKACT1; ETHER_ETHSW: ETHSW_PTPOUT0; ETHER_ETHSW: ETHSW_TDMAOUT3" - None - - + P21_1 B8 - CS - - Disabled - - "BSC: D0; CMTW0: CMTW0_TIC0; DSMIF0: MCLK0; ETHER_ESC: ESC_SYNC0; ETHER_ESC: ESC_SYNC1; GPT14: GTIOC14A; IIC1: IIC_SCL1; MTU36: MTIOC6A; PHOSTIF: HD0; SCI5: SCK5; SHOSTIF: HSPI_INT#; SPI2: SPI_SSL20; TRACE: TRACEDATA0" - None - - + P21_2 C8 - - - - Disabled - - "BSC: D1; CMTW0: CMTW0_TIC1; DSMIF0: MDAT0; ETHER_ESC: ESC_SYNC0; ETHER_ESC: ESC_SYNC1; GPT14: GTIOC14B; IIC1: IIC_SDA1; MTU36: MTIOC6B; PHOSTIF: HD1; SCI5: RXD_MISO5; SCI5: SCL5; SPI2: SPI_MISO2; TRACE: TRACEDATA1" - None - - + P21_3 A8 - - - - Disabled - - "BSC: D2; DSMIF1: MCLK1; GPT15: GTIOC15A; IRQ: NMI; MTU36: MTIOC6C; PHOSTIF: HD2; SCI5: SDA5; SCI5: TXD_MOSI5; SPI3: SPI_SSL33; TRACE: TRACEDATA2" - None - - + P21_4 E7 - - - - Disabled - - "BSC: D3; DSMIF1: MDAT1; ETHER_ESC: ESC_SYNC0; ETHER_ESC: ESC_SYNC1; ETHER_ETHSW: ETHSW_PTPOUT1; GPT15: GTIOC15B; MBXSEM: MBX_HINT#; MTU36: MTIOC6D; PHOSTIF: HD3; SCI5: CTS_RTS_SS5#; SPI0: SPI_SSL02; TRACE: TRACEDATA3" - None - - + P21_5 C7 - - - - Disabled - - "ADC1: ADTRG1#; BSC: D4; CMTW1: CMTW1_TOC1; DSMIF2: MCLK2; GPT16: GTIOC16A; IRQ: IRQ6; MTU37: MTIOC7A; PHOSTIF: HD4; SCI5: CTS5#; SPI0: SPI_MISO0; TRACE: TRACEDATA4" - None - - + P21_6 D7 - - - - Disabled - - "BSC: D5; DMAC: TEND; DSMIF2: MDAT2; GPT16: GTIOC16B; IRQ: IRQ9; MTU37: MTIOC7B; PHOSTIF: HD5; SCI0: CTS0#; TRACE: TRACEDATA5" - None - - + P21_7 B7 - - - - Disabled - - "BSC: D6; DMAC: DREQ; DSMIF3: MCLK3; GPT17: GTIOC17A; IRQ: IRQ10; MTU37: MTIOC7C; PHOSTIF: HD6; SCI0: DE0; TRACE: TRACEDATA6" - None - - + P22_0 A7 - - - - Disabled - - "BSC: D7; DSMIF3: MDAT3; GPT17: GTIOC17B; IRQ: IRQ15; MTU37: MTIOC7D; PHOSTIF: HD7; SCI5: DE5; TRACE: TRACEDATA7" - None - - + P22_1 A6 - ETH_LED5 Low - Disabled - - "BSC: D8; ETHER_ESC: ESC_LINKACT2; GPT_POEG: GTETRGB; MTU_POE3: POE4#; PHOSTIF: HD8; SCI4: CTS_RTS_SS4#; TRACE: TRACECTL" - IO - - + P22_2 C6 - - - - Disabled - - "BSC: D9; DSMIF1: MCLK1; GPT_POEG: GTETRGSA; IRQ: IRQ4; MTU38: MTIOC8C; PHOSTIF: HD9; SPI1: SPI_SSL12; TRACE: TRACECLK" - None - - + P22_3 B6 - LED_ORANGE Low - Disabled - - "BSC: D10; GPT_POEG: GTETRGSB; MTU38: MTIOC8D; PHOSTIF: HD10; SCI5: RXD_MISO5; SCI5: SCL5" - IO - - + P23_7 D6 - ETH2_RXD0 - - Disabled - - "BSC: BS#; BSC: D11; DSMIF4: MCLK4; ETHER_ETH2: ETH2_RXD0; GPT_POEG: GTETRGA; MTU30: MTIOC0A; PHOSTIF: HD11; SCI1: SCK1" - None - - + P24_0 A5 - ETH2_RXD1 - - Disabled - - "BSC: CKE; BSC: D12; DMAC: DREQ; DSMIF4: MDAT4; ETHER_ETH2: ETH2_RXD1; GPT_POEG: GTETRGB; MTU30: MTIOC0B; PHOSTIF: HD12; SCI1: RXD_MISO1; SCI1: SCL1" - None - - + P24_1 B5 - ETH2_RXCLK - - Disabled - - "BSC: CAS#; BSC: D13; DSMIF5: MCLK5; ETHER_ETH2: ETH2_RXCLK_REF_CLK_RXC; GPT_POEG: GTETRGC; MTU30: MTIOC0C; MTU_POE3: POE8#; PHOSTIF: HD13" - None - - + P24_2 C5 - ETH2_RXD2 - - Disabled - - "BSC: D14; BSC: RAS#; DSMIF5: MDAT5; ETHER_ETH2: ETH2_RXD2; GPT_POEG: GTETRGD; MTU30: MTIOC0D; PHOSTIF: HD14; SCI1: SDA1; SCI1: TXD_MOSI1" - None - - + RES# P6 SYSTEM_RES# - - - - - - - - I "Read only" - + TRST# E2 SYSTEM_TRST# - - - - - - - - I "Read only" - + USB_DM P13 SYSTEM_USB_DM - - - - - - - - IO "Read only" - + USB_DP R13 SYSTEM_USB_DP - - - - - - - - IO "Read only" - + USB_RREF P15 SYSTEM_USB_RREF - - - - - - - - I "Read only" - + VCC1833_0 L6 SYSTEM_VCC1833_0 - - - - - - - - I "Read only" - + VCC1833_1 K5 SYSTEM_VCC1833_1 - - - - - - - - I "Read only" - + VCC1833_2 E5 SYSTEM_VCC1833_2 - - - - - - - - I "Read only" - + VCC1833_3 J11 SYSTEM_VCC1833_3 - - - - - - - - I "Read only" - + VCC1833_4 F11 SYSTEM_VCC1833_4 - - - - - - - - I "Read only" - + VCC18_ADC0 E11 SYSTEM_VCC18_ADC0 - - - - - - - - I "Read only" - + VCC18_ADC1 E9 SYSTEM_VCC18_ADC1 - - - - - - - - I "Read only" - + VCC18_PLL0 P9 SYSTEM_VCC18_PLL0 - - - - - - - - I "Read only" - + VCC18_PLL1 N9 SYSTEM_VCC18_PLL1 - - - - - - - - I "Read only" - + VCC18_USB P11 SYSTEM_VCC18_USB - - - - - - - - I "Read only" - + VCC33 E6 SYSTEM_VCC33 - - - - - - - - I "Read only" - + VCC33 E8 SYSTEM_VCC33 - - - - - - - - I "Read only" - + VCC33 M10 SYSTEM_VCC33 - - - - - - - - I "Read only" - + VCC33 L5 SYSTEM_VCC33 - - - - - - - - I "Read only" - + VCC33_USB R11 SYSTEM_VCC33_USB - - - - - - - - I "Read only" - + VDD H10 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD G10 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD F6 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD F8 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD F9 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD G6 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD F10 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD H6 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD J6 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD K6 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD K7 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD K8 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD K10 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD P7 SYSTEM_VDD - - - - - - - - I "Read only" - + VDD J10 SYSTEM_VDD - - - - - - - - I "Read only" - + VREFH0 C11 SYSTEM_VREFH0 - - - - - - - - I "Read only" - + VREFH1 C10 SYSTEM_VREFH1 - - - - - - - - I "Read only" - + VSS A1 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS R1 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS A10 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS R5 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS A15 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS R9 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS F7 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS G7 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS G8 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS G9 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS N10 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS H7 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS N14 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS H8 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS H9 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS E10 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS J7 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS J8 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS J9 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS K9 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS D10 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS D11 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS L1 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS L15 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS P8 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS R15 SYSTEM_VSS - - - - - - - - I "Read only" - + VSS_ADC D12 SYSTEM_VSS_ADC - - - - - - - - I "Read only" - + VSS_USB P12 SYSTEM_VSS_USB - - - - - - - - I "Read only" - + VSS_USB P14 SYSTEM_VSS_USB - - - - - - - - I "Read only" - + VSS_USB N13 SYSTEM_VSS_USB - - - - - - - - I "Read only" - + VSS_USB N15 SYSTEM_VSS_USB - - - - - - - - I "Read only" - + VSS_USB R12 SYSTEM_VSS_USB - - - - - - - - I "Read only" - + VSS_USB R14 SYSTEM_VSS_USB - - - - - - - - I "Read only" - + XTAL R8 CGC_XTAL - - - - - - - - O "Read only" - + + User Events + + User Event Links + + Module "I/O Port (r_ioport)" + Parameter Checking: Default (BSP) + + Module "Memory config check" + MPU/MMU Type: MPU + + Module "UART (r_sci_uart)" + Parameter Checking: Default (BSP) + FIFO Support: Enable + DMAC Support: Disable + Flow Control Support: Disable + Multiplex Interrupt: Disabled + + HAL + Instance "g_ioport I/O Port (r_ioport)" + General: Name: g_ioport + ELC Output Port Group 1: Trigger Source: Disabled + ELC Output Port Group 1: Port Selection: + ELC Output Port Group 1: Output Operation: Low output + ELC Output Port Group 2: Trigger Source: Disabled + ELC Output Port Group 2: Port Selection: + ELC Output Port Group 2: Output Operation: Low output + ELC Input Port Group 1: Trigger Source: Disabled + ELC Input Port Group 1: Event Link Control: Disabled + ELC Input Port Group 1: Port Selection: + ELC Input Port Group 1: Edge Detection: Rising edge + ELC Input Port Group 1: Buffer Overwrite: Disabled + ELC Input Port Group 1: Buffer Initial Value: P16_0: Low input + ELC Input Port Group 1: Buffer Initial Value: P16_1: Low input + ELC Input Port Group 1: Buffer Initial Value: P16_2: Low input + ELC Input Port Group 1: Buffer Initial Value: P16_3: Low input + ELC Input Port Group 1: Buffer Initial Value: P16_5: Low input + ELC Input Port Group 1: Buffer Initial Value: P16_6: Low input + ELC Input Port Group 1: Buffer Initial Value: P16_7: Low input + ELC Input Port Group 2: Trigger Source: Disabled + ELC Input Port Group 2: Event Link Control: Disabled + ELC Input Port Group 2: Port Selection: + ELC Input Port Group 2: Edge Detection: Rising edge + ELC Input Port Group 2: Buffer Overwrite: Disabled + ELC Input Port Group 2: Buffer Initial Value: P18_0: Low input + ELC Input Port Group 2: Buffer Initial Value: P18_1: Low input + ELC Input Port Group 2: Buffer Initial Value: P18_2: Low input + ELC Input Port Group 2: Buffer Initial Value: P18_3: Low input + ELC Input Port Group 2: Buffer Initial Value: P18_4: Low input + ELC Input Port Group 2: Buffer Initial Value: P18_5: Low input + ELC Input Port Group 2: Buffer Initial Value: P18_6: Low input + ELC Single Port 0: Common: Event Link Control: Disabled + ELC Single Port 0: Common: Event Direction: Output direction + ELC Single Port 0: Common: Port selection: P16_0 + ELC Single Port 0: Output Direction Setting: Trigger Source: Disabled + ELC Single Port 0: Output Direction Setting: Output Operation: Low output + ELC Single Port 0: Input Direction Setting: Edge Detection: Rising edge + ELC Single Port 1: Common: Event Link Control: Disabled + ELC Single Port 1: Common: Event Direction: Output direction + ELC Single Port 1: Common: Port selection: P16_0 + ELC Single Port 1: Output Direction Setting: Trigger Source: Disabled + ELC Single Port 1: Output Direction Setting: Output Operation: Low output + ELC Single Port 1: Input Direction Setting: Edge Detection: Rising edge + ELC Single Port 2: Common: Event Link Control: Disabled + ELC Single Port 2: Common: Event Direction: Output direction + ELC Single Port 2: Common: Port selection: P16_0 + ELC Single Port 2: Output Direction Setting: Trigger Source: Disabled + ELC Single Port 2: Output Direction Setting: Output Operation: Low output + ELC Single Port 2: Input Direction Setting: Edge Detection: Rising edge + ELC Single Port 3: Common: Event Link Control: Disabled + ELC Single Port 3: Common: Event Direction: Output direction + ELC Single Port 3: Common: Port selection: P16_0 + ELC Single Port 3: Output Direction Setting: Trigger Source: Disabled + ELC Single Port 3: Output Direction Setting: Output Operation: Low output + ELC Single Port 3: Input Direction Setting: Edge Detection: Rising edge + + Instance "Memory config check" + Instance "g_uart0 UART (r_sci_uart)" + General: Name: g_uart0 + General: Channel: 0 + General: Data Bits: 8bits + General: Parity: None + General: Stop Bits: 1bit + Baud: Baud Rate: 115200 + Baud: Baud Rate Modulation: Disabled + Baud: Max Error (%): 5 + Baud: Synchronizer Bypass: Not Bypassed (The operation clock is SCInASYNCCLK) + Flow Control: CTS/RTS Selection: Hardware RTS + Flow Control: Software RTS Port: Disabled + Flow Control: Software RTS Pin: Disabled + Extra: Clock Source: Internal Clock + Extra: Start bit detection: Falling Edge + Extra: Noise Filter: Disable + Extra: Receive FIFO Trigger Level: Max + Extra: RS-485: DE Pin: Disable + Extra: RS-485: DE Pin Polarity: Active High + Extra: RS-485: DE Pin Assertion Time: 1 + Extra: RS-485: DE Pin Negation Time: 1 + Interrupts: Callback: user_uart0_callback + Interrupts: Receive Interrupt Priority: Priority 12 + Interrupts: Transmit Data Empty Interrupt Priority: Priority 12 + Interrupts: Transmit End Interrupt Priority: Priority 12 + Interrupts: Error Interrupt Priority: Priority 12 + diff --git a/bsp/renesas/rzn2l_etherkit/rzn_cfg/SConscript b/bsp/renesas/rzn2l_etherkit/rzn_cfg/SConscript new file mode 100644 index 00000000000..8d63460c645 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_cfg/SConscript @@ -0,0 +1,19 @@ +Import('RTT_ROOT') +Import('rtconfig') +from building import * +from gcc import * + +cwd = GetCurrentDir() +src = [] +group = [] +CPPPATH = [] + +if rtconfig.PLATFORM in ['iccarm']: + Return('group') +elif rtconfig.PLATFORM in GetGCCLikePLATFORM(): + if GetOption('target') != 'mdk5': + src = Glob('*.c') + CPPPATH = [cwd+'/fsp_cfg', cwd + '/fsp_cfg/bsp'] + +group += DefineGroup('rz_cfg', src, depend = [''], CPPPATH = CPPPATH) +Return('group') diff --git a/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/board_cfg.h b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/board_cfg.h new file mode 100644 index 00000000000..b6d6335983d --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/board_cfg.h @@ -0,0 +1,25 @@ +/* generated configuration header file - do not edit */ +#ifndef BOARD_CFG_H_ +#define BOARD_CFG_H_ +#include "../../../rzn/board/rzn2l_rsk/board.h" + #define BSP_CFG_XSPI0_X1_BOOT (1) + #define BSP_CFG_CACHE_FLG (0x00000000) + #define BSP_CFG_CS0BCR_V_WRAPCFG_V (0x00000000) + #define BSP_CFG_CS0WCR_V_COMCFG_V (0x00000000) + #define BSP_CFG_DUMMY0_BMCFG_V (0x00000000) + #define BSP_CFG_BSC_FLG_xSPI_FLG (0x00000000) + #define BSP_CFG_LDR_ADDR_NML (0x6000004C) + #define BSP_CFG_LDR_SIZE_NML (0x00006000) + #define BSP_CFG_DEST_ADDR_NML (0x00102000) + #define BSP_CFG_DUMMY1 (0x00000000) + #define BSP_CFG_DUMMY2 (0x00000000) + #define BSP_CFG_DUMMY3_CSSCTL_V (0x0000003F) + #define BSP_CFG_DUMMY4_LIOCFGCS0_V (0x00070000) + #define BSP_CFG_DUMMY5 (0x00000000) + #define BSP_CFG_DUMMY6 (0x00000000) + #define BSP_CFG_DUMMY7 (0x00000000) + #define BSP_CFG_DUMMY8 (0x00000000) + #define BSP_CFG_DUMMY9 (0x00000000) + #define BSP_CFG_DUMMY10_ACCESS_SPEED (0x00000006) + #define BSP_CFG_CHECK_SUM (0xE0A8) +#endif /* BOARD_CFG_H_ */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_cfg.h b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_cfg.h new file mode 100644 index 00000000000..989932e34d3 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_cfg.h @@ -0,0 +1,37 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_CFG_H_ +#define BSP_CFG_H_ +#include "bsp_clock_cfg.h" + #include "bsp_mcu_family_cfg.h" + #include "board_cfg.h" + #define FSP_NOT_DEFINED 0 + #ifndef BSP_CFG_RTOS + #if (FSP_NOT_DEFINED) != (FSP_NOT_DEFINED) + #define BSP_CFG_RTOS (2) + #elif (FSP_NOT_DEFINED) != (FSP_NOT_DEFINED) + #define BSP_CFG_RTOS (1) + #else + #define BSP_CFG_RTOS (0) + #endif + #endif + #undef FSP_NOT_DEFINED + #define BSP_CFG_MCU_VCC_MV (3300) + + #define BSP_CFG_PARAM_CHECKING_ENABLE (0) + #define BSP_CFG_ASSERT (0) + #define BSP_CFG_ERROR_LOG (0) + + #define BSP_CFG_PORT_PROTECT (1) + + #define BSP_CFG_SOFT_RESET_SUPPORTED (0) + #define BSP_CFG_EARLY_INIT (0) + + #define BSP_CFG_MULTIPLEX_INTERRUPT_SUPPORTED (0) + #if BSP_CFG_MULTIPLEX_INTERRUPT_SUPPORTED + #define BSP_CFG_MULTIPLEX_INTERRUPT_ENABLE BSP_INTERRUPT_ENABLE + #define BSP_CFG_MULTIPLEX_INTERRUPT_DISABLE BSP_INTERRUPT_DISABLE + #else + #define BSP_CFG_MULTIPLEX_INTERRUPT_ENABLE + #define BSP_CFG_MULTIPLEX_INTERRUPT_DISABLE + #endif +#endif /* BSP_CFG_H_ */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h new file mode 100644 index 00000000000..d0551c4e16a --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_mcu_device_cfg.h @@ -0,0 +1,14 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_MCU_DEVICE_CFG_H_ +#define BSP_MCU_DEVICE_CFG_H_ +#define BSP_CFG_STACK_FIQ_BYTES (0x400) + #define BSP_CFG_STACK_IRQ_BYTES (0x400) + #define BSP_CFG_STACK_ABT_BYTES (0x400) + #define BSP_CFG_STACK_UND_BYTES (0x400) + #define BSP_CFG_STACK_SYS_BYTES (0x400) + #define BSP_CFG_STACK_SVC_BYTES (0x400) + #define BSP_CFG_HEAP_BYTES (0x2000) + + #define BSP_CFG_C_RUNTIME_INIT (1) + #define BSP_CFG_USE_TFU_MATHLIB ((1)) +#endif /* BSP_MCU_DEVICE_CFG_H_ */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_mcu_device_memory_cfg.h b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_mcu_device_memory_cfg.h new file mode 100644 index 00000000000..359058b8e74 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_mcu_device_memory_cfg.h @@ -0,0 +1,552 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_MCU_DEVICE_MEMORY_CFG_H_ +#define BSP_MCU_DEVICE_MEMORY_CFG_H_ +#define BSP_CFG_MPU0_READ0 (0) + #define BSP_CFG_MPU0_WRITE0 (0) + #define BSP_CFG_MPU0_STADD0 (0x00000000) + #define BSP_CFG_MPU0_ENDADD0 (0x00000C00) + #define BSP_CFG_MPU0_READ1 (0) + #define BSP_CFG_MPU0_WRITE1 (0) + #define BSP_CFG_MPU0_STADD1 (0x00000000) + #define BSP_CFG_MPU0_ENDADD1 (0x00000C00) + #define BSP_CFG_MPU0_READ2 (0) + #define BSP_CFG_MPU0_WRITE2 (0) + #define BSP_CFG_MPU0_STADD2 (0x00000000) + #define BSP_CFG_MPU0_ENDADD2 (0x00000C00) + #define BSP_CFG_MPU0_READ3 (0) + #define BSP_CFG_MPU0_WRITE3 (0) + #define BSP_CFG_MPU0_STADD3 (0x00000000) + #define BSP_CFG_MPU0_ENDADD3 (0x00000C00) + #define BSP_CFG_MPU0_READ4 (0) + #define BSP_CFG_MPU0_WRITE4 (0) + #define BSP_CFG_MPU0_STADD4 (0x00000000) + #define BSP_CFG_MPU0_ENDADD4 (0x00000C00) + #define BSP_CFG_MPU0_READ5 (0) + #define BSP_CFG_MPU0_WRITE5 (0) + #define BSP_CFG_MPU0_STADD5 (0x00000000) + #define BSP_CFG_MPU0_ENDADD5 (0x00000C00) + #define BSP_CFG_MPU0_READ6 (0) + #define BSP_CFG_MPU0_WRITE6 (0) + #define BSP_CFG_MPU0_STADD6 (0x00000000) + #define BSP_CFG_MPU0_ENDADD6 (0x00000C00) + #define BSP_CFG_MPU0_READ7 (0) + #define BSP_CFG_MPU0_WRITE7 (0) + #define BSP_CFG_MPU0_STADD7 (0x00000000) + #define BSP_CFG_MPU0_ENDADD7 (0x00000C00) + #define BSP_CFG_MPU1_READ0 (0) + #define BSP_CFG_MPU1_WRITE0 (0) + #define BSP_CFG_MPU1_STADD0 (0x00000000) + #define BSP_CFG_MPU1_ENDADD0 (0x00000C00) + #define BSP_CFG_MPU1_READ1 (0) + #define BSP_CFG_MPU1_WRITE1 (0) + #define BSP_CFG_MPU1_STADD1 (0x00000000) + #define BSP_CFG_MPU1_ENDADD1 (0x00000C00) + #define BSP_CFG_MPU1_READ2 (0) + #define BSP_CFG_MPU1_WRITE2 (0) + #define BSP_CFG_MPU1_STADD2 (0x00000000) + #define BSP_CFG_MPU1_ENDADD2 (0x00000C00) + #define BSP_CFG_MPU1_READ3 (0) + #define BSP_CFG_MPU1_WRITE3 (0) + #define BSP_CFG_MPU1_STADD3 (0x00000000) + #define BSP_CFG_MPU1_ENDADD3 (0x00000C00) + #define BSP_CFG_MPU1_READ4 (0) + #define BSP_CFG_MPU1_WRITE4 (0) + #define BSP_CFG_MPU1_STADD4 (0x00000000) + #define BSP_CFG_MPU1_ENDADD4 (0x00000C00) + #define BSP_CFG_MPU1_READ5 (0) + #define BSP_CFG_MPU1_WRITE5 (0) + #define BSP_CFG_MPU1_STADD5 (0x00000000) + #define BSP_CFG_MPU1_ENDADD5 (0x00000C00) + #define BSP_CFG_MPU1_READ6 (0) + #define BSP_CFG_MPU1_WRITE6 (0) + #define BSP_CFG_MPU1_STADD6 (0x00000000) + #define BSP_CFG_MPU1_ENDADD6 (0x00000C00) + #define BSP_CFG_MPU1_READ7 (0) + #define BSP_CFG_MPU1_WRITE7 (0) + #define BSP_CFG_MPU1_STADD7 (0x00000000) + #define BSP_CFG_MPU1_ENDADD7 (0x00000C00) + #define BSP_CFG_MPU2_READ0 (0) + #define BSP_CFG_MPU2_WRITE0 (0) + #define BSP_CFG_MPU2_STADD0 (0x00000000) + #define BSP_CFG_MPU2_ENDADD0 (0x00000C00) + #define BSP_CFG_MPU2_READ1 (0) + #define BSP_CFG_MPU2_WRITE1 (0) + #define BSP_CFG_MPU2_STADD1 (0x00000000) + #define BSP_CFG_MPU2_ENDADD1 (0x00000C00) + #define BSP_CFG_MPU2_READ2 (0) + #define BSP_CFG_MPU2_WRITE2 (0) + #define BSP_CFG_MPU2_STADD2 (0x00000000) + #define BSP_CFG_MPU2_ENDADD2 (0x00000C00) + #define BSP_CFG_MPU2_READ3 (0) + #define BSP_CFG_MPU2_WRITE3 (0) + #define BSP_CFG_MPU2_STADD3 (0x00000000) + #define BSP_CFG_MPU2_ENDADD3 (0x00000C00) + #define BSP_CFG_MPU2_READ4 (0) + #define BSP_CFG_MPU2_WRITE4 (0) + #define BSP_CFG_MPU2_STADD4 (0x00000000) + #define BSP_CFG_MPU2_ENDADD4 (0x00000C00) + #define BSP_CFG_MPU2_READ5 (0) + #define BSP_CFG_MPU2_WRITE5 (0) + #define BSP_CFG_MPU2_STADD5 (0x00000000) + #define BSP_CFG_MPU2_ENDADD5 (0x00000C00) + #define BSP_CFG_MPU2_READ6 (0) + #define BSP_CFG_MPU2_WRITE6 (0) + #define BSP_CFG_MPU2_STADD6 (0x00000000) + #define BSP_CFG_MPU2_ENDADD6 (0x00000C00) + #define BSP_CFG_MPU2_READ7 (0) + #define BSP_CFG_MPU2_WRITE7 (0) + #define BSP_CFG_MPU2_STADD7 (0x00000000) + #define BSP_CFG_MPU2_ENDADD7 (0x00000C00) + #define BSP_CFG_MPU3_READ0 (0) + #define BSP_CFG_MPU3_WRITE0 (0) + #define BSP_CFG_MPU3_STADD0 (0x00000000) + #define BSP_CFG_MPU3_ENDADD0 (0x00000000) + #define BSP_CFG_MPU3_READ1 (0) + #define BSP_CFG_MPU3_WRITE1 (0) + #define BSP_CFG_MPU3_STADD1 (0x00000000) + #define BSP_CFG_MPU3_ENDADD1 (0x00000000) + #define BSP_CFG_MPU3_READ2 (0) + #define BSP_CFG_MPU3_WRITE2 (0) + #define BSP_CFG_MPU3_STADD2 (0x00000000) + #define BSP_CFG_MPU3_ENDADD2 (0x00000000) + #define BSP_CFG_MPU3_READ3 (0) + #define BSP_CFG_MPU3_WRITE3 (0) + #define BSP_CFG_MPU3_STADD3 (0x00000000) + #define BSP_CFG_MPU3_ENDADD3 (0x00000000) + #define BSP_CFG_MPU3_READ4 (0) + #define BSP_CFG_MPU3_WRITE4 (0) + #define BSP_CFG_MPU3_STADD4 (0x00000000) + #define BSP_CFG_MPU3_ENDADD4 (0x00000000) + #define BSP_CFG_MPU3_READ5 (0) + #define BSP_CFG_MPU3_WRITE5 (0) + #define BSP_CFG_MPU3_STADD5 (0x00000000) + #define BSP_CFG_MPU3_ENDADD5 (0x00000000) + #define BSP_CFG_MPU3_READ6 (0) + #define BSP_CFG_MPU3_WRITE6 (0) + #define BSP_CFG_MPU3_STADD6 (0x00000000) + #define BSP_CFG_MPU3_ENDADD6 (0x00000000) + #define BSP_CFG_MPU3_READ7 (0) + #define BSP_CFG_MPU3_WRITE7 (0) + #define BSP_CFG_MPU3_STADD7 (0x00000000) + #define BSP_CFG_MPU3_ENDADD7 (0x00000000) + #define BSP_CFG_MPU4_READ0 (0) + #define BSP_CFG_MPU4_WRITE0 (0) + #define BSP_CFG_MPU4_STADD0 (0x00000000) + #define BSP_CFG_MPU4_ENDADD0 (0x00000000) + #define BSP_CFG_MPU4_READ1 (0) + #define BSP_CFG_MPU4_WRITE1 (0) + #define BSP_CFG_MPU4_STADD1 (0x00000000) + #define BSP_CFG_MPU4_ENDADD1 (0x00000000) + #define BSP_CFG_MPU4_READ2 (0) + #define BSP_CFG_MPU4_WRITE2 (0) + #define BSP_CFG_MPU4_STADD2 (0x00000000) + #define BSP_CFG_MPU4_ENDADD2 (0x00000000) + #define BSP_CFG_MPU4_READ3 (0) + #define BSP_CFG_MPU4_WRITE3 (0) + #define BSP_CFG_MPU4_STADD3 (0x00000000) + #define BSP_CFG_MPU4_ENDADD3 (0x00000000) + #define BSP_CFG_MPU4_READ4 (0) + #define BSP_CFG_MPU4_WRITE4 (0) + #define BSP_CFG_MPU4_STADD4 (0x00000000) + #define BSP_CFG_MPU4_ENDADD4 (0x00000000) + #define BSP_CFG_MPU4_READ5 (0) + #define BSP_CFG_MPU4_WRITE5 (0) + #define BSP_CFG_MPU4_STADD5 (0x00000000) + #define BSP_CFG_MPU4_ENDADD5 (0x00000000) + #define BSP_CFG_MPU4_READ6 (0) + #define BSP_CFG_MPU4_WRITE6 (0) + #define BSP_CFG_MPU4_STADD6 (0x00000000) + #define BSP_CFG_MPU4_ENDADD6 (0x00000000) + #define BSP_CFG_MPU4_READ7 (0) + #define BSP_CFG_MPU4_WRITE7 (0) + #define BSP_CFG_MPU4_STADD7 (0x00000000) + #define BSP_CFG_MPU4_ENDADD7 (0x00000000) + #define BSP_CFG_MPU6_READ0 (0) + #define BSP_CFG_MPU6_WRITE0 (0) + #define BSP_CFG_MPU6_STADD0 (0x00000000) + #define BSP_CFG_MPU6_ENDADD0 (0x00000C00) + #define BSP_CFG_MPU6_READ1 (0) + #define BSP_CFG_MPU6_WRITE1 (0) + #define BSP_CFG_MPU6_STADD1 (0x00000000) + #define BSP_CFG_MPU6_ENDADD1 (0x00000C00) + #define BSP_CFG_MPU6_READ2 (0) + #define BSP_CFG_MPU6_WRITE2 (0) + #define BSP_CFG_MPU6_STADD2 (0x00000000) + #define BSP_CFG_MPU6_ENDADD2 (0x00000C00) + #define BSP_CFG_MPU6_READ3 (0) + #define BSP_CFG_MPU6_WRITE3 (0) + #define BSP_CFG_MPU6_STADD3 (0x00000000) + #define BSP_CFG_MPU6_ENDADD3 (0x00000C00) + #define BSP_CFG_MPU6_READ4 (0) + #define BSP_CFG_MPU6_WRITE4 (0) + #define BSP_CFG_MPU6_STADD4 (0x00000000) + #define BSP_CFG_MPU6_ENDADD4 (0x00000C00) + #define BSP_CFG_MPU6_READ5 (0) + #define BSP_CFG_MPU6_WRITE5 (0) + #define BSP_CFG_MPU6_STADD5 (0x00000000) + #define BSP_CFG_MPU6_ENDADD5 (0x00000C00) + #define BSP_CFG_MPU6_READ6 (0) + #define BSP_CFG_MPU6_WRITE6 (0) + #define BSP_CFG_MPU6_STADD6 (0x00000000) + #define BSP_CFG_MPU6_ENDADD6 (0x00000C00) + #define BSP_CFG_MPU6_READ7 (0) + #define BSP_CFG_MPU6_WRITE7 (0) + #define BSP_CFG_MPU6_STADD7 (0x00000000) + #define BSP_CFG_MPU6_ENDADD7 (0x00000C00) + #define BSP_CFG_MPU7_READ0 (0) + #define BSP_CFG_MPU7_WRITE0 (0) + #define BSP_CFG_MPU7_STADD0 (0x00000000) + #define BSP_CFG_MPU7_ENDADD0 (0x00000000) + #define BSP_CFG_MPU7_READ1 (0) + #define BSP_CFG_MPU7_WRITE1 (0) + #define BSP_CFG_MPU7_STADD1 (0x00000000) + #define BSP_CFG_MPU7_ENDADD1 (0x00000000) + #define BSP_CFG_MPU7_READ2 (0) + #define BSP_CFG_MPU7_WRITE2 (0) + #define BSP_CFG_MPU7_STADD2 (0x00000000) + #define BSP_CFG_MPU7_ENDADD2 (0x00000000) + #define BSP_CFG_MPU7_READ3 (0) + #define BSP_CFG_MPU7_WRITE3 (0) + #define BSP_CFG_MPU7_STADD3 (0x00000000) + #define BSP_CFG_MPU7_ENDADD3 (0x00000000) + #define BSP_CFG_MPU7_READ4 (0) + #define BSP_CFG_MPU7_WRITE4 (0) + #define BSP_CFG_MPU7_STADD4 (0x00000000) + #define BSP_CFG_MPU7_ENDADD4 (0x00000000) + #define BSP_CFG_MPU7_READ5 (0) + #define BSP_CFG_MPU7_WRITE5 (0) + #define BSP_CFG_MPU7_STADD5 (0x00000000) + #define BSP_CFG_MPU7_ENDADD5 (0x00000000) + #define BSP_CFG_MPU7_READ6 (0) + #define BSP_CFG_MPU7_WRITE6 (0) + #define BSP_CFG_MPU7_STADD6 (0x00000000) + #define BSP_CFG_MPU7_ENDADD6 (0x00000000) + #define BSP_CFG_MPU7_READ7 (0) + #define BSP_CFG_MPU7_WRITE7 (0) + #define BSP_CFG_MPU7_STADD7 (0x00000000) + #define BSP_CFG_MPU7_ENDADD7 (0x00000000) + #define BSP_CFG_MPU8_READ0 (0) + #define BSP_CFG_MPU8_WRITE0 (0) + #define BSP_CFG_MPU8_STADD0 (0x00000000) + #define BSP_CFG_MPU8_ENDADD0 (0x00000000) + #define BSP_CFG_MPU8_READ1 (0) + #define BSP_CFG_MPU8_WRITE1 (0) + #define BSP_CFG_MPU8_STADD1 (0x00000000) + #define BSP_CFG_MPU8_ENDADD1 (0x00000000) + #define BSP_CFG_MPU8_READ2 (0) + #define BSP_CFG_MPU8_WRITE2 (0) + #define BSP_CFG_MPU8_STADD2 (0x00000000) + #define BSP_CFG_MPU8_ENDADD2 (0x00000000) + #define BSP_CFG_MPU8_READ3 (0) + #define BSP_CFG_MPU8_WRITE3 (0) + #define BSP_CFG_MPU8_STADD3 (0x00000000) + #define BSP_CFG_MPU8_ENDADD3 (0x00000000) + #define BSP_CFG_MPU8_READ4 (0) + #define BSP_CFG_MPU8_WRITE4 (0) + #define BSP_CFG_MPU8_STADD4 (0x00000000) + #define BSP_CFG_MPU8_ENDADD4 (0x00000000) + #define BSP_CFG_MPU8_READ5 (0) + #define BSP_CFG_MPU8_WRITE5 (0) + #define BSP_CFG_MPU8_STADD5 (0x00000000) + #define BSP_CFG_MPU8_ENDADD5 (0x00000000) + #define BSP_CFG_MPU8_READ6 (0) + #define BSP_CFG_MPU8_WRITE6 (0) + #define BSP_CFG_MPU8_STADD6 (0x00000000) + #define BSP_CFG_MPU8_ENDADD6 (0x00000000) + #define BSP_CFG_MPU8_READ7 (0) + #define BSP_CFG_MPU8_WRITE7 (0) + #define BSP_CFG_MPU8_STADD7 (0x00000000) + #define BSP_CFG_MPU8_ENDADD7 (0x00000000) + + #define BSP_CFG_CPU_MPU_ATTR0_TYPE (BSP_TYPE_NORMAL_MEMORY) + #define BSP_CFG_CPU_MPU_ATTR0_INNER (BSP_WRITE_BACK_NON_TRANSIENT) + #define BSP_CFG_CPU_MPU_ATTR0_INNER_READ (BSP_READ_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR0_INNER_WRITE (BSP_WRITE_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR0_OUTER (BSP_WRITE_BACK_NON_TRANSIENT) + #define BSP_CFG_CPU_MPU_ATTR0_OUTER_READ (BSP_READ_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR0_OUTER_WRITE (BSP_WRITE_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR0_DEVICE_TYPE (BSP_DEVICE_NGNRNE) + + #define BSP_CFG_CPU_MPU_ATTR1_TYPE (BSP_TYPE_NORMAL_MEMORY) + #define BSP_CFG_CPU_MPU_ATTR1_INNER (BSP_WRITE_NON_THROUGH) + #define BSP_CFG_CPU_MPU_ATTR1_INNER_READ (BSP_READ_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR1_INNER_WRITE (BSP_WRITE_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR1_OUTER (BSP_WRITE_NON_THROUGH) + #define BSP_CFG_CPU_MPU_ATTR1_OUTER_READ (BSP_READ_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR1_OUTER_WRITE (BSP_WRITE_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR1_DEVICE_TYPE (BSP_DEVICE_NGNRNE) + + #define BSP_CFG_CPU_MPU_ATTR2_TYPE (BSP_TYPE_NORMAL_MEMORY) + #define BSP_CFG_CPU_MPU_ATTR2_INNER (BSP_WRITE_NON_THROUGH) + #define BSP_CFG_CPU_MPU_ATTR2_INNER_READ (BSP_READ_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR2_INNER_WRITE (BSP_WRITE_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR2_OUTER (BSP_WRITE_NON_THROUGH) + #define BSP_CFG_CPU_MPU_ATTR2_OUTER_READ (BSP_READ_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR2_OUTER_WRITE (BSP_WRITE_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR2_DEVICE_TYPE (BSP_DEVICE_NGNRNE) + + #define BSP_CFG_CPU_MPU_ATTR3_TYPE (BSP_TYPE_NORMAL_MEMORY) + #define BSP_CFG_CPU_MPU_ATTR3_INNER (BSP_NON_CACHEABLE) + #define BSP_CFG_CPU_MPU_ATTR3_INNER_READ (BSP_READ_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR3_INNER_WRITE (BSP_WRITE_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR3_OUTER (BSP_NON_CACHEABLE) + #define BSP_CFG_CPU_MPU_ATTR3_OUTER_READ (BSP_READ_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR3_OUTER_WRITE (BSP_WRITE_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR3_DEVICE_TYPE (BSP_DEVICE_NGNRNE) + + #define BSP_CFG_CPU_MPU_ATTR4_TYPE (BSP_TYPE_DEVICE_MEMORY) + #define BSP_CFG_CPU_MPU_ATTR4_INNER (BSP_WRITE_THROUGH_TRANSIENT) + #define BSP_CFG_CPU_MPU_ATTR4_INNER_READ (BSP_READ_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR4_INNER_WRITE (BSP_WRITE_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR4_OUTER (BSP_WRITE_THROUGH_TRANSIENT) + #define BSP_CFG_CPU_MPU_ATTR4_OUTER_READ (BSP_READ_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR4_OUTER_WRITE (BSP_WRITE_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR4_DEVICE_TYPE (BSP_DEVICE_NGNRNE) + + #define BSP_CFG_CPU_MPU_ATTR5_TYPE (BSP_TYPE_DEVICE_MEMORY) + #define BSP_CFG_CPU_MPU_ATTR5_INNER (BSP_WRITE_THROUGH_TRANSIENT) + #define BSP_CFG_CPU_MPU_ATTR5_INNER_READ (BSP_READ_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR5_INNER_WRITE (BSP_WRITE_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR5_OUTER (BSP_WRITE_THROUGH_TRANSIENT) + #define BSP_CFG_CPU_MPU_ATTR5_OUTER_READ (BSP_READ_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR5_OUTER_WRITE (BSP_WRITE_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR5_DEVICE_TYPE (BSP_DEVICE_NGNRE) + + #define BSP_CFG_CPU_MPU_ATTR6_TYPE (BSP_TYPE_DEVICE_MEMORY) + #define BSP_CFG_CPU_MPU_ATTR6_INNER (BSP_WRITE_THROUGH_TRANSIENT) + #define BSP_CFG_CPU_MPU_ATTR6_INNER_READ (BSP_READ_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR6_INNER_WRITE (BSP_WRITE_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR6_OUTER (BSP_WRITE_THROUGH_TRANSIENT) + #define BSP_CFG_CPU_MPU_ATTR6_OUTER_READ (BSP_READ_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR6_OUTER_WRITE (BSP_WRITE_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR6_DEVICE_TYPE (BSP_DEVICE_NGRE) + + #define BSP_CFG_CPU_MPU_ATTR7_TYPE (BSP_TYPE_DEVICE_MEMORY) + #define BSP_CFG_CPU_MPU_ATTR7_INNER (BSP_WRITE_THROUGH_TRANSIENT) + #define BSP_CFG_CPU_MPU_ATTR7_INNER_READ (BSP_READ_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR7_INNER_WRITE (BSP_WRITE_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR7_OUTER (BSP_WRITE_THROUGH_TRANSIENT) + #define BSP_CFG_CPU_MPU_ATTR7_OUTER_READ (BSP_READ_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR7_OUTER_WRITE (BSP_WRITE_NOT_ALLOCATE) + #define BSP_CFG_CPU_MPU_ATTR7_DEVICE_TYPE (BSP_DEVICE_GRE) + + /* Region00 : ATCM */ + #define BSP_CFG_EL1_MPU_REGION00_BASE (0x00000000) + #define BSP_CFG_EL1_MPU_REGION00_LIMIT (0x0001FFFF) + #define BSP_CFG_EL1_MPU_REGION00_SH (BSP_OUTER_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION00_AP (BSP_EL1RW_EL0RW) + #define BSP_CFG_EL1_MPU_REGION00_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION00_ATTRINDEX (BSP_ATTRINDEX3) + #define BSP_CFG_EL1_MPU_REGION00_ENABLE (BSP_REGION_ENABLE) + + /* Region01 : BTCM */ + #define BSP_CFG_EL1_MPU_REGION01_BASE (0x00100000) + #define BSP_CFG_EL1_MPU_REGION01_LIMIT (0x0011FFFF) + #define BSP_CFG_EL1_MPU_REGION01_SH (BSP_OUTER_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION01_AP (BSP_EL1RW_EL0RW) + #define BSP_CFG_EL1_MPU_REGION01_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION01_ATTRINDEX (BSP_ATTRINDEX3) + #define BSP_CFG_EL1_MPU_REGION01_ENABLE (BSP_REGION_ENABLE) + + /* Region02 : System RAM */ + #define BSP_CFG_EL1_MPU_REGION02_BASE (0x10000000) + #define BSP_CFG_EL1_MPU_REGION02_LIMIT (0x1017FFFF) + #define BSP_CFG_EL1_MPU_REGION02_SH (BSP_NON_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION02_AP (BSP_EL1RW_EL0RW) + #define BSP_CFG_EL1_MPU_REGION02_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION02_ATTRINDEX (BSP_ATTRINDEX1) + #define BSP_CFG_EL1_MPU_REGION02_ENABLE (BSP_REGION_ENABLE) + + /* Region03 : Mirror area of System RAM */ + #define BSP_CFG_EL1_MPU_REGION03_BASE (0x30000000) + #define BSP_CFG_EL1_MPU_REGION03_LIMIT (0x3017FFFF) + #define BSP_CFG_EL1_MPU_REGION03_SH (BSP_OUTER_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION03_AP (BSP_EL1RW_EL0RW) + #define BSP_CFG_EL1_MPU_REGION03_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION03_ATTRINDEX (BSP_ATTRINDEX3) + #define BSP_CFG_EL1_MPU_REGION03_ENABLE (BSP_REGION_ENABLE) + + /* Region04 : Mirror area of external address space */ + #define BSP_CFG_EL1_MPU_REGION04_BASE (0x40000000) + #define BSP_CFG_EL1_MPU_REGION04_LIMIT (0x5FFFFFFF) + #define BSP_CFG_EL1_MPU_REGION04_SH (BSP_OUTER_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION04_AP (BSP_EL1RW_EL0RW) + #define BSP_CFG_EL1_MPU_REGION04_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION04_ATTRINDEX (BSP_ATTRINDEX3) + #define BSP_CFG_EL1_MPU_REGION04_ENABLE (BSP_REGION_ENABLE) + + /* Region05 : External address space */ + #define BSP_CFG_EL1_MPU_REGION05_BASE (0x60000000) + #define BSP_CFG_EL1_MPU_REGION05_LIMIT (0x7FFFFFFF) + #define BSP_CFG_EL1_MPU_REGION05_SH (BSP_NON_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION05_AP (BSP_EL1RW_EL0RW) + #define BSP_CFG_EL1_MPU_REGION05_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION05_ATTRINDEX (BSP_ATTRINDEX1) + #define BSP_CFG_EL1_MPU_REGION05_ENABLE (BSP_REGION_ENABLE) + + /* Region06 : Non-Safety Peripheral */ + #define BSP_CFG_EL1_MPU_REGION06_BASE (0x80000000) + #define BSP_CFG_EL1_MPU_REGION06_LIMIT (0x80FFFFFF) + #define BSP_CFG_EL1_MPU_REGION06_SH (BSP_OUTER_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION06_AP (BSP_EL1RW_EL0RW) + #define BSP_CFG_EL1_MPU_REGION06_XN (BSP_EXECUTE_NEVER) + #define BSP_CFG_EL1_MPU_REGION06_ATTRINDEX (BSP_ATTRINDEX5) + #define BSP_CFG_EL1_MPU_REGION06_ENABLE (BSP_REGION_ENABLE) + + /* Region07 : Safety Peripheral */ + #define BSP_CFG_EL1_MPU_REGION07_BASE (0x81000000) + #define BSP_CFG_EL1_MPU_REGION07_LIMIT (0x81FFFFFF) + #define BSP_CFG_EL1_MPU_REGION07_SH (BSP_OUTER_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION07_AP (BSP_EL1RW_EL0RW) + #define BSP_CFG_EL1_MPU_REGION07_XN (BSP_EXECUTE_NEVER) + #define BSP_CFG_EL1_MPU_REGION07_ATTRINDEX (BSP_ATTRINDEX5) + #define BSP_CFG_EL1_MPU_REGION07_ENABLE (BSP_REGION_ENABLE) + + /* Region08 : LLPP Peripheral */ + #define BSP_CFG_EL1_MPU_REGION08_BASE (0x90000000) + #define BSP_CFG_EL1_MPU_REGION08_LIMIT (0x901FFFFF) + #define BSP_CFG_EL1_MPU_REGION08_SH (BSP_OUTER_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION08_AP (BSP_EL1RW_EL0RW) + #define BSP_CFG_EL1_MPU_REGION08_XN (BSP_EXECUTE_NEVER) + #define BSP_CFG_EL1_MPU_REGION08_ATTRINDEX (BSP_ATTRINDEX5) + #define BSP_CFG_EL1_MPU_REGION08_ENABLE (BSP_REGION_ENABLE) + + /* Region09 : GIC0 */ + #define BSP_CFG_EL1_MPU_REGION09_BASE (0x94000000) + #define BSP_CFG_EL1_MPU_REGION09_LIMIT (0x941FFFFF) + #define BSP_CFG_EL1_MPU_REGION09_SH (BSP_OUTER_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION09_AP (BSP_EL1RW_EL0RW) + #define BSP_CFG_EL1_MPU_REGION09_XN (BSP_EXECUTE_NEVER) + #define BSP_CFG_EL1_MPU_REGION09_ATTRINDEX (BSP_ATTRINDEX4) + #define BSP_CFG_EL1_MPU_REGION09_ENABLE (BSP_REGION_ENABLE) + + /* Region10 : Debug Private */ + #define BSP_CFG_EL1_MPU_REGION10_BASE (0xC0000000) + #define BSP_CFG_EL1_MPU_REGION10_LIMIT (0xC0FFFFFF) + #define BSP_CFG_EL1_MPU_REGION10_SH (BSP_OUTER_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION10_AP (BSP_EL1RW_EL0RW) + #define BSP_CFG_EL1_MPU_REGION10_XN (BSP_EXECUTE_NEVER) + #define BSP_CFG_EL1_MPU_REGION10_ATTRINDEX (BSP_ATTRINDEX4) + #define BSP_CFG_EL1_MPU_REGION10_ENABLE (BSP_REGION_ENABLE) + + /* Region11 : Not Used */ + #define BSP_CFG_EL1_MPU_REGION11_BASE (0x00000000) + #define BSP_CFG_EL1_MPU_REGION11_LIMIT (0x00000000) + #define BSP_CFG_EL1_MPU_REGION11_SH (BSP_NON_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION11_AP (BSP_EL1RW_EL0NO) + #define BSP_CFG_EL1_MPU_REGION11_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION11_ATTRINDEX (BSP_ATTRINDEX0) + #define BSP_CFG_EL1_MPU_REGION11_ENABLE (BSP_REGION_DISABLE) + + /* Region12 : Not Used */ + #define BSP_CFG_EL1_MPU_REGION12_BASE (0x00000000) + #define BSP_CFG_EL1_MPU_REGION12_LIMIT (0x00000000) + #define BSP_CFG_EL1_MPU_REGION12_SH (BSP_NON_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION12_AP (BSP_EL1RW_EL0NO) + #define BSP_CFG_EL1_MPU_REGION12_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION12_ATTRINDEX (BSP_ATTRINDEX0) + #define BSP_CFG_EL1_MPU_REGION12_ENABLE (BSP_REGION_DISABLE) + + /* Region13 : Not Used */ + #define BSP_CFG_EL1_MPU_REGION13_BASE (0x00000000) + #define BSP_CFG_EL1_MPU_REGION13_LIMIT (0x00000000) + #define BSP_CFG_EL1_MPU_REGION13_SH (BSP_NON_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION13_AP (BSP_EL1RW_EL0NO) + #define BSP_CFG_EL1_MPU_REGION13_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION13_ATTRINDEX (BSP_ATTRINDEX0) + #define BSP_CFG_EL1_MPU_REGION13_ENABLE (BSP_REGION_DISABLE) + + /* Region14 : Not Used */ + #define BSP_CFG_EL1_MPU_REGION14_BASE (0x00000000) + #define BSP_CFG_EL1_MPU_REGION14_LIMIT (0x00000000) + #define BSP_CFG_EL1_MPU_REGION14_SH (BSP_NON_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION14_AP (BSP_EL1RW_EL0NO) + #define BSP_CFG_EL1_MPU_REGION14_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION14_ATTRINDEX (BSP_ATTRINDEX0) + #define BSP_CFG_EL1_MPU_REGION14_ENABLE (BSP_REGION_DISABLE) + + /* Region15 : Not Used */ + #define BSP_CFG_EL1_MPU_REGION15_BASE (0x00000000) + #define BSP_CFG_EL1_MPU_REGION15_LIMIT (0x00000000) + #define BSP_CFG_EL1_MPU_REGION15_SH (BSP_NON_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION15_AP (BSP_EL1RW_EL0NO) + #define BSP_CFG_EL1_MPU_REGION15_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION15_ATTRINDEX (BSP_ATTRINDEX0) + #define BSP_CFG_EL1_MPU_REGION15_ENABLE (BSP_REGION_DISABLE) + + /* Region16 : Not Used */ + #define BSP_CFG_EL1_MPU_REGION16_BASE (0x00000000) + #define BSP_CFG_EL1_MPU_REGION16_LIMIT (0x00000000) + #define BSP_CFG_EL1_MPU_REGION16_SH (BSP_NON_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION16_AP (BSP_EL1RW_EL0NO) + #define BSP_CFG_EL1_MPU_REGION16_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION16_ATTRINDEX (BSP_ATTRINDEX0) + #define BSP_CFG_EL1_MPU_REGION16_ENABLE (BSP_REGION_DISABLE) + + /* Region17 : Not Used */ + #define BSP_CFG_EL1_MPU_REGION17_BASE (0x00000000) + #define BSP_CFG_EL1_MPU_REGION17_LIMIT (0x00000000) + #define BSP_CFG_EL1_MPU_REGION17_SH (BSP_NON_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION17_AP (BSP_EL1RW_EL0NO) + #define BSP_CFG_EL1_MPU_REGION17_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION17_ATTRINDEX (BSP_ATTRINDEX0) + #define BSP_CFG_EL1_MPU_REGION17_ENABLE (BSP_REGION_DISABLE) + + /* Region18 : Not Used */ + #define BSP_CFG_EL1_MPU_REGION18_BASE (0x00000000) + #define BSP_CFG_EL1_MPU_REGION18_LIMIT (0x00000000) + #define BSP_CFG_EL1_MPU_REGION18_SH (BSP_NON_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION18_AP (BSP_EL1RW_EL0NO) + #define BSP_CFG_EL1_MPU_REGION18_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION18_ATTRINDEX (BSP_ATTRINDEX0) + #define BSP_CFG_EL1_MPU_REGION18_ENABLE (BSP_REGION_DISABLE) + + /* Region19 : Not Used */ + #define BSP_CFG_EL1_MPU_REGION19_BASE (0x00000000) + #define BSP_CFG_EL1_MPU_REGION19_LIMIT (0x00000000) + #define BSP_CFG_EL1_MPU_REGION19_SH (BSP_NON_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION19_AP (BSP_EL1RW_EL0NO) + #define BSP_CFG_EL1_MPU_REGION19_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION19_ATTRINDEX (BSP_ATTRINDEX0) + #define BSP_CFG_EL1_MPU_REGION19_ENABLE (BSP_REGION_DISABLE) + + /* Region20 : Not Used */ + #define BSP_CFG_EL1_MPU_REGION20_BASE (0x00000000) + #define BSP_CFG_EL1_MPU_REGION20_LIMIT (0x00000000) + #define BSP_CFG_EL1_MPU_REGION20_SH (BSP_NON_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION20_AP (BSP_EL1RW_EL0NO) + #define BSP_CFG_EL1_MPU_REGION20_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION20_ATTRINDEX (BSP_ATTRINDEX0) + #define BSP_CFG_EL1_MPU_REGION20_ENABLE (BSP_REGION_DISABLE) + + /* Region21 : Not Used */ + #define BSP_CFG_EL1_MPU_REGION21_BASE (0x00000000) + #define BSP_CFG_EL1_MPU_REGION21_LIMIT (0x00000000) + #define BSP_CFG_EL1_MPU_REGION21_SH (BSP_NON_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION21_AP (BSP_EL1RW_EL0NO) + #define BSP_CFG_EL1_MPU_REGION21_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION21_ATTRINDEX (BSP_ATTRINDEX0) + #define BSP_CFG_EL1_MPU_REGION21_ENABLE (BSP_REGION_DISABLE) + + /* Region22 : Not Used */ + #define BSP_CFG_EL1_MPU_REGION22_BASE (0x00000000) + #define BSP_CFG_EL1_MPU_REGION22_LIMIT (0x00000000) + #define BSP_CFG_EL1_MPU_REGION22_SH (BSP_NON_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION22_AP (BSP_EL1RW_EL0NO) + #define BSP_CFG_EL1_MPU_REGION22_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION22_ATTRINDEX (BSP_ATTRINDEX0) + #define BSP_CFG_EL1_MPU_REGION22_ENABLE (BSP_REGION_DISABLE) + + /* Region23 : Not Used */ + #define BSP_CFG_EL1_MPU_REGION23_BASE (0x00000000) + #define BSP_CFG_EL1_MPU_REGION23_LIMIT (0x00000000) + #define BSP_CFG_EL1_MPU_REGION23_SH (BSP_NON_SHAREABLE) + #define BSP_CFG_EL1_MPU_REGION23_AP (BSP_EL1RW_EL0NO) + #define BSP_CFG_EL1_MPU_REGION23_XN (BSP_EXECUTE_ENABLE) + #define BSP_CFG_EL1_MPU_REGION23_ATTRINDEX (BSP_ATTRINDEX0) + #define BSP_CFG_EL1_MPU_REGION23_ENABLE (BSP_REGION_DISABLE) + + #define BSP_CFG_SCTLR_BR_BIT (BSP_BG_REGION_DISABLE) + #define BSP_CFG_SCTLR_I_BIT (BSP_ICACHE_ENABLE) + #define BSP_CFG_SCTLR_C_BIT (BSP_DATACACHE_ENABLE) +#endif /* BSP_MCU_DEVICE_MEMORY_CFG_H_ */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h new file mode 100644 index 00000000000..70e28786cb9 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_mcu_device_pn_cfg.h @@ -0,0 +1,12 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_MCU_DEVICE_PN_CFG_H_ +#define BSP_MCU_DEVICE_PN_CFG_H_ +#define BSP_MCU_R9A07G084M04GBG + #define BSP_ATCM_SIZE_BYTES (131072) + #define BSP_BTCM_SIZE_BYTES (131072) + #define BSP_SYSTEM_RAM_SIZE_BYTES (1572864) + #define BSP_PACKAGE_FBGA + #define BSP_PACKAGE_PINS (225) + + #define BSP_CFG_CORE_CR52 (0) +#endif /* BSP_MCU_DEVICE_PN_CFG_H_ */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h new file mode 100644 index 00000000000..3bfed56a45b --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_mcu_family_cfg.h @@ -0,0 +1,15 @@ +/* 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 "bsp_mcu_device_memory_cfg.h" + #include "../../../rzn/fsp/src/bsp/mcu/rzn2l/bsp_mcu_info.h" + #include "bsp_clock_cfg.h" + #define BSP_API_OVERRIDE "../../src/bsp/mcu/rzn2l/bsp_override.h" + #define BSP_MCU_GROUP_RZN2L (1) + #define BSP_LOCO_HZ (240000) + #define BSP_GLOBAL_SYSTEM_COUNTER_CLOCK_HZ (25000000) + #define BSP_CORTEX_VECTOR_TABLE_ENTRIES (32) + #define BSP_VECTOR_TABLE_MAX_ENTRIES (448) +#endif /* BSP_MCU_FAMILY_CFG_H_ */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_memory_cfg.h b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_memory_cfg.h new file mode 100644 index 00000000000..baaa5be87a3 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_memory_cfg.h @@ -0,0 +1,5 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_MEMORY_CFG_H_ +#define BSP_MEMORY_CFG_H_ +#define BSP_MPU_SUPPORT +#endif /* BSP_MEMORY_CFG_H_ */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_pin_cfg.h b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_pin_cfg.h new file mode 100644 index 00000000000..c0d922b3a00 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/bsp/bsp_pin_cfg.h @@ -0,0 +1,105 @@ +/* generated configuration header file - do not edit */ +#ifndef BSP_PIN_CFG_H_ +#define BSP_PIN_CFG_H_ +#include "r_ioport.h" +#define ETH2_RXD3 (BSP_IO_PORT_00_PIN_0) +#define ETH2_RXDV (BSP_IO_PORT_00_PIN_1) +#define ETH2_TXEN (BSP_IO_PORT_00_PIN_2) +#define ETH2_REFCLK (BSP_IO_PORT_00_PIN_3) +#define ETH2_LINK (BSP_IO_PORT_00_PIN_5) +#define ETH2_TXCLK (BSP_IO_PORT_00_PIN_6) +#define ETH2_TXD3 (BSP_IO_PORT_01_PIN_2) +#define ETH2_TXD2 (BSP_IO_PORT_01_PIN_3) +#define ETH2_TXD1 (BSP_IO_PORT_01_PIN_4) +#define ETH2_TXD0 (BSP_IO_PORT_01_PIN_5) +#define CAN_RX (BSP_IO_PORT_01_PIN_7) +#define CAN_TX (BSP_IO_PORT_02_PIN_2) +#define TDO (BSP_IO_PORT_02_PIN_4) +#define TDI (BSP_IO_PORT_02_PIN_5) +#define TMS (BSP_IO_PORT_02_PIN_6) +#define TCK (BSP_IO_PORT_02_PIN_7) +#define ETH_LED4 (BSP_IO_PORT_03_PIN_0) +#define LED_RED1 (BSP_IO_PORT_04_PIN_1) +#define ETH_LED6 (BSP_IO_PORT_04_PIN_4) +#define ETH_LED7 (BSP_IO_PORT_05_PIN_0) +#define SCL (BSP_IO_PORT_05_PIN_2) +#define SDA (BSP_IO_PORT_05_PIN_3) +#define SW2 (BSP_IO_PORT_05_PIN_4) +#define ETH1_LINK (BSP_IO_PORT_05_PIN_5) +#define ETH1_TXD2 (BSP_IO_PORT_05_PIN_7) +#define ETH1_TXD3 (BSP_IO_PORT_06_PIN_0) +#define ETH1_REFCLK (BSP_IO_PORT_06_PIN_1) +#define ETH1_TXD1 (BSP_IO_PORT_06_PIN_2) +#define ETH1_TXD0 (BSP_IO_PORT_06_PIN_3) +#define ETH1_TXCLK (BSP_IO_PORT_06_PIN_4) +#define ETH1_TXEN (BSP_IO_PORT_06_PIN_5) +#define ETH1_RXD0 (BSP_IO_PORT_06_PIN_6) +#define ETH1_RXD1 (BSP_IO_PORT_06_PIN_7) +#define ETH1_RXD2 (BSP_IO_PORT_07_PIN_0) +#define ETH1_RXD3 (BSP_IO_PORT_07_PIN_1) +#define ETH1_RXDV (BSP_IO_PORT_07_PIN_2) +#define ETH1_RXCLK (BSP_IO_PORT_07_PIN_3) +#define USB_VBUSIN (BSP_IO_PORT_07_PIN_4) +#define ETH0_RXD3 (BSP_IO_PORT_08_PIN_4) +#define ETH0_RXDV (BSP_IO_PORT_08_PIN_5) +#define ETH0_RXCLK (BSP_IO_PORT_08_PIN_6) +#define ETH_MDC (BSP_IO_PORT_08_PIN_7) +#define ETH_MDIO (BSP_IO_PORT_09_PIN_0) +#define ETH0_REFCLK (BSP_IO_PORT_09_PIN_1) +#define ETH0_TXD3 (BSP_IO_PORT_09_PIN_3) +#define ETH0_TXD2 (BSP_IO_PORT_09_PIN_4) +#define ETH0_TXD1 (BSP_IO_PORT_09_PIN_5) +#define ETH0_TXD0 (BSP_IO_PORT_09_PIN_6) +#define ETH0_TXCLK (BSP_IO_PORT_09_PIN_7) +#define ETH0_TXEN (BSP_IO_PORT_10_PIN_0) +#define ETH0_RXD0 (BSP_IO_PORT_10_PIN_1) +#define ETH0_RXD1 (BSP_IO_PORT_10_PIN_2) +#define ETH0_RXD2 (BSP_IO_PORT_10_PIN_3) +#define ETH0_LINK (BSP_IO_PORT_10_PIN_4) +#define EEPROM_SCL (BSP_IO_PORT_13_PIN_2) +#define EEPROM_SDA (BSP_IO_PORT_13_PIN_3) +#define ESC_RESETOUT (BSP_IO_PORT_13_PIN_4) +#define SW3_Pin2 (BSP_IO_PORT_13_PIN_5) +#define SW3_Pin1 (BSP_IO_PORT_13_PIN_6) +#define SW3_Pin4 (BSP_IO_PORT_13_PIN_7) +#define SW3_Pin3 (BSP_IO_PORT_14_PIN_0) +#define XSPI0_ECS (BSP_IO_PORT_14_PIN_2) +#define XSPI0_DS (BSP_IO_PORT_14_PIN_4) +#define XSPI0_CKN (BSP_IO_PORT_14_PIN_5) +#define XSPI0_CKP (BSP_IO_PORT_14_PIN_6) +#define XSPI0_IO0 (BSP_IO_PORT_14_PIN_7) +#define XSPI0_IO1 (BSP_IO_PORT_15_PIN_0) +#define XSPI0_IO2 (BSP_IO_PORT_15_PIN_1) +#define XSPI0_IO3 (BSP_IO_PORT_15_PIN_2) +#define XSPI0_IO4 (BSP_IO_PORT_15_PIN_3) +#define XSPI0_IO5 (BSP_IO_PORT_15_PIN_4) +#define XSPI0_IO6 (BSP_IO_PORT_15_PIN_5) +#define XSPI0_IO7 (BSP_IO_PORT_15_PIN_6) +#define OSPI_CS (BSP_IO_PORT_15_PIN_7) +#define ORAM_CS0 (BSP_IO_PORT_16_PIN_0) +#define XSPI0_RESET0 (BSP_IO_PORT_16_PIN_1) +#define SW1 (BSP_IO_PORT_16_PIN_3) +#define UART_USB_TX (BSP_IO_PORT_16_PIN_5) +#define UART_USB_RX (BSP_IO_PORT_16_PIN_6) +#define LED_RED2 (BSP_IO_PORT_17_PIN_3) +#define USB_OVRCUR (BSP_IO_PORT_17_PIN_5) +#define SCI_RXD (BSP_IO_PORT_17_PIN_7) +#define SCI_TXD (BSP_IO_PORT_18_PIN_0) +#define LED_GREEN (BSP_IO_PORT_18_PIN_2) +#define SCK (BSP_IO_PORT_18_PIN_4) +#define MOSI (BSP_IO_PORT_18_PIN_5) +#define MISO (BSP_IO_PORT_18_PIN_6) +#define USB_VBUSEN (BSP_IO_PORT_19_PIN_0) +#define ETH_LED2_MDV0 (BSP_IO_PORT_20_PIN_1) +#define ETH_LED0_MDV1 (BSP_IO_PORT_20_PIN_2) +#define ETH_LED1_MDV2 (BSP_IO_PORT_20_PIN_3) +#define ETH_LED3_MDV3 (BSP_IO_PORT_20_PIN_4) +#define CS (BSP_IO_PORT_21_PIN_1) +#define ETH_LED5 (BSP_IO_PORT_22_PIN_1) +#define LED_ORANGE (BSP_IO_PORT_22_PIN_3) +#define ETH2_RXD0 (BSP_IO_PORT_23_PIN_7) +#define ETH2_RXD1 (BSP_IO_PORT_24_PIN_0) +#define ETH2_RXCLK (BSP_IO_PORT_24_PIN_1) +#define ETH2_RXD2 (BSP_IO_PORT_24_PIN_2) +extern const ioport_cfg_t g_bsp_pin_cfg; /* RSK+RZN2L */ +#endif /* BSP_PIN_CFG_H_ */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/r_ioport_cfg.h b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/r_ioport_cfg.h new file mode 100644 index 00000000000..d2688bf5ba3 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_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/rzn2l_etherkit/rzn_cfg/fsp_cfg/r_sci_uart_cfg.h b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/r_sci_uart_cfg.h new file mode 100644 index 00000000000..fe4cc09bf17 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_cfg/fsp_cfg/r_sci_uart_cfg.h @@ -0,0 +1,16 @@ +/* generated configuration header file - do not edit */ +#ifndef R_SCI_UART_CFG_H_ +#define R_SCI_UART_CFG_H_ +#define SCI_UART_CFG_PARAM_CHECKING_ENABLE (BSP_CFG_PARAM_CHECKING_ENABLE) +#define SCI_UART_CFG_FIFO_SUPPORT (1) +#define SCI_UART_CFG_DMAC_SUPPORTED (0) +#define SCI_UART_CFG_FLOW_CONTROL_SUPPORT (0) +#define SCI_UART_CFG_MULTIPLEX_INTERRUPT_SUPPORTED (0) +#if SCI_UART_CFG_MULTIPLEX_INTERRUPT_SUPPORTED + #define SCI_UART_CFG_MULTIPLEX_INTERRUPT_ENABLE BSP_INTERRUPT_ENABLE + #define SCI_UART_CFG_MULTIPLEX_INTERRUPT_DISABLE BSP_INTERRUPT_DISABLE +#else + #define SCI_UART_CFG_MULTIPLEX_INTERRUPT_ENABLE + #define SCI_UART_CFG_MULTIPLEX_INTERRUPT_DISABLE +#endif +#endif /* R_SCI_UART_CFG_H_ */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn_gen/SConscript b/bsp/renesas/rzn2l_etherkit/rzn_gen/SConscript new file mode 100644 index 00000000000..33e4f94e073 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_gen/SConscript @@ -0,0 +1,19 @@ +Import('RTT_ROOT') +Import('rtconfig') +from building import * +from gcc import * + +cwd = GetCurrentDir() +src = [] +group = [] +CPPPATH = [] + +if rtconfig.PLATFORM in ['iccarm']: + Return('group') +elif rtconfig.PLATFORM in GetGCCLikePLATFORM(): + if GetOption('target') != 'mdk5': + src = Glob('*.c') + CPPPATH = [cwd, ] + +group = DefineGroup('rz_gen', src, depend = [''], CPPPATH = CPPPATH) +Return('group') diff --git a/bsp/renesas/rzn2l_etherkit/rzn_gen/bsp_clock_cfg.h b/bsp/renesas/rzn2l_etherkit/rzn_gen/bsp_clock_cfg.h new file mode 100644 index 00000000000..a75ab3a8a71 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_gen/bsp_clock_cfg.h @@ -0,0 +1,42 @@ +/* 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_MAIN_CLOCK_HZ (25000000) /* Main Clock: 25MHz */ +#define BSP_CFG_LOCO_ENABLE (BSP_CLOCKS_LOCO_ENABLE) /* LOCO Enabled */ +#define BSP_CFG_PLL1 (BSP_CLOCKS_PLL1_INITIAL) /* PLL1 is initial state */ +#define BSP_CFG_PHYSEL (BSP_CLOCKS_PHYSEL_MAINOSC_DIV) /* Ethernet Clock src: Main clock oscillator */ +#define BSP_CFG_CLMA0_ENABLE (BSP_CLOCKS_CLMA0_ENABLE) /* CLMA0 Enabled */ +#define BSP_CFG_CLMA0MASK (BSP_CLOCKS_CLMA0_ERROR_NOT_MASK) /* CLMA0 error not mask */ +#define BSP_CFG_CLMA3MASK (BSP_CLOCKS_CLMA3_ERROR_NOT_MASK) /* CLMA3 error not mask */ +#define BSP_CFG_CLMA1MASK (BSP_CLOCKS_CLMA1_ERROR_MASK) /* CLMA1 error mask */ +#define BSP_CFG_CLMA3_ENABLE (BSP_CLOCKS_CLMA3_ENABLE) /* CLMA3 Enabled */ +#define BSP_CFG_CLMA1_ENABLE (BSP_CLOCKS_CLMA1_ENABLE) /* CLMA1 Enabled */ +#define BSP_CFG_CLMA2_ENABLE (BSP_CLOCKS_CLMA2_ENABLE) /* CLMA2 Enabled */ +#define BSP_CFG_CLMA0_CMPL (1) /* CLMA0 CMPL 1 */ +#define BSP_CFG_CLMA1_CMPL (1) /* CLMA1 CMPL 1 */ +#define BSP_CFG_CLMA2_CMPL (1) /* CLMA2 CMPL 1 */ +#define BSP_CFG_CLMA3_CMPL (1) /* CLMA3 CMPL 1 */ +#define BSP_CFG_CLMASEL (BSP_CLOCKS_CLMASEL_LOCO) /* Alternative clock: LOCO */ +#define BSP_CFG_CLMA0_CMPH (1023) /* CLMA0 CMPH 1023 */ +#define BSP_CFG_CLMA1_CMPH (1023) /* CLMA1 CMPH 1023 */ +#define BSP_CFG_CLMA2_CMPH (1023) /* CLMA2 CMPH 1023 */ +#define BSP_CFG_CLMA3_CMPH (1023) /* CLMA3 CMPH 1023 */ +#define BSP_CFG_DIVSELSUB (BSP_CLOCKS_DIVSELSUB_0) /* ICLK 200MHz */ +#define BSP_CFG_FSELCPU0 (BSP_CLOCKS_FSELCPU0_ICLK_MUL2) /* CPU0CLK Mulx2 */ +#define BSP_CFG_CKIO (BSP_CLOCKS_CKIO_ICLK_DIV4) /* CKIO Div/4 */ +#define BSP_CFG_SCI0ASYNCCLK (BSP_CLOCKS_SCI0_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ) /* SCI0ASYNCCLK: 96MHz */ +#define BSP_CFG_SCI1ASYNCCLK (BSP_CLOCKS_SCI1_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ) /* SCI1ASYNCCLK: 96MHz */ +#define BSP_CFG_SCI2ASYNCCLK (BSP_CLOCKS_SCI2_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ) /* SCI2ASYNCCLK: 96MHz */ +#define BSP_CFG_SCI3ASYNCCLK (BSP_CLOCKS_SCI3_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ) /* SCI3ASYNCCLK: 96MHz */ +#define BSP_CFG_SCI4ASYNCCLK (BSP_CLOCKS_SCI4_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ) /* SCI4ASYNCCLK: 96MHz */ +#define BSP_CFG_SCI5ASYNCCLK (BSP_CLOCKS_SCI5_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ) /* SCI5ASYNCCLK: 96MHz */ +#define BSP_CFG_SPI0ASYNCCLK (BSP_CLOCKS_SPI0_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ) /* SPI0ASYNCCLK: 96MHz */ +#define BSP_CFG_SPI1ASYNCCLK (BSP_CLOCKS_SPI1_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ) /* SPI1ASYNCCLK: 96MHz */ +#define BSP_CFG_SPI2ASYNCCLK (BSP_CLOCKS_SPI2_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ) /* SPI2ASYNCCLK: 96MHz */ +#define BSP_CFG_SPI3ASYNCCLK (BSP_CLOCKS_SPI3_ASYNCHRONOUS_SERIAL_CLOCK_96_MHZ) /* SPI3ASYNCCLK: 96MHz */ +#define BSP_CFG_FSELCANFD (BSP_CLOCKS_CANFD_CLOCK_40_MHZ) /* PCLKCAN 40MHz */ +#define BSP_CFG_FSELXSPI0_DIVSELXSPI0 (BSP_CLOCKS_XSPI0_CLOCK_DIV0_133_3_MHZ) /* XSPI_CLK0 133.3MHz */ +#define BSP_CFG_FSELXSPI1_DIVSELXSPI1 (BSP_CLOCKS_XSPI1_CLOCK_DIV0_12_5_MHZ) /* XSPI_CLK1 12.5MHz */ +#endif /* BSP_CLOCK_CFG_H_ */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn_gen/common_data.c b/bsp/renesas/rzn2l_etherkit/rzn_gen/common_data.c new file mode 100644 index 00000000000..f9b7a5039f4 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_gen/common_data.c @@ -0,0 +1,75 @@ +/* generated common source file - do not edit */ +#include "common_data.h" +/** IOPORT interface configuration for event link **/ + const ioport_extend_cfg_t g_ioport_cfg_extend = + { + .port_group_output_cfg[IOPORT_PORT_GROUP_1] = + { + .pin_select = (uint8_t)( IOPORT_EVENT_PIN_SELECTION_NONE), + .operation = IOPORT_EVENT_OUTPUT_OPERATION_LOW + }, + .port_group_output_cfg[IOPORT_PORT_GROUP_2] = + { + .pin_select = (uint8_t)( IOPORT_EVENT_PIN_SELECTION_NONE), + .operation = IOPORT_EVENT_OUTPUT_OPERATION_LOW + }, + .port_group_input_cfg[IOPORT_PORT_GROUP_1] = + { + .event_control = IOPORT_EVENT_CONTROL_DISABLE, + .pin_select = (uint8_t)( IOPORT_EVENT_PIN_SELECTION_NONE), + .edge_detection = IOPORT_EVENT_DETECTION_RISING_EDGE, + .overwrite_control = IOPORT_EVENT_CONTROL_DISABLE, + .buffer_init_value = IOPORT_EVENT_INITIAL_BUFFER_VALUE_LOW << 7U | IOPORT_EVENT_INITIAL_BUFFER_VALUE_LOW << 6U | IOPORT_EVENT_INITIAL_BUFFER_VALUE_LOW << 5U | IOPORT_EVENT_INITIAL_BUFFER_VALUE_LOW << 3U | IOPORT_EVENT_INITIAL_BUFFER_VALUE_LOW << 2U | IOPORT_EVENT_INITIAL_BUFFER_VALUE_LOW << 1U | IOPORT_EVENT_INITIAL_BUFFER_VALUE_LOW + }, + .port_group_input_cfg[IOPORT_PORT_GROUP_2] = + { + .event_control = IOPORT_EVENT_CONTROL_DISABLE, + .pin_select = (uint8_t)( IOPORT_EVENT_PIN_SELECTION_NONE), + .edge_detection = IOPORT_EVENT_DETECTION_RISING_EDGE, + .overwrite_control = IOPORT_EVENT_CONTROL_DISABLE, + .buffer_init_value = IOPORT_EVENT_INITIAL_BUFFER_VALUE_LOW << 6U | IOPORT_EVENT_INITIAL_BUFFER_VALUE_LOW << 5U | IOPORT_EVENT_INITIAL_BUFFER_VALUE_LOW << 4U | IOPORT_EVENT_INITIAL_BUFFER_VALUE_LOW << 3U | IOPORT_EVENT_INITIAL_BUFFER_VALUE_LOW << 2U | IOPORT_EVENT_INITIAL_BUFFER_VALUE_LOW << 1U | IOPORT_EVENT_INITIAL_BUFFER_VALUE_LOW + }, + .single_port_cfg[IOPORT_SINGLE_PORT_0] = + { + .event_control = IOPORT_EVENT_CONTROL_DISABLE, + .direction = IOPORT_EVENT_DIRECTION_OUTPUT, + .port_num = (uint16_t)BSP_IO_PORT_16_PIN_0, + .operation = IOPORT_EVENT_OUTPUT_OPERATION_LOW, + .edge_detection = IOPORT_EVENT_DETECTION_RISING_EDGE + }, + .single_port_cfg[IOPORT_SINGLE_PORT_1] = + { + .event_control = IOPORT_EVENT_CONTROL_DISABLE, + .direction = IOPORT_EVENT_DIRECTION_OUTPUT, + .port_num = (uint16_t)BSP_IO_PORT_16_PIN_0, + .operation = IOPORT_EVENT_OUTPUT_OPERATION_LOW, + .edge_detection = IOPORT_EVENT_DETECTION_RISING_EDGE + }, + .single_port_cfg[IOPORT_SINGLE_PORT_2] = + { + .event_control = IOPORT_EVENT_CONTROL_DISABLE, + .direction = IOPORT_EVENT_DIRECTION_OUTPUT, + .port_num = (uint16_t)BSP_IO_PORT_16_PIN_0, + .operation = IOPORT_EVENT_OUTPUT_OPERATION_LOW, + .edge_detection = IOPORT_EVENT_DETECTION_RISING_EDGE + }, + .single_port_cfg[IOPORT_SINGLE_PORT_3] = + { + .event_control = IOPORT_EVENT_CONTROL_DISABLE, + .direction = IOPORT_EVENT_DIRECTION_OUTPUT, + .port_num = (uint16_t)BSP_IO_PORT_16_PIN_0, + .operation = IOPORT_EVENT_OUTPUT_OPERATION_LOW, + .edge_detection = IOPORT_EVENT_DETECTION_RISING_EDGE + } + }; + +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/rzn2l_etherkit/rzn_gen/common_data.h b/bsp/renesas/rzn2l_etherkit/rzn_gen/common_data.h new file mode 100644 index 00000000000..e2eb70836ba --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_gen/common_data.h @@ -0,0 +1,16 @@ +/* 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 +/* 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/rzn2l_etherkit/rzn_gen/hal_data.c b/bsp/renesas/rzn2l_etherkit/rzn_gen/hal_data.c new file mode 100644 index 00000000000..2ddb428c13d --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_gen/hal_data.c @@ -0,0 +1,110 @@ +/* generated HAL source file - do not edit */ +#include "hal_data.h" +sci_uart_instance_ctrl_t g_uart0_ctrl; + + #define FSP_NOT_DEFINED (1) + #if (FSP_NOT_DEFINED) != (FSP_NOT_DEFINED) + + /* If the transfer module is DMAC, define a DMAC transfer callback. */ + extern void sci_uart_tx_dmac_callback(sci_uart_instance_ctrl_t * p_instance_ctrl); + + void g_uart0_tx_transfer_callback (transfer_callback_args_t * p_args) + { + FSP_PARAMETER_NOT_USED(p_args); + sci_uart_tx_dmac_callback(&g_uart0_ctrl); + } + #endif + + #if (FSP_NOT_DEFINED) != (FSP_NOT_DEFINED) + + /* If the transfer module is DMAC, define a DMAC transfer callback. */ + extern void sci_uart_rx_dmac_callback(sci_uart_instance_ctrl_t * p_instance_ctrl); + + void g_uart0_rx_transfer_callback (transfer_callback_args_t * p_args) + { + FSP_PARAMETER_NOT_USED(p_args); + sci_uart_rx_dmac_callback(&g_uart0_ctrl); + } + #endif + #undef FSP_NOT_DEFINED + + sci_baud_setting_t g_uart0_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 = 51, .baudrate_bits_b.mddr = (uint8_t) 256, .baudrate_bits_b.brme = false + }; + + /** UART extended configuration for UARTonSCI HAL driver */ + const sci_uart_extended_cfg_t g_uart0_cfg_extend = + { + .clock = SCI_UART_CLOCK_INT, + .rx_edge_start = SCI_UART_START_BIT_FALLING_EDGE, + .noise_cancel = SCI_UART_NOISE_CANCELLATION_DISABLE, + .rx_fifo_trigger = SCI_UART_RX_FIFO_TRIGGER_MAX, + .p_baud_setting = &g_uart0_baud_setting, +#if 1 + .clock_source = SCI_UART_CLOCK_SOURCE_SCI0ASYNCCLK, +#else + .clock_source = SCI_UART_CLOCK_SOURCE_PCLKM, +#endif + .flow_control = SCI_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_UART_RS485_DISABLE, + .polarity = SCI_UART_RS485_DE_POLARITY_HIGH, + .assertion_time = 1, + .negation_time = 1, + }, + }; + + /** UART interface configuration */ + const uart_cfg_t g_uart0_cfg = + { + .channel = 0, + .data_bits = UART_DATA_BITS_8, + .parity = UART_PARITY_OFF, + .stop_bits = UART_STOP_BITS_1, + .p_callback = user_uart0_callback, + .p_context = NULL, + .p_extend = &g_uart0_cfg_extend, + .p_transfer_tx = g_uart0_P_TRANSFER_TX, + .p_transfer_rx = g_uart0_P_TRANSFER_RX, + .rxi_ipl = (12), + .txi_ipl = (12), + .tei_ipl = (12), + .eri_ipl = (12), +#if defined(VECTOR_NUMBER_SCI0_RXI) + .rxi_irq = VECTOR_NUMBER_SCI0_RXI, +#else + .rxi_irq = FSP_INVALID_VECTOR, +#endif +#if defined(VECTOR_NUMBER_SCI0_TXI) + .txi_irq = VECTOR_NUMBER_SCI0_TXI, +#else + .txi_irq = FSP_INVALID_VECTOR, +#endif +#if defined(VECTOR_NUMBER_SCI0_TEI) + .tei_irq = VECTOR_NUMBER_SCI0_TEI, +#else + .tei_irq = FSP_INVALID_VECTOR, +#endif +#if defined(VECTOR_NUMBER_SCI0_ERI) + .eri_irq = VECTOR_NUMBER_SCI0_ERI, +#else + .eri_irq = FSP_INVALID_VECTOR, +#endif + }; + +/* Instance structure to use this module. */ +const uart_instance_t g_uart0 = +{ + .p_ctrl = &g_uart0_ctrl, + .p_cfg = &g_uart0_cfg, + .p_api = &g_uart_on_sci +}; +void g_hal_init(void) { +g_common_init(); +} diff --git a/bsp/renesas/rzn2l_etherkit/rzn_gen/hal_data.h b/bsp/renesas/rzn2l_etherkit/rzn_gen/hal_data.h new file mode 100644 index 00000000000..983bc881f4a --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_gen/hal_data.h @@ -0,0 +1,37 @@ +/* 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_uart.h" + #include "r_uart_api.h" +FSP_HEADER +/** UART on SCI Instance. */ + extern const uart_instance_t g_uart0; + + /** Access the UART instance using these structures when calling API functions directly (::p_api is not used). */ + extern sci_uart_instance_ctrl_t g_uart0_ctrl; + extern const uart_cfg_t g_uart0_cfg; + extern const sci_uart_extended_cfg_t g_uart0_cfg_extend; + + #ifndef user_uart0_callback + void user_uart0_callback(uart_callback_args_t * p_args); + #endif + + #define FSP_NOT_DEFINED (1) + #if (FSP_NOT_DEFINED == FSP_NOT_DEFINED) + #define g_uart0_P_TRANSFER_TX (NULL) + #else + #define g_uart0_P_TRANSFER_TX (&FSP_NOT_DEFINED) + #endif + #if (FSP_NOT_DEFINED == FSP_NOT_DEFINED) + #define g_uart0_P_TRANSFER_RX (NULL) + #else + #define g_uart0_P_TRANSFER_RX (&FSP_NOT_DEFINED) + #endif + #undef FSP_NOT_DEFINED +void hal_entry(void); +void g_hal_init(void); +FSP_FOOTER +#endif /* HAL_DATA_H_ */ diff --git a/bsp/renesas/rzn2l_etherkit/rzn_gen/main.c b/bsp/renesas/rzn2l_etherkit/rzn_gen/main.c new file mode 100644 index 00000000000..42c5904834c --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_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/rzn2l_etherkit/rzn_gen/pin_data.c b/bsp/renesas/rzn2l_etherkit/rzn_gen/pin_data.c new file mode 100644 index 00000000000..5a007ca70d9 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_gen/pin_data.c @@ -0,0 +1,168 @@ +/* generated pin source file - do not edit */ +#include "bsp_api.h" +#include "r_ioport_api.h" +#include "r_ioport.h" + +extern const ioport_extend_cfg_t g_ioport_cfg_extend; + + +const ioport_pin_cfg_t g_bsp_pin_cfg_data[] = { + { + .pin = BSP_IO_PORT_02_PIN_4, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_CFG_SLEW_RATE_FAST | (uint32_t) IOPORT_PIN_P024_PFC_00_TDO) + }, + { + .pin = BSP_IO_PORT_02_PIN_5, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_PIN_P025_PFC_01_TDI) + }, + { + .pin = BSP_IO_PORT_02_PIN_6, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_CFG_SLEW_RATE_FAST | (uint32_t) IOPORT_PIN_P026_PFC_00_TMS_SWDIO) + }, + { + .pin = BSP_IO_PORT_02_PIN_7, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_PIN_P027_PFC_00_TCK_SWCLK) + }, + { + .pin = BSP_IO_PORT_03_PIN_0, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_04_PIN_1, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_04_PIN_4, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_05_PIN_0, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_05_PIN_4, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_13_PIN_4, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_13_PIN_5, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_13_PIN_6, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_13_PIN_7, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_14_PIN_0, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_14_PIN_1, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_14_PIN_2, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_PIN_P142_PFC_01_XSPI0_ECS0) + }, + { + .pin = BSP_IO_PORT_14_PIN_3, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_14_PIN_4, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_CFG_SLEW_RATE_FAST | (uint32_t) IOPORT_PIN_P144_PFC_00_XSPI0_DS) + }, + { + .pin = BSP_IO_PORT_14_PIN_5, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_CFG_SLEW_RATE_FAST | (uint32_t) IOPORT_PIN_P145_PFC_00_XSPI0_CKN) + }, + { + .pin = BSP_IO_PORT_14_PIN_6, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_CFG_SLEW_RATE_FAST | (uint32_t) IOPORT_PIN_P146_PFC_00_XSPI0_CKP) + }, + { + .pin = BSP_IO_PORT_14_PIN_7, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_CFG_SLEW_RATE_FAST | (uint32_t) IOPORT_PIN_P147_PFC_00_XSPI0_IO0) + }, + { + .pin = BSP_IO_PORT_15_PIN_0, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_CFG_SLEW_RATE_FAST | (uint32_t) IOPORT_PIN_P150_PFC_00_XSPI0_IO1) + }, + { + .pin = BSP_IO_PORT_15_PIN_1, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_CFG_SLEW_RATE_FAST | (uint32_t) IOPORT_PIN_P151_PFC_00_XSPI0_IO2) + }, + { + .pin = BSP_IO_PORT_15_PIN_2, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_CFG_SLEW_RATE_FAST | (uint32_t) IOPORT_PIN_P152_PFC_00_XSPI0_IO3) + }, + { + .pin = BSP_IO_PORT_15_PIN_3, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_CFG_SLEW_RATE_FAST | (uint32_t) IOPORT_PIN_P153_PFC_00_XSPI0_IO4) + }, + { + .pin = BSP_IO_PORT_15_PIN_4, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_CFG_SLEW_RATE_FAST | (uint32_t) IOPORT_PIN_P154_PFC_00_XSPI0_IO5) + }, + { + .pin = BSP_IO_PORT_15_PIN_5, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_CFG_SLEW_RATE_FAST | (uint32_t) IOPORT_PIN_P155_PFC_00_XSPI0_IO6) + }, + { + .pin = BSP_IO_PORT_15_PIN_6, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_CFG_SLEW_RATE_FAST | (uint32_t) IOPORT_PIN_P156_PFC_00_XSPI0_IO7) + }, + { + .pin = BSP_IO_PORT_15_PIN_7, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_CFG_SLEW_RATE_FAST | (uint32_t) IOPORT_PIN_P157_PFC_00_XSPI0_CS0) + }, + { + .pin = BSP_IO_PORT_16_PIN_0, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_CFG_SLEW_RATE_FAST | (uint32_t) IOPORT_PIN_P160_PFC_00_XSPI0_CS1) + }, + { + .pin = BSP_IO_PORT_16_PIN_1, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_PIN_P161_PFC_00_XSPI0_RESET0) + }, + { + .pin = BSP_IO_PORT_16_PIN_3, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_INPUT) + }, + { + .pin = BSP_IO_PORT_16_PIN_5, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_CFG_SLEW_RATE_FAST | (uint32_t) IOPORT_PIN_P165_PFC_01_TXD0_SDA0_MOSI0) + }, + { + .pin = BSP_IO_PORT_16_PIN_6, + .pin_cfg = ((uint32_t) IOPORT_CFG_DRIVE_HIGH | (uint32_t) IOPORT_CFG_PORT_PERI | (uint32_t) IOPORT_CFG_SLEW_RATE_FAST | (uint32_t) IOPORT_PIN_P166_PFC_02_RXD0_SCL0_MISO0) + }, + { + .pin = BSP_IO_PORT_17_PIN_3, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_18_PIN_2, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_22_PIN_1, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, + { + .pin = BSP_IO_PORT_22_PIN_3, + .pin_cfg = ((uint32_t) IOPORT_CFG_PORT_DIRECTION_OUTPUT | (uint32_t) IOPORT_CFG_PORT_OUTPUT_LOW) + }, +}; + +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], + .p_extend = &g_ioport_cfg_extend, +}; diff --git a/bsp/renesas/rzn2l_etherkit/rzn_gen/vector_data.c b/bsp/renesas/rzn2l_etherkit/rzn_gen/vector_data.c new file mode 100644 index 00000000000..c02f2f69daf --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_gen/vector_data.c @@ -0,0 +1,12 @@ +/* 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 + BSP_DONT_REMOVE const fsp_vector_t g_vector_table[BSP_ICU_VECTOR_MAX_ENTRIES] = + { + [288] = sci_uart_eri_isr, /* SCI0_ERI (SCI0 Receive error) */ + [289] = sci_uart_rxi_isr, /* SCI0_RXI (SCI0 Receive data full) */ + [290] = sci_uart_txi_isr, /* SCI0_TXI (SCI0 Transmit data empty) */ + [291] = sci_uart_tei_isr, /* SCI0_TEI (SCI0 Transmit end) */ + }; + #endif \ No newline at end of file diff --git a/bsp/renesas/rzn2l_etherkit/rzn_gen/vector_data.h b/bsp/renesas/rzn2l_etherkit/rzn_gen/vector_data.h new file mode 100644 index 00000000000..852c5ecf779 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/rzn_gen/vector_data.h @@ -0,0 +1,50 @@ +/* generated vector header file - do not edit */ + #ifndef VECTOR_DATA_H + #define VECTOR_DATA_H + #include "bsp_api.h" + /* Number of interrupts allocated */ + #ifndef VECTOR_DATA_IRQ_COUNT + #define VECTOR_DATA_IRQ_COUNT (4) + #endif + /* ISR prototypes */ + void sci_uart_eri_isr(void); + void sci_uart_rxi_isr(void); + void sci_uart_txi_isr(void); + void sci_uart_tei_isr(void); + + /* Vector table allocations */ + #define VECTOR_NUMBER_SCI0_ERI ((IRQn_Type) 288) /* SCI0_ERI (SCI0 Receive error) */ + #define VECTOR_NUMBER_SCI0_RXI ((IRQn_Type) 289) /* SCI0_RXI (SCI0 Receive data full) */ + #define VECTOR_NUMBER_SCI0_TXI ((IRQn_Type) 290) /* SCI0_TXI (SCI0 Transmit data empty) */ + #define VECTOR_NUMBER_SCI0_TEI ((IRQn_Type) 291) /* SCI0_TEI (SCI0 Transmit end) */ + typedef enum IRQn { + SoftwareGeneratedInt0 = -32, + SoftwareGeneratedInt1 = -31, + SoftwareGeneratedInt2 = -30, + SoftwareGeneratedInt3 = -29, + SoftwareGeneratedInt4 = -28, + SoftwareGeneratedInt5 = -27, + SoftwareGeneratedInt6 = -26, + SoftwareGeneratedInt7 = -25, + SoftwareGeneratedInt8 = -24, + SoftwareGeneratedInt9 = -23, + SoftwareGeneratedInt10 = -22, + SoftwareGeneratedInt11 = -21, + SoftwareGeneratedInt12 = -20, + SoftwareGeneratedInt13 = -19, + SoftwareGeneratedInt14 = -18, + SoftwareGeneratedInt15 = -17, + DebugCommunicationsChannelInt = -10, + PerformanceMonitorCounterOverflowInt = -9, + CrossTriggerInterfaceInt = -8, + VritualCPUInterfaceMaintenanceInt = -7, + HypervisorTimerInt = -6, + VirtualTimerInt = -5, + NonSecurePhysicalTimerInt = -2, + SCI0_ERI_IRQn = 288, /* SCI0_ERI (SCI0 Receive error) */ + SCI0_RXI_IRQn = 289, /* SCI0_RXI (SCI0 Receive data full) */ + SCI0_TXI_IRQn = 290, /* SCI0_TXI (SCI0 Transmit data empty) */ + SCI0_TEI_IRQn = 291, /* SCI0_TEI (SCI0 Transmit end) */ + SHARED_PERIPHERAL_INTERRUPTS_MAX_ENTRIES = BSP_VECTOR_TABLE_MAX_ENTRIES + } IRQn_Type; + #endif /* VECTOR_DATA_H */ \ No newline at end of file diff --git a/bsp/renesas/rzn2l_etherkit/script/fsp_xspi0_boot.icf b/bsp/renesas/rzn2l_etherkit/script/fsp_xspi0_boot.icf new file mode 100644 index 00000000000..b86eab5fe79 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/script/fsp_xspi0_boot.icf @@ -0,0 +1,735 @@ +/* generated memory regions file - do not edit */ +define symbol ATCM_START = 0x00000000; +define symbol ATCM_LENGTH = 0x20000; +define symbol BTCM_START = 0x00100000; +define symbol BTCM_LENGTH = 0x20000; +define symbol SYSTEM_RAM_START = 0x10000000; +define symbol SYSTEM_RAM_LENGTH = 0x180000; +define symbol SYSTEM_RAM_MIRROR_START = 0x30000000; +define symbol SYSTEM_RAM_MIRROR_LENGTH = 0x180000; +define symbol xSPI0_CS0_SPACE_MIRROR_START = 0x40000000; +define symbol xSPI0_CS0_SPACE_MIRROR_LENGTH = 0x4000000; +define symbol xSPI0_CS1_SPACE_MIRROR_START = 0x44000000; +define symbol xSPI0_CS1_SPACE_MIRROR_LENGTH = 0x4000000; +define symbol xSPI1_CS0_SPACE_MIRROR_START = 0x48000000; +define symbol xSPI1_CS0_SPACE_MIRROR_LENGTH = 0x4000000; +define symbol CS0_SPACE_MIRROR_START = 0x50000000; +define symbol CS0_SPACE_MIRROR_LENGTH = 0x4000000; +define symbol CS2_SPACE_MIRROR_START = 0x54000000; +define symbol CS2_SPACE_MIRROR_LENGTH = 0x4000000; +define symbol CS3_SPACE_MIRROR_START = 0x58000000; +define symbol CS3_SPACE_MIRROR_LENGTH = 0x4000000; +define symbol CS5_SPACE_MIRROR_START = 0x5C000000; +define symbol CS5_SPACE_MIRROR_LENGTH = 0x4000000; +define symbol xSPI0_CS0_SPACE_START = 0x60000000; +define symbol xSPI0_CS0_SPACE_LENGTH = 0x4000000; +define symbol xSPI0_CS1_SPACE_START = 0x64000000; +define symbol xSPI0_CS1_SPACE_LENGTH = 0x4000000; +define symbol xSPI1_CS0_SPACE_START = 0x68000000; +define symbol xSPI1_CS0_SPACE_LENGTH = 0x4000000; +define symbol CS0_SPACE_START = 0x70000000; +define symbol CS0_SPACE_LENGTH = 0x4000000; +define symbol CS2_SPACE_START = 0x74000000; +define symbol CS2_SPACE_LENGTH = 0x4000000; +define symbol CS3_SPACE_START = 0x78000000; +define symbol CS3_SPACE_LENGTH = 0x4000000; +define symbol CS5_SPACE_START = 0x7C000000; +define symbol CS5_SPACE_LENGTH = 0x4000000; + +/* The memory information for each device is done in memory regions file. + * The starting address and length of memory not defined in memory regions file are defined as 0. */ + +if (isdefinedsymbol(ATCM_START)) +{ + define symbol ATCM_PRV_START = ATCM_START; +} +else +{ + define symbol ATCM_PRV_START = 0; +} + +if (isdefinedsymbol(ATCM_LENGTH)) +{ + define symbol ATCM_PRV_LENGTH = ATCM_LENGTH; +} +else +{ + define symbol ATCM_PRV_LENGTH = 0; +} + +if (isdefinedsymbol(BTCM_START)) +{ + define symbol BTCM_PRV_START = BTCM_START; +} +else +{ + define symbol BTCM_PRV_START = 0; +} + +if (isdefinedsymbol(BTCM_LENGTH)) +{ + define symbol BTCM_PRV_LENGTH = BTCM_LENGTH; +} +else +{ + define symbol BTCM_PRV_LENGTH = 0; +} + +if (isdefinedsymbol(SYSTEM_RAM_START)) +{ + define symbol SYSTEM_RAM_PRV_START = SYSTEM_RAM_START; +} +else +{ + define symbol SYSTEM_RAM_PRV_START = 0; +} + +if (isdefinedsymbol(SYSTEM_RAM_LENGTH)) +{ + define symbol SYSTEM_RAM_PRV_LENGTH = SYSTEM_RAM_LENGTH; +} +else +{ + define symbol SYSTEM_RAM_PRV_LENGTH = 0; +} + +if (isdefinedsymbol(SYSTEM_RAM_MIRROR_START)) +{ + define symbol SYSTEM_RAM_MIRROR_PRV_START = SYSTEM_RAM_MIRROR_START; +} +else +{ + define symbol SYSTEM_RAM_MIRROR_PRV_START = 0; +} + +if (isdefinedsymbol(SYSTEM_RAM_MIRROR_LENGTH)) +{ + define symbol SYSTEM_RAM_MIRROR_PRV_LENGTH = SYSTEM_RAM_MIRROR_LENGTH; +} +else +{ + define symbol SYSTEM_RAM_MIRROR_PRV_LENGTH = 0; +} + +if (isdefinedsymbol(xSPI0_CS0_SPACE_MIRROR_START)) +{ + define symbol xSPI0_CS0_SPACE_MIRROR_PRV_START = xSPI0_CS0_SPACE_MIRROR_START; +} +else +{ + define symbol xSPI0_CS0_SPACE_MIRROR_PRV_START = 0; +} + +if (isdefinedsymbol(xSPI0_CS0_SPACE_MIRROR_LENGTH)) +{ + define symbol xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH = xSPI0_CS0_SPACE_MIRROR_LENGTH; +} +else +{ + define symbol xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH = 0; +} + +if (isdefinedsymbol(xSPI0_CS1_SPACE_MIRROR_START)) +{ + define symbol xSPI0_CS1_SPACE_MIRROR_PRV_START = xSPI0_CS1_SPACE_MIRROR_START; +} +else +{ + define symbol xSPI0_CS1_SPACE_MIRROR_PRV_START = 0; +} + +if (isdefinedsymbol(xSPI0_CS1_SPACE_MIRROR_LENGTH)) +{ + define symbol xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH = xSPI0_CS1_SPACE_MIRROR_LENGTH; +} +else +{ + define symbol xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH = 0; +} + +if (isdefinedsymbol(xSPI1_CS0_SPACE_MIRROR_START)) +{ + define symbol xSPI1_CS0_SPACE_MIRROR_PRV_START = xSPI1_CS0_SPACE_MIRROR_START; +} +else +{ + define symbol xSPI1_CS0_SPACE_MIRROR_PRV_START = 0; +} + +if (isdefinedsymbol(xSPI1_CS0_SPACE_MIRROR_LENGTH)) +{ + define symbol xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH = xSPI1_CS0_SPACE_MIRROR_LENGTH; +} +else +{ + define symbol xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH = 0; +} + +if (isdefinedsymbol(xSPI1_CS1_SPACE_MIRROR_START)) +{ + define symbol xSPI1_CS1_SPACE_MIRROR_PRV_START = xSPI1_CS1_SPACE_MIRROR_START; +} +else +{ + define symbol xSPI1_CS1_SPACE_MIRROR_PRV_START = 0; +} + +if (isdefinedsymbol(xSPI1_CS1_SPACE_MIRROR_LENGTH)) +{ + define symbol xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH = xSPI1_CS1_SPACE_MIRROR_LENGTH; +} +else +{ + define symbol xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH = 0; +} + +if (isdefinedsymbol(CS0_SPACE_MIRROR_START)) +{ + define symbol CS0_SPACE_MIRROR_PRV_START = CS0_SPACE_MIRROR_START; +} +else +{ + define symbol CS0_SPACE_MIRROR_PRV_START = 0; +} + +if (isdefinedsymbol(CS0_SPACE_MIRROR_LENGTH)) +{ + define symbol CS0_SPACE_MIRROR_PRV_LENGTH = CS0_SPACE_MIRROR_LENGTH; +} +else +{ + define symbol CS0_SPACE_MIRROR_PRV_LENGTH = 0; +} + +if (isdefinedsymbol(CS2_SPACE_MIRROR_START)) +{ + define symbol CS2_SPACE_MIRROR_PRV_START = CS2_SPACE_MIRROR_START; +} +else +{ + define symbol CS2_SPACE_MIRROR_PRV_START = 0; +} + +if (isdefinedsymbol(CS2_SPACE_MIRROR_LENGTH)) +{ + define symbol CS2_SPACE_MIRROR_PRV_LENGTH = CS2_SPACE_MIRROR_LENGTH; +} +else +{ + define symbol CS2_SPACE_MIRROR_PRV_LENGTH = 0; +} + + +if (isdefinedsymbol(CS3_SPACE_MIRROR_START)) +{ + define symbol CS3_SPACE_MIRROR_PRV_START = CS3_SPACE_MIRROR_START; +} +else +{ + define symbol CS3_SPACE_MIRROR_PRV_START = 0; +} + +if (isdefinedsymbol(CS3_SPACE_MIRROR_LENGTH)) +{ + define symbol CS3_SPACE_MIRROR_PRV_LENGTH = CS3_SPACE_MIRROR_LENGTH; +} +else +{ + define symbol CS3_SPACE_MIRROR_PRV_LENGTH = 0; +} + +if (isdefinedsymbol(CS5_SPACE_MIRROR_START)) +{ + define symbol CS5_SPACE_MIRROR_PRV_START = CS5_SPACE_MIRROR_START; +} +else +{ + define symbol CS5_SPACE_MIRROR_PRV_START = 0; +} + +if (isdefinedsymbol(CS5_SPACE_MIRROR_LENGTH)) +{ + define symbol CS5_SPACE_MIRROR_PRV_LENGTH = CS5_SPACE_MIRROR_LENGTH; +} +else +{ + define symbol CS5_SPACE_MIRROR_PRV_LENGTH = 0; +} + + +if (isdefinedsymbol(xSPI0_CS0_SPACE_START)) +{ + define symbol xSPI0_CS0_SPACE_PRV_START = xSPI0_CS0_SPACE_START; +} +else +{ + define symbol xSPI0_CS0_SPACE_PRV_START = 0; +} + +if (isdefinedsymbol(xSPI0_CS0_SPACE_LENGTH)) +{ + define symbol xSPI0_CS0_SPACE_PRV_LENGTH = xSPI0_CS0_SPACE_LENGTH; +} +else +{ + define symbol xSPI0_CS0_SPACE_PRV_LENGTH = 0; +} + +if (isdefinedsymbol(xSPI0_CS1_SPACE_START)) +{ + define symbol xSPI0_CS1_SPACE_PRV_START = xSPI0_CS1_SPACE_START; +} +else +{ + define symbol xSPI0_CS1_SPACE_PRV_START = 0; +} + +if (isdefinedsymbol(xSPI0_CS1_SPACE_LENGTH)) +{ + define symbol xSPI0_CS1_SPACE_PRV_LENGTH = xSPI0_CS1_SPACE_LENGTH; +} +else +{ + define symbol xSPI0_CS1_SPACE_PRV_LENGTH = 0; +} + +if (isdefinedsymbol(xSPI1_CS0_SPACE_START)) +{ + define symbol xSPI1_CS0_SPACE_PRV_START = xSPI1_CS0_SPACE_START; +} +else +{ + define symbol xSPI1_CS0_SPACE_PRV_START = 0; +} + +if (isdefinedsymbol(xSPI1_CS0_SPACE_LENGTH)) +{ + define symbol xSPI1_CS0_SPACE_PRV_LENGTH = xSPI1_CS0_SPACE_LENGTH; +} +else +{ + define symbol xSPI1_CS0_SPACE_PRV_LENGTH = 0; +} + +if (isdefinedsymbol(xSPI1_CS1_SPACE_START)) +{ + define symbol xSPI1_CS1_SPACE_PRV_START = xSPI1_CS1_SPACE_START; +} +else +{ + define symbol xSPI1_CS1_SPACE_PRV_START = 0; +} + +if (isdefinedsymbol(xSPI1_CS1_SPACE_LENGTH)) +{ + define symbol xSPI1_CS1_SPACE_PRV_LENGTH = xSPI1_CS1_SPACE_LENGTH; +} +else +{ + define symbol xSPI1_CS1_SPACE_PRV_LENGTH = 0; +} + +if (isdefinedsymbol(CS0_SPACE_START)) +{ + define symbol CS0_SPACE_PRV_START = CS0_SPACE_START; +} +else +{ + define symbol CS0_SPACE_PRV_START = 0; +} + +if (isdefinedsymbol(CS0_SPACE_LENGTH)) +{ + define symbol CS0_SPACE_PRV_LENGTH = CS0_SPACE_LENGTH; +} +else +{ + define symbol CS0_SPACE_PRV_LENGTH = 0; +} + +if (isdefinedsymbol(CS2_SPACE_START)) +{ + define symbol CS2_SPACE_PRV_START = CS2_SPACE_START; +} +else +{ + define symbol CS2_SPACE_PRV_START = 0; +} + +if (isdefinedsymbol(CS2_SPACE_LENGTH)) +{ + define symbol CS2_SPACE_PRV_LENGTH = CS2_SPACE_LENGTH; +} +else +{ + define symbol CS2_SPACE_PRV_LENGTH = 0; +} + +if (isdefinedsymbol(CS3_SPACE_START)) +{ + define symbol CS3_SPACE_PRV_START = CS3_SPACE_START; +} +else +{ + define symbol CS3_SPACE_PRV_START = 0; +} + +if (isdefinedsymbol(CS3_SPACE_LENGTH)) +{ + define symbol CS3_SPACE_PRV_LENGTH = CS3_SPACE_LENGTH; +} +else +{ + define symbol CS3_SPACE_PRV_LENGTH = 0; +} + +if (isdefinedsymbol(CS5_SPACE_START)) +{ + define symbol CS5_SPACE_PRV_START = CS5_SPACE_START; +} +else +{ + define symbol CS5_SPACE_PRV_START = 0; +} + +if (isdefinedsymbol(CS5_SPACE_LENGTH)) +{ + define symbol CS5_SPACE_PRV_LENGTH = CS5_SPACE_LENGTH; +} +else +{ + define symbol CS5_SPACE_PRV_LENGTH = 0; +} + +define symbol SYSTEM_RAM_END_OFFSET = 0x00048000; +define symbol FLASH_ADDRESS = xSPI0_CS0_SPACE_PRV_START; + +/* +define symbol INTVEC_ADDRESS = ATCM_PRV_START; +define symbol RAM_ADDRESS = (ATCM_PRV_START + 0x100); +define symbol RAM_END_ADDRESS = (ATCM_PRV_START + ATCM_PRV_LENGTH - 1); +define symbol LOADER_STACK_ADDRESS = (BTCM_PRV_START + 0x2000); +define symbol LOADER_STACK_END_ADDRESS = (BTCM_PRV_START + BTCM_PRV_LENGTH - 1); +define symbol DATA_NONCACHE_OFFSET = 0x00048000; +define symbol DATA_NONCACHE_END_OFFSET = 0x00044000; +define symbol DMAC_LINK_MODE_OFFSET = 0x00044000; +define symbol DMAC_LINK_MODE_END_OFFSET = 0x00040000; +define symbol NONCACHE_BUFFER_OFFSET = 0x00020000; +define symbol NONCACHE_BUFFER_END_OFFSET = 0; +*/ +/************* Override define symbol to place EtherCAT protocol into SystemRAM ************/ +define symbol INTVEC_ADDRESS = SYSTEM_RAM_PRV_START; +define symbol RAM_ADDRESS = (SYSTEM_RAM_PRV_START + 0x100); +define symbol RAM_END_ADDRESS = (SYSTEM_RAM_PRV_START + SYSTEM_RAM_PRV_LENGTH - 1); +define symbol LOADER_STACK_ADDRESS = (BTCM_PRV_START + 0x2000); +define symbol LOADER_STACK_END_ADDRESS = (BTCM_PRV_START + BTCM_PRV_LENGTH - 1); +define symbol DATA_NONCACHE_OFFSET = 0x00048000; +define symbol DATA_NONCACHE_END_OFFSET = 0x00044000; +define symbol DMAC_LINK_MODE_OFFSET = 0x00044000; +define symbol DMAC_LINK_MODE_END_OFFSET = 0x00040000; +define symbol NONCACHE_BUFFER_OFFSET = 0x00020000; +define symbol NONCACHE_BUFFER_END_OFFSET = 0; +/*********************************************************************************************/ + +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */ +/*-Specials-*/ +define symbol __ICFEDIT_intvec_start__ = INTVEC_ADDRESS; +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_ROM_start__ = FLASH_ADDRESS + 0x20100; +define symbol __ICFEDIT_region_ROM_end__ = FLASH_ADDRESS + 0x6FFFF; +define symbol __ICFEDIT_region_RAM_start__ = RAM_ADDRESS; +define symbol __ICFEDIT_region_RAM_end__ = RAM_END_ADDRESS; +/**** End of ICF editor section. ###ICF###*/ + +/*-Sizes-*/ +define symbol __ICFEDIT_size_cstack__ = 0x200; +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; +define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; + +define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; + +define symbol __region_D_LOADER_STACK_start__ = LOADER_STACK_ADDRESS; +define symbol __region_D_LOADER_STACK_end__ = LOADER_STACK_END_ADDRESS; + +define symbol __region_DATA_NONCACHE_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DATA_NONCACHE_OFFSET; +define symbol __region_DATA_NONCACHE_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DATA_NONCACHE_END_OFFSET - 1; +define symbol __region_DMAC_LINK_MODE_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DMAC_LINK_MODE_OFFSET; +define symbol __region_DMAC_LINK_MODE_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DMAC_LINK_MODE_END_OFFSET - 1; +define symbol __region_SHARED_NONCACHE_BUFFER_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - 0x00040000; +define symbol __region_SHARED_NONCACHE_BUFFER_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - 0x00020000 - 1; +define symbol __region_NONCACHE_BUFFER_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - NONCACHE_BUFFER_OFFSET; +define symbol __region_NONCACHE_BUFFER_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - NONCACHE_BUFFER_END_OFFSET - 1; + +define symbol __region_ATCM_start__ = ATCM_PRV_START; +define symbol __region_ATCM_end__ = ATCM_PRV_START + ATCM_PRV_LENGTH - 1; +define symbol __region_BTCM_start__ = BTCM_PRV_START; +define symbol __region_BTCM_end__ = BTCM_PRV_START + BTCM_PRV_LENGTH - 1; +define symbol __region_SYSTEM_RAM_start__ = SYSTEM_RAM_PRV_START; +define symbol __region_SYSTEM_RAM_end__ = SYSTEM_RAM_PRV_START + SYSTEM_RAM_PRV_LENGTH - SYSTEM_RAM_END_OFFSET - 1; +define symbol __region_SYSTEM_RAM_MIRROR_start__ = SYSTEM_RAM_MIRROR_PRV_START; +define symbol __region_SYSTEM_RAM_MIRROR_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - SYSTEM_RAM_END_OFFSET - 1; + +define symbol __region_XSPI0_CS0_MIRROR_start__ = xSPI0_CS0_SPACE_MIRROR_PRV_START; +define symbol __region_XSPI0_CS0_MIRROR_end__ = xSPI0_CS0_SPACE_MIRROR_PRV_START + xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH - 1; +define symbol __region_XSPI0_CS1_MIRROR_start__ = xSPI0_CS1_SPACE_MIRROR_PRV_START; +define symbol __region_XSPI0_CS1_MIRROR_end__ = xSPI0_CS1_SPACE_MIRROR_PRV_START + xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH - 1; +define symbol __region_XSPI1_CS0_MIRROR_start__ = xSPI1_CS0_SPACE_MIRROR_PRV_START; +define symbol __region_XSPI1_CS0_MIRROR_end__ = xSPI1_CS0_SPACE_MIRROR_PRV_START + xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH - 1; +define symbol __region_XSPI1_CS1_MIRROR_start__ = xSPI1_CS1_SPACE_MIRROR_PRV_START; +define symbol __region_XSPI1_CS1_MIRROR_end__ = xSPI1_CS1_SPACE_MIRROR_PRV_START + xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH - 1; +define symbol __region_CS0_MIRROR_start__ = CS0_SPACE_MIRROR_PRV_START; +define symbol __region_CS0_MIRROR_end__ = CS0_SPACE_MIRROR_PRV_START + CS0_SPACE_MIRROR_PRV_LENGTH - 1; +define symbol __region_CS2_MIRROR_start__ = CS2_SPACE_MIRROR_PRV_START; +define symbol __region_CS2_MIRROR_end__ = CS2_SPACE_MIRROR_PRV_START + CS2_SPACE_MIRROR_PRV_LENGTH - 1; +define symbol __region_CS3_MIRROR_start__ = CS3_SPACE_MIRROR_PRV_START; +define symbol __region_CS3_MIRROR_end__ = CS3_SPACE_MIRROR_PRV_START + CS3_SPACE_MIRROR_PRV_LENGTH - 1; +define symbol __region_CS5_MIRROR_start__ = CS5_SPACE_MIRROR_PRV_START; +define symbol __region_CS5_MIRROR_end__ = CS5_SPACE_MIRROR_PRV_START + CS5_SPACE_MIRROR_PRV_LENGTH - 1; +define symbol __region_XSPI0_CS0_start__ = xSPI0_CS0_SPACE_PRV_START; +define symbol __region_XSPI0_CS0_end__ = xSPI0_CS0_SPACE_PRV_START + xSPI0_CS0_SPACE_PRV_LENGTH - 1; +define symbol __region_XSPI0_CS1_start__ = xSPI0_CS1_SPACE_PRV_START; +define symbol __region_XSPI0_CS1_end__ = xSPI0_CS1_SPACE_PRV_START + xSPI0_CS1_SPACE_PRV_LENGTH - 1; +define symbol __region_XSPI1_CS0_start__ = xSPI1_CS0_SPACE_PRV_START; +define symbol __region_XSPI1_CS0_end__ = xSPI1_CS0_SPACE_PRV_START + xSPI1_CS0_SPACE_PRV_LENGTH - 1; +define symbol __region_XSPI1_CS1_start__ = xSPI1_CS1_SPACE_PRV_START; +define symbol __region_XSPI1_CS1_end__ = xSPI1_CS1_SPACE_PRV_START + xSPI1_CS1_SPACE_PRV_LENGTH - 1; +define symbol __region_CS0_start__ = CS0_SPACE_PRV_START; +define symbol __region_CS0_end__ = CS0_SPACE_PRV_START + CS0_SPACE_PRV_LENGTH - 1; +define symbol __region_CS2_start__ = CS2_SPACE_PRV_START; +define symbol __region_CS2_end__ = CS2_SPACE_PRV_START + CS2_SPACE_PRV_LENGTH - 1; +define symbol __region_CS3_start__ = CS3_SPACE_PRV_START; +define symbol __region_CS3_end__ = CS3_SPACE_PRV_START + CS3_SPACE_PRV_LENGTH - 1; +define symbol __region_CS5_start__ = CS5_SPACE_PRV_START; +define symbol __region_CS5_end__ = CS5_SPACE_PRV_START + CS5_SPACE_PRV_LENGTH - 1; + +/************** SPI boot mode setting **************/ +define symbol __region_LDR_PARAM_start__ = FLASH_ADDRESS; +define symbol __region_LDR_PARAM_end__ = FLASH_ADDRESS + 0x0000004B; +define symbol __region_S_LOADER_STACK_start__ = FLASH_ADDRESS + 0x0000004C; +define symbol __region_S_LOADER_STACK_end__ = FLASH_ADDRESS + 0x0000804B; + +define symbol __region_S_intvec_start__ = FLASH_ADDRESS + 0x20000; +define symbol __region_S_intvec_end__ = FLASH_ADDRESS + 0x200FF; +define symbol __region_S_RAM_start__ = FLASH_ADDRESS + 0x70000; +define symbol __region_S_RAM_end__ = FLASH_ADDRESS + 0x7FFFF; +/****************************************************/ + +define region D_LOADER_STACK_region = mem:[from __region_D_LOADER_STACK_start__ to __region_D_LOADER_STACK_end__]; + +define region LDR_PARAM_region = mem:[from __region_LDR_PARAM_start__ to __region_LDR_PARAM_end__]; +define region S_LOADER_STACK_region = mem:[from __region_S_LOADER_STACK_start__ to __region_S_LOADER_STACK_end__]; + +define region S_intvec_region = mem:[from __region_S_intvec_start__ to __region_S_intvec_end__]; +define region S_RAM_region = mem:[from __region_S_RAM_start__ to __region_S_RAM_end__]; + +define region DATA_NONCACHE_region = mem:[from __region_DATA_NONCACHE_start__ to __region_DATA_NONCACHE_end__]; +define region DMAC_LINK_MODE_region = mem:[from __region_DMAC_LINK_MODE_start__ to __region_DMAC_LINK_MODE_end__]; +define region SHARED_NONCACHE_BUFFER_region = mem:[from __region_SHARED_NONCACHE_BUFFER_start__ to __region_SHARED_NONCACHE_BUFFER_end__]; +define region NONCACHE_BUFFER_region = mem:[from __region_NONCACHE_BUFFER_start__ to __region_NONCACHE_BUFFER_end__]; + +define region ATCM_region = mem:[from __region_ATCM_start__ to __region_ATCM_end__ ]; +define region BTCM_region = mem:[from __region_BTCM_start__ to __region_BTCM_end__ ]; +define region SYSTEM_RAM_region = mem:[from __region_SYSTEM_RAM_start__ to __region_SYSTEM_RAM_end__ ]; +define region SYSTEM_RAM_MIRROR_region = mem:[from __region_SYSTEM_RAM_MIRROR_start__ to __region_SYSTEM_RAM_MIRROR_end__ ]; +define region XSPI0_CS0_MIRROR_region = mem:[from __region_XSPI0_CS0_MIRROR_start__ to __region_XSPI0_CS0_MIRROR_end__ ]; +define region XSPI0_CS1_MIRROR_region = mem:[from __region_XSPI0_CS1_MIRROR_start__ to __region_XSPI0_CS1_MIRROR_end__ ]; +define region XSPI1_CS0_MIRROR_region = mem:[from __region_XSPI1_CS0_MIRROR_start__ to __region_XSPI1_CS0_MIRROR_end__ ]; +define region XSPI1_CS1_MIRROR_region = mem:[from __region_XSPI1_CS1_MIRROR_start__ to __region_XSPI1_CS1_MIRROR_end__ ]; +define region CS0_MIRROR_region = mem:[from __region_CS0_MIRROR_start__ to __region_CS0_MIRROR_end__ ]; +define region CS2_MIRROR_region = mem:[from __region_CS2_MIRROR_start__ to __region_CS2_MIRROR_end__ ]; +define region CS3_MIRROR_region = mem:[from __region_CS3_MIRROR_start__ to __region_CS3_MIRROR_end__ ]; +define region CS5_MIRROR_region = mem:[from __region_CS5_MIRROR_start__ to __region_CS5_MIRROR_end__ ]; +define region XSPI0_CS0_region = mem:[from __region_XSPI0_CS0_start__ to __region_XSPI0_CS0_end__ ]; +define region XSPI0_CS1_region = mem:[from __region_XSPI0_CS1_start__ to __region_XSPI0_CS1_end__ ]; +define region XSPI1_CS0_region = mem:[from __region_XSPI1_CS0_start__ to __region_XSPI1_CS0_end__ ]; +define region XSPI1_CS1_region = mem:[from __region_XSPI1_CS1_start__ to __region_XSPI1_CS1_end__ ]; +define region CS0_region = mem:[from __region_CS0_start__ to __region_CS0_end__ ]; +define region CS2_region = mem:[from __region_CS2_start__ to __region_CS2_end__ ]; +define region CS3_region = mem:[from __region_CS3_start__ to __region_CS3_end__ ]; +define region CS5_region = mem:[from __region_CS5_start__ to __region_CS5_end__ ]; + +define block LDR_PRG_RBLOCK with fixed order + { ro code section .loader_text_init object startup_core.o, + ro code object startup_core.o, + ro code object system_core.o, + ro code object startup.o, + ro code object system.o, + ro code object bsp_clocks.o, + ro code object bsp_irq_core.o, + ro code object bsp_irq.o, + ro code object bsp_register_protection.o, + ro code object r_ioport.o, + ro code object bsp_cache.o, + ro code section .warm_start_init } + except { ro code section .intvec_init, + ro code section .reset_handler_init }; +define block LDR_PRG_WBLOCK with fixed order + { rw code section .loader_text object startup_core.o, + rw code object startup_core.o, + rw code object system_core.o, + rw code object startup.o, + rw code object system.o, + rw code object bsp_clocks.o, + rw code object bsp_irq_core.o, + rw code object bsp_irq.o, + rw code object bsp_register_protection.o, + rw code object r_ioport.o, + rw code object bsp_cache.o, + rw code section .warm_start } + except { rw code section .intvec, + rw code section .reset_handler }; +define block LDR_DATA_ZBLOCK with alignment = 4 + { section .bss object startup_core.o, + section .bss object system_core.o, + section .bss object startup.o, + section .bss object system.o, + section .bss object bsp_clocks.o, + section .bss object bsp_irq_core.o, + section .bss object bsp_irq.o, + section .bss object bsp_register_protection.o, + section .bss object r_ioport.o, + section .bss object bsp_cache.o, + section .bss object bsp_io.o }; +define block LDR_DATA_RBLOCK with fixed order, alignment = 4 + { section .data_init object startup_core.o, + section .data_init object system_core.o, + section .data_init object startup.o, + section .data_init object system.o, + section .data_init object bsp_clocks.o, + section .data_init object bsp_irq_core.o, + section .data_init object bsp_irq.o, + section .data_init object bsp_register_protection.o, + section .data_init object r_ioport.o, + section .data_init object bsp_cache.o, + section .rodata_init object system_core.o }; +define block LDR_DATA_WBLOCK with fixed order, alignment = 4 + { section .data object startup_core.o, + section .data object system_core.o, + section .data object startup.o, + section .data object system.o, + section .data object bsp_clocks.o, + section .data object bsp_irq_core.o, + section .data object bsp_irq.o, + section .data object bsp_register_protection.o, + section .data object r_ioport.o, + section .data object bsp_cache.o, + section .rodata object system_core.o }; + +define block HEAP_BLOCK with alignment = 8 { rw section HEAP }; +define block THREAD_STACK with alignment = 8 { rw section .stack* }; +define block SYS_STACK with alignment = 8 { rw section .sys_stack }; +define block SVC_STACK with alignment = 8 { rw section .svc_stack }; +define block IRQ_STACK with alignment = 8 { rw section .irq_stack }; +define block FIQ_STACK with alignment = 8 { rw section .fiq_stack }; +define block UND_STACK with alignment = 8 { rw section .und_stack }; +define block ABT_STACK with alignment = 8 { rw section .abt_stack }; + +define block VECTOR_RBLOCK with alignment = 32 { ro code section .intvec_init}; +define block VECTOR_WBLOCK with alignment = 32 { rw code section .intvec}; +define block USER_PRG_RBLOCK with alignment = 4 { ro code }; +define block USER_PRG_WBLOCK with alignment = 4 { rw code }; +define block USER_DATA_ZBLOCK with alignment = 4 { section .bss }; +define block USER_DATA_RBLOCK with fixed order, alignment = 4 + { section .data_init, + section __DLIB_PERTHREAD_init, + section .rodata_init, + section .version_init }; +define block USER_DATA_WBLOCK with fixed order, alignment = 4 + { section .data, + section __DLIB_PERTHREAD, + section .rodata, + section .version }; +define block USER_DATA_NONCACHE_RBLOCK with alignment = 4 { section .data_noncache_init }; +define block USER_DATA_NONCACHE_WBLOCK with alignment = 4 { section .data_noncache }; +define block DMAC_LINK_MODE_ZBLOCK with alignment = 4 { section .dmac_link_mode* }; +define block SHARED_NONCACHE_BUFFER_ZBLOCK with alignment = 32 { section .shared_noncache_buffer* }; +define block NONCACHE_BUFFER_ZBLOCK with alignment = 32 { section .noncache_buffer* }; + +initialize manually { ro code object startup_core.o, + ro code object system_core.o, + ro code object startup.o, + ro code object system.o, + ro code object bsp_clocks.o, + ro code object bsp_irq_core.o, + ro code object bsp_irq.o, + ro code object bsp_register_protection.o, + ro code object r_ioport.o, + ro code object bsp_cache.o, + ro code section .intvec, + ro code section .reset_handler, + ro code section .warm_start, + ro code, + section .data, + section __DLIB_PERTHREAD, + section .rodata, + section .version, + section .data_noncache }; + +do not initialize { section .noinit, + section .bss, + section .dmac_link_mode*, + section .shared_noncache_buffer*, + section .noncache_buffer*, + rw section HEAP, + rw section .stack*, + rw section .sys_stack, + rw section .svc_stack, + rw section .irq_stack, + rw section .fiq_stack, + rw section .und_stack, + rw section .abt_stack }; + +place at address mem: __ICFEDIT_intvec_start__ { block VECTOR_WBLOCK }; + +place in LDR_PARAM_region { readonly section .loader_param }; +place at start of S_LOADER_STACK_region { block LDR_PRG_RBLOCK }; +place in S_LOADER_STACK_region { section LDR_DATA_RBLOCK, block LDR_DATA_RBLOCK }; +place in S_intvec_region { block VECTOR_RBLOCK }; +place in ROM_region { block USER_PRG_RBLOCK, readonly }; +place in S_RAM_region { block USER_DATA_RBLOCK, block USER_DATA_NONCACHE_RBLOCK }; + +place at start of D_LOADER_STACK_region { block LDR_PRG_WBLOCK }; +place in D_LOADER_STACK_region { section LDR_DATA_WBLOCK, block LDR_DATA_WBLOCK, + section LDR_DATA_ZBLOCK, block LDR_DATA_ZBLOCK }; +place in D_LOADER_STACK_region { section SYS_STACK, block SYS_STACK, + section SVC_STACK, block SVC_STACK, + section IRQ_STACK, block IRQ_STACK, + section FIQ_STACK, block FIQ_STACK, + section UND_STACK, block UND_STACK, + section ABT_STACK, block ABT_STACK }; +place in RAM_region { block USER_PRG_WBLOCK }; +place in RAM_region { readwrite, last block CSTACK }; +place in RAM_region { block USER_DATA_WBLOCK, + block USER_DATA_ZBLOCK }; +place in RAM_region { section HEAP_BLOCK, block HEAP_BLOCK, + section THREAD_STACK, block THREAD_STACK }; + +place in DATA_NONCACHE_region { block USER_DATA_NONCACHE_WBLOCK }; +place in DMAC_LINK_MODE_region { block DMAC_LINK_MODE_ZBLOCK }; +place in SHARED_NONCACHE_BUFFER_region { block SHARED_NONCACHE_BUFFER_ZBLOCK }; +place in NONCACHE_BUFFER_region { block NONCACHE_BUFFER_ZBLOCK }; +place in ATCM_region { }; +place in BTCM_region { }; +place in SYSTEM_RAM_region { }; +place in SYSTEM_RAM_MIRROR_region { }; +place in XSPI0_CS0_MIRROR_region { }; +place in XSPI0_CS1_MIRROR_region { }; +place in XSPI1_CS0_MIRROR_region { }; +place in XSPI1_CS1_MIRROR_region { }; +place in CS0_MIRROR_region { }; +place in CS2_MIRROR_region { }; +place in CS3_MIRROR_region { }; +place in CS5_MIRROR_region { }; +place in XSPI0_CS0_region { }; +place in XSPI0_CS1_region { }; +place in XSPI1_CS0_region { }; +place in XSPI1_CS1_region { }; +place in CS0_region { }; +place in CS2_region { }; +place in CS3_region { }; +place in CS5_region { }; diff --git a/bsp/renesas/rzn2l_etherkit/script/fsp_xspi0_boot.ld b/bsp/renesas/rzn2l_etherkit/script/fsp_xspi0_boot.ld new file mode 100644 index 00000000000..ef2a35fc4c4 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/script/fsp_xspi0_boot.ld @@ -0,0 +1,448 @@ +/* + Linker File for Renesas RZ/N2L FSP +*/ +/* The memory information for each device is done in memory regions file. + * The starting address and length of memory not defined in memory regions file are defined as 0. */ + +/* generated memory regions file - do not edit */ +ATCM_START = 0x00000000; +ATCM_LENGTH = 0x20000; +BTCM_START = 0x00100000; +BTCM_LENGTH = 0x20000; +SYSTEM_RAM_START = 0x10000000; +SYSTEM_RAM_LENGTH = 0x180000; +SYSTEM_RAM_MIRROR_START = 0x30000000; +SYSTEM_RAM_MIRROR_LENGTH = 0x180000; +xSPI0_CS0_SPACE_MIRROR_START = 0x40000000; +xSPI0_CS0_SPACE_MIRROR_LENGTH = 0x4000000; +xSPI0_CS1_SPACE_MIRROR_START = 0x44000000; +xSPI0_CS1_SPACE_MIRROR_LENGTH = 0x4000000; +xSPI1_CS0_SPACE_MIRROR_START = 0x48000000; +xSPI1_CS0_SPACE_MIRROR_LENGTH = 0x4000000; +CS0_SPACE_MIRROR_START = 0x50000000; +CS0_SPACE_MIRROR_LENGTH = 0x4000000; +CS2_SPACE_MIRROR_START = 0x54000000; +CS2_SPACE_MIRROR_LENGTH = 0x4000000; +CS3_SPACE_MIRROR_START = 0x58000000; +CS3_SPACE_MIRROR_LENGTH = 0x4000000; +CS5_SPACE_MIRROR_START = 0x5C000000; +CS5_SPACE_MIRROR_LENGTH = 0x4000000; +xSPI0_CS0_SPACE_START = 0x60000000; +xSPI0_CS0_SPACE_LENGTH = 0x4000000; +xSPI0_CS1_SPACE_START = 0x64000000; +xSPI0_CS1_SPACE_LENGTH = 0x4000000; +xSPI1_CS0_SPACE_START = 0x68000000; +xSPI1_CS0_SPACE_LENGTH = 0x4000000; +CS0_SPACE_START = 0x70000000; +CS0_SPACE_LENGTH = 0x4000000; +CS2_SPACE_START = 0x74000000; +CS2_SPACE_LENGTH = 0x4000000; +CS3_SPACE_START = 0x78000000; +CS3_SPACE_LENGTH = 0x4000000; +CS5_SPACE_START = 0x7C000000; +CS5_SPACE_LENGTH = 0x4000000; + +ATCM_PRV_START = DEFINED(ATCM_START) ? ATCM_START : 0; +ATCM_PRV_LENGTH = DEFINED(ATCM_LENGTH) ? ATCM_LENGTH : 0; +BTCM_PRV_START = DEFINED(BTCM_START) ? BTCM_START : 0; +BTCM_PRV_LENGTH = DEFINED(BTCM_LENGTH) ? BTCM_LENGTH : 0; +SYSTEM_RAM_PRV_START = DEFINED(SYSTEM_RAM_START) ? SYSTEM_RAM_START : 0; +SYSTEM_RAM_PRV_LENGTH = DEFINED(SYSTEM_RAM_LENGTH) ? SYSTEM_RAM_LENGTH : 0; +SYSTEM_RAM_MIRROR_PRV_START = DEFINED(SYSTEM_RAM_MIRROR_START) ? SYSTEM_RAM_MIRROR_START : 0; +SYSTEM_RAM_MIRROR_PRV_LENGTH = DEFINED(SYSTEM_RAM_MIRROR_LENGTH) ? SYSTEM_RAM_MIRROR_LENGTH : 0; +xSPI0_CS0_SPACE_MIRROR_PRV_START = DEFINED(xSPI0_CS0_SPACE_MIRROR_START) ? xSPI0_CS0_SPACE_MIRROR_START : 0; +xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH = DEFINED(xSPI0_CS0_SPACE_MIRROR_LENGTH) ? xSPI0_CS0_SPACE_MIRROR_LENGTH : 0; +xSPI0_CS1_SPACE_MIRROR_PRV_START = DEFINED(xSPI0_CS1_SPACE_MIRROR_START) ? xSPI0_CS1_SPACE_MIRROR_START : 0; +xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH = DEFINED(xSPI0_CS1_SPACE_MIRROR_LENGTH) ? xSPI0_CS1_SPACE_MIRROR_LENGTH : 0; +xSPI1_CS0_SPACE_MIRROR_PRV_START = DEFINED(xSPI1_CS0_SPACE_MIRROR_START) ? xSPI1_CS0_SPACE_MIRROR_START : 0; +xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH = DEFINED(xSPI1_CS0_SPACE_MIRROR_LENGTH) ? xSPI1_CS0_SPACE_MIRROR_LENGTH : 0; +xSPI1_CS1_SPACE_MIRROR_PRV_START = DEFINED(xSPI1_CS1_SPACE_MIRROR_START) ? xSPI1_CS1_SPACE_MIRROR_START : 0; +xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH = DEFINED(xSPI1_CS1_SPACE_MIRROR_LENGTH) ? xSPI1_CS1_SPACE_MIRROR_LENGTH : 0; +CS0_SPACE_MIRROR_PRV_START = DEFINED(CS0_SPACE_MIRROR_START) ? CS0_SPACE_MIRROR_START : 0; +CS0_SPACE_MIRROR_PRV_LENGTH = DEFINED(CS0_SPACE_MIRROR_LENGTH) ? CS0_SPACE_MIRROR_LENGTH : 0; +CS2_SPACE_MIRROR_PRV_START = DEFINED(CS2_SPACE_MIRROR_START) ? CS2_SPACE_MIRROR_START : 0; +CS2_SPACE_MIRROR_PRV_LENGTH = DEFINED(CS2_SPACE_MIRROR_LENGTH) ? CS2_SPACE_MIRROR_LENGTH : 0; +CS3_SPACE_MIRROR_PRV_START = DEFINED(CS3_SPACE_MIRROR_START) ? CS3_SPACE_MIRROR_START : 0; +CS3_SPACE_MIRROR_PRV_LENGTH = DEFINED(CS3_SPACE_MIRROR_LENGTH) ? CS3_SPACE_MIRROR_LENGTH : 0; +CS5_SPACE_MIRROR_PRV_START = DEFINED(CS5_SPACE_MIRROR_START) ? CS5_SPACE_MIRROR_START : 0; +CS5_SPACE_MIRROR_PRV_LENGTH = DEFINED(CS5_SPACE_MIRROR_LENGTH) ? CS5_SPACE_MIRROR_LENGTH : 0; +xSPI0_CS0_SPACE_PRV_START = DEFINED(xSPI0_CS0_SPACE_START) ? xSPI0_CS0_SPACE_START : 0; +xSPI0_CS0_SPACE_PRV_LENGTH = DEFINED(xSPI0_CS0_SPACE_LENGTH) ? xSPI0_CS0_SPACE_LENGTH : 0; +xSPI0_CS1_SPACE_PRV_START = DEFINED(xSPI0_CS1_SPACE_START) ? xSPI0_CS1_SPACE_START : 0; +xSPI0_CS1_SPACE_PRV_LENGTH = DEFINED(xSPI0_CS1_SPACE_LENGTH) ? xSPI0_CS1_SPACE_LENGTH : 0; +xSPI1_CS0_SPACE_PRV_START = DEFINED(xSPI1_CS0_SPACE_START) ? xSPI1_CS0_SPACE_START : 0; +xSPI1_CS0_SPACE_PRV_LENGTH = DEFINED(xSPI1_CS0_SPACE_LENGTH) ? xSPI1_CS0_SPACE_LENGTH : 0; +xSPI1_CS1_SPACE_PRV_START = DEFINED(xSPI1_CS1_SPACE_START) ? xSPI1_CS1_SPACE_START : 0; +xSPI1_CS1_SPACE_PRV_LENGTH = DEFINED(xSPI1_CS1_SPACE_LENGTH) ? xSPI1_CS1_SPACE_LENGTH : 0; +CS0_SPACE_PRV_START = DEFINED(CS0_SPACE_START) ? CS0_SPACE_START : 0; +CS0_SPACE_PRV_LENGTH = DEFINED(CS0_SPACE_LENGTH) ? CS0_SPACE_LENGTH : 0; +CS2_SPACE_PRV_START = DEFINED(CS2_SPACE_START) ? CS2_SPACE_START : 0; +CS2_SPACE_PRV_LENGTH = DEFINED(CS2_SPACE_LENGTH) ? CS2_SPACE_LENGTH : 0; +CS3_SPACE_PRV_START = DEFINED(CS3_SPACE_START) ? CS3_SPACE_START : 0; +CS3_SPACE_PRV_LENGTH = DEFINED(CS3_SPACE_LENGTH) ? CS3_SPACE_LENGTH : 0; +CS5_SPACE_PRV_START = DEFINED(CS5_SPACE_START) ? CS5_SPACE_START : 0; +CS5_SPACE_PRV_LENGTH = DEFINED(CS5_SPACE_LENGTH) ? CS5_SPACE_LENGTH : 0; + +LOADER_PARAM_ADDRESS = xSPI0_CS0_SPACE_PRV_START; +FLASH_CONTENTS_ADDRESS = LOADER_PARAM_ADDRESS + 0x0000004C; +LOADER_TEXT_ADDRESS = 0x00102000; +INTVEC_ADDRESS = 0x10000000; +TEXT_ADDRESS = 0x10020000; +NONCACHE_BUFFER_OFFSET = 0x00020000; +DMAC_LINK_MODE_OFFSET = 0x00044000; +DATA_NONCACHE_OFFSET = 0x00048000; +RAM_START = SYSTEM_RAM_PRV_START; +RAM_LENGTH = SYSTEM_RAM_PRV_LENGTH; +LOADER_START = BTCM_PRV_START; +LOADER_LENGTH = BTCM_PRV_LENGTH; + +/* Define starting addresses and length for data_noncache, DMAC link mode data, CPU-shared non-cache, and CPU-specific non-cache areas. */ +DATA_NONCACHE_START = DEFINED(SYSTEM_RAM_MIRROR_START) ? SYSTEM_RAM_MIRROR_START + SYSTEM_RAM_MIRROR_LENGTH - DATA_NONCACHE_OFFSET : 0; +DATA_NONCACHE_LENGTH = DEFINED(SYSTEM_RAM_MIRROR_LENGTH) ? 0x00004000 : 0; +DMAC_LINK_MODE_START = DEFINED(SYSTEM_RAM_MIRROR_START) ? SYSTEM_RAM_MIRROR_START + SYSTEM_RAM_MIRROR_LENGTH - DMAC_LINK_MODE_OFFSET : 0; +DMAC_LINK_MODE_LENGTH = DEFINED(SYSTEM_RAM_MIRROR_LENGTH) ? 0x00004000 : 0; +SHARED_NONCACHE_BUFFER_START = DEFINED(SYSTEM_RAM_MIRROR_START) ? SYSTEM_RAM_MIRROR_START + SYSTEM_RAM_MIRROR_LENGTH - 0x00040000 : 0; +SHARED_NONCACHE_BUFFER_LENGTH = DEFINED(SYSTEM_RAM_MIRROR_LENGTH) ? 0x00020000 : 0; +NONCACHE_BUFFER_START = DEFINED(SYSTEM_RAM_MIRROR_START) ? SYSTEM_RAM_MIRROR_START + SYSTEM_RAM_MIRROR_LENGTH - NONCACHE_BUFFER_OFFSET : 0; +NONCACHE_BUFFER_LENGTH = DEFINED(SYSTEM_RAM_MIRROR_LENGTH) ? 0x00020000 : 0; + +MEMORY +{ + ATCM : ORIGIN = ATCM_PRV_START, LENGTH = ATCM_PRV_LENGTH + BTCM : ORIGIN = BTCM_PRV_START, LENGTH = BTCM_PRV_LENGTH + SYSTEM_RAM : ORIGIN = SYSTEM_RAM_PRV_START, LENGTH = SYSTEM_RAM_PRV_LENGTH + SYSTEM_RAM_MIRROR : ORIGIN = SYSTEM_RAM_MIRROR_PRV_START, LENGTH = SYSTEM_RAM_MIRROR_PRV_LENGTH + xSPI0_CS0_SPACE_MIRROR : ORIGIN = xSPI0_CS0_SPACE_MIRROR_PRV_START, LENGTH = xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH + xSPI0_CS1_SPACE_MIRROR : ORIGIN = xSPI0_CS1_SPACE_MIRROR_PRV_START, LENGTH = xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH + xSPI1_CS0_SPACE_MIRROR : ORIGIN = xSPI1_CS0_SPACE_MIRROR_PRV_START, LENGTH = xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH + xSPI1_CS1_SPACE_MIRROR : ORIGIN = xSPI1_CS1_SPACE_MIRROR_PRV_START, LENGTH = xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH + CS0_SPACE_MIRROR : ORIGIN = CS0_SPACE_MIRROR_PRV_START, LENGTH = CS0_SPACE_MIRROR_PRV_LENGTH + CS2_SPACE_MIRROR : ORIGIN = CS2_SPACE_MIRROR_PRV_START, LENGTH = CS2_SPACE_MIRROR_PRV_LENGTH + CS3_SPACE_MIRROR : ORIGIN = CS3_SPACE_MIRROR_PRV_START, LENGTH = CS3_SPACE_MIRROR_PRV_LENGTH + CS5_SPACE_MIRROR : ORIGIN = CS5_SPACE_MIRROR_PRV_START, LENGTH = CS5_SPACE_MIRROR_PRV_LENGTH + xSPI0_CS0_SPACE : ORIGIN = xSPI0_CS0_SPACE_PRV_START, LENGTH = xSPI0_CS0_SPACE_PRV_LENGTH + xSPI0_CS1_SPACE : ORIGIN = xSPI0_CS1_SPACE_PRV_START, LENGTH = xSPI0_CS1_SPACE_PRV_LENGTH + xSPI1_CS0_SPACE : ORIGIN = xSPI1_CS0_SPACE_PRV_START, LENGTH = xSPI1_CS0_SPACE_PRV_LENGTH + xSPI1_CS1_SPACE : ORIGIN = xSPI1_CS1_SPACE_PRV_START, LENGTH = xSPI1_CS1_SPACE_PRV_LENGTH + CS0_SPACE : ORIGIN = CS0_SPACE_PRV_START, LENGTH = CS0_SPACE_PRV_LENGTH + CS2_SPACE : ORIGIN = CS2_SPACE_PRV_START, LENGTH = CS2_SPACE_PRV_LENGTH + CS3_SPACE : ORIGIN = CS3_SPACE_PRV_START, LENGTH = CS3_SPACE_PRV_LENGTH + CS5_SPACE : ORIGIN = CS5_SPACE_PRV_START, LENGTH = CS5_SPACE_PRV_LENGTH + RAM : ORIGIN = RAM_START, LENGTH = RAM_LENGTH + LOADER_STACK : ORIGIN = LOADER_START, LENGTH = LOADER_LENGTH + DUMMY : ORIGIN = RAM_START, LENGTH = RAM_LENGTH + DATA_NONCACHE : ORIGIN = DATA_NONCACHE_START, LENGTH = DATA_NONCACHE_LENGTH + DMAC_LINK_MODE : ORIGIN = DMAC_LINK_MODE_START, LENGTH = DMAC_LINK_MODE_LENGTH + SHARED_NONCACHE_BUFFER : ORIGIN = SHARED_NONCACHE_BUFFER_START, LENGTH = SHARED_NONCACHE_BUFFER_LENGTH + NONCACHE_BUFFER : ORIGIN = NONCACHE_BUFFER_START, LENGTH = NONCACHE_BUFFER_LENGTH +} + +SECTIONS +{ + .loader_param LOADER_PARAM_ADDRESS : AT (LOADER_PARAM_ADDRESS) + { + KEEP(*(.loader_param)) + } > xSPI0_CS0_SPACE + .flash_contents FLASH_CONTENTS_ADDRESS : AT (FLASH_CONTENTS_ADDRESS) + { + _mloader_text = .; + . = . + (_loader_text_end - _loader_text_start); + _mloader_data = .; + . = . + (_loader_data_end - _loader_data_start); + _mfvector = .; + . = . + (_fvector_end - _fvector_start); + _mtext = .; + . = . + (_text_end - _text_start); + _mdummy = .; + . = . + (_dummy_end - _dummy_start); + _mdata = .; + . = . + (_data_end - _data_start); + _mdata_noncache = .; + . = . + (_data_noncache_end - _data_noncache_start); + flash_contents_end = .; + } > xSPI0_CS0_SPACE + .loader_text LOADER_TEXT_ADDRESS : AT (_mloader_text) + { + _loader_text_start = .; + *(.loader_text) + */fsp/src/bsp/cmsis/Device/RENESAS/Source/*.o(.text*) + */fsp/src/bsp/mcu/all/*/bsp_irq_core.o(.text*) + */fsp/src/bsp/mcu/all/bsp_clocks.o(.text*) + */fsp/src/bsp/mcu/all/bsp_irq.o(.text*) + */fsp/src/bsp/mcu/all/bsp_register_protection.o(.text*) + */fsp/src/bsp/mcu/all/bsp_cache.o(.text*) + */fsp/src/r_ioport/r_ioport.o(.text*) + KEEP(*(.warm_start)) + . = . + (512 - ((. - _loader_text_start) % 512)); + _loader_text_end = .; + } > LOADER_STACK + .loader_data : AT (_mloader_data) + { + _loader_data_start = .; + __loader_data_start = .; + */fsp/src/bsp/cmsis/Device/RENESAS/Source/*.o(.data*) + */fsp/src/bsp/cmsis/Device/RENESAS/Source/*/system_core.o(.rodata*) + */fsp/src/bsp/mcu/all/*/bsp_irq_core.o(.data*) + */fsp/src/bsp/mcu/all/bsp_clocks.o(.data*) + */fsp/src/bsp/mcu/all/bsp_irq.o(.data*) + */fsp/src/bsp/mcu/all/bsp_register_protection.o(.data*) + */fsp/src/bsp/mcu/all/bsp_cache.o(.data*) + */fsp/src/r_ioport/r_ioport.o(.data*) + . = ALIGN(4); + __loader_data_end = .; + __loader_bss_start = .; + */fsp/src/bsp/cmsis/Device/RENESAS/Source/*.o(.bss*) + */fsp/src/bsp/mcu/all/*/bsp_irq_core.o(.bss*) + */fsp/src/bsp/mcu/all/bsp_clocks.o(.bss*) + */fsp/src/bsp/mcu/all/bsp_irq.o(.bss*) + */fsp/src/bsp/mcu/all/bsp_register_protection.o(.bss*) + */fsp/src/bsp/mcu/all/bsp_cache.o(.bss*) + */fsp/src/r_ioport/r_ioport.o(.bss*) + */fsp/src/bsp/cmsis/Device/RENESAS/Source/*.o(COMMON) + */fsp/src/bsp/mcu/all/*/bsp_irq_core.o(COMMON) + */fsp/src/bsp/mcu/all/bsp_clocks.o(COMMON) + */fsp/src/bsp/mcu/all/bsp_irq.o(COMMON) + */fsp/src/bsp/mcu/all/bsp_register_protection.o(.COMMON) + */fsp/src/bsp/mcu/all/bsp_cache.o(COMMON) + */fsp/src/r_ioport/r_ioport.o(.COMMON) + . = ALIGN(4); + __loader_bss_end = . ; + _loader_data_end = .; + } > LOADER_STACK + .intvec INTVEC_ADDRESS : AT (_mfvector) + { + _fvector_start = .; + KEEP(*(.intvec)) + _fvector_end = .; + } > RAM + .text TEXT_ADDRESS : AT (_mtext) + { + _text_start = .; + *(.text*) + + KEEP(*(.reset_handler)) + KEEP(*(.init)) + KEEP(*(.fini)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + _ctor_end = .; + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + _dtor_end = .; + + /* section information for utest */ + . = ALIGN(4); + __rt_utest_tc_tab_start = .; + KEEP(*(UtestTcTab)) + __rt_utest_tc_tab_end = .; + + /* section information for finsh shell */ + . = ALIGN(4); + __fsymtab_start = .; + KEEP(*(FSymTab)) + __fsymtab_end = .; + + . = ALIGN(4); + __vsymtab_start = .; + KEEP(*(VSymTab)) + __vsymtab_end = .; + + /* section information for initial. */ + . = ALIGN(4); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + + /* new GCC version uses .init_array */ + PROVIDE(__ctors_start__ = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + PROVIDE(__ctors_end__ = .); + + . = ALIGN(4); + KEEP(*(FalPartTable)) + + KEEP(*(.eh_frame*)) + } > RAM + .rvectors : + { + _rvectors_start = .; + KEEP(*(.rvectors)) + _rvectors_end = .; + } > RAM + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > RAM + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > RAM + __exidx_end = .; + .got : + { + *(.got) + *(.got.plt) + . = ALIGN(4); + _text_end = .; + } > RAM + .dummy _fvector_end : AT (_mdummy) + { + _dummy_start = .; + KEEP(*(.dummy)); + _dummy_end = .; + } > DUMMY + .data : AT (_mdata) + { + _data_start = .; + + *(vtable) + *(.data.*) + *(.data) + + *(.rodata*) + _erodata = .; + + . = 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 + .bss : + { + . = ALIGN(4); + __bss_start__ = .; + _bss = .; + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + _ebss = .; + _end = .; + } > RAM + .heap (NOLOAD) : + { + . = ALIGN(8); + __HeapBase = .; + /* Place the STD heap here. */ + KEEP(*(.heap)) + __HeapLimit = .; + } > RAM + .thread_stack (NOLOAD): + { + . = ALIGN(8); + __ThreadStackBase = .; + /* Place the Thread stacks here. */ + KEEP(*(.stack*)) + __ThreadStackLimit = .; + } > RAM + .sys_stack (NOLOAD) : + { + . = ALIGN(8); + __SysStackBase = .; + /* Place the sys_stack here. */ + KEEP(*(.sys_stack)) + __SysStackLimit = .; + } > LOADER_STACK + .svc_stack (NOLOAD) : + { + . = ALIGN(8); + __SvcStackBase = .; + /* Place the svc_stack here. */ + KEEP(*(.svc_stack)) + __SvcStackLimit = .; + } > LOADER_STACK + .irq_stack (NOLOAD) : + { + . = ALIGN(8); + __IrqStackBase = .; + /* Place the irq_stack here. */ + KEEP(*(.irq_stack)) + __IrqStackLimit = .; + } > LOADER_STACK + .fiq_stack (NOLOAD) : + { + . = ALIGN(8); + __FiqStackBase = .; + /* Place the fiq_stack here. */ + KEEP(*(.fiq_stack)) + __FiqStackLimit = .; + } > LOADER_STACK + .und_stack (NOLOAD) : + { + . = ALIGN(8); + __UndStackBase = .; + /* Place the und_stack here. */ + KEEP(*(.und_stack)) + __UndStackLimit = .; + } > LOADER_STACK + .abt_stack (NOLOAD) : + { + . = ALIGN(8); + __AbtStackBase = .; + /* Place the abt_stack here. */ + KEEP(*(.abt_stack)) + __AbtStackLimit = .; + } > LOADER_STACK + .data_noncache DATA_NONCACHE_START : AT (_mdata_noncache) + { + . = ALIGN(4); + _data_noncache_start = .; + KEEP(*(.data_noncache*)) + _data_noncache_end = .; + } > DATA_NONCACHE + .dmac_link_mode DMAC_LINK_MODE_START : AT (DMAC_LINK_MODE_START) + { + . = ALIGN(4); + _DmacLinkMode_start = .; + KEEP(*(.dmac_link_mode*)) + _DmacLinkMode_end = .; + } > DMAC_LINK_MODE + .shared_noncache_buffer SHARED_NONCACHE_BUFFER_START (NOLOAD) : AT (SHARED_NONCACHE_BUFFER_START) + { + . = ALIGN(32); + _sncbuffer_start = .; + KEEP(*(.shared_noncache_buffer*)) + _sncbuffer_end = .; + } > SHARED_NONCACHE_BUFFER + .noncache_buffer NONCACHE_BUFFER_START (NOLOAD) : AT (NONCACHE_BUFFER_START) + { + . = ALIGN(32); + _ncbuffer_start = .; + KEEP(*(.noncache_buffer*)) + _ncbuffer_end = .; + } > NONCACHE_BUFFER +} diff --git a/bsp/renesas/rzn2l_etherkit/script/fsp_xspi0_boot_scons.ld b/bsp/renesas/rzn2l_etherkit/script/fsp_xspi0_boot_scons.ld new file mode 100644 index 00000000000..f3f7110f006 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/script/fsp_xspi0_boot_scons.ld @@ -0,0 +1,456 @@ +/* + Linker File for Renesas RZ/N2L FSP +*/ +/* The memory information for each device is done in memory regions file. + * The starting address and length of memory not defined in memory regions file are defined as 0. */ + +/* generated memory regions file - do not edit */ +ATCM_START = 0x00000000; +ATCM_LENGTH = 0x20000; +BTCM_START = 0x00100000; +BTCM_LENGTH = 0x20000; +SYSTEM_RAM_START = 0x10000000; +SYSTEM_RAM_LENGTH = 0x180000; +SYSTEM_RAM_MIRROR_START = 0x30000000; +SYSTEM_RAM_MIRROR_LENGTH = 0x180000; +xSPI0_CS0_SPACE_MIRROR_START = 0x40000000; +xSPI0_CS0_SPACE_MIRROR_LENGTH = 0x4000000; +xSPI0_CS1_SPACE_MIRROR_START = 0x44000000; +xSPI0_CS1_SPACE_MIRROR_LENGTH = 0x4000000; +xSPI1_CS0_SPACE_MIRROR_START = 0x48000000; +xSPI1_CS0_SPACE_MIRROR_LENGTH = 0x4000000; +CS0_SPACE_MIRROR_START = 0x50000000; +CS0_SPACE_MIRROR_LENGTH = 0x4000000; +CS2_SPACE_MIRROR_START = 0x54000000; +CS2_SPACE_MIRROR_LENGTH = 0x4000000; +CS3_SPACE_MIRROR_START = 0x58000000; +CS3_SPACE_MIRROR_LENGTH = 0x4000000; +CS5_SPACE_MIRROR_START = 0x5C000000; +CS5_SPACE_MIRROR_LENGTH = 0x4000000; +xSPI0_CS0_SPACE_START = 0x60000000; +xSPI0_CS0_SPACE_LENGTH = 0x4000000; +xSPI0_CS1_SPACE_START = 0x64000000; +xSPI0_CS1_SPACE_LENGTH = 0x4000000; +xSPI1_CS0_SPACE_START = 0x68000000; +xSPI1_CS0_SPACE_LENGTH = 0x4000000; +CS0_SPACE_START = 0x70000000; +CS0_SPACE_LENGTH = 0x4000000; +CS2_SPACE_START = 0x74000000; +CS2_SPACE_LENGTH = 0x4000000; +CS3_SPACE_START = 0x78000000; +CS3_SPACE_LENGTH = 0x4000000; +CS5_SPACE_START = 0x7C000000; +CS5_SPACE_LENGTH = 0x4000000; + +ATCM_PRV_START = DEFINED(ATCM_START) ? ATCM_START : 0; +ATCM_PRV_LENGTH = DEFINED(ATCM_LENGTH) ? ATCM_LENGTH : 0; +BTCM_PRV_START = DEFINED(BTCM_START) ? BTCM_START : 0; +BTCM_PRV_LENGTH = DEFINED(BTCM_LENGTH) ? BTCM_LENGTH : 0; +SYSTEM_RAM_PRV_START = DEFINED(SYSTEM_RAM_START) ? SYSTEM_RAM_START : 0; +SYSTEM_RAM_PRV_LENGTH = DEFINED(SYSTEM_RAM_LENGTH) ? SYSTEM_RAM_LENGTH : 0; +SYSTEM_RAM_MIRROR_PRV_START = DEFINED(SYSTEM_RAM_MIRROR_START) ? SYSTEM_RAM_MIRROR_START : 0; +SYSTEM_RAM_MIRROR_PRV_LENGTH = DEFINED(SYSTEM_RAM_MIRROR_LENGTH) ? SYSTEM_RAM_MIRROR_LENGTH : 0; +xSPI0_CS0_SPACE_MIRROR_PRV_START = DEFINED(xSPI0_CS0_SPACE_MIRROR_START) ? xSPI0_CS0_SPACE_MIRROR_START : 0; +xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH = DEFINED(xSPI0_CS0_SPACE_MIRROR_LENGTH) ? xSPI0_CS0_SPACE_MIRROR_LENGTH : 0; +xSPI0_CS1_SPACE_MIRROR_PRV_START = DEFINED(xSPI0_CS1_SPACE_MIRROR_START) ? xSPI0_CS1_SPACE_MIRROR_START : 0; +xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH = DEFINED(xSPI0_CS1_SPACE_MIRROR_LENGTH) ? xSPI0_CS1_SPACE_MIRROR_LENGTH : 0; +xSPI1_CS0_SPACE_MIRROR_PRV_START = DEFINED(xSPI1_CS0_SPACE_MIRROR_START) ? xSPI1_CS0_SPACE_MIRROR_START : 0; +xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH = DEFINED(xSPI1_CS0_SPACE_MIRROR_LENGTH) ? xSPI1_CS0_SPACE_MIRROR_LENGTH : 0; +xSPI1_CS1_SPACE_MIRROR_PRV_START = DEFINED(xSPI1_CS1_SPACE_MIRROR_START) ? xSPI1_CS1_SPACE_MIRROR_START : 0; +xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH = DEFINED(xSPI1_CS1_SPACE_MIRROR_LENGTH) ? xSPI1_CS1_SPACE_MIRROR_LENGTH : 0; +CS0_SPACE_MIRROR_PRV_START = DEFINED(CS0_SPACE_MIRROR_START) ? CS0_SPACE_MIRROR_START : 0; +CS0_SPACE_MIRROR_PRV_LENGTH = DEFINED(CS0_SPACE_MIRROR_LENGTH) ? CS0_SPACE_MIRROR_LENGTH : 0; +CS2_SPACE_MIRROR_PRV_START = DEFINED(CS2_SPACE_MIRROR_START) ? CS2_SPACE_MIRROR_START : 0; +CS2_SPACE_MIRROR_PRV_LENGTH = DEFINED(CS2_SPACE_MIRROR_LENGTH) ? CS2_SPACE_MIRROR_LENGTH : 0; +CS3_SPACE_MIRROR_PRV_START = DEFINED(CS3_SPACE_MIRROR_START) ? CS3_SPACE_MIRROR_START : 0; +CS3_SPACE_MIRROR_PRV_LENGTH = DEFINED(CS3_SPACE_MIRROR_LENGTH) ? CS3_SPACE_MIRROR_LENGTH : 0; +CS5_SPACE_MIRROR_PRV_START = DEFINED(CS5_SPACE_MIRROR_START) ? CS5_SPACE_MIRROR_START : 0; +CS5_SPACE_MIRROR_PRV_LENGTH = DEFINED(CS5_SPACE_MIRROR_LENGTH) ? CS5_SPACE_MIRROR_LENGTH : 0; +xSPI0_CS0_SPACE_PRV_START = DEFINED(xSPI0_CS0_SPACE_START) ? xSPI0_CS0_SPACE_START : 0; +xSPI0_CS0_SPACE_PRV_LENGTH = DEFINED(xSPI0_CS0_SPACE_LENGTH) ? xSPI0_CS0_SPACE_LENGTH : 0; +xSPI0_CS1_SPACE_PRV_START = DEFINED(xSPI0_CS1_SPACE_START) ? xSPI0_CS1_SPACE_START : 0; +xSPI0_CS1_SPACE_PRV_LENGTH = DEFINED(xSPI0_CS1_SPACE_LENGTH) ? xSPI0_CS1_SPACE_LENGTH : 0; +xSPI1_CS0_SPACE_PRV_START = DEFINED(xSPI1_CS0_SPACE_START) ? xSPI1_CS0_SPACE_START : 0; +xSPI1_CS0_SPACE_PRV_LENGTH = DEFINED(xSPI1_CS0_SPACE_LENGTH) ? xSPI1_CS0_SPACE_LENGTH : 0; +xSPI1_CS1_SPACE_PRV_START = DEFINED(xSPI1_CS1_SPACE_START) ? xSPI1_CS1_SPACE_START : 0; +xSPI1_CS1_SPACE_PRV_LENGTH = DEFINED(xSPI1_CS1_SPACE_LENGTH) ? xSPI1_CS1_SPACE_LENGTH : 0; +CS0_SPACE_PRV_START = DEFINED(CS0_SPACE_START) ? CS0_SPACE_START : 0; +CS0_SPACE_PRV_LENGTH = DEFINED(CS0_SPACE_LENGTH) ? CS0_SPACE_LENGTH : 0; +CS2_SPACE_PRV_START = DEFINED(CS2_SPACE_START) ? CS2_SPACE_START : 0; +CS2_SPACE_PRV_LENGTH = DEFINED(CS2_SPACE_LENGTH) ? CS2_SPACE_LENGTH : 0; +CS3_SPACE_PRV_START = DEFINED(CS3_SPACE_START) ? CS3_SPACE_START : 0; +CS3_SPACE_PRV_LENGTH = DEFINED(CS3_SPACE_LENGTH) ? CS3_SPACE_LENGTH : 0; +CS5_SPACE_PRV_START = DEFINED(CS5_SPACE_START) ? CS5_SPACE_START : 0; +CS5_SPACE_PRV_LENGTH = DEFINED(CS5_SPACE_LENGTH) ? CS5_SPACE_LENGTH : 0; + +LOADER_PARAM_ADDRESS = xSPI0_CS0_SPACE_PRV_START; +FLASH_CONTENTS_ADDRESS = LOADER_PARAM_ADDRESS + 0x0000004C; +LOADER_TEXT_ADDRESS = 0x00102000; +INTVEC_ADDRESS = 0x10000000; +TEXT_ADDRESS = 0x10020000; +NONCACHE_BUFFER_OFFSET = 0x00020000; +DMAC_LINK_MODE_OFFSET = 0x00044000; +DATA_NONCACHE_OFFSET = 0x00048000; +RAM_START = SYSTEM_RAM_PRV_START; +RAM_LENGTH = SYSTEM_RAM_PRV_LENGTH; +LOADER_START = BTCM_PRV_START; +LOADER_LENGTH = BTCM_PRV_LENGTH; + +/* Define starting addresses and length for data_noncache, DMAC link mode data, CPU-shared non-cache, and CPU-specific non-cache areas. */ +DATA_NONCACHE_START = DEFINED(SYSTEM_RAM_MIRROR_START) ? SYSTEM_RAM_MIRROR_START + SYSTEM_RAM_MIRROR_LENGTH - DATA_NONCACHE_OFFSET : 0; +DATA_NONCACHE_LENGTH = DEFINED(SYSTEM_RAM_MIRROR_LENGTH) ? 0x00004000 : 0; +DMAC_LINK_MODE_START = DEFINED(SYSTEM_RAM_MIRROR_START) ? SYSTEM_RAM_MIRROR_START + SYSTEM_RAM_MIRROR_LENGTH - DMAC_LINK_MODE_OFFSET : 0; +DMAC_LINK_MODE_LENGTH = DEFINED(SYSTEM_RAM_MIRROR_LENGTH) ? 0x00004000 : 0; +SHARED_NONCACHE_BUFFER_START = DEFINED(SYSTEM_RAM_MIRROR_START) ? SYSTEM_RAM_MIRROR_START + SYSTEM_RAM_MIRROR_LENGTH - 0x00040000 : 0; +SHARED_NONCACHE_BUFFER_LENGTH = DEFINED(SYSTEM_RAM_MIRROR_LENGTH) ? 0x00020000 : 0; +NONCACHE_BUFFER_START = DEFINED(SYSTEM_RAM_MIRROR_START) ? SYSTEM_RAM_MIRROR_START + SYSTEM_RAM_MIRROR_LENGTH - NONCACHE_BUFFER_OFFSET : 0; +NONCACHE_BUFFER_LENGTH = DEFINED(SYSTEM_RAM_MIRROR_LENGTH) ? 0x00020000 : 0; + +MEMORY +{ + ATCM : ORIGIN = ATCM_PRV_START, LENGTH = ATCM_PRV_LENGTH + BTCM : ORIGIN = BTCM_PRV_START, LENGTH = BTCM_PRV_LENGTH + SYSTEM_RAM : ORIGIN = SYSTEM_RAM_PRV_START, LENGTH = SYSTEM_RAM_PRV_LENGTH + SYSTEM_RAM_MIRROR : ORIGIN = SYSTEM_RAM_MIRROR_PRV_START, LENGTH = SYSTEM_RAM_MIRROR_PRV_LENGTH + xSPI0_CS0_SPACE_MIRROR : ORIGIN = xSPI0_CS0_SPACE_MIRROR_PRV_START, LENGTH = xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH + xSPI0_CS1_SPACE_MIRROR : ORIGIN = xSPI0_CS1_SPACE_MIRROR_PRV_START, LENGTH = xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH + xSPI1_CS0_SPACE_MIRROR : ORIGIN = xSPI1_CS0_SPACE_MIRROR_PRV_START, LENGTH = xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH + xSPI1_CS1_SPACE_MIRROR : ORIGIN = xSPI1_CS1_SPACE_MIRROR_PRV_START, LENGTH = xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH + CS0_SPACE_MIRROR : ORIGIN = CS0_SPACE_MIRROR_PRV_START, LENGTH = CS0_SPACE_MIRROR_PRV_LENGTH + CS2_SPACE_MIRROR : ORIGIN = CS2_SPACE_MIRROR_PRV_START, LENGTH = CS2_SPACE_MIRROR_PRV_LENGTH + CS3_SPACE_MIRROR : ORIGIN = CS3_SPACE_MIRROR_PRV_START, LENGTH = CS3_SPACE_MIRROR_PRV_LENGTH + CS5_SPACE_MIRROR : ORIGIN = CS5_SPACE_MIRROR_PRV_START, LENGTH = CS5_SPACE_MIRROR_PRV_LENGTH + xSPI0_CS0_SPACE : ORIGIN = xSPI0_CS0_SPACE_PRV_START, LENGTH = xSPI0_CS0_SPACE_PRV_LENGTH + xSPI0_CS1_SPACE : ORIGIN = xSPI0_CS1_SPACE_PRV_START, LENGTH = xSPI0_CS1_SPACE_PRV_LENGTH + xSPI1_CS0_SPACE : ORIGIN = xSPI1_CS0_SPACE_PRV_START, LENGTH = xSPI1_CS0_SPACE_PRV_LENGTH + xSPI1_CS1_SPACE : ORIGIN = xSPI1_CS1_SPACE_PRV_START, LENGTH = xSPI1_CS1_SPACE_PRV_LENGTH + CS0_SPACE : ORIGIN = CS0_SPACE_PRV_START, LENGTH = CS0_SPACE_PRV_LENGTH + CS2_SPACE : ORIGIN = CS2_SPACE_PRV_START, LENGTH = CS2_SPACE_PRV_LENGTH + CS3_SPACE : ORIGIN = CS3_SPACE_PRV_START, LENGTH = CS3_SPACE_PRV_LENGTH + CS5_SPACE : ORIGIN = CS5_SPACE_PRV_START, LENGTH = CS5_SPACE_PRV_LENGTH + RAM : ORIGIN = RAM_START, LENGTH = RAM_LENGTH + LOADER_STACK : ORIGIN = LOADER_START, LENGTH = LOADER_LENGTH + DUMMY : ORIGIN = RAM_START, LENGTH = RAM_LENGTH + DATA_NONCACHE : ORIGIN = DATA_NONCACHE_START, LENGTH = DATA_NONCACHE_LENGTH + DMAC_LINK_MODE : ORIGIN = DMAC_LINK_MODE_START, LENGTH = DMAC_LINK_MODE_LENGTH + SHARED_NONCACHE_BUFFER : ORIGIN = SHARED_NONCACHE_BUFFER_START, LENGTH = SHARED_NONCACHE_BUFFER_LENGTH + NONCACHE_BUFFER : ORIGIN = NONCACHE_BUFFER_START, LENGTH = NONCACHE_BUFFER_LENGTH +} + +SECTIONS +{ + .loader_param LOADER_PARAM_ADDRESS : AT (LOADER_PARAM_ADDRESS) + { + KEEP(*(.loader_param)) + } > xSPI0_CS0_SPACE + .flash_contents FLASH_CONTENTS_ADDRESS : AT (FLASH_CONTENTS_ADDRESS) + { + _mloader_text = .; + . = . + (_loader_text_end - _loader_text_start); + _mloader_data = .; + . = . + (_loader_data_end - _loader_data_start); + _mfvector = .; + . = . + (_fvector_end - _fvector_start); + _mtext = .; + . = . + (_text_end - _text_start); + _mdummy = .; + . = . + (_dummy_end - _dummy_start); + _mdata = .; + . = . + (_data_end - _data_start); + _mdata_noncache = .; + . = . + (_data_noncache_end - _data_noncache_start); + flash_contents_end = .; + } > xSPI0_CS0_SPACE + .loader_text LOADER_TEXT_ADDRESS : AT (_mloader_text) + { + _loader_text_start = .; + *(.loader_text) + build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/startup_core.o(.text*) + build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/system_core.o(.text*) + build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.o(.text*) + build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.o(.text*) + build/rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.o(.text*) + build/rzn/fsp/src/bsp/mcu/all/bsp_clocks.o(.text*) + build/rzn/fsp/src/bsp/mcu/all/bsp_irq.o(.text*) + build/rzn/fsp/src/bsp/mcu/all/bsp_register_protection.o(.text*) + build/rzn/fsp/src/bsp/mcu/all/bsp_cache.o(.text*) + build/rzn/fsp/src/r_ioport/r_ioport.o(.text*) + KEEP(*(.warm_start)) + . = . + (512 - ((. - _loader_text_start) % 512)); + _loader_text_end = .; + } > LOADER_STACK + .loader_data : AT (_mloader_data) + { + _loader_data_start = .; + __loader_data_start = .; + build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/startup_core.o(.data*) + build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/system_core.o(.rodata*) + build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.o(.data*) + build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.o(.data*) + build/rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.o(.data*) + build/rzn/fsp/src/bsp/mcu/all/bsp_clocks.o(.data*) + build/rzn/fsp/src/bsp/mcu/all/bsp_irq.o(.data*) + build/rzn/fsp/src/bsp/mcu/all/bsp_register_protection.o(.data*) + build/rzn/fsp/src/bsp/mcu/all/bsp_cache.o(.data*) + build/rzn/fsp/src/r_ioport/r_ioport.o(.data*) + . = ALIGN(4); + __loader_data_end = .; + __loader_bss_start = .; + build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/startup_core.o(.bss*) + build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/system_core.o(.bss*) + build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.o(.bss*) + build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.o(.bss*) + build/rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.o(.bss*) + build/rzn/fsp/src/bsp/mcu/all/bsp_clocks.o(.bss*) + build/rzn/fsp/src/bsp/mcu/all/bsp_irq.o(.bss*) + build/rzn/fsp/src/bsp/mcu/all/bsp_register_protection.o(.bss*) + build/rzn/fsp/src/bsp/mcu/all/bsp_cache.o(.bss*) + build/rzn/fsp/src/r_ioport/r_ioport.o(.bss*) + build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/*.o(COMMON) + build/rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.o(COMMON) + build/rzn/fsp/src/bsp/mcu/all/bsp_clocks.o(COMMON) + build/rzn/fsp/src/bsp/mcu/all/bsp_irq.o(COMMON) + build/rzn/fsp/src/bsp/mcu/all/bsp_register_protection.o(.COMMON) + build/rzn/fsp/src/bsp/mcu/all/bsp_cache.o(COMMON) + build/rzn/fsp/src/r_ioport/r_ioport.o(.COMMON) + . = ALIGN(4); + __loader_bss_end = . ; + _loader_data_end = .; + } > LOADER_STACK + .intvec INTVEC_ADDRESS : AT (_mfvector) + { + _fvector_start = .; + KEEP(*(.intvec)) + _fvector_end = .; + } > RAM + .text TEXT_ADDRESS : AT (_mtext) + { + _text_start = .; + *(.text*) + + KEEP(*(.reset_handler)) + KEEP(*(.init)) + KEEP(*(.fini)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + _ctor_end = .; + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + _dtor_end = .; + + /* section information for utest */ + . = ALIGN(4); + __rt_utest_tc_tab_start = .; + KEEP(*(UtestTcTab)) + __rt_utest_tc_tab_end = .; + + /* section information for finsh shell */ + . = ALIGN(4); + __fsymtab_start = .; + KEEP(*(FSymTab)) + __fsymtab_end = .; + + . = ALIGN(4); + __vsymtab_start = .; + KEEP(*(VSymTab)) + __vsymtab_end = .; + + /* section information for initial. */ + . = ALIGN(4); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + + /* new GCC version uses .init_array */ + PROVIDE(__ctors_start__ = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + PROVIDE(__ctors_end__ = .); + + . = ALIGN(4); + KEEP(*(FalPartTable)) + + KEEP(*(.eh_frame*)) + } > RAM + .rvectors : + { + _rvectors_start = .; + KEEP(*(.rvectors)) + _rvectors_end = .; + } > RAM + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > RAM + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > RAM + __exidx_end = .; + .got : + { + *(.got) + *(.got.plt) + . = ALIGN(4); + _text_end = .; + } > RAM + .dummy _fvector_end : AT (_mdummy) + { + _dummy_start = .; + KEEP(*(.dummy)); + _dummy_end = .; + } > DUMMY + .data : AT (_mdata) + { + _data_start = .; + + *(vtable) + *(.data.*) + *(.data) + + *(.rodata*) + _erodata = .; + + . = 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 + .bss : + { + . = ALIGN(4); + __bss_start__ = .; + _bss = .; + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + _ebss = .; + _end = .; + } > RAM + .heap (NOLOAD) : + { + . = ALIGN(8); + __HeapBase = .; + /* Place the STD heap here. */ + KEEP(*(.heap)) + __HeapLimit = .; + } > RAM + .thread_stack (NOLOAD): + { + . = ALIGN(8); + __ThreadStackBase = .; + /* Place the Thread stacks here. */ + KEEP(*(.stack*)) + __ThreadStackLimit = .; + } > RAM + .sys_stack (NOLOAD) : + { + . = ALIGN(8); + __SysStackBase = .; + /* Place the sys_stack here. */ + KEEP(*(.sys_stack)) + __SysStackLimit = .; + } > LOADER_STACK + .svc_stack (NOLOAD) : + { + . = ALIGN(8); + __SvcStackBase = .; + /* Place the svc_stack here. */ + KEEP(*(.svc_stack)) + __SvcStackLimit = .; + } > LOADER_STACK + .irq_stack (NOLOAD) : + { + . = ALIGN(8); + __IrqStackBase = .; + /* Place the irq_stack here. */ + KEEP(*(.irq_stack)) + __IrqStackLimit = .; + } > LOADER_STACK + .fiq_stack (NOLOAD) : + { + . = ALIGN(8); + __FiqStackBase = .; + /* Place the fiq_stack here. */ + KEEP(*(.fiq_stack)) + __FiqStackLimit = .; + } > LOADER_STACK + .und_stack (NOLOAD) : + { + . = ALIGN(8); + __UndStackBase = .; + /* Place the und_stack here. */ + KEEP(*(.und_stack)) + __UndStackLimit = .; + } > LOADER_STACK + .abt_stack (NOLOAD) : + { + . = ALIGN(8); + __AbtStackBase = .; + /* Place the abt_stack here. */ + KEEP(*(.abt_stack)) + __AbtStackLimit = .; + } > LOADER_STACK + .data_noncache DATA_NONCACHE_START : AT (_mdata_noncache) + { + . = ALIGN(4); + _data_noncache_start = .; + KEEP(*(.data_noncache*)) + _data_noncache_end = .; + } > DATA_NONCACHE + .dmac_link_mode DMAC_LINK_MODE_START : AT (DMAC_LINK_MODE_START) + { + . = ALIGN(4); + _DmacLinkMode_start = .; + KEEP(*(.dmac_link_mode*)) + _DmacLinkMode_end = .; + } > DMAC_LINK_MODE + .shared_noncache_buffer SHARED_NONCACHE_BUFFER_START (NOLOAD) : AT (SHARED_NONCACHE_BUFFER_START) + { + . = ALIGN(32); + _sncbuffer_start = .; + KEEP(*(.shared_noncache_buffer*)) + _sncbuffer_end = .; + } > SHARED_NONCACHE_BUFFER + .noncache_buffer NONCACHE_BUFFER_START (NOLOAD) : AT (NONCACHE_BUFFER_START) + { + . = ALIGN(32); + _ncbuffer_start = .; + KEEP(*(.noncache_buffer*)) + _ncbuffer_end = .; + } > NONCACHE_BUFFER +} diff --git a/bsp/renesas/rzn2l_etherkit/src/hal_entry.c b/bsp/renesas/rzn2l_etherkit/src/hal_entry.c new file mode 100644 index 00000000000..7c6bd5e7ab8 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/src/hal_entry.c @@ -0,0 +1,35 @@ +/* +* Copyright (c) 2006-2025, RT-Thread Development Team +* +* SPDX-License-Identifier: Apache-2.0 +* +* Change Logs: +* Date Author Notes +* 2024-03-11 Wangyuqiang first version +*/ + +#include +#include +#include +#include "hal_data.h" + +#define LED_PIN_0 BSP_IO_PORT_14_PIN_3 /* Onboard LED pins */ +#define LED_PIN_1 BSP_IO_PORT_14_PIN_0 /* Onboard LED pins */ +#define LED_PIN_2 BSP_IO_PORT_14_PIN_1 /* Onboard LED pins */ + +void hal_entry(void) +{ + rt_kprintf("\nHello RT-Thread!\n"); + + while (1) + { + rt_pin_write(LED_PIN_0, PIN_HIGH); + rt_pin_write(LED_PIN_1, PIN_HIGH); + rt_pin_write(LED_PIN_2, PIN_HIGH); + rt_thread_mdelay(1000); + rt_pin_write(LED_PIN_0, PIN_LOW); + rt_pin_write(LED_PIN_1, PIN_LOW); + rt_pin_write(LED_PIN_2, PIN_LOW); + rt_thread_mdelay(1000); + } +} \ No newline at end of file diff --git a/bsp/renesas/rzn2l_etherkit/template.ewd b/bsp/renesas/rzn2l_etherkit/template.ewd new file mode 100644 index 00000000000..f1b21119308 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/template.ewd @@ -0,0 +1,3276 @@ + + + 4 + + Debug + + ARM + + 1 + + C-SPY + 2 + + 33 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + E2_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + GPLINK_ID + 2 + + 0 + 1 + 1 + + + + + + + IJET_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 1 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\Azure\AzureArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9a.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + + Release + + ARM + + 0 + + C-SPY + 2 + + 33 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 0 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 0 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + E2_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 0 + + + + + + + + + + + GPLINK_ID + 2 + + 0 + 1 + 0 + + + + + + + IJET_ID + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 3 + 1 + 0 + + + + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 0 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 0 + + + + + + + + STLINK_ID + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 0 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\Azure\AzureArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm9a.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/bsp/renesas/rzn2l_etherkit/template.ewp b/bsp/renesas/rzn2l_etherkit/template.ewp new file mode 100644 index 00000000000..839155dd146 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/template.ewp @@ -0,0 +1,2616 @@ + + + 4 + + Debug + + ARM + + 1 + + General + 3 + + 36 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 38 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 12 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 1 + inputOutputBased + + + + ILINK + 0 + + 27 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BUILDACTION + 2 + + + + + Release + + ARM + + 0 + + General + 3 + + 36 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 38 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 12 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + inputOutputBased + + + + ILINK + 0 + + 27 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BUILDACTION + 2 + + + + cmd /c ""$RASC_EXE_PATH$" -nosplash --launcher.suppressErrors --generate --compiler IAR --devicefamily rzn "$PROJ_DIR$\configuration.xml" 2> "%TEMP%\rasc_stderr.out"" + $PROJ_DIR$ + preCompile + + + $BUILD_FILES_DIR$/.prebuild + + + + + cmd /c ""$RASC_EXE_PATH$" -nosplash --launcher.suppressErrors --gensmartbundle --compiler IAR --devicefamily rzn "$PROJ_DIR$\configuration.xml" "$TARGET_PATH$" 2> "%TEMP%\rasc_stderr.out"" && echo > "$BUILD_FILES_DIR$/.postbuild" + $PROJ_DIR$ + postLink + + + $BUILD_FILES_DIR$/.postbuild + + + + + + + + + Flex Software + + Build Configuration + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\board_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_mcu_device_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_mcu_device_memory_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_mcu_device_pn_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_mcu_family_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_memory_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\bsp\bsp_pin_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\r_cmt_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\r_ether_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\r_ether_phy_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\r_ether_selector_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\r_ether_switch_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\r_ioport_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\r_sci_uart_cfg.h + + + $PROJ_DIR$\rzn_cfg\fsp_cfg\rm_ethercat_ssc_port_cfg.h + + + + Components + + $PROJ_DIR$\rzn\board\rzn2l_rsk\board.h + + + $PROJ_DIR$\rzn\board\rzn2l_rsk\board_ethernet_phy.h + + + $PROJ_DIR$\rzn\board\rzn2l_rsk\board_init.c + + + $PROJ_DIR$\rzn\board\rzn2l_rsk\board_init.h + + + $PROJ_DIR$\rzn\board\rzn2l_rsk\board_leds.c + + + $PROJ_DIR$\rzn\board\rzn2l_rsk\board_leds.h + + + $PROJ_DIR$\rzn\fsp\inc\api\bsp_api.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_cache.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_cache.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\cr\bsp_cache_core.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\cr\bsp_cache_core.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_clocks.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_clocks.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_common.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_common.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_compiler_support.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_delay.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_delay.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\cr\bsp_delay_core.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\cr\bsp_delay_core.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\rzn2l\bsp_elc.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_exceptions.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\rzn2l\bsp_feature.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_io.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_io.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_irq.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_irq.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\cr\bsp_irq_core.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\cr\bsp_irq_core.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\rzn2l\bsp_irq_sense.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\rzn2l\bsp_loader_param.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_mcu_api.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\rzn2l\bsp_mcu_info.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_module_stop.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\rzn2l\bsp_override.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_register_protection.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_register_protection.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_reset.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_reset.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_sbrk.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\mcu\all\bsp_tfu.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\CMSIS\Core_R\Include\cmsis_compiler.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\CMSIS\Core_R\Include\cmsis_cp15.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\CMSIS\Core_R\Include\cmsis_gcc.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\CMSIS\Core_R\Include\cmsis_iccarm.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\CMSIS\Core_R\Include\cmsis_version.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\CMSIS\Core_R\Include\core_cr52.h + + + $PROJ_DIR$\rzn\fsp\inc\fsp_common_api.h + + + $PROJ_DIR$\rzn\fsp\inc\fsp_features.h + + + $PROJ_DIR$\rzn\fsp\inc\fsp_version.h + + + $PROJ_DIR$\rzn\arm\CMSIS_5\LICENSE.txt + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Include\R9A07G084.h + + + $PROJ_DIR$\rzn\fsp\src\r_cmt\r_cmt.c + + + $PROJ_DIR$\rzn\fsp\inc\instances\r_cmt.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_ether_api.h + + + $PROJ_DIR$\rzn\fsp\src\r_ether_phy\r_ether_phy.c + + + $PROJ_DIR$\rzn\fsp\inc\instances\r_ether_phy.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_ether_phy_api.h + + + $PROJ_DIR$\rzn\fsp\src\r_ether_selector\r_ether_selector.c + + + $PROJ_DIR$\rzn\fsp\inc\instances\r_ether_selector.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_ether_selector_api.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_ether_switch_api.h + + + $PROJ_DIR$\rzn\fsp\src\r_ethsw\r_ethsw.c + + + $PROJ_DIR$\rzn\fsp\inc\instances\r_ethsw.h + + + $PROJ_DIR$\rzn\fsp\src\r_gmac\r_gmac.c + + + $PROJ_DIR$\rzn\fsp\inc\instances\r_gmac.h + + + $PROJ_DIR$\rzn\fsp\src\r_ioport\r_ioport.c + + + $PROJ_DIR$\rzn\fsp\inc\instances\r_ioport.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_ioport_api.h + + + $PROJ_DIR$\rzn\fsp\src\r_sci_uart\r_sci_uart.c + + + $PROJ_DIR$\rzn\fsp\inc\instances\r_sci_uart.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_timer_api.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_transfer_api.h + + + $PROJ_DIR$\rzn\fsp\inc\api\r_uart_api.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Include\renesas.h + + + $PROJ_DIR$\rzn\fsp\src\rm_ethercat_ssc_port\renesashw.h + + + $PROJ_DIR$\rzn\fsp\src\rm_ethercat_ssc_port\rm_ethercat_ssc_port.c + + + $PROJ_DIR$\rzn\fsp\inc\instances\rm_ethercat_ssc_port.h + + + $PROJ_DIR$\rzn\fsp\inc\api\rm_ethercat_ssc_port_api.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Source\startup.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Source\cr\startup_core.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Source\system.c + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Include\system.h + + + $PROJ_DIR$\rzn\fsp\src\bsp\cmsis\Device\RENESAS\Source\cr\system_core.c + + + + Generated Data + + $PROJ_DIR$\rzn_gen\bsp_clock_cfg.h + + + $PROJ_DIR$\rzn_gen\common_data.c + + + $PROJ_DIR$\rzn_gen\common_data.h + + + $PROJ_DIR$\rzn_gen\hal_data.c + + + $PROJ_DIR$\rzn_gen\hal_data.h + + + $PROJ_DIR$\rzn_gen\main.c + + + $PROJ_DIR$\rzn_gen\pin_data.c + + + $PROJ_DIR$\rzn_gen\vector_data.c + + + $PROJ_DIR$\rzn_gen\vector_data.h + + + + Program Entry + + $PROJ_DIR$\src\hal_entry.c + + + + + $PROJ_DIR$\buildinfo.ipcf + IAR.ControlFile + + diff --git a/bsp/renesas/rzn2l_etherkit/template.eww b/bsp/renesas/rzn2l_etherkit/template.eww new file mode 100644 index 00000000000..33c8b29e247 --- /dev/null +++ b/bsp/renesas/rzn2l_etherkit/template.eww @@ -0,0 +1,7 @@ + + + + $WS_DIR$\template.ewp + + + diff --git a/bsp/renesas/rzn2l_rsk/board/Kconfig b/bsp/renesas/rzn2l_rsk/board/Kconfig index 994910cf14a..1fab165ccce 100644 --- a/bsp/renesas/rzn2l_rsk/board/Kconfig +++ b/bsp/renesas/rzn2l_rsk/board/Kconfig @@ -82,7 +82,7 @@ menu "Hardware Drivers Config" select RT_USING_CAN select RT_CAN_USING_CANFD if BSP_USING_CANFD - config BSP_USING_CANFD0 + config BSP_USING_CAN0 bool "Enable CANFD0" default n endif

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 dXkc7M&muX=X%ywkzOLbG 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≦TY`InL%WSK2EuHl=pC$XjM2 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