mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Files at this revision

API Documentation at this revision

Comitter:
<>
Date:
Thu Sep 08 15:05:30 2016 +0100
Parent:
145:ce498f071de9
Child:
147:30b64687e01f
Commit message:
Remove superfluous targets

Changed in this revision

hal/targets.json Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_K64F/MK64F12.h Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_K64F/MK64F12_features.h Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_K64F/TOOLCHAIN_ARM_STD/MK64FN1M0xxx12.sct Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_K64F/TOOLCHAIN_ARM_STD/startup_MK64F12.S Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_K64F/TOOLCHAIN_ARM_STD/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_K64F/TOOLCHAIN_GCC_ARM/MK64FN1M0xxx12.ld Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_K64F/TOOLCHAIN_GCC_ARM/startup_MK64F12.S Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_K64F/TOOLCHAIN_IAR/MK64FN1M0xxx12.icf Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_K64F/TOOLCHAIN_IAR/startup_MK64F12.S Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_K64F/cmsis.h Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_K64F/cmsis_nvic.c Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_K64F/cmsis_nvic.h Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_K64F/fsl_device_registers.h Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_K64F/system_MK64F12.c Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_K64F/system_MK64F12.h Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/MKL43Z4.h Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/TOOLCHAIN_ARM_STD/MKL43Z4.sct Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/TOOLCHAIN_ARM_STD/startup_MKL43Z4.S Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/TOOLCHAIN_ARM_STD/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/TOOLCHAIN_GCC_ARM/MKL43Z4.ld Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/TOOLCHAIN_GCC_ARM/startup_MKL43Z4.S Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/cmsis.h Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/cmsis_nvic.c Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/cmsis_nvic.h Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/system_MKL43Z4.c Show diff for this revision Revisions of this file
targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/system_MKL43Z4.h Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F0/TARGET_DISCO_F051R8/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F0/TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F0/TARGET_NUCLEO_F031K6/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F0/TARGET_NUCLEO_F042K6/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F0/TARGET_NUCLEO_F070RB/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F0/TARGET_NUCLEO_F072RB/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F0/TARGET_NUCLEO_F091RC/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F1/TARGET_DISCO_F100RB/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F1/TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F334C8/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F303K8/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F303RE/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F334R8/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_B96B_F446VE/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F429ZI/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F469NI/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_ELMO_F411RE/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_MTS_DRAGONFLY_F411RE/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_MTS_MDOT_F405RG/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_MTS_MDOT_F411RE/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F410RB/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F411RE/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F446RE/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_STM32F407VG/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_UBLOX_C029/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F7/TARGET_DISCO_F746NG/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32F7/TARGET_NUCLEO_F746ZG/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32L0/TARGET_DISCO_L053C8/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32L0/TARGET_NUCLEO_L031K6/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32L0/TARGET_NUCLEO_L053R8/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32L0/TARGET_NUCLEO_L073RZ/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32L1/TARGET_MOTE_L152RC/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32L1/TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32L1/TARGET_NZ32_SC151/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32L4/TARGET_DISCO_L476VG/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/cmsis/TARGET_STM/TARGET_STM32L4/TARGET_NUCLEO_L476RG/TOOLCHAIN_ARM_MICRO/sys.cpp Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/PeripheralNames.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/PeripheralPins.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/PinNames.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/device.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/gpio_irq_api.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/mbed_overrides.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/serial_api.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/spi_api.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/PeripheralNames.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/PeripheralPins.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/PinNames.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/crc.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/crc.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/device.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/fsl_clock_config.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/fsl_clock_config.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/fsl_phy.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/fsl_phy.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/mbed_overrides.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_HEXIWEAR/PeripheralNames.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_HEXIWEAR/PeripheralPins.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_HEXIWEAR/PinNames.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_HEXIWEAR/device.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_HEXIWEAR/fsl_clock_config.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_HEXIWEAR/fsl_clock_config.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_HEXIWEAR/mbed_overrides.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_MTS_GAMBIT/PeripheralNames.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_MTS_GAMBIT/PeripheralPins.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_MTS_GAMBIT/PinNames.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_MTS_GAMBIT/device.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_MTS_GAMBIT/fsl_clock_config.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_MTS_GAMBIT/fsl_clock_config.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_MTS_GAMBIT/mbed_overrides.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_adc16.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_adc16.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_clock.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_clock.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_cmp.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_cmp.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_cmt.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_cmt.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_common.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_common.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_crc.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_crc.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_dac.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_dac.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_dmamux.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_dmamux.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_dspi.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_dspi.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_dspi_edma.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_dspi_edma.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_edma.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_edma.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_enet.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_enet.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_ewm.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_ewm.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_flash.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_flash.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_flexbus.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_flexbus.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_flexcan.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_flexcan.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_ftm.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_ftm.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_gpio.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_gpio.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_i2c.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_i2c.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_i2c_edma.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_i2c_edma.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_llwu.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_llwu.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_lptmr.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_lptmr.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_mpu.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_mpu.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_pdb.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_pdb.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_pit.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_pit.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_pmc.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_pmc.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_port.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_rcm.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_rcm.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_rnga.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_rnga.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_rtc.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_rtc.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_sai.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_sai.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_sai_edma.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_sai_edma.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_sdhc.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_sdhc.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_sim.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_sim.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_smc.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_smc.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_uart.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_uart.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_uart_edma.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_uart_edma.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_vref.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_vref.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_wdog.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_wdog.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/peripheral_clock_defines.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/pwmout_api.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/serial_api.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/spi_api.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/us_ticker.c Show diff for this revision Revisions of this file
--- a/hal/targets.json	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1864 +0,0 @@
-{
-    "Target": {
-        "core": null,
-        "default_toolchain": "ARM",
-        "supported_toolchains": null,
-        "extra_labels": [],
-        "is_disk_virtual": false,
-        "macros": [],
-        "device_has": [],
-        "features": [],
-        "detect_code": [],
-        "public": false,
-        "default_build": "standard",
-        "release": false
-    },
-    "CM4_UARM": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4",
-        "default_toolchain": "uARM",
-        "public": false,
-        "supported_toolchains": ["uARM"],
-        "default_build": "small",
-        "release": false
-    },
-    "CM4_ARM": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4",
-        "public": false,
-        "supported_toolchains": ["ARM"],
-        "release": false
-    },
-    "CM4F_UARM": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "public": false,
-        "supported_toolchains": ["uARM"],
-        "default_build": "small",
-        "release": false
-    },
-    "CM4F_ARM": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4F",
-        "public": false,
-        "supported_toolchains": ["ARM"],
-        "release": false
-    },
-    "LPCTarget": {
-        "inherits": ["Target"],
-        "post_binary_hook": {"function": "LPCTargetCode.lpc_patch"},
-        "public": false,
-        "release": false
-    },
-    "LPC11C24": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M0",
-        "progen": {"target": "lpc11c24_301"},
-        "extra_labels": ["NXP", "LPC11XX_11CXX", "LPC11CXX"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "device_has": ["ANALOGIN", "CAN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"]
-    },
-    "LPC1114": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M0",
-        "default_toolchain": "uARM",
-        "extra_labels": ["NXP", "LPC11XX_11CXX", "LPC11XX"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"],
-        "progen": {
-            "target": "lpc1114_102"
-        },
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "LPC11U24": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M0",
-        "default_toolchain": "uARM",
-        "extra_labels": ["NXP", "LPC11UXX", "LPC11U24_401"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "progen": {
-            "target": "lpc11u24_201"
-        },
-        "detect_code": ["1040"],
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOCALFILESYSTEM", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "OC_MBUINO": {
-        "inherits": ["LPC11U24"],
-        "macros": ["TARGET_LPC11U24"],
-        "progen": {
-            "target": "lpc11u24_201"
-        },
-        "extra_labels": ["NXP", "LPC11UXX"],
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "LPC11U24_301": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M0",
-        "extra_labels": ["NXP", "LPC11UXX"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOCALFILESYSTEM", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"]
-    },
-    "LPC11U34_421": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M0",
-        "default_toolchain": "uARM",
-        "extra_labels": ["NXP", "LPC11UXX"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM"],
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "default_build": "small"
-    },
-    "MICRONFCBOARD": {
-        "inherits": ["LPC11U34_421"],
-        "macros": ["LPC11U34_421", "APPNEARME_MICRONFCBOARD"],
-        "extra_labels_add": ["APPNEARME_MICRONFCBOARD"],
-        "release": true
-    },
-    "LPC11U35_401": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M0",
-        "default_toolchain": "uARM",
-        "extra_labels": ["NXP", "LPC11UXX"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"],
-        "progen": {
-            "target": "lpc11u35_401"
-        },
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "default_build": "small",
-        "release": true
-    },
-    "LPC11U35_501": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M0",
-        "default_toolchain": "uARM",
-        "extra_labels": ["NXP", "LPC11UXX", "MCU_LPC11U35_501"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"],
-        "progen": {
-            "target": "lpc11u35_501"
-        },
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "default_build": "small",
-        "release": true
-    },
-    "LPC11U35_501_IBDAP": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M0",
-        "default_toolchain": "uARM",
-        "extra_labels": ["NXP", "LPC11UXX", "MCU_LPC11U35_501"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"],
-        "progen": {
-            "target": "lpc11u35_501"
-        },
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "default_build": "small"
-    },
-    "XADOW_M0": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M0",
-        "default_toolchain": "uARM",
-        "extra_labels": ["NXP", "LPC11UXX", "MCU_LPC11U35_501"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"],
-        "progen": {
-            "target": "lpc11u35_501"
-        },
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "default_build": "small",
-        "release": true
-    },
-    "LPC11U35_Y5_MBUG": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M0",
-        "default_toolchain": "uARM",
-        "extra_labels": ["NXP", "LPC11UXX", "MCU_LPC11U35_501"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"],
-        "progen": {
-            "target": "lpc11u35_501"
-        },
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "default_build": "small"
-    },
-    "LPC11U37_501": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M0",
-        "default_toolchain": "uARM",
-        "extra_labels": ["NXP", "LPC11UXX"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"],
-        "progen": {
-            "target": "lpc11u37_501"
-        },
-        "default_build": "small"
-    },
-    "LPCCAPPUCCINO": {
-        "inherits": ["LPC11U37_501"],
-        "progen": {
-            "target": "lpc11u37_501"
-        },
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"]
-    },
-    "ARCH_GPRS": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M0",
-        "default_toolchain": "uARM",
-        "extra_labels": ["NXP", "LPC11UXX", "LPC11U37_501"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"],
-        "inherits": ["LPCTarget"],
-        "progen": {
-            "target": "lpc11u37_501"
-        },
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "default_build": "small",
-        "release": true
-    },
-    "LPC11U68": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M0+",
-        "default_toolchain": "uARM",
-        "extra_labels": ["NXP", "LPC11U6X"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_CR", "GCC_ARM", "IAR"],
-        "inherits": ["LPCTarget"],
-        "progen": {
-            "target": "lpc11u68"
-        },
-        "detect_code": ["1168"],
-        "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI"],
-        "default_build": "small",
-        "release": true
-    },
-    "LPC1347": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M3",
-        "progen": {"target": "lpc1347"},
-        "extra_labels": ["NXP", "LPC13XX"],
-        "supported_toolchains": ["ARM", "GCC_ARM", "IAR"],
-        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "LPC1549": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M3",
-        "default_toolchain": "uARM",
-        "extra_labels": ["NXP", "LPC15XX"],
-        "supported_toolchains": ["uARM", "GCC_CR", "GCC_ARM", "IAR"],
-        "inherits": ["LPCTarget"],
-        "progen": {
-            "target": "lpc1549"
-        },
-        "detect_code": ["1549"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "INTERRUPTIN", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE"],
-        "default_build": "small",
-        "release": true
-    },
-    "LPC1768": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M3",
-        "extra_labels": ["NXP", "LPC176X", "MBED_LPC1768"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"],
-        "progen": {"target": "mbed-lpc1768"},
-        "detect_code": ["1010"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "DEBUG_AWARENESS", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOCALFILESYSTEM", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "ARCH_PRO": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M3",
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"],
-        "extra_labels": ["NXP", "LPC176X"],
-        "macros": ["TARGET_LPC1768"],
-        "inherits": ["LPCTarget"],
-        "progen": {"target": "arch-pro"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "DEBUG_AWARENESS", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "UBLOX_C027": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M3",
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"],
-        "extra_labels": ["NXP", "LPC176X"],
-        "macros": ["TARGET_LPC1768"],
-        "inherits": ["LPCTarget"],
-        "progen": {"target": "ublox-c027"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "DEBUG_AWARENESS", "ERROR_RED", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "XBED_LPC1768": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M3",
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "GCC_CR", "IAR"],
-        "extra_labels": ["NXP", "LPC176X", "XBED_LPC1768"],
-        "macros": ["TARGET_LPC1768"],
-        "progen": {"target": "lpc1768"},
-        "detect_code": ["1010"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "DEBUG_AWARENESS", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOCALFILESYSTEM", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"]
-    },
-    "LPC2368": {
-        "inherits": ["LPCTarget"],
-        "core": "ARM7TDMI-S",
-        "progen": {"target": "lpc2368"},
-        "extra_labels": ["NXP", "LPC23XX"],
-        "supported_toolchains": ["GCC_ARM", "GCC_CR"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOCALFILESYSTEM", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "LPC2460": {
-        "inherits": ["LPCTarget"],
-        "core": "ARM7TDMI-S",
-        "progen": {"target": "lpc2460"},
-        "extra_labels": ["NXP", "LPC2460"],
-        "supported_toolchains": ["GCC_ARM"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "LPC810": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M0+",
-        "default_toolchain": "uARM",
-        "extra_labels": ["NXP", "LPC81X"],
-        "is_disk_virtual": true,
-        "supported_toolchains": ["uARM", "IAR", "GCC_ARM"],
-        "progen": {
-            "target": "lpc810"
-        },
-        "device_has": ["ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PWMOUT", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE"],
-        "default_build": "small"
-    },
-    "LPC812": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M0+",
-        "default_toolchain": "uARM",
-        "extra_labels": ["NXP", "LPC81X"],
-        "is_disk_virtual": true,
-        "supported_toolchains": ["uARM", "IAR", "GCC_ARM"],
-        "inherits": ["LPCTarget"],
-        "progen": {
-            "target": "lpc812m101"
-        },
-        "detect_code": ["1050"],
-        "device_has": ["ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PWMOUT", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE"],
-        "default_build": "small",
-        "release": true
-    },
-    "LPC824": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M0+",
-        "default_toolchain": "uARM",
-        "extra_labels": ["NXP", "LPC82X"],
-        "is_disk_virtual": true,
-        "supported_toolchains": ["uARM", "GCC_ARM", "GCC_CR", "IAR"],
-        "inherits": ["LPCTarget"],
-        "progen": {
-            "target": "lpc824m201"
-        },
-        "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "default_build": "small",
-        "release": true
-    },
-    "SSCI824": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M0+",
-        "default_toolchain": "uARM",
-        "extra_labels": ["NXP", "LPC82X"],
-        "is_disk_virtual": true,
-        "supported_toolchains": ["uARM", "GCC_ARM"],
-        "progen": {
-            "target": "ssci824"
-        },
-        "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "default_build": "small",
-        "release": true
-    },
-    "LPC4088": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M4F",
-        "extra_labels": ["NXP", "LPC408X"],
-        "is_disk_virtual": true,
-        "supported_toolchains": ["ARM", "GCC_CR", "GCC_ARM", "IAR"],
-        "post_binary_hook": {
-            "function": "LPC4088Code.binary_hook",
-            "toolchains": ["ARM_STD", "ARM_MICRO"]
-        },
-        "progen": {"target": "lpc4088"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "DEBUG_AWARENESS", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "LPC4088_DM": {
-        "inherits": ["LPC4088"],
-        "release": true
-    },
-    "LPC4330_M4": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M4F",
-        "progen": {"target": "lpc4330"},
-        "extra_labels": ["NXP", "LPC43XX", "LPC4330"],
-        "supported_toolchains": ["ARM", "GCC_CR", "IAR", "GCC_ARM"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "DEBUG_AWARENESS", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"]
-    },
-    "LPC4330_M0": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M0",
-        "extra_labels": ["NXP", "LPC43XX", "LPC4330"],
-        "supported_toolchains": ["ARM", "GCC_CR", "IAR"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "DEBUG_AWARENESS", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"]
-    },
-    "LPC4337": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M4F",
-        "progen": {"target": "lpc4337"},
-        "extra_labels": ["NXP", "LPC43XX", "LPC4337"],
-        "supported_toolchains": ["ARM"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "DEBUG_AWARENESS", "ERROR_RED", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "LPC1800": {
-        "inherits": ["LPCTarget"],
-        "core": "Cortex-M3",
-        "extra_labels": ["NXP", "LPC43XX"],
-        "public": false,
-        "supported_toolchains": ["ARM", "GCC_CR", "IAR"]
-    },
-    "LPC11U37H_401": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M0",
-        "default_toolchain": "uARM",
-        "extra_labels": ["NXP", "LPC11UXX"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "GCC_CR"],
-        "inherits": ["LPCTarget"],
-        "progen": {
-            "target": "lpc11u37_401"
-        },
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "default_build": "small",
-        "release": true
-    },
-    "ELEKTOR_COCORICO": {
-        "core": "Cortex-M0+",
-        "default_toolchain": "uARM",
-        "extra_labels": ["NXP", "LPC81X"],
-        "supported_toolchains": ["uARM", "GCC_ARM", "IAR"],
-        "inherits": ["LPCTarget"],
-        "is_disk_virtual": true,
-        "detect_code": ["C000"],
-        "progen": {
-            "target": "cocorico"
-        },
-        "default_build": "small"
-    },
-    "KL05Z": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M0+",
-        "default_toolchain": "uARM",
-        "extra_labels": ["Freescale", "KLXX"],
-        "is_disk_virtual": true,
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "inherits": ["Target"],
-        "progen": {
-            "target": "frdm-kl05z"
-        },
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "KL25Z": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M0+",
-        "extra_labels": ["Freescale", "KLXX"],
-        "is_disk_virtual": true,
-        "supported_toolchains": ["ARM", "GCC_ARM", "IAR"],
-        "inherits": ["Target"],
-        "progen": {"target": "frdm-kl25z"},
-        "detect_code": ["0200"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "KL26Z": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M0+",
-        "extra_labels": ["Freescale", "KLXX"],
-        "is_disk_virtual": true,
-        "supported_toolchains": ["ARM", "GCC_ARM", "IAR"],
-        "inherits": ["Target"],
-        "progen": {"target": "kl26z"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"]
-    },
-    "KL43Z": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M0+",
-        "extra_labels": ["Freescale", "KLXX"],
-        "is_disk_virtual": true,
-        "supported_toolchains": ["GCC_ARM", "ARM"],
-        "inherits": ["Target"],
-        "progen": {"target": "frdm-kl43z"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "KL46Z": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M0+",
-        "extra_labels": ["Freescale", "KLXX"],
-        "is_disk_virtual": true,
-        "supported_toolchains": ["GCC_ARM", "ARM", "IAR"],
-        "inherits": ["Target"],
-        "progen": {"target": "frdm-kl46z"},
-        "detect_code": ["0220"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "K20D50M": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4",
-        "extra_labels": ["Freescale", "K20XX"],
-        "is_disk_virtual": true,
-        "supported_toolchains": ["GCC_ARM", "ARM", "IAR"],
-        "progen": {"target": "frdm-k20d50m"},
-        "detect_code": ["0230"],
-        "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "TEENSY3_1": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4",
-        "extra_labels": ["Freescale", "K20XX", "K20DX256"],
-        "OUTPUT_EXT": "hex",
-        "is_disk_virtual": true,
-        "supported_toolchains": ["GCC_ARM", "ARM"],
-        "post_binary_hook": {
-            "function": "TEENSY3_1Code.binary_hook",
-            "toolchains": ["ARM_STD", "ARM_MICRO", "GCC_ARM"]
-        },
-        "progen": {"target": "teensy-31"},
-        "detect_code": ["0230"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "K22F": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M4F",
-        "supported_toolchains": ["ARM", "GCC_ARM", "IAR"],
-        "extra_labels": ["Freescale", "KSDK2_MCUS", "FRDM", "KPSDK_MCUS", "KPSDK_CODE"],
-        "is_disk_virtual": true,
-        "macros": ["CPU_MK22FN512VLH12", "FSL_RTOS_MBED"],
-        "inherits": ["Target"],
-        "progen": {"target": "frdm-k22f"},
-        "detect_code": ["0231"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "KL27Z": {
-        "inherits": ["Target"],
-        "core": "Cortex-M0+",
-        "extra_labels": ["Freescale", "KSDK2_MCUS", "FRDM"],
-        "macros": ["CPU_MKL27Z64VLH4", "FSL_RTOS_MBED"],
-        "supported_toolchains": ["ARM", "GCC_ARM", "IAR"],
-        "supported_form_factors": ["ARDUINO"],
-        "is_disk_virtual": true,
-        "default_toolchain": "ARM",
-        "detect_code": ["0261"],
-        "progen_target": {"target": "frdm-kl27z"},
-        "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "standard",
-        "release": true
-    },
-    "K64F": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M4F",
-        "supported_toolchains": ["ARM", "GCC_ARM", "IAR"],
-        "extra_labels": ["Freescale", "KSDK2_MCUS", "FRDM", "KPSDK_MCUS", "KPSDK_CODE", "MCU_K64F"],
-        "is_disk_virtual": true,
-        "macros": ["CPU_MK64FN1M0VMD12", "FSL_RTOS_MBED", "MBEDTLS_ENTROPY_HARDWARE_ALT"],
-        "inherits": ["Target"],
-        "progen": {"target": "frdm-k64f"},
-        "detect_code": ["0240"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES", "STORAGE"],
-        "release": true
-    },
-    "MTS_GAMBIT": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4F",
-        "supported_toolchains": ["ARM", "GCC_ARM"],
-        "extra_labels": ["Freescale", "KSDK2_MCUS", "K64F", "KPSDK_MCUS", "KPSDK_CODE", "MCU_K64F"],
-        "is_disk_virtual": true,
-        "macros": ["CPU_MK64FN1M0VMD12", "FSL_RTOS_MBED", "TARGET_K64F"],
-        "progen": {"target": "mts-gambit"},
-        "device_has": ["I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"]
-    },
-    "HEXIWEAR": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4F",
-        "extra_labels": ["Freescale", "KSDK2_MCUS", "K64F"],
-        "supported_toolchains": ["ARM", "GCC_ARM", "IAR"],
-        "macros": ["CPU_MK64FN1M0VMD12", "FSL_RTOS_MBED", "TARGET_K64F"],
-        "is_disk_virtual": true,
-        "default_toolchain": "ARM",
-        "detect_code": ["0214"],
-        "progen": {"target": "hexiwear-k64f"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "standard"
-    },
-    "NUCLEO_F030R8": {
-        "supported_form_factors": ["ARDUINO", "MORPHO"],
-        "core": "Cortex-M0",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F0", "STM32F030R8"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-f030r8"},
-        "detect_code": ["0725"],
-        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_F031K6": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M0",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F0", "STM32F031K6"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-f031k6"},
-        "detect_code": ["0791"],
-        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_F042K6": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M0",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F0", "STM32F042K6"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-f042k6"},
-        "detect_code": ["0785"],
-        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_F070RB": {
-        "supported_form_factors": ["ARDUINO", "MORPHO"],
-        "core": "Cortex-M0",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F0", "STM32F070RB"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-f070rb"},
-        "detect_code": ["0755"],
-        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_F072RB": {
-        "supported_form_factors": ["ARDUINO", "MORPHO"],
-        "core": "Cortex-M0",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F0", "STM32F072RB"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-f072rb"},
-        "detect_code": ["0730"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_F091RC": {
-        "supported_form_factors": ["ARDUINO", "MORPHO"],
-        "core": "Cortex-M0",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F0", "STM32F091RC"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-f091rc"},
-        "detect_code": ["0750"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_F103RB": {
-        "supported_form_factors": ["ARDUINO", "MORPHO"],
-        "core": "Cortex-M3",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F1", "STM32F103RB"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-f103rb"},
-        "detect_code": ["0700"],
-        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_F302R8": {
-        "supported_form_factors": ["ARDUINO", "MORPHO"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F3", "STM32F302R8"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-f302r8"},
-        "detect_code": ["0705"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_F303K8": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F3", "STM32F303K8"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-f303k8"},
-        "detect_code": ["0775"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_F303RE": {
-        "supported_form_factors": ["ARDUINO", "MORPHO"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F3", "STM32F303RE"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-f303re"},
-        "detect_code": ["0745"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_F334R8": {
-        "supported_form_factors": ["ARDUINO", "MORPHO"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F3", "STM32F334R8"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-f334r8"},
-        "detect_code": ["0735"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_F401RE": {
-        "supported_form_factors": ["ARDUINO", "MORPHO"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F4", "STM32F401RE"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-f401re"},
-        "detect_code": ["0720"],
-        "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_F410RB": {
-        "supported_form_factors": ["ARDUINO", "MORPHO"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F4", "STM32F410RB"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-f410rb"},
-        "detect_code": ["0740"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_F411RE": {
-        "supported_form_factors": ["ARDUINO", "MORPHO"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F4", "STM32F411RE"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-f411re"},
-        "detect_code": ["0740"],
-        "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "ELMO_F411RE": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F4", "STM32F411RE"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM"],
-        "inherits": ["Target"],
-        "detect_code": ["----"],
-        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_F429ZI": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F4", "STM32F429", "STM32F429ZI"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "progen": {"target": "nucleo-f429zi"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "detect_code": ["0796"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_F446RE": {
-        "supported_form_factors": ["ARDUINO", "MORPHO"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "ARM",
-        "extra_labels": ["STM", "STM32F4", "STM32F446RE"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-f446re"},
-        "detect_code": ["0777"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "standard",
-        "release": true
-    },
-    "NUCLEO_F446ZE": {
-        "supported_form_factors": ["ARDUINO", "MORPHO"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F4", "STM32F446ZE"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-f446ze"},
-        "detect_code": ["0778"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-
-    "B96B_F446VE": {
-        "supported_form_factors": ["ARDUINO", "MORPHO"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F4", "STM32F446VE"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "inherits": ["Target"],
-        "detect_code": ["0840"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_ASYNCH_DMA", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_F746ZG": {
-        "inherits": ["Target"],
-        "core": "Cortex-M7F",
-        "extra_labels": ["STM", "STM32F7", "STM32F746", "STM32F746ZG"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "default_toolchain": "ARM",
-        "progen": {
-            "target": "nucleo-f746zg",
-            "iar": {
-                "template": ["iar_nucleo_f746zg.ewp.tmpl"]
-            }
-        },
-        "supported_form_factors": ["ARDUINO"],
-        "detect_code": ["0816"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "NUCLEO_F767ZI": {
-        "inherits": ["Target"],
-        "core": "Cortex-M7FD",
-        "extra_labels": ["STM", "STM32F7", "STM32F767", "STM32F767ZI"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "default_toolchain": "ARM",
-        "progen": {"target": "nucleo-f767zi"},
-        "detect_code": ["0818"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "standard",
-        "release":true
-    },
-    "NUCLEO_L011K4": {
-        "inherits": ["Target"],
-        "core": "Cortex-M0+",
-        "extra_labels": ["STM", "STM32L0", "STM32L011K4"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "default_toolchain": "uARM",
-        "supported_form_factors": ["ARDUINO"],
-        "detect_code": ["0780"],
-        "progen": {"target":"nucleo-l011k4"},
-        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-
-    "NUCLEO_L031K6": {
-        "inherits": ["Target"],
-        "core": "Cortex-M0",
-        "extra_labels": ["STM", "STM32L0", "STM32L031K6"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "default_toolchain": "uARM",
-        "supported_form_factors": ["ARDUINO"],
-        "detect_code": ["0790"],
-        "progen": {"target": "nucleo-l031k6"},
-        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_L053R8": {
-        "supported_form_factors": ["ARDUINO", "MORPHO"],
-        "core": "Cortex-M0+",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32L0", "STM32L053R8"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-l053r8"},
-        "detect_code": ["0715"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_L073RZ": {
-        "supported_form_factors": ["ARDUINO", "MORPHO"],
-        "core": "Cortex-M0+",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32L0", "STM32L073RZ"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-l073rz"},
-        "detect_code": ["0760"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_L152RE": {
-        "supported_form_factors": ["ARDUINO", "MORPHO"],
-        "core": "Cortex-M3",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32L1", "STM32L152RE"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-l152re"},
-        "detect_code": ["0710"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "NUCLEO_L432KC": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32L4", "STM32L432KC"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-l432kc"},
-        "detect_code": ["0770"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "NUCLEO_L476RG": {
-        "supported_form_factors": ["ARDUINO", "MORPHO"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32L4", "STM32L476RG"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "inherits": ["Target"],
-        "progen": {"target": "nucleo-l476rg"},
-        "detect_code": ["0765"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "STM32F3XX": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F3XX"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM"],
-        "default_build": "small"
-    },
-    "STM32F407": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4F",
-        "extra_labels": ["STM", "STM32F4", "STM32F4XX"],
-        "supported_toolchains": ["ARM", "GCC_ARM", "IAR"]
-    },
-    "ARCH_MAX": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M4F",
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM"],
-        "program_cycle_s": 2,
-        "extra_labels": ["STM", "STM32F4", "STM32F407", "STM32F407VG"],
-        "macros": ["LSI_VALUE=32000"],
-        "inherits": ["Target"],
-        "progen": {"target": "lpc1768"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "DISCO_F051R8": {
-        "inherits": ["Target"],
-        "core": "Cortex-M0",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F0", "STM32F051", "STM32F051R8"],
-        "supported_toolchains": ["GCC_ARM"],
-        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small"
-    },
-    "DISCO_F100RB": {
-        "inherits": ["Target"],
-        "core": "Cortex-M3",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F1", "STM32F100RB"],
-        "supported_toolchains": ["GCC_ARM"],
-        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small"
-    },
-    "DISCO_F303VC": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F3", "STM32F303", "STM32F303VC"],
-        "supported_toolchains": ["GCC_ARM"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small"
-    },
-    "DISCO_F334C8": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F3", "STM32F334C8"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "progen": {"target": "disco-f334c8"},
-        "detect_code": ["0810"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "DISCO_F407VG": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4F",
-        "progen": {"target": "disco-f407vg"},
-        "extra_labels": ["STM", "STM32F4", "STM32F407", "STM32F407VG"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"]
-    },
-    "DISCO_F429ZI": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F4", "STM32F429", "STM32F429ZI"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "progen": {"target": "disco-f429zi"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "DISCO_F469NI": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32F4", "STM32F469", "STM32F469NI"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "inherits": ["Target"],
-        "progen": {"target": "disco-f469ni"},
-        "detect_code": ["0788"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "DISCO_L053C8": {
-        "inherits": ["Target"],
-        "core": "Cortex-M0+",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32L0", "STM32L053C8"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "progen": {"target": "disco-l053c8"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "DISCO_F746NG": {
-        "inherits": ["Target"],
-        "core": "Cortex-M7F",
-        "extra_labels": ["STM", "STM32F7", "STM32F746", "STM32F746NG"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "default_toolchain": "ARM",
-        "progen": {"target": "disco-f746ng"},
-        "detect_code": ["0815"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "standard",
-        "release": true
-    },
-    "DISCO_L476VG": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32L4", "STM32L476VG"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "progen": {"target": "disco-l476vg"},
-        "detect_code": ["0820"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "MTS_MDOT_F405RG": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4F",
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "extra_labels": ["STM", "STM32F4", "STM32F405RG"],
-        "is_disk_virtual": true,
-        "macros": ["HSE_VALUE=26000000", "OS_CLOCK=48000000"],
-        "progen": {"target": "mts-mdot-f405rg"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "MTS_MDOT_F411RE": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4F",
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "extra_labels": ["STM", "STM32F4", "STM32F411RE"],
-        "macros": ["HSE_VALUE=26000000", "OS_CLOCK=96000000", "USE_PLL_HSE_EXTC=0", "VECT_TAB_OFFSET=0x00010000"],
-        "post_binary_hook": {
-            "function": "MTSCode.combine_bins_mts_dot",
-            "toolchains": ["GCC_ARM", "ARM_STD", "ARM_MICRO"]
-        },
-        "progen": {"target": "mts-mdot-f411re"},
-        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "MTS_DRAGONFLY_F411RE": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4F",
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "extra_labels": ["STM", "STM32F4", "STM32F411RE"],
-        "macros": ["HSE_VALUE=26000000", "VECT_TAB_OFFSET=0x08010000"],
-        "post_binary_hook": {
-            "function": "MTSCode.combine_bins_mts_dragonfly",
-            "toolchains": ["GCC_ARM", "ARM_STD", "ARM_MICRO"]
-        },
-        "progen": {"target": "mts-dragonfly-f411re"},
-        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "MOTE_L152RC": {
-        "inherits": ["Target"],
-        "core": "Cortex-M3",
-        "default_toolchain": "uARM",
-        "extra_labels": ["STM", "STM32L1", "STM32L152RC"],
-        "supported_toolchains": ["ARM", "uARM", "IAR", "GCC_ARM"],
-        "progen": {"target": "stm32l151rc"},
-        "detect_code": ["4100"],
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "release": true
-    },
-    "DISCO_F401VC": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "GCC_ARM",
-        "extra_labels": ["STM", "STM32F4", "STM32F401", "STM32F401VC"],
-        "supported_toolchains": ["GCC_ARM"],
-        "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "standard"
-    },
-    "UBLOX_C029": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M4F",
-        "default_toolchain": "uARM",
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM", "IAR"],
-        "extra_labels": ["STM", "STM32F4", "STM32F439", "STM32F439ZI"],
-        "macros": ["HSE_VALUE=24000000", "HSE_STARTUP_TIMEOUT=5000"],
-        "inherits": ["Target"],
-        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small"
-    },
-    "NZ32_SC151": {
-        "inherits": ["Target"],
-        "core": "Cortex-M3",
-        "default_toolchain": "uARM",
-        "program_cycle_s": 1.5,
-        "extra_labels": ["STM", "STM32L1", "STM32L151RC"],
-        "supported_toolchains": ["ARM", "uARM", "GCC_ARM"],
-        "progen": {"target": "stm32l151rc"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "small"
-    },
-    "MCU_NRF51": {
-        "inherits": ["Target"],
-        "core": "Cortex-M0",
-        "OVERRIDE_BOOTLOADER_FILENAME": "nrf51822_bootloader.hex",
-        "macros": ["NRF51", "TARGET_NRF51822"],
-        "MERGE_BOOTLOADER": false,
-        "extra_labels": ["NORDIC", "MCU_NRF51", "MCU_NRF51822"],
-        "OUTPUT_EXT": "hex",
-        "is_disk_virtual": true,
-        "supported_toolchains": ["ARM", "GCC_ARM"],
-        "public": false,
-        "MERGE_SOFT_DEVICE": true,
-        "EXPECTED_SOFTDEVICES_WITH_OFFSETS": [
-            {
-                "boot": "s130_nrf51_1.0.0_bootloader.hex",
-                "name": "s130_nrf51_1.0.0_softdevice.hex",
-                "offset": 114688
-            },
-            {
-                "boot": "s110_nrf51822_8.0.0_bootloader.hex",
-                "name": "s110_nrf51822_8.0.0_softdevice.hex",
-                "offset": 98304
-            },
-            {
-                "boot": "s110_nrf51822_7.1.0_bootloader.hex",
-                "name": "s110_nrf51822_7.1.0_softdevice.hex",
-                "offset": 90112
-            },
-            {
-                "boot": "s110_nrf51822_7.0.0_bootloader.hex",
-                "name": "s110_nrf51822_7.0.0_softdevice.hex",
-                "offset": 90112
-            },
-            {
-                "boot": "s110_nrf51822_6.0.0_bootloader.hex",
-                "name": "s110_nrf51822_6.0.0_softdevice.hex",
-                "offset": 81920
-            }
-        ],
-        "detect_code": ["1070"],
-        "post_binary_hook": {
-            "function": "MCU_NRF51Code.binary_hook",
-            "toolchains": ["ARM_STD", "GCC_ARM"]
-        },
-        "program_cycle_s": 6,
-        "default_build": "small"
-    },
-    "MCU_NRF51_16K_BASE": {
-        "inherits": ["MCU_NRF51"],
-        "extra_labels_add": ["MCU_NORDIC_16K", "MCU_NRF51_16K"],
-        "macros_add": ["TARGET_MCU_NORDIC_16K", "TARGET_MCU_NRF51_16K"],
-        "public": false
-    },
-    "MCU_NRF51_16K_BOOT_BASE": {
-        "inherits": ["MCU_NRF51_16K_BASE"],
-        "MERGE_BOOTLOADER": true,
-        "extra_labels_add": ["MCU_NRF51_16K_BOOT"],
-        "macros_add": ["TARGET_MCU_NRF51_16K_BOOT", "TARGET_OTA_ENABLED"],
-        "public": false
-    },
-    "MCU_NRF51_16K_OTA_BASE": {
-        "inherits": ["MCU_NRF51_16K_BASE"],
-        "public": false,
-        "extra_labels_add": ["MCU_NRF51_16K_OTA"],
-        "macros_add": ["TARGET_MCU_NRF51_16K_OTA", "TARGET_OTA_ENABLED"],
-        "MERGE_SOFT_DEVICE": false
-    },
-    "MCU_NRF51_16K": {
-        "inherits": ["MCU_NRF51_16K_BASE"],
-        "extra_labels_add": ["MCU_NRF51_16K_S130"],
-        "macros_add": ["TARGET_MCU_NRF51_16K_S130"],
-        "public": false
-    },
-    "MCU_NRF51_S110": {
-        "extra_labels_add": ["MCU_NRF51_16K_S110"],
-        "macros_add": ["TARGET_MCU_NRF51_16K_S110"],
-        "EXPECTED_SOFTDEVICES_WITH_OFFSETS": [
-            {
-                "name": "s110_nrf51822_8.0.0_softdevice.hex",
-                "boot": "s110_nrf51822_8.0.0_bootloader.hex",
-                "offset": 98304
-            },
-            {
-                "name": "s110_nrf51822_7.1.0_softdevice.hex",
-                "boot": "s110_nrf51822_7.1.0_bootloader.hex",
-                "offset": 90112
-            }
-        ],
-        "public": false
-    },
-    "MCU_NRF51_16K_S110": {
-        "inherits": ["MCU_NRF51_S110", "MCU_NRF51_16K_BASE"],
-        "public": false
-    },
-    "MCU_NRF51_16K_BOOT": {
-        "inherits": ["MCU_NRF51_16K_BOOT_BASE"],
-        "extra_labels_add": ["MCU_NRF51_16K_S130"],
-        "macros_add": ["TARGET_MCU_NRF51_16K_S130"],
-        "public": false
-    },
-    "MCU_NRF51_16K_BOOT_S110": {
-        "inherits": ["MCU_NRF51_S110", "MCU_NRF51_16K_BOOT_BASE"],
-        "public": false
-    },
-    "MCU_NRF51_16K_OTA": {
-        "inherits": ["MCU_NRF51_16K_OTA_BASE"],
-        "extra_labels_add": ["MCU_NRF51_16K_S130"],
-        "macros_add": ["TARGET_MCU_NRF51_16K_S130"],
-        "public": false
-    },
-    "MCU_NRF51_16K_OTA_S110": {
-        "inherits": ["MCU_NRF51_S110", "MCU_NRF51_16K_OTA_BASE"],
-        "public": false
-    },
-    "MCU_NRF51_32K": {
-        "inherits": ["MCU_NRF51"],
-        "extra_labels_add": ["MCU_NORDIC_32K", "MCU_NRF51_32K"],
-        "macros_add": ["TARGET_MCU_NORDIC_32K", "TARGET_MCU_NRF51_32K"],
-        "public": false
-    },
-    "MCU_NRF51_32K_BOOT": {
-        "inherits": ["MCU_NRF51_32K"],
-        "MERGE_BOOTLOADER": true,
-        "extra_labels_add": ["MCU_NRF51_32K_BOOT"],
-        "macros_add": ["TARGET_MCU_NRF51_32K_BOOT", "TARGET_OTA_ENABLED"],
-        "public": false
-    },
-    "MCU_NRF51_32K_OTA": {
-        "inherits": ["MCU_NRF51_32K"],
-        "public": false,
-        "extra_labels_add": ["MCU_NRF51_32K_OTA"],
-        "macros_add": ["TARGET_MCU_NRF51_32K_OTA", "TARGET_OTA_ENABLED"],
-        "MERGE_SOFT_DEVICE": false
-    },
-    "NRF51822": {
-        "inherits": ["MCU_NRF51_16K"],
-        "progen": {"target": "mkit"},
-        "extra_labels_add": ["NRF51822", "NRF51822_MKIT"],
-        "macros_add": ["TARGET_NRF51822_MKIT"],
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
-    },
-    "NRF51822_BOOT": {
-        "inherits": ["MCU_NRF51_16K_BOOT"],
-        "extra_labels_add": ["NRF51822", "NRF51822_MKIT"],
-        "macros_add": ["TARGET_NRF51822_MKIT"],
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"]
-    },
-    "NRF51822_OTA": {
-        "inherits": ["MCU_NRF51_16K_OTA"],
-        "extra_labels_add": ["NRF51822", "NRF51822_MKIT"],
-        "macros_add": ["TARGET_NRF51822_MKIT"],
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"]
-    },
-    "ARCH_BLE": {
-        "supported_form_factors": ["ARDUINO"],
-        "inherits": ["MCU_NRF51_16K"],
-        "progen": {"target": "arch-ble"},
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
-    },
-    "ARCH_BLE_BOOT": {
-        "supported_form_factors": ["ARDUINO"],
-        "inherits": ["MCU_NRF51_16K_BOOT"],
-        "extra_labels_add": ["ARCH_BLE"],
-        "macros_add": ["TARGET_ARCH_BLE"]
-    },
-    "ARCH_BLE_OTA": {
-        "supported_form_factors": ["ARDUINO"],
-        "inherits": ["MCU_NRF51_16K_OTA"],
-        "extra_labels_add": ["ARCH_BLE"],
-        "macros_add": ["TARGET_ARCH_BLE"]
-    },
-    "ARCH_LINK": {
-        "supported_form_factors": ["ARDUINO"],
-        "inherits": ["MCU_NRF51_16K"],
-        "extra_labels_add": ["ARCH_BLE"],
-        "macros_add": ["TARGET_ARCH_BLE"]
-    },
-    "ARCH_LINK_BOOT": {
-        "supported_form_factors": ["ARDUINO"],
-        "inherits": ["MCU_NRF51_16K_BOOT"],
-        "extra_labels_add": ["ARCH_BLE", "ARCH_LINK"],
-        "macros_add": ["TARGET_ARCH_BLE", "TARGET_ARCH_LINK"]
-    },
-    "ARCH_LINK_OTA": {
-        "supported_form_factors": ["ARDUINO"],
-        "inherits": ["MCU_NRF51_16K_OTA"],
-        "extra_labels_add": ["ARCH_BLE", "ARCH_LINK"],
-        "macros_add": ["TARGET_ARCH_BLE", "TARGET_ARCH_LINK"]
-    },
-    "SEEED_TINY_BLE": {
-        "inherits": ["MCU_NRF51_16K"],
-        "progen": {"target": "seed-tinyble"},
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
-    },
-    "SEEED_TINY_BLE_BOOT": {
-        "inherits": ["MCU_NRF51_16K_BOOT"],
-        "extra_labels_add": ["SEEED_TINY_BLE"],
-        "macros_add": ["TARGET_SEEED_TINY_BLE"]
-    },
-    "SEEED_TINY_BLE_OTA": {
-        "inherits": ["MCU_NRF51_16K_OTA"],
-        "extra_labels_add": ["SEEED_TINY_BLE"],
-        "macros_add": ["TARGET_SEEED_TINY_BLE"]
-    },
-    "HRM1017": {
-        "inherits": ["MCU_NRF51_16K"],
-        "progen": {"target": "hrm1017"},
-        "macros_add": ["TARGET_NRF_LFCLK_RC"],
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
-    },
-    "HRM1017_BOOT": {
-        "inherits": ["MCU_NRF51_16K_BOOT"],
-        "extra_labels_add": ["HRM1017"],
-        "macros_add": ["TARGET_HRM1017", "TARGET_NRF_LFCLK_RC"]
-    },
-    "HRM1017_OTA": {
-        "inherits": ["MCU_NRF51_16K_OTA"],
-        "extra_labels_add": ["HRM1017"],
-        "macros_add": ["TARGET_HRM1017", "TARGET_NRF_LFCLK_RC"]
-    },
-    "RBLAB_NRF51822": {
-        "supported_form_factors": ["ARDUINO"],
-        "inherits": ["MCU_NRF51_16K"],
-        "progen": {"target": "rblab-nrf51822"},
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
-    },
-    "RBLAB_NRF51822_BOOT": {
-        "supported_form_factors": ["ARDUINO"],
-        "inherits": ["MCU_NRF51_16K_BOOT"],
-        "extra_labels_add": ["RBLAB_NRF51822"],
-        "macros_add": ["TARGET_RBLAB_NRF51822"]
-    },
-    "RBLAB_NRF51822_OTA": {
-        "supported_form_factors": ["ARDUINO"],
-        "inherits": ["MCU_NRF51_16K_OTA"],
-        "extra_labels_add": ["RBLAB_NRF51822"],
-        "macros_add": ["TARGET_RBLAB_NRF51822"]
-    },
-    "RBLAB_BLENANO": {
-        "inherits": ["MCU_NRF51_16K"],
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
-    },
-    "RBLAB_BLENANO_BOOT": {
-        "inherits": ["MCU_NRF51_16K_BOOT"],
-        "extra_labels_add": ["RBLAB_BLENANO"],
-        "macros_add": ["TARGET_RBLAB_BLENANO"]
-    },
-    "RBLAB_BLENANO_OTA": {
-        "inherits": ["MCU_NRF51_16K_OTA"],
-        "extra_labels_add": ["RBLAB_BLENANO"],
-        "macros_add": ["TARGET_RBLAB_BLENANO"]
-    },
-    "NRF51822_Y5_MBUG": {
-        "inherits": ["MCU_NRF51_16K"],
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"]
-    },
-    "WALLBOT_BLE": {
-        "inherits": ["MCU_NRF51_16K"],
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
-    },
-    "WALLBOT_BLE_BOOT": {
-        "inherits": ["MCU_NRF51_16K_BOOT"],
-        "extra_labels_add": ["WALLBOT_BLE"],
-        "macros_add": ["TARGET_WALLBOT_BLE"]
-    },
-    "WALLBOT_BLE_OTA": {
-        "inherits": ["MCU_NRF51_16K_OTA"],
-        "extra_labels_add": ["WALLBOT_BLE"],
-        "macros_add": ["TARGET_WALLBOT_BLE"]
-    },
-    "DELTA_DFCM_NNN40": {
-        "inherits": ["MCU_NRF51_32K"],
-        "program_cycle_s": 10,
-        "progen": {"target": "dfcm-nnn40"},
-        "macros_add": ["TARGET_NRF_LFCLK_RC"],
-        "device_has": ["ANALOGIN", "DEBUG_AWARENESS", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
-    },
-    "DELTA_DFCM_NNN40_BOOT": {
-        "inherits": ["MCU_NRF51_32K_BOOT"],
-        "program_cycle_s": 10,
-        "extra_labels_add": ["DELTA_DFCM_NNN40"],
-        "macros_add": ["TARGET_DELTA_DFCM_NNN40", "TARGET_NRF_LFCLK_RC"]
-    },
-    "DELTA_DFCM_NNN40_OTA": {
-        "inherits": ["MCU_NRF51_32K_OTA"],
-        "program_cycle_s": 10,
-        "extra_labels_add": ["DELTA_DFCM_NNN40"],
-        "macros_add": ["TARGET_DELTA_DFCM_NNN40", "TARGET_NRF_LFCLK_RC"]
-    },
-    "NRF51_DK": {
-        "supported_form_factors": ["ARDUINO"],
-        "inherits": ["MCU_NRF51_32K"],
-        "progen": {"target": "nrf51-dk"},
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
-    },
-    "NRF51_DK_BOOT": {
-        "supported_form_factors": ["ARDUINO"],
-        "inherits": ["MCU_NRF51_32K_BOOT"],
-        "extra_labels_add": ["NRF51_DK"],
-        "macros_add": ["TARGET_NRF51_DK"]
-    },
-    "NRF51_DK_OTA": {
-        "supported_form_factors": ["ARDUINO"],
-        "inherits": ["MCU_NRF51_32K_OTA"],
-        "extra_labels_add": ["NRF51_DK"],
-        "macros_add": ["TARGET_NRF51_DK"]
-    },
-    "NRF51_DONGLE": {
-        "inherits": ["MCU_NRF51_32K"],
-        "progen": {"target": "nrf51-dongle"},
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
-    },
-    "NRF51_DONGLE_BOOT": {
-        "inherits": ["MCU_NRF51_32K_BOOT"],
-        "extra_labels_add": ["NRF51_DONGLE"],
-        "macros_add": ["TARGET_NRF51_DONGLE"]
-    },
-    "NRF51_DONGLE_OTA": {
-        "inherits": ["MCU_NRF51_32K_OTA"],
-        "extra_labels_add": ["NRF51_DONGLE"],
-        "macros_add": ["TARGET_NRF51_DONGLE"]
-    },
-    "NRF51_MICROBIT": {
-        "inherits": ["MCU_NRF51_16K_S110"],
-        "macros_add": ["TARGET_NRF_LFCLK_RC"],
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
-    },
-    "NRF51_MICROBIT_BOOT": {
-        "inherits": ["MCU_NRF51_16K_BOOT_S110"],
-        "extra_labels_add": ["NRF51_MICROBIT"],
-        "macros_add": ["TARGET_NRF51_MICROBIT", "TARGET_NRF_LFCLK_RC"]
-    },
-    "NRF51_MICROBIT_OTA": {
-        "inherits": ["MCU_NRF51_16K_OTA_S110"],
-        "extra_labels_add": ["NRF51_MICROBIT"],
-        "macros_add": ["TARGET_NRF51_MICROBIT", "TARGET_NRF_LFCLK_RC"]
-    },
-    "NRF51_MICROBIT_B": {
-        "inherits": ["MCU_NRF51_16K"],
-        "extra_labels_add": ["NRF51_MICROBIT"],
-        "macros_add": ["TARGET_NRF51_MICROBIT", "TARGET_NRF_LFCLK_RC"],
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
-    },
-    "NRF51_MICROBIT_B_BOOT": {
-        "inherits": ["MCU_NRF51_16K_BOOT"],
-        "extra_labels_add": ["NRF51_MICROBIT"],
-        "macros_add": ["TARGET_NRF51_MICROBIT", "TARGET_NRF_LFCLK_RC"]
-    },
-    "NRF51_MICROBIT_B_OTA": {
-        "inherits": ["MCU_NRF51_16K_OTA"],
-        "extra_labels_add": ["NRF51_MICROBIT"],
-        "macros_add": ["TARGET_NRF51_MICROBIT", "TARGET_NRF_LFCLK_RC"]
-    },
-    "TY51822R3": {
-        "inherits": ["MCU_NRF51_32K"],
-        "macros_add": ["TARGET_NRF_32MHZ_XTAL"],
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
-    },
-    "TY51822R3_BOOT": {
-        "inherits": ["MCU_NRF51_32K_BOOT"],
-        "extra_labels_add": ["TY51822R3"],
-        "macros_add": ["TARGET_TY51822R3", "TARGET_NRF_32MHZ_XTAL"]
-    },
-    "TY51822R3_OTA": {
-        "inherits": ["MCU_NRF51_32K_OTA"],
-        "extra_labels_add": ["NRF51_DK"],
-        "macros_add": ["TARGET_TY51822R3", "TARGET_NRF_32MHZ_XTAL"]
-    },
-    "ARM_MPS2_Target": {
-        "inherits": ["Target"],
-        "public": false,
-        "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"]
-    },
-    "ARM_MPS2_M0": {
-        "inherits": ["ARM_MPS2_Target"],
-        "core": "Cortex-M0",
-        "supported_toolchains": ["ARM"],
-        "extra_labels": ["ARM_SSG", "MPS2", "MPS2_M0"],
-        "macros": ["CMSDK_CM0"],
-        "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"],
-        "release": true
-    },
-    "ARM_MPS2_M0P": {
-        "inherits": ["ARM_MPS2_Target"],
-        "core": "Cortex-M0+",
-        "supported_toolchains": ["ARM"],
-        "extra_labels": ["ARM_SSG", "MPS2", "MPS2_M0P"],
-        "macros": ["CMSDK_CM0plus"],
-        "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"],
-        "release": true
-    },
-    "ARM_MPS2_M1": {
-        "inherits": ["ARM_MPS2_Target"],
-        "core": "Cortex-M1",
-        "supported_toolchains": ["ARM"],
-        "extra_labels": ["ARM_SSG", "MPS2", "MPS2_M1"],
-        "macros": ["CMSDK_CM1"],
-        "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"]
-    },
-    "ARM_MPS2_M3": {
-        "inherits": ["ARM_MPS2_Target"],
-        "core": "Cortex-M3",
-        "supported_toolchains": ["ARM"],
-        "extra_labels": ["ARM_SSG", "MPS2", "MPS2_M3"],
-        "macros": ["CMSDK_CM3"],
-        "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"],
-        "release": true
-    },
-    "ARM_MPS2_M4": {
-        "inherits": ["ARM_MPS2_Target"],
-        "core": "Cortex-M4F",
-        "supported_toolchains": ["ARM"],
-        "extra_labels": ["ARM_SSG", "MPS2", "MPS2_M4"],
-        "macros": ["CMSDK_CM4"],
-        "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"],
-        "release": true
-    },
-    "ARM_MPS2_M7": {
-        "inherits": ["ARM_MPS2_Target"],
-        "core": "Cortex-M7",
-        "supported_toolchains": ["ARM"],
-        "extra_labels": ["ARM_SSG", "MPS2", "MPS2_M7"],
-        "macros": ["CMSDK_CM7"],
-        "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"],
-        "release": true
-    },
-    "ARM_IOTSS_Target": {
-        "inherits": ["Target"],
-        "public": false,
-        "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"]
-    },
-    "ARM_IOTSS_BEID": {
-        "inherits": ["ARM_IOTSS_Target"],
-        "core": "Cortex-M3",
-        "supported_toolchains": ["ARM"],
-        "extra_labels": ["ARM_SSG", "IOTSS", "IOTSS_BEID"],
-        "macros": ["CMSDK_BEID"],
-        "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"],
-        "release": true
-    },
-    "ARM_BEETLE_SOC": {
-        "inherits": ["ARM_IOTSS_Target"],
-        "core": "Cortex-M3",
-        "supported_toolchains": ["ARM", "GCC_ARM"],
-        "default_toolchain": "ARM",
-        "extra_labels": ["ARM_SSG", "BEETLE"],
-        "macros": ["CMSDK_BEETLE", "WSF_MS_PER_TICK=20", "WSF_TOKEN_ENABLED=FALSE", "WSF_TRACE_ENABLED=TRUE", "WSF_ASSERT_ENABLED=FALSE", "WSF_PRINTF_MAX_LEN=128", "ASIC", "CONFIG_HOST_REV=0x20", "CONFIG_ALLOW_DEEP_SLEEP=FALSE", "HCI_VS_TARGET", "CONFIG_ALLOW_SETTING_WRITE=TRUE", "WSF_MAX_HANDLERS=20", "NO_LEDS"],
-        "progen": {
-            "target": "beetle",
-            "uvision5": {
-                "template": ["uvision5_arm_beetle_soc.uvproj.tmpl"]
-            }
-        },
-        "device_has": ["ANALOGIN", "CLCD", "I2C", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SPI"],
-        "release": true
-    },
-    "RZ_A1H": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-A9",
-        "program_cycle_s": 2,
-        "extra_labels": ["RENESAS", "MBRZA1H"],
-        "supported_toolchains": ["ARM", "GCC_ARM", "IAR"],
-        "inherits": ["Target"],
-        "progen": {
-            "target": "gr-peach",
-            "iar": {
-                "template": ["iar_rz_a1h.ewp.tmpl"]
-            }
-        },
-        "device_has": ["ANALOGIN", "CAN", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "VK_RZ_A1H": {
-        "inherits": ["Target"],
-        "core": "Cortex-A9",
-        "extra_labels": ["RENESAS", "VKRZA1H"],
-        "supported_toolchains": ["ARM", "GCC_ARM", "IAR"],
-        "default_toolchain": "ARM",
-        "progen": {
-            "target": "vk-rza1h",
-            "iar": {
-                "template": ["iar_rz_a1h.ewp.tmpl"]
-            }
-        },
-        "program_cycle_s": 2,
-        "device_has": ["ANALOGIN", "CAN", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "default_build": "standard"
-    },
-    "MAXWSNENV": {
-        "inherits": ["Target"],
-        "core": "Cortex-M3",
-        "macros": ["__SYSTEM_HFX=24000000"],
-        "extra_labels": ["Maxim", "MAX32610"],
-        "supported_toolchains": ["GCC_ARM", "IAR", "ARM"],
-        "progen": {"target": "maxwsnenv"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "MAX32600MBED": {
-        "inherits": ["Target"],
-        "core": "Cortex-M3",
-        "macros": ["__SYSTEM_HFX=24000000"],
-        "extra_labels": ["Maxim", "MAX32600"],
-        "supported_toolchains": ["GCC_ARM", "IAR", "ARM"],
-        "progen": {"target": "max32600mbed"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "EFM32GG_STK3700": {
-        "inherits": ["Target"],
-        "core": "Cortex-M3",
-        "macros": ["EFM32GG990F1024"],
-        "extra_labels": ["Silicon_Labs", "EFM32"],
-        "supported_toolchains": ["GCC_ARM", "ARM", "uARM"],
-        "progen": {"target": "efm32gg-stk"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_PATTERN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
-        "forced_reset_timeout": 2,
-        "release": true
-    },
-    "EFM32LG_STK3600": {
-        "inherits": ["Target"],
-        "core": "Cortex-M3",
-        "macros": ["EFM32LG990F256"],
-        "extra_labels": ["Silicon_Labs", "EFM32"],
-        "supported_toolchains": ["GCC_ARM", "ARM", "uARM"],
-        "progen": {"target": "efm32lg-stk"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_PATTERN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
-        "forced_reset_timeout": 2,
-        "release": true
-    },
-    "EFM32WG_STK3800": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4F",
-        "macros": ["EFM32WG990F256"],
-        "extra_labels": ["Silicon_Labs", "EFM32"],
-        "supported_toolchains": ["GCC_ARM", "ARM", "uARM"],
-        "progen": {"target": "efm32wg-stk"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_PATTERN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
-        "forced_reset_timeout": 2,
-        "release": true
-    },
-    "EFM32ZG_STK3200": {
-        "inherits": ["Target"],
-        "core": "Cortex-M0+",
-        "default_toolchain": "uARM",
-        "supported_toolchains": ["GCC_ARM", "uARM"],
-        "extra_labels": ["Silicon_Labs", "EFM32"],
-        "macros": ["EFM32ZG222F32"],
-        "progen": {
-            "target": "efm32zg-stk"
-        },
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "forced_reset_timeout": 2,
-        "release": true
-    },
-    "EFM32HG_STK3400": {
-        "inherits": ["Target"],
-        "core": "Cortex-M0+",
-        "default_toolchain": "uARM",
-        "supported_toolchains": ["GCC_ARM", "uARM"],
-        "extra_labels": ["Silicon_Labs", "EFM32"],
-        "macros": ["EFM32HG322F64"],
-        "progen": {
-            "target": "efm32hg-stk"
-        },
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
-        "default_build": "small",
-        "forced_reset_timeout": 2,
-        "release": true
-    },
-    "EFM32PG_STK3401": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4F",
-        "macros": ["EFM32PG1B200F256GM48"],
-        "extra_labels": ["Silicon_Labs", "EFM32"],
-        "supported_toolchains": ["GCC_ARM", "ARM", "uARM", "IAR"],
-        "progen": {"target": "efm32pg-stk"},
-        "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
-        "forced_reset_timeout": 2,
-        "release": true
-    },
-    "WIZWIKI_W7500": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M0",
-        "extra_labels": ["WIZNET", "W7500x", "WIZwiki_W7500"],
-        "supported_toolchains": ["uARM", "ARM"],
-        "inherits": ["Target"],
-        "progen": {"target": "wizwiki-w7500"},
-        "device_has": ["ANALOGIN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "WIZWIKI_W7500P": {
-        "supported_form_factors": ["ARDUINO"],
-        "core": "Cortex-M0",
-        "extra_labels": ["WIZNET", "W7500x", "WIZwiki_W7500P"],
-        "supported_toolchains": ["uARM", "ARM"],
-        "inherits": ["Target"],
-        "progen": {"target": "wizwiki-w7500p"},
-        "device_has": ["ANALOGIN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "WIZWIKI_W7500ECO": {
-        "inherits": ["Target"],
-        "core": "Cortex-M0",
-        "progen": {"target": "wizwiki_w7500eco"},
-        "extra_labels": ["WIZNET", "W7500x", "WIZwiki_W7500ECO"],
-        "supported_toolchains": ["uARM", "ARM"],
-        "device_has": ["ANALOGIN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
-    },
-    "SAMR21G18A": {
-        "inherits": ["Target"],
-        "core": "Cortex-M0+",
-        "macros": ["__SAMR21G18A__", "I2C_MASTER_CALLBACK_MODE=true", "EXTINT_CALLBACK_MODE=true", "USART_CALLBACK_MODE=true", "TC_ASYNC=true"],
-        "extra_labels": ["Atmel", "SAM_CortexM0P", "SAMR21"],
-        "supported_toolchains": ["GCC_ARM", "ARM", "uARM"],
-        "progen": {"target": "samr21g18a"},
-        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH"],
-        "release": true
-    },
-    "SAMD21J18A": {
-        "inherits": ["Target"],
-        "core": "Cortex-M0+",
-        "macros": ["__SAMD21J18A__", "I2C_MASTER_CALLBACK_MODE=true", "EXTINT_CALLBACK_MODE=true", "USART_CALLBACK_MODE=true", "TC_ASYNC=true"],
-        "extra_labels": ["Atmel", "SAM_CortexM0P", "SAMD21"],
-        "supported_toolchains": ["GCC_ARM", "ARM", "uARM"],
-        "progen": {"target": "samd21j18a"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH"],
-        "release": true
-    },
-    "SAMD21G18A": {
-        "inherits": ["Target"],
-        "core": "Cortex-M0+",
-        "macros": ["__SAMD21G18A__", "I2C_MASTER_CALLBACK_MODE=true", "EXTINT_CALLBACK_MODE=true", "USART_CALLBACK_MODE=true", "TC_ASYNC=true"],
-        "extra_labels": ["Atmel", "SAM_CortexM0P", "SAMD21"],
-        "supported_toolchains": ["GCC_ARM", "ARM", "uARM"],
-        "progen": {"target": "samd21g18a"},
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH"],
-        "release": true
-    },
-    "SAML21J18A": {
-        "inherits": ["Target"],
-        "core": "Cortex-M0+",
-        "macros": ["__SAML21J18A__", "I2C_MASTER_CALLBACK_MODE=true", "EXTINT_CALLBACK_MODE=true", "USART_CALLBACK_MODE=true", "TC_ASYNC=true"],
-        "extra_labels": ["Atmel", "SAM_CortexM0P", "SAML21"],
-        "supported_toolchains": ["GCC_ARM", "ARM", "uARM"],
-        "progen": {"target": "samr21j18a"},
-        "progen_target": "samr21j18a",
-        "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH"]
-    },
-    "SAMG55J19": {
-        "inherits": ["Target"],
-        "core": "Cortex-M4",
-        "extra_labels": ["Atmel", "SAM_CortexM4", "SAMG55"],
-        "macros": ["__SAMG55J19__", "BOARD=75", "I2C_MASTER_CALLBACK_MODE=true", "EXTINT_CALLBACK_MODE=true", "USART_CALLBACK_MODE=true", "TC_ASYNC=true"],
-        "supported_toolchains": ["GCC_ARM", "ARM", "uARM"],
-        "default_toolchain": "ARM",
-        "progen": {"target": "samg55j19"},
-        "progen_target": "samg55j19",
-        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH"],
-        "default_build": "standard"
-    },
-    "BLUEPILL_F103C8": {
-        "core": "Cortex-M3",
-        "default_toolchain": "GCC_ARM",
-        "extra_labels": ["STM", "STM32F1", "STM32F103C8"],
-        "supported_toolchains": ["GCC_ARM"],
-        "inherits": ["Target"],
-        "progen": {"target": "bluepill-f103c8"},
-        "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"]
-    }
-}
-
--- a/targets/cmsis/TARGET_Freescale/TARGET_K64F/MK64F12.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12718 +0,0 @@
-/*
-** ###################################################################
-**     Processors:          MK64FN1M0VDC12
-**                          MK64FN1M0VLL12
-**                          MK64FN1M0VLQ12
-**                          MK64FN1M0VMD12
-**                          MK64FX512VDC12
-**                          MK64FX512VLL12
-**                          MK64FX512VLQ12
-**                          MK64FX512VMD12
-**
-**     Compilers:           Keil ARM C/C++ Compiler
-**                          Freescale C/C++ for Embedded ARM
-**                          GNU C Compiler
-**                          IAR ANSI C/C++ Compiler for ARM
-**
-**     Reference manual:    K64P144M120SF5RM, Rev.2, January 2014
-**     Version:             rev. 2.8, 2015-02-19
-**     Build:               b151218
-**
-**     Abstract:
-**         CMSIS Peripheral Access Layer for MK64F12
-**
-**     Copyright (c) 1997 - 2015 Freescale Semiconductor, Inc.
-**     All rights reserved.
-**
-**     Redistribution and use in source and binary forms, with or without modification,
-**     are permitted provided that the following conditions are met:
-**
-**     o Redistributions of source code must retain the above copyright notice, this list
-**       of conditions and the following disclaimer.
-**
-**     o Redistributions in binary form must reproduce the above copyright notice, this
-**       list of conditions and the following disclaimer in the documentation and/or
-**       other materials provided with the distribution.
-**
-**     o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-**       contributors may be used to endorse or promote products derived from this
-**       software without specific prior written permission.
-**
-**     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-**     ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-**     WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-**     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-**     ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-**     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-**     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-**     ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-**     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-**     SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-**     http:                 www.freescale.com
-**     mail:                 support@freescale.com
-**
-**     Revisions:
-**     - rev. 1.0 (2013-08-12)
-**         Initial version.
-**     - rev. 2.0 (2013-10-29)
-**         Register accessor macros added to the memory map.
-**         Symbols for Processor Expert memory map compatibility added to the memory map.
-**         Startup file for gcc has been updated according to CMSIS 3.2.
-**         System initialization updated.
-**         MCG - registers updated.
-**         PORTA, PORTB, PORTC, PORTE - registers for digital filter removed.
-**     - rev. 2.1 (2013-10-30)
-**         Definition of BITBAND macros updated to support peripherals with 32-bit acces disabled.
-**     - rev. 2.2 (2013-12-09)
-**         DMA - EARS register removed.
-**         AIPS0, AIPS1 - MPRA register updated.
-**     - rev. 2.3 (2014-01-24)
-**         Update according to reference manual rev. 2
-**         ENET, MCG, MCM, SIM, USB - registers updated
-**     - rev. 2.4 (2014-02-10)
-**         The declaration of clock configurations has been moved to separate header file system_MK64F12.h
-**         Update of SystemInit() and SystemCoreClockUpdate() functions.
-**     - rev. 2.5 (2014-02-10)
-**         The declaration of clock configurations has been moved to separate header file system_MK64F12.h
-**         Update of SystemInit() and SystemCoreClockUpdate() functions.
-**         Module access macro module_BASES replaced by module_BASE_PTRS.
-**     - rev. 2.6 (2014-08-28)
-**         Update of system files - default clock configuration changed.
-**         Update of startup files - possibility to override DefaultISR added.
-**     - rev. 2.7 (2014-10-14)
-**         Interrupt INT_LPTimer renamed to INT_LPTMR0, interrupt INT_Watchdog renamed to INT_WDOG_EWM.
-**     - rev. 2.8 (2015-02-19)
-**         Renamed interrupt vector LLW to LLWU.
-**
-** ###################################################################
-*/
-
-/*!
- * @file MK64F12.h
- * @version 2.8
- * @date 2015-02-19
- * @brief CMSIS Peripheral Access Layer for MK64F12
- *
- * CMSIS Peripheral Access Layer for MK64F12
- */
-
-#ifndef _MK64F12_H_
-#define _MK64F12_H_                              /**< Symbol preventing repeated inclusion */
-
-/** Memory map major version (memory maps with equal major version number are
- * compatible) */
-#define MCU_MEM_MAP_VERSION 0x0200U
-/** Memory map minor version */
-#define MCU_MEM_MAP_VERSION_MINOR 0x0008U
-
-/**
- * @brief Macro to calculate address of an aliased word in the peripheral
- *        bitband area for a peripheral register and bit (bit band region 0x40000000 to
- *        0x400FFFFF).
- * @param Reg Register to access.
- * @param Bit Bit number to access.
- * @return  Address of the aliased word in the peripheral bitband area.
- */
-#define BITBAND_REGADDR(Reg,Bit) (0x42000000u + (32u*((uint32_t)&(Reg) - (uint32_t)0x40000000u)) + (4u*((uint32_t)(Bit))))
-/**
- * @brief Macro to access a single bit of a peripheral register (bit band region
- *        0x40000000 to 0x400FFFFF) using the bit-band alias region access. Can
- *        be used for peripherals with 32bit access allowed.
- * @param Reg Register to access.
- * @param Bit Bit number to access.
- * @return Value of the targeted bit in the bit band region.
- */
-#define BITBAND_REG32(Reg,Bit) (*((uint32_t volatile*)(BITBAND_REGADDR((Reg),(Bit)))))
-#define BITBAND_REG(Reg,Bit) (BITBAND_REG32((Reg),(Bit)))
-/**
- * @brief Macro to access a single bit of a peripheral register (bit band region
- *        0x40000000 to 0x400FFFFF) using the bit-band alias region access. Can
- *        be used for peripherals with 16bit access allowed.
- * @param Reg Register to access.
- * @param Bit Bit number to access.
- * @return Value of the targeted bit in the bit band region.
- */
-#define BITBAND_REG16(Reg,Bit) (*((uint16_t volatile*)(BITBAND_REGADDR((Reg),(Bit)))))
-/**
- * @brief Macro to access a single bit of a peripheral register (bit band region
- *        0x40000000 to 0x400FFFFF) using the bit-band alias region access. Can
- *        be used for peripherals with 8bit access allowed.
- * @param Reg Register to access.
- * @param Bit Bit number to access.
- * @return Value of the targeted bit in the bit band region.
- */
-#define BITBAND_REG8(Reg,Bit) (*((uint8_t volatile*)(BITBAND_REGADDR((Reg),(Bit)))))
-
-/* ----------------------------------------------------------------------------
-   -- Interrupt vector numbers
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup Interrupt_vector_numbers Interrupt vector numbers
- * @{
- */
-
-/** Interrupt Number Definitions */
-#define NUMBER_OF_INT_VECTORS 102                /**< Number of interrupts in the Vector table */
-
-typedef enum IRQn {
-  /* Auxiliary constants */
-  NotAvail_IRQn                = -128,             /**< Not available device specific interrupt */
-
-  /* Core interrupts */
-  NonMaskableInt_IRQn          = -14,              /**< Non Maskable Interrupt */
-  HardFault_IRQn               = -13,              /**< Cortex-M4 SV Hard Fault Interrupt */
-  MemoryManagement_IRQn        = -12,              /**< Cortex-M4 Memory Management Interrupt */
-  BusFault_IRQn                = -11,              /**< Cortex-M4 Bus Fault Interrupt */
-  UsageFault_IRQn              = -10,              /**< Cortex-M4 Usage Fault Interrupt */
-  SVCall_IRQn                  = -5,               /**< Cortex-M4 SV Call Interrupt */
-  DebugMonitor_IRQn            = -4,               /**< Cortex-M4 Debug Monitor Interrupt */
-  PendSV_IRQn                  = -2,               /**< Cortex-M4 Pend SV Interrupt */
-  SysTick_IRQn                 = -1,               /**< Cortex-M4 System Tick Interrupt */
-
-  /* Device specific interrupts */
-  DMA0_IRQn                    = 0,                /**< DMA Channel 0 Transfer Complete */
-  DMA1_IRQn                    = 1,                /**< DMA Channel 1 Transfer Complete */
-  DMA2_IRQn                    = 2,                /**< DMA Channel 2 Transfer Complete */
-  DMA3_IRQn                    = 3,                /**< DMA Channel 3 Transfer Complete */
-  DMA4_IRQn                    = 4,                /**< DMA Channel 4 Transfer Complete */
-  DMA5_IRQn                    = 5,                /**< DMA Channel 5 Transfer Complete */
-  DMA6_IRQn                    = 6,                /**< DMA Channel 6 Transfer Complete */
-  DMA7_IRQn                    = 7,                /**< DMA Channel 7 Transfer Complete */
-  DMA8_IRQn                    = 8,                /**< DMA Channel 8 Transfer Complete */
-  DMA9_IRQn                    = 9,                /**< DMA Channel 9 Transfer Complete */
-  DMA10_IRQn                   = 10,               /**< DMA Channel 10 Transfer Complete */
-  DMA11_IRQn                   = 11,               /**< DMA Channel 11 Transfer Complete */
-  DMA12_IRQn                   = 12,               /**< DMA Channel 12 Transfer Complete */
-  DMA13_IRQn                   = 13,               /**< DMA Channel 13 Transfer Complete */
-  DMA14_IRQn                   = 14,               /**< DMA Channel 14 Transfer Complete */
-  DMA15_IRQn                   = 15,               /**< DMA Channel 15 Transfer Complete */
-  DMA_Error_IRQn               = 16,               /**< DMA Error Interrupt */
-  MCM_IRQn                     = 17,               /**< Normal Interrupt */
-  FTFE_IRQn                    = 18,               /**< FTFE Command complete interrupt */
-  Read_Collision_IRQn          = 19,               /**< Read Collision Interrupt */
-  LVD_LVW_IRQn                 = 20,               /**< Low Voltage Detect, Low Voltage Warning */
-  LLWU_IRQn                    = 21,               /**< Low Leakage Wakeup Unit */
-  WDOG_EWM_IRQn                = 22,               /**< WDOG Interrupt */
-  RNG_IRQn                     = 23,               /**< RNG Interrupt */
-  I2C0_IRQn                    = 24,               /**< I2C0 interrupt */
-  I2C1_IRQn                    = 25,               /**< I2C1 interrupt */
-  SPI0_IRQn                    = 26,               /**< SPI0 Interrupt */
-  SPI1_IRQn                    = 27,               /**< SPI1 Interrupt */
-  I2S0_Tx_IRQn                 = 28,               /**< I2S0 transmit interrupt */
-  I2S0_Rx_IRQn                 = 29,               /**< I2S0 receive interrupt */
-  UART0_LON_IRQn               = 30,               /**< UART0 LON interrupt */
-  UART0_RX_TX_IRQn             = 31,               /**< UART0 Receive/Transmit interrupt */
-  UART0_ERR_IRQn               = 32,               /**< UART0 Error interrupt */
-  UART1_RX_TX_IRQn             = 33,               /**< UART1 Receive/Transmit interrupt */
-  UART1_ERR_IRQn               = 34,               /**< UART1 Error interrupt */
-  UART2_RX_TX_IRQn             = 35,               /**< UART2 Receive/Transmit interrupt */
-  UART2_ERR_IRQn               = 36,               /**< UART2 Error interrupt */
-  UART3_RX_TX_IRQn             = 37,               /**< UART3 Receive/Transmit interrupt */
-  UART3_ERR_IRQn               = 38,               /**< UART3 Error interrupt */
-  ADC0_IRQn                    = 39,               /**< ADC0 interrupt */
-  CMP0_IRQn                    = 40,               /**< CMP0 interrupt */
-  CMP1_IRQn                    = 41,               /**< CMP1 interrupt */
-  FTM0_IRQn                    = 42,               /**< FTM0 fault, overflow and channels interrupt */
-  FTM1_IRQn                    = 43,               /**< FTM1 fault, overflow and channels interrupt */
-  FTM2_IRQn                    = 44,               /**< FTM2 fault, overflow and channels interrupt */
-  CMT_IRQn                     = 45,               /**< CMT interrupt */
-  RTC_IRQn                     = 46,               /**< RTC interrupt */
-  RTC_Seconds_IRQn             = 47,               /**< RTC seconds interrupt */
-  PIT0_IRQn                    = 48,               /**< PIT timer channel 0 interrupt */
-  PIT1_IRQn                    = 49,               /**< PIT timer channel 1 interrupt */
-  PIT2_IRQn                    = 50,               /**< PIT timer channel 2 interrupt */
-  PIT3_IRQn                    = 51,               /**< PIT timer channel 3 interrupt */
-  PDB0_IRQn                    = 52,               /**< PDB0 Interrupt */
-  USB0_IRQn                    = 53,               /**< USB0 interrupt */
-  USBDCD_IRQn                  = 54,               /**< USBDCD Interrupt */
-  Reserved71_IRQn              = 55,               /**< Reserved interrupt 71 */
-  DAC0_IRQn                    = 56,               /**< DAC0 interrupt */
-  MCG_IRQn                     = 57,               /**< MCG Interrupt */
-  LPTMR0_IRQn                  = 58,               /**< LPTimer interrupt */
-  PORTA_IRQn                   = 59,               /**< Port A interrupt */
-  PORTB_IRQn                   = 60,               /**< Port B interrupt */
-  PORTC_IRQn                   = 61,               /**< Port C interrupt */
-  PORTD_IRQn                   = 62,               /**< Port D interrupt */
-  PORTE_IRQn                   = 63,               /**< Port E interrupt */
-  SWI_IRQn                     = 64,               /**< Software interrupt */
-  SPI2_IRQn                    = 65,               /**< SPI2 Interrupt */
-  UART4_RX_TX_IRQn             = 66,               /**< UART4 Receive/Transmit interrupt */
-  UART4_ERR_IRQn               = 67,               /**< UART4 Error interrupt */
-  UART5_RX_TX_IRQn             = 68,               /**< UART5 Receive/Transmit interrupt */
-  UART5_ERR_IRQn               = 69,               /**< UART5 Error interrupt */
-  CMP2_IRQn                    = 70,               /**< CMP2 interrupt */
-  FTM3_IRQn                    = 71,               /**< FTM3 fault, overflow and channels interrupt */
-  DAC1_IRQn                    = 72,               /**< DAC1 interrupt */
-  ADC1_IRQn                    = 73,               /**< ADC1 interrupt */
-  I2C2_IRQn                    = 74,               /**< I2C2 interrupt */
-  CAN0_ORed_Message_buffer_IRQn = 75,              /**< CAN0 OR'd message buffers interrupt */
-  CAN0_Bus_Off_IRQn            = 76,               /**< CAN0 bus off interrupt */
-  CAN0_Error_IRQn              = 77,               /**< CAN0 error interrupt */
-  CAN0_Tx_Warning_IRQn         = 78,               /**< CAN0 Tx warning interrupt */
-  CAN0_Rx_Warning_IRQn         = 79,               /**< CAN0 Rx warning interrupt */
-  CAN0_Wake_Up_IRQn            = 80,               /**< CAN0 wake up interrupt */
-  SDHC_IRQn                    = 81,               /**< SDHC interrupt */
-  ENET_1588_Timer_IRQn         = 82,               /**< Ethernet MAC IEEE 1588 Timer Interrupt */
-  ENET_Transmit_IRQn           = 83,               /**< Ethernet MAC Transmit Interrupt */
-  ENET_Receive_IRQn            = 84,               /**< Ethernet MAC Receive Interrupt */
-  ENET_Error_IRQn              = 85                /**< Ethernet MAC Error and miscelaneous Interrupt */
-} IRQn_Type;
-
-/*!
- * @}
- */ /* end of group Interrupt_vector_numbers */
-
-
-/* ----------------------------------------------------------------------------
-   -- Cortex M4 Core Configuration
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup Cortex_Core_Configuration Cortex M4 Core Configuration
- * @{
- */
-
-#define __MPU_PRESENT                  0         /**< Defines if an MPU is present or not */
-#define __NVIC_PRIO_BITS               4         /**< Number of priority bits implemented in the NVIC */
-#define __Vendor_SysTickConfig         0         /**< Vendor specific implementation of SysTickConfig is defined */
-#define __FPU_PRESENT                  1         /**< Defines if an FPU is present or not */
-
-#include "core_cm4.h"                  /* Core Peripheral Access Layer */
-#include "system_MK64F12.h"            /* Device specific configuration file */
-
-/*!
- * @}
- */ /* end of group Cortex_Core_Configuration */
-
-
-/* ----------------------------------------------------------------------------
-   -- Mapping Information
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup Mapping_Information Mapping Information
- * @{
- */
-
-/** Mapping Information */
-/*!
- * @addtogroup edma_request
- * @{
- */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*!
- * @brief Structure for the DMA hardware request
- *
- * Defines the structure for the DMA hardware request collections. The user can configure the
- * hardware request into DMAMUX to trigger the DMA transfer accordingly. The index
- * of the hardware request varies according  to the to SoC.
- */
-typedef enum _dma_request_source
-{
-    kDmaRequestMux0Disable          = 0|0x100U,    /**< DMAMUX TriggerDisabled. */
-    kDmaRequestMux0Reserved1        = 1|0x100U,    /**< Reserved1 */
-    kDmaRequestMux0UART0Rx          = 2|0x100U,    /**< UART0 Receive. */
-    kDmaRequestMux0UART0Tx          = 3|0x100U,    /**< UART0 Transmit. */
-    kDmaRequestMux0UART1Rx          = 4|0x100U,    /**< UART1 Receive. */
-    kDmaRequestMux0UART1Tx          = 5|0x100U,    /**< UART1 Transmit. */
-    kDmaRequestMux0UART2Rx          = 6|0x100U,    /**< UART2 Receive. */
-    kDmaRequestMux0UART2Tx          = 7|0x100U,    /**< UART2 Transmit. */
-    kDmaRequestMux0UART3Rx          = 8|0x100U,    /**< UART3 Receive. */
-    kDmaRequestMux0UART3Tx          = 9|0x100U,    /**< UART3 Transmit. */
-    kDmaRequestMux0UART4            = 10|0x100U,   /**< UART4 Transmit or Receive. */
-    kDmaRequestMux0UART5            = 11|0x100U,   /**< UART5 Transmit or Receive. */
-    kDmaRequestMux0I2S0Rx           = 12|0x100U,   /**< I2S0 Receive. */
-    kDmaRequestMux0I2S0Tx           = 13|0x100U,   /**< I2S0 Transmit. */
-    kDmaRequestMux0SPI0Rx           = 14|0x100U,   /**< SPI0 Receive. */
-    kDmaRequestMux0SPI0Tx           = 15|0x100U,   /**< SPI0 Transmit. */
-    kDmaRequestMux0SPI1             = 16|0x100U,   /**< SPI1 Transmit or Receive. */
-    kDmaRequestMux0SPI2             = 17|0x100U,   /**< SPI2 Transmit or Receive. */
-    kDmaRequestMux0I2C0             = 18|0x100U,   /**< I2C0. */
-    kDmaRequestMux0I2C1I2C2         = 19|0x100U,   /**< I2C1 and I2C2. */
-    kDmaRequestMux0I2C1             = 19|0x100U,   /**< I2C1 and I2C2. */
-    kDmaRequestMux0I2C2             = 19|0x100U,   /**< I2C1 and I2C2. */
-    kDmaRequestMux0FTM0Channel0     = 20|0x100U,   /**< FTM0 C0V. */
-    kDmaRequestMux0FTM0Channel1     = 21|0x100U,   /**< FTM0 C1V. */
-    kDmaRequestMux0FTM0Channel2     = 22|0x100U,   /**< FTM0 C2V. */
-    kDmaRequestMux0FTM0Channel3     = 23|0x100U,   /**< FTM0 C3V. */
-    kDmaRequestMux0FTM0Channel4     = 24|0x100U,   /**< FTM0 C4V. */
-    kDmaRequestMux0FTM0Channel5     = 25|0x100U,   /**< FTM0 C5V. */
-    kDmaRequestMux0FTM0Channel6     = 26|0x100U,   /**< FTM0 C6V. */
-    kDmaRequestMux0FTM0Channel7     = 27|0x100U,   /**< FTM0 C7V. */
-    kDmaRequestMux0FTM1Channel0     = 28|0x100U,   /**< FTM1 C0V. */
-    kDmaRequestMux0FTM1Channel1     = 29|0x100U,   /**< FTM1 C1V. */
-    kDmaRequestMux0FTM2Channel0     = 30|0x100U,   /**< FTM2 C0V. */
-    kDmaRequestMux0FTM2Channel1     = 31|0x100U,   /**< FTM2 C1V. */
-    kDmaRequestMux0FTM3Channel0     = 32|0x100U,   /**< FTM3 C0V. */
-    kDmaRequestMux0FTM3Channel1     = 33|0x100U,   /**< FTM3 C1V. */
-    kDmaRequestMux0FTM3Channel2     = 34|0x100U,   /**< FTM3 C2V. */
-    kDmaRequestMux0FTM3Channel3     = 35|0x100U,   /**< FTM3 C3V. */
-    kDmaRequestMux0FTM3Channel4     = 36|0x100U,   /**< FTM3 C4V. */
-    kDmaRequestMux0FTM3Channel5     = 37|0x100U,   /**< FTM3 C5V. */
-    kDmaRequestMux0FTM3Channel6     = 38|0x100U,   /**< FTM3 C6V. */
-    kDmaRequestMux0FTM3Channel7     = 39|0x100U,   /**< FTM3 C7V. */
-    kDmaRequestMux0ADC0             = 40|0x100U,   /**< ADC0. */
-    kDmaRequestMux0ADC1             = 41|0x100U,   /**< ADC1. */
-    kDmaRequestMux0CMP0             = 42|0x100U,   /**< CMP0. */
-    kDmaRequestMux0CMP1             = 43|0x100U,   /**< CMP1. */
-    kDmaRequestMux0CMP2             = 44|0x100U,   /**< CMP2. */
-    kDmaRequestMux0DAC0             = 45|0x100U,   /**< DAC0. */
-    kDmaRequestMux0DAC1             = 46|0x100U,   /**< DAC1. */
-    kDmaRequestMux0CMT              = 47|0x100U,   /**< CMT. */
-    kDmaRequestMux0PDB              = 48|0x100U,   /**< PDB0. */
-    kDmaRequestMux0PortA            = 49|0x100U,   /**< PTA. */
-    kDmaRequestMux0PortB            = 50|0x100U,   /**< PTB. */
-    kDmaRequestMux0PortC            = 51|0x100U,   /**< PTC. */
-    kDmaRequestMux0PortD            = 52|0x100U,   /**< PTD. */
-    kDmaRequestMux0PortE            = 53|0x100U,   /**< PTE. */
-    kDmaRequestMux0IEEE1588Timer0   = 54|0x100U,   /**< ENET IEEE 1588 timer 0. */
-    kDmaRequestMux0IEEE1588Timer1   = 55|0x100U,   /**< ENET IEEE 1588 timer 1. */
-    kDmaRequestMux0IEEE1588Timer2   = 56|0x100U,   /**< ENET IEEE 1588 timer 2. */
-    kDmaRequestMux0IEEE1588Timer3   = 57|0x100U,   /**< ENET IEEE 1588 timer 3. */
-    kDmaRequestMux0AlwaysOn58       = 58|0x100U,   /**< DMAMUX Always Enabled slot. */
-    kDmaRequestMux0AlwaysOn59       = 59|0x100U,   /**< DMAMUX Always Enabled slot. */
-    kDmaRequestMux0AlwaysOn60       = 60|0x100U,   /**< DMAMUX Always Enabled slot. */
-    kDmaRequestMux0AlwaysOn61       = 61|0x100U,   /**< DMAMUX Always Enabled slot. */
-    kDmaRequestMux0AlwaysOn62       = 62|0x100U,   /**< DMAMUX Always Enabled slot. */
-    kDmaRequestMux0AlwaysOn63       = 63|0x100U,   /**< DMAMUX Always Enabled slot. */
-} dma_request_source_t;
-
-/* @} */
-
-
-/*!
- * @}
- */ /* end of group Mapping_Information */
-
-
-/* ----------------------------------------------------------------------------
-   -- Device Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup Peripheral_access_layer Device Peripheral Access Layer
- * @{
- */
-
-
-/*
-** Start of section using anonymous unions
-*/
-
-#if defined(__ARMCC_VERSION)
-  #pragma push
-  #pragma anon_unions
-#elif defined(__CWCC__)
-  #pragma push
-  #pragma cpp_extensions on
-#elif defined(__GNUC__)
-  /* anonymous unions are enabled by default */
-#elif defined(__IAR_SYSTEMS_ICC__)
-  #pragma language=extended
-#else
-  #error Not supported compiler type
-#endif
-
-/* ----------------------------------------------------------------------------
-   -- ADC Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup ADC_Peripheral_Access_Layer ADC Peripheral Access Layer
- * @{
- */
-
-/** ADC - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t SC1[2];                            /**< ADC Status and Control Registers 1, array offset: 0x0, array step: 0x4 */
-  __IO uint32_t CFG1;                              /**< ADC Configuration Register 1, offset: 0x8 */
-  __IO uint32_t CFG2;                              /**< ADC Configuration Register 2, offset: 0xC */
-  __I  uint32_t R[2];                              /**< ADC Data Result Register, array offset: 0x10, array step: 0x4 */
-  __IO uint32_t CV1;                               /**< Compare Value Registers, offset: 0x18 */
-  __IO uint32_t CV2;                               /**< Compare Value Registers, offset: 0x1C */
-  __IO uint32_t SC2;                               /**< Status and Control Register 2, offset: 0x20 */
-  __IO uint32_t SC3;                               /**< Status and Control Register 3, offset: 0x24 */
-  __IO uint32_t OFS;                               /**< ADC Offset Correction Register, offset: 0x28 */
-  __IO uint32_t PG;                                /**< ADC Plus-Side Gain Register, offset: 0x2C */
-  __IO uint32_t MG;                                /**< ADC Minus-Side Gain Register, offset: 0x30 */
-  __IO uint32_t CLPD;                              /**< ADC Plus-Side General Calibration Value Register, offset: 0x34 */
-  __IO uint32_t CLPS;                              /**< ADC Plus-Side General Calibration Value Register, offset: 0x38 */
-  __IO uint32_t CLP4;                              /**< ADC Plus-Side General Calibration Value Register, offset: 0x3C */
-  __IO uint32_t CLP3;                              /**< ADC Plus-Side General Calibration Value Register, offset: 0x40 */
-  __IO uint32_t CLP2;                              /**< ADC Plus-Side General Calibration Value Register, offset: 0x44 */
-  __IO uint32_t CLP1;                              /**< ADC Plus-Side General Calibration Value Register, offset: 0x48 */
-  __IO uint32_t CLP0;                              /**< ADC Plus-Side General Calibration Value Register, offset: 0x4C */
-       uint8_t RESERVED_0[4];
-  __IO uint32_t CLMD;                              /**< ADC Minus-Side General Calibration Value Register, offset: 0x54 */
-  __IO uint32_t CLMS;                              /**< ADC Minus-Side General Calibration Value Register, offset: 0x58 */
-  __IO uint32_t CLM4;                              /**< ADC Minus-Side General Calibration Value Register, offset: 0x5C */
-  __IO uint32_t CLM3;                              /**< ADC Minus-Side General Calibration Value Register, offset: 0x60 */
-  __IO uint32_t CLM2;                              /**< ADC Minus-Side General Calibration Value Register, offset: 0x64 */
-  __IO uint32_t CLM1;                              /**< ADC Minus-Side General Calibration Value Register, offset: 0x68 */
-  __IO uint32_t CLM0;                              /**< ADC Minus-Side General Calibration Value Register, offset: 0x6C */
-} ADC_Type;
-
-/* ----------------------------------------------------------------------------
-   -- ADC Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup ADC_Register_Masks ADC Register Masks
- * @{
- */
-
-/*! @name SC1 - ADC Status and Control Registers 1 */
-#define ADC_SC1_ADCH_MASK                        (0x1FU)
-#define ADC_SC1_ADCH_SHIFT                       (0U)
-#define ADC_SC1_ADCH(x)                          (((uint32_t)(((uint32_t)(x)) << ADC_SC1_ADCH_SHIFT)) & ADC_SC1_ADCH_MASK)
-#define ADC_SC1_DIFF_MASK                        (0x20U)
-#define ADC_SC1_DIFF_SHIFT                       (5U)
-#define ADC_SC1_DIFF(x)                          (((uint32_t)(((uint32_t)(x)) << ADC_SC1_DIFF_SHIFT)) & ADC_SC1_DIFF_MASK)
-#define ADC_SC1_AIEN_MASK                        (0x40U)
-#define ADC_SC1_AIEN_SHIFT                       (6U)
-#define ADC_SC1_AIEN(x)                          (((uint32_t)(((uint32_t)(x)) << ADC_SC1_AIEN_SHIFT)) & ADC_SC1_AIEN_MASK)
-#define ADC_SC1_COCO_MASK                        (0x80U)
-#define ADC_SC1_COCO_SHIFT                       (7U)
-#define ADC_SC1_COCO(x)                          (((uint32_t)(((uint32_t)(x)) << ADC_SC1_COCO_SHIFT)) & ADC_SC1_COCO_MASK)
-
-/* The count of ADC_SC1 */
-#define ADC_SC1_COUNT                            (2U)
-
-/*! @name CFG1 - ADC Configuration Register 1 */
-#define ADC_CFG1_ADICLK_MASK                     (0x3U)
-#define ADC_CFG1_ADICLK_SHIFT                    (0U)
-#define ADC_CFG1_ADICLK(x)                       (((uint32_t)(((uint32_t)(x)) << ADC_CFG1_ADICLK_SHIFT)) & ADC_CFG1_ADICLK_MASK)
-#define ADC_CFG1_MODE_MASK                       (0xCU)
-#define ADC_CFG1_MODE_SHIFT                      (2U)
-#define ADC_CFG1_MODE(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_CFG1_MODE_SHIFT)) & ADC_CFG1_MODE_MASK)
-#define ADC_CFG1_ADLSMP_MASK                     (0x10U)
-#define ADC_CFG1_ADLSMP_SHIFT                    (4U)
-#define ADC_CFG1_ADLSMP(x)                       (((uint32_t)(((uint32_t)(x)) << ADC_CFG1_ADLSMP_SHIFT)) & ADC_CFG1_ADLSMP_MASK)
-#define ADC_CFG1_ADIV_MASK                       (0x60U)
-#define ADC_CFG1_ADIV_SHIFT                      (5U)
-#define ADC_CFG1_ADIV(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_CFG1_ADIV_SHIFT)) & ADC_CFG1_ADIV_MASK)
-#define ADC_CFG1_ADLPC_MASK                      (0x80U)
-#define ADC_CFG1_ADLPC_SHIFT                     (7U)
-#define ADC_CFG1_ADLPC(x)                        (((uint32_t)(((uint32_t)(x)) << ADC_CFG1_ADLPC_SHIFT)) & ADC_CFG1_ADLPC_MASK)
-
-/*! @name CFG2 - ADC Configuration Register 2 */
-#define ADC_CFG2_ADLSTS_MASK                     (0x3U)
-#define ADC_CFG2_ADLSTS_SHIFT                    (0U)
-#define ADC_CFG2_ADLSTS(x)                       (((uint32_t)(((uint32_t)(x)) << ADC_CFG2_ADLSTS_SHIFT)) & ADC_CFG2_ADLSTS_MASK)
-#define ADC_CFG2_ADHSC_MASK                      (0x4U)
-#define ADC_CFG2_ADHSC_SHIFT                     (2U)
-#define ADC_CFG2_ADHSC(x)                        (((uint32_t)(((uint32_t)(x)) << ADC_CFG2_ADHSC_SHIFT)) & ADC_CFG2_ADHSC_MASK)
-#define ADC_CFG2_ADACKEN_MASK                    (0x8U)
-#define ADC_CFG2_ADACKEN_SHIFT                   (3U)
-#define ADC_CFG2_ADACKEN(x)                      (((uint32_t)(((uint32_t)(x)) << ADC_CFG2_ADACKEN_SHIFT)) & ADC_CFG2_ADACKEN_MASK)
-#define ADC_CFG2_MUXSEL_MASK                     (0x10U)
-#define ADC_CFG2_MUXSEL_SHIFT                    (4U)
-#define ADC_CFG2_MUXSEL(x)                       (((uint32_t)(((uint32_t)(x)) << ADC_CFG2_MUXSEL_SHIFT)) & ADC_CFG2_MUXSEL_MASK)
-
-/*! @name R - ADC Data Result Register */
-#define ADC_R_D_MASK                             (0xFFFFU)
-#define ADC_R_D_SHIFT                            (0U)
-#define ADC_R_D(x)                               (((uint32_t)(((uint32_t)(x)) << ADC_R_D_SHIFT)) & ADC_R_D_MASK)
-
-/* The count of ADC_R */
-#define ADC_R_COUNT                              (2U)
-
-/*! @name CV1 - Compare Value Registers */
-#define ADC_CV1_CV_MASK                          (0xFFFFU)
-#define ADC_CV1_CV_SHIFT                         (0U)
-#define ADC_CV1_CV(x)                            (((uint32_t)(((uint32_t)(x)) << ADC_CV1_CV_SHIFT)) & ADC_CV1_CV_MASK)
-
-/*! @name CV2 - Compare Value Registers */
-#define ADC_CV2_CV_MASK                          (0xFFFFU)
-#define ADC_CV2_CV_SHIFT                         (0U)
-#define ADC_CV2_CV(x)                            (((uint32_t)(((uint32_t)(x)) << ADC_CV2_CV_SHIFT)) & ADC_CV2_CV_MASK)
-
-/*! @name SC2 - Status and Control Register 2 */
-#define ADC_SC2_REFSEL_MASK                      (0x3U)
-#define ADC_SC2_REFSEL_SHIFT                     (0U)
-#define ADC_SC2_REFSEL(x)                        (((uint32_t)(((uint32_t)(x)) << ADC_SC2_REFSEL_SHIFT)) & ADC_SC2_REFSEL_MASK)
-#define ADC_SC2_DMAEN_MASK                       (0x4U)
-#define ADC_SC2_DMAEN_SHIFT                      (2U)
-#define ADC_SC2_DMAEN(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_SC2_DMAEN_SHIFT)) & ADC_SC2_DMAEN_MASK)
-#define ADC_SC2_ACREN_MASK                       (0x8U)
-#define ADC_SC2_ACREN_SHIFT                      (3U)
-#define ADC_SC2_ACREN(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_SC2_ACREN_SHIFT)) & ADC_SC2_ACREN_MASK)
-#define ADC_SC2_ACFGT_MASK                       (0x10U)
-#define ADC_SC2_ACFGT_SHIFT                      (4U)
-#define ADC_SC2_ACFGT(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_SC2_ACFGT_SHIFT)) & ADC_SC2_ACFGT_MASK)
-#define ADC_SC2_ACFE_MASK                        (0x20U)
-#define ADC_SC2_ACFE_SHIFT                       (5U)
-#define ADC_SC2_ACFE(x)                          (((uint32_t)(((uint32_t)(x)) << ADC_SC2_ACFE_SHIFT)) & ADC_SC2_ACFE_MASK)
-#define ADC_SC2_ADTRG_MASK                       (0x40U)
-#define ADC_SC2_ADTRG_SHIFT                      (6U)
-#define ADC_SC2_ADTRG(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_SC2_ADTRG_SHIFT)) & ADC_SC2_ADTRG_MASK)
-#define ADC_SC2_ADACT_MASK                       (0x80U)
-#define ADC_SC2_ADACT_SHIFT                      (7U)
-#define ADC_SC2_ADACT(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_SC2_ADACT_SHIFT)) & ADC_SC2_ADACT_MASK)
-
-/*! @name SC3 - Status and Control Register 3 */
-#define ADC_SC3_AVGS_MASK                        (0x3U)
-#define ADC_SC3_AVGS_SHIFT                       (0U)
-#define ADC_SC3_AVGS(x)                          (((uint32_t)(((uint32_t)(x)) << ADC_SC3_AVGS_SHIFT)) & ADC_SC3_AVGS_MASK)
-#define ADC_SC3_AVGE_MASK                        (0x4U)
-#define ADC_SC3_AVGE_SHIFT                       (2U)
-#define ADC_SC3_AVGE(x)                          (((uint32_t)(((uint32_t)(x)) << ADC_SC3_AVGE_SHIFT)) & ADC_SC3_AVGE_MASK)
-#define ADC_SC3_ADCO_MASK                        (0x8U)
-#define ADC_SC3_ADCO_SHIFT                       (3U)
-#define ADC_SC3_ADCO(x)                          (((uint32_t)(((uint32_t)(x)) << ADC_SC3_ADCO_SHIFT)) & ADC_SC3_ADCO_MASK)
-#define ADC_SC3_CALF_MASK                        (0x40U)
-#define ADC_SC3_CALF_SHIFT                       (6U)
-#define ADC_SC3_CALF(x)                          (((uint32_t)(((uint32_t)(x)) << ADC_SC3_CALF_SHIFT)) & ADC_SC3_CALF_MASK)
-#define ADC_SC3_CAL_MASK                         (0x80U)
-#define ADC_SC3_CAL_SHIFT                        (7U)
-#define ADC_SC3_CAL(x)                           (((uint32_t)(((uint32_t)(x)) << ADC_SC3_CAL_SHIFT)) & ADC_SC3_CAL_MASK)
-
-/*! @name OFS - ADC Offset Correction Register */
-#define ADC_OFS_OFS_MASK                         (0xFFFFU)
-#define ADC_OFS_OFS_SHIFT                        (0U)
-#define ADC_OFS_OFS(x)                           (((uint32_t)(((uint32_t)(x)) << ADC_OFS_OFS_SHIFT)) & ADC_OFS_OFS_MASK)
-
-/*! @name PG - ADC Plus-Side Gain Register */
-#define ADC_PG_PG_MASK                           (0xFFFFU)
-#define ADC_PG_PG_SHIFT                          (0U)
-#define ADC_PG_PG(x)                             (((uint32_t)(((uint32_t)(x)) << ADC_PG_PG_SHIFT)) & ADC_PG_PG_MASK)
-
-/*! @name MG - ADC Minus-Side Gain Register */
-#define ADC_MG_MG_MASK                           (0xFFFFU)
-#define ADC_MG_MG_SHIFT                          (0U)
-#define ADC_MG_MG(x)                             (((uint32_t)(((uint32_t)(x)) << ADC_MG_MG_SHIFT)) & ADC_MG_MG_MASK)
-
-/*! @name CLPD - ADC Plus-Side General Calibration Value Register */
-#define ADC_CLPD_CLPD_MASK                       (0x3FU)
-#define ADC_CLPD_CLPD_SHIFT                      (0U)
-#define ADC_CLPD_CLPD(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_CLPD_CLPD_SHIFT)) & ADC_CLPD_CLPD_MASK)
-
-/*! @name CLPS - ADC Plus-Side General Calibration Value Register */
-#define ADC_CLPS_CLPS_MASK                       (0x3FU)
-#define ADC_CLPS_CLPS_SHIFT                      (0U)
-#define ADC_CLPS_CLPS(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_CLPS_CLPS_SHIFT)) & ADC_CLPS_CLPS_MASK)
-
-/*! @name CLP4 - ADC Plus-Side General Calibration Value Register */
-#define ADC_CLP4_CLP4_MASK                       (0x3FFU)
-#define ADC_CLP4_CLP4_SHIFT                      (0U)
-#define ADC_CLP4_CLP4(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_CLP4_CLP4_SHIFT)) & ADC_CLP4_CLP4_MASK)
-
-/*! @name CLP3 - ADC Plus-Side General Calibration Value Register */
-#define ADC_CLP3_CLP3_MASK                       (0x1FFU)
-#define ADC_CLP3_CLP3_SHIFT                      (0U)
-#define ADC_CLP3_CLP3(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_CLP3_CLP3_SHIFT)) & ADC_CLP3_CLP3_MASK)
-
-/*! @name CLP2 - ADC Plus-Side General Calibration Value Register */
-#define ADC_CLP2_CLP2_MASK                       (0xFFU)
-#define ADC_CLP2_CLP2_SHIFT                      (0U)
-#define ADC_CLP2_CLP2(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_CLP2_CLP2_SHIFT)) & ADC_CLP2_CLP2_MASK)
-
-/*! @name CLP1 - ADC Plus-Side General Calibration Value Register */
-#define ADC_CLP1_CLP1_MASK                       (0x7FU)
-#define ADC_CLP1_CLP1_SHIFT                      (0U)
-#define ADC_CLP1_CLP1(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_CLP1_CLP1_SHIFT)) & ADC_CLP1_CLP1_MASK)
-
-/*! @name CLP0 - ADC Plus-Side General Calibration Value Register */
-#define ADC_CLP0_CLP0_MASK                       (0x3FU)
-#define ADC_CLP0_CLP0_SHIFT                      (0U)
-#define ADC_CLP0_CLP0(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_CLP0_CLP0_SHIFT)) & ADC_CLP0_CLP0_MASK)
-
-/*! @name CLMD - ADC Minus-Side General Calibration Value Register */
-#define ADC_CLMD_CLMD_MASK                       (0x3FU)
-#define ADC_CLMD_CLMD_SHIFT                      (0U)
-#define ADC_CLMD_CLMD(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_CLMD_CLMD_SHIFT)) & ADC_CLMD_CLMD_MASK)
-
-/*! @name CLMS - ADC Minus-Side General Calibration Value Register */
-#define ADC_CLMS_CLMS_MASK                       (0x3FU)
-#define ADC_CLMS_CLMS_SHIFT                      (0U)
-#define ADC_CLMS_CLMS(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_CLMS_CLMS_SHIFT)) & ADC_CLMS_CLMS_MASK)
-
-/*! @name CLM4 - ADC Minus-Side General Calibration Value Register */
-#define ADC_CLM4_CLM4_MASK                       (0x3FFU)
-#define ADC_CLM4_CLM4_SHIFT                      (0U)
-#define ADC_CLM4_CLM4(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_CLM4_CLM4_SHIFT)) & ADC_CLM4_CLM4_MASK)
-
-/*! @name CLM3 - ADC Minus-Side General Calibration Value Register */
-#define ADC_CLM3_CLM3_MASK                       (0x1FFU)
-#define ADC_CLM3_CLM3_SHIFT                      (0U)
-#define ADC_CLM3_CLM3(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_CLM3_CLM3_SHIFT)) & ADC_CLM3_CLM3_MASK)
-
-/*! @name CLM2 - ADC Minus-Side General Calibration Value Register */
-#define ADC_CLM2_CLM2_MASK                       (0xFFU)
-#define ADC_CLM2_CLM2_SHIFT                      (0U)
-#define ADC_CLM2_CLM2(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_CLM2_CLM2_SHIFT)) & ADC_CLM2_CLM2_MASK)
-
-/*! @name CLM1 - ADC Minus-Side General Calibration Value Register */
-#define ADC_CLM1_CLM1_MASK                       (0x7FU)
-#define ADC_CLM1_CLM1_SHIFT                      (0U)
-#define ADC_CLM1_CLM1(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_CLM1_CLM1_SHIFT)) & ADC_CLM1_CLM1_MASK)
-
-/*! @name CLM0 - ADC Minus-Side General Calibration Value Register */
-#define ADC_CLM0_CLM0_MASK                       (0x3FU)
-#define ADC_CLM0_CLM0_SHIFT                      (0U)
-#define ADC_CLM0_CLM0(x)                         (((uint32_t)(((uint32_t)(x)) << ADC_CLM0_CLM0_SHIFT)) & ADC_CLM0_CLM0_MASK)
-
-
-/*!
- * @}
- */ /* end of group ADC_Register_Masks */
-
-
-/* ADC - Peripheral instance base addresses */
-/** Peripheral ADC0 base address */
-#define ADC0_BASE                                (0x4003B000u)
-/** Peripheral ADC0 base pointer */
-#define ADC0                                     ((ADC_Type *)ADC0_BASE)
-/** Peripheral ADC1 base address */
-#define ADC1_BASE                                (0x400BB000u)
-/** Peripheral ADC1 base pointer */
-#define ADC1                                     ((ADC_Type *)ADC1_BASE)
-/** Array initializer of ADC peripheral base addresses */
-#define ADC_BASE_ADDRS                           { ADC0_BASE, ADC1_BASE }
-/** Array initializer of ADC peripheral base pointers */
-#define ADC_BASE_PTRS                            { ADC0, ADC1 }
-/** Interrupt vectors for the ADC peripheral type */
-#define ADC_IRQS                                 { ADC0_IRQn, ADC1_IRQn }
-
-/*!
- * @}
- */ /* end of group ADC_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- AIPS Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup AIPS_Peripheral_Access_Layer AIPS Peripheral Access Layer
- * @{
- */
-
-/** AIPS - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t MPRA;                              /**< Master Privilege Register A, offset: 0x0 */
-       uint8_t RESERVED_0[28];
-  __IO uint32_t PACRA;                             /**< Peripheral Access Control Register, offset: 0x20 */
-  __IO uint32_t PACRB;                             /**< Peripheral Access Control Register, offset: 0x24 */
-  __IO uint32_t PACRC;                             /**< Peripheral Access Control Register, offset: 0x28 */
-  __IO uint32_t PACRD;                             /**< Peripheral Access Control Register, offset: 0x2C */
-       uint8_t RESERVED_1[16];
-  __IO uint32_t PACRE;                             /**< Peripheral Access Control Register, offset: 0x40 */
-  __IO uint32_t PACRF;                             /**< Peripheral Access Control Register, offset: 0x44 */
-  __IO uint32_t PACRG;                             /**< Peripheral Access Control Register, offset: 0x48 */
-  __IO uint32_t PACRH;                             /**< Peripheral Access Control Register, offset: 0x4C */
-  __IO uint32_t PACRI;                             /**< Peripheral Access Control Register, offset: 0x50 */
-  __IO uint32_t PACRJ;                             /**< Peripheral Access Control Register, offset: 0x54 */
-  __IO uint32_t PACRK;                             /**< Peripheral Access Control Register, offset: 0x58 */
-  __IO uint32_t PACRL;                             /**< Peripheral Access Control Register, offset: 0x5C */
-  __IO uint32_t PACRM;                             /**< Peripheral Access Control Register, offset: 0x60 */
-  __IO uint32_t PACRN;                             /**< Peripheral Access Control Register, offset: 0x64 */
-  __IO uint32_t PACRO;                             /**< Peripheral Access Control Register, offset: 0x68 */
-  __IO uint32_t PACRP;                             /**< Peripheral Access Control Register, offset: 0x6C */
-       uint8_t RESERVED_2[16];
-  __IO uint32_t PACRU;                             /**< Peripheral Access Control Register, offset: 0x80 */
-} AIPS_Type;
-
-/* ----------------------------------------------------------------------------
-   -- AIPS Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup AIPS_Register_Masks AIPS Register Masks
- * @{
- */
-
-/*! @name MPRA - Master Privilege Register A */
-#define AIPS_MPRA_MPL5_MASK                      (0x100U)
-#define AIPS_MPRA_MPL5_SHIFT                     (8U)
-#define AIPS_MPRA_MPL5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_MPRA_MPL5_SHIFT)) & AIPS_MPRA_MPL5_MASK)
-#define AIPS_MPRA_MTW5_MASK                      (0x200U)
-#define AIPS_MPRA_MTW5_SHIFT                     (9U)
-#define AIPS_MPRA_MTW5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_MPRA_MTW5_SHIFT)) & AIPS_MPRA_MTW5_MASK)
-#define AIPS_MPRA_MTR5_MASK                      (0x400U)
-#define AIPS_MPRA_MTR5_SHIFT                     (10U)
-#define AIPS_MPRA_MTR5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_MPRA_MTR5_SHIFT)) & AIPS_MPRA_MTR5_MASK)
-#define AIPS_MPRA_MPL4_MASK                      (0x1000U)
-#define AIPS_MPRA_MPL4_SHIFT                     (12U)
-#define AIPS_MPRA_MPL4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_MPRA_MPL4_SHIFT)) & AIPS_MPRA_MPL4_MASK)
-#define AIPS_MPRA_MTW4_MASK                      (0x2000U)
-#define AIPS_MPRA_MTW4_SHIFT                     (13U)
-#define AIPS_MPRA_MTW4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_MPRA_MTW4_SHIFT)) & AIPS_MPRA_MTW4_MASK)
-#define AIPS_MPRA_MTR4_MASK                      (0x4000U)
-#define AIPS_MPRA_MTR4_SHIFT                     (14U)
-#define AIPS_MPRA_MTR4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_MPRA_MTR4_SHIFT)) & AIPS_MPRA_MTR4_MASK)
-#define AIPS_MPRA_MPL3_MASK                      (0x10000U)
-#define AIPS_MPRA_MPL3_SHIFT                     (16U)
-#define AIPS_MPRA_MPL3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_MPRA_MPL3_SHIFT)) & AIPS_MPRA_MPL3_MASK)
-#define AIPS_MPRA_MTW3_MASK                      (0x20000U)
-#define AIPS_MPRA_MTW3_SHIFT                     (17U)
-#define AIPS_MPRA_MTW3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_MPRA_MTW3_SHIFT)) & AIPS_MPRA_MTW3_MASK)
-#define AIPS_MPRA_MTR3_MASK                      (0x40000U)
-#define AIPS_MPRA_MTR3_SHIFT                     (18U)
-#define AIPS_MPRA_MTR3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_MPRA_MTR3_SHIFT)) & AIPS_MPRA_MTR3_MASK)
-#define AIPS_MPRA_MPL2_MASK                      (0x100000U)
-#define AIPS_MPRA_MPL2_SHIFT                     (20U)
-#define AIPS_MPRA_MPL2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_MPRA_MPL2_SHIFT)) & AIPS_MPRA_MPL2_MASK)
-#define AIPS_MPRA_MTW2_MASK                      (0x200000U)
-#define AIPS_MPRA_MTW2_SHIFT                     (21U)
-#define AIPS_MPRA_MTW2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_MPRA_MTW2_SHIFT)) & AIPS_MPRA_MTW2_MASK)
-#define AIPS_MPRA_MTR2_MASK                      (0x400000U)
-#define AIPS_MPRA_MTR2_SHIFT                     (22U)
-#define AIPS_MPRA_MTR2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_MPRA_MTR2_SHIFT)) & AIPS_MPRA_MTR2_MASK)
-#define AIPS_MPRA_MPL1_MASK                      (0x1000000U)
-#define AIPS_MPRA_MPL1_SHIFT                     (24U)
-#define AIPS_MPRA_MPL1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_MPRA_MPL1_SHIFT)) & AIPS_MPRA_MPL1_MASK)
-#define AIPS_MPRA_MTW1_MASK                      (0x2000000U)
-#define AIPS_MPRA_MTW1_SHIFT                     (25U)
-#define AIPS_MPRA_MTW1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_MPRA_MTW1_SHIFT)) & AIPS_MPRA_MTW1_MASK)
-#define AIPS_MPRA_MTR1_MASK                      (0x4000000U)
-#define AIPS_MPRA_MTR1_SHIFT                     (26U)
-#define AIPS_MPRA_MTR1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_MPRA_MTR1_SHIFT)) & AIPS_MPRA_MTR1_MASK)
-#define AIPS_MPRA_MPL0_MASK                      (0x10000000U)
-#define AIPS_MPRA_MPL0_SHIFT                     (28U)
-#define AIPS_MPRA_MPL0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_MPRA_MPL0_SHIFT)) & AIPS_MPRA_MPL0_MASK)
-#define AIPS_MPRA_MTW0_MASK                      (0x20000000U)
-#define AIPS_MPRA_MTW0_SHIFT                     (29U)
-#define AIPS_MPRA_MTW0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_MPRA_MTW0_SHIFT)) & AIPS_MPRA_MTW0_MASK)
-#define AIPS_MPRA_MTR0_MASK                      (0x40000000U)
-#define AIPS_MPRA_MTR0_SHIFT                     (30U)
-#define AIPS_MPRA_MTR0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_MPRA_MTR0_SHIFT)) & AIPS_MPRA_MTR0_MASK)
-
-/*! @name PACRA - Peripheral Access Control Register */
-#define AIPS_PACRA_TP7_MASK                      (0x1U)
-#define AIPS_PACRA_TP7_SHIFT                     (0U)
-#define AIPS_PACRA_TP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_TP7_SHIFT)) & AIPS_PACRA_TP7_MASK)
-#define AIPS_PACRA_WP7_MASK                      (0x2U)
-#define AIPS_PACRA_WP7_SHIFT                     (1U)
-#define AIPS_PACRA_WP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_WP7_SHIFT)) & AIPS_PACRA_WP7_MASK)
-#define AIPS_PACRA_SP7_MASK                      (0x4U)
-#define AIPS_PACRA_SP7_SHIFT                     (2U)
-#define AIPS_PACRA_SP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_SP7_SHIFT)) & AIPS_PACRA_SP7_MASK)
-#define AIPS_PACRA_TP6_MASK                      (0x10U)
-#define AIPS_PACRA_TP6_SHIFT                     (4U)
-#define AIPS_PACRA_TP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_TP6_SHIFT)) & AIPS_PACRA_TP6_MASK)
-#define AIPS_PACRA_WP6_MASK                      (0x20U)
-#define AIPS_PACRA_WP6_SHIFT                     (5U)
-#define AIPS_PACRA_WP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_WP6_SHIFT)) & AIPS_PACRA_WP6_MASK)
-#define AIPS_PACRA_SP6_MASK                      (0x40U)
-#define AIPS_PACRA_SP6_SHIFT                     (6U)
-#define AIPS_PACRA_SP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_SP6_SHIFT)) & AIPS_PACRA_SP6_MASK)
-#define AIPS_PACRA_TP5_MASK                      (0x100U)
-#define AIPS_PACRA_TP5_SHIFT                     (8U)
-#define AIPS_PACRA_TP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_TP5_SHIFT)) & AIPS_PACRA_TP5_MASK)
-#define AIPS_PACRA_WP5_MASK                      (0x200U)
-#define AIPS_PACRA_WP5_SHIFT                     (9U)
-#define AIPS_PACRA_WP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_WP5_SHIFT)) & AIPS_PACRA_WP5_MASK)
-#define AIPS_PACRA_SP5_MASK                      (0x400U)
-#define AIPS_PACRA_SP5_SHIFT                     (10U)
-#define AIPS_PACRA_SP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_SP5_SHIFT)) & AIPS_PACRA_SP5_MASK)
-#define AIPS_PACRA_TP4_MASK                      (0x1000U)
-#define AIPS_PACRA_TP4_SHIFT                     (12U)
-#define AIPS_PACRA_TP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_TP4_SHIFT)) & AIPS_PACRA_TP4_MASK)
-#define AIPS_PACRA_WP4_MASK                      (0x2000U)
-#define AIPS_PACRA_WP4_SHIFT                     (13U)
-#define AIPS_PACRA_WP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_WP4_SHIFT)) & AIPS_PACRA_WP4_MASK)
-#define AIPS_PACRA_SP4_MASK                      (0x4000U)
-#define AIPS_PACRA_SP4_SHIFT                     (14U)
-#define AIPS_PACRA_SP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_SP4_SHIFT)) & AIPS_PACRA_SP4_MASK)
-#define AIPS_PACRA_TP3_MASK                      (0x10000U)
-#define AIPS_PACRA_TP3_SHIFT                     (16U)
-#define AIPS_PACRA_TP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_TP3_SHIFT)) & AIPS_PACRA_TP3_MASK)
-#define AIPS_PACRA_WP3_MASK                      (0x20000U)
-#define AIPS_PACRA_WP3_SHIFT                     (17U)
-#define AIPS_PACRA_WP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_WP3_SHIFT)) & AIPS_PACRA_WP3_MASK)
-#define AIPS_PACRA_SP3_MASK                      (0x40000U)
-#define AIPS_PACRA_SP3_SHIFT                     (18U)
-#define AIPS_PACRA_SP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_SP3_SHIFT)) & AIPS_PACRA_SP3_MASK)
-#define AIPS_PACRA_TP2_MASK                      (0x100000U)
-#define AIPS_PACRA_TP2_SHIFT                     (20U)
-#define AIPS_PACRA_TP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_TP2_SHIFT)) & AIPS_PACRA_TP2_MASK)
-#define AIPS_PACRA_WP2_MASK                      (0x200000U)
-#define AIPS_PACRA_WP2_SHIFT                     (21U)
-#define AIPS_PACRA_WP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_WP2_SHIFT)) & AIPS_PACRA_WP2_MASK)
-#define AIPS_PACRA_SP2_MASK                      (0x400000U)
-#define AIPS_PACRA_SP2_SHIFT                     (22U)
-#define AIPS_PACRA_SP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_SP2_SHIFT)) & AIPS_PACRA_SP2_MASK)
-#define AIPS_PACRA_TP1_MASK                      (0x1000000U)
-#define AIPS_PACRA_TP1_SHIFT                     (24U)
-#define AIPS_PACRA_TP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_TP1_SHIFT)) & AIPS_PACRA_TP1_MASK)
-#define AIPS_PACRA_WP1_MASK                      (0x2000000U)
-#define AIPS_PACRA_WP1_SHIFT                     (25U)
-#define AIPS_PACRA_WP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_WP1_SHIFT)) & AIPS_PACRA_WP1_MASK)
-#define AIPS_PACRA_SP1_MASK                      (0x4000000U)
-#define AIPS_PACRA_SP1_SHIFT                     (26U)
-#define AIPS_PACRA_SP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_SP1_SHIFT)) & AIPS_PACRA_SP1_MASK)
-#define AIPS_PACRA_TP0_MASK                      (0x10000000U)
-#define AIPS_PACRA_TP0_SHIFT                     (28U)
-#define AIPS_PACRA_TP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_TP0_SHIFT)) & AIPS_PACRA_TP0_MASK)
-#define AIPS_PACRA_WP0_MASK                      (0x20000000U)
-#define AIPS_PACRA_WP0_SHIFT                     (29U)
-#define AIPS_PACRA_WP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_WP0_SHIFT)) & AIPS_PACRA_WP0_MASK)
-#define AIPS_PACRA_SP0_MASK                      (0x40000000U)
-#define AIPS_PACRA_SP0_SHIFT                     (30U)
-#define AIPS_PACRA_SP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRA_SP0_SHIFT)) & AIPS_PACRA_SP0_MASK)
-
-/*! @name PACRB - Peripheral Access Control Register */
-#define AIPS_PACRB_TP7_MASK                      (0x1U)
-#define AIPS_PACRB_TP7_SHIFT                     (0U)
-#define AIPS_PACRB_TP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_TP7_SHIFT)) & AIPS_PACRB_TP7_MASK)
-#define AIPS_PACRB_WP7_MASK                      (0x2U)
-#define AIPS_PACRB_WP7_SHIFT                     (1U)
-#define AIPS_PACRB_WP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_WP7_SHIFT)) & AIPS_PACRB_WP7_MASK)
-#define AIPS_PACRB_SP7_MASK                      (0x4U)
-#define AIPS_PACRB_SP7_SHIFT                     (2U)
-#define AIPS_PACRB_SP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_SP7_SHIFT)) & AIPS_PACRB_SP7_MASK)
-#define AIPS_PACRB_TP6_MASK                      (0x10U)
-#define AIPS_PACRB_TP6_SHIFT                     (4U)
-#define AIPS_PACRB_TP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_TP6_SHIFT)) & AIPS_PACRB_TP6_MASK)
-#define AIPS_PACRB_WP6_MASK                      (0x20U)
-#define AIPS_PACRB_WP6_SHIFT                     (5U)
-#define AIPS_PACRB_WP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_WP6_SHIFT)) & AIPS_PACRB_WP6_MASK)
-#define AIPS_PACRB_SP6_MASK                      (0x40U)
-#define AIPS_PACRB_SP6_SHIFT                     (6U)
-#define AIPS_PACRB_SP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_SP6_SHIFT)) & AIPS_PACRB_SP6_MASK)
-#define AIPS_PACRB_TP5_MASK                      (0x100U)
-#define AIPS_PACRB_TP5_SHIFT                     (8U)
-#define AIPS_PACRB_TP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_TP5_SHIFT)) & AIPS_PACRB_TP5_MASK)
-#define AIPS_PACRB_WP5_MASK                      (0x200U)
-#define AIPS_PACRB_WP5_SHIFT                     (9U)
-#define AIPS_PACRB_WP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_WP5_SHIFT)) & AIPS_PACRB_WP5_MASK)
-#define AIPS_PACRB_SP5_MASK                      (0x400U)
-#define AIPS_PACRB_SP5_SHIFT                     (10U)
-#define AIPS_PACRB_SP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_SP5_SHIFT)) & AIPS_PACRB_SP5_MASK)
-#define AIPS_PACRB_TP4_MASK                      (0x1000U)
-#define AIPS_PACRB_TP4_SHIFT                     (12U)
-#define AIPS_PACRB_TP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_TP4_SHIFT)) & AIPS_PACRB_TP4_MASK)
-#define AIPS_PACRB_WP4_MASK                      (0x2000U)
-#define AIPS_PACRB_WP4_SHIFT                     (13U)
-#define AIPS_PACRB_WP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_WP4_SHIFT)) & AIPS_PACRB_WP4_MASK)
-#define AIPS_PACRB_SP4_MASK                      (0x4000U)
-#define AIPS_PACRB_SP4_SHIFT                     (14U)
-#define AIPS_PACRB_SP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_SP4_SHIFT)) & AIPS_PACRB_SP4_MASK)
-#define AIPS_PACRB_TP3_MASK                      (0x10000U)
-#define AIPS_PACRB_TP3_SHIFT                     (16U)
-#define AIPS_PACRB_TP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_TP3_SHIFT)) & AIPS_PACRB_TP3_MASK)
-#define AIPS_PACRB_WP3_MASK                      (0x20000U)
-#define AIPS_PACRB_WP3_SHIFT                     (17U)
-#define AIPS_PACRB_WP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_WP3_SHIFT)) & AIPS_PACRB_WP3_MASK)
-#define AIPS_PACRB_SP3_MASK                      (0x40000U)
-#define AIPS_PACRB_SP3_SHIFT                     (18U)
-#define AIPS_PACRB_SP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_SP3_SHIFT)) & AIPS_PACRB_SP3_MASK)
-#define AIPS_PACRB_TP2_MASK                      (0x100000U)
-#define AIPS_PACRB_TP2_SHIFT                     (20U)
-#define AIPS_PACRB_TP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_TP2_SHIFT)) & AIPS_PACRB_TP2_MASK)
-#define AIPS_PACRB_WP2_MASK                      (0x200000U)
-#define AIPS_PACRB_WP2_SHIFT                     (21U)
-#define AIPS_PACRB_WP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_WP2_SHIFT)) & AIPS_PACRB_WP2_MASK)
-#define AIPS_PACRB_SP2_MASK                      (0x400000U)
-#define AIPS_PACRB_SP2_SHIFT                     (22U)
-#define AIPS_PACRB_SP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_SP2_SHIFT)) & AIPS_PACRB_SP2_MASK)
-#define AIPS_PACRB_TP1_MASK                      (0x1000000U)
-#define AIPS_PACRB_TP1_SHIFT                     (24U)
-#define AIPS_PACRB_TP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_TP1_SHIFT)) & AIPS_PACRB_TP1_MASK)
-#define AIPS_PACRB_WP1_MASK                      (0x2000000U)
-#define AIPS_PACRB_WP1_SHIFT                     (25U)
-#define AIPS_PACRB_WP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_WP1_SHIFT)) & AIPS_PACRB_WP1_MASK)
-#define AIPS_PACRB_SP1_MASK                      (0x4000000U)
-#define AIPS_PACRB_SP1_SHIFT                     (26U)
-#define AIPS_PACRB_SP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_SP1_SHIFT)) & AIPS_PACRB_SP1_MASK)
-#define AIPS_PACRB_TP0_MASK                      (0x10000000U)
-#define AIPS_PACRB_TP0_SHIFT                     (28U)
-#define AIPS_PACRB_TP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_TP0_SHIFT)) & AIPS_PACRB_TP0_MASK)
-#define AIPS_PACRB_WP0_MASK                      (0x20000000U)
-#define AIPS_PACRB_WP0_SHIFT                     (29U)
-#define AIPS_PACRB_WP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_WP0_SHIFT)) & AIPS_PACRB_WP0_MASK)
-#define AIPS_PACRB_SP0_MASK                      (0x40000000U)
-#define AIPS_PACRB_SP0_SHIFT                     (30U)
-#define AIPS_PACRB_SP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRB_SP0_SHIFT)) & AIPS_PACRB_SP0_MASK)
-
-/*! @name PACRC - Peripheral Access Control Register */
-#define AIPS_PACRC_TP7_MASK                      (0x1U)
-#define AIPS_PACRC_TP7_SHIFT                     (0U)
-#define AIPS_PACRC_TP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_TP7_SHIFT)) & AIPS_PACRC_TP7_MASK)
-#define AIPS_PACRC_WP7_MASK                      (0x2U)
-#define AIPS_PACRC_WP7_SHIFT                     (1U)
-#define AIPS_PACRC_WP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_WP7_SHIFT)) & AIPS_PACRC_WP7_MASK)
-#define AIPS_PACRC_SP7_MASK                      (0x4U)
-#define AIPS_PACRC_SP7_SHIFT                     (2U)
-#define AIPS_PACRC_SP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_SP7_SHIFT)) & AIPS_PACRC_SP7_MASK)
-#define AIPS_PACRC_TP6_MASK                      (0x10U)
-#define AIPS_PACRC_TP6_SHIFT                     (4U)
-#define AIPS_PACRC_TP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_TP6_SHIFT)) & AIPS_PACRC_TP6_MASK)
-#define AIPS_PACRC_WP6_MASK                      (0x20U)
-#define AIPS_PACRC_WP6_SHIFT                     (5U)
-#define AIPS_PACRC_WP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_WP6_SHIFT)) & AIPS_PACRC_WP6_MASK)
-#define AIPS_PACRC_SP6_MASK                      (0x40U)
-#define AIPS_PACRC_SP6_SHIFT                     (6U)
-#define AIPS_PACRC_SP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_SP6_SHIFT)) & AIPS_PACRC_SP6_MASK)
-#define AIPS_PACRC_TP5_MASK                      (0x100U)
-#define AIPS_PACRC_TP5_SHIFT                     (8U)
-#define AIPS_PACRC_TP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_TP5_SHIFT)) & AIPS_PACRC_TP5_MASK)
-#define AIPS_PACRC_WP5_MASK                      (0x200U)
-#define AIPS_PACRC_WP5_SHIFT                     (9U)
-#define AIPS_PACRC_WP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_WP5_SHIFT)) & AIPS_PACRC_WP5_MASK)
-#define AIPS_PACRC_SP5_MASK                      (0x400U)
-#define AIPS_PACRC_SP5_SHIFT                     (10U)
-#define AIPS_PACRC_SP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_SP5_SHIFT)) & AIPS_PACRC_SP5_MASK)
-#define AIPS_PACRC_TP4_MASK                      (0x1000U)
-#define AIPS_PACRC_TP4_SHIFT                     (12U)
-#define AIPS_PACRC_TP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_TP4_SHIFT)) & AIPS_PACRC_TP4_MASK)
-#define AIPS_PACRC_WP4_MASK                      (0x2000U)
-#define AIPS_PACRC_WP4_SHIFT                     (13U)
-#define AIPS_PACRC_WP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_WP4_SHIFT)) & AIPS_PACRC_WP4_MASK)
-#define AIPS_PACRC_SP4_MASK                      (0x4000U)
-#define AIPS_PACRC_SP4_SHIFT                     (14U)
-#define AIPS_PACRC_SP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_SP4_SHIFT)) & AIPS_PACRC_SP4_MASK)
-#define AIPS_PACRC_TP3_MASK                      (0x10000U)
-#define AIPS_PACRC_TP3_SHIFT                     (16U)
-#define AIPS_PACRC_TP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_TP3_SHIFT)) & AIPS_PACRC_TP3_MASK)
-#define AIPS_PACRC_WP3_MASK                      (0x20000U)
-#define AIPS_PACRC_WP3_SHIFT                     (17U)
-#define AIPS_PACRC_WP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_WP3_SHIFT)) & AIPS_PACRC_WP3_MASK)
-#define AIPS_PACRC_SP3_MASK                      (0x40000U)
-#define AIPS_PACRC_SP3_SHIFT                     (18U)
-#define AIPS_PACRC_SP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_SP3_SHIFT)) & AIPS_PACRC_SP3_MASK)
-#define AIPS_PACRC_TP2_MASK                      (0x100000U)
-#define AIPS_PACRC_TP2_SHIFT                     (20U)
-#define AIPS_PACRC_TP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_TP2_SHIFT)) & AIPS_PACRC_TP2_MASK)
-#define AIPS_PACRC_WP2_MASK                      (0x200000U)
-#define AIPS_PACRC_WP2_SHIFT                     (21U)
-#define AIPS_PACRC_WP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_WP2_SHIFT)) & AIPS_PACRC_WP2_MASK)
-#define AIPS_PACRC_SP2_MASK                      (0x400000U)
-#define AIPS_PACRC_SP2_SHIFT                     (22U)
-#define AIPS_PACRC_SP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_SP2_SHIFT)) & AIPS_PACRC_SP2_MASK)
-#define AIPS_PACRC_TP1_MASK                      (0x1000000U)
-#define AIPS_PACRC_TP1_SHIFT                     (24U)
-#define AIPS_PACRC_TP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_TP1_SHIFT)) & AIPS_PACRC_TP1_MASK)
-#define AIPS_PACRC_WP1_MASK                      (0x2000000U)
-#define AIPS_PACRC_WP1_SHIFT                     (25U)
-#define AIPS_PACRC_WP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_WP1_SHIFT)) & AIPS_PACRC_WP1_MASK)
-#define AIPS_PACRC_SP1_MASK                      (0x4000000U)
-#define AIPS_PACRC_SP1_SHIFT                     (26U)
-#define AIPS_PACRC_SP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_SP1_SHIFT)) & AIPS_PACRC_SP1_MASK)
-#define AIPS_PACRC_TP0_MASK                      (0x10000000U)
-#define AIPS_PACRC_TP0_SHIFT                     (28U)
-#define AIPS_PACRC_TP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_TP0_SHIFT)) & AIPS_PACRC_TP0_MASK)
-#define AIPS_PACRC_WP0_MASK                      (0x20000000U)
-#define AIPS_PACRC_WP0_SHIFT                     (29U)
-#define AIPS_PACRC_WP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_WP0_SHIFT)) & AIPS_PACRC_WP0_MASK)
-#define AIPS_PACRC_SP0_MASK                      (0x40000000U)
-#define AIPS_PACRC_SP0_SHIFT                     (30U)
-#define AIPS_PACRC_SP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRC_SP0_SHIFT)) & AIPS_PACRC_SP0_MASK)
-
-/*! @name PACRD - Peripheral Access Control Register */
-#define AIPS_PACRD_TP7_MASK                      (0x1U)
-#define AIPS_PACRD_TP7_SHIFT                     (0U)
-#define AIPS_PACRD_TP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_TP7_SHIFT)) & AIPS_PACRD_TP7_MASK)
-#define AIPS_PACRD_WP7_MASK                      (0x2U)
-#define AIPS_PACRD_WP7_SHIFT                     (1U)
-#define AIPS_PACRD_WP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_WP7_SHIFT)) & AIPS_PACRD_WP7_MASK)
-#define AIPS_PACRD_SP7_MASK                      (0x4U)
-#define AIPS_PACRD_SP7_SHIFT                     (2U)
-#define AIPS_PACRD_SP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_SP7_SHIFT)) & AIPS_PACRD_SP7_MASK)
-#define AIPS_PACRD_TP6_MASK                      (0x10U)
-#define AIPS_PACRD_TP6_SHIFT                     (4U)
-#define AIPS_PACRD_TP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_TP6_SHIFT)) & AIPS_PACRD_TP6_MASK)
-#define AIPS_PACRD_WP6_MASK                      (0x20U)
-#define AIPS_PACRD_WP6_SHIFT                     (5U)
-#define AIPS_PACRD_WP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_WP6_SHIFT)) & AIPS_PACRD_WP6_MASK)
-#define AIPS_PACRD_SP6_MASK                      (0x40U)
-#define AIPS_PACRD_SP6_SHIFT                     (6U)
-#define AIPS_PACRD_SP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_SP6_SHIFT)) & AIPS_PACRD_SP6_MASK)
-#define AIPS_PACRD_TP5_MASK                      (0x100U)
-#define AIPS_PACRD_TP5_SHIFT                     (8U)
-#define AIPS_PACRD_TP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_TP5_SHIFT)) & AIPS_PACRD_TP5_MASK)
-#define AIPS_PACRD_WP5_MASK                      (0x200U)
-#define AIPS_PACRD_WP5_SHIFT                     (9U)
-#define AIPS_PACRD_WP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_WP5_SHIFT)) & AIPS_PACRD_WP5_MASK)
-#define AIPS_PACRD_SP5_MASK                      (0x400U)
-#define AIPS_PACRD_SP5_SHIFT                     (10U)
-#define AIPS_PACRD_SP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_SP5_SHIFT)) & AIPS_PACRD_SP5_MASK)
-#define AIPS_PACRD_TP4_MASK                      (0x1000U)
-#define AIPS_PACRD_TP4_SHIFT                     (12U)
-#define AIPS_PACRD_TP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_TP4_SHIFT)) & AIPS_PACRD_TP4_MASK)
-#define AIPS_PACRD_WP4_MASK                      (0x2000U)
-#define AIPS_PACRD_WP4_SHIFT                     (13U)
-#define AIPS_PACRD_WP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_WP4_SHIFT)) & AIPS_PACRD_WP4_MASK)
-#define AIPS_PACRD_SP4_MASK                      (0x4000U)
-#define AIPS_PACRD_SP4_SHIFT                     (14U)
-#define AIPS_PACRD_SP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_SP4_SHIFT)) & AIPS_PACRD_SP4_MASK)
-#define AIPS_PACRD_TP3_MASK                      (0x10000U)
-#define AIPS_PACRD_TP3_SHIFT                     (16U)
-#define AIPS_PACRD_TP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_TP3_SHIFT)) & AIPS_PACRD_TP3_MASK)
-#define AIPS_PACRD_WP3_MASK                      (0x20000U)
-#define AIPS_PACRD_WP3_SHIFT                     (17U)
-#define AIPS_PACRD_WP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_WP3_SHIFT)) & AIPS_PACRD_WP3_MASK)
-#define AIPS_PACRD_SP3_MASK                      (0x40000U)
-#define AIPS_PACRD_SP3_SHIFT                     (18U)
-#define AIPS_PACRD_SP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_SP3_SHIFT)) & AIPS_PACRD_SP3_MASK)
-#define AIPS_PACRD_TP2_MASK                      (0x100000U)
-#define AIPS_PACRD_TP2_SHIFT                     (20U)
-#define AIPS_PACRD_TP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_TP2_SHIFT)) & AIPS_PACRD_TP2_MASK)
-#define AIPS_PACRD_WP2_MASK                      (0x200000U)
-#define AIPS_PACRD_WP2_SHIFT                     (21U)
-#define AIPS_PACRD_WP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_WP2_SHIFT)) & AIPS_PACRD_WP2_MASK)
-#define AIPS_PACRD_SP2_MASK                      (0x400000U)
-#define AIPS_PACRD_SP2_SHIFT                     (22U)
-#define AIPS_PACRD_SP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_SP2_SHIFT)) & AIPS_PACRD_SP2_MASK)
-#define AIPS_PACRD_TP1_MASK                      (0x1000000U)
-#define AIPS_PACRD_TP1_SHIFT                     (24U)
-#define AIPS_PACRD_TP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_TP1_SHIFT)) & AIPS_PACRD_TP1_MASK)
-#define AIPS_PACRD_WP1_MASK                      (0x2000000U)
-#define AIPS_PACRD_WP1_SHIFT                     (25U)
-#define AIPS_PACRD_WP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_WP1_SHIFT)) & AIPS_PACRD_WP1_MASK)
-#define AIPS_PACRD_SP1_MASK                      (0x4000000U)
-#define AIPS_PACRD_SP1_SHIFT                     (26U)
-#define AIPS_PACRD_SP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_SP1_SHIFT)) & AIPS_PACRD_SP1_MASK)
-#define AIPS_PACRD_TP0_MASK                      (0x10000000U)
-#define AIPS_PACRD_TP0_SHIFT                     (28U)
-#define AIPS_PACRD_TP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_TP0_SHIFT)) & AIPS_PACRD_TP0_MASK)
-#define AIPS_PACRD_WP0_MASK                      (0x20000000U)
-#define AIPS_PACRD_WP0_SHIFT                     (29U)
-#define AIPS_PACRD_WP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_WP0_SHIFT)) & AIPS_PACRD_WP0_MASK)
-#define AIPS_PACRD_SP0_MASK                      (0x40000000U)
-#define AIPS_PACRD_SP0_SHIFT                     (30U)
-#define AIPS_PACRD_SP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRD_SP0_SHIFT)) & AIPS_PACRD_SP0_MASK)
-
-/*! @name PACRE - Peripheral Access Control Register */
-#define AIPS_PACRE_TP7_MASK                      (0x1U)
-#define AIPS_PACRE_TP7_SHIFT                     (0U)
-#define AIPS_PACRE_TP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_TP7_SHIFT)) & AIPS_PACRE_TP7_MASK)
-#define AIPS_PACRE_WP7_MASK                      (0x2U)
-#define AIPS_PACRE_WP7_SHIFT                     (1U)
-#define AIPS_PACRE_WP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_WP7_SHIFT)) & AIPS_PACRE_WP7_MASK)
-#define AIPS_PACRE_SP7_MASK                      (0x4U)
-#define AIPS_PACRE_SP7_SHIFT                     (2U)
-#define AIPS_PACRE_SP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_SP7_SHIFT)) & AIPS_PACRE_SP7_MASK)
-#define AIPS_PACRE_TP6_MASK                      (0x10U)
-#define AIPS_PACRE_TP6_SHIFT                     (4U)
-#define AIPS_PACRE_TP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_TP6_SHIFT)) & AIPS_PACRE_TP6_MASK)
-#define AIPS_PACRE_WP6_MASK                      (0x20U)
-#define AIPS_PACRE_WP6_SHIFT                     (5U)
-#define AIPS_PACRE_WP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_WP6_SHIFT)) & AIPS_PACRE_WP6_MASK)
-#define AIPS_PACRE_SP6_MASK                      (0x40U)
-#define AIPS_PACRE_SP6_SHIFT                     (6U)
-#define AIPS_PACRE_SP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_SP6_SHIFT)) & AIPS_PACRE_SP6_MASK)
-#define AIPS_PACRE_TP5_MASK                      (0x100U)
-#define AIPS_PACRE_TP5_SHIFT                     (8U)
-#define AIPS_PACRE_TP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_TP5_SHIFT)) & AIPS_PACRE_TP5_MASK)
-#define AIPS_PACRE_WP5_MASK                      (0x200U)
-#define AIPS_PACRE_WP5_SHIFT                     (9U)
-#define AIPS_PACRE_WP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_WP5_SHIFT)) & AIPS_PACRE_WP5_MASK)
-#define AIPS_PACRE_SP5_MASK                      (0x400U)
-#define AIPS_PACRE_SP5_SHIFT                     (10U)
-#define AIPS_PACRE_SP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_SP5_SHIFT)) & AIPS_PACRE_SP5_MASK)
-#define AIPS_PACRE_TP4_MASK                      (0x1000U)
-#define AIPS_PACRE_TP4_SHIFT                     (12U)
-#define AIPS_PACRE_TP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_TP4_SHIFT)) & AIPS_PACRE_TP4_MASK)
-#define AIPS_PACRE_WP4_MASK                      (0x2000U)
-#define AIPS_PACRE_WP4_SHIFT                     (13U)
-#define AIPS_PACRE_WP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_WP4_SHIFT)) & AIPS_PACRE_WP4_MASK)
-#define AIPS_PACRE_SP4_MASK                      (0x4000U)
-#define AIPS_PACRE_SP4_SHIFT                     (14U)
-#define AIPS_PACRE_SP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_SP4_SHIFT)) & AIPS_PACRE_SP4_MASK)
-#define AIPS_PACRE_TP3_MASK                      (0x10000U)
-#define AIPS_PACRE_TP3_SHIFT                     (16U)
-#define AIPS_PACRE_TP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_TP3_SHIFT)) & AIPS_PACRE_TP3_MASK)
-#define AIPS_PACRE_WP3_MASK                      (0x20000U)
-#define AIPS_PACRE_WP3_SHIFT                     (17U)
-#define AIPS_PACRE_WP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_WP3_SHIFT)) & AIPS_PACRE_WP3_MASK)
-#define AIPS_PACRE_SP3_MASK                      (0x40000U)
-#define AIPS_PACRE_SP3_SHIFT                     (18U)
-#define AIPS_PACRE_SP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_SP3_SHIFT)) & AIPS_PACRE_SP3_MASK)
-#define AIPS_PACRE_TP2_MASK                      (0x100000U)
-#define AIPS_PACRE_TP2_SHIFT                     (20U)
-#define AIPS_PACRE_TP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_TP2_SHIFT)) & AIPS_PACRE_TP2_MASK)
-#define AIPS_PACRE_WP2_MASK                      (0x200000U)
-#define AIPS_PACRE_WP2_SHIFT                     (21U)
-#define AIPS_PACRE_WP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_WP2_SHIFT)) & AIPS_PACRE_WP2_MASK)
-#define AIPS_PACRE_SP2_MASK                      (0x400000U)
-#define AIPS_PACRE_SP2_SHIFT                     (22U)
-#define AIPS_PACRE_SP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_SP2_SHIFT)) & AIPS_PACRE_SP2_MASK)
-#define AIPS_PACRE_TP1_MASK                      (0x1000000U)
-#define AIPS_PACRE_TP1_SHIFT                     (24U)
-#define AIPS_PACRE_TP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_TP1_SHIFT)) & AIPS_PACRE_TP1_MASK)
-#define AIPS_PACRE_WP1_MASK                      (0x2000000U)
-#define AIPS_PACRE_WP1_SHIFT                     (25U)
-#define AIPS_PACRE_WP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_WP1_SHIFT)) & AIPS_PACRE_WP1_MASK)
-#define AIPS_PACRE_SP1_MASK                      (0x4000000U)
-#define AIPS_PACRE_SP1_SHIFT                     (26U)
-#define AIPS_PACRE_SP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_SP1_SHIFT)) & AIPS_PACRE_SP1_MASK)
-#define AIPS_PACRE_TP0_MASK                      (0x10000000U)
-#define AIPS_PACRE_TP0_SHIFT                     (28U)
-#define AIPS_PACRE_TP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_TP0_SHIFT)) & AIPS_PACRE_TP0_MASK)
-#define AIPS_PACRE_WP0_MASK                      (0x20000000U)
-#define AIPS_PACRE_WP0_SHIFT                     (29U)
-#define AIPS_PACRE_WP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_WP0_SHIFT)) & AIPS_PACRE_WP0_MASK)
-#define AIPS_PACRE_SP0_MASK                      (0x40000000U)
-#define AIPS_PACRE_SP0_SHIFT                     (30U)
-#define AIPS_PACRE_SP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRE_SP0_SHIFT)) & AIPS_PACRE_SP0_MASK)
-
-/*! @name PACRF - Peripheral Access Control Register */
-#define AIPS_PACRF_TP7_MASK                      (0x1U)
-#define AIPS_PACRF_TP7_SHIFT                     (0U)
-#define AIPS_PACRF_TP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_TP7_SHIFT)) & AIPS_PACRF_TP7_MASK)
-#define AIPS_PACRF_WP7_MASK                      (0x2U)
-#define AIPS_PACRF_WP7_SHIFT                     (1U)
-#define AIPS_PACRF_WP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_WP7_SHIFT)) & AIPS_PACRF_WP7_MASK)
-#define AIPS_PACRF_SP7_MASK                      (0x4U)
-#define AIPS_PACRF_SP7_SHIFT                     (2U)
-#define AIPS_PACRF_SP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_SP7_SHIFT)) & AIPS_PACRF_SP7_MASK)
-#define AIPS_PACRF_TP6_MASK                      (0x10U)
-#define AIPS_PACRF_TP6_SHIFT                     (4U)
-#define AIPS_PACRF_TP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_TP6_SHIFT)) & AIPS_PACRF_TP6_MASK)
-#define AIPS_PACRF_WP6_MASK                      (0x20U)
-#define AIPS_PACRF_WP6_SHIFT                     (5U)
-#define AIPS_PACRF_WP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_WP6_SHIFT)) & AIPS_PACRF_WP6_MASK)
-#define AIPS_PACRF_SP6_MASK                      (0x40U)
-#define AIPS_PACRF_SP6_SHIFT                     (6U)
-#define AIPS_PACRF_SP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_SP6_SHIFT)) & AIPS_PACRF_SP6_MASK)
-#define AIPS_PACRF_TP5_MASK                      (0x100U)
-#define AIPS_PACRF_TP5_SHIFT                     (8U)
-#define AIPS_PACRF_TP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_TP5_SHIFT)) & AIPS_PACRF_TP5_MASK)
-#define AIPS_PACRF_WP5_MASK                      (0x200U)
-#define AIPS_PACRF_WP5_SHIFT                     (9U)
-#define AIPS_PACRF_WP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_WP5_SHIFT)) & AIPS_PACRF_WP5_MASK)
-#define AIPS_PACRF_SP5_MASK                      (0x400U)
-#define AIPS_PACRF_SP5_SHIFT                     (10U)
-#define AIPS_PACRF_SP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_SP5_SHIFT)) & AIPS_PACRF_SP5_MASK)
-#define AIPS_PACRF_TP4_MASK                      (0x1000U)
-#define AIPS_PACRF_TP4_SHIFT                     (12U)
-#define AIPS_PACRF_TP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_TP4_SHIFT)) & AIPS_PACRF_TP4_MASK)
-#define AIPS_PACRF_WP4_MASK                      (0x2000U)
-#define AIPS_PACRF_WP4_SHIFT                     (13U)
-#define AIPS_PACRF_WP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_WP4_SHIFT)) & AIPS_PACRF_WP4_MASK)
-#define AIPS_PACRF_SP4_MASK                      (0x4000U)
-#define AIPS_PACRF_SP4_SHIFT                     (14U)
-#define AIPS_PACRF_SP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_SP4_SHIFT)) & AIPS_PACRF_SP4_MASK)
-#define AIPS_PACRF_TP3_MASK                      (0x10000U)
-#define AIPS_PACRF_TP3_SHIFT                     (16U)
-#define AIPS_PACRF_TP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_TP3_SHIFT)) & AIPS_PACRF_TP3_MASK)
-#define AIPS_PACRF_WP3_MASK                      (0x20000U)
-#define AIPS_PACRF_WP3_SHIFT                     (17U)
-#define AIPS_PACRF_WP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_WP3_SHIFT)) & AIPS_PACRF_WP3_MASK)
-#define AIPS_PACRF_SP3_MASK                      (0x40000U)
-#define AIPS_PACRF_SP3_SHIFT                     (18U)
-#define AIPS_PACRF_SP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_SP3_SHIFT)) & AIPS_PACRF_SP3_MASK)
-#define AIPS_PACRF_TP2_MASK                      (0x100000U)
-#define AIPS_PACRF_TP2_SHIFT                     (20U)
-#define AIPS_PACRF_TP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_TP2_SHIFT)) & AIPS_PACRF_TP2_MASK)
-#define AIPS_PACRF_WP2_MASK                      (0x200000U)
-#define AIPS_PACRF_WP2_SHIFT                     (21U)
-#define AIPS_PACRF_WP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_WP2_SHIFT)) & AIPS_PACRF_WP2_MASK)
-#define AIPS_PACRF_SP2_MASK                      (0x400000U)
-#define AIPS_PACRF_SP2_SHIFT                     (22U)
-#define AIPS_PACRF_SP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_SP2_SHIFT)) & AIPS_PACRF_SP2_MASK)
-#define AIPS_PACRF_TP1_MASK                      (0x1000000U)
-#define AIPS_PACRF_TP1_SHIFT                     (24U)
-#define AIPS_PACRF_TP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_TP1_SHIFT)) & AIPS_PACRF_TP1_MASK)
-#define AIPS_PACRF_WP1_MASK                      (0x2000000U)
-#define AIPS_PACRF_WP1_SHIFT                     (25U)
-#define AIPS_PACRF_WP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_WP1_SHIFT)) & AIPS_PACRF_WP1_MASK)
-#define AIPS_PACRF_SP1_MASK                      (0x4000000U)
-#define AIPS_PACRF_SP1_SHIFT                     (26U)
-#define AIPS_PACRF_SP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_SP1_SHIFT)) & AIPS_PACRF_SP1_MASK)
-#define AIPS_PACRF_TP0_MASK                      (0x10000000U)
-#define AIPS_PACRF_TP0_SHIFT                     (28U)
-#define AIPS_PACRF_TP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_TP0_SHIFT)) & AIPS_PACRF_TP0_MASK)
-#define AIPS_PACRF_WP0_MASK                      (0x20000000U)
-#define AIPS_PACRF_WP0_SHIFT                     (29U)
-#define AIPS_PACRF_WP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_WP0_SHIFT)) & AIPS_PACRF_WP0_MASK)
-#define AIPS_PACRF_SP0_MASK                      (0x40000000U)
-#define AIPS_PACRF_SP0_SHIFT                     (30U)
-#define AIPS_PACRF_SP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRF_SP0_SHIFT)) & AIPS_PACRF_SP0_MASK)
-
-/*! @name PACRG - Peripheral Access Control Register */
-#define AIPS_PACRG_TP7_MASK                      (0x1U)
-#define AIPS_PACRG_TP7_SHIFT                     (0U)
-#define AIPS_PACRG_TP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_TP7_SHIFT)) & AIPS_PACRG_TP7_MASK)
-#define AIPS_PACRG_WP7_MASK                      (0x2U)
-#define AIPS_PACRG_WP7_SHIFT                     (1U)
-#define AIPS_PACRG_WP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_WP7_SHIFT)) & AIPS_PACRG_WP7_MASK)
-#define AIPS_PACRG_SP7_MASK                      (0x4U)
-#define AIPS_PACRG_SP7_SHIFT                     (2U)
-#define AIPS_PACRG_SP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_SP7_SHIFT)) & AIPS_PACRG_SP7_MASK)
-#define AIPS_PACRG_TP6_MASK                      (0x10U)
-#define AIPS_PACRG_TP6_SHIFT                     (4U)
-#define AIPS_PACRG_TP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_TP6_SHIFT)) & AIPS_PACRG_TP6_MASK)
-#define AIPS_PACRG_WP6_MASK                      (0x20U)
-#define AIPS_PACRG_WP6_SHIFT                     (5U)
-#define AIPS_PACRG_WP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_WP6_SHIFT)) & AIPS_PACRG_WP6_MASK)
-#define AIPS_PACRG_SP6_MASK                      (0x40U)
-#define AIPS_PACRG_SP6_SHIFT                     (6U)
-#define AIPS_PACRG_SP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_SP6_SHIFT)) & AIPS_PACRG_SP6_MASK)
-#define AIPS_PACRG_TP5_MASK                      (0x100U)
-#define AIPS_PACRG_TP5_SHIFT                     (8U)
-#define AIPS_PACRG_TP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_TP5_SHIFT)) & AIPS_PACRG_TP5_MASK)
-#define AIPS_PACRG_WP5_MASK                      (0x200U)
-#define AIPS_PACRG_WP5_SHIFT                     (9U)
-#define AIPS_PACRG_WP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_WP5_SHIFT)) & AIPS_PACRG_WP5_MASK)
-#define AIPS_PACRG_SP5_MASK                      (0x400U)
-#define AIPS_PACRG_SP5_SHIFT                     (10U)
-#define AIPS_PACRG_SP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_SP5_SHIFT)) & AIPS_PACRG_SP5_MASK)
-#define AIPS_PACRG_TP4_MASK                      (0x1000U)
-#define AIPS_PACRG_TP4_SHIFT                     (12U)
-#define AIPS_PACRG_TP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_TP4_SHIFT)) & AIPS_PACRG_TP4_MASK)
-#define AIPS_PACRG_WP4_MASK                      (0x2000U)
-#define AIPS_PACRG_WP4_SHIFT                     (13U)
-#define AIPS_PACRG_WP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_WP4_SHIFT)) & AIPS_PACRG_WP4_MASK)
-#define AIPS_PACRG_SP4_MASK                      (0x4000U)
-#define AIPS_PACRG_SP4_SHIFT                     (14U)
-#define AIPS_PACRG_SP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_SP4_SHIFT)) & AIPS_PACRG_SP4_MASK)
-#define AIPS_PACRG_TP3_MASK                      (0x10000U)
-#define AIPS_PACRG_TP3_SHIFT                     (16U)
-#define AIPS_PACRG_TP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_TP3_SHIFT)) & AIPS_PACRG_TP3_MASK)
-#define AIPS_PACRG_WP3_MASK                      (0x20000U)
-#define AIPS_PACRG_WP3_SHIFT                     (17U)
-#define AIPS_PACRG_WP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_WP3_SHIFT)) & AIPS_PACRG_WP3_MASK)
-#define AIPS_PACRG_SP3_MASK                      (0x40000U)
-#define AIPS_PACRG_SP3_SHIFT                     (18U)
-#define AIPS_PACRG_SP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_SP3_SHIFT)) & AIPS_PACRG_SP3_MASK)
-#define AIPS_PACRG_TP2_MASK                      (0x100000U)
-#define AIPS_PACRG_TP2_SHIFT                     (20U)
-#define AIPS_PACRG_TP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_TP2_SHIFT)) & AIPS_PACRG_TP2_MASK)
-#define AIPS_PACRG_WP2_MASK                      (0x200000U)
-#define AIPS_PACRG_WP2_SHIFT                     (21U)
-#define AIPS_PACRG_WP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_WP2_SHIFT)) & AIPS_PACRG_WP2_MASK)
-#define AIPS_PACRG_SP2_MASK                      (0x400000U)
-#define AIPS_PACRG_SP2_SHIFT                     (22U)
-#define AIPS_PACRG_SP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_SP2_SHIFT)) & AIPS_PACRG_SP2_MASK)
-#define AIPS_PACRG_TP1_MASK                      (0x1000000U)
-#define AIPS_PACRG_TP1_SHIFT                     (24U)
-#define AIPS_PACRG_TP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_TP1_SHIFT)) & AIPS_PACRG_TP1_MASK)
-#define AIPS_PACRG_WP1_MASK                      (0x2000000U)
-#define AIPS_PACRG_WP1_SHIFT                     (25U)
-#define AIPS_PACRG_WP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_WP1_SHIFT)) & AIPS_PACRG_WP1_MASK)
-#define AIPS_PACRG_SP1_MASK                      (0x4000000U)
-#define AIPS_PACRG_SP1_SHIFT                     (26U)
-#define AIPS_PACRG_SP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_SP1_SHIFT)) & AIPS_PACRG_SP1_MASK)
-#define AIPS_PACRG_TP0_MASK                      (0x10000000U)
-#define AIPS_PACRG_TP0_SHIFT                     (28U)
-#define AIPS_PACRG_TP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_TP0_SHIFT)) & AIPS_PACRG_TP0_MASK)
-#define AIPS_PACRG_WP0_MASK                      (0x20000000U)
-#define AIPS_PACRG_WP0_SHIFT                     (29U)
-#define AIPS_PACRG_WP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_WP0_SHIFT)) & AIPS_PACRG_WP0_MASK)
-#define AIPS_PACRG_SP0_MASK                      (0x40000000U)
-#define AIPS_PACRG_SP0_SHIFT                     (30U)
-#define AIPS_PACRG_SP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRG_SP0_SHIFT)) & AIPS_PACRG_SP0_MASK)
-
-/*! @name PACRH - Peripheral Access Control Register */
-#define AIPS_PACRH_TP7_MASK                      (0x1U)
-#define AIPS_PACRH_TP7_SHIFT                     (0U)
-#define AIPS_PACRH_TP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_TP7_SHIFT)) & AIPS_PACRH_TP7_MASK)
-#define AIPS_PACRH_WP7_MASK                      (0x2U)
-#define AIPS_PACRH_WP7_SHIFT                     (1U)
-#define AIPS_PACRH_WP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_WP7_SHIFT)) & AIPS_PACRH_WP7_MASK)
-#define AIPS_PACRH_SP7_MASK                      (0x4U)
-#define AIPS_PACRH_SP7_SHIFT                     (2U)
-#define AIPS_PACRH_SP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_SP7_SHIFT)) & AIPS_PACRH_SP7_MASK)
-#define AIPS_PACRH_TP6_MASK                      (0x10U)
-#define AIPS_PACRH_TP6_SHIFT                     (4U)
-#define AIPS_PACRH_TP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_TP6_SHIFT)) & AIPS_PACRH_TP6_MASK)
-#define AIPS_PACRH_WP6_MASK                      (0x20U)
-#define AIPS_PACRH_WP6_SHIFT                     (5U)
-#define AIPS_PACRH_WP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_WP6_SHIFT)) & AIPS_PACRH_WP6_MASK)
-#define AIPS_PACRH_SP6_MASK                      (0x40U)
-#define AIPS_PACRH_SP6_SHIFT                     (6U)
-#define AIPS_PACRH_SP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_SP6_SHIFT)) & AIPS_PACRH_SP6_MASK)
-#define AIPS_PACRH_TP5_MASK                      (0x100U)
-#define AIPS_PACRH_TP5_SHIFT                     (8U)
-#define AIPS_PACRH_TP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_TP5_SHIFT)) & AIPS_PACRH_TP5_MASK)
-#define AIPS_PACRH_WP5_MASK                      (0x200U)
-#define AIPS_PACRH_WP5_SHIFT                     (9U)
-#define AIPS_PACRH_WP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_WP5_SHIFT)) & AIPS_PACRH_WP5_MASK)
-#define AIPS_PACRH_SP5_MASK                      (0x400U)
-#define AIPS_PACRH_SP5_SHIFT                     (10U)
-#define AIPS_PACRH_SP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_SP5_SHIFT)) & AIPS_PACRH_SP5_MASK)
-#define AIPS_PACRH_TP4_MASK                      (0x1000U)
-#define AIPS_PACRH_TP4_SHIFT                     (12U)
-#define AIPS_PACRH_TP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_TP4_SHIFT)) & AIPS_PACRH_TP4_MASK)
-#define AIPS_PACRH_WP4_MASK                      (0x2000U)
-#define AIPS_PACRH_WP4_SHIFT                     (13U)
-#define AIPS_PACRH_WP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_WP4_SHIFT)) & AIPS_PACRH_WP4_MASK)
-#define AIPS_PACRH_SP4_MASK                      (0x4000U)
-#define AIPS_PACRH_SP4_SHIFT                     (14U)
-#define AIPS_PACRH_SP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_SP4_SHIFT)) & AIPS_PACRH_SP4_MASK)
-#define AIPS_PACRH_TP3_MASK                      (0x10000U)
-#define AIPS_PACRH_TP3_SHIFT                     (16U)
-#define AIPS_PACRH_TP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_TP3_SHIFT)) & AIPS_PACRH_TP3_MASK)
-#define AIPS_PACRH_WP3_MASK                      (0x20000U)
-#define AIPS_PACRH_WP3_SHIFT                     (17U)
-#define AIPS_PACRH_WP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_WP3_SHIFT)) & AIPS_PACRH_WP3_MASK)
-#define AIPS_PACRH_SP3_MASK                      (0x40000U)
-#define AIPS_PACRH_SP3_SHIFT                     (18U)
-#define AIPS_PACRH_SP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_SP3_SHIFT)) & AIPS_PACRH_SP3_MASK)
-#define AIPS_PACRH_TP2_MASK                      (0x100000U)
-#define AIPS_PACRH_TP2_SHIFT                     (20U)
-#define AIPS_PACRH_TP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_TP2_SHIFT)) & AIPS_PACRH_TP2_MASK)
-#define AIPS_PACRH_WP2_MASK                      (0x200000U)
-#define AIPS_PACRH_WP2_SHIFT                     (21U)
-#define AIPS_PACRH_WP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_WP2_SHIFT)) & AIPS_PACRH_WP2_MASK)
-#define AIPS_PACRH_SP2_MASK                      (0x400000U)
-#define AIPS_PACRH_SP2_SHIFT                     (22U)
-#define AIPS_PACRH_SP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_SP2_SHIFT)) & AIPS_PACRH_SP2_MASK)
-#define AIPS_PACRH_TP1_MASK                      (0x1000000U)
-#define AIPS_PACRH_TP1_SHIFT                     (24U)
-#define AIPS_PACRH_TP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_TP1_SHIFT)) & AIPS_PACRH_TP1_MASK)
-#define AIPS_PACRH_WP1_MASK                      (0x2000000U)
-#define AIPS_PACRH_WP1_SHIFT                     (25U)
-#define AIPS_PACRH_WP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_WP1_SHIFT)) & AIPS_PACRH_WP1_MASK)
-#define AIPS_PACRH_SP1_MASK                      (0x4000000U)
-#define AIPS_PACRH_SP1_SHIFT                     (26U)
-#define AIPS_PACRH_SP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_SP1_SHIFT)) & AIPS_PACRH_SP1_MASK)
-#define AIPS_PACRH_TP0_MASK                      (0x10000000U)
-#define AIPS_PACRH_TP0_SHIFT                     (28U)
-#define AIPS_PACRH_TP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_TP0_SHIFT)) & AIPS_PACRH_TP0_MASK)
-#define AIPS_PACRH_WP0_MASK                      (0x20000000U)
-#define AIPS_PACRH_WP0_SHIFT                     (29U)
-#define AIPS_PACRH_WP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_WP0_SHIFT)) & AIPS_PACRH_WP0_MASK)
-#define AIPS_PACRH_SP0_MASK                      (0x40000000U)
-#define AIPS_PACRH_SP0_SHIFT                     (30U)
-#define AIPS_PACRH_SP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRH_SP0_SHIFT)) & AIPS_PACRH_SP0_MASK)
-
-/*! @name PACRI - Peripheral Access Control Register */
-#define AIPS_PACRI_TP7_MASK                      (0x1U)
-#define AIPS_PACRI_TP7_SHIFT                     (0U)
-#define AIPS_PACRI_TP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_TP7_SHIFT)) & AIPS_PACRI_TP7_MASK)
-#define AIPS_PACRI_WP7_MASK                      (0x2U)
-#define AIPS_PACRI_WP7_SHIFT                     (1U)
-#define AIPS_PACRI_WP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_WP7_SHIFT)) & AIPS_PACRI_WP7_MASK)
-#define AIPS_PACRI_SP7_MASK                      (0x4U)
-#define AIPS_PACRI_SP7_SHIFT                     (2U)
-#define AIPS_PACRI_SP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_SP7_SHIFT)) & AIPS_PACRI_SP7_MASK)
-#define AIPS_PACRI_TP6_MASK                      (0x10U)
-#define AIPS_PACRI_TP6_SHIFT                     (4U)
-#define AIPS_PACRI_TP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_TP6_SHIFT)) & AIPS_PACRI_TP6_MASK)
-#define AIPS_PACRI_WP6_MASK                      (0x20U)
-#define AIPS_PACRI_WP6_SHIFT                     (5U)
-#define AIPS_PACRI_WP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_WP6_SHIFT)) & AIPS_PACRI_WP6_MASK)
-#define AIPS_PACRI_SP6_MASK                      (0x40U)
-#define AIPS_PACRI_SP6_SHIFT                     (6U)
-#define AIPS_PACRI_SP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_SP6_SHIFT)) & AIPS_PACRI_SP6_MASK)
-#define AIPS_PACRI_TP5_MASK                      (0x100U)
-#define AIPS_PACRI_TP5_SHIFT                     (8U)
-#define AIPS_PACRI_TP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_TP5_SHIFT)) & AIPS_PACRI_TP5_MASK)
-#define AIPS_PACRI_WP5_MASK                      (0x200U)
-#define AIPS_PACRI_WP5_SHIFT                     (9U)
-#define AIPS_PACRI_WP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_WP5_SHIFT)) & AIPS_PACRI_WP5_MASK)
-#define AIPS_PACRI_SP5_MASK                      (0x400U)
-#define AIPS_PACRI_SP5_SHIFT                     (10U)
-#define AIPS_PACRI_SP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_SP5_SHIFT)) & AIPS_PACRI_SP5_MASK)
-#define AIPS_PACRI_TP4_MASK                      (0x1000U)
-#define AIPS_PACRI_TP4_SHIFT                     (12U)
-#define AIPS_PACRI_TP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_TP4_SHIFT)) & AIPS_PACRI_TP4_MASK)
-#define AIPS_PACRI_WP4_MASK                      (0x2000U)
-#define AIPS_PACRI_WP4_SHIFT                     (13U)
-#define AIPS_PACRI_WP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_WP4_SHIFT)) & AIPS_PACRI_WP4_MASK)
-#define AIPS_PACRI_SP4_MASK                      (0x4000U)
-#define AIPS_PACRI_SP4_SHIFT                     (14U)
-#define AIPS_PACRI_SP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_SP4_SHIFT)) & AIPS_PACRI_SP4_MASK)
-#define AIPS_PACRI_TP3_MASK                      (0x10000U)
-#define AIPS_PACRI_TP3_SHIFT                     (16U)
-#define AIPS_PACRI_TP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_TP3_SHIFT)) & AIPS_PACRI_TP3_MASK)
-#define AIPS_PACRI_WP3_MASK                      (0x20000U)
-#define AIPS_PACRI_WP3_SHIFT                     (17U)
-#define AIPS_PACRI_WP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_WP3_SHIFT)) & AIPS_PACRI_WP3_MASK)
-#define AIPS_PACRI_SP3_MASK                      (0x40000U)
-#define AIPS_PACRI_SP3_SHIFT                     (18U)
-#define AIPS_PACRI_SP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_SP3_SHIFT)) & AIPS_PACRI_SP3_MASK)
-#define AIPS_PACRI_TP2_MASK                      (0x100000U)
-#define AIPS_PACRI_TP2_SHIFT                     (20U)
-#define AIPS_PACRI_TP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_TP2_SHIFT)) & AIPS_PACRI_TP2_MASK)
-#define AIPS_PACRI_WP2_MASK                      (0x200000U)
-#define AIPS_PACRI_WP2_SHIFT                     (21U)
-#define AIPS_PACRI_WP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_WP2_SHIFT)) & AIPS_PACRI_WP2_MASK)
-#define AIPS_PACRI_SP2_MASK                      (0x400000U)
-#define AIPS_PACRI_SP2_SHIFT                     (22U)
-#define AIPS_PACRI_SP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_SP2_SHIFT)) & AIPS_PACRI_SP2_MASK)
-#define AIPS_PACRI_TP1_MASK                      (0x1000000U)
-#define AIPS_PACRI_TP1_SHIFT                     (24U)
-#define AIPS_PACRI_TP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_TP1_SHIFT)) & AIPS_PACRI_TP1_MASK)
-#define AIPS_PACRI_WP1_MASK                      (0x2000000U)
-#define AIPS_PACRI_WP1_SHIFT                     (25U)
-#define AIPS_PACRI_WP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_WP1_SHIFT)) & AIPS_PACRI_WP1_MASK)
-#define AIPS_PACRI_SP1_MASK                      (0x4000000U)
-#define AIPS_PACRI_SP1_SHIFT                     (26U)
-#define AIPS_PACRI_SP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_SP1_SHIFT)) & AIPS_PACRI_SP1_MASK)
-#define AIPS_PACRI_TP0_MASK                      (0x10000000U)
-#define AIPS_PACRI_TP0_SHIFT                     (28U)
-#define AIPS_PACRI_TP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_TP0_SHIFT)) & AIPS_PACRI_TP0_MASK)
-#define AIPS_PACRI_WP0_MASK                      (0x20000000U)
-#define AIPS_PACRI_WP0_SHIFT                     (29U)
-#define AIPS_PACRI_WP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_WP0_SHIFT)) & AIPS_PACRI_WP0_MASK)
-#define AIPS_PACRI_SP0_MASK                      (0x40000000U)
-#define AIPS_PACRI_SP0_SHIFT                     (30U)
-#define AIPS_PACRI_SP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRI_SP0_SHIFT)) & AIPS_PACRI_SP0_MASK)
-
-/*! @name PACRJ - Peripheral Access Control Register */
-#define AIPS_PACRJ_TP7_MASK                      (0x1U)
-#define AIPS_PACRJ_TP7_SHIFT                     (0U)
-#define AIPS_PACRJ_TP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_TP7_SHIFT)) & AIPS_PACRJ_TP7_MASK)
-#define AIPS_PACRJ_WP7_MASK                      (0x2U)
-#define AIPS_PACRJ_WP7_SHIFT                     (1U)
-#define AIPS_PACRJ_WP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_WP7_SHIFT)) & AIPS_PACRJ_WP7_MASK)
-#define AIPS_PACRJ_SP7_MASK                      (0x4U)
-#define AIPS_PACRJ_SP7_SHIFT                     (2U)
-#define AIPS_PACRJ_SP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_SP7_SHIFT)) & AIPS_PACRJ_SP7_MASK)
-#define AIPS_PACRJ_TP6_MASK                      (0x10U)
-#define AIPS_PACRJ_TP6_SHIFT                     (4U)
-#define AIPS_PACRJ_TP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_TP6_SHIFT)) & AIPS_PACRJ_TP6_MASK)
-#define AIPS_PACRJ_WP6_MASK                      (0x20U)
-#define AIPS_PACRJ_WP6_SHIFT                     (5U)
-#define AIPS_PACRJ_WP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_WP6_SHIFT)) & AIPS_PACRJ_WP6_MASK)
-#define AIPS_PACRJ_SP6_MASK                      (0x40U)
-#define AIPS_PACRJ_SP6_SHIFT                     (6U)
-#define AIPS_PACRJ_SP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_SP6_SHIFT)) & AIPS_PACRJ_SP6_MASK)
-#define AIPS_PACRJ_TP5_MASK                      (0x100U)
-#define AIPS_PACRJ_TP5_SHIFT                     (8U)
-#define AIPS_PACRJ_TP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_TP5_SHIFT)) & AIPS_PACRJ_TP5_MASK)
-#define AIPS_PACRJ_WP5_MASK                      (0x200U)
-#define AIPS_PACRJ_WP5_SHIFT                     (9U)
-#define AIPS_PACRJ_WP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_WP5_SHIFT)) & AIPS_PACRJ_WP5_MASK)
-#define AIPS_PACRJ_SP5_MASK                      (0x400U)
-#define AIPS_PACRJ_SP5_SHIFT                     (10U)
-#define AIPS_PACRJ_SP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_SP5_SHIFT)) & AIPS_PACRJ_SP5_MASK)
-#define AIPS_PACRJ_TP4_MASK                      (0x1000U)
-#define AIPS_PACRJ_TP4_SHIFT                     (12U)
-#define AIPS_PACRJ_TP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_TP4_SHIFT)) & AIPS_PACRJ_TP4_MASK)
-#define AIPS_PACRJ_WP4_MASK                      (0x2000U)
-#define AIPS_PACRJ_WP4_SHIFT                     (13U)
-#define AIPS_PACRJ_WP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_WP4_SHIFT)) & AIPS_PACRJ_WP4_MASK)
-#define AIPS_PACRJ_SP4_MASK                      (0x4000U)
-#define AIPS_PACRJ_SP4_SHIFT                     (14U)
-#define AIPS_PACRJ_SP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_SP4_SHIFT)) & AIPS_PACRJ_SP4_MASK)
-#define AIPS_PACRJ_TP3_MASK                      (0x10000U)
-#define AIPS_PACRJ_TP3_SHIFT                     (16U)
-#define AIPS_PACRJ_TP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_TP3_SHIFT)) & AIPS_PACRJ_TP3_MASK)
-#define AIPS_PACRJ_WP3_MASK                      (0x20000U)
-#define AIPS_PACRJ_WP3_SHIFT                     (17U)
-#define AIPS_PACRJ_WP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_WP3_SHIFT)) & AIPS_PACRJ_WP3_MASK)
-#define AIPS_PACRJ_SP3_MASK                      (0x40000U)
-#define AIPS_PACRJ_SP3_SHIFT                     (18U)
-#define AIPS_PACRJ_SP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_SP3_SHIFT)) & AIPS_PACRJ_SP3_MASK)
-#define AIPS_PACRJ_TP2_MASK                      (0x100000U)
-#define AIPS_PACRJ_TP2_SHIFT                     (20U)
-#define AIPS_PACRJ_TP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_TP2_SHIFT)) & AIPS_PACRJ_TP2_MASK)
-#define AIPS_PACRJ_WP2_MASK                      (0x200000U)
-#define AIPS_PACRJ_WP2_SHIFT                     (21U)
-#define AIPS_PACRJ_WP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_WP2_SHIFT)) & AIPS_PACRJ_WP2_MASK)
-#define AIPS_PACRJ_SP2_MASK                      (0x400000U)
-#define AIPS_PACRJ_SP2_SHIFT                     (22U)
-#define AIPS_PACRJ_SP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_SP2_SHIFT)) & AIPS_PACRJ_SP2_MASK)
-#define AIPS_PACRJ_TP1_MASK                      (0x1000000U)
-#define AIPS_PACRJ_TP1_SHIFT                     (24U)
-#define AIPS_PACRJ_TP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_TP1_SHIFT)) & AIPS_PACRJ_TP1_MASK)
-#define AIPS_PACRJ_WP1_MASK                      (0x2000000U)
-#define AIPS_PACRJ_WP1_SHIFT                     (25U)
-#define AIPS_PACRJ_WP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_WP1_SHIFT)) & AIPS_PACRJ_WP1_MASK)
-#define AIPS_PACRJ_SP1_MASK                      (0x4000000U)
-#define AIPS_PACRJ_SP1_SHIFT                     (26U)
-#define AIPS_PACRJ_SP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_SP1_SHIFT)) & AIPS_PACRJ_SP1_MASK)
-#define AIPS_PACRJ_TP0_MASK                      (0x10000000U)
-#define AIPS_PACRJ_TP0_SHIFT                     (28U)
-#define AIPS_PACRJ_TP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_TP0_SHIFT)) & AIPS_PACRJ_TP0_MASK)
-#define AIPS_PACRJ_WP0_MASK                      (0x20000000U)
-#define AIPS_PACRJ_WP0_SHIFT                     (29U)
-#define AIPS_PACRJ_WP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_WP0_SHIFT)) & AIPS_PACRJ_WP0_MASK)
-#define AIPS_PACRJ_SP0_MASK                      (0x40000000U)
-#define AIPS_PACRJ_SP0_SHIFT                     (30U)
-#define AIPS_PACRJ_SP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRJ_SP0_SHIFT)) & AIPS_PACRJ_SP0_MASK)
-
-/*! @name PACRK - Peripheral Access Control Register */
-#define AIPS_PACRK_TP7_MASK                      (0x1U)
-#define AIPS_PACRK_TP7_SHIFT                     (0U)
-#define AIPS_PACRK_TP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_TP7_SHIFT)) & AIPS_PACRK_TP7_MASK)
-#define AIPS_PACRK_WP7_MASK                      (0x2U)
-#define AIPS_PACRK_WP7_SHIFT                     (1U)
-#define AIPS_PACRK_WP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_WP7_SHIFT)) & AIPS_PACRK_WP7_MASK)
-#define AIPS_PACRK_SP7_MASK                      (0x4U)
-#define AIPS_PACRK_SP7_SHIFT                     (2U)
-#define AIPS_PACRK_SP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_SP7_SHIFT)) & AIPS_PACRK_SP7_MASK)
-#define AIPS_PACRK_TP6_MASK                      (0x10U)
-#define AIPS_PACRK_TP6_SHIFT                     (4U)
-#define AIPS_PACRK_TP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_TP6_SHIFT)) & AIPS_PACRK_TP6_MASK)
-#define AIPS_PACRK_WP6_MASK                      (0x20U)
-#define AIPS_PACRK_WP6_SHIFT                     (5U)
-#define AIPS_PACRK_WP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_WP6_SHIFT)) & AIPS_PACRK_WP6_MASK)
-#define AIPS_PACRK_SP6_MASK                      (0x40U)
-#define AIPS_PACRK_SP6_SHIFT                     (6U)
-#define AIPS_PACRK_SP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_SP6_SHIFT)) & AIPS_PACRK_SP6_MASK)
-#define AIPS_PACRK_TP5_MASK                      (0x100U)
-#define AIPS_PACRK_TP5_SHIFT                     (8U)
-#define AIPS_PACRK_TP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_TP5_SHIFT)) & AIPS_PACRK_TP5_MASK)
-#define AIPS_PACRK_WP5_MASK                      (0x200U)
-#define AIPS_PACRK_WP5_SHIFT                     (9U)
-#define AIPS_PACRK_WP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_WP5_SHIFT)) & AIPS_PACRK_WP5_MASK)
-#define AIPS_PACRK_SP5_MASK                      (0x400U)
-#define AIPS_PACRK_SP5_SHIFT                     (10U)
-#define AIPS_PACRK_SP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_SP5_SHIFT)) & AIPS_PACRK_SP5_MASK)
-#define AIPS_PACRK_TP4_MASK                      (0x1000U)
-#define AIPS_PACRK_TP4_SHIFT                     (12U)
-#define AIPS_PACRK_TP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_TP4_SHIFT)) & AIPS_PACRK_TP4_MASK)
-#define AIPS_PACRK_WP4_MASK                      (0x2000U)
-#define AIPS_PACRK_WP4_SHIFT                     (13U)
-#define AIPS_PACRK_WP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_WP4_SHIFT)) & AIPS_PACRK_WP4_MASK)
-#define AIPS_PACRK_SP4_MASK                      (0x4000U)
-#define AIPS_PACRK_SP4_SHIFT                     (14U)
-#define AIPS_PACRK_SP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_SP4_SHIFT)) & AIPS_PACRK_SP4_MASK)
-#define AIPS_PACRK_TP3_MASK                      (0x10000U)
-#define AIPS_PACRK_TP3_SHIFT                     (16U)
-#define AIPS_PACRK_TP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_TP3_SHIFT)) & AIPS_PACRK_TP3_MASK)
-#define AIPS_PACRK_WP3_MASK                      (0x20000U)
-#define AIPS_PACRK_WP3_SHIFT                     (17U)
-#define AIPS_PACRK_WP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_WP3_SHIFT)) & AIPS_PACRK_WP3_MASK)
-#define AIPS_PACRK_SP3_MASK                      (0x40000U)
-#define AIPS_PACRK_SP3_SHIFT                     (18U)
-#define AIPS_PACRK_SP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_SP3_SHIFT)) & AIPS_PACRK_SP3_MASK)
-#define AIPS_PACRK_TP2_MASK                      (0x100000U)
-#define AIPS_PACRK_TP2_SHIFT                     (20U)
-#define AIPS_PACRK_TP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_TP2_SHIFT)) & AIPS_PACRK_TP2_MASK)
-#define AIPS_PACRK_WP2_MASK                      (0x200000U)
-#define AIPS_PACRK_WP2_SHIFT                     (21U)
-#define AIPS_PACRK_WP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_WP2_SHIFT)) & AIPS_PACRK_WP2_MASK)
-#define AIPS_PACRK_SP2_MASK                      (0x400000U)
-#define AIPS_PACRK_SP2_SHIFT                     (22U)
-#define AIPS_PACRK_SP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_SP2_SHIFT)) & AIPS_PACRK_SP2_MASK)
-#define AIPS_PACRK_TP1_MASK                      (0x1000000U)
-#define AIPS_PACRK_TP1_SHIFT                     (24U)
-#define AIPS_PACRK_TP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_TP1_SHIFT)) & AIPS_PACRK_TP1_MASK)
-#define AIPS_PACRK_WP1_MASK                      (0x2000000U)
-#define AIPS_PACRK_WP1_SHIFT                     (25U)
-#define AIPS_PACRK_WP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_WP1_SHIFT)) & AIPS_PACRK_WP1_MASK)
-#define AIPS_PACRK_SP1_MASK                      (0x4000000U)
-#define AIPS_PACRK_SP1_SHIFT                     (26U)
-#define AIPS_PACRK_SP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_SP1_SHIFT)) & AIPS_PACRK_SP1_MASK)
-#define AIPS_PACRK_TP0_MASK                      (0x10000000U)
-#define AIPS_PACRK_TP0_SHIFT                     (28U)
-#define AIPS_PACRK_TP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_TP0_SHIFT)) & AIPS_PACRK_TP0_MASK)
-#define AIPS_PACRK_WP0_MASK                      (0x20000000U)
-#define AIPS_PACRK_WP0_SHIFT                     (29U)
-#define AIPS_PACRK_WP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_WP0_SHIFT)) & AIPS_PACRK_WP0_MASK)
-#define AIPS_PACRK_SP0_MASK                      (0x40000000U)
-#define AIPS_PACRK_SP0_SHIFT                     (30U)
-#define AIPS_PACRK_SP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRK_SP0_SHIFT)) & AIPS_PACRK_SP0_MASK)
-
-/*! @name PACRL - Peripheral Access Control Register */
-#define AIPS_PACRL_TP7_MASK                      (0x1U)
-#define AIPS_PACRL_TP7_SHIFT                     (0U)
-#define AIPS_PACRL_TP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_TP7_SHIFT)) & AIPS_PACRL_TP7_MASK)
-#define AIPS_PACRL_WP7_MASK                      (0x2U)
-#define AIPS_PACRL_WP7_SHIFT                     (1U)
-#define AIPS_PACRL_WP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_WP7_SHIFT)) & AIPS_PACRL_WP7_MASK)
-#define AIPS_PACRL_SP7_MASK                      (0x4U)
-#define AIPS_PACRL_SP7_SHIFT                     (2U)
-#define AIPS_PACRL_SP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_SP7_SHIFT)) & AIPS_PACRL_SP7_MASK)
-#define AIPS_PACRL_TP6_MASK                      (0x10U)
-#define AIPS_PACRL_TP6_SHIFT                     (4U)
-#define AIPS_PACRL_TP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_TP6_SHIFT)) & AIPS_PACRL_TP6_MASK)
-#define AIPS_PACRL_WP6_MASK                      (0x20U)
-#define AIPS_PACRL_WP6_SHIFT                     (5U)
-#define AIPS_PACRL_WP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_WP6_SHIFT)) & AIPS_PACRL_WP6_MASK)
-#define AIPS_PACRL_SP6_MASK                      (0x40U)
-#define AIPS_PACRL_SP6_SHIFT                     (6U)
-#define AIPS_PACRL_SP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_SP6_SHIFT)) & AIPS_PACRL_SP6_MASK)
-#define AIPS_PACRL_TP5_MASK                      (0x100U)
-#define AIPS_PACRL_TP5_SHIFT                     (8U)
-#define AIPS_PACRL_TP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_TP5_SHIFT)) & AIPS_PACRL_TP5_MASK)
-#define AIPS_PACRL_WP5_MASK                      (0x200U)
-#define AIPS_PACRL_WP5_SHIFT                     (9U)
-#define AIPS_PACRL_WP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_WP5_SHIFT)) & AIPS_PACRL_WP5_MASK)
-#define AIPS_PACRL_SP5_MASK                      (0x400U)
-#define AIPS_PACRL_SP5_SHIFT                     (10U)
-#define AIPS_PACRL_SP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_SP5_SHIFT)) & AIPS_PACRL_SP5_MASK)
-#define AIPS_PACRL_TP4_MASK                      (0x1000U)
-#define AIPS_PACRL_TP4_SHIFT                     (12U)
-#define AIPS_PACRL_TP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_TP4_SHIFT)) & AIPS_PACRL_TP4_MASK)
-#define AIPS_PACRL_WP4_MASK                      (0x2000U)
-#define AIPS_PACRL_WP4_SHIFT                     (13U)
-#define AIPS_PACRL_WP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_WP4_SHIFT)) & AIPS_PACRL_WP4_MASK)
-#define AIPS_PACRL_SP4_MASK                      (0x4000U)
-#define AIPS_PACRL_SP4_SHIFT                     (14U)
-#define AIPS_PACRL_SP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_SP4_SHIFT)) & AIPS_PACRL_SP4_MASK)
-#define AIPS_PACRL_TP3_MASK                      (0x10000U)
-#define AIPS_PACRL_TP3_SHIFT                     (16U)
-#define AIPS_PACRL_TP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_TP3_SHIFT)) & AIPS_PACRL_TP3_MASK)
-#define AIPS_PACRL_WP3_MASK                      (0x20000U)
-#define AIPS_PACRL_WP3_SHIFT                     (17U)
-#define AIPS_PACRL_WP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_WP3_SHIFT)) & AIPS_PACRL_WP3_MASK)
-#define AIPS_PACRL_SP3_MASK                      (0x40000U)
-#define AIPS_PACRL_SP3_SHIFT                     (18U)
-#define AIPS_PACRL_SP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_SP3_SHIFT)) & AIPS_PACRL_SP3_MASK)
-#define AIPS_PACRL_TP2_MASK                      (0x100000U)
-#define AIPS_PACRL_TP2_SHIFT                     (20U)
-#define AIPS_PACRL_TP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_TP2_SHIFT)) & AIPS_PACRL_TP2_MASK)
-#define AIPS_PACRL_WP2_MASK                      (0x200000U)
-#define AIPS_PACRL_WP2_SHIFT                     (21U)
-#define AIPS_PACRL_WP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_WP2_SHIFT)) & AIPS_PACRL_WP2_MASK)
-#define AIPS_PACRL_SP2_MASK                      (0x400000U)
-#define AIPS_PACRL_SP2_SHIFT                     (22U)
-#define AIPS_PACRL_SP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_SP2_SHIFT)) & AIPS_PACRL_SP2_MASK)
-#define AIPS_PACRL_TP1_MASK                      (0x1000000U)
-#define AIPS_PACRL_TP1_SHIFT                     (24U)
-#define AIPS_PACRL_TP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_TP1_SHIFT)) & AIPS_PACRL_TP1_MASK)
-#define AIPS_PACRL_WP1_MASK                      (0x2000000U)
-#define AIPS_PACRL_WP1_SHIFT                     (25U)
-#define AIPS_PACRL_WP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_WP1_SHIFT)) & AIPS_PACRL_WP1_MASK)
-#define AIPS_PACRL_SP1_MASK                      (0x4000000U)
-#define AIPS_PACRL_SP1_SHIFT                     (26U)
-#define AIPS_PACRL_SP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_SP1_SHIFT)) & AIPS_PACRL_SP1_MASK)
-#define AIPS_PACRL_TP0_MASK                      (0x10000000U)
-#define AIPS_PACRL_TP0_SHIFT                     (28U)
-#define AIPS_PACRL_TP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_TP0_SHIFT)) & AIPS_PACRL_TP0_MASK)
-#define AIPS_PACRL_WP0_MASK                      (0x20000000U)
-#define AIPS_PACRL_WP0_SHIFT                     (29U)
-#define AIPS_PACRL_WP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_WP0_SHIFT)) & AIPS_PACRL_WP0_MASK)
-#define AIPS_PACRL_SP0_MASK                      (0x40000000U)
-#define AIPS_PACRL_SP0_SHIFT                     (30U)
-#define AIPS_PACRL_SP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRL_SP0_SHIFT)) & AIPS_PACRL_SP0_MASK)
-
-/*! @name PACRM - Peripheral Access Control Register */
-#define AIPS_PACRM_TP7_MASK                      (0x1U)
-#define AIPS_PACRM_TP7_SHIFT                     (0U)
-#define AIPS_PACRM_TP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_TP7_SHIFT)) & AIPS_PACRM_TP7_MASK)
-#define AIPS_PACRM_WP7_MASK                      (0x2U)
-#define AIPS_PACRM_WP7_SHIFT                     (1U)
-#define AIPS_PACRM_WP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_WP7_SHIFT)) & AIPS_PACRM_WP7_MASK)
-#define AIPS_PACRM_SP7_MASK                      (0x4U)
-#define AIPS_PACRM_SP7_SHIFT                     (2U)
-#define AIPS_PACRM_SP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_SP7_SHIFT)) & AIPS_PACRM_SP7_MASK)
-#define AIPS_PACRM_TP6_MASK                      (0x10U)
-#define AIPS_PACRM_TP6_SHIFT                     (4U)
-#define AIPS_PACRM_TP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_TP6_SHIFT)) & AIPS_PACRM_TP6_MASK)
-#define AIPS_PACRM_WP6_MASK                      (0x20U)
-#define AIPS_PACRM_WP6_SHIFT                     (5U)
-#define AIPS_PACRM_WP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_WP6_SHIFT)) & AIPS_PACRM_WP6_MASK)
-#define AIPS_PACRM_SP6_MASK                      (0x40U)
-#define AIPS_PACRM_SP6_SHIFT                     (6U)
-#define AIPS_PACRM_SP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_SP6_SHIFT)) & AIPS_PACRM_SP6_MASK)
-#define AIPS_PACRM_TP5_MASK                      (0x100U)
-#define AIPS_PACRM_TP5_SHIFT                     (8U)
-#define AIPS_PACRM_TP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_TP5_SHIFT)) & AIPS_PACRM_TP5_MASK)
-#define AIPS_PACRM_WP5_MASK                      (0x200U)
-#define AIPS_PACRM_WP5_SHIFT                     (9U)
-#define AIPS_PACRM_WP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_WP5_SHIFT)) & AIPS_PACRM_WP5_MASK)
-#define AIPS_PACRM_SP5_MASK                      (0x400U)
-#define AIPS_PACRM_SP5_SHIFT                     (10U)
-#define AIPS_PACRM_SP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_SP5_SHIFT)) & AIPS_PACRM_SP5_MASK)
-#define AIPS_PACRM_TP4_MASK                      (0x1000U)
-#define AIPS_PACRM_TP4_SHIFT                     (12U)
-#define AIPS_PACRM_TP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_TP4_SHIFT)) & AIPS_PACRM_TP4_MASK)
-#define AIPS_PACRM_WP4_MASK                      (0x2000U)
-#define AIPS_PACRM_WP4_SHIFT                     (13U)
-#define AIPS_PACRM_WP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_WP4_SHIFT)) & AIPS_PACRM_WP4_MASK)
-#define AIPS_PACRM_SP4_MASK                      (0x4000U)
-#define AIPS_PACRM_SP4_SHIFT                     (14U)
-#define AIPS_PACRM_SP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_SP4_SHIFT)) & AIPS_PACRM_SP4_MASK)
-#define AIPS_PACRM_TP3_MASK                      (0x10000U)
-#define AIPS_PACRM_TP3_SHIFT                     (16U)
-#define AIPS_PACRM_TP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_TP3_SHIFT)) & AIPS_PACRM_TP3_MASK)
-#define AIPS_PACRM_WP3_MASK                      (0x20000U)
-#define AIPS_PACRM_WP3_SHIFT                     (17U)
-#define AIPS_PACRM_WP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_WP3_SHIFT)) & AIPS_PACRM_WP3_MASK)
-#define AIPS_PACRM_SP3_MASK                      (0x40000U)
-#define AIPS_PACRM_SP3_SHIFT                     (18U)
-#define AIPS_PACRM_SP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_SP3_SHIFT)) & AIPS_PACRM_SP3_MASK)
-#define AIPS_PACRM_TP2_MASK                      (0x100000U)
-#define AIPS_PACRM_TP2_SHIFT                     (20U)
-#define AIPS_PACRM_TP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_TP2_SHIFT)) & AIPS_PACRM_TP2_MASK)
-#define AIPS_PACRM_WP2_MASK                      (0x200000U)
-#define AIPS_PACRM_WP2_SHIFT                     (21U)
-#define AIPS_PACRM_WP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_WP2_SHIFT)) & AIPS_PACRM_WP2_MASK)
-#define AIPS_PACRM_SP2_MASK                      (0x400000U)
-#define AIPS_PACRM_SP2_SHIFT                     (22U)
-#define AIPS_PACRM_SP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_SP2_SHIFT)) & AIPS_PACRM_SP2_MASK)
-#define AIPS_PACRM_TP1_MASK                      (0x1000000U)
-#define AIPS_PACRM_TP1_SHIFT                     (24U)
-#define AIPS_PACRM_TP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_TP1_SHIFT)) & AIPS_PACRM_TP1_MASK)
-#define AIPS_PACRM_WP1_MASK                      (0x2000000U)
-#define AIPS_PACRM_WP1_SHIFT                     (25U)
-#define AIPS_PACRM_WP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_WP1_SHIFT)) & AIPS_PACRM_WP1_MASK)
-#define AIPS_PACRM_SP1_MASK                      (0x4000000U)
-#define AIPS_PACRM_SP1_SHIFT                     (26U)
-#define AIPS_PACRM_SP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_SP1_SHIFT)) & AIPS_PACRM_SP1_MASK)
-#define AIPS_PACRM_TP0_MASK                      (0x10000000U)
-#define AIPS_PACRM_TP0_SHIFT                     (28U)
-#define AIPS_PACRM_TP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_TP0_SHIFT)) & AIPS_PACRM_TP0_MASK)
-#define AIPS_PACRM_WP0_MASK                      (0x20000000U)
-#define AIPS_PACRM_WP0_SHIFT                     (29U)
-#define AIPS_PACRM_WP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_WP0_SHIFT)) & AIPS_PACRM_WP0_MASK)
-#define AIPS_PACRM_SP0_MASK                      (0x40000000U)
-#define AIPS_PACRM_SP0_SHIFT                     (30U)
-#define AIPS_PACRM_SP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRM_SP0_SHIFT)) & AIPS_PACRM_SP0_MASK)
-
-/*! @name PACRN - Peripheral Access Control Register */
-#define AIPS_PACRN_TP7_MASK                      (0x1U)
-#define AIPS_PACRN_TP7_SHIFT                     (0U)
-#define AIPS_PACRN_TP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_TP7_SHIFT)) & AIPS_PACRN_TP7_MASK)
-#define AIPS_PACRN_WP7_MASK                      (0x2U)
-#define AIPS_PACRN_WP7_SHIFT                     (1U)
-#define AIPS_PACRN_WP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_WP7_SHIFT)) & AIPS_PACRN_WP7_MASK)
-#define AIPS_PACRN_SP7_MASK                      (0x4U)
-#define AIPS_PACRN_SP7_SHIFT                     (2U)
-#define AIPS_PACRN_SP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_SP7_SHIFT)) & AIPS_PACRN_SP7_MASK)
-#define AIPS_PACRN_TP6_MASK                      (0x10U)
-#define AIPS_PACRN_TP6_SHIFT                     (4U)
-#define AIPS_PACRN_TP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_TP6_SHIFT)) & AIPS_PACRN_TP6_MASK)
-#define AIPS_PACRN_WP6_MASK                      (0x20U)
-#define AIPS_PACRN_WP6_SHIFT                     (5U)
-#define AIPS_PACRN_WP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_WP6_SHIFT)) & AIPS_PACRN_WP6_MASK)
-#define AIPS_PACRN_SP6_MASK                      (0x40U)
-#define AIPS_PACRN_SP6_SHIFT                     (6U)
-#define AIPS_PACRN_SP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_SP6_SHIFT)) & AIPS_PACRN_SP6_MASK)
-#define AIPS_PACRN_TP5_MASK                      (0x100U)
-#define AIPS_PACRN_TP5_SHIFT                     (8U)
-#define AIPS_PACRN_TP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_TP5_SHIFT)) & AIPS_PACRN_TP5_MASK)
-#define AIPS_PACRN_WP5_MASK                      (0x200U)
-#define AIPS_PACRN_WP5_SHIFT                     (9U)
-#define AIPS_PACRN_WP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_WP5_SHIFT)) & AIPS_PACRN_WP5_MASK)
-#define AIPS_PACRN_SP5_MASK                      (0x400U)
-#define AIPS_PACRN_SP5_SHIFT                     (10U)
-#define AIPS_PACRN_SP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_SP5_SHIFT)) & AIPS_PACRN_SP5_MASK)
-#define AIPS_PACRN_TP4_MASK                      (0x1000U)
-#define AIPS_PACRN_TP4_SHIFT                     (12U)
-#define AIPS_PACRN_TP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_TP4_SHIFT)) & AIPS_PACRN_TP4_MASK)
-#define AIPS_PACRN_WP4_MASK                      (0x2000U)
-#define AIPS_PACRN_WP4_SHIFT                     (13U)
-#define AIPS_PACRN_WP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_WP4_SHIFT)) & AIPS_PACRN_WP4_MASK)
-#define AIPS_PACRN_SP4_MASK                      (0x4000U)
-#define AIPS_PACRN_SP4_SHIFT                     (14U)
-#define AIPS_PACRN_SP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_SP4_SHIFT)) & AIPS_PACRN_SP4_MASK)
-#define AIPS_PACRN_TP3_MASK                      (0x10000U)
-#define AIPS_PACRN_TP3_SHIFT                     (16U)
-#define AIPS_PACRN_TP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_TP3_SHIFT)) & AIPS_PACRN_TP3_MASK)
-#define AIPS_PACRN_WP3_MASK                      (0x20000U)
-#define AIPS_PACRN_WP3_SHIFT                     (17U)
-#define AIPS_PACRN_WP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_WP3_SHIFT)) & AIPS_PACRN_WP3_MASK)
-#define AIPS_PACRN_SP3_MASK                      (0x40000U)
-#define AIPS_PACRN_SP3_SHIFT                     (18U)
-#define AIPS_PACRN_SP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_SP3_SHIFT)) & AIPS_PACRN_SP3_MASK)
-#define AIPS_PACRN_TP2_MASK                      (0x100000U)
-#define AIPS_PACRN_TP2_SHIFT                     (20U)
-#define AIPS_PACRN_TP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_TP2_SHIFT)) & AIPS_PACRN_TP2_MASK)
-#define AIPS_PACRN_WP2_MASK                      (0x200000U)
-#define AIPS_PACRN_WP2_SHIFT                     (21U)
-#define AIPS_PACRN_WP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_WP2_SHIFT)) & AIPS_PACRN_WP2_MASK)
-#define AIPS_PACRN_SP2_MASK                      (0x400000U)
-#define AIPS_PACRN_SP2_SHIFT                     (22U)
-#define AIPS_PACRN_SP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_SP2_SHIFT)) & AIPS_PACRN_SP2_MASK)
-#define AIPS_PACRN_TP1_MASK                      (0x1000000U)
-#define AIPS_PACRN_TP1_SHIFT                     (24U)
-#define AIPS_PACRN_TP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_TP1_SHIFT)) & AIPS_PACRN_TP1_MASK)
-#define AIPS_PACRN_WP1_MASK                      (0x2000000U)
-#define AIPS_PACRN_WP1_SHIFT                     (25U)
-#define AIPS_PACRN_WP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_WP1_SHIFT)) & AIPS_PACRN_WP1_MASK)
-#define AIPS_PACRN_SP1_MASK                      (0x4000000U)
-#define AIPS_PACRN_SP1_SHIFT                     (26U)
-#define AIPS_PACRN_SP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_SP1_SHIFT)) & AIPS_PACRN_SP1_MASK)
-#define AIPS_PACRN_TP0_MASK                      (0x10000000U)
-#define AIPS_PACRN_TP0_SHIFT                     (28U)
-#define AIPS_PACRN_TP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_TP0_SHIFT)) & AIPS_PACRN_TP0_MASK)
-#define AIPS_PACRN_WP0_MASK                      (0x20000000U)
-#define AIPS_PACRN_WP0_SHIFT                     (29U)
-#define AIPS_PACRN_WP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_WP0_SHIFT)) & AIPS_PACRN_WP0_MASK)
-#define AIPS_PACRN_SP0_MASK                      (0x40000000U)
-#define AIPS_PACRN_SP0_SHIFT                     (30U)
-#define AIPS_PACRN_SP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRN_SP0_SHIFT)) & AIPS_PACRN_SP0_MASK)
-
-/*! @name PACRO - Peripheral Access Control Register */
-#define AIPS_PACRO_TP7_MASK                      (0x1U)
-#define AIPS_PACRO_TP7_SHIFT                     (0U)
-#define AIPS_PACRO_TP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_TP7_SHIFT)) & AIPS_PACRO_TP7_MASK)
-#define AIPS_PACRO_WP7_MASK                      (0x2U)
-#define AIPS_PACRO_WP7_SHIFT                     (1U)
-#define AIPS_PACRO_WP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_WP7_SHIFT)) & AIPS_PACRO_WP7_MASK)
-#define AIPS_PACRO_SP7_MASK                      (0x4U)
-#define AIPS_PACRO_SP7_SHIFT                     (2U)
-#define AIPS_PACRO_SP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_SP7_SHIFT)) & AIPS_PACRO_SP7_MASK)
-#define AIPS_PACRO_TP6_MASK                      (0x10U)
-#define AIPS_PACRO_TP6_SHIFT                     (4U)
-#define AIPS_PACRO_TP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_TP6_SHIFT)) & AIPS_PACRO_TP6_MASK)
-#define AIPS_PACRO_WP6_MASK                      (0x20U)
-#define AIPS_PACRO_WP6_SHIFT                     (5U)
-#define AIPS_PACRO_WP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_WP6_SHIFT)) & AIPS_PACRO_WP6_MASK)
-#define AIPS_PACRO_SP6_MASK                      (0x40U)
-#define AIPS_PACRO_SP6_SHIFT                     (6U)
-#define AIPS_PACRO_SP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_SP6_SHIFT)) & AIPS_PACRO_SP6_MASK)
-#define AIPS_PACRO_TP5_MASK                      (0x100U)
-#define AIPS_PACRO_TP5_SHIFT                     (8U)
-#define AIPS_PACRO_TP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_TP5_SHIFT)) & AIPS_PACRO_TP5_MASK)
-#define AIPS_PACRO_WP5_MASK                      (0x200U)
-#define AIPS_PACRO_WP5_SHIFT                     (9U)
-#define AIPS_PACRO_WP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_WP5_SHIFT)) & AIPS_PACRO_WP5_MASK)
-#define AIPS_PACRO_SP5_MASK                      (0x400U)
-#define AIPS_PACRO_SP5_SHIFT                     (10U)
-#define AIPS_PACRO_SP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_SP5_SHIFT)) & AIPS_PACRO_SP5_MASK)
-#define AIPS_PACRO_TP4_MASK                      (0x1000U)
-#define AIPS_PACRO_TP4_SHIFT                     (12U)
-#define AIPS_PACRO_TP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_TP4_SHIFT)) & AIPS_PACRO_TP4_MASK)
-#define AIPS_PACRO_WP4_MASK                      (0x2000U)
-#define AIPS_PACRO_WP4_SHIFT                     (13U)
-#define AIPS_PACRO_WP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_WP4_SHIFT)) & AIPS_PACRO_WP4_MASK)
-#define AIPS_PACRO_SP4_MASK                      (0x4000U)
-#define AIPS_PACRO_SP4_SHIFT                     (14U)
-#define AIPS_PACRO_SP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_SP4_SHIFT)) & AIPS_PACRO_SP4_MASK)
-#define AIPS_PACRO_TP3_MASK                      (0x10000U)
-#define AIPS_PACRO_TP3_SHIFT                     (16U)
-#define AIPS_PACRO_TP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_TP3_SHIFT)) & AIPS_PACRO_TP3_MASK)
-#define AIPS_PACRO_WP3_MASK                      (0x20000U)
-#define AIPS_PACRO_WP3_SHIFT                     (17U)
-#define AIPS_PACRO_WP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_WP3_SHIFT)) & AIPS_PACRO_WP3_MASK)
-#define AIPS_PACRO_SP3_MASK                      (0x40000U)
-#define AIPS_PACRO_SP3_SHIFT                     (18U)
-#define AIPS_PACRO_SP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_SP3_SHIFT)) & AIPS_PACRO_SP3_MASK)
-#define AIPS_PACRO_TP2_MASK                      (0x100000U)
-#define AIPS_PACRO_TP2_SHIFT                     (20U)
-#define AIPS_PACRO_TP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_TP2_SHIFT)) & AIPS_PACRO_TP2_MASK)
-#define AIPS_PACRO_WP2_MASK                      (0x200000U)
-#define AIPS_PACRO_WP2_SHIFT                     (21U)
-#define AIPS_PACRO_WP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_WP2_SHIFT)) & AIPS_PACRO_WP2_MASK)
-#define AIPS_PACRO_SP2_MASK                      (0x400000U)
-#define AIPS_PACRO_SP2_SHIFT                     (22U)
-#define AIPS_PACRO_SP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_SP2_SHIFT)) & AIPS_PACRO_SP2_MASK)
-#define AIPS_PACRO_TP1_MASK                      (0x1000000U)
-#define AIPS_PACRO_TP1_SHIFT                     (24U)
-#define AIPS_PACRO_TP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_TP1_SHIFT)) & AIPS_PACRO_TP1_MASK)
-#define AIPS_PACRO_WP1_MASK                      (0x2000000U)
-#define AIPS_PACRO_WP1_SHIFT                     (25U)
-#define AIPS_PACRO_WP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_WP1_SHIFT)) & AIPS_PACRO_WP1_MASK)
-#define AIPS_PACRO_SP1_MASK                      (0x4000000U)
-#define AIPS_PACRO_SP1_SHIFT                     (26U)
-#define AIPS_PACRO_SP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_SP1_SHIFT)) & AIPS_PACRO_SP1_MASK)
-#define AIPS_PACRO_TP0_MASK                      (0x10000000U)
-#define AIPS_PACRO_TP0_SHIFT                     (28U)
-#define AIPS_PACRO_TP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_TP0_SHIFT)) & AIPS_PACRO_TP0_MASK)
-#define AIPS_PACRO_WP0_MASK                      (0x20000000U)
-#define AIPS_PACRO_WP0_SHIFT                     (29U)
-#define AIPS_PACRO_WP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_WP0_SHIFT)) & AIPS_PACRO_WP0_MASK)
-#define AIPS_PACRO_SP0_MASK                      (0x40000000U)
-#define AIPS_PACRO_SP0_SHIFT                     (30U)
-#define AIPS_PACRO_SP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRO_SP0_SHIFT)) & AIPS_PACRO_SP0_MASK)
-
-/*! @name PACRP - Peripheral Access Control Register */
-#define AIPS_PACRP_TP7_MASK                      (0x1U)
-#define AIPS_PACRP_TP7_SHIFT                     (0U)
-#define AIPS_PACRP_TP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_TP7_SHIFT)) & AIPS_PACRP_TP7_MASK)
-#define AIPS_PACRP_WP7_MASK                      (0x2U)
-#define AIPS_PACRP_WP7_SHIFT                     (1U)
-#define AIPS_PACRP_WP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_WP7_SHIFT)) & AIPS_PACRP_WP7_MASK)
-#define AIPS_PACRP_SP7_MASK                      (0x4U)
-#define AIPS_PACRP_SP7_SHIFT                     (2U)
-#define AIPS_PACRP_SP7(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_SP7_SHIFT)) & AIPS_PACRP_SP7_MASK)
-#define AIPS_PACRP_TP6_MASK                      (0x10U)
-#define AIPS_PACRP_TP6_SHIFT                     (4U)
-#define AIPS_PACRP_TP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_TP6_SHIFT)) & AIPS_PACRP_TP6_MASK)
-#define AIPS_PACRP_WP6_MASK                      (0x20U)
-#define AIPS_PACRP_WP6_SHIFT                     (5U)
-#define AIPS_PACRP_WP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_WP6_SHIFT)) & AIPS_PACRP_WP6_MASK)
-#define AIPS_PACRP_SP6_MASK                      (0x40U)
-#define AIPS_PACRP_SP6_SHIFT                     (6U)
-#define AIPS_PACRP_SP6(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_SP6_SHIFT)) & AIPS_PACRP_SP6_MASK)
-#define AIPS_PACRP_TP5_MASK                      (0x100U)
-#define AIPS_PACRP_TP5_SHIFT                     (8U)
-#define AIPS_PACRP_TP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_TP5_SHIFT)) & AIPS_PACRP_TP5_MASK)
-#define AIPS_PACRP_WP5_MASK                      (0x200U)
-#define AIPS_PACRP_WP5_SHIFT                     (9U)
-#define AIPS_PACRP_WP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_WP5_SHIFT)) & AIPS_PACRP_WP5_MASK)
-#define AIPS_PACRP_SP5_MASK                      (0x400U)
-#define AIPS_PACRP_SP5_SHIFT                     (10U)
-#define AIPS_PACRP_SP5(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_SP5_SHIFT)) & AIPS_PACRP_SP5_MASK)
-#define AIPS_PACRP_TP4_MASK                      (0x1000U)
-#define AIPS_PACRP_TP4_SHIFT                     (12U)
-#define AIPS_PACRP_TP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_TP4_SHIFT)) & AIPS_PACRP_TP4_MASK)
-#define AIPS_PACRP_WP4_MASK                      (0x2000U)
-#define AIPS_PACRP_WP4_SHIFT                     (13U)
-#define AIPS_PACRP_WP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_WP4_SHIFT)) & AIPS_PACRP_WP4_MASK)
-#define AIPS_PACRP_SP4_MASK                      (0x4000U)
-#define AIPS_PACRP_SP4_SHIFT                     (14U)
-#define AIPS_PACRP_SP4(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_SP4_SHIFT)) & AIPS_PACRP_SP4_MASK)
-#define AIPS_PACRP_TP3_MASK                      (0x10000U)
-#define AIPS_PACRP_TP3_SHIFT                     (16U)
-#define AIPS_PACRP_TP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_TP3_SHIFT)) & AIPS_PACRP_TP3_MASK)
-#define AIPS_PACRP_WP3_MASK                      (0x20000U)
-#define AIPS_PACRP_WP3_SHIFT                     (17U)
-#define AIPS_PACRP_WP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_WP3_SHIFT)) & AIPS_PACRP_WP3_MASK)
-#define AIPS_PACRP_SP3_MASK                      (0x40000U)
-#define AIPS_PACRP_SP3_SHIFT                     (18U)
-#define AIPS_PACRP_SP3(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_SP3_SHIFT)) & AIPS_PACRP_SP3_MASK)
-#define AIPS_PACRP_TP2_MASK                      (0x100000U)
-#define AIPS_PACRP_TP2_SHIFT                     (20U)
-#define AIPS_PACRP_TP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_TP2_SHIFT)) & AIPS_PACRP_TP2_MASK)
-#define AIPS_PACRP_WP2_MASK                      (0x200000U)
-#define AIPS_PACRP_WP2_SHIFT                     (21U)
-#define AIPS_PACRP_WP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_WP2_SHIFT)) & AIPS_PACRP_WP2_MASK)
-#define AIPS_PACRP_SP2_MASK                      (0x400000U)
-#define AIPS_PACRP_SP2_SHIFT                     (22U)
-#define AIPS_PACRP_SP2(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_SP2_SHIFT)) & AIPS_PACRP_SP2_MASK)
-#define AIPS_PACRP_TP1_MASK                      (0x1000000U)
-#define AIPS_PACRP_TP1_SHIFT                     (24U)
-#define AIPS_PACRP_TP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_TP1_SHIFT)) & AIPS_PACRP_TP1_MASK)
-#define AIPS_PACRP_WP1_MASK                      (0x2000000U)
-#define AIPS_PACRP_WP1_SHIFT                     (25U)
-#define AIPS_PACRP_WP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_WP1_SHIFT)) & AIPS_PACRP_WP1_MASK)
-#define AIPS_PACRP_SP1_MASK                      (0x4000000U)
-#define AIPS_PACRP_SP1_SHIFT                     (26U)
-#define AIPS_PACRP_SP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_SP1_SHIFT)) & AIPS_PACRP_SP1_MASK)
-#define AIPS_PACRP_TP0_MASK                      (0x10000000U)
-#define AIPS_PACRP_TP0_SHIFT                     (28U)
-#define AIPS_PACRP_TP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_TP0_SHIFT)) & AIPS_PACRP_TP0_MASK)
-#define AIPS_PACRP_WP0_MASK                      (0x20000000U)
-#define AIPS_PACRP_WP0_SHIFT                     (29U)
-#define AIPS_PACRP_WP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_WP0_SHIFT)) & AIPS_PACRP_WP0_MASK)
-#define AIPS_PACRP_SP0_MASK                      (0x40000000U)
-#define AIPS_PACRP_SP0_SHIFT                     (30U)
-#define AIPS_PACRP_SP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRP_SP0_SHIFT)) & AIPS_PACRP_SP0_MASK)
-
-/*! @name PACRU - Peripheral Access Control Register */
-#define AIPS_PACRU_TP1_MASK                      (0x1000000U)
-#define AIPS_PACRU_TP1_SHIFT                     (24U)
-#define AIPS_PACRU_TP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRU_TP1_SHIFT)) & AIPS_PACRU_TP1_MASK)
-#define AIPS_PACRU_WP1_MASK                      (0x2000000U)
-#define AIPS_PACRU_WP1_SHIFT                     (25U)
-#define AIPS_PACRU_WP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRU_WP1_SHIFT)) & AIPS_PACRU_WP1_MASK)
-#define AIPS_PACRU_SP1_MASK                      (0x4000000U)
-#define AIPS_PACRU_SP1_SHIFT                     (26U)
-#define AIPS_PACRU_SP1(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRU_SP1_SHIFT)) & AIPS_PACRU_SP1_MASK)
-#define AIPS_PACRU_TP0_MASK                      (0x10000000U)
-#define AIPS_PACRU_TP0_SHIFT                     (28U)
-#define AIPS_PACRU_TP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRU_TP0_SHIFT)) & AIPS_PACRU_TP0_MASK)
-#define AIPS_PACRU_WP0_MASK                      (0x20000000U)
-#define AIPS_PACRU_WP0_SHIFT                     (29U)
-#define AIPS_PACRU_WP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRU_WP0_SHIFT)) & AIPS_PACRU_WP0_MASK)
-#define AIPS_PACRU_SP0_MASK                      (0x40000000U)
-#define AIPS_PACRU_SP0_SHIFT                     (30U)
-#define AIPS_PACRU_SP0(x)                        (((uint32_t)(((uint32_t)(x)) << AIPS_PACRU_SP0_SHIFT)) & AIPS_PACRU_SP0_MASK)
-
-
-/*!
- * @}
- */ /* end of group AIPS_Register_Masks */
-
-
-/* AIPS - Peripheral instance base addresses */
-/** Peripheral AIPS0 base address */
-#define AIPS0_BASE                               (0x40000000u)
-/** Peripheral AIPS0 base pointer */
-#define AIPS0                                    ((AIPS_Type *)AIPS0_BASE)
-/** Peripheral AIPS1 base address */
-#define AIPS1_BASE                               (0x40080000u)
-/** Peripheral AIPS1 base pointer */
-#define AIPS1                                    ((AIPS_Type *)AIPS1_BASE)
-/** Array initializer of AIPS peripheral base addresses */
-#define AIPS_BASE_ADDRS                          { AIPS0_BASE, AIPS1_BASE }
-/** Array initializer of AIPS peripheral base pointers */
-#define AIPS_BASE_PTRS                           { AIPS0, AIPS1 }
-
-/*!
- * @}
- */ /* end of group AIPS_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- AXBS Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup AXBS_Peripheral_Access_Layer AXBS Peripheral Access Layer
- * @{
- */
-
-/** AXBS - Register Layout Typedef */
-typedef struct {
-  struct {                                         /* offset: 0x0, array step: 0x100 */
-    __IO uint32_t PRS;                               /**< Priority Registers Slave, array offset: 0x0, array step: 0x100 */
-         uint8_t RESERVED_0[12];
-    __IO uint32_t CRS;                               /**< Control Register, array offset: 0x10, array step: 0x100 */
-         uint8_t RESERVED_1[236];
-  } SLAVE[5];
-       uint8_t RESERVED_0[768];
-  __IO uint32_t MGPCR0;                            /**< Master General Purpose Control Register, offset: 0x800 */
-       uint8_t RESERVED_1[252];
-  __IO uint32_t MGPCR1;                            /**< Master General Purpose Control Register, offset: 0x900 */
-       uint8_t RESERVED_2[252];
-  __IO uint32_t MGPCR2;                            /**< Master General Purpose Control Register, offset: 0xA00 */
-       uint8_t RESERVED_3[252];
-  __IO uint32_t MGPCR3;                            /**< Master General Purpose Control Register, offset: 0xB00 */
-       uint8_t RESERVED_4[252];
-  __IO uint32_t MGPCR4;                            /**< Master General Purpose Control Register, offset: 0xC00 */
-       uint8_t RESERVED_5[252];
-  __IO uint32_t MGPCR5;                            /**< Master General Purpose Control Register, offset: 0xD00 */
-} AXBS_Type;
-
-/* ----------------------------------------------------------------------------
-   -- AXBS Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup AXBS_Register_Masks AXBS Register Masks
- * @{
- */
-
-/*! @name PRS - Priority Registers Slave */
-#define AXBS_PRS_M0_MASK                         (0x7U)
-#define AXBS_PRS_M0_SHIFT                        (0U)
-#define AXBS_PRS_M0(x)                           (((uint32_t)(((uint32_t)(x)) << AXBS_PRS_M0_SHIFT)) & AXBS_PRS_M0_MASK)
-#define AXBS_PRS_M1_MASK                         (0x70U)
-#define AXBS_PRS_M1_SHIFT                        (4U)
-#define AXBS_PRS_M1(x)                           (((uint32_t)(((uint32_t)(x)) << AXBS_PRS_M1_SHIFT)) & AXBS_PRS_M1_MASK)
-#define AXBS_PRS_M2_MASK                         (0x700U)
-#define AXBS_PRS_M2_SHIFT                        (8U)
-#define AXBS_PRS_M2(x)                           (((uint32_t)(((uint32_t)(x)) << AXBS_PRS_M2_SHIFT)) & AXBS_PRS_M2_MASK)
-#define AXBS_PRS_M3_MASK                         (0x7000U)
-#define AXBS_PRS_M3_SHIFT                        (12U)
-#define AXBS_PRS_M3(x)                           (((uint32_t)(((uint32_t)(x)) << AXBS_PRS_M3_SHIFT)) & AXBS_PRS_M3_MASK)
-#define AXBS_PRS_M4_MASK                         (0x70000U)
-#define AXBS_PRS_M4_SHIFT                        (16U)
-#define AXBS_PRS_M4(x)                           (((uint32_t)(((uint32_t)(x)) << AXBS_PRS_M4_SHIFT)) & AXBS_PRS_M4_MASK)
-#define AXBS_PRS_M5_MASK                         (0x700000U)
-#define AXBS_PRS_M5_SHIFT                        (20U)
-#define AXBS_PRS_M5(x)                           (((uint32_t)(((uint32_t)(x)) << AXBS_PRS_M5_SHIFT)) & AXBS_PRS_M5_MASK)
-
-/* The count of AXBS_PRS */
-#define AXBS_PRS_COUNT                           (5U)
-
-/*! @name CRS - Control Register */
-#define AXBS_CRS_PARK_MASK                       (0x7U)
-#define AXBS_CRS_PARK_SHIFT                      (0U)
-#define AXBS_CRS_PARK(x)                         (((uint32_t)(((uint32_t)(x)) << AXBS_CRS_PARK_SHIFT)) & AXBS_CRS_PARK_MASK)
-#define AXBS_CRS_PCTL_MASK                       (0x30U)
-#define AXBS_CRS_PCTL_SHIFT                      (4U)
-#define AXBS_CRS_PCTL(x)                         (((uint32_t)(((uint32_t)(x)) << AXBS_CRS_PCTL_SHIFT)) & AXBS_CRS_PCTL_MASK)
-#define AXBS_CRS_ARB_MASK                        (0x300U)
-#define AXBS_CRS_ARB_SHIFT                       (8U)
-#define AXBS_CRS_ARB(x)                          (((uint32_t)(((uint32_t)(x)) << AXBS_CRS_ARB_SHIFT)) & AXBS_CRS_ARB_MASK)
-#define AXBS_CRS_HLP_MASK                        (0x40000000U)
-#define AXBS_CRS_HLP_SHIFT                       (30U)
-#define AXBS_CRS_HLP(x)                          (((uint32_t)(((uint32_t)(x)) << AXBS_CRS_HLP_SHIFT)) & AXBS_CRS_HLP_MASK)
-#define AXBS_CRS_RO_MASK                         (0x80000000U)
-#define AXBS_CRS_RO_SHIFT                        (31U)
-#define AXBS_CRS_RO(x)                           (((uint32_t)(((uint32_t)(x)) << AXBS_CRS_RO_SHIFT)) & AXBS_CRS_RO_MASK)
-
-/* The count of AXBS_CRS */
-#define AXBS_CRS_COUNT                           (5U)
-
-/*! @name MGPCR0 - Master General Purpose Control Register */
-#define AXBS_MGPCR0_AULB_MASK                    (0x7U)
-#define AXBS_MGPCR0_AULB_SHIFT                   (0U)
-#define AXBS_MGPCR0_AULB(x)                      (((uint32_t)(((uint32_t)(x)) << AXBS_MGPCR0_AULB_SHIFT)) & AXBS_MGPCR0_AULB_MASK)
-
-/*! @name MGPCR1 - Master General Purpose Control Register */
-#define AXBS_MGPCR1_AULB_MASK                    (0x7U)
-#define AXBS_MGPCR1_AULB_SHIFT                   (0U)
-#define AXBS_MGPCR1_AULB(x)                      (((uint32_t)(((uint32_t)(x)) << AXBS_MGPCR1_AULB_SHIFT)) & AXBS_MGPCR1_AULB_MASK)
-
-/*! @name MGPCR2 - Master General Purpose Control Register */
-#define AXBS_MGPCR2_AULB_MASK                    (0x7U)
-#define AXBS_MGPCR2_AULB_SHIFT                   (0U)
-#define AXBS_MGPCR2_AULB(x)                      (((uint32_t)(((uint32_t)(x)) << AXBS_MGPCR2_AULB_SHIFT)) & AXBS_MGPCR2_AULB_MASK)
-
-/*! @name MGPCR3 - Master General Purpose Control Register */
-#define AXBS_MGPCR3_AULB_MASK                    (0x7U)
-#define AXBS_MGPCR3_AULB_SHIFT                   (0U)
-#define AXBS_MGPCR3_AULB(x)                      (((uint32_t)(((uint32_t)(x)) << AXBS_MGPCR3_AULB_SHIFT)) & AXBS_MGPCR3_AULB_MASK)
-
-/*! @name MGPCR4 - Master General Purpose Control Register */
-#define AXBS_MGPCR4_AULB_MASK                    (0x7U)
-#define AXBS_MGPCR4_AULB_SHIFT                   (0U)
-#define AXBS_MGPCR4_AULB(x)                      (((uint32_t)(((uint32_t)(x)) << AXBS_MGPCR4_AULB_SHIFT)) & AXBS_MGPCR4_AULB_MASK)
-
-/*! @name MGPCR5 - Master General Purpose Control Register */
-#define AXBS_MGPCR5_AULB_MASK                    (0x7U)
-#define AXBS_MGPCR5_AULB_SHIFT                   (0U)
-#define AXBS_MGPCR5_AULB(x)                      (((uint32_t)(((uint32_t)(x)) << AXBS_MGPCR5_AULB_SHIFT)) & AXBS_MGPCR5_AULB_MASK)
-
-
-/*!
- * @}
- */ /* end of group AXBS_Register_Masks */
-
-
-/* AXBS - Peripheral instance base addresses */
-/** Peripheral AXBS base address */
-#define AXBS_BASE                                (0x40004000u)
-/** Peripheral AXBS base pointer */
-#define AXBS                                     ((AXBS_Type *)AXBS_BASE)
-/** Array initializer of AXBS peripheral base addresses */
-#define AXBS_BASE_ADDRS                          { AXBS_BASE }
-/** Array initializer of AXBS peripheral base pointers */
-#define AXBS_BASE_PTRS                           { AXBS }
-
-/*!
- * @}
- */ /* end of group AXBS_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- CAN Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup CAN_Peripheral_Access_Layer CAN Peripheral Access Layer
- * @{
- */
-
-/** CAN - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t MCR;                               /**< Module Configuration Register, offset: 0x0 */
-  __IO uint32_t CTRL1;                             /**< Control 1 register, offset: 0x4 */
-  __IO uint32_t TIMER;                             /**< Free Running Timer, offset: 0x8 */
-       uint8_t RESERVED_0[4];
-  __IO uint32_t RXMGMASK;                          /**< Rx Mailboxes Global Mask Register, offset: 0x10 */
-  __IO uint32_t RX14MASK;                          /**< Rx 14 Mask register, offset: 0x14 */
-  __IO uint32_t RX15MASK;                          /**< Rx 15 Mask register, offset: 0x18 */
-  __IO uint32_t ECR;                               /**< Error Counter, offset: 0x1C */
-  __IO uint32_t ESR1;                              /**< Error and Status 1 register, offset: 0x20 */
-       uint8_t RESERVED_1[4];
-  __IO uint32_t IMASK1;                            /**< Interrupt Masks 1 register, offset: 0x28 */
-       uint8_t RESERVED_2[4];
-  __IO uint32_t IFLAG1;                            /**< Interrupt Flags 1 register, offset: 0x30 */
-  __IO uint32_t CTRL2;                             /**< Control 2 register, offset: 0x34 */
-  __I  uint32_t ESR2;                              /**< Error and Status 2 register, offset: 0x38 */
-       uint8_t RESERVED_3[8];
-  __I  uint32_t CRCR;                              /**< CRC Register, offset: 0x44 */
-  __IO uint32_t RXFGMASK;                          /**< Rx FIFO Global Mask register, offset: 0x48 */
-  __I  uint32_t RXFIR;                             /**< Rx FIFO Information Register, offset: 0x4C */
-       uint8_t RESERVED_4[48];
-  struct {                                         /* offset: 0x80, array step: 0x10 */
-    __IO uint32_t CS;                                /**< Message Buffer 0 CS Register..Message Buffer 15 CS Register, array offset: 0x80, array step: 0x10 */
-    __IO uint32_t ID;                                /**< Message Buffer 0 ID Register..Message Buffer 15 ID Register, array offset: 0x84, array step: 0x10 */
-    __IO uint32_t WORD0;                             /**< Message Buffer 0 WORD0 Register..Message Buffer 15 WORD0 Register, array offset: 0x88, array step: 0x10 */
-    __IO uint32_t WORD1;                             /**< Message Buffer 0 WORD1 Register..Message Buffer 15 WORD1 Register, array offset: 0x8C, array step: 0x10 */
-  } MB[16];
-       uint8_t RESERVED_5[1792];
-  __IO uint32_t RXIMR[16];                         /**< Rx Individual Mask Registers, array offset: 0x880, array step: 0x4 */
-} CAN_Type;
-
-/* ----------------------------------------------------------------------------
-   -- CAN Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup CAN_Register_Masks CAN Register Masks
- * @{
- */
-
-/*! @name MCR - Module Configuration Register */
-#define CAN_MCR_MAXMB_MASK                       (0x7FU)
-#define CAN_MCR_MAXMB_SHIFT                      (0U)
-#define CAN_MCR_MAXMB(x)                         (((uint32_t)(((uint32_t)(x)) << CAN_MCR_MAXMB_SHIFT)) & CAN_MCR_MAXMB_MASK)
-#define CAN_MCR_IDAM_MASK                        (0x300U)
-#define CAN_MCR_IDAM_SHIFT                       (8U)
-#define CAN_MCR_IDAM(x)                          (((uint32_t)(((uint32_t)(x)) << CAN_MCR_IDAM_SHIFT)) & CAN_MCR_IDAM_MASK)
-#define CAN_MCR_AEN_MASK                         (0x1000U)
-#define CAN_MCR_AEN_SHIFT                        (12U)
-#define CAN_MCR_AEN(x)                           (((uint32_t)(((uint32_t)(x)) << CAN_MCR_AEN_SHIFT)) & CAN_MCR_AEN_MASK)
-#define CAN_MCR_LPRIOEN_MASK                     (0x2000U)
-#define CAN_MCR_LPRIOEN_SHIFT                    (13U)
-#define CAN_MCR_LPRIOEN(x)                       (((uint32_t)(((uint32_t)(x)) << CAN_MCR_LPRIOEN_SHIFT)) & CAN_MCR_LPRIOEN_MASK)
-#define CAN_MCR_IRMQ_MASK                        (0x10000U)
-#define CAN_MCR_IRMQ_SHIFT                       (16U)
-#define CAN_MCR_IRMQ(x)                          (((uint32_t)(((uint32_t)(x)) << CAN_MCR_IRMQ_SHIFT)) & CAN_MCR_IRMQ_MASK)
-#define CAN_MCR_SRXDIS_MASK                      (0x20000U)
-#define CAN_MCR_SRXDIS_SHIFT                     (17U)
-#define CAN_MCR_SRXDIS(x)                        (((uint32_t)(((uint32_t)(x)) << CAN_MCR_SRXDIS_SHIFT)) & CAN_MCR_SRXDIS_MASK)
-#define CAN_MCR_WAKSRC_MASK                      (0x80000U)
-#define CAN_MCR_WAKSRC_SHIFT                     (19U)
-#define CAN_MCR_WAKSRC(x)                        (((uint32_t)(((uint32_t)(x)) << CAN_MCR_WAKSRC_SHIFT)) & CAN_MCR_WAKSRC_MASK)
-#define CAN_MCR_LPMACK_MASK                      (0x100000U)
-#define CAN_MCR_LPMACK_SHIFT                     (20U)
-#define CAN_MCR_LPMACK(x)                        (((uint32_t)(((uint32_t)(x)) << CAN_MCR_LPMACK_SHIFT)) & CAN_MCR_LPMACK_MASK)
-#define CAN_MCR_WRNEN_MASK                       (0x200000U)
-#define CAN_MCR_WRNEN_SHIFT                      (21U)
-#define CAN_MCR_WRNEN(x)                         (((uint32_t)(((uint32_t)(x)) << CAN_MCR_WRNEN_SHIFT)) & CAN_MCR_WRNEN_MASK)
-#define CAN_MCR_SLFWAK_MASK                      (0x400000U)
-#define CAN_MCR_SLFWAK_SHIFT                     (22U)
-#define CAN_MCR_SLFWAK(x)                        (((uint32_t)(((uint32_t)(x)) << CAN_MCR_SLFWAK_SHIFT)) & CAN_MCR_SLFWAK_MASK)
-#define CAN_MCR_SUPV_MASK                        (0x800000U)
-#define CAN_MCR_SUPV_SHIFT                       (23U)
-#define CAN_MCR_SUPV(x)                          (((uint32_t)(((uint32_t)(x)) << CAN_MCR_SUPV_SHIFT)) & CAN_MCR_SUPV_MASK)
-#define CAN_MCR_FRZACK_MASK                      (0x1000000U)
-#define CAN_MCR_FRZACK_SHIFT                     (24U)
-#define CAN_MCR_FRZACK(x)                        (((uint32_t)(((uint32_t)(x)) << CAN_MCR_FRZACK_SHIFT)) & CAN_MCR_FRZACK_MASK)
-#define CAN_MCR_SOFTRST_MASK                     (0x2000000U)
-#define CAN_MCR_SOFTRST_SHIFT                    (25U)
-#define CAN_MCR_SOFTRST(x)                       (((uint32_t)(((uint32_t)(x)) << CAN_MCR_SOFTRST_SHIFT)) & CAN_MCR_SOFTRST_MASK)
-#define CAN_MCR_WAKMSK_MASK                      (0x4000000U)
-#define CAN_MCR_WAKMSK_SHIFT                     (26U)
-#define CAN_MCR_WAKMSK(x)                        (((uint32_t)(((uint32_t)(x)) << CAN_MCR_WAKMSK_SHIFT)) & CAN_MCR_WAKMSK_MASK)
-#define CAN_MCR_NOTRDY_MASK                      (0x8000000U)
-#define CAN_MCR_NOTRDY_SHIFT                     (27U)
-#define CAN_MCR_NOTRDY(x)                        (((uint32_t)(((uint32_t)(x)) << CAN_MCR_NOTRDY_SHIFT)) & CAN_MCR_NOTRDY_MASK)
-#define CAN_MCR_HALT_MASK                        (0x10000000U)
-#define CAN_MCR_HALT_SHIFT                       (28U)
-#define CAN_MCR_HALT(x)                          (((uint32_t)(((uint32_t)(x)) << CAN_MCR_HALT_SHIFT)) & CAN_MCR_HALT_MASK)
-#define CAN_MCR_RFEN_MASK                        (0x20000000U)
-#define CAN_MCR_RFEN_SHIFT                       (29U)
-#define CAN_MCR_RFEN(x)                          (((uint32_t)(((uint32_t)(x)) << CAN_MCR_RFEN_SHIFT)) & CAN_MCR_RFEN_MASK)
-#define CAN_MCR_FRZ_MASK                         (0x40000000U)
-#define CAN_MCR_FRZ_SHIFT                        (30U)
-#define CAN_MCR_FRZ(x)                           (((uint32_t)(((uint32_t)(x)) << CAN_MCR_FRZ_SHIFT)) & CAN_MCR_FRZ_MASK)
-#define CAN_MCR_MDIS_MASK                        (0x80000000U)
-#define CAN_MCR_MDIS_SHIFT                       (31U)
-#define CAN_MCR_MDIS(x)                          (((uint32_t)(((uint32_t)(x)) << CAN_MCR_MDIS_SHIFT)) & CAN_MCR_MDIS_MASK)
-
-/*! @name CTRL1 - Control 1 register */
-#define CAN_CTRL1_PROPSEG_MASK                   (0x7U)
-#define CAN_CTRL1_PROPSEG_SHIFT                  (0U)
-#define CAN_CTRL1_PROPSEG(x)                     (((uint32_t)(((uint32_t)(x)) << CAN_CTRL1_PROPSEG_SHIFT)) & CAN_CTRL1_PROPSEG_MASK)
-#define CAN_CTRL1_LOM_MASK                       (0x8U)
-#define CAN_CTRL1_LOM_SHIFT                      (3U)
-#define CAN_CTRL1_LOM(x)                         (((uint32_t)(((uint32_t)(x)) << CAN_CTRL1_LOM_SHIFT)) & CAN_CTRL1_LOM_MASK)
-#define CAN_CTRL1_LBUF_MASK                      (0x10U)
-#define CAN_CTRL1_LBUF_SHIFT                     (4U)
-#define CAN_CTRL1_LBUF(x)                        (((uint32_t)(((uint32_t)(x)) << CAN_CTRL1_LBUF_SHIFT)) & CAN_CTRL1_LBUF_MASK)
-#define CAN_CTRL1_TSYN_MASK                      (0x20U)
-#define CAN_CTRL1_TSYN_SHIFT                     (5U)
-#define CAN_CTRL1_TSYN(x)                        (((uint32_t)(((uint32_t)(x)) << CAN_CTRL1_TSYN_SHIFT)) & CAN_CTRL1_TSYN_MASK)
-#define CAN_CTRL1_BOFFREC_MASK                   (0x40U)
-#define CAN_CTRL1_BOFFREC_SHIFT                  (6U)
-#define CAN_CTRL1_BOFFREC(x)                     (((uint32_t)(((uint32_t)(x)) << CAN_CTRL1_BOFFREC_SHIFT)) & CAN_CTRL1_BOFFREC_MASK)
-#define CAN_CTRL1_SMP_MASK                       (0x80U)
-#define CAN_CTRL1_SMP_SHIFT                      (7U)
-#define CAN_CTRL1_SMP(x)                         (((uint32_t)(((uint32_t)(x)) << CAN_CTRL1_SMP_SHIFT)) & CAN_CTRL1_SMP_MASK)
-#define CAN_CTRL1_RWRNMSK_MASK                   (0x400U)
-#define CAN_CTRL1_RWRNMSK_SHIFT                  (10U)
-#define CAN_CTRL1_RWRNMSK(x)                     (((uint32_t)(((uint32_t)(x)) << CAN_CTRL1_RWRNMSK_SHIFT)) & CAN_CTRL1_RWRNMSK_MASK)
-#define CAN_CTRL1_TWRNMSK_MASK                   (0x800U)
-#define CAN_CTRL1_TWRNMSK_SHIFT                  (11U)
-#define CAN_CTRL1_TWRNMSK(x)                     (((uint32_t)(((uint32_t)(x)) << CAN_CTRL1_TWRNMSK_SHIFT)) & CAN_CTRL1_TWRNMSK_MASK)
-#define CAN_CTRL1_LPB_MASK                       (0x1000U)
-#define CAN_CTRL1_LPB_SHIFT                      (12U)
-#define CAN_CTRL1_LPB(x)                         (((uint32_t)(((uint32_t)(x)) << CAN_CTRL1_LPB_SHIFT)) & CAN_CTRL1_LPB_MASK)
-#define CAN_CTRL1_CLKSRC_MASK                    (0x2000U)
-#define CAN_CTRL1_CLKSRC_SHIFT                   (13U)
-#define CAN_CTRL1_CLKSRC(x)                      (((uint32_t)(((uint32_t)(x)) << CAN_CTRL1_CLKSRC_SHIFT)) & CAN_CTRL1_CLKSRC_MASK)
-#define CAN_CTRL1_ERRMSK_MASK                    (0x4000U)
-#define CAN_CTRL1_ERRMSK_SHIFT                   (14U)
-#define CAN_CTRL1_ERRMSK(x)                      (((uint32_t)(((uint32_t)(x)) << CAN_CTRL1_ERRMSK_SHIFT)) & CAN_CTRL1_ERRMSK_MASK)
-#define CAN_CTRL1_BOFFMSK_MASK                   (0x8000U)
-#define CAN_CTRL1_BOFFMSK_SHIFT                  (15U)
-#define CAN_CTRL1_BOFFMSK(x)                     (((uint32_t)(((uint32_t)(x)) << CAN_CTRL1_BOFFMSK_SHIFT)) & CAN_CTRL1_BOFFMSK_MASK)
-#define CAN_CTRL1_PSEG2_MASK                     (0x70000U)
-#define CAN_CTRL1_PSEG2_SHIFT                    (16U)
-#define CAN_CTRL1_PSEG2(x)                       (((uint32_t)(((uint32_t)(x)) << CAN_CTRL1_PSEG2_SHIFT)) & CAN_CTRL1_PSEG2_MASK)
-#define CAN_CTRL1_PSEG1_MASK                     (0x380000U)
-#define CAN_CTRL1_PSEG1_SHIFT                    (19U)
-#define CAN_CTRL1_PSEG1(x)                       (((uint32_t)(((uint32_t)(x)) << CAN_CTRL1_PSEG1_SHIFT)) & CAN_CTRL1_PSEG1_MASK)
-#define CAN_CTRL1_RJW_MASK                       (0xC00000U)
-#define CAN_CTRL1_RJW_SHIFT                      (22U)
-#define CAN_CTRL1_RJW(x)                         (((uint32_t)(((uint32_t)(x)) << CAN_CTRL1_RJW_SHIFT)) & CAN_CTRL1_RJW_MASK)
-#define CAN_CTRL1_PRESDIV_MASK                   (0xFF000000U)
-#define CAN_CTRL1_PRESDIV_SHIFT                  (24U)
-#define CAN_CTRL1_PRESDIV(x)                     (((uint32_t)(((uint32_t)(x)) << CAN_CTRL1_PRESDIV_SHIFT)) & CAN_CTRL1_PRESDIV_MASK)
-
-/*! @name TIMER - Free Running Timer */
-#define CAN_TIMER_TIMER_MASK                     (0xFFFFU)
-#define CAN_TIMER_TIMER_SHIFT                    (0U)
-#define CAN_TIMER_TIMER(x)                       (((uint32_t)(((uint32_t)(x)) << CAN_TIMER_TIMER_SHIFT)) & CAN_TIMER_TIMER_MASK)
-
-/*! @name RXMGMASK - Rx Mailboxes Global Mask Register */
-#define CAN_RXMGMASK_MG_MASK                     (0xFFFFFFFFU)
-#define CAN_RXMGMASK_MG_SHIFT                    (0U)
-#define CAN_RXMGMASK_MG(x)                       (((uint32_t)(((uint32_t)(x)) << CAN_RXMGMASK_MG_SHIFT)) & CAN_RXMGMASK_MG_MASK)
-
-/*! @name RX14MASK - Rx 14 Mask register */
-#define CAN_RX14MASK_RX14M_MASK                  (0xFFFFFFFFU)
-#define CAN_RX14MASK_RX14M_SHIFT                 (0U)
-#define CAN_RX14MASK_RX14M(x)                    (((uint32_t)(((uint32_t)(x)) << CAN_RX14MASK_RX14M_SHIFT)) & CAN_RX14MASK_RX14M_MASK)
-
-/*! @name RX15MASK - Rx 15 Mask register */
-#define CAN_RX15MASK_RX15M_MASK                  (0xFFFFFFFFU)
-#define CAN_RX15MASK_RX15M_SHIFT                 (0U)
-#define CAN_RX15MASK_RX15M(x)                    (((uint32_t)(((uint32_t)(x)) << CAN_RX15MASK_RX15M_SHIFT)) & CAN_RX15MASK_RX15M_MASK)
-
-/*! @name ECR - Error Counter */
-#define CAN_ECR_TXERRCNT_MASK                    (0xFFU)
-#define CAN_ECR_TXERRCNT_SHIFT                   (0U)
-#define CAN_ECR_TXERRCNT(x)                      (((uint32_t)(((uint32_t)(x)) << CAN_ECR_TXERRCNT_SHIFT)) & CAN_ECR_TXERRCNT_MASK)
-#define CAN_ECR_RXERRCNT_MASK                    (0xFF00U)
-#define CAN_ECR_RXERRCNT_SHIFT                   (8U)
-#define CAN_ECR_RXERRCNT(x)                      (((uint32_t)(((uint32_t)(x)) << CAN_ECR_RXERRCNT_SHIFT)) & CAN_ECR_RXERRCNT_MASK)
-
-/*! @name ESR1 - Error and Status 1 register */
-#define CAN_ESR1_WAKINT_MASK                     (0x1U)
-#define CAN_ESR1_WAKINT_SHIFT                    (0U)
-#define CAN_ESR1_WAKINT(x)                       (((uint32_t)(((uint32_t)(x)) << CAN_ESR1_WAKINT_SHIFT)) & CAN_ESR1_WAKINT_MASK)
-#define CAN_ESR1_ERRINT_MASK                     (0x2U)
-#define CAN_ESR1_ERRINT_SHIFT                    (1U)
-#define CAN_ESR1_ERRINT(x)                       (((uint32_t)(((uint32_t)(x)) << CAN_ESR1_ERRINT_SHIFT)) & CAN_ESR1_ERRINT_MASK)
-#define CAN_ESR1_BOFFINT_MASK                    (0x4U)
-#define CAN_ESR1_BOFFINT_SHIFT                   (2U)
-#define CAN_ESR1_BOFFINT(x)                      (((uint32_t)(((uint32_t)(x)) << CAN_ESR1_BOFFINT_SHIFT)) & CAN_ESR1_BOFFINT_MASK)
-#define CAN_ESR1_RX_MASK                         (0x8U)
-#define CAN_ESR1_RX_SHIFT                        (3U)
-#define CAN_ESR1_RX(x)                           (((uint32_t)(((uint32_t)(x)) << CAN_ESR1_RX_SHIFT)) & CAN_ESR1_RX_MASK)
-#define CAN_ESR1_FLTCONF_MASK                    (0x30U)
-#define CAN_ESR1_FLTCONF_SHIFT                   (4U)
-#define CAN_ESR1_FLTCONF(x)                      (((uint32_t)(((uint32_t)(x)) << CAN_ESR1_FLTCONF_SHIFT)) & CAN_ESR1_FLTCONF_MASK)
-#define CAN_ESR1_TX_MASK                         (0x40U)
-#define CAN_ESR1_TX_SHIFT                        (6U)
-#define CAN_ESR1_TX(x)                           (((uint32_t)(((uint32_t)(x)) << CAN_ESR1_TX_SHIFT)) & CAN_ESR1_TX_MASK)
-#define CAN_ESR1_IDLE_MASK                       (0x80U)
-#define CAN_ESR1_IDLE_SHIFT                      (7U)
-#define CAN_ESR1_IDLE(x)                         (((uint32_t)(((uint32_t)(x)) << CAN_ESR1_IDLE_SHIFT)) & CAN_ESR1_IDLE_MASK)
-#define CAN_ESR1_RXWRN_MASK                      (0x100U)
-#define CAN_ESR1_RXWRN_SHIFT                     (8U)
-#define CAN_ESR1_RXWRN(x)                        (((uint32_t)(((uint32_t)(x)) << CAN_ESR1_RXWRN_SHIFT)) & CAN_ESR1_RXWRN_MASK)
-#define CAN_ESR1_TXWRN_MASK                      (0x200U)
-#define CAN_ESR1_TXWRN_SHIFT                     (9U)
-#define CAN_ESR1_TXWRN(x)                        (((uint32_t)(((uint32_t)(x)) << CAN_ESR1_TXWRN_SHIFT)) & CAN_ESR1_TXWRN_MASK)
-#define CAN_ESR1_STFERR_MASK                     (0x400U)
-#define CAN_ESR1_STFERR_SHIFT                    (10U)
-#define CAN_ESR1_STFERR(x)                       (((uint32_t)(((uint32_t)(x)) << CAN_ESR1_STFERR_SHIFT)) & CAN_ESR1_STFERR_MASK)
-#define CAN_ESR1_FRMERR_MASK                     (0x800U)
-#define CAN_ESR1_FRMERR_SHIFT                    (11U)
-#define CAN_ESR1_FRMERR(x)                       (((uint32_t)(((uint32_t)(x)) << CAN_ESR1_FRMERR_SHIFT)) & CAN_ESR1_FRMERR_MASK)
-#define CAN_ESR1_CRCERR_MASK                     (0x1000U)
-#define CAN_ESR1_CRCERR_SHIFT                    (12U)
-#define CAN_ESR1_CRCERR(x)                       (((uint32_t)(((uint32_t)(x)) << CAN_ESR1_CRCERR_SHIFT)) & CAN_ESR1_CRCERR_MASK)
-#define CAN_ESR1_ACKERR_MASK                     (0x2000U)
-#define CAN_ESR1_ACKERR_SHIFT                    (13U)
-#define CAN_ESR1_ACKERR(x)                       (((uint32_t)(((uint32_t)(x)) << CAN_ESR1_ACKERR_SHIFT)) & CAN_ESR1_ACKERR_MASK)
-#define CAN_ESR1_BIT0ERR_MASK                    (0x4000U)
-#define CAN_ESR1_BIT0ERR_SHIFT                   (14U)
-#define CAN_ESR1_BIT0ERR(x)                      (((uint32_t)(((uint32_t)(x)) << CAN_ESR1_BIT0ERR_SHIFT)) & CAN_ESR1_BIT0ERR_MASK)
-#define CAN_ESR1_BIT1ERR_MASK                    (0x8000U)
-#define CAN_ESR1_BIT1ERR_SHIFT                   (15U)
-#define CAN_ESR1_BIT1ERR(x)                      (((uint32_t)(((uint32_t)(x)) << CAN_ESR1_BIT1ERR_SHIFT)) & CAN_ESR1_BIT1ERR_MASK)
-#define CAN_ESR1_RWRNINT_MASK                    (0x10000U)
-#define CAN_ESR1_RWRNINT_SHIFT                   (16U)
-#define CAN_ESR1_RWRNINT(x)                      (((uint32_t)(((uint32_t)(x)) << CAN_ESR1_RWRNINT_SHIFT)) & CAN_ESR1_RWRNINT_MASK)
-#define CAN_ESR1_TWRNINT_MASK                    (0x20000U)
-#define CAN_ESR1_TWRNINT_SHIFT                   (17U)
-#define CAN_ESR1_TWRNINT(x)                      (((uint32_t)(((uint32_t)(x)) << CAN_ESR1_TWRNINT_SHIFT)) & CAN_ESR1_TWRNINT_MASK)
-#define CAN_ESR1_SYNCH_MASK                      (0x40000U)
-#define CAN_ESR1_SYNCH_SHIFT                     (18U)
-#define CAN_ESR1_SYNCH(x)                        (((uint32_t)(((uint32_t)(x)) << CAN_ESR1_SYNCH_SHIFT)) & CAN_ESR1_SYNCH_MASK)
-
-/*! @name IMASK1 - Interrupt Masks 1 register */
-#define CAN_IMASK1_BUFLM_MASK                    (0xFFFFFFFFU)
-#define CAN_IMASK1_BUFLM_SHIFT                   (0U)
-#define CAN_IMASK1_BUFLM(x)                      (((uint32_t)(((uint32_t)(x)) << CAN_IMASK1_BUFLM_SHIFT)) & CAN_IMASK1_BUFLM_MASK)
-
-/*! @name IFLAG1 - Interrupt Flags 1 register */
-#define CAN_IFLAG1_BUF0I_MASK                    (0x1U)
-#define CAN_IFLAG1_BUF0I_SHIFT                   (0U)
-#define CAN_IFLAG1_BUF0I(x)                      (((uint32_t)(((uint32_t)(x)) << CAN_IFLAG1_BUF0I_SHIFT)) & CAN_IFLAG1_BUF0I_MASK)
-#define CAN_IFLAG1_BUF4TO1I_MASK                 (0x1EU)
-#define CAN_IFLAG1_BUF4TO1I_SHIFT                (1U)
-#define CAN_IFLAG1_BUF4TO1I(x)                   (((uint32_t)(((uint32_t)(x)) << CAN_IFLAG1_BUF4TO1I_SHIFT)) & CAN_IFLAG1_BUF4TO1I_MASK)
-#define CAN_IFLAG1_BUF5I_MASK                    (0x20U)
-#define CAN_IFLAG1_BUF5I_SHIFT                   (5U)
-#define CAN_IFLAG1_BUF5I(x)                      (((uint32_t)(((uint32_t)(x)) << CAN_IFLAG1_BUF5I_SHIFT)) & CAN_IFLAG1_BUF5I_MASK)
-#define CAN_IFLAG1_BUF6I_MASK                    (0x40U)
-#define CAN_IFLAG1_BUF6I_SHIFT                   (6U)
-#define CAN_IFLAG1_BUF6I(x)                      (((uint32_t)(((uint32_t)(x)) << CAN_IFLAG1_BUF6I_SHIFT)) & CAN_IFLAG1_BUF6I_MASK)
-#define CAN_IFLAG1_BUF7I_MASK                    (0x80U)
-#define CAN_IFLAG1_BUF7I_SHIFT                   (7U)
-#define CAN_IFLAG1_BUF7I(x)                      (((uint32_t)(((uint32_t)(x)) << CAN_IFLAG1_BUF7I_SHIFT)) & CAN_IFLAG1_BUF7I_MASK)
-#define CAN_IFLAG1_BUF31TO8I_MASK                (0xFFFFFF00U)
-#define CAN_IFLAG1_BUF31TO8I_SHIFT               (8U)
-#define CAN_IFLAG1_BUF31TO8I(x)                  (((uint32_t)(((uint32_t)(x)) << CAN_IFLAG1_BUF31TO8I_SHIFT)) & CAN_IFLAG1_BUF31TO8I_MASK)
-
-/*! @name CTRL2 - Control 2 register */
-#define CAN_CTRL2_EACEN_MASK                     (0x10000U)
-#define CAN_CTRL2_EACEN_SHIFT                    (16U)
-#define CAN_CTRL2_EACEN(x)                       (((uint32_t)(((uint32_t)(x)) << CAN_CTRL2_EACEN_SHIFT)) & CAN_CTRL2_EACEN_MASK)
-#define CAN_CTRL2_RRS_MASK                       (0x20000U)
-#define CAN_CTRL2_RRS_SHIFT                      (17U)
-#define CAN_CTRL2_RRS(x)                         (((uint32_t)(((uint32_t)(x)) << CAN_CTRL2_RRS_SHIFT)) & CAN_CTRL2_RRS_MASK)
-#define CAN_CTRL2_MRP_MASK                       (0x40000U)
-#define CAN_CTRL2_MRP_SHIFT                      (18U)
-#define CAN_CTRL2_MRP(x)                         (((uint32_t)(((uint32_t)(x)) << CAN_CTRL2_MRP_SHIFT)) & CAN_CTRL2_MRP_MASK)
-#define CAN_CTRL2_TASD_MASK                      (0xF80000U)
-#define CAN_CTRL2_TASD_SHIFT                     (19U)
-#define CAN_CTRL2_TASD(x)                        (((uint32_t)(((uint32_t)(x)) << CAN_CTRL2_TASD_SHIFT)) & CAN_CTRL2_TASD_MASK)
-#define CAN_CTRL2_RFFN_MASK                      (0xF000000U)
-#define CAN_CTRL2_RFFN_SHIFT                     (24U)
-#define CAN_CTRL2_RFFN(x)                        (((uint32_t)(((uint32_t)(x)) << CAN_CTRL2_RFFN_SHIFT)) & CAN_CTRL2_RFFN_MASK)
-#define CAN_CTRL2_WRMFRZ_MASK                    (0x10000000U)
-#define CAN_CTRL2_WRMFRZ_SHIFT                   (28U)
-#define CAN_CTRL2_WRMFRZ(x)                      (((uint32_t)(((uint32_t)(x)) << CAN_CTRL2_WRMFRZ_SHIFT)) & CAN_CTRL2_WRMFRZ_MASK)
-
-/*! @name ESR2 - Error and Status 2 register */
-#define CAN_ESR2_IMB_MASK                        (0x2000U)
-#define CAN_ESR2_IMB_SHIFT                       (13U)
-#define CAN_ESR2_IMB(x)                          (((uint32_t)(((uint32_t)(x)) << CAN_ESR2_IMB_SHIFT)) & CAN_ESR2_IMB_MASK)
-#define CAN_ESR2_VPS_MASK                        (0x4000U)
-#define CAN_ESR2_VPS_SHIFT                       (14U)
-#define CAN_ESR2_VPS(x)                          (((uint32_t)(((uint32_t)(x)) << CAN_ESR2_VPS_SHIFT)) & CAN_ESR2_VPS_MASK)
-#define CAN_ESR2_LPTM_MASK                       (0x7F0000U)
-#define CAN_ESR2_LPTM_SHIFT                      (16U)
-#define CAN_ESR2_LPTM(x)                         (((uint32_t)(((uint32_t)(x)) << CAN_ESR2_LPTM_SHIFT)) & CAN_ESR2_LPTM_MASK)
-
-/*! @name CRCR - CRC Register */
-#define CAN_CRCR_TXCRC_MASK                      (0x7FFFU)
-#define CAN_CRCR_TXCRC_SHIFT                     (0U)
-#define CAN_CRCR_TXCRC(x)                        (((uint32_t)(((uint32_t)(x)) << CAN_CRCR_TXCRC_SHIFT)) & CAN_CRCR_TXCRC_MASK)
-#define CAN_CRCR_MBCRC_MASK                      (0x7F0000U)
-#define CAN_CRCR_MBCRC_SHIFT                     (16U)
-#define CAN_CRCR_MBCRC(x)                        (((uint32_t)(((uint32_t)(x)) << CAN_CRCR_MBCRC_SHIFT)) & CAN_CRCR_MBCRC_MASK)
-
-/*! @name RXFGMASK - Rx FIFO Global Mask register */
-#define CAN_RXFGMASK_FGM_MASK                    (0xFFFFFFFFU)
-#define CAN_RXFGMASK_FGM_SHIFT                   (0U)
-#define CAN_RXFGMASK_FGM(x)                      (((uint32_t)(((uint32_t)(x)) << CAN_RXFGMASK_FGM_SHIFT)) & CAN_RXFGMASK_FGM_MASK)
-
-/*! @name RXFIR - Rx FIFO Information Register */
-#define CAN_RXFIR_IDHIT_MASK                     (0x1FFU)
-#define CAN_RXFIR_IDHIT_SHIFT                    (0U)
-#define CAN_RXFIR_IDHIT(x)                       (((uint32_t)(((uint32_t)(x)) << CAN_RXFIR_IDHIT_SHIFT)) & CAN_RXFIR_IDHIT_MASK)
-
-/*! @name CS - Message Buffer 0 CS Register..Message Buffer 15 CS Register */
-#define CAN_CS_TIME_STAMP_MASK                   (0xFFFFU)
-#define CAN_CS_TIME_STAMP_SHIFT                  (0U)
-#define CAN_CS_TIME_STAMP(x)                     (((uint32_t)(((uint32_t)(x)) << CAN_CS_TIME_STAMP_SHIFT)) & CAN_CS_TIME_STAMP_MASK)
-#define CAN_CS_DLC_MASK                          (0xF0000U)
-#define CAN_CS_DLC_SHIFT                         (16U)
-#define CAN_CS_DLC(x)                            (((uint32_t)(((uint32_t)(x)) << CAN_CS_DLC_SHIFT)) & CAN_CS_DLC_MASK)
-#define CAN_CS_RTR_MASK                          (0x100000U)
-#define CAN_CS_RTR_SHIFT                         (20U)
-#define CAN_CS_RTR(x)                            (((uint32_t)(((uint32_t)(x)) << CAN_CS_RTR_SHIFT)) & CAN_CS_RTR_MASK)
-#define CAN_CS_IDE_MASK                          (0x200000U)
-#define CAN_CS_IDE_SHIFT                         (21U)
-#define CAN_CS_IDE(x)                            (((uint32_t)(((uint32_t)(x)) << CAN_CS_IDE_SHIFT)) & CAN_CS_IDE_MASK)
-#define CAN_CS_SRR_MASK                          (0x400000U)
-#define CAN_CS_SRR_SHIFT                         (22U)
-#define CAN_CS_SRR(x)                            (((uint32_t)(((uint32_t)(x)) << CAN_CS_SRR_SHIFT)) & CAN_CS_SRR_MASK)
-#define CAN_CS_CODE_MASK                         (0xF000000U)
-#define CAN_CS_CODE_SHIFT                        (24U)
-#define CAN_CS_CODE(x)                           (((uint32_t)(((uint32_t)(x)) << CAN_CS_CODE_SHIFT)) & CAN_CS_CODE_MASK)
-
-/* The count of CAN_CS */
-#define CAN_CS_COUNT                             (16U)
-
-/*! @name ID - Message Buffer 0 ID Register..Message Buffer 15 ID Register */
-#define CAN_ID_EXT_MASK                          (0x3FFFFU)
-#define CAN_ID_EXT_SHIFT                         (0U)
-#define CAN_ID_EXT(x)                            (((uint32_t)(((uint32_t)(x)) << CAN_ID_EXT_SHIFT)) & CAN_ID_EXT_MASK)
-#define CAN_ID_STD_MASK                          (0x1FFC0000U)
-#define CAN_ID_STD_SHIFT                         (18U)
-#define CAN_ID_STD(x)                            (((uint32_t)(((uint32_t)(x)) << CAN_ID_STD_SHIFT)) & CAN_ID_STD_MASK)
-#define CAN_ID_PRIO_MASK                         (0xE0000000U)
-#define CAN_ID_PRIO_SHIFT                        (29U)
-#define CAN_ID_PRIO(x)                           (((uint32_t)(((uint32_t)(x)) << CAN_ID_PRIO_SHIFT)) & CAN_ID_PRIO_MASK)
-
-/* The count of CAN_ID */
-#define CAN_ID_COUNT                             (16U)
-
-/*! @name WORD0 - Message Buffer 0 WORD0 Register..Message Buffer 15 WORD0 Register */
-#define CAN_WORD0_DATA_BYTE_3_MASK               (0xFFU)
-#define CAN_WORD0_DATA_BYTE_3_SHIFT              (0U)
-#define CAN_WORD0_DATA_BYTE_3(x)                 (((uint32_t)(((uint32_t)(x)) << CAN_WORD0_DATA_BYTE_3_SHIFT)) & CAN_WORD0_DATA_BYTE_3_MASK)
-#define CAN_WORD0_DATA_BYTE_2_MASK               (0xFF00U)
-#define CAN_WORD0_DATA_BYTE_2_SHIFT              (8U)
-#define CAN_WORD0_DATA_BYTE_2(x)                 (((uint32_t)(((uint32_t)(x)) << CAN_WORD0_DATA_BYTE_2_SHIFT)) & CAN_WORD0_DATA_BYTE_2_MASK)
-#define CAN_WORD0_DATA_BYTE_1_MASK               (0xFF0000U)
-#define CAN_WORD0_DATA_BYTE_1_SHIFT              (16U)
-#define CAN_WORD0_DATA_BYTE_1(x)                 (((uint32_t)(((uint32_t)(x)) << CAN_WORD0_DATA_BYTE_1_SHIFT)) & CAN_WORD0_DATA_BYTE_1_MASK)
-#define CAN_WORD0_DATA_BYTE_0_MASK               (0xFF000000U)
-#define CAN_WORD0_DATA_BYTE_0_SHIFT              (24U)
-#define CAN_WORD0_DATA_BYTE_0(x)                 (((uint32_t)(((uint32_t)(x)) << CAN_WORD0_DATA_BYTE_0_SHIFT)) & CAN_WORD0_DATA_BYTE_0_MASK)
-
-/* The count of CAN_WORD0 */
-#define CAN_WORD0_COUNT                          (16U)
-
-/*! @name WORD1 - Message Buffer 0 WORD1 Register..Message Buffer 15 WORD1 Register */
-#define CAN_WORD1_DATA_BYTE_7_MASK               (0xFFU)
-#define CAN_WORD1_DATA_BYTE_7_SHIFT              (0U)
-#define CAN_WORD1_DATA_BYTE_7(x)                 (((uint32_t)(((uint32_t)(x)) << CAN_WORD1_DATA_BYTE_7_SHIFT)) & CAN_WORD1_DATA_BYTE_7_MASK)
-#define CAN_WORD1_DATA_BYTE_6_MASK               (0xFF00U)
-#define CAN_WORD1_DATA_BYTE_6_SHIFT              (8U)
-#define CAN_WORD1_DATA_BYTE_6(x)                 (((uint32_t)(((uint32_t)(x)) << CAN_WORD1_DATA_BYTE_6_SHIFT)) & CAN_WORD1_DATA_BYTE_6_MASK)
-#define CAN_WORD1_DATA_BYTE_5_MASK               (0xFF0000U)
-#define CAN_WORD1_DATA_BYTE_5_SHIFT              (16U)
-#define CAN_WORD1_DATA_BYTE_5(x)                 (((uint32_t)(((uint32_t)(x)) << CAN_WORD1_DATA_BYTE_5_SHIFT)) & CAN_WORD1_DATA_BYTE_5_MASK)
-#define CAN_WORD1_DATA_BYTE_4_MASK               (0xFF000000U)
-#define CAN_WORD1_DATA_BYTE_4_SHIFT              (24U)
-#define CAN_WORD1_DATA_BYTE_4(x)                 (((uint32_t)(((uint32_t)(x)) << CAN_WORD1_DATA_BYTE_4_SHIFT)) & CAN_WORD1_DATA_BYTE_4_MASK)
-
-/* The count of CAN_WORD1 */
-#define CAN_WORD1_COUNT                          (16U)
-
-/*! @name RXIMR - Rx Individual Mask Registers */
-#define CAN_RXIMR_MI_MASK                        (0xFFFFFFFFU)
-#define CAN_RXIMR_MI_SHIFT                       (0U)
-#define CAN_RXIMR_MI(x)                          (((uint32_t)(((uint32_t)(x)) << CAN_RXIMR_MI_SHIFT)) & CAN_RXIMR_MI_MASK)
-
-/* The count of CAN_RXIMR */
-#define CAN_RXIMR_COUNT                          (16U)
-
-
-/*!
- * @}
- */ /* end of group CAN_Register_Masks */
-
-
-/* CAN - Peripheral instance base addresses */
-/** Peripheral CAN0 base address */
-#define CAN0_BASE                                (0x40024000u)
-/** Peripheral CAN0 base pointer */
-#define CAN0                                     ((CAN_Type *)CAN0_BASE)
-/** Array initializer of CAN peripheral base addresses */
-#define CAN_BASE_ADDRS                           { CAN0_BASE }
-/** Array initializer of CAN peripheral base pointers */
-#define CAN_BASE_PTRS                            { CAN0 }
-/** Interrupt vectors for the CAN peripheral type */
-#define CAN_Rx_Warning_IRQS                      { CAN0_Rx_Warning_IRQn }
-#define CAN_Tx_Warning_IRQS                      { CAN0_Tx_Warning_IRQn }
-#define CAN_Wake_Up_IRQS                         { CAN0_Wake_Up_IRQn }
-#define CAN_Error_IRQS                           { CAN0_Error_IRQn }
-#define CAN_Bus_Off_IRQS                         { CAN0_Bus_Off_IRQn }
-#define CAN_ORed_Message_buffer_IRQS             { CAN0_ORed_Message_buffer_IRQn }
-
-/*!
- * @}
- */ /* end of group CAN_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- CAU Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup CAU_Peripheral_Access_Layer CAU Peripheral Access Layer
- * @{
- */
-
-/** CAU - Register Layout Typedef */
-typedef struct {
-  __O  uint32_t DIRECT[16];                        /**< Direct access register 0..Direct access register 15, array offset: 0x0, array step: 0x4 */
-       uint8_t RESERVED_0[2048];
-  __O  uint32_t LDR_CASR;                          /**< Status register - Load Register command, offset: 0x840 */
-  __O  uint32_t LDR_CAA;                           /**< Accumulator register - Load Register command, offset: 0x844 */
-  __O  uint32_t LDR_CA[9];                         /**< General Purpose Register 0 - Load Register command..General Purpose Register 8 - Load Register command, array offset: 0x848, array step: 0x4 */
-       uint8_t RESERVED_1[20];
-  __I  uint32_t STR_CASR;                          /**< Status register - Store Register command, offset: 0x880 */
-  __I  uint32_t STR_CAA;                           /**< Accumulator register - Store Register command, offset: 0x884 */
-  __I  uint32_t STR_CA[9];                         /**< General Purpose Register 0 - Store Register command..General Purpose Register 8 - Store Register command, array offset: 0x888, array step: 0x4 */
-       uint8_t RESERVED_2[20];
-  __O  uint32_t ADR_CASR;                          /**< Status register - Add Register command, offset: 0x8C0 */
-  __O  uint32_t ADR_CAA;                           /**< Accumulator register - Add to register command, offset: 0x8C4 */
-  __O  uint32_t ADR_CA[9];                         /**< General Purpose Register 0 - Add to register command..General Purpose Register 8 - Add to register command, array offset: 0x8C8, array step: 0x4 */
-       uint8_t RESERVED_3[20];
-  __O  uint32_t RADR_CASR;                         /**< Status register - Reverse and Add to Register command, offset: 0x900 */
-  __O  uint32_t RADR_CAA;                          /**< Accumulator register - Reverse and Add to Register command, offset: 0x904 */
-  __O  uint32_t RADR_CA[9];                        /**< General Purpose Register 0 - Reverse and Add to Register command..General Purpose Register 8 - Reverse and Add to Register command, array offset: 0x908, array step: 0x4 */
-       uint8_t RESERVED_4[84];
-  __O  uint32_t XOR_CASR;                          /**< Status register - Exclusive Or command, offset: 0x980 */
-  __O  uint32_t XOR_CAA;                           /**< Accumulator register - Exclusive Or command, offset: 0x984 */
-  __O  uint32_t XOR_CA[9];                         /**< General Purpose Register 0 - Exclusive Or command..General Purpose Register 8 - Exclusive Or command, array offset: 0x988, array step: 0x4 */
-       uint8_t RESERVED_5[20];
-  __O  uint32_t ROTL_CASR;                         /**< Status register - Rotate Left command, offset: 0x9C0 */
-  __O  uint32_t ROTL_CAA;                          /**< Accumulator register - Rotate Left command, offset: 0x9C4 */
-  __O  uint32_t ROTL_CA[9];                        /**< General Purpose Register 0 - Rotate Left command..General Purpose Register 8 - Rotate Left command, array offset: 0x9C8, array step: 0x4 */
-       uint8_t RESERVED_6[276];
-  __O  uint32_t AESC_CASR;                         /**< Status register - AES Column Operation command, offset: 0xB00 */
-  __O  uint32_t AESC_CAA;                          /**< Accumulator register - AES Column Operation command, offset: 0xB04 */
-  __O  uint32_t AESC_CA[9];                        /**< General Purpose Register 0 - AES Column Operation command..General Purpose Register 8 - AES Column Operation command, array offset: 0xB08, array step: 0x4 */
-       uint8_t RESERVED_7[20];
-  __O  uint32_t AESIC_CASR;                        /**< Status register - AES Inverse Column Operation command, offset: 0xB40 */
-  __O  uint32_t AESIC_CAA;                         /**< Accumulator register - AES Inverse Column Operation command, offset: 0xB44 */
-  __O  uint32_t AESIC_CA[9];                       /**< General Purpose Register 0 - AES Inverse Column Operation command..General Purpose Register 8 - AES Inverse Column Operation command, array offset: 0xB48, array step: 0x4 */
-} CAU_Type;
-
-/* ----------------------------------------------------------------------------
-   -- CAU Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup CAU_Register_Masks CAU Register Masks
- * @{
- */
-
-/*! @name DIRECT - Direct access register 0..Direct access register 15 */
-#define CAU_DIRECT_CAU_DIRECT0_MASK              (0xFFFFFFFFU)
-#define CAU_DIRECT_CAU_DIRECT0_SHIFT             (0U)
-#define CAU_DIRECT_CAU_DIRECT0(x)                (((uint32_t)(((uint32_t)(x)) << CAU_DIRECT_CAU_DIRECT0_SHIFT)) & CAU_DIRECT_CAU_DIRECT0_MASK)
-#define CAU_DIRECT_CAU_DIRECT1_MASK              (0xFFFFFFFFU)
-#define CAU_DIRECT_CAU_DIRECT1_SHIFT             (0U)
-#define CAU_DIRECT_CAU_DIRECT1(x)                (((uint32_t)(((uint32_t)(x)) << CAU_DIRECT_CAU_DIRECT1_SHIFT)) & CAU_DIRECT_CAU_DIRECT1_MASK)
-#define CAU_DIRECT_CAU_DIRECT2_MASK              (0xFFFFFFFFU)
-#define CAU_DIRECT_CAU_DIRECT2_SHIFT             (0U)
-#define CAU_DIRECT_CAU_DIRECT2(x)                (((uint32_t)(((uint32_t)(x)) << CAU_DIRECT_CAU_DIRECT2_SHIFT)) & CAU_DIRECT_CAU_DIRECT2_MASK)
-#define CAU_DIRECT_CAU_DIRECT3_MASK              (0xFFFFFFFFU)
-#define CAU_DIRECT_CAU_DIRECT3_SHIFT             (0U)
-#define CAU_DIRECT_CAU_DIRECT3(x)                (((uint32_t)(((uint32_t)(x)) << CAU_DIRECT_CAU_DIRECT3_SHIFT)) & CAU_DIRECT_CAU_DIRECT3_MASK)
-#define CAU_DIRECT_CAU_DIRECT4_MASK              (0xFFFFFFFFU)
-#define CAU_DIRECT_CAU_DIRECT4_SHIFT             (0U)
-#define CAU_DIRECT_CAU_DIRECT4(x)                (((uint32_t)(((uint32_t)(x)) << CAU_DIRECT_CAU_DIRECT4_SHIFT)) & CAU_DIRECT_CAU_DIRECT4_MASK)
-#define CAU_DIRECT_CAU_DIRECT5_MASK              (0xFFFFFFFFU)
-#define CAU_DIRECT_CAU_DIRECT5_SHIFT             (0U)
-#define CAU_DIRECT_CAU_DIRECT5(x)                (((uint32_t)(((uint32_t)(x)) << CAU_DIRECT_CAU_DIRECT5_SHIFT)) & CAU_DIRECT_CAU_DIRECT5_MASK)
-#define CAU_DIRECT_CAU_DIRECT6_MASK              (0xFFFFFFFFU)
-#define CAU_DIRECT_CAU_DIRECT6_SHIFT             (0U)
-#define CAU_DIRECT_CAU_DIRECT6(x)                (((uint32_t)(((uint32_t)(x)) << CAU_DIRECT_CAU_DIRECT6_SHIFT)) & CAU_DIRECT_CAU_DIRECT6_MASK)
-#define CAU_DIRECT_CAU_DIRECT7_MASK              (0xFFFFFFFFU)
-#define CAU_DIRECT_CAU_DIRECT7_SHIFT             (0U)
-#define CAU_DIRECT_CAU_DIRECT7(x)                (((uint32_t)(((uint32_t)(x)) << CAU_DIRECT_CAU_DIRECT7_SHIFT)) & CAU_DIRECT_CAU_DIRECT7_MASK)
-#define CAU_DIRECT_CAU_DIRECT8_MASK              (0xFFFFFFFFU)
-#define CAU_DIRECT_CAU_DIRECT8_SHIFT             (0U)
-#define CAU_DIRECT_CAU_DIRECT8(x)                (((uint32_t)(((uint32_t)(x)) << CAU_DIRECT_CAU_DIRECT8_SHIFT)) & CAU_DIRECT_CAU_DIRECT8_MASK)
-#define CAU_DIRECT_CAU_DIRECT9_MASK              (0xFFFFFFFFU)
-#define CAU_DIRECT_CAU_DIRECT9_SHIFT             (0U)
-#define CAU_DIRECT_CAU_DIRECT9(x)                (((uint32_t)(((uint32_t)(x)) << CAU_DIRECT_CAU_DIRECT9_SHIFT)) & CAU_DIRECT_CAU_DIRECT9_MASK)
-#define CAU_DIRECT_CAU_DIRECT10_MASK             (0xFFFFFFFFU)
-#define CAU_DIRECT_CAU_DIRECT10_SHIFT            (0U)
-#define CAU_DIRECT_CAU_DIRECT10(x)               (((uint32_t)(((uint32_t)(x)) << CAU_DIRECT_CAU_DIRECT10_SHIFT)) & CAU_DIRECT_CAU_DIRECT10_MASK)
-#define CAU_DIRECT_CAU_DIRECT11_MASK             (0xFFFFFFFFU)
-#define CAU_DIRECT_CAU_DIRECT11_SHIFT            (0U)
-#define CAU_DIRECT_CAU_DIRECT11(x)               (((uint32_t)(((uint32_t)(x)) << CAU_DIRECT_CAU_DIRECT11_SHIFT)) & CAU_DIRECT_CAU_DIRECT11_MASK)
-#define CAU_DIRECT_CAU_DIRECT12_MASK             (0xFFFFFFFFU)
-#define CAU_DIRECT_CAU_DIRECT12_SHIFT            (0U)
-#define CAU_DIRECT_CAU_DIRECT12(x)               (((uint32_t)(((uint32_t)(x)) << CAU_DIRECT_CAU_DIRECT12_SHIFT)) & CAU_DIRECT_CAU_DIRECT12_MASK)
-#define CAU_DIRECT_CAU_DIRECT13_MASK             (0xFFFFFFFFU)
-#define CAU_DIRECT_CAU_DIRECT13_SHIFT            (0U)
-#define CAU_DIRECT_CAU_DIRECT13(x)               (((uint32_t)(((uint32_t)(x)) << CAU_DIRECT_CAU_DIRECT13_SHIFT)) & CAU_DIRECT_CAU_DIRECT13_MASK)
-#define CAU_DIRECT_CAU_DIRECT14_MASK             (0xFFFFFFFFU)
-#define CAU_DIRECT_CAU_DIRECT14_SHIFT            (0U)
-#define CAU_DIRECT_CAU_DIRECT14(x)               (((uint32_t)(((uint32_t)(x)) << CAU_DIRECT_CAU_DIRECT14_SHIFT)) & CAU_DIRECT_CAU_DIRECT14_MASK)
-#define CAU_DIRECT_CAU_DIRECT15_MASK             (0xFFFFFFFFU)
-#define CAU_DIRECT_CAU_DIRECT15_SHIFT            (0U)
-#define CAU_DIRECT_CAU_DIRECT15(x)               (((uint32_t)(((uint32_t)(x)) << CAU_DIRECT_CAU_DIRECT15_SHIFT)) & CAU_DIRECT_CAU_DIRECT15_MASK)
-
-/* The count of CAU_DIRECT */
-#define CAU_DIRECT_COUNT                         (16U)
-
-/*! @name LDR_CASR - Status register - Load Register command */
-#define CAU_LDR_CASR_IC_MASK                     (0x1U)
-#define CAU_LDR_CASR_IC_SHIFT                    (0U)
-#define CAU_LDR_CASR_IC(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_LDR_CASR_IC_SHIFT)) & CAU_LDR_CASR_IC_MASK)
-#define CAU_LDR_CASR_DPE_MASK                    (0x2U)
-#define CAU_LDR_CASR_DPE_SHIFT                   (1U)
-#define CAU_LDR_CASR_DPE(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_LDR_CASR_DPE_SHIFT)) & CAU_LDR_CASR_DPE_MASK)
-#define CAU_LDR_CASR_VER_MASK                    (0xF0000000U)
-#define CAU_LDR_CASR_VER_SHIFT                   (28U)
-#define CAU_LDR_CASR_VER(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_LDR_CASR_VER_SHIFT)) & CAU_LDR_CASR_VER_MASK)
-
-/*! @name LDR_CAA - Accumulator register - Load Register command */
-#define CAU_LDR_CAA_ACC_MASK                     (0xFFFFFFFFU)
-#define CAU_LDR_CAA_ACC_SHIFT                    (0U)
-#define CAU_LDR_CAA_ACC(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_LDR_CAA_ACC_SHIFT)) & CAU_LDR_CAA_ACC_MASK)
-
-/*! @name LDR_CA - General Purpose Register 0 - Load Register command..General Purpose Register 8 - Load Register command */
-#define CAU_LDR_CA_CA0_MASK                      (0xFFFFFFFFU)
-#define CAU_LDR_CA_CA0_SHIFT                     (0U)
-#define CAU_LDR_CA_CA0(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_LDR_CA_CA0_SHIFT)) & CAU_LDR_CA_CA0_MASK)
-#define CAU_LDR_CA_CA1_MASK                      (0xFFFFFFFFU)
-#define CAU_LDR_CA_CA1_SHIFT                     (0U)
-#define CAU_LDR_CA_CA1(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_LDR_CA_CA1_SHIFT)) & CAU_LDR_CA_CA1_MASK)
-#define CAU_LDR_CA_CA2_MASK                      (0xFFFFFFFFU)
-#define CAU_LDR_CA_CA2_SHIFT                     (0U)
-#define CAU_LDR_CA_CA2(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_LDR_CA_CA2_SHIFT)) & CAU_LDR_CA_CA2_MASK)
-#define CAU_LDR_CA_CA3_MASK                      (0xFFFFFFFFU)
-#define CAU_LDR_CA_CA3_SHIFT                     (0U)
-#define CAU_LDR_CA_CA3(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_LDR_CA_CA3_SHIFT)) & CAU_LDR_CA_CA3_MASK)
-#define CAU_LDR_CA_CA4_MASK                      (0xFFFFFFFFU)
-#define CAU_LDR_CA_CA4_SHIFT                     (0U)
-#define CAU_LDR_CA_CA4(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_LDR_CA_CA4_SHIFT)) & CAU_LDR_CA_CA4_MASK)
-#define CAU_LDR_CA_CA5_MASK                      (0xFFFFFFFFU)
-#define CAU_LDR_CA_CA5_SHIFT                     (0U)
-#define CAU_LDR_CA_CA5(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_LDR_CA_CA5_SHIFT)) & CAU_LDR_CA_CA5_MASK)
-#define CAU_LDR_CA_CA6_MASK                      (0xFFFFFFFFU)
-#define CAU_LDR_CA_CA6_SHIFT                     (0U)
-#define CAU_LDR_CA_CA6(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_LDR_CA_CA6_SHIFT)) & CAU_LDR_CA_CA6_MASK)
-#define CAU_LDR_CA_CA7_MASK                      (0xFFFFFFFFU)
-#define CAU_LDR_CA_CA7_SHIFT                     (0U)
-#define CAU_LDR_CA_CA7(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_LDR_CA_CA7_SHIFT)) & CAU_LDR_CA_CA7_MASK)
-#define CAU_LDR_CA_CA8_MASK                      (0xFFFFFFFFU)
-#define CAU_LDR_CA_CA8_SHIFT                     (0U)
-#define CAU_LDR_CA_CA8(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_LDR_CA_CA8_SHIFT)) & CAU_LDR_CA_CA8_MASK)
-
-/* The count of CAU_LDR_CA */
-#define CAU_LDR_CA_COUNT                         (9U)
-
-/*! @name STR_CASR - Status register - Store Register command */
-#define CAU_STR_CASR_IC_MASK                     (0x1U)
-#define CAU_STR_CASR_IC_SHIFT                    (0U)
-#define CAU_STR_CASR_IC(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_STR_CASR_IC_SHIFT)) & CAU_STR_CASR_IC_MASK)
-#define CAU_STR_CASR_DPE_MASK                    (0x2U)
-#define CAU_STR_CASR_DPE_SHIFT                   (1U)
-#define CAU_STR_CASR_DPE(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_STR_CASR_DPE_SHIFT)) & CAU_STR_CASR_DPE_MASK)
-#define CAU_STR_CASR_VER_MASK                    (0xF0000000U)
-#define CAU_STR_CASR_VER_SHIFT                   (28U)
-#define CAU_STR_CASR_VER(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_STR_CASR_VER_SHIFT)) & CAU_STR_CASR_VER_MASK)
-
-/*! @name STR_CAA - Accumulator register - Store Register command */
-#define CAU_STR_CAA_ACC_MASK                     (0xFFFFFFFFU)
-#define CAU_STR_CAA_ACC_SHIFT                    (0U)
-#define CAU_STR_CAA_ACC(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_STR_CAA_ACC_SHIFT)) & CAU_STR_CAA_ACC_MASK)
-
-/*! @name STR_CA - General Purpose Register 0 - Store Register command..General Purpose Register 8 - Store Register command */
-#define CAU_STR_CA_CA0_MASK                      (0xFFFFFFFFU)
-#define CAU_STR_CA_CA0_SHIFT                     (0U)
-#define CAU_STR_CA_CA0(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_STR_CA_CA0_SHIFT)) & CAU_STR_CA_CA0_MASK)
-#define CAU_STR_CA_CA1_MASK                      (0xFFFFFFFFU)
-#define CAU_STR_CA_CA1_SHIFT                     (0U)
-#define CAU_STR_CA_CA1(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_STR_CA_CA1_SHIFT)) & CAU_STR_CA_CA1_MASK)
-#define CAU_STR_CA_CA2_MASK                      (0xFFFFFFFFU)
-#define CAU_STR_CA_CA2_SHIFT                     (0U)
-#define CAU_STR_CA_CA2(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_STR_CA_CA2_SHIFT)) & CAU_STR_CA_CA2_MASK)
-#define CAU_STR_CA_CA3_MASK                      (0xFFFFFFFFU)
-#define CAU_STR_CA_CA3_SHIFT                     (0U)
-#define CAU_STR_CA_CA3(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_STR_CA_CA3_SHIFT)) & CAU_STR_CA_CA3_MASK)
-#define CAU_STR_CA_CA4_MASK                      (0xFFFFFFFFU)
-#define CAU_STR_CA_CA4_SHIFT                     (0U)
-#define CAU_STR_CA_CA4(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_STR_CA_CA4_SHIFT)) & CAU_STR_CA_CA4_MASK)
-#define CAU_STR_CA_CA5_MASK                      (0xFFFFFFFFU)
-#define CAU_STR_CA_CA5_SHIFT                     (0U)
-#define CAU_STR_CA_CA5(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_STR_CA_CA5_SHIFT)) & CAU_STR_CA_CA5_MASK)
-#define CAU_STR_CA_CA6_MASK                      (0xFFFFFFFFU)
-#define CAU_STR_CA_CA6_SHIFT                     (0U)
-#define CAU_STR_CA_CA6(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_STR_CA_CA6_SHIFT)) & CAU_STR_CA_CA6_MASK)
-#define CAU_STR_CA_CA7_MASK                      (0xFFFFFFFFU)
-#define CAU_STR_CA_CA7_SHIFT                     (0U)
-#define CAU_STR_CA_CA7(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_STR_CA_CA7_SHIFT)) & CAU_STR_CA_CA7_MASK)
-#define CAU_STR_CA_CA8_MASK                      (0xFFFFFFFFU)
-#define CAU_STR_CA_CA8_SHIFT                     (0U)
-#define CAU_STR_CA_CA8(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_STR_CA_CA8_SHIFT)) & CAU_STR_CA_CA8_MASK)
-
-/* The count of CAU_STR_CA */
-#define CAU_STR_CA_COUNT                         (9U)
-
-/*! @name ADR_CASR - Status register - Add Register command */
-#define CAU_ADR_CASR_IC_MASK                     (0x1U)
-#define CAU_ADR_CASR_IC_SHIFT                    (0U)
-#define CAU_ADR_CASR_IC(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_ADR_CASR_IC_SHIFT)) & CAU_ADR_CASR_IC_MASK)
-#define CAU_ADR_CASR_DPE_MASK                    (0x2U)
-#define CAU_ADR_CASR_DPE_SHIFT                   (1U)
-#define CAU_ADR_CASR_DPE(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_ADR_CASR_DPE_SHIFT)) & CAU_ADR_CASR_DPE_MASK)
-#define CAU_ADR_CASR_VER_MASK                    (0xF0000000U)
-#define CAU_ADR_CASR_VER_SHIFT                   (28U)
-#define CAU_ADR_CASR_VER(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_ADR_CASR_VER_SHIFT)) & CAU_ADR_CASR_VER_MASK)
-
-/*! @name ADR_CAA - Accumulator register - Add to register command */
-#define CAU_ADR_CAA_ACC_MASK                     (0xFFFFFFFFU)
-#define CAU_ADR_CAA_ACC_SHIFT                    (0U)
-#define CAU_ADR_CAA_ACC(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_ADR_CAA_ACC_SHIFT)) & CAU_ADR_CAA_ACC_MASK)
-
-/*! @name ADR_CA - General Purpose Register 0 - Add to register command..General Purpose Register 8 - Add to register command */
-#define CAU_ADR_CA_CA0_MASK                      (0xFFFFFFFFU)
-#define CAU_ADR_CA_CA0_SHIFT                     (0U)
-#define CAU_ADR_CA_CA0(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_ADR_CA_CA0_SHIFT)) & CAU_ADR_CA_CA0_MASK)
-#define CAU_ADR_CA_CA1_MASK                      (0xFFFFFFFFU)
-#define CAU_ADR_CA_CA1_SHIFT                     (0U)
-#define CAU_ADR_CA_CA1(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_ADR_CA_CA1_SHIFT)) & CAU_ADR_CA_CA1_MASK)
-#define CAU_ADR_CA_CA2_MASK                      (0xFFFFFFFFU)
-#define CAU_ADR_CA_CA2_SHIFT                     (0U)
-#define CAU_ADR_CA_CA2(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_ADR_CA_CA2_SHIFT)) & CAU_ADR_CA_CA2_MASK)
-#define CAU_ADR_CA_CA3_MASK                      (0xFFFFFFFFU)
-#define CAU_ADR_CA_CA3_SHIFT                     (0U)
-#define CAU_ADR_CA_CA3(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_ADR_CA_CA3_SHIFT)) & CAU_ADR_CA_CA3_MASK)
-#define CAU_ADR_CA_CA4_MASK                      (0xFFFFFFFFU)
-#define CAU_ADR_CA_CA4_SHIFT                     (0U)
-#define CAU_ADR_CA_CA4(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_ADR_CA_CA4_SHIFT)) & CAU_ADR_CA_CA4_MASK)
-#define CAU_ADR_CA_CA5_MASK                      (0xFFFFFFFFU)
-#define CAU_ADR_CA_CA5_SHIFT                     (0U)
-#define CAU_ADR_CA_CA5(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_ADR_CA_CA5_SHIFT)) & CAU_ADR_CA_CA5_MASK)
-#define CAU_ADR_CA_CA6_MASK                      (0xFFFFFFFFU)
-#define CAU_ADR_CA_CA6_SHIFT                     (0U)
-#define CAU_ADR_CA_CA6(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_ADR_CA_CA6_SHIFT)) & CAU_ADR_CA_CA6_MASK)
-#define CAU_ADR_CA_CA7_MASK                      (0xFFFFFFFFU)
-#define CAU_ADR_CA_CA7_SHIFT                     (0U)
-#define CAU_ADR_CA_CA7(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_ADR_CA_CA7_SHIFT)) & CAU_ADR_CA_CA7_MASK)
-#define CAU_ADR_CA_CA8_MASK                      (0xFFFFFFFFU)
-#define CAU_ADR_CA_CA8_SHIFT                     (0U)
-#define CAU_ADR_CA_CA8(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_ADR_CA_CA8_SHIFT)) & CAU_ADR_CA_CA8_MASK)
-
-/* The count of CAU_ADR_CA */
-#define CAU_ADR_CA_COUNT                         (9U)
-
-/*! @name RADR_CASR - Status register - Reverse and Add to Register command */
-#define CAU_RADR_CASR_IC_MASK                    (0x1U)
-#define CAU_RADR_CASR_IC_SHIFT                   (0U)
-#define CAU_RADR_CASR_IC(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_RADR_CASR_IC_SHIFT)) & CAU_RADR_CASR_IC_MASK)
-#define CAU_RADR_CASR_DPE_MASK                   (0x2U)
-#define CAU_RADR_CASR_DPE_SHIFT                  (1U)
-#define CAU_RADR_CASR_DPE(x)                     (((uint32_t)(((uint32_t)(x)) << CAU_RADR_CASR_DPE_SHIFT)) & CAU_RADR_CASR_DPE_MASK)
-#define CAU_RADR_CASR_VER_MASK                   (0xF0000000U)
-#define CAU_RADR_CASR_VER_SHIFT                  (28U)
-#define CAU_RADR_CASR_VER(x)                     (((uint32_t)(((uint32_t)(x)) << CAU_RADR_CASR_VER_SHIFT)) & CAU_RADR_CASR_VER_MASK)
-
-/*! @name RADR_CAA - Accumulator register - Reverse and Add to Register command */
-#define CAU_RADR_CAA_ACC_MASK                    (0xFFFFFFFFU)
-#define CAU_RADR_CAA_ACC_SHIFT                   (0U)
-#define CAU_RADR_CAA_ACC(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_RADR_CAA_ACC_SHIFT)) & CAU_RADR_CAA_ACC_MASK)
-
-/*! @name RADR_CA - General Purpose Register 0 - Reverse and Add to Register command..General Purpose Register 8 - Reverse and Add to Register command */
-#define CAU_RADR_CA_CA0_MASK                     (0xFFFFFFFFU)
-#define CAU_RADR_CA_CA0_SHIFT                    (0U)
-#define CAU_RADR_CA_CA0(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_RADR_CA_CA0_SHIFT)) & CAU_RADR_CA_CA0_MASK)
-#define CAU_RADR_CA_CA1_MASK                     (0xFFFFFFFFU)
-#define CAU_RADR_CA_CA1_SHIFT                    (0U)
-#define CAU_RADR_CA_CA1(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_RADR_CA_CA1_SHIFT)) & CAU_RADR_CA_CA1_MASK)
-#define CAU_RADR_CA_CA2_MASK                     (0xFFFFFFFFU)
-#define CAU_RADR_CA_CA2_SHIFT                    (0U)
-#define CAU_RADR_CA_CA2(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_RADR_CA_CA2_SHIFT)) & CAU_RADR_CA_CA2_MASK)
-#define CAU_RADR_CA_CA3_MASK                     (0xFFFFFFFFU)
-#define CAU_RADR_CA_CA3_SHIFT                    (0U)
-#define CAU_RADR_CA_CA3(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_RADR_CA_CA3_SHIFT)) & CAU_RADR_CA_CA3_MASK)
-#define CAU_RADR_CA_CA4_MASK                     (0xFFFFFFFFU)
-#define CAU_RADR_CA_CA4_SHIFT                    (0U)
-#define CAU_RADR_CA_CA4(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_RADR_CA_CA4_SHIFT)) & CAU_RADR_CA_CA4_MASK)
-#define CAU_RADR_CA_CA5_MASK                     (0xFFFFFFFFU)
-#define CAU_RADR_CA_CA5_SHIFT                    (0U)
-#define CAU_RADR_CA_CA5(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_RADR_CA_CA5_SHIFT)) & CAU_RADR_CA_CA5_MASK)
-#define CAU_RADR_CA_CA6_MASK                     (0xFFFFFFFFU)
-#define CAU_RADR_CA_CA6_SHIFT                    (0U)
-#define CAU_RADR_CA_CA6(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_RADR_CA_CA6_SHIFT)) & CAU_RADR_CA_CA6_MASK)
-#define CAU_RADR_CA_CA7_MASK                     (0xFFFFFFFFU)
-#define CAU_RADR_CA_CA7_SHIFT                    (0U)
-#define CAU_RADR_CA_CA7(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_RADR_CA_CA7_SHIFT)) & CAU_RADR_CA_CA7_MASK)
-#define CAU_RADR_CA_CA8_MASK                     (0xFFFFFFFFU)
-#define CAU_RADR_CA_CA8_SHIFT                    (0U)
-#define CAU_RADR_CA_CA8(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_RADR_CA_CA8_SHIFT)) & CAU_RADR_CA_CA8_MASK)
-
-/* The count of CAU_RADR_CA */
-#define CAU_RADR_CA_COUNT                        (9U)
-
-/*! @name XOR_CASR - Status register - Exclusive Or command */
-#define CAU_XOR_CASR_IC_MASK                     (0x1U)
-#define CAU_XOR_CASR_IC_SHIFT                    (0U)
-#define CAU_XOR_CASR_IC(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_XOR_CASR_IC_SHIFT)) & CAU_XOR_CASR_IC_MASK)
-#define CAU_XOR_CASR_DPE_MASK                    (0x2U)
-#define CAU_XOR_CASR_DPE_SHIFT                   (1U)
-#define CAU_XOR_CASR_DPE(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_XOR_CASR_DPE_SHIFT)) & CAU_XOR_CASR_DPE_MASK)
-#define CAU_XOR_CASR_VER_MASK                    (0xF0000000U)
-#define CAU_XOR_CASR_VER_SHIFT                   (28U)
-#define CAU_XOR_CASR_VER(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_XOR_CASR_VER_SHIFT)) & CAU_XOR_CASR_VER_MASK)
-
-/*! @name XOR_CAA - Accumulator register - Exclusive Or command */
-#define CAU_XOR_CAA_ACC_MASK                     (0xFFFFFFFFU)
-#define CAU_XOR_CAA_ACC_SHIFT                    (0U)
-#define CAU_XOR_CAA_ACC(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_XOR_CAA_ACC_SHIFT)) & CAU_XOR_CAA_ACC_MASK)
-
-/*! @name XOR_CA - General Purpose Register 0 - Exclusive Or command..General Purpose Register 8 - Exclusive Or command */
-#define CAU_XOR_CA_CA0_MASK                      (0xFFFFFFFFU)
-#define CAU_XOR_CA_CA0_SHIFT                     (0U)
-#define CAU_XOR_CA_CA0(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_XOR_CA_CA0_SHIFT)) & CAU_XOR_CA_CA0_MASK)
-#define CAU_XOR_CA_CA1_MASK                      (0xFFFFFFFFU)
-#define CAU_XOR_CA_CA1_SHIFT                     (0U)
-#define CAU_XOR_CA_CA1(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_XOR_CA_CA1_SHIFT)) & CAU_XOR_CA_CA1_MASK)
-#define CAU_XOR_CA_CA2_MASK                      (0xFFFFFFFFU)
-#define CAU_XOR_CA_CA2_SHIFT                     (0U)
-#define CAU_XOR_CA_CA2(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_XOR_CA_CA2_SHIFT)) & CAU_XOR_CA_CA2_MASK)
-#define CAU_XOR_CA_CA3_MASK                      (0xFFFFFFFFU)
-#define CAU_XOR_CA_CA3_SHIFT                     (0U)
-#define CAU_XOR_CA_CA3(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_XOR_CA_CA3_SHIFT)) & CAU_XOR_CA_CA3_MASK)
-#define CAU_XOR_CA_CA4_MASK                      (0xFFFFFFFFU)
-#define CAU_XOR_CA_CA4_SHIFT                     (0U)
-#define CAU_XOR_CA_CA4(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_XOR_CA_CA4_SHIFT)) & CAU_XOR_CA_CA4_MASK)
-#define CAU_XOR_CA_CA5_MASK                      (0xFFFFFFFFU)
-#define CAU_XOR_CA_CA5_SHIFT                     (0U)
-#define CAU_XOR_CA_CA5(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_XOR_CA_CA5_SHIFT)) & CAU_XOR_CA_CA5_MASK)
-#define CAU_XOR_CA_CA6_MASK                      (0xFFFFFFFFU)
-#define CAU_XOR_CA_CA6_SHIFT                     (0U)
-#define CAU_XOR_CA_CA6(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_XOR_CA_CA6_SHIFT)) & CAU_XOR_CA_CA6_MASK)
-#define CAU_XOR_CA_CA7_MASK                      (0xFFFFFFFFU)
-#define CAU_XOR_CA_CA7_SHIFT                     (0U)
-#define CAU_XOR_CA_CA7(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_XOR_CA_CA7_SHIFT)) & CAU_XOR_CA_CA7_MASK)
-#define CAU_XOR_CA_CA8_MASK                      (0xFFFFFFFFU)
-#define CAU_XOR_CA_CA8_SHIFT                     (0U)
-#define CAU_XOR_CA_CA8(x)                        (((uint32_t)(((uint32_t)(x)) << CAU_XOR_CA_CA8_SHIFT)) & CAU_XOR_CA_CA8_MASK)
-
-/* The count of CAU_XOR_CA */
-#define CAU_XOR_CA_COUNT                         (9U)
-
-/*! @name ROTL_CASR - Status register - Rotate Left command */
-#define CAU_ROTL_CASR_IC_MASK                    (0x1U)
-#define CAU_ROTL_CASR_IC_SHIFT                   (0U)
-#define CAU_ROTL_CASR_IC(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_ROTL_CASR_IC_SHIFT)) & CAU_ROTL_CASR_IC_MASK)
-#define CAU_ROTL_CASR_DPE_MASK                   (0x2U)
-#define CAU_ROTL_CASR_DPE_SHIFT                  (1U)
-#define CAU_ROTL_CASR_DPE(x)                     (((uint32_t)(((uint32_t)(x)) << CAU_ROTL_CASR_DPE_SHIFT)) & CAU_ROTL_CASR_DPE_MASK)
-#define CAU_ROTL_CASR_VER_MASK                   (0xF0000000U)
-#define CAU_ROTL_CASR_VER_SHIFT                  (28U)
-#define CAU_ROTL_CASR_VER(x)                     (((uint32_t)(((uint32_t)(x)) << CAU_ROTL_CASR_VER_SHIFT)) & CAU_ROTL_CASR_VER_MASK)
-
-/*! @name ROTL_CAA - Accumulator register - Rotate Left command */
-#define CAU_ROTL_CAA_ACC_MASK                    (0xFFFFFFFFU)
-#define CAU_ROTL_CAA_ACC_SHIFT                   (0U)
-#define CAU_ROTL_CAA_ACC(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_ROTL_CAA_ACC_SHIFT)) & CAU_ROTL_CAA_ACC_MASK)
-
-/*! @name ROTL_CA - General Purpose Register 0 - Rotate Left command..General Purpose Register 8 - Rotate Left command */
-#define CAU_ROTL_CA_CA0_MASK                     (0xFFFFFFFFU)
-#define CAU_ROTL_CA_CA0_SHIFT                    (0U)
-#define CAU_ROTL_CA_CA0(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_ROTL_CA_CA0_SHIFT)) & CAU_ROTL_CA_CA0_MASK)
-#define CAU_ROTL_CA_CA1_MASK                     (0xFFFFFFFFU)
-#define CAU_ROTL_CA_CA1_SHIFT                    (0U)
-#define CAU_ROTL_CA_CA1(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_ROTL_CA_CA1_SHIFT)) & CAU_ROTL_CA_CA1_MASK)
-#define CAU_ROTL_CA_CA2_MASK                     (0xFFFFFFFFU)
-#define CAU_ROTL_CA_CA2_SHIFT                    (0U)
-#define CAU_ROTL_CA_CA2(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_ROTL_CA_CA2_SHIFT)) & CAU_ROTL_CA_CA2_MASK)
-#define CAU_ROTL_CA_CA3_MASK                     (0xFFFFFFFFU)
-#define CAU_ROTL_CA_CA3_SHIFT                    (0U)
-#define CAU_ROTL_CA_CA3(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_ROTL_CA_CA3_SHIFT)) & CAU_ROTL_CA_CA3_MASK)
-#define CAU_ROTL_CA_CA4_MASK                     (0xFFFFFFFFU)
-#define CAU_ROTL_CA_CA4_SHIFT                    (0U)
-#define CAU_ROTL_CA_CA4(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_ROTL_CA_CA4_SHIFT)) & CAU_ROTL_CA_CA4_MASK)
-#define CAU_ROTL_CA_CA5_MASK                     (0xFFFFFFFFU)
-#define CAU_ROTL_CA_CA5_SHIFT                    (0U)
-#define CAU_ROTL_CA_CA5(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_ROTL_CA_CA5_SHIFT)) & CAU_ROTL_CA_CA5_MASK)
-#define CAU_ROTL_CA_CA6_MASK                     (0xFFFFFFFFU)
-#define CAU_ROTL_CA_CA6_SHIFT                    (0U)
-#define CAU_ROTL_CA_CA6(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_ROTL_CA_CA6_SHIFT)) & CAU_ROTL_CA_CA6_MASK)
-#define CAU_ROTL_CA_CA7_MASK                     (0xFFFFFFFFU)
-#define CAU_ROTL_CA_CA7_SHIFT                    (0U)
-#define CAU_ROTL_CA_CA7(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_ROTL_CA_CA7_SHIFT)) & CAU_ROTL_CA_CA7_MASK)
-#define CAU_ROTL_CA_CA8_MASK                     (0xFFFFFFFFU)
-#define CAU_ROTL_CA_CA8_SHIFT                    (0U)
-#define CAU_ROTL_CA_CA8(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_ROTL_CA_CA8_SHIFT)) & CAU_ROTL_CA_CA8_MASK)
-
-/* The count of CAU_ROTL_CA */
-#define CAU_ROTL_CA_COUNT                        (9U)
-
-/*! @name AESC_CASR - Status register - AES Column Operation command */
-#define CAU_AESC_CASR_IC_MASK                    (0x1U)
-#define CAU_AESC_CASR_IC_SHIFT                   (0U)
-#define CAU_AESC_CASR_IC(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_AESC_CASR_IC_SHIFT)) & CAU_AESC_CASR_IC_MASK)
-#define CAU_AESC_CASR_DPE_MASK                   (0x2U)
-#define CAU_AESC_CASR_DPE_SHIFT                  (1U)
-#define CAU_AESC_CASR_DPE(x)                     (((uint32_t)(((uint32_t)(x)) << CAU_AESC_CASR_DPE_SHIFT)) & CAU_AESC_CASR_DPE_MASK)
-#define CAU_AESC_CASR_VER_MASK                   (0xF0000000U)
-#define CAU_AESC_CASR_VER_SHIFT                  (28U)
-#define CAU_AESC_CASR_VER(x)                     (((uint32_t)(((uint32_t)(x)) << CAU_AESC_CASR_VER_SHIFT)) & CAU_AESC_CASR_VER_MASK)
-
-/*! @name AESC_CAA - Accumulator register - AES Column Operation command */
-#define CAU_AESC_CAA_ACC_MASK                    (0xFFFFFFFFU)
-#define CAU_AESC_CAA_ACC_SHIFT                   (0U)
-#define CAU_AESC_CAA_ACC(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_AESC_CAA_ACC_SHIFT)) & CAU_AESC_CAA_ACC_MASK)
-
-/*! @name AESC_CA - General Purpose Register 0 - AES Column Operation command..General Purpose Register 8 - AES Column Operation command */
-#define CAU_AESC_CA_CA0_MASK                     (0xFFFFFFFFU)
-#define CAU_AESC_CA_CA0_SHIFT                    (0U)
-#define CAU_AESC_CA_CA0(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_AESC_CA_CA0_SHIFT)) & CAU_AESC_CA_CA0_MASK)
-#define CAU_AESC_CA_CA1_MASK                     (0xFFFFFFFFU)
-#define CAU_AESC_CA_CA1_SHIFT                    (0U)
-#define CAU_AESC_CA_CA1(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_AESC_CA_CA1_SHIFT)) & CAU_AESC_CA_CA1_MASK)
-#define CAU_AESC_CA_CA2_MASK                     (0xFFFFFFFFU)
-#define CAU_AESC_CA_CA2_SHIFT                    (0U)
-#define CAU_AESC_CA_CA2(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_AESC_CA_CA2_SHIFT)) & CAU_AESC_CA_CA2_MASK)
-#define CAU_AESC_CA_CA3_MASK                     (0xFFFFFFFFU)
-#define CAU_AESC_CA_CA3_SHIFT                    (0U)
-#define CAU_AESC_CA_CA3(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_AESC_CA_CA3_SHIFT)) & CAU_AESC_CA_CA3_MASK)
-#define CAU_AESC_CA_CA4_MASK                     (0xFFFFFFFFU)
-#define CAU_AESC_CA_CA4_SHIFT                    (0U)
-#define CAU_AESC_CA_CA4(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_AESC_CA_CA4_SHIFT)) & CAU_AESC_CA_CA4_MASK)
-#define CAU_AESC_CA_CA5_MASK                     (0xFFFFFFFFU)
-#define CAU_AESC_CA_CA5_SHIFT                    (0U)
-#define CAU_AESC_CA_CA5(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_AESC_CA_CA5_SHIFT)) & CAU_AESC_CA_CA5_MASK)
-#define CAU_AESC_CA_CA6_MASK                     (0xFFFFFFFFU)
-#define CAU_AESC_CA_CA6_SHIFT                    (0U)
-#define CAU_AESC_CA_CA6(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_AESC_CA_CA6_SHIFT)) & CAU_AESC_CA_CA6_MASK)
-#define CAU_AESC_CA_CA7_MASK                     (0xFFFFFFFFU)
-#define CAU_AESC_CA_CA7_SHIFT                    (0U)
-#define CAU_AESC_CA_CA7(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_AESC_CA_CA7_SHIFT)) & CAU_AESC_CA_CA7_MASK)
-#define CAU_AESC_CA_CA8_MASK                     (0xFFFFFFFFU)
-#define CAU_AESC_CA_CA8_SHIFT                    (0U)
-#define CAU_AESC_CA_CA8(x)                       (((uint32_t)(((uint32_t)(x)) << CAU_AESC_CA_CA8_SHIFT)) & CAU_AESC_CA_CA8_MASK)
-
-/* The count of CAU_AESC_CA */
-#define CAU_AESC_CA_COUNT                        (9U)
-
-/*! @name AESIC_CASR - Status register - AES Inverse Column Operation command */
-#define CAU_AESIC_CASR_IC_MASK                   (0x1U)
-#define CAU_AESIC_CASR_IC_SHIFT                  (0U)
-#define CAU_AESIC_CASR_IC(x)                     (((uint32_t)(((uint32_t)(x)) << CAU_AESIC_CASR_IC_SHIFT)) & CAU_AESIC_CASR_IC_MASK)
-#define CAU_AESIC_CASR_DPE_MASK                  (0x2U)
-#define CAU_AESIC_CASR_DPE_SHIFT                 (1U)
-#define CAU_AESIC_CASR_DPE(x)                    (((uint32_t)(((uint32_t)(x)) << CAU_AESIC_CASR_DPE_SHIFT)) & CAU_AESIC_CASR_DPE_MASK)
-#define CAU_AESIC_CASR_VER_MASK                  (0xF0000000U)
-#define CAU_AESIC_CASR_VER_SHIFT                 (28U)
-#define CAU_AESIC_CASR_VER(x)                    (((uint32_t)(((uint32_t)(x)) << CAU_AESIC_CASR_VER_SHIFT)) & CAU_AESIC_CASR_VER_MASK)
-
-/*! @name AESIC_CAA - Accumulator register - AES Inverse Column Operation command */
-#define CAU_AESIC_CAA_ACC_MASK                   (0xFFFFFFFFU)
-#define CAU_AESIC_CAA_ACC_SHIFT                  (0U)
-#define CAU_AESIC_CAA_ACC(x)                     (((uint32_t)(((uint32_t)(x)) << CAU_AESIC_CAA_ACC_SHIFT)) & CAU_AESIC_CAA_ACC_MASK)
-
-/*! @name AESIC_CA - General Purpose Register 0 - AES Inverse Column Operation command..General Purpose Register 8 - AES Inverse Column Operation command */
-#define CAU_AESIC_CA_CA0_MASK                    (0xFFFFFFFFU)
-#define CAU_AESIC_CA_CA0_SHIFT                   (0U)
-#define CAU_AESIC_CA_CA0(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_AESIC_CA_CA0_SHIFT)) & CAU_AESIC_CA_CA0_MASK)
-#define CAU_AESIC_CA_CA1_MASK                    (0xFFFFFFFFU)
-#define CAU_AESIC_CA_CA1_SHIFT                   (0U)
-#define CAU_AESIC_CA_CA1(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_AESIC_CA_CA1_SHIFT)) & CAU_AESIC_CA_CA1_MASK)
-#define CAU_AESIC_CA_CA2_MASK                    (0xFFFFFFFFU)
-#define CAU_AESIC_CA_CA2_SHIFT                   (0U)
-#define CAU_AESIC_CA_CA2(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_AESIC_CA_CA2_SHIFT)) & CAU_AESIC_CA_CA2_MASK)
-#define CAU_AESIC_CA_CA3_MASK                    (0xFFFFFFFFU)
-#define CAU_AESIC_CA_CA3_SHIFT                   (0U)
-#define CAU_AESIC_CA_CA3(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_AESIC_CA_CA3_SHIFT)) & CAU_AESIC_CA_CA3_MASK)
-#define CAU_AESIC_CA_CA4_MASK                    (0xFFFFFFFFU)
-#define CAU_AESIC_CA_CA4_SHIFT                   (0U)
-#define CAU_AESIC_CA_CA4(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_AESIC_CA_CA4_SHIFT)) & CAU_AESIC_CA_CA4_MASK)
-#define CAU_AESIC_CA_CA5_MASK                    (0xFFFFFFFFU)
-#define CAU_AESIC_CA_CA5_SHIFT                   (0U)
-#define CAU_AESIC_CA_CA5(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_AESIC_CA_CA5_SHIFT)) & CAU_AESIC_CA_CA5_MASK)
-#define CAU_AESIC_CA_CA6_MASK                    (0xFFFFFFFFU)
-#define CAU_AESIC_CA_CA6_SHIFT                   (0U)
-#define CAU_AESIC_CA_CA6(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_AESIC_CA_CA6_SHIFT)) & CAU_AESIC_CA_CA6_MASK)
-#define CAU_AESIC_CA_CA7_MASK                    (0xFFFFFFFFU)
-#define CAU_AESIC_CA_CA7_SHIFT                   (0U)
-#define CAU_AESIC_CA_CA7(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_AESIC_CA_CA7_SHIFT)) & CAU_AESIC_CA_CA7_MASK)
-#define CAU_AESIC_CA_CA8_MASK                    (0xFFFFFFFFU)
-#define CAU_AESIC_CA_CA8_SHIFT                   (0U)
-#define CAU_AESIC_CA_CA8(x)                      (((uint32_t)(((uint32_t)(x)) << CAU_AESIC_CA_CA8_SHIFT)) & CAU_AESIC_CA_CA8_MASK)
-
-/* The count of CAU_AESIC_CA */
-#define CAU_AESIC_CA_COUNT                       (9U)
-
-
-/*!
- * @}
- */ /* end of group CAU_Register_Masks */
-
-
-/* CAU - Peripheral instance base addresses */
-/** Peripheral CAU base address */
-#define CAU_BASE                                 (0xE0081000u)
-/** Peripheral CAU base pointer */
-#define CAU                                      ((CAU_Type *)CAU_BASE)
-/** Array initializer of CAU peripheral base addresses */
-#define CAU_BASE_ADDRS                           { CAU_BASE }
-/** Array initializer of CAU peripheral base pointers */
-#define CAU_BASE_PTRS                            { CAU }
-
-/*!
- * @}
- */ /* end of group CAU_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- CMP Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup CMP_Peripheral_Access_Layer CMP Peripheral Access Layer
- * @{
- */
-
-/** CMP - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t CR0;                                /**< CMP Control Register 0, offset: 0x0 */
-  __IO uint8_t CR1;                                /**< CMP Control Register 1, offset: 0x1 */
-  __IO uint8_t FPR;                                /**< CMP Filter Period Register, offset: 0x2 */
-  __IO uint8_t SCR;                                /**< CMP Status and Control Register, offset: 0x3 */
-  __IO uint8_t DACCR;                              /**< DAC Control Register, offset: 0x4 */
-  __IO uint8_t MUXCR;                              /**< MUX Control Register, offset: 0x5 */
-} CMP_Type;
-
-/* ----------------------------------------------------------------------------
-   -- CMP Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup CMP_Register_Masks CMP Register Masks
- * @{
- */
-
-/*! @name CR0 - CMP Control Register 0 */
-#define CMP_CR0_HYSTCTR_MASK                     (0x3U)
-#define CMP_CR0_HYSTCTR_SHIFT                    (0U)
-#define CMP_CR0_HYSTCTR(x)                       (((uint8_t)(((uint8_t)(x)) << CMP_CR0_HYSTCTR_SHIFT)) & CMP_CR0_HYSTCTR_MASK)
-#define CMP_CR0_FILTER_CNT_MASK                  (0x70U)
-#define CMP_CR0_FILTER_CNT_SHIFT                 (4U)
-#define CMP_CR0_FILTER_CNT(x)                    (((uint8_t)(((uint8_t)(x)) << CMP_CR0_FILTER_CNT_SHIFT)) & CMP_CR0_FILTER_CNT_MASK)
-
-/*! @name CR1 - CMP Control Register 1 */
-#define CMP_CR1_EN_MASK                          (0x1U)
-#define CMP_CR1_EN_SHIFT                         (0U)
-#define CMP_CR1_EN(x)                            (((uint8_t)(((uint8_t)(x)) << CMP_CR1_EN_SHIFT)) & CMP_CR1_EN_MASK)
-#define CMP_CR1_OPE_MASK                         (0x2U)
-#define CMP_CR1_OPE_SHIFT                        (1U)
-#define CMP_CR1_OPE(x)                           (((uint8_t)(((uint8_t)(x)) << CMP_CR1_OPE_SHIFT)) & CMP_CR1_OPE_MASK)
-#define CMP_CR1_COS_MASK                         (0x4U)
-#define CMP_CR1_COS_SHIFT                        (2U)
-#define CMP_CR1_COS(x)                           (((uint8_t)(((uint8_t)(x)) << CMP_CR1_COS_SHIFT)) & CMP_CR1_COS_MASK)
-#define CMP_CR1_INV_MASK                         (0x8U)
-#define CMP_CR1_INV_SHIFT                        (3U)
-#define CMP_CR1_INV(x)                           (((uint8_t)(((uint8_t)(x)) << CMP_CR1_INV_SHIFT)) & CMP_CR1_INV_MASK)
-#define CMP_CR1_PMODE_MASK                       (0x10U)
-#define CMP_CR1_PMODE_SHIFT                      (4U)
-#define CMP_CR1_PMODE(x)                         (((uint8_t)(((uint8_t)(x)) << CMP_CR1_PMODE_SHIFT)) & CMP_CR1_PMODE_MASK)
-#define CMP_CR1_WE_MASK                          (0x40U)
-#define CMP_CR1_WE_SHIFT                         (6U)
-#define CMP_CR1_WE(x)                            (((uint8_t)(((uint8_t)(x)) << CMP_CR1_WE_SHIFT)) & CMP_CR1_WE_MASK)
-#define CMP_CR1_SE_MASK                          (0x80U)
-#define CMP_CR1_SE_SHIFT                         (7U)
-#define CMP_CR1_SE(x)                            (((uint8_t)(((uint8_t)(x)) << CMP_CR1_SE_SHIFT)) & CMP_CR1_SE_MASK)
-
-/*! @name FPR - CMP Filter Period Register */
-#define CMP_FPR_FILT_PER_MASK                    (0xFFU)
-#define CMP_FPR_FILT_PER_SHIFT                   (0U)
-#define CMP_FPR_FILT_PER(x)                      (((uint8_t)(((uint8_t)(x)) << CMP_FPR_FILT_PER_SHIFT)) & CMP_FPR_FILT_PER_MASK)
-
-/*! @name SCR - CMP Status and Control Register */
-#define CMP_SCR_COUT_MASK                        (0x1U)
-#define CMP_SCR_COUT_SHIFT                       (0U)
-#define CMP_SCR_COUT(x)                          (((uint8_t)(((uint8_t)(x)) << CMP_SCR_COUT_SHIFT)) & CMP_SCR_COUT_MASK)
-#define CMP_SCR_CFF_MASK                         (0x2U)
-#define CMP_SCR_CFF_SHIFT                        (1U)
-#define CMP_SCR_CFF(x)                           (((uint8_t)(((uint8_t)(x)) << CMP_SCR_CFF_SHIFT)) & CMP_SCR_CFF_MASK)
-#define CMP_SCR_CFR_MASK                         (0x4U)
-#define CMP_SCR_CFR_SHIFT                        (2U)
-#define CMP_SCR_CFR(x)                           (((uint8_t)(((uint8_t)(x)) << CMP_SCR_CFR_SHIFT)) & CMP_SCR_CFR_MASK)
-#define CMP_SCR_IEF_MASK                         (0x8U)
-#define CMP_SCR_IEF_SHIFT                        (3U)
-#define CMP_SCR_IEF(x)                           (((uint8_t)(((uint8_t)(x)) << CMP_SCR_IEF_SHIFT)) & CMP_SCR_IEF_MASK)
-#define CMP_SCR_IER_MASK                         (0x10U)
-#define CMP_SCR_IER_SHIFT                        (4U)
-#define CMP_SCR_IER(x)                           (((uint8_t)(((uint8_t)(x)) << CMP_SCR_IER_SHIFT)) & CMP_SCR_IER_MASK)
-#define CMP_SCR_DMAEN_MASK                       (0x40U)
-#define CMP_SCR_DMAEN_SHIFT                      (6U)
-#define CMP_SCR_DMAEN(x)                         (((uint8_t)(((uint8_t)(x)) << CMP_SCR_DMAEN_SHIFT)) & CMP_SCR_DMAEN_MASK)
-
-/*! @name DACCR - DAC Control Register */
-#define CMP_DACCR_VOSEL_MASK                     (0x3FU)
-#define CMP_DACCR_VOSEL_SHIFT                    (0U)
-#define CMP_DACCR_VOSEL(x)                       (((uint8_t)(((uint8_t)(x)) << CMP_DACCR_VOSEL_SHIFT)) & CMP_DACCR_VOSEL_MASK)
-#define CMP_DACCR_VRSEL_MASK                     (0x40U)
-#define CMP_DACCR_VRSEL_SHIFT                    (6U)
-#define CMP_DACCR_VRSEL(x)                       (((uint8_t)(((uint8_t)(x)) << CMP_DACCR_VRSEL_SHIFT)) & CMP_DACCR_VRSEL_MASK)
-#define CMP_DACCR_DACEN_MASK                     (0x80U)
-#define CMP_DACCR_DACEN_SHIFT                    (7U)
-#define CMP_DACCR_DACEN(x)                       (((uint8_t)(((uint8_t)(x)) << CMP_DACCR_DACEN_SHIFT)) & CMP_DACCR_DACEN_MASK)
-
-/*! @name MUXCR - MUX Control Register */
-#define CMP_MUXCR_MSEL_MASK                      (0x7U)
-#define CMP_MUXCR_MSEL_SHIFT                     (0U)
-#define CMP_MUXCR_MSEL(x)                        (((uint8_t)(((uint8_t)(x)) << CMP_MUXCR_MSEL_SHIFT)) & CMP_MUXCR_MSEL_MASK)
-#define CMP_MUXCR_PSEL_MASK                      (0x38U)
-#define CMP_MUXCR_PSEL_SHIFT                     (3U)
-#define CMP_MUXCR_PSEL(x)                        (((uint8_t)(((uint8_t)(x)) << CMP_MUXCR_PSEL_SHIFT)) & CMP_MUXCR_PSEL_MASK)
-#define CMP_MUXCR_PSTM_MASK                      (0x80U)
-#define CMP_MUXCR_PSTM_SHIFT                     (7U)
-#define CMP_MUXCR_PSTM(x)                        (((uint8_t)(((uint8_t)(x)) << CMP_MUXCR_PSTM_SHIFT)) & CMP_MUXCR_PSTM_MASK)
-
-
-/*!
- * @}
- */ /* end of group CMP_Register_Masks */
-
-
-/* CMP - Peripheral instance base addresses */
-/** Peripheral CMP0 base address */
-#define CMP0_BASE                                (0x40073000u)
-/** Peripheral CMP0 base pointer */
-#define CMP0                                     ((CMP_Type *)CMP0_BASE)
-/** Peripheral CMP1 base address */
-#define CMP1_BASE                                (0x40073008u)
-/** Peripheral CMP1 base pointer */
-#define CMP1                                     ((CMP_Type *)CMP1_BASE)
-/** Peripheral CMP2 base address */
-#define CMP2_BASE                                (0x40073010u)
-/** Peripheral CMP2 base pointer */
-#define CMP2                                     ((CMP_Type *)CMP2_BASE)
-/** Array initializer of CMP peripheral base addresses */
-#define CMP_BASE_ADDRS                           { CMP0_BASE, CMP1_BASE, CMP2_BASE }
-/** Array initializer of CMP peripheral base pointers */
-#define CMP_BASE_PTRS                            { CMP0, CMP1, CMP2 }
-/** Interrupt vectors for the CMP peripheral type */
-#define CMP_IRQS                                 { CMP0_IRQn, CMP1_IRQn, CMP2_IRQn }
-
-/*!
- * @}
- */ /* end of group CMP_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- CMT Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup CMT_Peripheral_Access_Layer CMT Peripheral Access Layer
- * @{
- */
-
-/** CMT - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t CGH1;                               /**< CMT Carrier Generator High Data Register 1, offset: 0x0 */
-  __IO uint8_t CGL1;                               /**< CMT Carrier Generator Low Data Register 1, offset: 0x1 */
-  __IO uint8_t CGH2;                               /**< CMT Carrier Generator High Data Register 2, offset: 0x2 */
-  __IO uint8_t CGL2;                               /**< CMT Carrier Generator Low Data Register 2, offset: 0x3 */
-  __IO uint8_t OC;                                 /**< CMT Output Control Register, offset: 0x4 */
-  __IO uint8_t MSC;                                /**< CMT Modulator Status and Control Register, offset: 0x5 */
-  __IO uint8_t CMD1;                               /**< CMT Modulator Data Register Mark High, offset: 0x6 */
-  __IO uint8_t CMD2;                               /**< CMT Modulator Data Register Mark Low, offset: 0x7 */
-  __IO uint8_t CMD3;                               /**< CMT Modulator Data Register Space High, offset: 0x8 */
-  __IO uint8_t CMD4;                               /**< CMT Modulator Data Register Space Low, offset: 0x9 */
-  __IO uint8_t PPS;                                /**< CMT Primary Prescaler Register, offset: 0xA */
-  __IO uint8_t DMA;                                /**< CMT Direct Memory Access Register, offset: 0xB */
-} CMT_Type;
-
-/* ----------------------------------------------------------------------------
-   -- CMT Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup CMT_Register_Masks CMT Register Masks
- * @{
- */
-
-/*! @name CGH1 - CMT Carrier Generator High Data Register 1 */
-#define CMT_CGH1_PH_MASK                         (0xFFU)
-#define CMT_CGH1_PH_SHIFT                        (0U)
-#define CMT_CGH1_PH(x)                           (((uint8_t)(((uint8_t)(x)) << CMT_CGH1_PH_SHIFT)) & CMT_CGH1_PH_MASK)
-
-/*! @name CGL1 - CMT Carrier Generator Low Data Register 1 */
-#define CMT_CGL1_PL_MASK                         (0xFFU)
-#define CMT_CGL1_PL_SHIFT                        (0U)
-#define CMT_CGL1_PL(x)                           (((uint8_t)(((uint8_t)(x)) << CMT_CGL1_PL_SHIFT)) & CMT_CGL1_PL_MASK)
-
-/*! @name CGH2 - CMT Carrier Generator High Data Register 2 */
-#define CMT_CGH2_SH_MASK                         (0xFFU)
-#define CMT_CGH2_SH_SHIFT                        (0U)
-#define CMT_CGH2_SH(x)                           (((uint8_t)(((uint8_t)(x)) << CMT_CGH2_SH_SHIFT)) & CMT_CGH2_SH_MASK)
-
-/*! @name CGL2 - CMT Carrier Generator Low Data Register 2 */
-#define CMT_CGL2_SL_MASK                         (0xFFU)
-#define CMT_CGL2_SL_SHIFT                        (0U)
-#define CMT_CGL2_SL(x)                           (((uint8_t)(((uint8_t)(x)) << CMT_CGL2_SL_SHIFT)) & CMT_CGL2_SL_MASK)
-
-/*! @name OC - CMT Output Control Register */
-#define CMT_OC_IROPEN_MASK                       (0x20U)
-#define CMT_OC_IROPEN_SHIFT                      (5U)
-#define CMT_OC_IROPEN(x)                         (((uint8_t)(((uint8_t)(x)) << CMT_OC_IROPEN_SHIFT)) & CMT_OC_IROPEN_MASK)
-#define CMT_OC_CMTPOL_MASK                       (0x40U)
-#define CMT_OC_CMTPOL_SHIFT                      (6U)
-#define CMT_OC_CMTPOL(x)                         (((uint8_t)(((uint8_t)(x)) << CMT_OC_CMTPOL_SHIFT)) & CMT_OC_CMTPOL_MASK)
-#define CMT_OC_IROL_MASK                         (0x80U)
-#define CMT_OC_IROL_SHIFT                        (7U)
-#define CMT_OC_IROL(x)                           (((uint8_t)(((uint8_t)(x)) << CMT_OC_IROL_SHIFT)) & CMT_OC_IROL_MASK)
-
-/*! @name MSC - CMT Modulator Status and Control Register */
-#define CMT_MSC_MCGEN_MASK                       (0x1U)
-#define CMT_MSC_MCGEN_SHIFT                      (0U)
-#define CMT_MSC_MCGEN(x)                         (((uint8_t)(((uint8_t)(x)) << CMT_MSC_MCGEN_SHIFT)) & CMT_MSC_MCGEN_MASK)
-#define CMT_MSC_EOCIE_MASK                       (0x2U)
-#define CMT_MSC_EOCIE_SHIFT                      (1U)
-#define CMT_MSC_EOCIE(x)                         (((uint8_t)(((uint8_t)(x)) << CMT_MSC_EOCIE_SHIFT)) & CMT_MSC_EOCIE_MASK)
-#define CMT_MSC_FSK_MASK                         (0x4U)
-#define CMT_MSC_FSK_SHIFT                        (2U)
-#define CMT_MSC_FSK(x)                           (((uint8_t)(((uint8_t)(x)) << CMT_MSC_FSK_SHIFT)) & CMT_MSC_FSK_MASK)
-#define CMT_MSC_BASE_MASK                        (0x8U)
-#define CMT_MSC_BASE_SHIFT                       (3U)
-#define CMT_MSC_BASE(x)                          (((uint8_t)(((uint8_t)(x)) << CMT_MSC_BASE_SHIFT)) & CMT_MSC_BASE_MASK)
-#define CMT_MSC_EXSPC_MASK                       (0x10U)
-#define CMT_MSC_EXSPC_SHIFT                      (4U)
-#define CMT_MSC_EXSPC(x)                         (((uint8_t)(((uint8_t)(x)) << CMT_MSC_EXSPC_SHIFT)) & CMT_MSC_EXSPC_MASK)
-#define CMT_MSC_CMTDIV_MASK                      (0x60U)
-#define CMT_MSC_CMTDIV_SHIFT                     (5U)
-#define CMT_MSC_CMTDIV(x)                        (((uint8_t)(((uint8_t)(x)) << CMT_MSC_CMTDIV_SHIFT)) & CMT_MSC_CMTDIV_MASK)
-#define CMT_MSC_EOCF_MASK                        (0x80U)
-#define CMT_MSC_EOCF_SHIFT                       (7U)
-#define CMT_MSC_EOCF(x)                          (((uint8_t)(((uint8_t)(x)) << CMT_MSC_EOCF_SHIFT)) & CMT_MSC_EOCF_MASK)
-
-/*! @name CMD1 - CMT Modulator Data Register Mark High */
-#define CMT_CMD1_MB_MASK                         (0xFFU)
-#define CMT_CMD1_MB_SHIFT                        (0U)
-#define CMT_CMD1_MB(x)                           (((uint8_t)(((uint8_t)(x)) << CMT_CMD1_MB_SHIFT)) & CMT_CMD1_MB_MASK)
-
-/*! @name CMD2 - CMT Modulator Data Register Mark Low */
-#define CMT_CMD2_MB_MASK                         (0xFFU)
-#define CMT_CMD2_MB_SHIFT                        (0U)
-#define CMT_CMD2_MB(x)                           (((uint8_t)(((uint8_t)(x)) << CMT_CMD2_MB_SHIFT)) & CMT_CMD2_MB_MASK)
-
-/*! @name CMD3 - CMT Modulator Data Register Space High */
-#define CMT_CMD3_SB_MASK                         (0xFFU)
-#define CMT_CMD3_SB_SHIFT                        (0U)
-#define CMT_CMD3_SB(x)                           (((uint8_t)(((uint8_t)(x)) << CMT_CMD3_SB_SHIFT)) & CMT_CMD3_SB_MASK)
-
-/*! @name CMD4 - CMT Modulator Data Register Space Low */
-#define CMT_CMD4_SB_MASK                         (0xFFU)
-#define CMT_CMD4_SB_SHIFT                        (0U)
-#define CMT_CMD4_SB(x)                           (((uint8_t)(((uint8_t)(x)) << CMT_CMD4_SB_SHIFT)) & CMT_CMD4_SB_MASK)
-
-/*! @name PPS - CMT Primary Prescaler Register */
-#define CMT_PPS_PPSDIV_MASK                      (0xFU)
-#define CMT_PPS_PPSDIV_SHIFT                     (0U)
-#define CMT_PPS_PPSDIV(x)                        (((uint8_t)(((uint8_t)(x)) << CMT_PPS_PPSDIV_SHIFT)) & CMT_PPS_PPSDIV_MASK)
-
-/*! @name DMA - CMT Direct Memory Access Register */
-#define CMT_DMA_DMA_MASK                         (0x1U)
-#define CMT_DMA_DMA_SHIFT                        (0U)
-#define CMT_DMA_DMA(x)                           (((uint8_t)(((uint8_t)(x)) << CMT_DMA_DMA_SHIFT)) & CMT_DMA_DMA_MASK)
-
-
-/*!
- * @}
- */ /* end of group CMT_Register_Masks */
-
-
-/* CMT - Peripheral instance base addresses */
-/** Peripheral CMT base address */
-#define CMT_BASE                                 (0x40062000u)
-/** Peripheral CMT base pointer */
-#define CMT                                      ((CMT_Type *)CMT_BASE)
-/** Array initializer of CMT peripheral base addresses */
-#define CMT_BASE_ADDRS                           { CMT_BASE }
-/** Array initializer of CMT peripheral base pointers */
-#define CMT_BASE_PTRS                            { CMT }
-/** Interrupt vectors for the CMT peripheral type */
-#define CMT_IRQS                                 { CMT_IRQn }
-
-/*!
- * @}
- */ /* end of group CMT_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- CRC Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup CRC_Peripheral_Access_Layer CRC Peripheral Access Layer
- * @{
- */
-
-/** CRC - Register Layout Typedef */
-typedef struct {
-  union {                                          /* offset: 0x0 */
-    struct {                                         /* offset: 0x0 */
-      __IO uint16_t DATAL;                             /**< CRC_DATAL register., offset: 0x0 */
-      __IO uint16_t DATAH;                             /**< CRC_DATAH register., offset: 0x2 */
-    } ACCESS16BIT;
-    __IO uint32_t DATA;                              /**< CRC Data register, offset: 0x0 */
-    struct {                                         /* offset: 0x0 */
-      __IO uint8_t DATALL;                             /**< CRC_DATALL register., offset: 0x0 */
-      __IO uint8_t DATALU;                             /**< CRC_DATALU register., offset: 0x1 */
-      __IO uint8_t DATAHL;                             /**< CRC_DATAHL register., offset: 0x2 */
-      __IO uint8_t DATAHU;                             /**< CRC_DATAHU register., offset: 0x3 */
-    } ACCESS8BIT;
-  };
-  union {                                          /* offset: 0x4 */
-    struct {                                         /* offset: 0x4 */
-      __IO uint16_t GPOLYL;                            /**< CRC_GPOLYL register., offset: 0x4 */
-      __IO uint16_t GPOLYH;                            /**< CRC_GPOLYH register., offset: 0x6 */
-    } GPOLY_ACCESS16BIT;
-    __IO uint32_t GPOLY;                             /**< CRC Polynomial register, offset: 0x4 */
-    struct {                                         /* offset: 0x4 */
-      __IO uint8_t GPOLYLL;                            /**< CRC_GPOLYLL register., offset: 0x4 */
-      __IO uint8_t GPOLYLU;                            /**< CRC_GPOLYLU register., offset: 0x5 */
-      __IO uint8_t GPOLYHL;                            /**< CRC_GPOLYHL register., offset: 0x6 */
-      __IO uint8_t GPOLYHU;                            /**< CRC_GPOLYHU register., offset: 0x7 */
-    } GPOLY_ACCESS8BIT;
-  };
-  union {                                          /* offset: 0x8 */
-    __IO uint32_t CTRL;                              /**< CRC Control register, offset: 0x8 */
-    struct {                                         /* offset: 0x8 */
-           uint8_t RESERVED_0[3];
-      __IO uint8_t CTRLHU;                             /**< CRC_CTRLHU register., offset: 0xB */
-    } CTRL_ACCESS8BIT;
-  };
-} CRC_Type;
-
-/* ----------------------------------------------------------------------------
-   -- CRC Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup CRC_Register_Masks CRC Register Masks
- * @{
- */
-
-/*! @name DATAL - CRC_DATAL register. */
-#define CRC_DATAL_DATAL_MASK                     (0xFFFFU)
-#define CRC_DATAL_DATAL_SHIFT                    (0U)
-#define CRC_DATAL_DATAL(x)                       (((uint16_t)(((uint16_t)(x)) << CRC_DATAL_DATAL_SHIFT)) & CRC_DATAL_DATAL_MASK)
-
-/*! @name DATAH - CRC_DATAH register. */
-#define CRC_DATAH_DATAH_MASK                     (0xFFFFU)
-#define CRC_DATAH_DATAH_SHIFT                    (0U)
-#define CRC_DATAH_DATAH(x)                       (((uint16_t)(((uint16_t)(x)) << CRC_DATAH_DATAH_SHIFT)) & CRC_DATAH_DATAH_MASK)
-
-/*! @name DATA - CRC Data register */
-#define CRC_DATA_LL_MASK                         (0xFFU)
-#define CRC_DATA_LL_SHIFT                        (0U)
-#define CRC_DATA_LL(x)                           (((uint32_t)(((uint32_t)(x)) << CRC_DATA_LL_SHIFT)) & CRC_DATA_LL_MASK)
-#define CRC_DATA_LU_MASK                         (0xFF00U)
-#define CRC_DATA_LU_SHIFT                        (8U)
-#define CRC_DATA_LU(x)                           (((uint32_t)(((uint32_t)(x)) << CRC_DATA_LU_SHIFT)) & CRC_DATA_LU_MASK)
-#define CRC_DATA_HL_MASK                         (0xFF0000U)
-#define CRC_DATA_HL_SHIFT                        (16U)
-#define CRC_DATA_HL(x)                           (((uint32_t)(((uint32_t)(x)) << CRC_DATA_HL_SHIFT)) & CRC_DATA_HL_MASK)
-#define CRC_DATA_HU_MASK                         (0xFF000000U)
-#define CRC_DATA_HU_SHIFT                        (24U)
-#define CRC_DATA_HU(x)                           (((uint32_t)(((uint32_t)(x)) << CRC_DATA_HU_SHIFT)) & CRC_DATA_HU_MASK)
-
-/*! @name DATALL - CRC_DATALL register. */
-#define CRC_DATALL_DATALL_MASK                   (0xFFU)
-#define CRC_DATALL_DATALL_SHIFT                  (0U)
-#define CRC_DATALL_DATALL(x)                     (((uint8_t)(((uint8_t)(x)) << CRC_DATALL_DATALL_SHIFT)) & CRC_DATALL_DATALL_MASK)
-
-/*! @name DATALU - CRC_DATALU register. */
-#define CRC_DATALU_DATALU_MASK                   (0xFFU)
-#define CRC_DATALU_DATALU_SHIFT                  (0U)
-#define CRC_DATALU_DATALU(x)                     (((uint8_t)(((uint8_t)(x)) << CRC_DATALU_DATALU_SHIFT)) & CRC_DATALU_DATALU_MASK)
-
-/*! @name DATAHL - CRC_DATAHL register. */
-#define CRC_DATAHL_DATAHL_MASK                   (0xFFU)
-#define CRC_DATAHL_DATAHL_SHIFT                  (0U)
-#define CRC_DATAHL_DATAHL(x)                     (((uint8_t)(((uint8_t)(x)) << CRC_DATAHL_DATAHL_SHIFT)) & CRC_DATAHL_DATAHL_MASK)
-
-/*! @name DATAHU - CRC_DATAHU register. */
-#define CRC_DATAHU_DATAHU_MASK                   (0xFFU)
-#define CRC_DATAHU_DATAHU_SHIFT                  (0U)
-#define CRC_DATAHU_DATAHU(x)                     (((uint8_t)(((uint8_t)(x)) << CRC_DATAHU_DATAHU_SHIFT)) & CRC_DATAHU_DATAHU_MASK)
-
-/*! @name GPOLYL - CRC_GPOLYL register. */
-#define CRC_GPOLYL_GPOLYL_MASK                   (0xFFFFU)
-#define CRC_GPOLYL_GPOLYL_SHIFT                  (0U)
-#define CRC_GPOLYL_GPOLYL(x)                     (((uint16_t)(((uint16_t)(x)) << CRC_GPOLYL_GPOLYL_SHIFT)) & CRC_GPOLYL_GPOLYL_MASK)
-
-/*! @name GPOLYH - CRC_GPOLYH register. */
-#define CRC_GPOLYH_GPOLYH_MASK                   (0xFFFFU)
-#define CRC_GPOLYH_GPOLYH_SHIFT                  (0U)
-#define CRC_GPOLYH_GPOLYH(x)                     (((uint16_t)(((uint16_t)(x)) << CRC_GPOLYH_GPOLYH_SHIFT)) & CRC_GPOLYH_GPOLYH_MASK)
-
-/*! @name GPOLY - CRC Polynomial register */
-#define CRC_GPOLY_LOW_MASK                       (0xFFFFU)
-#define CRC_GPOLY_LOW_SHIFT                      (0U)
-#define CRC_GPOLY_LOW(x)                         (((uint32_t)(((uint32_t)(x)) << CRC_GPOLY_LOW_SHIFT)) & CRC_GPOLY_LOW_MASK)
-#define CRC_GPOLY_HIGH_MASK                      (0xFFFF0000U)
-#define CRC_GPOLY_HIGH_SHIFT                     (16U)
-#define CRC_GPOLY_HIGH(x)                        (((uint32_t)(((uint32_t)(x)) << CRC_GPOLY_HIGH_SHIFT)) & CRC_GPOLY_HIGH_MASK)
-
-/*! @name GPOLYLL - CRC_GPOLYLL register. */
-#define CRC_GPOLYLL_GPOLYLL_MASK                 (0xFFU)
-#define CRC_GPOLYLL_GPOLYLL_SHIFT                (0U)
-#define CRC_GPOLYLL_GPOLYLL(x)                   (((uint8_t)(((uint8_t)(x)) << CRC_GPOLYLL_GPOLYLL_SHIFT)) & CRC_GPOLYLL_GPOLYLL_MASK)
-
-/*! @name GPOLYLU - CRC_GPOLYLU register. */
-#define CRC_GPOLYLU_GPOLYLU_MASK                 (0xFFU)
-#define CRC_GPOLYLU_GPOLYLU_SHIFT                (0U)
-#define CRC_GPOLYLU_GPOLYLU(x)                   (((uint8_t)(((uint8_t)(x)) << CRC_GPOLYLU_GPOLYLU_SHIFT)) & CRC_GPOLYLU_GPOLYLU_MASK)
-
-/*! @name GPOLYHL - CRC_GPOLYHL register. */
-#define CRC_GPOLYHL_GPOLYHL_MASK                 (0xFFU)
-#define CRC_GPOLYHL_GPOLYHL_SHIFT                (0U)
-#define CRC_GPOLYHL_GPOLYHL(x)                   (((uint8_t)(((uint8_t)(x)) << CRC_GPOLYHL_GPOLYHL_SHIFT)) & CRC_GPOLYHL_GPOLYHL_MASK)
-
-/*! @name GPOLYHU - CRC_GPOLYHU register. */
-#define CRC_GPOLYHU_GPOLYHU_MASK                 (0xFFU)
-#define CRC_GPOLYHU_GPOLYHU_SHIFT                (0U)
-#define CRC_GPOLYHU_GPOLYHU(x)                   (((uint8_t)(((uint8_t)(x)) << CRC_GPOLYHU_GPOLYHU_SHIFT)) & CRC_GPOLYHU_GPOLYHU_MASK)
-
-/*! @name CTRL - CRC Control register */
-#define CRC_CTRL_TCRC_MASK                       (0x1000000U)
-#define CRC_CTRL_TCRC_SHIFT                      (24U)
-#define CRC_CTRL_TCRC(x)                         (((uint32_t)(((uint32_t)(x)) << CRC_CTRL_TCRC_SHIFT)) & CRC_CTRL_TCRC_MASK)
-#define CRC_CTRL_WAS_MASK                        (0x2000000U)
-#define CRC_CTRL_WAS_SHIFT                       (25U)
-#define CRC_CTRL_WAS(x)                          (((uint32_t)(((uint32_t)(x)) << CRC_CTRL_WAS_SHIFT)) & CRC_CTRL_WAS_MASK)
-#define CRC_CTRL_FXOR_MASK                       (0x4000000U)
-#define CRC_CTRL_FXOR_SHIFT                      (26U)
-#define CRC_CTRL_FXOR(x)                         (((uint32_t)(((uint32_t)(x)) << CRC_CTRL_FXOR_SHIFT)) & CRC_CTRL_FXOR_MASK)
-#define CRC_CTRL_TOTR_MASK                       (0x30000000U)
-#define CRC_CTRL_TOTR_SHIFT                      (28U)
-#define CRC_CTRL_TOTR(x)                         (((uint32_t)(((uint32_t)(x)) << CRC_CTRL_TOTR_SHIFT)) & CRC_CTRL_TOTR_MASK)
-#define CRC_CTRL_TOT_MASK                        (0xC0000000U)
-#define CRC_CTRL_TOT_SHIFT                       (30U)
-#define CRC_CTRL_TOT(x)                          (((uint32_t)(((uint32_t)(x)) << CRC_CTRL_TOT_SHIFT)) & CRC_CTRL_TOT_MASK)
-
-/*! @name CTRLHU - CRC_CTRLHU register. */
-#define CRC_CTRLHU_TCRC_MASK                     (0x1U)
-#define CRC_CTRLHU_TCRC_SHIFT                    (0U)
-#define CRC_CTRLHU_TCRC(x)                       (((uint8_t)(((uint8_t)(x)) << CRC_CTRLHU_TCRC_SHIFT)) & CRC_CTRLHU_TCRC_MASK)
-#define CRC_CTRLHU_WAS_MASK                      (0x2U)
-#define CRC_CTRLHU_WAS_SHIFT                     (1U)
-#define CRC_CTRLHU_WAS(x)                        (((uint8_t)(((uint8_t)(x)) << CRC_CTRLHU_WAS_SHIFT)) & CRC_CTRLHU_WAS_MASK)
-#define CRC_CTRLHU_FXOR_MASK                     (0x4U)
-#define CRC_CTRLHU_FXOR_SHIFT                    (2U)
-#define CRC_CTRLHU_FXOR(x)                       (((uint8_t)(((uint8_t)(x)) << CRC_CTRLHU_FXOR_SHIFT)) & CRC_CTRLHU_FXOR_MASK)
-#define CRC_CTRLHU_TOTR_MASK                     (0x30U)
-#define CRC_CTRLHU_TOTR_SHIFT                    (4U)
-#define CRC_CTRLHU_TOTR(x)                       (((uint8_t)(((uint8_t)(x)) << CRC_CTRLHU_TOTR_SHIFT)) & CRC_CTRLHU_TOTR_MASK)
-#define CRC_CTRLHU_TOT_MASK                      (0xC0U)
-#define CRC_CTRLHU_TOT_SHIFT                     (6U)
-#define CRC_CTRLHU_TOT(x)                        (((uint8_t)(((uint8_t)(x)) << CRC_CTRLHU_TOT_SHIFT)) & CRC_CTRLHU_TOT_MASK)
-
-
-/*!
- * @}
- */ /* end of group CRC_Register_Masks */
-
-
-/* CRC - Peripheral instance base addresses */
-/** Peripheral CRC base address */
-#define CRC_BASE                                 (0x40032000u)
-/** Peripheral CRC base pointer */
-#define CRC0                                     ((CRC_Type *)CRC_BASE)
-/** Array initializer of CRC peripheral base addresses */
-#define CRC_BASE_ADDRS                           { CRC_BASE }
-/** Array initializer of CRC peripheral base pointers */
-#define CRC_BASE_PTRS                            { CRC0 }
-
-/*!
- * @}
- */ /* end of group CRC_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- DAC Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup DAC_Peripheral_Access_Layer DAC Peripheral Access Layer
- * @{
- */
-
-/** DAC - Register Layout Typedef */
-typedef struct {
-  struct {                                         /* offset: 0x0, array step: 0x2 */
-    __IO uint8_t DATL;                               /**< DAC Data Low Register, array offset: 0x0, array step: 0x2 */
-    __IO uint8_t DATH;                               /**< DAC Data High Register, array offset: 0x1, array step: 0x2 */
-  } DAT[16];
-  __IO uint8_t SR;                                 /**< DAC Status Register, offset: 0x20 */
-  __IO uint8_t C0;                                 /**< DAC Control Register, offset: 0x21 */
-  __IO uint8_t C1;                                 /**< DAC Control Register 1, offset: 0x22 */
-  __IO uint8_t C2;                                 /**< DAC Control Register 2, offset: 0x23 */
-} DAC_Type;
-
-/* ----------------------------------------------------------------------------
-   -- DAC Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup DAC_Register_Masks DAC Register Masks
- * @{
- */
-
-/*! @name DATL - DAC Data Low Register */
-#define DAC_DATL_DATA0_MASK                      (0xFFU)
-#define DAC_DATL_DATA0_SHIFT                     (0U)
-#define DAC_DATL_DATA0(x)                        (((uint8_t)(((uint8_t)(x)) << DAC_DATL_DATA0_SHIFT)) & DAC_DATL_DATA0_MASK)
-
-/* The count of DAC_DATL */
-#define DAC_DATL_COUNT                           (16U)
-
-/*! @name DATH - DAC Data High Register */
-#define DAC_DATH_DATA1_MASK                      (0xFU)
-#define DAC_DATH_DATA1_SHIFT                     (0U)
-#define DAC_DATH_DATA1(x)                        (((uint8_t)(((uint8_t)(x)) << DAC_DATH_DATA1_SHIFT)) & DAC_DATH_DATA1_MASK)
-
-/* The count of DAC_DATH */
-#define DAC_DATH_COUNT                           (16U)
-
-/*! @name SR - DAC Status Register */
-#define DAC_SR_DACBFRPBF_MASK                    (0x1U)
-#define DAC_SR_DACBFRPBF_SHIFT                   (0U)
-#define DAC_SR_DACBFRPBF(x)                      (((uint8_t)(((uint8_t)(x)) << DAC_SR_DACBFRPBF_SHIFT)) & DAC_SR_DACBFRPBF_MASK)
-#define DAC_SR_DACBFRPTF_MASK                    (0x2U)
-#define DAC_SR_DACBFRPTF_SHIFT                   (1U)
-#define DAC_SR_DACBFRPTF(x)                      (((uint8_t)(((uint8_t)(x)) << DAC_SR_DACBFRPTF_SHIFT)) & DAC_SR_DACBFRPTF_MASK)
-#define DAC_SR_DACBFWMF_MASK                     (0x4U)
-#define DAC_SR_DACBFWMF_SHIFT                    (2U)
-#define DAC_SR_DACBFWMF(x)                       (((uint8_t)(((uint8_t)(x)) << DAC_SR_DACBFWMF_SHIFT)) & DAC_SR_DACBFWMF_MASK)
-
-/*! @name C0 - DAC Control Register */
-#define DAC_C0_DACBBIEN_MASK                     (0x1U)
-#define DAC_C0_DACBBIEN_SHIFT                    (0U)
-#define DAC_C0_DACBBIEN(x)                       (((uint8_t)(((uint8_t)(x)) << DAC_C0_DACBBIEN_SHIFT)) & DAC_C0_DACBBIEN_MASK)
-#define DAC_C0_DACBTIEN_MASK                     (0x2U)
-#define DAC_C0_DACBTIEN_SHIFT                    (1U)
-#define DAC_C0_DACBTIEN(x)                       (((uint8_t)(((uint8_t)(x)) << DAC_C0_DACBTIEN_SHIFT)) & DAC_C0_DACBTIEN_MASK)
-#define DAC_C0_DACBWIEN_MASK                     (0x4U)
-#define DAC_C0_DACBWIEN_SHIFT                    (2U)
-#define DAC_C0_DACBWIEN(x)                       (((uint8_t)(((uint8_t)(x)) << DAC_C0_DACBWIEN_SHIFT)) & DAC_C0_DACBWIEN_MASK)
-#define DAC_C0_LPEN_MASK                         (0x8U)
-#define DAC_C0_LPEN_SHIFT                        (3U)
-#define DAC_C0_LPEN(x)                           (((uint8_t)(((uint8_t)(x)) << DAC_C0_LPEN_SHIFT)) & DAC_C0_LPEN_MASK)
-#define DAC_C0_DACSWTRG_MASK                     (0x10U)
-#define DAC_C0_DACSWTRG_SHIFT                    (4U)
-#define DAC_C0_DACSWTRG(x)                       (((uint8_t)(((uint8_t)(x)) << DAC_C0_DACSWTRG_SHIFT)) & DAC_C0_DACSWTRG_MASK)
-#define DAC_C0_DACTRGSEL_MASK                    (0x20U)
-#define DAC_C0_DACTRGSEL_SHIFT                   (5U)
-#define DAC_C0_DACTRGSEL(x)                      (((uint8_t)(((uint8_t)(x)) << DAC_C0_DACTRGSEL_SHIFT)) & DAC_C0_DACTRGSEL_MASK)
-#define DAC_C0_DACRFS_MASK                       (0x40U)
-#define DAC_C0_DACRFS_SHIFT                      (6U)
-#define DAC_C0_DACRFS(x)                         (((uint8_t)(((uint8_t)(x)) << DAC_C0_DACRFS_SHIFT)) & DAC_C0_DACRFS_MASK)
-#define DAC_C0_DACEN_MASK                        (0x80U)
-#define DAC_C0_DACEN_SHIFT                       (7U)
-#define DAC_C0_DACEN(x)                          (((uint8_t)(((uint8_t)(x)) << DAC_C0_DACEN_SHIFT)) & DAC_C0_DACEN_MASK)
-
-/*! @name C1 - DAC Control Register 1 */
-#define DAC_C1_DACBFEN_MASK                      (0x1U)
-#define DAC_C1_DACBFEN_SHIFT                     (0U)
-#define DAC_C1_DACBFEN(x)                        (((uint8_t)(((uint8_t)(x)) << DAC_C1_DACBFEN_SHIFT)) & DAC_C1_DACBFEN_MASK)
-#define DAC_C1_DACBFMD_MASK                      (0x6U)
-#define DAC_C1_DACBFMD_SHIFT                     (1U)
-#define DAC_C1_DACBFMD(x)                        (((uint8_t)(((uint8_t)(x)) << DAC_C1_DACBFMD_SHIFT)) & DAC_C1_DACBFMD_MASK)
-#define DAC_C1_DACBFWM_MASK                      (0x18U)
-#define DAC_C1_DACBFWM_SHIFT                     (3U)
-#define DAC_C1_DACBFWM(x)                        (((uint8_t)(((uint8_t)(x)) << DAC_C1_DACBFWM_SHIFT)) & DAC_C1_DACBFWM_MASK)
-#define DAC_C1_DMAEN_MASK                        (0x80U)
-#define DAC_C1_DMAEN_SHIFT                       (7U)
-#define DAC_C1_DMAEN(x)                          (((uint8_t)(((uint8_t)(x)) << DAC_C1_DMAEN_SHIFT)) & DAC_C1_DMAEN_MASK)
-
-/*! @name C2 - DAC Control Register 2 */
-#define DAC_C2_DACBFUP_MASK                      (0xFU)
-#define DAC_C2_DACBFUP_SHIFT                     (0U)
-#define DAC_C2_DACBFUP(x)                        (((uint8_t)(((uint8_t)(x)) << DAC_C2_DACBFUP_SHIFT)) & DAC_C2_DACBFUP_MASK)
-#define DAC_C2_DACBFRP_MASK                      (0xF0U)
-#define DAC_C2_DACBFRP_SHIFT                     (4U)
-#define DAC_C2_DACBFRP(x)                        (((uint8_t)(((uint8_t)(x)) << DAC_C2_DACBFRP_SHIFT)) & DAC_C2_DACBFRP_MASK)
-
-
-/*!
- * @}
- */ /* end of group DAC_Register_Masks */
-
-
-/* DAC - Peripheral instance base addresses */
-/** Peripheral DAC0 base address */
-#define DAC0_BASE                                (0x400CC000u)
-/** Peripheral DAC0 base pointer */
-#define DAC0                                     ((DAC_Type *)DAC0_BASE)
-/** Peripheral DAC1 base address */
-#define DAC1_BASE                                (0x400CD000u)
-/** Peripheral DAC1 base pointer */
-#define DAC1                                     ((DAC_Type *)DAC1_BASE)
-/** Array initializer of DAC peripheral base addresses */
-#define DAC_BASE_ADDRS                           { DAC0_BASE, DAC1_BASE }
-/** Array initializer of DAC peripheral base pointers */
-#define DAC_BASE_PTRS                            { DAC0, DAC1 }
-/** Interrupt vectors for the DAC peripheral type */
-#define DAC_IRQS                                 { DAC0_IRQn, DAC1_IRQn }
-
-/*!
- * @}
- */ /* end of group DAC_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- DMA Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup DMA_Peripheral_Access_Layer DMA Peripheral Access Layer
- * @{
- */
-
-/** DMA - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t CR;                                /**< Control Register, offset: 0x0 */
-  __I  uint32_t ES;                                /**< Error Status Register, offset: 0x4 */
-       uint8_t RESERVED_0[4];
-  __IO uint32_t ERQ;                               /**< Enable Request Register, offset: 0xC */
-       uint8_t RESERVED_1[4];
-  __IO uint32_t EEI;                               /**< Enable Error Interrupt Register, offset: 0x14 */
-  __O  uint8_t CEEI;                               /**< Clear Enable Error Interrupt Register, offset: 0x18 */
-  __O  uint8_t SEEI;                               /**< Set Enable Error Interrupt Register, offset: 0x19 */
-  __O  uint8_t CERQ;                               /**< Clear Enable Request Register, offset: 0x1A */
-  __O  uint8_t SERQ;                               /**< Set Enable Request Register, offset: 0x1B */
-  __O  uint8_t CDNE;                               /**< Clear DONE Status Bit Register, offset: 0x1C */
-  __O  uint8_t SSRT;                               /**< Set START Bit Register, offset: 0x1D */
-  __O  uint8_t CERR;                               /**< Clear Error Register, offset: 0x1E */
-  __O  uint8_t CINT;                               /**< Clear Interrupt Request Register, offset: 0x1F */
-       uint8_t RESERVED_2[4];
-  __IO uint32_t INT;                               /**< Interrupt Request Register, offset: 0x24 */
-       uint8_t RESERVED_3[4];
-  __IO uint32_t ERR;                               /**< Error Register, offset: 0x2C */
-       uint8_t RESERVED_4[4];
-  __I  uint32_t HRS;                               /**< Hardware Request Status Register, offset: 0x34 */
-       uint8_t RESERVED_5[200];
-  __IO uint8_t DCHPRI3;                            /**< Channel n Priority Register, offset: 0x100 */
-  __IO uint8_t DCHPRI2;                            /**< Channel n Priority Register, offset: 0x101 */
-  __IO uint8_t DCHPRI1;                            /**< Channel n Priority Register, offset: 0x102 */
-  __IO uint8_t DCHPRI0;                            /**< Channel n Priority Register, offset: 0x103 */
-  __IO uint8_t DCHPRI7;                            /**< Channel n Priority Register, offset: 0x104 */
-  __IO uint8_t DCHPRI6;                            /**< Channel n Priority Register, offset: 0x105 */
-  __IO uint8_t DCHPRI5;                            /**< Channel n Priority Register, offset: 0x106 */
-  __IO uint8_t DCHPRI4;                            /**< Channel n Priority Register, offset: 0x107 */
-  __IO uint8_t DCHPRI11;                           /**< Channel n Priority Register, offset: 0x108 */
-  __IO uint8_t DCHPRI10;                           /**< Channel n Priority Register, offset: 0x109 */
-  __IO uint8_t DCHPRI9;                            /**< Channel n Priority Register, offset: 0x10A */
-  __IO uint8_t DCHPRI8;                            /**< Channel n Priority Register, offset: 0x10B */
-  __IO uint8_t DCHPRI15;                           /**< Channel n Priority Register, offset: 0x10C */
-  __IO uint8_t DCHPRI14;                           /**< Channel n Priority Register, offset: 0x10D */
-  __IO uint8_t DCHPRI13;                           /**< Channel n Priority Register, offset: 0x10E */
-  __IO uint8_t DCHPRI12;                           /**< Channel n Priority Register, offset: 0x10F */
-       uint8_t RESERVED_6[3824];
-  struct {                                         /* offset: 0x1000, array step: 0x20 */
-    __IO uint32_t SADDR;                             /**< TCD Source Address, array offset: 0x1000, array step: 0x20 */
-    __IO uint16_t SOFF;                              /**< TCD Signed Source Address Offset, array offset: 0x1004, array step: 0x20 */
-    __IO uint16_t ATTR;                              /**< TCD Transfer Attributes, array offset: 0x1006, array step: 0x20 */
-    union {                                          /* offset: 0x1008, array step: 0x20 */
-      __IO uint32_t NBYTES_MLNO;                       /**< TCD Minor Byte Count (Minor Loop Disabled), array offset: 0x1008, array step: 0x20 */
-      __IO uint32_t NBYTES_MLOFFNO;                    /**< TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled), array offset: 0x1008, array step: 0x20 */
-      __IO uint32_t NBYTES_MLOFFYES;                   /**< TCD Signed Minor Loop Offset (Minor Loop and Offset Enabled), array offset: 0x1008, array step: 0x20 */
-    };
-    __IO uint32_t SLAST;                             /**< TCD Last Source Address Adjustment, array offset: 0x100C, array step: 0x20 */
-    __IO uint32_t DADDR;                             /**< TCD Destination Address, array offset: 0x1010, array step: 0x20 */
-    __IO uint16_t DOFF;                              /**< TCD Signed Destination Address Offset, array offset: 0x1014, array step: 0x20 */
-    union {                                          /* offset: 0x1016, array step: 0x20 */
-      __IO uint16_t CITER_ELINKNO;                     /**< TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled), array offset: 0x1016, array step: 0x20 */
-      __IO uint16_t CITER_ELINKYES;                    /**< TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled), array offset: 0x1016, array step: 0x20 */
-    };
-    __IO uint32_t DLAST_SGA;                         /**< TCD Last Destination Address Adjustment/Scatter Gather Address, array offset: 0x1018, array step: 0x20 */
-    __IO uint16_t CSR;                               /**< TCD Control and Status, array offset: 0x101C, array step: 0x20 */
-    union {                                          /* offset: 0x101E, array step: 0x20 */
-      __IO uint16_t BITER_ELINKNO;                     /**< TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled), array offset: 0x101E, array step: 0x20 */
-      __IO uint16_t BITER_ELINKYES;                    /**< TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled), array offset: 0x101E, array step: 0x20 */
-    };
-  } TCD[16];
-} DMA_Type;
-
-/* ----------------------------------------------------------------------------
-   -- DMA Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup DMA_Register_Masks DMA Register Masks
- * @{
- */
-
-/*! @name CR - Control Register */
-#define DMA_CR_EDBG_MASK                         (0x2U)
-#define DMA_CR_EDBG_SHIFT                        (1U)
-#define DMA_CR_EDBG(x)                           (((uint32_t)(((uint32_t)(x)) << DMA_CR_EDBG_SHIFT)) & DMA_CR_EDBG_MASK)
-#define DMA_CR_ERCA_MASK                         (0x4U)
-#define DMA_CR_ERCA_SHIFT                        (2U)
-#define DMA_CR_ERCA(x)                           (((uint32_t)(((uint32_t)(x)) << DMA_CR_ERCA_SHIFT)) & DMA_CR_ERCA_MASK)
-#define DMA_CR_HOE_MASK                          (0x10U)
-#define DMA_CR_HOE_SHIFT                         (4U)
-#define DMA_CR_HOE(x)                            (((uint32_t)(((uint32_t)(x)) << DMA_CR_HOE_SHIFT)) & DMA_CR_HOE_MASK)
-#define DMA_CR_HALT_MASK                         (0x20U)
-#define DMA_CR_HALT_SHIFT                        (5U)
-#define DMA_CR_HALT(x)                           (((uint32_t)(((uint32_t)(x)) << DMA_CR_HALT_SHIFT)) & DMA_CR_HALT_MASK)
-#define DMA_CR_CLM_MASK                          (0x40U)
-#define DMA_CR_CLM_SHIFT                         (6U)
-#define DMA_CR_CLM(x)                            (((uint32_t)(((uint32_t)(x)) << DMA_CR_CLM_SHIFT)) & DMA_CR_CLM_MASK)
-#define DMA_CR_EMLM_MASK                         (0x80U)
-#define DMA_CR_EMLM_SHIFT                        (7U)
-#define DMA_CR_EMLM(x)                           (((uint32_t)(((uint32_t)(x)) << DMA_CR_EMLM_SHIFT)) & DMA_CR_EMLM_MASK)
-#define DMA_CR_ECX_MASK                          (0x10000U)
-#define DMA_CR_ECX_SHIFT                         (16U)
-#define DMA_CR_ECX(x)                            (((uint32_t)(((uint32_t)(x)) << DMA_CR_ECX_SHIFT)) & DMA_CR_ECX_MASK)
-#define DMA_CR_CX_MASK                           (0x20000U)
-#define DMA_CR_CX_SHIFT                          (17U)
-#define DMA_CR_CX(x)                             (((uint32_t)(((uint32_t)(x)) << DMA_CR_CX_SHIFT)) & DMA_CR_CX_MASK)
-
-/*! @name ES - Error Status Register */
-#define DMA_ES_DBE_MASK                          (0x1U)
-#define DMA_ES_DBE_SHIFT                         (0U)
-#define DMA_ES_DBE(x)                            (((uint32_t)(((uint32_t)(x)) << DMA_ES_DBE_SHIFT)) & DMA_ES_DBE_MASK)
-#define DMA_ES_SBE_MASK                          (0x2U)
-#define DMA_ES_SBE_SHIFT                         (1U)
-#define DMA_ES_SBE(x)                            (((uint32_t)(((uint32_t)(x)) << DMA_ES_SBE_SHIFT)) & DMA_ES_SBE_MASK)
-#define DMA_ES_SGE_MASK                          (0x4U)
-#define DMA_ES_SGE_SHIFT                         (2U)
-#define DMA_ES_SGE(x)                            (((uint32_t)(((uint32_t)(x)) << DMA_ES_SGE_SHIFT)) & DMA_ES_SGE_MASK)
-#define DMA_ES_NCE_MASK                          (0x8U)
-#define DMA_ES_NCE_SHIFT                         (3U)
-#define DMA_ES_NCE(x)                            (((uint32_t)(((uint32_t)(x)) << DMA_ES_NCE_SHIFT)) & DMA_ES_NCE_MASK)
-#define DMA_ES_DOE_MASK                          (0x10U)
-#define DMA_ES_DOE_SHIFT                         (4U)
-#define DMA_ES_DOE(x)                            (((uint32_t)(((uint32_t)(x)) << DMA_ES_DOE_SHIFT)) & DMA_ES_DOE_MASK)
-#define DMA_ES_DAE_MASK                          (0x20U)
-#define DMA_ES_DAE_SHIFT                         (5U)
-#define DMA_ES_DAE(x)                            (((uint32_t)(((uint32_t)(x)) << DMA_ES_DAE_SHIFT)) & DMA_ES_DAE_MASK)
-#define DMA_ES_SOE_MASK                          (0x40U)
-#define DMA_ES_SOE_SHIFT                         (6U)
-#define DMA_ES_SOE(x)                            (((uint32_t)(((uint32_t)(x)) << DMA_ES_SOE_SHIFT)) & DMA_ES_SOE_MASK)
-#define DMA_ES_SAE_MASK                          (0x80U)
-#define DMA_ES_SAE_SHIFT                         (7U)
-#define DMA_ES_SAE(x)                            (((uint32_t)(((uint32_t)(x)) << DMA_ES_SAE_SHIFT)) & DMA_ES_SAE_MASK)
-#define DMA_ES_ERRCHN_MASK                       (0xF00U)
-#define DMA_ES_ERRCHN_SHIFT                      (8U)
-#define DMA_ES_ERRCHN(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_ES_ERRCHN_SHIFT)) & DMA_ES_ERRCHN_MASK)
-#define DMA_ES_CPE_MASK                          (0x4000U)
-#define DMA_ES_CPE_SHIFT                         (14U)
-#define DMA_ES_CPE(x)                            (((uint32_t)(((uint32_t)(x)) << DMA_ES_CPE_SHIFT)) & DMA_ES_CPE_MASK)
-#define DMA_ES_ECX_MASK                          (0x10000U)
-#define DMA_ES_ECX_SHIFT                         (16U)
-#define DMA_ES_ECX(x)                            (((uint32_t)(((uint32_t)(x)) << DMA_ES_ECX_SHIFT)) & DMA_ES_ECX_MASK)
-#define DMA_ES_VLD_MASK                          (0x80000000U)
-#define DMA_ES_VLD_SHIFT                         (31U)
-#define DMA_ES_VLD(x)                            (((uint32_t)(((uint32_t)(x)) << DMA_ES_VLD_SHIFT)) & DMA_ES_VLD_MASK)
-
-/*! @name ERQ - Enable Request Register */
-#define DMA_ERQ_ERQ0_MASK                        (0x1U)
-#define DMA_ERQ_ERQ0_SHIFT                       (0U)
-#define DMA_ERQ_ERQ0(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERQ_ERQ0_SHIFT)) & DMA_ERQ_ERQ0_MASK)
-#define DMA_ERQ_ERQ1_MASK                        (0x2U)
-#define DMA_ERQ_ERQ1_SHIFT                       (1U)
-#define DMA_ERQ_ERQ1(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERQ_ERQ1_SHIFT)) & DMA_ERQ_ERQ1_MASK)
-#define DMA_ERQ_ERQ2_MASK                        (0x4U)
-#define DMA_ERQ_ERQ2_SHIFT                       (2U)
-#define DMA_ERQ_ERQ2(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERQ_ERQ2_SHIFT)) & DMA_ERQ_ERQ2_MASK)
-#define DMA_ERQ_ERQ3_MASK                        (0x8U)
-#define DMA_ERQ_ERQ3_SHIFT                       (3U)
-#define DMA_ERQ_ERQ3(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERQ_ERQ3_SHIFT)) & DMA_ERQ_ERQ3_MASK)
-#define DMA_ERQ_ERQ4_MASK                        (0x10U)
-#define DMA_ERQ_ERQ4_SHIFT                       (4U)
-#define DMA_ERQ_ERQ4(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERQ_ERQ4_SHIFT)) & DMA_ERQ_ERQ4_MASK)
-#define DMA_ERQ_ERQ5_MASK                        (0x20U)
-#define DMA_ERQ_ERQ5_SHIFT                       (5U)
-#define DMA_ERQ_ERQ5(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERQ_ERQ5_SHIFT)) & DMA_ERQ_ERQ5_MASK)
-#define DMA_ERQ_ERQ6_MASK                        (0x40U)
-#define DMA_ERQ_ERQ6_SHIFT                       (6U)
-#define DMA_ERQ_ERQ6(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERQ_ERQ6_SHIFT)) & DMA_ERQ_ERQ6_MASK)
-#define DMA_ERQ_ERQ7_MASK                        (0x80U)
-#define DMA_ERQ_ERQ7_SHIFT                       (7U)
-#define DMA_ERQ_ERQ7(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERQ_ERQ7_SHIFT)) & DMA_ERQ_ERQ7_MASK)
-#define DMA_ERQ_ERQ8_MASK                        (0x100U)
-#define DMA_ERQ_ERQ8_SHIFT                       (8U)
-#define DMA_ERQ_ERQ8(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERQ_ERQ8_SHIFT)) & DMA_ERQ_ERQ8_MASK)
-#define DMA_ERQ_ERQ9_MASK                        (0x200U)
-#define DMA_ERQ_ERQ9_SHIFT                       (9U)
-#define DMA_ERQ_ERQ9(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERQ_ERQ9_SHIFT)) & DMA_ERQ_ERQ9_MASK)
-#define DMA_ERQ_ERQ10_MASK                       (0x400U)
-#define DMA_ERQ_ERQ10_SHIFT                      (10U)
-#define DMA_ERQ_ERQ10(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_ERQ_ERQ10_SHIFT)) & DMA_ERQ_ERQ10_MASK)
-#define DMA_ERQ_ERQ11_MASK                       (0x800U)
-#define DMA_ERQ_ERQ11_SHIFT                      (11U)
-#define DMA_ERQ_ERQ11(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_ERQ_ERQ11_SHIFT)) & DMA_ERQ_ERQ11_MASK)
-#define DMA_ERQ_ERQ12_MASK                       (0x1000U)
-#define DMA_ERQ_ERQ12_SHIFT                      (12U)
-#define DMA_ERQ_ERQ12(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_ERQ_ERQ12_SHIFT)) & DMA_ERQ_ERQ12_MASK)
-#define DMA_ERQ_ERQ13_MASK                       (0x2000U)
-#define DMA_ERQ_ERQ13_SHIFT                      (13U)
-#define DMA_ERQ_ERQ13(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_ERQ_ERQ13_SHIFT)) & DMA_ERQ_ERQ13_MASK)
-#define DMA_ERQ_ERQ14_MASK                       (0x4000U)
-#define DMA_ERQ_ERQ14_SHIFT                      (14U)
-#define DMA_ERQ_ERQ14(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_ERQ_ERQ14_SHIFT)) & DMA_ERQ_ERQ14_MASK)
-#define DMA_ERQ_ERQ15_MASK                       (0x8000U)
-#define DMA_ERQ_ERQ15_SHIFT                      (15U)
-#define DMA_ERQ_ERQ15(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_ERQ_ERQ15_SHIFT)) & DMA_ERQ_ERQ15_MASK)
-
-/*! @name EEI - Enable Error Interrupt Register */
-#define DMA_EEI_EEI0_MASK                        (0x1U)
-#define DMA_EEI_EEI0_SHIFT                       (0U)
-#define DMA_EEI_EEI0(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_EEI_EEI0_SHIFT)) & DMA_EEI_EEI0_MASK)
-#define DMA_EEI_EEI1_MASK                        (0x2U)
-#define DMA_EEI_EEI1_SHIFT                       (1U)
-#define DMA_EEI_EEI1(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_EEI_EEI1_SHIFT)) & DMA_EEI_EEI1_MASK)
-#define DMA_EEI_EEI2_MASK                        (0x4U)
-#define DMA_EEI_EEI2_SHIFT                       (2U)
-#define DMA_EEI_EEI2(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_EEI_EEI2_SHIFT)) & DMA_EEI_EEI2_MASK)
-#define DMA_EEI_EEI3_MASK                        (0x8U)
-#define DMA_EEI_EEI3_SHIFT                       (3U)
-#define DMA_EEI_EEI3(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_EEI_EEI3_SHIFT)) & DMA_EEI_EEI3_MASK)
-#define DMA_EEI_EEI4_MASK                        (0x10U)
-#define DMA_EEI_EEI4_SHIFT                       (4U)
-#define DMA_EEI_EEI4(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_EEI_EEI4_SHIFT)) & DMA_EEI_EEI4_MASK)
-#define DMA_EEI_EEI5_MASK                        (0x20U)
-#define DMA_EEI_EEI5_SHIFT                       (5U)
-#define DMA_EEI_EEI5(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_EEI_EEI5_SHIFT)) & DMA_EEI_EEI5_MASK)
-#define DMA_EEI_EEI6_MASK                        (0x40U)
-#define DMA_EEI_EEI6_SHIFT                       (6U)
-#define DMA_EEI_EEI6(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_EEI_EEI6_SHIFT)) & DMA_EEI_EEI6_MASK)
-#define DMA_EEI_EEI7_MASK                        (0x80U)
-#define DMA_EEI_EEI7_SHIFT                       (7U)
-#define DMA_EEI_EEI7(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_EEI_EEI7_SHIFT)) & DMA_EEI_EEI7_MASK)
-#define DMA_EEI_EEI8_MASK                        (0x100U)
-#define DMA_EEI_EEI8_SHIFT                       (8U)
-#define DMA_EEI_EEI8(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_EEI_EEI8_SHIFT)) & DMA_EEI_EEI8_MASK)
-#define DMA_EEI_EEI9_MASK                        (0x200U)
-#define DMA_EEI_EEI9_SHIFT                       (9U)
-#define DMA_EEI_EEI9(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_EEI_EEI9_SHIFT)) & DMA_EEI_EEI9_MASK)
-#define DMA_EEI_EEI10_MASK                       (0x400U)
-#define DMA_EEI_EEI10_SHIFT                      (10U)
-#define DMA_EEI_EEI10(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_EEI_EEI10_SHIFT)) & DMA_EEI_EEI10_MASK)
-#define DMA_EEI_EEI11_MASK                       (0x800U)
-#define DMA_EEI_EEI11_SHIFT                      (11U)
-#define DMA_EEI_EEI11(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_EEI_EEI11_SHIFT)) & DMA_EEI_EEI11_MASK)
-#define DMA_EEI_EEI12_MASK                       (0x1000U)
-#define DMA_EEI_EEI12_SHIFT                      (12U)
-#define DMA_EEI_EEI12(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_EEI_EEI12_SHIFT)) & DMA_EEI_EEI12_MASK)
-#define DMA_EEI_EEI13_MASK                       (0x2000U)
-#define DMA_EEI_EEI13_SHIFT                      (13U)
-#define DMA_EEI_EEI13(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_EEI_EEI13_SHIFT)) & DMA_EEI_EEI13_MASK)
-#define DMA_EEI_EEI14_MASK                       (0x4000U)
-#define DMA_EEI_EEI14_SHIFT                      (14U)
-#define DMA_EEI_EEI14(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_EEI_EEI14_SHIFT)) & DMA_EEI_EEI14_MASK)
-#define DMA_EEI_EEI15_MASK                       (0x8000U)
-#define DMA_EEI_EEI15_SHIFT                      (15U)
-#define DMA_EEI_EEI15(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_EEI_EEI15_SHIFT)) & DMA_EEI_EEI15_MASK)
-
-/*! @name CEEI - Clear Enable Error Interrupt Register */
-#define DMA_CEEI_CEEI_MASK                       (0xFU)
-#define DMA_CEEI_CEEI_SHIFT                      (0U)
-#define DMA_CEEI_CEEI(x)                         (((uint8_t)(((uint8_t)(x)) << DMA_CEEI_CEEI_SHIFT)) & DMA_CEEI_CEEI_MASK)
-#define DMA_CEEI_CAEE_MASK                       (0x40U)
-#define DMA_CEEI_CAEE_SHIFT                      (6U)
-#define DMA_CEEI_CAEE(x)                         (((uint8_t)(((uint8_t)(x)) << DMA_CEEI_CAEE_SHIFT)) & DMA_CEEI_CAEE_MASK)
-#define DMA_CEEI_NOP_MASK                        (0x80U)
-#define DMA_CEEI_NOP_SHIFT                       (7U)
-#define DMA_CEEI_NOP(x)                          (((uint8_t)(((uint8_t)(x)) << DMA_CEEI_NOP_SHIFT)) & DMA_CEEI_NOP_MASK)
-
-/*! @name SEEI - Set Enable Error Interrupt Register */
-#define DMA_SEEI_SEEI_MASK                       (0xFU)
-#define DMA_SEEI_SEEI_SHIFT                      (0U)
-#define DMA_SEEI_SEEI(x)                         (((uint8_t)(((uint8_t)(x)) << DMA_SEEI_SEEI_SHIFT)) & DMA_SEEI_SEEI_MASK)
-#define DMA_SEEI_SAEE_MASK                       (0x40U)
-#define DMA_SEEI_SAEE_SHIFT                      (6U)
-#define DMA_SEEI_SAEE(x)                         (((uint8_t)(((uint8_t)(x)) << DMA_SEEI_SAEE_SHIFT)) & DMA_SEEI_SAEE_MASK)
-#define DMA_SEEI_NOP_MASK                        (0x80U)
-#define DMA_SEEI_NOP_SHIFT                       (7U)
-#define DMA_SEEI_NOP(x)                          (((uint8_t)(((uint8_t)(x)) << DMA_SEEI_NOP_SHIFT)) & DMA_SEEI_NOP_MASK)
-
-/*! @name CERQ - Clear Enable Request Register */
-#define DMA_CERQ_CERQ_MASK                       (0xFU)
-#define DMA_CERQ_CERQ_SHIFT                      (0U)
-#define DMA_CERQ_CERQ(x)                         (((uint8_t)(((uint8_t)(x)) << DMA_CERQ_CERQ_SHIFT)) & DMA_CERQ_CERQ_MASK)
-#define DMA_CERQ_CAER_MASK                       (0x40U)
-#define DMA_CERQ_CAER_SHIFT                      (6U)
-#define DMA_CERQ_CAER(x)                         (((uint8_t)(((uint8_t)(x)) << DMA_CERQ_CAER_SHIFT)) & DMA_CERQ_CAER_MASK)
-#define DMA_CERQ_NOP_MASK                        (0x80U)
-#define DMA_CERQ_NOP_SHIFT                       (7U)
-#define DMA_CERQ_NOP(x)                          (((uint8_t)(((uint8_t)(x)) << DMA_CERQ_NOP_SHIFT)) & DMA_CERQ_NOP_MASK)
-
-/*! @name SERQ - Set Enable Request Register */
-#define DMA_SERQ_SERQ_MASK                       (0xFU)
-#define DMA_SERQ_SERQ_SHIFT                      (0U)
-#define DMA_SERQ_SERQ(x)                         (((uint8_t)(((uint8_t)(x)) << DMA_SERQ_SERQ_SHIFT)) & DMA_SERQ_SERQ_MASK)
-#define DMA_SERQ_SAER_MASK                       (0x40U)
-#define DMA_SERQ_SAER_SHIFT                      (6U)
-#define DMA_SERQ_SAER(x)                         (((uint8_t)(((uint8_t)(x)) << DMA_SERQ_SAER_SHIFT)) & DMA_SERQ_SAER_MASK)
-#define DMA_SERQ_NOP_MASK                        (0x80U)
-#define DMA_SERQ_NOP_SHIFT                       (7U)
-#define DMA_SERQ_NOP(x)                          (((uint8_t)(((uint8_t)(x)) << DMA_SERQ_NOP_SHIFT)) & DMA_SERQ_NOP_MASK)
-
-/*! @name CDNE - Clear DONE Status Bit Register */
-#define DMA_CDNE_CDNE_MASK                       (0xFU)
-#define DMA_CDNE_CDNE_SHIFT                      (0U)
-#define DMA_CDNE_CDNE(x)                         (((uint8_t)(((uint8_t)(x)) << DMA_CDNE_CDNE_SHIFT)) & DMA_CDNE_CDNE_MASK)
-#define DMA_CDNE_CADN_MASK                       (0x40U)
-#define DMA_CDNE_CADN_SHIFT                      (6U)
-#define DMA_CDNE_CADN(x)                         (((uint8_t)(((uint8_t)(x)) << DMA_CDNE_CADN_SHIFT)) & DMA_CDNE_CADN_MASK)
-#define DMA_CDNE_NOP_MASK                        (0x80U)
-#define DMA_CDNE_NOP_SHIFT                       (7U)
-#define DMA_CDNE_NOP(x)                          (((uint8_t)(((uint8_t)(x)) << DMA_CDNE_NOP_SHIFT)) & DMA_CDNE_NOP_MASK)
-
-/*! @name SSRT - Set START Bit Register */
-#define DMA_SSRT_SSRT_MASK                       (0xFU)
-#define DMA_SSRT_SSRT_SHIFT                      (0U)
-#define DMA_SSRT_SSRT(x)                         (((uint8_t)(((uint8_t)(x)) << DMA_SSRT_SSRT_SHIFT)) & DMA_SSRT_SSRT_MASK)
-#define DMA_SSRT_SAST_MASK                       (0x40U)
-#define DMA_SSRT_SAST_SHIFT                      (6U)
-#define DMA_SSRT_SAST(x)                         (((uint8_t)(((uint8_t)(x)) << DMA_SSRT_SAST_SHIFT)) & DMA_SSRT_SAST_MASK)
-#define DMA_SSRT_NOP_MASK                        (0x80U)
-#define DMA_SSRT_NOP_SHIFT                       (7U)
-#define DMA_SSRT_NOP(x)                          (((uint8_t)(((uint8_t)(x)) << DMA_SSRT_NOP_SHIFT)) & DMA_SSRT_NOP_MASK)
-
-/*! @name CERR - Clear Error Register */
-#define DMA_CERR_CERR_MASK                       (0xFU)
-#define DMA_CERR_CERR_SHIFT                      (0U)
-#define DMA_CERR_CERR(x)                         (((uint8_t)(((uint8_t)(x)) << DMA_CERR_CERR_SHIFT)) & DMA_CERR_CERR_MASK)
-#define DMA_CERR_CAEI_MASK                       (0x40U)
-#define DMA_CERR_CAEI_SHIFT                      (6U)
-#define DMA_CERR_CAEI(x)                         (((uint8_t)(((uint8_t)(x)) << DMA_CERR_CAEI_SHIFT)) & DMA_CERR_CAEI_MASK)
-#define DMA_CERR_NOP_MASK                        (0x80U)
-#define DMA_CERR_NOP_SHIFT                       (7U)
-#define DMA_CERR_NOP(x)                          (((uint8_t)(((uint8_t)(x)) << DMA_CERR_NOP_SHIFT)) & DMA_CERR_NOP_MASK)
-
-/*! @name CINT - Clear Interrupt Request Register */
-#define DMA_CINT_CINT_MASK                       (0xFU)
-#define DMA_CINT_CINT_SHIFT                      (0U)
-#define DMA_CINT_CINT(x)                         (((uint8_t)(((uint8_t)(x)) << DMA_CINT_CINT_SHIFT)) & DMA_CINT_CINT_MASK)
-#define DMA_CINT_CAIR_MASK                       (0x40U)
-#define DMA_CINT_CAIR_SHIFT                      (6U)
-#define DMA_CINT_CAIR(x)                         (((uint8_t)(((uint8_t)(x)) << DMA_CINT_CAIR_SHIFT)) & DMA_CINT_CAIR_MASK)
-#define DMA_CINT_NOP_MASK                        (0x80U)
-#define DMA_CINT_NOP_SHIFT                       (7U)
-#define DMA_CINT_NOP(x)                          (((uint8_t)(((uint8_t)(x)) << DMA_CINT_NOP_SHIFT)) & DMA_CINT_NOP_MASK)
-
-/*! @name INT - Interrupt Request Register */
-#define DMA_INT_INT0_MASK                        (0x1U)
-#define DMA_INT_INT0_SHIFT                       (0U)
-#define DMA_INT_INT0(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_INT_INT0_SHIFT)) & DMA_INT_INT0_MASK)
-#define DMA_INT_INT1_MASK                        (0x2U)
-#define DMA_INT_INT1_SHIFT                       (1U)
-#define DMA_INT_INT1(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_INT_INT1_SHIFT)) & DMA_INT_INT1_MASK)
-#define DMA_INT_INT2_MASK                        (0x4U)
-#define DMA_INT_INT2_SHIFT                       (2U)
-#define DMA_INT_INT2(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_INT_INT2_SHIFT)) & DMA_INT_INT2_MASK)
-#define DMA_INT_INT3_MASK                        (0x8U)
-#define DMA_INT_INT3_SHIFT                       (3U)
-#define DMA_INT_INT3(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_INT_INT3_SHIFT)) & DMA_INT_INT3_MASK)
-#define DMA_INT_INT4_MASK                        (0x10U)
-#define DMA_INT_INT4_SHIFT                       (4U)
-#define DMA_INT_INT4(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_INT_INT4_SHIFT)) & DMA_INT_INT4_MASK)
-#define DMA_INT_INT5_MASK                        (0x20U)
-#define DMA_INT_INT5_SHIFT                       (5U)
-#define DMA_INT_INT5(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_INT_INT5_SHIFT)) & DMA_INT_INT5_MASK)
-#define DMA_INT_INT6_MASK                        (0x40U)
-#define DMA_INT_INT6_SHIFT                       (6U)
-#define DMA_INT_INT6(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_INT_INT6_SHIFT)) & DMA_INT_INT6_MASK)
-#define DMA_INT_INT7_MASK                        (0x80U)
-#define DMA_INT_INT7_SHIFT                       (7U)
-#define DMA_INT_INT7(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_INT_INT7_SHIFT)) & DMA_INT_INT7_MASK)
-#define DMA_INT_INT8_MASK                        (0x100U)
-#define DMA_INT_INT8_SHIFT                       (8U)
-#define DMA_INT_INT8(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_INT_INT8_SHIFT)) & DMA_INT_INT8_MASK)
-#define DMA_INT_INT9_MASK                        (0x200U)
-#define DMA_INT_INT9_SHIFT                       (9U)
-#define DMA_INT_INT9(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_INT_INT9_SHIFT)) & DMA_INT_INT9_MASK)
-#define DMA_INT_INT10_MASK                       (0x400U)
-#define DMA_INT_INT10_SHIFT                      (10U)
-#define DMA_INT_INT10(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_INT_INT10_SHIFT)) & DMA_INT_INT10_MASK)
-#define DMA_INT_INT11_MASK                       (0x800U)
-#define DMA_INT_INT11_SHIFT                      (11U)
-#define DMA_INT_INT11(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_INT_INT11_SHIFT)) & DMA_INT_INT11_MASK)
-#define DMA_INT_INT12_MASK                       (0x1000U)
-#define DMA_INT_INT12_SHIFT                      (12U)
-#define DMA_INT_INT12(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_INT_INT12_SHIFT)) & DMA_INT_INT12_MASK)
-#define DMA_INT_INT13_MASK                       (0x2000U)
-#define DMA_INT_INT13_SHIFT                      (13U)
-#define DMA_INT_INT13(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_INT_INT13_SHIFT)) & DMA_INT_INT13_MASK)
-#define DMA_INT_INT14_MASK                       (0x4000U)
-#define DMA_INT_INT14_SHIFT                      (14U)
-#define DMA_INT_INT14(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_INT_INT14_SHIFT)) & DMA_INT_INT14_MASK)
-#define DMA_INT_INT15_MASK                       (0x8000U)
-#define DMA_INT_INT15_SHIFT                      (15U)
-#define DMA_INT_INT15(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_INT_INT15_SHIFT)) & DMA_INT_INT15_MASK)
-
-/*! @name ERR - Error Register */
-#define DMA_ERR_ERR0_MASK                        (0x1U)
-#define DMA_ERR_ERR0_SHIFT                       (0U)
-#define DMA_ERR_ERR0(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERR_ERR0_SHIFT)) & DMA_ERR_ERR0_MASK)
-#define DMA_ERR_ERR1_MASK                        (0x2U)
-#define DMA_ERR_ERR1_SHIFT                       (1U)
-#define DMA_ERR_ERR1(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERR_ERR1_SHIFT)) & DMA_ERR_ERR1_MASK)
-#define DMA_ERR_ERR2_MASK                        (0x4U)
-#define DMA_ERR_ERR2_SHIFT                       (2U)
-#define DMA_ERR_ERR2(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERR_ERR2_SHIFT)) & DMA_ERR_ERR2_MASK)
-#define DMA_ERR_ERR3_MASK                        (0x8U)
-#define DMA_ERR_ERR3_SHIFT                       (3U)
-#define DMA_ERR_ERR3(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERR_ERR3_SHIFT)) & DMA_ERR_ERR3_MASK)
-#define DMA_ERR_ERR4_MASK                        (0x10U)
-#define DMA_ERR_ERR4_SHIFT                       (4U)
-#define DMA_ERR_ERR4(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERR_ERR4_SHIFT)) & DMA_ERR_ERR4_MASK)
-#define DMA_ERR_ERR5_MASK                        (0x20U)
-#define DMA_ERR_ERR5_SHIFT                       (5U)
-#define DMA_ERR_ERR5(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERR_ERR5_SHIFT)) & DMA_ERR_ERR5_MASK)
-#define DMA_ERR_ERR6_MASK                        (0x40U)
-#define DMA_ERR_ERR6_SHIFT                       (6U)
-#define DMA_ERR_ERR6(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERR_ERR6_SHIFT)) & DMA_ERR_ERR6_MASK)
-#define DMA_ERR_ERR7_MASK                        (0x80U)
-#define DMA_ERR_ERR7_SHIFT                       (7U)
-#define DMA_ERR_ERR7(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERR_ERR7_SHIFT)) & DMA_ERR_ERR7_MASK)
-#define DMA_ERR_ERR8_MASK                        (0x100U)
-#define DMA_ERR_ERR8_SHIFT                       (8U)
-#define DMA_ERR_ERR8(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERR_ERR8_SHIFT)) & DMA_ERR_ERR8_MASK)
-#define DMA_ERR_ERR9_MASK                        (0x200U)
-#define DMA_ERR_ERR9_SHIFT                       (9U)
-#define DMA_ERR_ERR9(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_ERR_ERR9_SHIFT)) & DMA_ERR_ERR9_MASK)
-#define DMA_ERR_ERR10_MASK                       (0x400U)
-#define DMA_ERR_ERR10_SHIFT                      (10U)
-#define DMA_ERR_ERR10(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_ERR_ERR10_SHIFT)) & DMA_ERR_ERR10_MASK)
-#define DMA_ERR_ERR11_MASK                       (0x800U)
-#define DMA_ERR_ERR11_SHIFT                      (11U)
-#define DMA_ERR_ERR11(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_ERR_ERR11_SHIFT)) & DMA_ERR_ERR11_MASK)
-#define DMA_ERR_ERR12_MASK                       (0x1000U)
-#define DMA_ERR_ERR12_SHIFT                      (12U)
-#define DMA_ERR_ERR12(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_ERR_ERR12_SHIFT)) & DMA_ERR_ERR12_MASK)
-#define DMA_ERR_ERR13_MASK                       (0x2000U)
-#define DMA_ERR_ERR13_SHIFT                      (13U)
-#define DMA_ERR_ERR13(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_ERR_ERR13_SHIFT)) & DMA_ERR_ERR13_MASK)
-#define DMA_ERR_ERR14_MASK                       (0x4000U)
-#define DMA_ERR_ERR14_SHIFT                      (14U)
-#define DMA_ERR_ERR14(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_ERR_ERR14_SHIFT)) & DMA_ERR_ERR14_MASK)
-#define DMA_ERR_ERR15_MASK                       (0x8000U)
-#define DMA_ERR_ERR15_SHIFT                      (15U)
-#define DMA_ERR_ERR15(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_ERR_ERR15_SHIFT)) & DMA_ERR_ERR15_MASK)
-
-/*! @name HRS - Hardware Request Status Register */
-#define DMA_HRS_HRS0_MASK                        (0x1U)
-#define DMA_HRS_HRS0_SHIFT                       (0U)
-#define DMA_HRS_HRS0(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_HRS_HRS0_SHIFT)) & DMA_HRS_HRS0_MASK)
-#define DMA_HRS_HRS1_MASK                        (0x2U)
-#define DMA_HRS_HRS1_SHIFT                       (1U)
-#define DMA_HRS_HRS1(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_HRS_HRS1_SHIFT)) & DMA_HRS_HRS1_MASK)
-#define DMA_HRS_HRS2_MASK                        (0x4U)
-#define DMA_HRS_HRS2_SHIFT                       (2U)
-#define DMA_HRS_HRS2(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_HRS_HRS2_SHIFT)) & DMA_HRS_HRS2_MASK)
-#define DMA_HRS_HRS3_MASK                        (0x8U)
-#define DMA_HRS_HRS3_SHIFT                       (3U)
-#define DMA_HRS_HRS3(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_HRS_HRS3_SHIFT)) & DMA_HRS_HRS3_MASK)
-#define DMA_HRS_HRS4_MASK                        (0x10U)
-#define DMA_HRS_HRS4_SHIFT                       (4U)
-#define DMA_HRS_HRS4(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_HRS_HRS4_SHIFT)) & DMA_HRS_HRS4_MASK)
-#define DMA_HRS_HRS5_MASK                        (0x20U)
-#define DMA_HRS_HRS5_SHIFT                       (5U)
-#define DMA_HRS_HRS5(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_HRS_HRS5_SHIFT)) & DMA_HRS_HRS5_MASK)
-#define DMA_HRS_HRS6_MASK                        (0x40U)
-#define DMA_HRS_HRS6_SHIFT                       (6U)
-#define DMA_HRS_HRS6(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_HRS_HRS6_SHIFT)) & DMA_HRS_HRS6_MASK)
-#define DMA_HRS_HRS7_MASK                        (0x80U)
-#define DMA_HRS_HRS7_SHIFT                       (7U)
-#define DMA_HRS_HRS7(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_HRS_HRS7_SHIFT)) & DMA_HRS_HRS7_MASK)
-#define DMA_HRS_HRS8_MASK                        (0x100U)
-#define DMA_HRS_HRS8_SHIFT                       (8U)
-#define DMA_HRS_HRS8(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_HRS_HRS8_SHIFT)) & DMA_HRS_HRS8_MASK)
-#define DMA_HRS_HRS9_MASK                        (0x200U)
-#define DMA_HRS_HRS9_SHIFT                       (9U)
-#define DMA_HRS_HRS9(x)                          (((uint32_t)(((uint32_t)(x)) << DMA_HRS_HRS9_SHIFT)) & DMA_HRS_HRS9_MASK)
-#define DMA_HRS_HRS10_MASK                       (0x400U)
-#define DMA_HRS_HRS10_SHIFT                      (10U)
-#define DMA_HRS_HRS10(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_HRS_HRS10_SHIFT)) & DMA_HRS_HRS10_MASK)
-#define DMA_HRS_HRS11_MASK                       (0x800U)
-#define DMA_HRS_HRS11_SHIFT                      (11U)
-#define DMA_HRS_HRS11(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_HRS_HRS11_SHIFT)) & DMA_HRS_HRS11_MASK)
-#define DMA_HRS_HRS12_MASK                       (0x1000U)
-#define DMA_HRS_HRS12_SHIFT                      (12U)
-#define DMA_HRS_HRS12(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_HRS_HRS12_SHIFT)) & DMA_HRS_HRS12_MASK)
-#define DMA_HRS_HRS13_MASK                       (0x2000U)
-#define DMA_HRS_HRS13_SHIFT                      (13U)
-#define DMA_HRS_HRS13(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_HRS_HRS13_SHIFT)) & DMA_HRS_HRS13_MASK)
-#define DMA_HRS_HRS14_MASK                       (0x4000U)
-#define DMA_HRS_HRS14_SHIFT                      (14U)
-#define DMA_HRS_HRS14(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_HRS_HRS14_SHIFT)) & DMA_HRS_HRS14_MASK)
-#define DMA_HRS_HRS15_MASK                       (0x8000U)
-#define DMA_HRS_HRS15_SHIFT                      (15U)
-#define DMA_HRS_HRS15(x)                         (((uint32_t)(((uint32_t)(x)) << DMA_HRS_HRS15_SHIFT)) & DMA_HRS_HRS15_MASK)
-
-/*! @name DCHPRI3 - Channel n Priority Register */
-#define DMA_DCHPRI3_CHPRI_MASK                   (0xFU)
-#define DMA_DCHPRI3_CHPRI_SHIFT                  (0U)
-#define DMA_DCHPRI3_CHPRI(x)                     (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI3_CHPRI_SHIFT)) & DMA_DCHPRI3_CHPRI_MASK)
-#define DMA_DCHPRI3_DPA_MASK                     (0x40U)
-#define DMA_DCHPRI3_DPA_SHIFT                    (6U)
-#define DMA_DCHPRI3_DPA(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI3_DPA_SHIFT)) & DMA_DCHPRI3_DPA_MASK)
-#define DMA_DCHPRI3_ECP_MASK                     (0x80U)
-#define DMA_DCHPRI3_ECP_SHIFT                    (7U)
-#define DMA_DCHPRI3_ECP(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI3_ECP_SHIFT)) & DMA_DCHPRI3_ECP_MASK)
-
-/*! @name DCHPRI2 - Channel n Priority Register */
-#define DMA_DCHPRI2_CHPRI_MASK                   (0xFU)
-#define DMA_DCHPRI2_CHPRI_SHIFT                  (0U)
-#define DMA_DCHPRI2_CHPRI(x)                     (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI2_CHPRI_SHIFT)) & DMA_DCHPRI2_CHPRI_MASK)
-#define DMA_DCHPRI2_DPA_MASK                     (0x40U)
-#define DMA_DCHPRI2_DPA_SHIFT                    (6U)
-#define DMA_DCHPRI2_DPA(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI2_DPA_SHIFT)) & DMA_DCHPRI2_DPA_MASK)
-#define DMA_DCHPRI2_ECP_MASK                     (0x80U)
-#define DMA_DCHPRI2_ECP_SHIFT                    (7U)
-#define DMA_DCHPRI2_ECP(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI2_ECP_SHIFT)) & DMA_DCHPRI2_ECP_MASK)
-
-/*! @name DCHPRI1 - Channel n Priority Register */
-#define DMA_DCHPRI1_CHPRI_MASK                   (0xFU)
-#define DMA_DCHPRI1_CHPRI_SHIFT                  (0U)
-#define DMA_DCHPRI1_CHPRI(x)                     (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI1_CHPRI_SHIFT)) & DMA_DCHPRI1_CHPRI_MASK)
-#define DMA_DCHPRI1_DPA_MASK                     (0x40U)
-#define DMA_DCHPRI1_DPA_SHIFT                    (6U)
-#define DMA_DCHPRI1_DPA(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI1_DPA_SHIFT)) & DMA_DCHPRI1_DPA_MASK)
-#define DMA_DCHPRI1_ECP_MASK                     (0x80U)
-#define DMA_DCHPRI1_ECP_SHIFT                    (7U)
-#define DMA_DCHPRI1_ECP(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI1_ECP_SHIFT)) & DMA_DCHPRI1_ECP_MASK)
-
-/*! @name DCHPRI0 - Channel n Priority Register */
-#define DMA_DCHPRI0_CHPRI_MASK                   (0xFU)
-#define DMA_DCHPRI0_CHPRI_SHIFT                  (0U)
-#define DMA_DCHPRI0_CHPRI(x)                     (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI0_CHPRI_SHIFT)) & DMA_DCHPRI0_CHPRI_MASK)
-#define DMA_DCHPRI0_DPA_MASK                     (0x40U)
-#define DMA_DCHPRI0_DPA_SHIFT                    (6U)
-#define DMA_DCHPRI0_DPA(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI0_DPA_SHIFT)) & DMA_DCHPRI0_DPA_MASK)
-#define DMA_DCHPRI0_ECP_MASK                     (0x80U)
-#define DMA_DCHPRI0_ECP_SHIFT                    (7U)
-#define DMA_DCHPRI0_ECP(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI0_ECP_SHIFT)) & DMA_DCHPRI0_ECP_MASK)
-
-/*! @name DCHPRI7 - Channel n Priority Register */
-#define DMA_DCHPRI7_CHPRI_MASK                   (0xFU)
-#define DMA_DCHPRI7_CHPRI_SHIFT                  (0U)
-#define DMA_DCHPRI7_CHPRI(x)                     (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI7_CHPRI_SHIFT)) & DMA_DCHPRI7_CHPRI_MASK)
-#define DMA_DCHPRI7_DPA_MASK                     (0x40U)
-#define DMA_DCHPRI7_DPA_SHIFT                    (6U)
-#define DMA_DCHPRI7_DPA(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI7_DPA_SHIFT)) & DMA_DCHPRI7_DPA_MASK)
-#define DMA_DCHPRI7_ECP_MASK                     (0x80U)
-#define DMA_DCHPRI7_ECP_SHIFT                    (7U)
-#define DMA_DCHPRI7_ECP(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI7_ECP_SHIFT)) & DMA_DCHPRI7_ECP_MASK)
-
-/*! @name DCHPRI6 - Channel n Priority Register */
-#define DMA_DCHPRI6_CHPRI_MASK                   (0xFU)
-#define DMA_DCHPRI6_CHPRI_SHIFT                  (0U)
-#define DMA_DCHPRI6_CHPRI(x)                     (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI6_CHPRI_SHIFT)) & DMA_DCHPRI6_CHPRI_MASK)
-#define DMA_DCHPRI6_DPA_MASK                     (0x40U)
-#define DMA_DCHPRI6_DPA_SHIFT                    (6U)
-#define DMA_DCHPRI6_DPA(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI6_DPA_SHIFT)) & DMA_DCHPRI6_DPA_MASK)
-#define DMA_DCHPRI6_ECP_MASK                     (0x80U)
-#define DMA_DCHPRI6_ECP_SHIFT                    (7U)
-#define DMA_DCHPRI6_ECP(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI6_ECP_SHIFT)) & DMA_DCHPRI6_ECP_MASK)
-
-/*! @name DCHPRI5 - Channel n Priority Register */
-#define DMA_DCHPRI5_CHPRI_MASK                   (0xFU)
-#define DMA_DCHPRI5_CHPRI_SHIFT                  (0U)
-#define DMA_DCHPRI5_CHPRI(x)                     (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI5_CHPRI_SHIFT)) & DMA_DCHPRI5_CHPRI_MASK)
-#define DMA_DCHPRI5_DPA_MASK                     (0x40U)
-#define DMA_DCHPRI5_DPA_SHIFT                    (6U)
-#define DMA_DCHPRI5_DPA(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI5_DPA_SHIFT)) & DMA_DCHPRI5_DPA_MASK)
-#define DMA_DCHPRI5_ECP_MASK                     (0x80U)
-#define DMA_DCHPRI5_ECP_SHIFT                    (7U)
-#define DMA_DCHPRI5_ECP(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI5_ECP_SHIFT)) & DMA_DCHPRI5_ECP_MASK)
-
-/*! @name DCHPRI4 - Channel n Priority Register */
-#define DMA_DCHPRI4_CHPRI_MASK                   (0xFU)
-#define DMA_DCHPRI4_CHPRI_SHIFT                  (0U)
-#define DMA_DCHPRI4_CHPRI(x)                     (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI4_CHPRI_SHIFT)) & DMA_DCHPRI4_CHPRI_MASK)
-#define DMA_DCHPRI4_DPA_MASK                     (0x40U)
-#define DMA_DCHPRI4_DPA_SHIFT                    (6U)
-#define DMA_DCHPRI4_DPA(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI4_DPA_SHIFT)) & DMA_DCHPRI4_DPA_MASK)
-#define DMA_DCHPRI4_ECP_MASK                     (0x80U)
-#define DMA_DCHPRI4_ECP_SHIFT                    (7U)
-#define DMA_DCHPRI4_ECP(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI4_ECP_SHIFT)) & DMA_DCHPRI4_ECP_MASK)
-
-/*! @name DCHPRI11 - Channel n Priority Register */
-#define DMA_DCHPRI11_CHPRI_MASK                  (0xFU)
-#define DMA_DCHPRI11_CHPRI_SHIFT                 (0U)
-#define DMA_DCHPRI11_CHPRI(x)                    (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI11_CHPRI_SHIFT)) & DMA_DCHPRI11_CHPRI_MASK)
-#define DMA_DCHPRI11_DPA_MASK                    (0x40U)
-#define DMA_DCHPRI11_DPA_SHIFT                   (6U)
-#define DMA_DCHPRI11_DPA(x)                      (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI11_DPA_SHIFT)) & DMA_DCHPRI11_DPA_MASK)
-#define DMA_DCHPRI11_ECP_MASK                    (0x80U)
-#define DMA_DCHPRI11_ECP_SHIFT                   (7U)
-#define DMA_DCHPRI11_ECP(x)                      (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI11_ECP_SHIFT)) & DMA_DCHPRI11_ECP_MASK)
-
-/*! @name DCHPRI10 - Channel n Priority Register */
-#define DMA_DCHPRI10_CHPRI_MASK                  (0xFU)
-#define DMA_DCHPRI10_CHPRI_SHIFT                 (0U)
-#define DMA_DCHPRI10_CHPRI(x)                    (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI10_CHPRI_SHIFT)) & DMA_DCHPRI10_CHPRI_MASK)
-#define DMA_DCHPRI10_DPA_MASK                    (0x40U)
-#define DMA_DCHPRI10_DPA_SHIFT                   (6U)
-#define DMA_DCHPRI10_DPA(x)                      (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI10_DPA_SHIFT)) & DMA_DCHPRI10_DPA_MASK)
-#define DMA_DCHPRI10_ECP_MASK                    (0x80U)
-#define DMA_DCHPRI10_ECP_SHIFT                   (7U)
-#define DMA_DCHPRI10_ECP(x)                      (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI10_ECP_SHIFT)) & DMA_DCHPRI10_ECP_MASK)
-
-/*! @name DCHPRI9 - Channel n Priority Register */
-#define DMA_DCHPRI9_CHPRI_MASK                   (0xFU)
-#define DMA_DCHPRI9_CHPRI_SHIFT                  (0U)
-#define DMA_DCHPRI9_CHPRI(x)                     (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI9_CHPRI_SHIFT)) & DMA_DCHPRI9_CHPRI_MASK)
-#define DMA_DCHPRI9_DPA_MASK                     (0x40U)
-#define DMA_DCHPRI9_DPA_SHIFT                    (6U)
-#define DMA_DCHPRI9_DPA(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI9_DPA_SHIFT)) & DMA_DCHPRI9_DPA_MASK)
-#define DMA_DCHPRI9_ECP_MASK                     (0x80U)
-#define DMA_DCHPRI9_ECP_SHIFT                    (7U)
-#define DMA_DCHPRI9_ECP(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI9_ECP_SHIFT)) & DMA_DCHPRI9_ECP_MASK)
-
-/*! @name DCHPRI8 - Channel n Priority Register */
-#define DMA_DCHPRI8_CHPRI_MASK                   (0xFU)
-#define DMA_DCHPRI8_CHPRI_SHIFT                  (0U)
-#define DMA_DCHPRI8_CHPRI(x)                     (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI8_CHPRI_SHIFT)) & DMA_DCHPRI8_CHPRI_MASK)
-#define DMA_DCHPRI8_DPA_MASK                     (0x40U)
-#define DMA_DCHPRI8_DPA_SHIFT                    (6U)
-#define DMA_DCHPRI8_DPA(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI8_DPA_SHIFT)) & DMA_DCHPRI8_DPA_MASK)
-#define DMA_DCHPRI8_ECP_MASK                     (0x80U)
-#define DMA_DCHPRI8_ECP_SHIFT                    (7U)
-#define DMA_DCHPRI8_ECP(x)                       (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI8_ECP_SHIFT)) & DMA_DCHPRI8_ECP_MASK)
-
-/*! @name DCHPRI15 - Channel n Priority Register */
-#define DMA_DCHPRI15_CHPRI_MASK                  (0xFU)
-#define DMA_DCHPRI15_CHPRI_SHIFT                 (0U)
-#define DMA_DCHPRI15_CHPRI(x)                    (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI15_CHPRI_SHIFT)) & DMA_DCHPRI15_CHPRI_MASK)
-#define DMA_DCHPRI15_DPA_MASK                    (0x40U)
-#define DMA_DCHPRI15_DPA_SHIFT                   (6U)
-#define DMA_DCHPRI15_DPA(x)                      (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI15_DPA_SHIFT)) & DMA_DCHPRI15_DPA_MASK)
-#define DMA_DCHPRI15_ECP_MASK                    (0x80U)
-#define DMA_DCHPRI15_ECP_SHIFT                   (7U)
-#define DMA_DCHPRI15_ECP(x)                      (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI15_ECP_SHIFT)) & DMA_DCHPRI15_ECP_MASK)
-
-/*! @name DCHPRI14 - Channel n Priority Register */
-#define DMA_DCHPRI14_CHPRI_MASK                  (0xFU)
-#define DMA_DCHPRI14_CHPRI_SHIFT                 (0U)
-#define DMA_DCHPRI14_CHPRI(x)                    (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI14_CHPRI_SHIFT)) & DMA_DCHPRI14_CHPRI_MASK)
-#define DMA_DCHPRI14_DPA_MASK                    (0x40U)
-#define DMA_DCHPRI14_DPA_SHIFT                   (6U)
-#define DMA_DCHPRI14_DPA(x)                      (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI14_DPA_SHIFT)) & DMA_DCHPRI14_DPA_MASK)
-#define DMA_DCHPRI14_ECP_MASK                    (0x80U)
-#define DMA_DCHPRI14_ECP_SHIFT                   (7U)
-#define DMA_DCHPRI14_ECP(x)                      (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI14_ECP_SHIFT)) & DMA_DCHPRI14_ECP_MASK)
-
-/*! @name DCHPRI13 - Channel n Priority Register */
-#define DMA_DCHPRI13_CHPRI_MASK                  (0xFU)
-#define DMA_DCHPRI13_CHPRI_SHIFT                 (0U)
-#define DMA_DCHPRI13_CHPRI(x)                    (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI13_CHPRI_SHIFT)) & DMA_DCHPRI13_CHPRI_MASK)
-#define DMA_DCHPRI13_DPA_MASK                    (0x40U)
-#define DMA_DCHPRI13_DPA_SHIFT                   (6U)
-#define DMA_DCHPRI13_DPA(x)                      (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI13_DPA_SHIFT)) & DMA_DCHPRI13_DPA_MASK)
-#define DMA_DCHPRI13_ECP_MASK                    (0x80U)
-#define DMA_DCHPRI13_ECP_SHIFT                   (7U)
-#define DMA_DCHPRI13_ECP(x)                      (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI13_ECP_SHIFT)) & DMA_DCHPRI13_ECP_MASK)
-
-/*! @name DCHPRI12 - Channel n Priority Register */
-#define DMA_DCHPRI12_CHPRI_MASK                  (0xFU)
-#define DMA_DCHPRI12_CHPRI_SHIFT                 (0U)
-#define DMA_DCHPRI12_CHPRI(x)                    (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI12_CHPRI_SHIFT)) & DMA_DCHPRI12_CHPRI_MASK)
-#define DMA_DCHPRI12_DPA_MASK                    (0x40U)
-#define DMA_DCHPRI12_DPA_SHIFT                   (6U)
-#define DMA_DCHPRI12_DPA(x)                      (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI12_DPA_SHIFT)) & DMA_DCHPRI12_DPA_MASK)
-#define DMA_DCHPRI12_ECP_MASK                    (0x80U)
-#define DMA_DCHPRI12_ECP_SHIFT                   (7U)
-#define DMA_DCHPRI12_ECP(x)                      (((uint8_t)(((uint8_t)(x)) << DMA_DCHPRI12_ECP_SHIFT)) & DMA_DCHPRI12_ECP_MASK)
-
-/*! @name SADDR - TCD Source Address */
-#define DMA_SADDR_SADDR_MASK                     (0xFFFFFFFFU)
-#define DMA_SADDR_SADDR_SHIFT                    (0U)
-#define DMA_SADDR_SADDR(x)                       (((uint32_t)(((uint32_t)(x)) << DMA_SADDR_SADDR_SHIFT)) & DMA_SADDR_SADDR_MASK)
-
-/* The count of DMA_SADDR */
-#define DMA_SADDR_COUNT                          (16U)
-
-/*! @name SOFF - TCD Signed Source Address Offset */
-#define DMA_SOFF_SOFF_MASK                       (0xFFFFU)
-#define DMA_SOFF_SOFF_SHIFT                      (0U)
-#define DMA_SOFF_SOFF(x)                         (((uint16_t)(((uint16_t)(x)) << DMA_SOFF_SOFF_SHIFT)) & DMA_SOFF_SOFF_MASK)
-
-/* The count of DMA_SOFF */
-#define DMA_SOFF_COUNT                           (16U)
-
-/*! @name ATTR - TCD Transfer Attributes */
-#define DMA_ATTR_DSIZE_MASK                      (0x7U)
-#define DMA_ATTR_DSIZE_SHIFT                     (0U)
-#define DMA_ATTR_DSIZE(x)                        (((uint16_t)(((uint16_t)(x)) << DMA_ATTR_DSIZE_SHIFT)) & DMA_ATTR_DSIZE_MASK)
-#define DMA_ATTR_DMOD_MASK                       (0xF8U)
-#define DMA_ATTR_DMOD_SHIFT                      (3U)
-#define DMA_ATTR_DMOD(x)                         (((uint16_t)(((uint16_t)(x)) << DMA_ATTR_DMOD_SHIFT)) & DMA_ATTR_DMOD_MASK)
-#define DMA_ATTR_SSIZE_MASK                      (0x700U)
-#define DMA_ATTR_SSIZE_SHIFT                     (8U)
-#define DMA_ATTR_SSIZE(x)                        (((uint16_t)(((uint16_t)(x)) << DMA_ATTR_SSIZE_SHIFT)) & DMA_ATTR_SSIZE_MASK)
-#define DMA_ATTR_SMOD_MASK                       (0xF800U)
-#define DMA_ATTR_SMOD_SHIFT                      (11U)
-#define DMA_ATTR_SMOD(x)                         (((uint16_t)(((uint16_t)(x)) << DMA_ATTR_SMOD_SHIFT)) & DMA_ATTR_SMOD_MASK)
-
-/* The count of DMA_ATTR */
-#define DMA_ATTR_COUNT                           (16U)
-
-/*! @name NBYTES_MLNO - TCD Minor Byte Count (Minor Loop Disabled) */
-#define DMA_NBYTES_MLNO_NBYTES_MASK              (0xFFFFFFFFU)
-#define DMA_NBYTES_MLNO_NBYTES_SHIFT             (0U)
-#define DMA_NBYTES_MLNO_NBYTES(x)                (((uint32_t)(((uint32_t)(x)) << DMA_NBYTES_MLNO_NBYTES_SHIFT)) & DMA_NBYTES_MLNO_NBYTES_MASK)
-
-/* The count of DMA_NBYTES_MLNO */
-#define DMA_NBYTES_MLNO_COUNT                    (16U)
-
-/*! @name NBYTES_MLOFFNO - TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled) */
-#define DMA_NBYTES_MLOFFNO_NBYTES_MASK           (0x3FFFFFFFU)
-#define DMA_NBYTES_MLOFFNO_NBYTES_SHIFT          (0U)
-#define DMA_NBYTES_MLOFFNO_NBYTES(x)             (((uint32_t)(((uint32_t)(x)) << DMA_NBYTES_MLOFFNO_NBYTES_SHIFT)) & DMA_NBYTES_MLOFFNO_NBYTES_MASK)
-#define DMA_NBYTES_MLOFFNO_DMLOE_MASK            (0x40000000U)
-#define DMA_NBYTES_MLOFFNO_DMLOE_SHIFT           (30U)
-#define DMA_NBYTES_MLOFFNO_DMLOE(x)              (((uint32_t)(((uint32_t)(x)) << DMA_NBYTES_MLOFFNO_DMLOE_SHIFT)) & DMA_NBYTES_MLOFFNO_DMLOE_MASK)
-#define DMA_NBYTES_MLOFFNO_SMLOE_MASK            (0x80000000U)
-#define DMA_NBYTES_MLOFFNO_SMLOE_SHIFT           (31U)
-#define DMA_NBYTES_MLOFFNO_SMLOE(x)              (((uint32_t)(((uint32_t)(x)) << DMA_NBYTES_MLOFFNO_SMLOE_SHIFT)) & DMA_NBYTES_MLOFFNO_SMLOE_MASK)
-
-/* The count of DMA_NBYTES_MLOFFNO */
-#define DMA_NBYTES_MLOFFNO_COUNT                 (16U)
-
-/*! @name NBYTES_MLOFFYES - TCD Signed Minor Loop Offset (Minor Loop and Offset Enabled) */
-#define DMA_NBYTES_MLOFFYES_NBYTES_MASK          (0x3FFU)
-#define DMA_NBYTES_MLOFFYES_NBYTES_SHIFT         (0U)
-#define DMA_NBYTES_MLOFFYES_NBYTES(x)            (((uint32_t)(((uint32_t)(x)) << DMA_NBYTES_MLOFFYES_NBYTES_SHIFT)) & DMA_NBYTES_MLOFFYES_NBYTES_MASK)
-#define DMA_NBYTES_MLOFFYES_MLOFF_MASK           (0x3FFFFC00U)
-#define DMA_NBYTES_MLOFFYES_MLOFF_SHIFT          (10U)
-#define DMA_NBYTES_MLOFFYES_MLOFF(x)             (((uint32_t)(((uint32_t)(x)) << DMA_NBYTES_MLOFFYES_MLOFF_SHIFT)) & DMA_NBYTES_MLOFFYES_MLOFF_MASK)
-#define DMA_NBYTES_MLOFFYES_DMLOE_MASK           (0x40000000U)
-#define DMA_NBYTES_MLOFFYES_DMLOE_SHIFT          (30U)
-#define DMA_NBYTES_MLOFFYES_DMLOE(x)             (((uint32_t)(((uint32_t)(x)) << DMA_NBYTES_MLOFFYES_DMLOE_SHIFT)) & DMA_NBYTES_MLOFFYES_DMLOE_MASK)
-#define DMA_NBYTES_MLOFFYES_SMLOE_MASK           (0x80000000U)
-#define DMA_NBYTES_MLOFFYES_SMLOE_SHIFT          (31U)
-#define DMA_NBYTES_MLOFFYES_SMLOE(x)             (((uint32_t)(((uint32_t)(x)) << DMA_NBYTES_MLOFFYES_SMLOE_SHIFT)) & DMA_NBYTES_MLOFFYES_SMLOE_MASK)
-
-/* The count of DMA_NBYTES_MLOFFYES */
-#define DMA_NBYTES_MLOFFYES_COUNT                (16U)
-
-/*! @name SLAST - TCD Last Source Address Adjustment */
-#define DMA_SLAST_SLAST_MASK                     (0xFFFFFFFFU)
-#define DMA_SLAST_SLAST_SHIFT                    (0U)
-#define DMA_SLAST_SLAST(x)                       (((uint32_t)(((uint32_t)(x)) << DMA_SLAST_SLAST_SHIFT)) & DMA_SLAST_SLAST_MASK)
-
-/* The count of DMA_SLAST */
-#define DMA_SLAST_COUNT                          (16U)
-
-/*! @name DADDR - TCD Destination Address */
-#define DMA_DADDR_DADDR_MASK                     (0xFFFFFFFFU)
-#define DMA_DADDR_DADDR_SHIFT                    (0U)
-#define DMA_DADDR_DADDR(x)                       (((uint32_t)(((uint32_t)(x)) << DMA_DADDR_DADDR_SHIFT)) & DMA_DADDR_DADDR_MASK)
-
-/* The count of DMA_DADDR */
-#define DMA_DADDR_COUNT                          (16U)
-
-/*! @name DOFF - TCD Signed Destination Address Offset */
-#define DMA_DOFF_DOFF_MASK                       (0xFFFFU)
-#define DMA_DOFF_DOFF_SHIFT                      (0U)
-#define DMA_DOFF_DOFF(x)                         (((uint16_t)(((uint16_t)(x)) << DMA_DOFF_DOFF_SHIFT)) & DMA_DOFF_DOFF_MASK)
-
-/* The count of DMA_DOFF */
-#define DMA_DOFF_COUNT                           (16U)
-
-/*! @name CITER_ELINKNO - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled) */
-#define DMA_CITER_ELINKNO_CITER_MASK             (0x7FFFU)
-#define DMA_CITER_ELINKNO_CITER_SHIFT            (0U)
-#define DMA_CITER_ELINKNO_CITER(x)               (((uint16_t)(((uint16_t)(x)) << DMA_CITER_ELINKNO_CITER_SHIFT)) & DMA_CITER_ELINKNO_CITER_MASK)
-#define DMA_CITER_ELINKNO_ELINK_MASK             (0x8000U)
-#define DMA_CITER_ELINKNO_ELINK_SHIFT            (15U)
-#define DMA_CITER_ELINKNO_ELINK(x)               (((uint16_t)(((uint16_t)(x)) << DMA_CITER_ELINKNO_ELINK_SHIFT)) & DMA_CITER_ELINKNO_ELINK_MASK)
-
-/* The count of DMA_CITER_ELINKNO */
-#define DMA_CITER_ELINKNO_COUNT                  (16U)
-
-/*! @name CITER_ELINKYES - TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled) */
-#define DMA_CITER_ELINKYES_CITER_MASK            (0x1FFU)
-#define DMA_CITER_ELINKYES_CITER_SHIFT           (0U)
-#define DMA_CITER_ELINKYES_CITER(x)              (((uint16_t)(((uint16_t)(x)) << DMA_CITER_ELINKYES_CITER_SHIFT)) & DMA_CITER_ELINKYES_CITER_MASK)
-#define DMA_CITER_ELINKYES_LINKCH_MASK           (0x1E00U)
-#define DMA_CITER_ELINKYES_LINKCH_SHIFT          (9U)
-#define DMA_CITER_ELINKYES_LINKCH(x)             (((uint16_t)(((uint16_t)(x)) << DMA_CITER_ELINKYES_LINKCH_SHIFT)) & DMA_CITER_ELINKYES_LINKCH_MASK)
-#define DMA_CITER_ELINKYES_ELINK_MASK            (0x8000U)
-#define DMA_CITER_ELINKYES_ELINK_SHIFT           (15U)
-#define DMA_CITER_ELINKYES_ELINK(x)              (((uint16_t)(((uint16_t)(x)) << DMA_CITER_ELINKYES_ELINK_SHIFT)) & DMA_CITER_ELINKYES_ELINK_MASK)
-
-/* The count of DMA_CITER_ELINKYES */
-#define DMA_CITER_ELINKYES_COUNT                 (16U)
-
-/*! @name DLAST_SGA - TCD Last Destination Address Adjustment/Scatter Gather Address */
-#define DMA_DLAST_SGA_DLASTSGA_MASK              (0xFFFFFFFFU)
-#define DMA_DLAST_SGA_DLASTSGA_SHIFT             (0U)
-#define DMA_DLAST_SGA_DLASTSGA(x)                (((uint32_t)(((uint32_t)(x)) << DMA_DLAST_SGA_DLASTSGA_SHIFT)) & DMA_DLAST_SGA_DLASTSGA_MASK)
-
-/* The count of DMA_DLAST_SGA */
-#define DMA_DLAST_SGA_COUNT                      (16U)
-
-/*! @name CSR - TCD Control and Status */
-#define DMA_CSR_START_MASK                       (0x1U)
-#define DMA_CSR_START_SHIFT                      (0U)
-#define DMA_CSR_START(x)                         (((uint16_t)(((uint16_t)(x)) << DMA_CSR_START_SHIFT)) & DMA_CSR_START_MASK)
-#define DMA_CSR_INTMAJOR_MASK                    (0x2U)
-#define DMA_CSR_INTMAJOR_SHIFT                   (1U)
-#define DMA_CSR_INTMAJOR(x)                      (((uint16_t)(((uint16_t)(x)) << DMA_CSR_INTMAJOR_SHIFT)) & DMA_CSR_INTMAJOR_MASK)
-#define DMA_CSR_INTHALF_MASK                     (0x4U)
-#define DMA_CSR_INTHALF_SHIFT                    (2U)
-#define DMA_CSR_INTHALF(x)                       (((uint16_t)(((uint16_t)(x)) << DMA_CSR_INTHALF_SHIFT)) & DMA_CSR_INTHALF_MASK)
-#define DMA_CSR_DREQ_MASK                        (0x8U)
-#define DMA_CSR_DREQ_SHIFT                       (3U)
-#define DMA_CSR_DREQ(x)                          (((uint16_t)(((uint16_t)(x)) << DMA_CSR_DREQ_SHIFT)) & DMA_CSR_DREQ_MASK)
-#define DMA_CSR_ESG_MASK                         (0x10U)
-#define DMA_CSR_ESG_SHIFT                        (4U)
-#define DMA_CSR_ESG(x)                           (((uint16_t)(((uint16_t)(x)) << DMA_CSR_ESG_SHIFT)) & DMA_CSR_ESG_MASK)
-#define DMA_CSR_MAJORELINK_MASK                  (0x20U)
-#define DMA_CSR_MAJORELINK_SHIFT                 (5U)
-#define DMA_CSR_MAJORELINK(x)                    (((uint16_t)(((uint16_t)(x)) << DMA_CSR_MAJORELINK_SHIFT)) & DMA_CSR_MAJORELINK_MASK)
-#define DMA_CSR_ACTIVE_MASK                      (0x40U)
-#define DMA_CSR_ACTIVE_SHIFT                     (6U)
-#define DMA_CSR_ACTIVE(x)                        (((uint16_t)(((uint16_t)(x)) << DMA_CSR_ACTIVE_SHIFT)) & DMA_CSR_ACTIVE_MASK)
-#define DMA_CSR_DONE_MASK                        (0x80U)
-#define DMA_CSR_DONE_SHIFT                       (7U)
-#define DMA_CSR_DONE(x)                          (((uint16_t)(((uint16_t)(x)) << DMA_CSR_DONE_SHIFT)) & DMA_CSR_DONE_MASK)
-#define DMA_CSR_MAJORLINKCH_MASK                 (0xF00U)
-#define DMA_CSR_MAJORLINKCH_SHIFT                (8U)
-#define DMA_CSR_MAJORLINKCH(x)                   (((uint16_t)(((uint16_t)(x)) << DMA_CSR_MAJORLINKCH_SHIFT)) & DMA_CSR_MAJORLINKCH_MASK)
-#define DMA_CSR_BWC_MASK                         (0xC000U)
-#define DMA_CSR_BWC_SHIFT                        (14U)
-#define DMA_CSR_BWC(x)                           (((uint16_t)(((uint16_t)(x)) << DMA_CSR_BWC_SHIFT)) & DMA_CSR_BWC_MASK)
-
-/* The count of DMA_CSR */
-#define DMA_CSR_COUNT                            (16U)
-
-/*! @name BITER_ELINKNO - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled) */
-#define DMA_BITER_ELINKNO_BITER_MASK             (0x7FFFU)
-#define DMA_BITER_ELINKNO_BITER_SHIFT            (0U)
-#define DMA_BITER_ELINKNO_BITER(x)               (((uint16_t)(((uint16_t)(x)) << DMA_BITER_ELINKNO_BITER_SHIFT)) & DMA_BITER_ELINKNO_BITER_MASK)
-#define DMA_BITER_ELINKNO_ELINK_MASK             (0x8000U)
-#define DMA_BITER_ELINKNO_ELINK_SHIFT            (15U)
-#define DMA_BITER_ELINKNO_ELINK(x)               (((uint16_t)(((uint16_t)(x)) << DMA_BITER_ELINKNO_ELINK_SHIFT)) & DMA_BITER_ELINKNO_ELINK_MASK)
-
-/* The count of DMA_BITER_ELINKNO */
-#define DMA_BITER_ELINKNO_COUNT                  (16U)
-
-/*! @name BITER_ELINKYES - TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled) */
-#define DMA_BITER_ELINKYES_BITER_MASK            (0x1FFU)
-#define DMA_BITER_ELINKYES_BITER_SHIFT           (0U)
-#define DMA_BITER_ELINKYES_BITER(x)              (((uint16_t)(((uint16_t)(x)) << DMA_BITER_ELINKYES_BITER_SHIFT)) & DMA_BITER_ELINKYES_BITER_MASK)
-#define DMA_BITER_ELINKYES_LINKCH_MASK           (0x1E00U)
-#define DMA_BITER_ELINKYES_LINKCH_SHIFT          (9U)
-#define DMA_BITER_ELINKYES_LINKCH(x)             (((uint16_t)(((uint16_t)(x)) << DMA_BITER_ELINKYES_LINKCH_SHIFT)) & DMA_BITER_ELINKYES_LINKCH_MASK)
-#define DMA_BITER_ELINKYES_ELINK_MASK            (0x8000U)
-#define DMA_BITER_ELINKYES_ELINK_SHIFT           (15U)
-#define DMA_BITER_ELINKYES_ELINK(x)              (((uint16_t)(((uint16_t)(x)) << DMA_BITER_ELINKYES_ELINK_SHIFT)) & DMA_BITER_ELINKYES_ELINK_MASK)
-
-/* The count of DMA_BITER_ELINKYES */
-#define DMA_BITER_ELINKYES_COUNT                 (16U)
-
-
-/*!
- * @}
- */ /* end of group DMA_Register_Masks */
-
-
-/* DMA - Peripheral instance base addresses */
-/** Peripheral DMA base address */
-#define DMA_BASE                                 (0x40008000u)
-/** Peripheral DMA base pointer */
-#define DMA0                                     ((DMA_Type *)DMA_BASE)
-/** Array initializer of DMA peripheral base addresses */
-#define DMA_BASE_ADDRS                           { DMA_BASE }
-/** Array initializer of DMA peripheral base pointers */
-#define DMA_BASE_PTRS                            { DMA0 }
-/** Interrupt vectors for the DMA peripheral type */
-#define DMA_CHN_IRQS                             { DMA0_IRQn, DMA1_IRQn, DMA2_IRQn, DMA3_IRQn, DMA4_IRQn, DMA5_IRQn, DMA6_IRQn, DMA7_IRQn, DMA8_IRQn, DMA9_IRQn, DMA10_IRQn, DMA11_IRQn, DMA12_IRQn, DMA13_IRQn, DMA14_IRQn, DMA15_IRQn }
-#define DMA_ERROR_IRQS                           { DMA_Error_IRQn }
-
-/*!
- * @}
- */ /* end of group DMA_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- DMAMUX Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup DMAMUX_Peripheral_Access_Layer DMAMUX Peripheral Access Layer
- * @{
- */
-
-/** DMAMUX - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t CHCFG[16];                          /**< Channel Configuration register, array offset: 0x0, array step: 0x1 */
-} DMAMUX_Type;
-
-/* ----------------------------------------------------------------------------
-   -- DMAMUX Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup DMAMUX_Register_Masks DMAMUX Register Masks
- * @{
- */
-
-/*! @name CHCFG - Channel Configuration register */
-#define DMAMUX_CHCFG_SOURCE_MASK                 (0x3FU)
-#define DMAMUX_CHCFG_SOURCE_SHIFT                (0U)
-#define DMAMUX_CHCFG_SOURCE(x)                   (((uint8_t)(((uint8_t)(x)) << DMAMUX_CHCFG_SOURCE_SHIFT)) & DMAMUX_CHCFG_SOURCE_MASK)
-#define DMAMUX_CHCFG_TRIG_MASK                   (0x40U)
-#define DMAMUX_CHCFG_TRIG_SHIFT                  (6U)
-#define DMAMUX_CHCFG_TRIG(x)                     (((uint8_t)(((uint8_t)(x)) << DMAMUX_CHCFG_TRIG_SHIFT)) & DMAMUX_CHCFG_TRIG_MASK)
-#define DMAMUX_CHCFG_ENBL_MASK                   (0x80U)
-#define DMAMUX_CHCFG_ENBL_SHIFT                  (7U)
-#define DMAMUX_CHCFG_ENBL(x)                     (((uint8_t)(((uint8_t)(x)) << DMAMUX_CHCFG_ENBL_SHIFT)) & DMAMUX_CHCFG_ENBL_MASK)
-
-/* The count of DMAMUX_CHCFG */
-#define DMAMUX_CHCFG_COUNT                       (16U)
-
-
-/*!
- * @}
- */ /* end of group DMAMUX_Register_Masks */
-
-
-/* DMAMUX - Peripheral instance base addresses */
-/** Peripheral DMAMUX base address */
-#define DMAMUX_BASE                              (0x40021000u)
-/** Peripheral DMAMUX base pointer */
-#define DMAMUX                                   ((DMAMUX_Type *)DMAMUX_BASE)
-/** Array initializer of DMAMUX peripheral base addresses */
-#define DMAMUX_BASE_ADDRS                        { DMAMUX_BASE }
-/** Array initializer of DMAMUX peripheral base pointers */
-#define DMAMUX_BASE_PTRS                         { DMAMUX }
-
-/*!
- * @}
- */ /* end of group DMAMUX_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- ENET Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup ENET_Peripheral_Access_Layer ENET Peripheral Access Layer
- * @{
- */
-
-/** ENET - Register Layout Typedef */
-typedef struct {
-       uint8_t RESERVED_0[4];
-  __IO uint32_t EIR;                               /**< Interrupt Event Register, offset: 0x4 */
-  __IO uint32_t EIMR;                              /**< Interrupt Mask Register, offset: 0x8 */
-       uint8_t RESERVED_1[4];
-  __IO uint32_t RDAR;                              /**< Receive Descriptor Active Register, offset: 0x10 */
-  __IO uint32_t TDAR;                              /**< Transmit Descriptor Active Register, offset: 0x14 */
-       uint8_t RESERVED_2[12];
-  __IO uint32_t ECR;                               /**< Ethernet Control Register, offset: 0x24 */
-       uint8_t RESERVED_3[24];
-  __IO uint32_t MMFR;                              /**< MII Management Frame Register, offset: 0x40 */
-  __IO uint32_t MSCR;                              /**< MII Speed Control Register, offset: 0x44 */
-       uint8_t RESERVED_4[28];
-  __IO uint32_t MIBC;                              /**< MIB Control Register, offset: 0x64 */
-       uint8_t RESERVED_5[28];
-  __IO uint32_t RCR;                               /**< Receive Control Register, offset: 0x84 */
-       uint8_t RESERVED_6[60];
-  __IO uint32_t TCR;                               /**< Transmit Control Register, offset: 0xC4 */
-       uint8_t RESERVED_7[28];
-  __IO uint32_t PALR;                              /**< Physical Address Lower Register, offset: 0xE4 */
-  __IO uint32_t PAUR;                              /**< Physical Address Upper Register, offset: 0xE8 */
-  __IO uint32_t OPD;                               /**< Opcode/Pause Duration Register, offset: 0xEC */
-       uint8_t RESERVED_8[40];
-  __IO uint32_t IAUR;                              /**< Descriptor Individual Upper Address Register, offset: 0x118 */
-  __IO uint32_t IALR;                              /**< Descriptor Individual Lower Address Register, offset: 0x11C */
-  __IO uint32_t GAUR;                              /**< Descriptor Group Upper Address Register, offset: 0x120 */
-  __IO uint32_t GALR;                              /**< Descriptor Group Lower Address Register, offset: 0x124 */
-       uint8_t RESERVED_9[28];
-  __IO uint32_t TFWR;                              /**< Transmit FIFO Watermark Register, offset: 0x144 */
-       uint8_t RESERVED_10[56];
-  __IO uint32_t RDSR;                              /**< Receive Descriptor Ring Start Register, offset: 0x180 */
-  __IO uint32_t TDSR;                              /**< Transmit Buffer Descriptor Ring Start Register, offset: 0x184 */
-  __IO uint32_t MRBR;                              /**< Maximum Receive Buffer Size Register, offset: 0x188 */
-       uint8_t RESERVED_11[4];
-  __IO uint32_t RSFL;                              /**< Receive FIFO Section Full Threshold, offset: 0x190 */
-  __IO uint32_t RSEM;                              /**< Receive FIFO Section Empty Threshold, offset: 0x194 */
-  __IO uint32_t RAEM;                              /**< Receive FIFO Almost Empty Threshold, offset: 0x198 */
-  __IO uint32_t RAFL;                              /**< Receive FIFO Almost Full Threshold, offset: 0x19C */
-  __IO uint32_t TSEM;                              /**< Transmit FIFO Section Empty Threshold, offset: 0x1A0 */
-  __IO uint32_t TAEM;                              /**< Transmit FIFO Almost Empty Threshold, offset: 0x1A4 */
-  __IO uint32_t TAFL;                              /**< Transmit FIFO Almost Full Threshold, offset: 0x1A8 */
-  __IO uint32_t TIPG;                              /**< Transmit Inter-Packet Gap, offset: 0x1AC */
-  __IO uint32_t FTRL;                              /**< Frame Truncation Length, offset: 0x1B0 */
-       uint8_t RESERVED_12[12];
-  __IO uint32_t TACC;                              /**< Transmit Accelerator Function Configuration, offset: 0x1C0 */
-  __IO uint32_t RACC;                              /**< Receive Accelerator Function Configuration, offset: 0x1C4 */
-       uint8_t RESERVED_13[60];
-  __I  uint32_t RMON_T_PACKETS;                    /**< Tx Packet Count Statistic Register, offset: 0x204 */
-  __I  uint32_t RMON_T_BC_PKT;                     /**< Tx Broadcast Packets Statistic Register, offset: 0x208 */
-  __I  uint32_t RMON_T_MC_PKT;                     /**< Tx Multicast Packets Statistic Register, offset: 0x20C */
-  __I  uint32_t RMON_T_CRC_ALIGN;                  /**< Tx Packets with CRC/Align Error Statistic Register, offset: 0x210 */
-  __I  uint32_t RMON_T_UNDERSIZE;                  /**< Tx Packets Less Than Bytes and Good CRC Statistic Register, offset: 0x214 */
-  __I  uint32_t RMON_T_OVERSIZE;                   /**< Tx Packets GT MAX_FL bytes and Good CRC Statistic Register, offset: 0x218 */
-  __I  uint32_t RMON_T_FRAG;                       /**< Tx Packets Less Than 64 Bytes and Bad CRC Statistic Register, offset: 0x21C */
-  __I  uint32_t RMON_T_JAB;                        /**< Tx Packets Greater Than MAX_FL bytes and Bad CRC Statistic Register, offset: 0x220 */
-  __I  uint32_t RMON_T_COL;                        /**< Tx Collision Count Statistic Register, offset: 0x224 */
-  __I  uint32_t RMON_T_P64;                        /**< Tx 64-Byte Packets Statistic Register, offset: 0x228 */
-  __I  uint32_t RMON_T_P65TO127;                   /**< Tx 65- to 127-byte Packets Statistic Register, offset: 0x22C */
-  __I  uint32_t RMON_T_P128TO255;                  /**< Tx 128- to 255-byte Packets Statistic Register, offset: 0x230 */
-  __I  uint32_t RMON_T_P256TO511;                  /**< Tx 256- to 511-byte Packets Statistic Register, offset: 0x234 */
-  __I  uint32_t RMON_T_P512TO1023;                 /**< Tx 512- to 1023-byte Packets Statistic Register, offset: 0x238 */
-  __I  uint32_t RMON_T_P1024TO2047;                /**< Tx 1024- to 2047-byte Packets Statistic Register, offset: 0x23C */
-  __I  uint32_t RMON_T_P_GTE2048;                  /**< Tx Packets Greater Than 2048 Bytes Statistic Register, offset: 0x240 */
-  __I  uint32_t RMON_T_OCTETS;                     /**< Tx Octets Statistic Register, offset: 0x244 */
-       uint8_t RESERVED_14[4];
-  __I  uint32_t IEEE_T_FRAME_OK;                   /**< Frames Transmitted OK Statistic Register, offset: 0x24C */
-  __I  uint32_t IEEE_T_1COL;                       /**< Frames Transmitted with Single Collision Statistic Register, offset: 0x250 */
-  __I  uint32_t IEEE_T_MCOL;                       /**< Frames Transmitted with Multiple Collisions Statistic Register, offset: 0x254 */
-  __I  uint32_t IEEE_T_DEF;                        /**< Frames Transmitted after Deferral Delay Statistic Register, offset: 0x258 */
-  __I  uint32_t IEEE_T_LCOL;                       /**< Frames Transmitted with Late Collision Statistic Register, offset: 0x25C */
-  __I  uint32_t IEEE_T_EXCOL;                      /**< Frames Transmitted with Excessive Collisions Statistic Register, offset: 0x260 */
-  __I  uint32_t IEEE_T_MACERR;                     /**< Frames Transmitted with Tx FIFO Underrun Statistic Register, offset: 0x264 */
-  __I  uint32_t IEEE_T_CSERR;                      /**< Frames Transmitted with Carrier Sense Error Statistic Register, offset: 0x268 */
-       uint8_t RESERVED_15[4];
-  __I  uint32_t IEEE_T_FDXFC;                      /**< Flow Control Pause Frames Transmitted Statistic Register, offset: 0x270 */
-  __I  uint32_t IEEE_T_OCTETS_OK;                  /**< Octet Count for Frames Transmitted w/o Error Statistic Register, offset: 0x274 */
-       uint8_t RESERVED_16[12];
-  __I  uint32_t RMON_R_PACKETS;                    /**< Rx Packet Count Statistic Register, offset: 0x284 */
-  __I  uint32_t RMON_R_BC_PKT;                     /**< Rx Broadcast Packets Statistic Register, offset: 0x288 */
-  __I  uint32_t RMON_R_MC_PKT;                     /**< Rx Multicast Packets Statistic Register, offset: 0x28C */
-  __I  uint32_t RMON_R_CRC_ALIGN;                  /**< Rx Packets with CRC/Align Error Statistic Register, offset: 0x290 */
-  __I  uint32_t RMON_R_UNDERSIZE;                  /**< Rx Packets with Less Than 64 Bytes and Good CRC Statistic Register, offset: 0x294 */
-  __I  uint32_t RMON_R_OVERSIZE;                   /**< Rx Packets Greater Than MAX_FL and Good CRC Statistic Register, offset: 0x298 */
-  __I  uint32_t RMON_R_FRAG;                       /**< Rx Packets Less Than 64 Bytes and Bad CRC Statistic Register, offset: 0x29C */
-  __I  uint32_t RMON_R_JAB;                        /**< Rx Packets Greater Than MAX_FL Bytes and Bad CRC Statistic Register, offset: 0x2A0 */
-       uint8_t RESERVED_17[4];
-  __I  uint32_t RMON_R_P64;                        /**< Rx 64-Byte Packets Statistic Register, offset: 0x2A8 */
-  __I  uint32_t RMON_R_P65TO127;                   /**< Rx 65- to 127-Byte Packets Statistic Register, offset: 0x2AC */
-  __I  uint32_t RMON_R_P128TO255;                  /**< Rx 128- to 255-Byte Packets Statistic Register, offset: 0x2B0 */
-  __I  uint32_t RMON_R_P256TO511;                  /**< Rx 256- to 511-Byte Packets Statistic Register, offset: 0x2B4 */
-  __I  uint32_t RMON_R_P512TO1023;                 /**< Rx 512- to 1023-Byte Packets Statistic Register, offset: 0x2B8 */
-  __I  uint32_t RMON_R_P1024TO2047;                /**< Rx 1024- to 2047-Byte Packets Statistic Register, offset: 0x2BC */
-  __I  uint32_t RMON_R_P_GTE2048;                  /**< Rx Packets Greater than 2048 Bytes Statistic Register, offset: 0x2C0 */
-  __I  uint32_t RMON_R_OCTETS;                     /**< Rx Octets Statistic Register, offset: 0x2C4 */
-  __I  uint32_t IEEE_R_DROP;                       /**< Frames not Counted Correctly Statistic Register, offset: 0x2C8 */
-  __I  uint32_t IEEE_R_FRAME_OK;                   /**< Frames Received OK Statistic Register, offset: 0x2CC */
-  __I  uint32_t IEEE_R_CRC;                        /**< Frames Received with CRC Error Statistic Register, offset: 0x2D0 */
-  __I  uint32_t IEEE_R_ALIGN;                      /**< Frames Received with Alignment Error Statistic Register, offset: 0x2D4 */
-  __I  uint32_t IEEE_R_MACERR;                     /**< Receive FIFO Overflow Count Statistic Register, offset: 0x2D8 */
-  __I  uint32_t IEEE_R_FDXFC;                      /**< Flow Control Pause Frames Received Statistic Register, offset: 0x2DC */
-  __I  uint32_t IEEE_R_OCTETS_OK;                  /**< Octet Count for Frames Received without Error Statistic Register, offset: 0x2E0 */
-       uint8_t RESERVED_18[284];
-  __IO uint32_t ATCR;                              /**< Adjustable Timer Control Register, offset: 0x400 */
-  __IO uint32_t ATVR;                              /**< Timer Value Register, offset: 0x404 */
-  __IO uint32_t ATOFF;                             /**< Timer Offset Register, offset: 0x408 */
-  __IO uint32_t ATPER;                             /**< Timer Period Register, offset: 0x40C */
-  __IO uint32_t ATCOR;                             /**< Timer Correction Register, offset: 0x410 */
-  __IO uint32_t ATINC;                             /**< Time-Stamping Clock Period Register, offset: 0x414 */
-  __I  uint32_t ATSTMP;                            /**< Timestamp of Last Transmitted Frame, offset: 0x418 */
-       uint8_t RESERVED_19[488];
-  __IO uint32_t TGSR;                              /**< Timer Global Status Register, offset: 0x604 */
-  struct {                                         /* offset: 0x608, array step: 0x8 */
-    __IO uint32_t TCSR;                              /**< Timer Control Status Register, array offset: 0x608, array step: 0x8 */
-    __IO uint32_t TCCR;                              /**< Timer Compare Capture Register, array offset: 0x60C, array step: 0x8 */
-  } CHANNEL[4];
-} ENET_Type;
-
-/* ----------------------------------------------------------------------------
-   -- ENET Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup ENET_Register_Masks ENET Register Masks
- * @{
- */
-
-/*! @name EIR - Interrupt Event Register */
-#define ENET_EIR_TS_TIMER_MASK                   (0x8000U)
-#define ENET_EIR_TS_TIMER_SHIFT                  (15U)
-#define ENET_EIR_TS_TIMER(x)                     (((uint32_t)(((uint32_t)(x)) << ENET_EIR_TS_TIMER_SHIFT)) & ENET_EIR_TS_TIMER_MASK)
-#define ENET_EIR_TS_AVAIL_MASK                   (0x10000U)
-#define ENET_EIR_TS_AVAIL_SHIFT                  (16U)
-#define ENET_EIR_TS_AVAIL(x)                     (((uint32_t)(((uint32_t)(x)) << ENET_EIR_TS_AVAIL_SHIFT)) & ENET_EIR_TS_AVAIL_MASK)
-#define ENET_EIR_WAKEUP_MASK                     (0x20000U)
-#define ENET_EIR_WAKEUP_SHIFT                    (17U)
-#define ENET_EIR_WAKEUP(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_EIR_WAKEUP_SHIFT)) & ENET_EIR_WAKEUP_MASK)
-#define ENET_EIR_PLR_MASK                        (0x40000U)
-#define ENET_EIR_PLR_SHIFT                       (18U)
-#define ENET_EIR_PLR(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_EIR_PLR_SHIFT)) & ENET_EIR_PLR_MASK)
-#define ENET_EIR_UN_MASK                         (0x80000U)
-#define ENET_EIR_UN_SHIFT                        (19U)
-#define ENET_EIR_UN(x)                           (((uint32_t)(((uint32_t)(x)) << ENET_EIR_UN_SHIFT)) & ENET_EIR_UN_MASK)
-#define ENET_EIR_RL_MASK                         (0x100000U)
-#define ENET_EIR_RL_SHIFT                        (20U)
-#define ENET_EIR_RL(x)                           (((uint32_t)(((uint32_t)(x)) << ENET_EIR_RL_SHIFT)) & ENET_EIR_RL_MASK)
-#define ENET_EIR_LC_MASK                         (0x200000U)
-#define ENET_EIR_LC_SHIFT                        (21U)
-#define ENET_EIR_LC(x)                           (((uint32_t)(((uint32_t)(x)) << ENET_EIR_LC_SHIFT)) & ENET_EIR_LC_MASK)
-#define ENET_EIR_EBERR_MASK                      (0x400000U)
-#define ENET_EIR_EBERR_SHIFT                     (22U)
-#define ENET_EIR_EBERR(x)                        (((uint32_t)(((uint32_t)(x)) << ENET_EIR_EBERR_SHIFT)) & ENET_EIR_EBERR_MASK)
-#define ENET_EIR_MII_MASK                        (0x800000U)
-#define ENET_EIR_MII_SHIFT                       (23U)
-#define ENET_EIR_MII(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_EIR_MII_SHIFT)) & ENET_EIR_MII_MASK)
-#define ENET_EIR_RXB_MASK                        (0x1000000U)
-#define ENET_EIR_RXB_SHIFT                       (24U)
-#define ENET_EIR_RXB(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_EIR_RXB_SHIFT)) & ENET_EIR_RXB_MASK)
-#define ENET_EIR_RXF_MASK                        (0x2000000U)
-#define ENET_EIR_RXF_SHIFT                       (25U)
-#define ENET_EIR_RXF(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_EIR_RXF_SHIFT)) & ENET_EIR_RXF_MASK)
-#define ENET_EIR_TXB_MASK                        (0x4000000U)
-#define ENET_EIR_TXB_SHIFT                       (26U)
-#define ENET_EIR_TXB(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_EIR_TXB_SHIFT)) & ENET_EIR_TXB_MASK)
-#define ENET_EIR_TXF_MASK                        (0x8000000U)
-#define ENET_EIR_TXF_SHIFT                       (27U)
-#define ENET_EIR_TXF(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_EIR_TXF_SHIFT)) & ENET_EIR_TXF_MASK)
-#define ENET_EIR_GRA_MASK                        (0x10000000U)
-#define ENET_EIR_GRA_SHIFT                       (28U)
-#define ENET_EIR_GRA(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_EIR_GRA_SHIFT)) & ENET_EIR_GRA_MASK)
-#define ENET_EIR_BABT_MASK                       (0x20000000U)
-#define ENET_EIR_BABT_SHIFT                      (29U)
-#define ENET_EIR_BABT(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_EIR_BABT_SHIFT)) & ENET_EIR_BABT_MASK)
-#define ENET_EIR_BABR_MASK                       (0x40000000U)
-#define ENET_EIR_BABR_SHIFT                      (30U)
-#define ENET_EIR_BABR(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_EIR_BABR_SHIFT)) & ENET_EIR_BABR_MASK)
-
-/*! @name EIMR - Interrupt Mask Register */
-#define ENET_EIMR_TS_TIMER_MASK                  (0x8000U)
-#define ENET_EIMR_TS_TIMER_SHIFT                 (15U)
-#define ENET_EIMR_TS_TIMER(x)                    (((uint32_t)(((uint32_t)(x)) << ENET_EIMR_TS_TIMER_SHIFT)) & ENET_EIMR_TS_TIMER_MASK)
-#define ENET_EIMR_TS_AVAIL_MASK                  (0x10000U)
-#define ENET_EIMR_TS_AVAIL_SHIFT                 (16U)
-#define ENET_EIMR_TS_AVAIL(x)                    (((uint32_t)(((uint32_t)(x)) << ENET_EIMR_TS_AVAIL_SHIFT)) & ENET_EIMR_TS_AVAIL_MASK)
-#define ENET_EIMR_WAKEUP_MASK                    (0x20000U)
-#define ENET_EIMR_WAKEUP_SHIFT                   (17U)
-#define ENET_EIMR_WAKEUP(x)                      (((uint32_t)(((uint32_t)(x)) << ENET_EIMR_WAKEUP_SHIFT)) & ENET_EIMR_WAKEUP_MASK)
-#define ENET_EIMR_PLR_MASK                       (0x40000U)
-#define ENET_EIMR_PLR_SHIFT                      (18U)
-#define ENET_EIMR_PLR(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_EIMR_PLR_SHIFT)) & ENET_EIMR_PLR_MASK)
-#define ENET_EIMR_UN_MASK                        (0x80000U)
-#define ENET_EIMR_UN_SHIFT                       (19U)
-#define ENET_EIMR_UN(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_EIMR_UN_SHIFT)) & ENET_EIMR_UN_MASK)
-#define ENET_EIMR_RL_MASK                        (0x100000U)
-#define ENET_EIMR_RL_SHIFT                       (20U)
-#define ENET_EIMR_RL(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_EIMR_RL_SHIFT)) & ENET_EIMR_RL_MASK)
-#define ENET_EIMR_LC_MASK                        (0x200000U)
-#define ENET_EIMR_LC_SHIFT                       (21U)
-#define ENET_EIMR_LC(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_EIMR_LC_SHIFT)) & ENET_EIMR_LC_MASK)
-#define ENET_EIMR_EBERR_MASK                     (0x400000U)
-#define ENET_EIMR_EBERR_SHIFT                    (22U)
-#define ENET_EIMR_EBERR(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_EIMR_EBERR_SHIFT)) & ENET_EIMR_EBERR_MASK)
-#define ENET_EIMR_MII_MASK                       (0x800000U)
-#define ENET_EIMR_MII_SHIFT                      (23U)
-#define ENET_EIMR_MII(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_EIMR_MII_SHIFT)) & ENET_EIMR_MII_MASK)
-#define ENET_EIMR_RXB_MASK                       (0x1000000U)
-#define ENET_EIMR_RXB_SHIFT                      (24U)
-#define ENET_EIMR_RXB(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_EIMR_RXB_SHIFT)) & ENET_EIMR_RXB_MASK)
-#define ENET_EIMR_RXF_MASK                       (0x2000000U)
-#define ENET_EIMR_RXF_SHIFT                      (25U)
-#define ENET_EIMR_RXF(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_EIMR_RXF_SHIFT)) & ENET_EIMR_RXF_MASK)
-#define ENET_EIMR_TXB_MASK                       (0x4000000U)
-#define ENET_EIMR_TXB_SHIFT                      (26U)
-#define ENET_EIMR_TXB(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_EIMR_TXB_SHIFT)) & ENET_EIMR_TXB_MASK)
-#define ENET_EIMR_TXF_MASK                       (0x8000000U)
-#define ENET_EIMR_TXF_SHIFT                      (27U)
-#define ENET_EIMR_TXF(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_EIMR_TXF_SHIFT)) & ENET_EIMR_TXF_MASK)
-#define ENET_EIMR_GRA_MASK                       (0x10000000U)
-#define ENET_EIMR_GRA_SHIFT                      (28U)
-#define ENET_EIMR_GRA(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_EIMR_GRA_SHIFT)) & ENET_EIMR_GRA_MASK)
-#define ENET_EIMR_BABT_MASK                      (0x20000000U)
-#define ENET_EIMR_BABT_SHIFT                     (29U)
-#define ENET_EIMR_BABT(x)                        (((uint32_t)(((uint32_t)(x)) << ENET_EIMR_BABT_SHIFT)) & ENET_EIMR_BABT_MASK)
-#define ENET_EIMR_BABR_MASK                      (0x40000000U)
-#define ENET_EIMR_BABR_SHIFT                     (30U)
-#define ENET_EIMR_BABR(x)                        (((uint32_t)(((uint32_t)(x)) << ENET_EIMR_BABR_SHIFT)) & ENET_EIMR_BABR_MASK)
-
-/*! @name RDAR - Receive Descriptor Active Register */
-#define ENET_RDAR_RDAR_MASK                      (0x1000000U)
-#define ENET_RDAR_RDAR_SHIFT                     (24U)
-#define ENET_RDAR_RDAR(x)                        (((uint32_t)(((uint32_t)(x)) << ENET_RDAR_RDAR_SHIFT)) & ENET_RDAR_RDAR_MASK)
-
-/*! @name TDAR - Transmit Descriptor Active Register */
-#define ENET_TDAR_TDAR_MASK                      (0x1000000U)
-#define ENET_TDAR_TDAR_SHIFT                     (24U)
-#define ENET_TDAR_TDAR(x)                        (((uint32_t)(((uint32_t)(x)) << ENET_TDAR_TDAR_SHIFT)) & ENET_TDAR_TDAR_MASK)
-
-/*! @name ECR - Ethernet Control Register */
-#define ENET_ECR_RESET_MASK                      (0x1U)
-#define ENET_ECR_RESET_SHIFT                     (0U)
-#define ENET_ECR_RESET(x)                        (((uint32_t)(((uint32_t)(x)) << ENET_ECR_RESET_SHIFT)) & ENET_ECR_RESET_MASK)
-#define ENET_ECR_ETHEREN_MASK                    (0x2U)
-#define ENET_ECR_ETHEREN_SHIFT                   (1U)
-#define ENET_ECR_ETHEREN(x)                      (((uint32_t)(((uint32_t)(x)) << ENET_ECR_ETHEREN_SHIFT)) & ENET_ECR_ETHEREN_MASK)
-#define ENET_ECR_MAGICEN_MASK                    (0x4U)
-#define ENET_ECR_MAGICEN_SHIFT                   (2U)
-#define ENET_ECR_MAGICEN(x)                      (((uint32_t)(((uint32_t)(x)) << ENET_ECR_MAGICEN_SHIFT)) & ENET_ECR_MAGICEN_MASK)
-#define ENET_ECR_SLEEP_MASK                      (0x8U)
-#define ENET_ECR_SLEEP_SHIFT                     (3U)
-#define ENET_ECR_SLEEP(x)                        (((uint32_t)(((uint32_t)(x)) << ENET_ECR_SLEEP_SHIFT)) & ENET_ECR_SLEEP_MASK)
-#define ENET_ECR_EN1588_MASK                     (0x10U)
-#define ENET_ECR_EN1588_SHIFT                    (4U)
-#define ENET_ECR_EN1588(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_ECR_EN1588_SHIFT)) & ENET_ECR_EN1588_MASK)
-#define ENET_ECR_DBGEN_MASK                      (0x40U)
-#define ENET_ECR_DBGEN_SHIFT                     (6U)
-#define ENET_ECR_DBGEN(x)                        (((uint32_t)(((uint32_t)(x)) << ENET_ECR_DBGEN_SHIFT)) & ENET_ECR_DBGEN_MASK)
-#define ENET_ECR_STOPEN_MASK                     (0x80U)
-#define ENET_ECR_STOPEN_SHIFT                    (7U)
-#define ENET_ECR_STOPEN(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_ECR_STOPEN_SHIFT)) & ENET_ECR_STOPEN_MASK)
-#define ENET_ECR_DBSWP_MASK                      (0x100U)
-#define ENET_ECR_DBSWP_SHIFT                     (8U)
-#define ENET_ECR_DBSWP(x)                        (((uint32_t)(((uint32_t)(x)) << ENET_ECR_DBSWP_SHIFT)) & ENET_ECR_DBSWP_MASK)
-
-/*! @name MMFR - MII Management Frame Register */
-#define ENET_MMFR_DATA_MASK                      (0xFFFFU)
-#define ENET_MMFR_DATA_SHIFT                     (0U)
-#define ENET_MMFR_DATA(x)                        (((uint32_t)(((uint32_t)(x)) << ENET_MMFR_DATA_SHIFT)) & ENET_MMFR_DATA_MASK)
-#define ENET_MMFR_TA_MASK                        (0x30000U)
-#define ENET_MMFR_TA_SHIFT                       (16U)
-#define ENET_MMFR_TA(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_MMFR_TA_SHIFT)) & ENET_MMFR_TA_MASK)
-#define ENET_MMFR_RA_MASK                        (0x7C0000U)
-#define ENET_MMFR_RA_SHIFT                       (18U)
-#define ENET_MMFR_RA(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_MMFR_RA_SHIFT)) & ENET_MMFR_RA_MASK)
-#define ENET_MMFR_PA_MASK                        (0xF800000U)
-#define ENET_MMFR_PA_SHIFT                       (23U)
-#define ENET_MMFR_PA(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_MMFR_PA_SHIFT)) & ENET_MMFR_PA_MASK)
-#define ENET_MMFR_OP_MASK                        (0x30000000U)
-#define ENET_MMFR_OP_SHIFT                       (28U)
-#define ENET_MMFR_OP(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_MMFR_OP_SHIFT)) & ENET_MMFR_OP_MASK)
-#define ENET_MMFR_ST_MASK                        (0xC0000000U)
-#define ENET_MMFR_ST_SHIFT                       (30U)
-#define ENET_MMFR_ST(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_MMFR_ST_SHIFT)) & ENET_MMFR_ST_MASK)
-
-/*! @name MSCR - MII Speed Control Register */
-#define ENET_MSCR_MII_SPEED_MASK                 (0x7EU)
-#define ENET_MSCR_MII_SPEED_SHIFT                (1U)
-#define ENET_MSCR_MII_SPEED(x)                   (((uint32_t)(((uint32_t)(x)) << ENET_MSCR_MII_SPEED_SHIFT)) & ENET_MSCR_MII_SPEED_MASK)
-#define ENET_MSCR_DIS_PRE_MASK                   (0x80U)
-#define ENET_MSCR_DIS_PRE_SHIFT                  (7U)
-#define ENET_MSCR_DIS_PRE(x)                     (((uint32_t)(((uint32_t)(x)) << ENET_MSCR_DIS_PRE_SHIFT)) & ENET_MSCR_DIS_PRE_MASK)
-#define ENET_MSCR_HOLDTIME_MASK                  (0x700U)
-#define ENET_MSCR_HOLDTIME_SHIFT                 (8U)
-#define ENET_MSCR_HOLDTIME(x)                    (((uint32_t)(((uint32_t)(x)) << ENET_MSCR_HOLDTIME_SHIFT)) & ENET_MSCR_HOLDTIME_MASK)
-
-/*! @name MIBC - MIB Control Register */
-#define ENET_MIBC_MIB_CLEAR_MASK                 (0x20000000U)
-#define ENET_MIBC_MIB_CLEAR_SHIFT                (29U)
-#define ENET_MIBC_MIB_CLEAR(x)                   (((uint32_t)(((uint32_t)(x)) << ENET_MIBC_MIB_CLEAR_SHIFT)) & ENET_MIBC_MIB_CLEAR_MASK)
-#define ENET_MIBC_MIB_IDLE_MASK                  (0x40000000U)
-#define ENET_MIBC_MIB_IDLE_SHIFT                 (30U)
-#define ENET_MIBC_MIB_IDLE(x)                    (((uint32_t)(((uint32_t)(x)) << ENET_MIBC_MIB_IDLE_SHIFT)) & ENET_MIBC_MIB_IDLE_MASK)
-#define ENET_MIBC_MIB_DIS_MASK                   (0x80000000U)
-#define ENET_MIBC_MIB_DIS_SHIFT                  (31U)
-#define ENET_MIBC_MIB_DIS(x)                     (((uint32_t)(((uint32_t)(x)) << ENET_MIBC_MIB_DIS_SHIFT)) & ENET_MIBC_MIB_DIS_MASK)
-
-/*! @name RCR - Receive Control Register */
-#define ENET_RCR_LOOP_MASK                       (0x1U)
-#define ENET_RCR_LOOP_SHIFT                      (0U)
-#define ENET_RCR_LOOP(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_RCR_LOOP_SHIFT)) & ENET_RCR_LOOP_MASK)
-#define ENET_RCR_DRT_MASK                        (0x2U)
-#define ENET_RCR_DRT_SHIFT                       (1U)
-#define ENET_RCR_DRT(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_RCR_DRT_SHIFT)) & ENET_RCR_DRT_MASK)
-#define ENET_RCR_MII_MODE_MASK                   (0x4U)
-#define ENET_RCR_MII_MODE_SHIFT                  (2U)
-#define ENET_RCR_MII_MODE(x)                     (((uint32_t)(((uint32_t)(x)) << ENET_RCR_MII_MODE_SHIFT)) & ENET_RCR_MII_MODE_MASK)
-#define ENET_RCR_PROM_MASK                       (0x8U)
-#define ENET_RCR_PROM_SHIFT                      (3U)
-#define ENET_RCR_PROM(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_RCR_PROM_SHIFT)) & ENET_RCR_PROM_MASK)
-#define ENET_RCR_BC_REJ_MASK                     (0x10U)
-#define ENET_RCR_BC_REJ_SHIFT                    (4U)
-#define ENET_RCR_BC_REJ(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_RCR_BC_REJ_SHIFT)) & ENET_RCR_BC_REJ_MASK)
-#define ENET_RCR_FCE_MASK                        (0x20U)
-#define ENET_RCR_FCE_SHIFT                       (5U)
-#define ENET_RCR_FCE(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_RCR_FCE_SHIFT)) & ENET_RCR_FCE_MASK)
-#define ENET_RCR_RMII_MODE_MASK                  (0x100U)
-#define ENET_RCR_RMII_MODE_SHIFT                 (8U)
-#define ENET_RCR_RMII_MODE(x)                    (((uint32_t)(((uint32_t)(x)) << ENET_RCR_RMII_MODE_SHIFT)) & ENET_RCR_RMII_MODE_MASK)
-#define ENET_RCR_RMII_10T_MASK                   (0x200U)
-#define ENET_RCR_RMII_10T_SHIFT                  (9U)
-#define ENET_RCR_RMII_10T(x)                     (((uint32_t)(((uint32_t)(x)) << ENET_RCR_RMII_10T_SHIFT)) & ENET_RCR_RMII_10T_MASK)
-#define ENET_RCR_PADEN_MASK                      (0x1000U)
-#define ENET_RCR_PADEN_SHIFT                     (12U)
-#define ENET_RCR_PADEN(x)                        (((uint32_t)(((uint32_t)(x)) << ENET_RCR_PADEN_SHIFT)) & ENET_RCR_PADEN_MASK)
-#define ENET_RCR_PAUFWD_MASK                     (0x2000U)
-#define ENET_RCR_PAUFWD_SHIFT                    (13U)
-#define ENET_RCR_PAUFWD(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_RCR_PAUFWD_SHIFT)) & ENET_RCR_PAUFWD_MASK)
-#define ENET_RCR_CRCFWD_MASK                     (0x4000U)
-#define ENET_RCR_CRCFWD_SHIFT                    (14U)
-#define ENET_RCR_CRCFWD(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_RCR_CRCFWD_SHIFT)) & ENET_RCR_CRCFWD_MASK)
-#define ENET_RCR_CFEN_MASK                       (0x8000U)
-#define ENET_RCR_CFEN_SHIFT                      (15U)
-#define ENET_RCR_CFEN(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_RCR_CFEN_SHIFT)) & ENET_RCR_CFEN_MASK)
-#define ENET_RCR_MAX_FL_MASK                     (0x3FFF0000U)
-#define ENET_RCR_MAX_FL_SHIFT                    (16U)
-#define ENET_RCR_MAX_FL(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_RCR_MAX_FL_SHIFT)) & ENET_RCR_MAX_FL_MASK)
-#define ENET_RCR_NLC_MASK                        (0x40000000U)
-#define ENET_RCR_NLC_SHIFT                       (30U)
-#define ENET_RCR_NLC(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_RCR_NLC_SHIFT)) & ENET_RCR_NLC_MASK)
-#define ENET_RCR_GRS_MASK                        (0x80000000U)
-#define ENET_RCR_GRS_SHIFT                       (31U)
-#define ENET_RCR_GRS(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_RCR_GRS_SHIFT)) & ENET_RCR_GRS_MASK)
-
-/*! @name TCR - Transmit Control Register */
-#define ENET_TCR_GTS_MASK                        (0x1U)
-#define ENET_TCR_GTS_SHIFT                       (0U)
-#define ENET_TCR_GTS(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_TCR_GTS_SHIFT)) & ENET_TCR_GTS_MASK)
-#define ENET_TCR_FDEN_MASK                       (0x4U)
-#define ENET_TCR_FDEN_SHIFT                      (2U)
-#define ENET_TCR_FDEN(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_TCR_FDEN_SHIFT)) & ENET_TCR_FDEN_MASK)
-#define ENET_TCR_TFC_PAUSE_MASK                  (0x8U)
-#define ENET_TCR_TFC_PAUSE_SHIFT                 (3U)
-#define ENET_TCR_TFC_PAUSE(x)                    (((uint32_t)(((uint32_t)(x)) << ENET_TCR_TFC_PAUSE_SHIFT)) & ENET_TCR_TFC_PAUSE_MASK)
-#define ENET_TCR_RFC_PAUSE_MASK                  (0x10U)
-#define ENET_TCR_RFC_PAUSE_SHIFT                 (4U)
-#define ENET_TCR_RFC_PAUSE(x)                    (((uint32_t)(((uint32_t)(x)) << ENET_TCR_RFC_PAUSE_SHIFT)) & ENET_TCR_RFC_PAUSE_MASK)
-#define ENET_TCR_ADDSEL_MASK                     (0xE0U)
-#define ENET_TCR_ADDSEL_SHIFT                    (5U)
-#define ENET_TCR_ADDSEL(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_TCR_ADDSEL_SHIFT)) & ENET_TCR_ADDSEL_MASK)
-#define ENET_TCR_ADDINS_MASK                     (0x100U)
-#define ENET_TCR_ADDINS_SHIFT                    (8U)
-#define ENET_TCR_ADDINS(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_TCR_ADDINS_SHIFT)) & ENET_TCR_ADDINS_MASK)
-#define ENET_TCR_CRCFWD_MASK                     (0x200U)
-#define ENET_TCR_CRCFWD_SHIFT                    (9U)
-#define ENET_TCR_CRCFWD(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_TCR_CRCFWD_SHIFT)) & ENET_TCR_CRCFWD_MASK)
-
-/*! @name PALR - Physical Address Lower Register */
-#define ENET_PALR_PADDR1_MASK                    (0xFFFFFFFFU)
-#define ENET_PALR_PADDR1_SHIFT                   (0U)
-#define ENET_PALR_PADDR1(x)                      (((uint32_t)(((uint32_t)(x)) << ENET_PALR_PADDR1_SHIFT)) & ENET_PALR_PADDR1_MASK)
-
-/*! @name PAUR - Physical Address Upper Register */
-#define ENET_PAUR_TYPE_MASK                      (0xFFFFU)
-#define ENET_PAUR_TYPE_SHIFT                     (0U)
-#define ENET_PAUR_TYPE(x)                        (((uint32_t)(((uint32_t)(x)) << ENET_PAUR_TYPE_SHIFT)) & ENET_PAUR_TYPE_MASK)
-#define ENET_PAUR_PADDR2_MASK                    (0xFFFF0000U)
-#define ENET_PAUR_PADDR2_SHIFT                   (16U)
-#define ENET_PAUR_PADDR2(x)                      (((uint32_t)(((uint32_t)(x)) << ENET_PAUR_PADDR2_SHIFT)) & ENET_PAUR_PADDR2_MASK)
-
-/*! @name OPD - Opcode/Pause Duration Register */
-#define ENET_OPD_PAUSE_DUR_MASK                  (0xFFFFU)
-#define ENET_OPD_PAUSE_DUR_SHIFT                 (0U)
-#define ENET_OPD_PAUSE_DUR(x)                    (((uint32_t)(((uint32_t)(x)) << ENET_OPD_PAUSE_DUR_SHIFT)) & ENET_OPD_PAUSE_DUR_MASK)
-#define ENET_OPD_OPCODE_MASK                     (0xFFFF0000U)
-#define ENET_OPD_OPCODE_SHIFT                    (16U)
-#define ENET_OPD_OPCODE(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_OPD_OPCODE_SHIFT)) & ENET_OPD_OPCODE_MASK)
-
-/*! @name IAUR - Descriptor Individual Upper Address Register */
-#define ENET_IAUR_IADDR1_MASK                    (0xFFFFFFFFU)
-#define ENET_IAUR_IADDR1_SHIFT                   (0U)
-#define ENET_IAUR_IADDR1(x)                      (((uint32_t)(((uint32_t)(x)) << ENET_IAUR_IADDR1_SHIFT)) & ENET_IAUR_IADDR1_MASK)
-
-/*! @name IALR - Descriptor Individual Lower Address Register */
-#define ENET_IALR_IADDR2_MASK                    (0xFFFFFFFFU)
-#define ENET_IALR_IADDR2_SHIFT                   (0U)
-#define ENET_IALR_IADDR2(x)                      (((uint32_t)(((uint32_t)(x)) << ENET_IALR_IADDR2_SHIFT)) & ENET_IALR_IADDR2_MASK)
-
-/*! @name GAUR - Descriptor Group Upper Address Register */
-#define ENET_GAUR_GADDR1_MASK                    (0xFFFFFFFFU)
-#define ENET_GAUR_GADDR1_SHIFT                   (0U)
-#define ENET_GAUR_GADDR1(x)                      (((uint32_t)(((uint32_t)(x)) << ENET_GAUR_GADDR1_SHIFT)) & ENET_GAUR_GADDR1_MASK)
-
-/*! @name GALR - Descriptor Group Lower Address Register */
-#define ENET_GALR_GADDR2_MASK                    (0xFFFFFFFFU)
-#define ENET_GALR_GADDR2_SHIFT                   (0U)
-#define ENET_GALR_GADDR2(x)                      (((uint32_t)(((uint32_t)(x)) << ENET_GALR_GADDR2_SHIFT)) & ENET_GALR_GADDR2_MASK)
-
-/*! @name TFWR - Transmit FIFO Watermark Register */
-#define ENET_TFWR_TFWR_MASK                      (0x3FU)
-#define ENET_TFWR_TFWR_SHIFT                     (0U)
-#define ENET_TFWR_TFWR(x)                        (((uint32_t)(((uint32_t)(x)) << ENET_TFWR_TFWR_SHIFT)) & ENET_TFWR_TFWR_MASK)
-#define ENET_TFWR_STRFWD_MASK                    (0x100U)
-#define ENET_TFWR_STRFWD_SHIFT                   (8U)
-#define ENET_TFWR_STRFWD(x)                      (((uint32_t)(((uint32_t)(x)) << ENET_TFWR_STRFWD_SHIFT)) & ENET_TFWR_STRFWD_MASK)
-
-/*! @name RDSR - Receive Descriptor Ring Start Register */
-#define ENET_RDSR_R_DES_START_MASK               (0xFFFFFFF8U)
-#define ENET_RDSR_R_DES_START_SHIFT              (3U)
-#define ENET_RDSR_R_DES_START(x)                 (((uint32_t)(((uint32_t)(x)) << ENET_RDSR_R_DES_START_SHIFT)) & ENET_RDSR_R_DES_START_MASK)
-
-/*! @name TDSR - Transmit Buffer Descriptor Ring Start Register */
-#define ENET_TDSR_X_DES_START_MASK               (0xFFFFFFF8U)
-#define ENET_TDSR_X_DES_START_SHIFT              (3U)
-#define ENET_TDSR_X_DES_START(x)                 (((uint32_t)(((uint32_t)(x)) << ENET_TDSR_X_DES_START_SHIFT)) & ENET_TDSR_X_DES_START_MASK)
-
-/*! @name MRBR - Maximum Receive Buffer Size Register */
-#define ENET_MRBR_R_BUF_SIZE_MASK                (0x3FF0U)
-#define ENET_MRBR_R_BUF_SIZE_SHIFT               (4U)
-#define ENET_MRBR_R_BUF_SIZE(x)                  (((uint32_t)(((uint32_t)(x)) << ENET_MRBR_R_BUF_SIZE_SHIFT)) & ENET_MRBR_R_BUF_SIZE_MASK)
-
-/*! @name RSFL - Receive FIFO Section Full Threshold */
-#define ENET_RSFL_RX_SECTION_FULL_MASK           (0xFFU)
-#define ENET_RSFL_RX_SECTION_FULL_SHIFT          (0U)
-#define ENET_RSFL_RX_SECTION_FULL(x)             (((uint32_t)(((uint32_t)(x)) << ENET_RSFL_RX_SECTION_FULL_SHIFT)) & ENET_RSFL_RX_SECTION_FULL_MASK)
-
-/*! @name RSEM - Receive FIFO Section Empty Threshold */
-#define ENET_RSEM_RX_SECTION_EMPTY_MASK          (0xFFU)
-#define ENET_RSEM_RX_SECTION_EMPTY_SHIFT         (0U)
-#define ENET_RSEM_RX_SECTION_EMPTY(x)            (((uint32_t)(((uint32_t)(x)) << ENET_RSEM_RX_SECTION_EMPTY_SHIFT)) & ENET_RSEM_RX_SECTION_EMPTY_MASK)
-#define ENET_RSEM_STAT_SECTION_EMPTY_MASK        (0x1F0000U)
-#define ENET_RSEM_STAT_SECTION_EMPTY_SHIFT       (16U)
-#define ENET_RSEM_STAT_SECTION_EMPTY(x)          (((uint32_t)(((uint32_t)(x)) << ENET_RSEM_STAT_SECTION_EMPTY_SHIFT)) & ENET_RSEM_STAT_SECTION_EMPTY_MASK)
-
-/*! @name RAEM - Receive FIFO Almost Empty Threshold */
-#define ENET_RAEM_RX_ALMOST_EMPTY_MASK           (0xFFU)
-#define ENET_RAEM_RX_ALMOST_EMPTY_SHIFT          (0U)
-#define ENET_RAEM_RX_ALMOST_EMPTY(x)             (((uint32_t)(((uint32_t)(x)) << ENET_RAEM_RX_ALMOST_EMPTY_SHIFT)) & ENET_RAEM_RX_ALMOST_EMPTY_MASK)
-
-/*! @name RAFL - Receive FIFO Almost Full Threshold */
-#define ENET_RAFL_RX_ALMOST_FULL_MASK            (0xFFU)
-#define ENET_RAFL_RX_ALMOST_FULL_SHIFT           (0U)
-#define ENET_RAFL_RX_ALMOST_FULL(x)              (((uint32_t)(((uint32_t)(x)) << ENET_RAFL_RX_ALMOST_FULL_SHIFT)) & ENET_RAFL_RX_ALMOST_FULL_MASK)
-
-/*! @name TSEM - Transmit FIFO Section Empty Threshold */
-#define ENET_TSEM_TX_SECTION_EMPTY_MASK          (0xFFU)
-#define ENET_TSEM_TX_SECTION_EMPTY_SHIFT         (0U)
-#define ENET_TSEM_TX_SECTION_EMPTY(x)            (((uint32_t)(((uint32_t)(x)) << ENET_TSEM_TX_SECTION_EMPTY_SHIFT)) & ENET_TSEM_TX_SECTION_EMPTY_MASK)
-
-/*! @name TAEM - Transmit FIFO Almost Empty Threshold */
-#define ENET_TAEM_TX_ALMOST_EMPTY_MASK           (0xFFU)
-#define ENET_TAEM_TX_ALMOST_EMPTY_SHIFT          (0U)
-#define ENET_TAEM_TX_ALMOST_EMPTY(x)             (((uint32_t)(((uint32_t)(x)) << ENET_TAEM_TX_ALMOST_EMPTY_SHIFT)) & ENET_TAEM_TX_ALMOST_EMPTY_MASK)
-
-/*! @name TAFL - Transmit FIFO Almost Full Threshold */
-#define ENET_TAFL_TX_ALMOST_FULL_MASK            (0xFFU)
-#define ENET_TAFL_TX_ALMOST_FULL_SHIFT           (0U)
-#define ENET_TAFL_TX_ALMOST_FULL(x)              (((uint32_t)(((uint32_t)(x)) << ENET_TAFL_TX_ALMOST_FULL_SHIFT)) & ENET_TAFL_TX_ALMOST_FULL_MASK)
-
-/*! @name TIPG - Transmit Inter-Packet Gap */
-#define ENET_TIPG_IPG_MASK                       (0x1FU)
-#define ENET_TIPG_IPG_SHIFT                      (0U)
-#define ENET_TIPG_IPG(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_TIPG_IPG_SHIFT)) & ENET_TIPG_IPG_MASK)
-
-/*! @name FTRL - Frame Truncation Length */
-#define ENET_FTRL_TRUNC_FL_MASK                  (0x3FFFU)
-#define ENET_FTRL_TRUNC_FL_SHIFT                 (0U)
-#define ENET_FTRL_TRUNC_FL(x)                    (((uint32_t)(((uint32_t)(x)) << ENET_FTRL_TRUNC_FL_SHIFT)) & ENET_FTRL_TRUNC_FL_MASK)
-
-/*! @name TACC - Transmit Accelerator Function Configuration */
-#define ENET_TACC_SHIFT16_MASK                   (0x1U)
-#define ENET_TACC_SHIFT16_SHIFT                  (0U)
-#define ENET_TACC_SHIFT16(x)                     (((uint32_t)(((uint32_t)(x)) << ENET_TACC_SHIFT16_SHIFT)) & ENET_TACC_SHIFT16_MASK)
-#define ENET_TACC_IPCHK_MASK                     (0x8U)
-#define ENET_TACC_IPCHK_SHIFT                    (3U)
-#define ENET_TACC_IPCHK(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_TACC_IPCHK_SHIFT)) & ENET_TACC_IPCHK_MASK)
-#define ENET_TACC_PROCHK_MASK                    (0x10U)
-#define ENET_TACC_PROCHK_SHIFT                   (4U)
-#define ENET_TACC_PROCHK(x)                      (((uint32_t)(((uint32_t)(x)) << ENET_TACC_PROCHK_SHIFT)) & ENET_TACC_PROCHK_MASK)
-
-/*! @name RACC - Receive Accelerator Function Configuration */
-#define ENET_RACC_PADREM_MASK                    (0x1U)
-#define ENET_RACC_PADREM_SHIFT                   (0U)
-#define ENET_RACC_PADREM(x)                      (((uint32_t)(((uint32_t)(x)) << ENET_RACC_PADREM_SHIFT)) & ENET_RACC_PADREM_MASK)
-#define ENET_RACC_IPDIS_MASK                     (0x2U)
-#define ENET_RACC_IPDIS_SHIFT                    (1U)
-#define ENET_RACC_IPDIS(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_RACC_IPDIS_SHIFT)) & ENET_RACC_IPDIS_MASK)
-#define ENET_RACC_PRODIS_MASK                    (0x4U)
-#define ENET_RACC_PRODIS_SHIFT                   (2U)
-#define ENET_RACC_PRODIS(x)                      (((uint32_t)(((uint32_t)(x)) << ENET_RACC_PRODIS_SHIFT)) & ENET_RACC_PRODIS_MASK)
-#define ENET_RACC_LINEDIS_MASK                   (0x40U)
-#define ENET_RACC_LINEDIS_SHIFT                  (6U)
-#define ENET_RACC_LINEDIS(x)                     (((uint32_t)(((uint32_t)(x)) << ENET_RACC_LINEDIS_SHIFT)) & ENET_RACC_LINEDIS_MASK)
-#define ENET_RACC_SHIFT16_MASK                   (0x80U)
-#define ENET_RACC_SHIFT16_SHIFT                  (7U)
-#define ENET_RACC_SHIFT16(x)                     (((uint32_t)(((uint32_t)(x)) << ENET_RACC_SHIFT16_SHIFT)) & ENET_RACC_SHIFT16_MASK)
-
-/*! @name RMON_T_PACKETS - Tx Packet Count Statistic Register */
-#define ENET_RMON_T_PACKETS_TXPKTS_MASK          (0xFFFFU)
-#define ENET_RMON_T_PACKETS_TXPKTS_SHIFT         (0U)
-#define ENET_RMON_T_PACKETS_TXPKTS(x)            (((uint32_t)(((uint32_t)(x)) << ENET_RMON_T_PACKETS_TXPKTS_SHIFT)) & ENET_RMON_T_PACKETS_TXPKTS_MASK)
-
-/*! @name RMON_T_BC_PKT - Tx Broadcast Packets Statistic Register */
-#define ENET_RMON_T_BC_PKT_TXPKTS_MASK           (0xFFFFU)
-#define ENET_RMON_T_BC_PKT_TXPKTS_SHIFT          (0U)
-#define ENET_RMON_T_BC_PKT_TXPKTS(x)             (((uint32_t)(((uint32_t)(x)) << ENET_RMON_T_BC_PKT_TXPKTS_SHIFT)) & ENET_RMON_T_BC_PKT_TXPKTS_MASK)
-
-/*! @name RMON_T_MC_PKT - Tx Multicast Packets Statistic Register */
-#define ENET_RMON_T_MC_PKT_TXPKTS_MASK           (0xFFFFU)
-#define ENET_RMON_T_MC_PKT_TXPKTS_SHIFT          (0U)
-#define ENET_RMON_T_MC_PKT_TXPKTS(x)             (((uint32_t)(((uint32_t)(x)) << ENET_RMON_T_MC_PKT_TXPKTS_SHIFT)) & ENET_RMON_T_MC_PKT_TXPKTS_MASK)
-
-/*! @name RMON_T_CRC_ALIGN - Tx Packets with CRC/Align Error Statistic Register */
-#define ENET_RMON_T_CRC_ALIGN_TXPKTS_MASK        (0xFFFFU)
-#define ENET_RMON_T_CRC_ALIGN_TXPKTS_SHIFT       (0U)
-#define ENET_RMON_T_CRC_ALIGN_TXPKTS(x)          (((uint32_t)(((uint32_t)(x)) << ENET_RMON_T_CRC_ALIGN_TXPKTS_SHIFT)) & ENET_RMON_T_CRC_ALIGN_TXPKTS_MASK)
-
-/*! @name RMON_T_UNDERSIZE - Tx Packets Less Than Bytes and Good CRC Statistic Register */
-#define ENET_RMON_T_UNDERSIZE_TXPKTS_MASK        (0xFFFFU)
-#define ENET_RMON_T_UNDERSIZE_TXPKTS_SHIFT       (0U)
-#define ENET_RMON_T_UNDERSIZE_TXPKTS(x)          (((uint32_t)(((uint32_t)(x)) << ENET_RMON_T_UNDERSIZE_TXPKTS_SHIFT)) & ENET_RMON_T_UNDERSIZE_TXPKTS_MASK)
-
-/*! @name RMON_T_OVERSIZE - Tx Packets GT MAX_FL bytes and Good CRC Statistic Register */
-#define ENET_RMON_T_OVERSIZE_TXPKTS_MASK         (0xFFFFU)
-#define ENET_RMON_T_OVERSIZE_TXPKTS_SHIFT        (0U)
-#define ENET_RMON_T_OVERSIZE_TXPKTS(x)           (((uint32_t)(((uint32_t)(x)) << ENET_RMON_T_OVERSIZE_TXPKTS_SHIFT)) & ENET_RMON_T_OVERSIZE_TXPKTS_MASK)
-
-/*! @name RMON_T_FRAG - Tx Packets Less Than 64 Bytes and Bad CRC Statistic Register */
-#define ENET_RMON_T_FRAG_TXPKTS_MASK             (0xFFFFU)
-#define ENET_RMON_T_FRAG_TXPKTS_SHIFT            (0U)
-#define ENET_RMON_T_FRAG_TXPKTS(x)               (((uint32_t)(((uint32_t)(x)) << ENET_RMON_T_FRAG_TXPKTS_SHIFT)) & ENET_RMON_T_FRAG_TXPKTS_MASK)
-
-/*! @name RMON_T_JAB - Tx Packets Greater Than MAX_FL bytes and Bad CRC Statistic Register */
-#define ENET_RMON_T_JAB_TXPKTS_MASK              (0xFFFFU)
-#define ENET_RMON_T_JAB_TXPKTS_SHIFT             (0U)
-#define ENET_RMON_T_JAB_TXPKTS(x)                (((uint32_t)(((uint32_t)(x)) << ENET_RMON_T_JAB_TXPKTS_SHIFT)) & ENET_RMON_T_JAB_TXPKTS_MASK)
-
-/*! @name RMON_T_COL - Tx Collision Count Statistic Register */
-#define ENET_RMON_T_COL_TXPKTS_MASK              (0xFFFFU)
-#define ENET_RMON_T_COL_TXPKTS_SHIFT             (0U)
-#define ENET_RMON_T_COL_TXPKTS(x)                (((uint32_t)(((uint32_t)(x)) << ENET_RMON_T_COL_TXPKTS_SHIFT)) & ENET_RMON_T_COL_TXPKTS_MASK)
-
-/*! @name RMON_T_P64 - Tx 64-Byte Packets Statistic Register */
-#define ENET_RMON_T_P64_TXPKTS_MASK              (0xFFFFU)
-#define ENET_RMON_T_P64_TXPKTS_SHIFT             (0U)
-#define ENET_RMON_T_P64_TXPKTS(x)                (((uint32_t)(((uint32_t)(x)) << ENET_RMON_T_P64_TXPKTS_SHIFT)) & ENET_RMON_T_P64_TXPKTS_MASK)
-
-/*! @name RMON_T_P65TO127 - Tx 65- to 127-byte Packets Statistic Register */
-#define ENET_RMON_T_P65TO127_TXPKTS_MASK         (0xFFFFU)
-#define ENET_RMON_T_P65TO127_TXPKTS_SHIFT        (0U)
-#define ENET_RMON_T_P65TO127_TXPKTS(x)           (((uint32_t)(((uint32_t)(x)) << ENET_RMON_T_P65TO127_TXPKTS_SHIFT)) & ENET_RMON_T_P65TO127_TXPKTS_MASK)
-
-/*! @name RMON_T_P128TO255 - Tx 128- to 255-byte Packets Statistic Register */
-#define ENET_RMON_T_P128TO255_TXPKTS_MASK        (0xFFFFU)
-#define ENET_RMON_T_P128TO255_TXPKTS_SHIFT       (0U)
-#define ENET_RMON_T_P128TO255_TXPKTS(x)          (((uint32_t)(((uint32_t)(x)) << ENET_RMON_T_P128TO255_TXPKTS_SHIFT)) & ENET_RMON_T_P128TO255_TXPKTS_MASK)
-
-/*! @name RMON_T_P256TO511 - Tx 256- to 511-byte Packets Statistic Register */
-#define ENET_RMON_T_P256TO511_TXPKTS_MASK        (0xFFFFU)
-#define ENET_RMON_T_P256TO511_TXPKTS_SHIFT       (0U)
-#define ENET_RMON_T_P256TO511_TXPKTS(x)          (((uint32_t)(((uint32_t)(x)) << ENET_RMON_T_P256TO511_TXPKTS_SHIFT)) & ENET_RMON_T_P256TO511_TXPKTS_MASK)
-
-/*! @name RMON_T_P512TO1023 - Tx 512- to 1023-byte Packets Statistic Register */
-#define ENET_RMON_T_P512TO1023_TXPKTS_MASK       (0xFFFFU)
-#define ENET_RMON_T_P512TO1023_TXPKTS_SHIFT      (0U)
-#define ENET_RMON_T_P512TO1023_TXPKTS(x)         (((uint32_t)(((uint32_t)(x)) << ENET_RMON_T_P512TO1023_TXPKTS_SHIFT)) & ENET_RMON_T_P512TO1023_TXPKTS_MASK)
-
-/*! @name RMON_T_P1024TO2047 - Tx 1024- to 2047-byte Packets Statistic Register */
-#define ENET_RMON_T_P1024TO2047_TXPKTS_MASK      (0xFFFFU)
-#define ENET_RMON_T_P1024TO2047_TXPKTS_SHIFT     (0U)
-#define ENET_RMON_T_P1024TO2047_TXPKTS(x)        (((uint32_t)(((uint32_t)(x)) << ENET_RMON_T_P1024TO2047_TXPKTS_SHIFT)) & ENET_RMON_T_P1024TO2047_TXPKTS_MASK)
-
-/*! @name RMON_T_P_GTE2048 - Tx Packets Greater Than 2048 Bytes Statistic Register */
-#define ENET_RMON_T_P_GTE2048_TXPKTS_MASK        (0xFFFFU)
-#define ENET_RMON_T_P_GTE2048_TXPKTS_SHIFT       (0U)
-#define ENET_RMON_T_P_GTE2048_TXPKTS(x)          (((uint32_t)(((uint32_t)(x)) << ENET_RMON_T_P_GTE2048_TXPKTS_SHIFT)) & ENET_RMON_T_P_GTE2048_TXPKTS_MASK)
-
-/*! @name RMON_T_OCTETS - Tx Octets Statistic Register */
-#define ENET_RMON_T_OCTETS_TXOCTS_MASK           (0xFFFFFFFFU)
-#define ENET_RMON_T_OCTETS_TXOCTS_SHIFT          (0U)
-#define ENET_RMON_T_OCTETS_TXOCTS(x)             (((uint32_t)(((uint32_t)(x)) << ENET_RMON_T_OCTETS_TXOCTS_SHIFT)) & ENET_RMON_T_OCTETS_TXOCTS_MASK)
-
-/*! @name IEEE_T_FRAME_OK - Frames Transmitted OK Statistic Register */
-#define ENET_IEEE_T_FRAME_OK_COUNT_MASK          (0xFFFFU)
-#define ENET_IEEE_T_FRAME_OK_COUNT_SHIFT         (0U)
-#define ENET_IEEE_T_FRAME_OK_COUNT(x)            (((uint32_t)(((uint32_t)(x)) << ENET_IEEE_T_FRAME_OK_COUNT_SHIFT)) & ENET_IEEE_T_FRAME_OK_COUNT_MASK)
-
-/*! @name IEEE_T_1COL - Frames Transmitted with Single Collision Statistic Register */
-#define ENET_IEEE_T_1COL_COUNT_MASK              (0xFFFFU)
-#define ENET_IEEE_T_1COL_COUNT_SHIFT             (0U)
-#define ENET_IEEE_T_1COL_COUNT(x)                (((uint32_t)(((uint32_t)(x)) << ENET_IEEE_T_1COL_COUNT_SHIFT)) & ENET_IEEE_T_1COL_COUNT_MASK)
-
-/*! @name IEEE_T_MCOL - Frames Transmitted with Multiple Collisions Statistic Register */
-#define ENET_IEEE_T_MCOL_COUNT_MASK              (0xFFFFU)
-#define ENET_IEEE_T_MCOL_COUNT_SHIFT             (0U)
-#define ENET_IEEE_T_MCOL_COUNT(x)                (((uint32_t)(((uint32_t)(x)) << ENET_IEEE_T_MCOL_COUNT_SHIFT)) & ENET_IEEE_T_MCOL_COUNT_MASK)
-
-/*! @name IEEE_T_DEF - Frames Transmitted after Deferral Delay Statistic Register */
-#define ENET_IEEE_T_DEF_COUNT_MASK               (0xFFFFU)
-#define ENET_IEEE_T_DEF_COUNT_SHIFT              (0U)
-#define ENET_IEEE_T_DEF_COUNT(x)                 (((uint32_t)(((uint32_t)(x)) << ENET_IEEE_T_DEF_COUNT_SHIFT)) & ENET_IEEE_T_DEF_COUNT_MASK)
-
-/*! @name IEEE_T_LCOL - Frames Transmitted with Late Collision Statistic Register */
-#define ENET_IEEE_T_LCOL_COUNT_MASK              (0xFFFFU)
-#define ENET_IEEE_T_LCOL_COUNT_SHIFT             (0U)
-#define ENET_IEEE_T_LCOL_COUNT(x)                (((uint32_t)(((uint32_t)(x)) << ENET_IEEE_T_LCOL_COUNT_SHIFT)) & ENET_IEEE_T_LCOL_COUNT_MASK)
-
-/*! @name IEEE_T_EXCOL - Frames Transmitted with Excessive Collisions Statistic Register */
-#define ENET_IEEE_T_EXCOL_COUNT_MASK             (0xFFFFU)
-#define ENET_IEEE_T_EXCOL_COUNT_SHIFT            (0U)
-#define ENET_IEEE_T_EXCOL_COUNT(x)               (((uint32_t)(((uint32_t)(x)) << ENET_IEEE_T_EXCOL_COUNT_SHIFT)) & ENET_IEEE_T_EXCOL_COUNT_MASK)
-
-/*! @name IEEE_T_MACERR - Frames Transmitted with Tx FIFO Underrun Statistic Register */
-#define ENET_IEEE_T_MACERR_COUNT_MASK            (0xFFFFU)
-#define ENET_IEEE_T_MACERR_COUNT_SHIFT           (0U)
-#define ENET_IEEE_T_MACERR_COUNT(x)              (((uint32_t)(((uint32_t)(x)) << ENET_IEEE_T_MACERR_COUNT_SHIFT)) & ENET_IEEE_T_MACERR_COUNT_MASK)
-
-/*! @name IEEE_T_CSERR - Frames Transmitted with Carrier Sense Error Statistic Register */
-#define ENET_IEEE_T_CSERR_COUNT_MASK             (0xFFFFU)
-#define ENET_IEEE_T_CSERR_COUNT_SHIFT            (0U)
-#define ENET_IEEE_T_CSERR_COUNT(x)               (((uint32_t)(((uint32_t)(x)) << ENET_IEEE_T_CSERR_COUNT_SHIFT)) & ENET_IEEE_T_CSERR_COUNT_MASK)
-
-/*! @name IEEE_T_FDXFC - Flow Control Pause Frames Transmitted Statistic Register */
-#define ENET_IEEE_T_FDXFC_COUNT_MASK             (0xFFFFU)
-#define ENET_IEEE_T_FDXFC_COUNT_SHIFT            (0U)
-#define ENET_IEEE_T_FDXFC_COUNT(x)               (((uint32_t)(((uint32_t)(x)) << ENET_IEEE_T_FDXFC_COUNT_SHIFT)) & ENET_IEEE_T_FDXFC_COUNT_MASK)
-
-/*! @name IEEE_T_OCTETS_OK - Octet Count for Frames Transmitted w/o Error Statistic Register */
-#define ENET_IEEE_T_OCTETS_OK_COUNT_MASK         (0xFFFFFFFFU)
-#define ENET_IEEE_T_OCTETS_OK_COUNT_SHIFT        (0U)
-#define ENET_IEEE_T_OCTETS_OK_COUNT(x)           (((uint32_t)(((uint32_t)(x)) << ENET_IEEE_T_OCTETS_OK_COUNT_SHIFT)) & ENET_IEEE_T_OCTETS_OK_COUNT_MASK)
-
-/*! @name RMON_R_PACKETS - Rx Packet Count Statistic Register */
-#define ENET_RMON_R_PACKETS_COUNT_MASK           (0xFFFFU)
-#define ENET_RMON_R_PACKETS_COUNT_SHIFT          (0U)
-#define ENET_RMON_R_PACKETS_COUNT(x)             (((uint32_t)(((uint32_t)(x)) << ENET_RMON_R_PACKETS_COUNT_SHIFT)) & ENET_RMON_R_PACKETS_COUNT_MASK)
-
-/*! @name RMON_R_BC_PKT - Rx Broadcast Packets Statistic Register */
-#define ENET_RMON_R_BC_PKT_COUNT_MASK            (0xFFFFU)
-#define ENET_RMON_R_BC_PKT_COUNT_SHIFT           (0U)
-#define ENET_RMON_R_BC_PKT_COUNT(x)              (((uint32_t)(((uint32_t)(x)) << ENET_RMON_R_BC_PKT_COUNT_SHIFT)) & ENET_RMON_R_BC_PKT_COUNT_MASK)
-
-/*! @name RMON_R_MC_PKT - Rx Multicast Packets Statistic Register */
-#define ENET_RMON_R_MC_PKT_COUNT_MASK            (0xFFFFU)
-#define ENET_RMON_R_MC_PKT_COUNT_SHIFT           (0U)
-#define ENET_RMON_R_MC_PKT_COUNT(x)              (((uint32_t)(((uint32_t)(x)) << ENET_RMON_R_MC_PKT_COUNT_SHIFT)) & ENET_RMON_R_MC_PKT_COUNT_MASK)
-
-/*! @name RMON_R_CRC_ALIGN - Rx Packets with CRC/Align Error Statistic Register */
-#define ENET_RMON_R_CRC_ALIGN_COUNT_MASK         (0xFFFFU)
-#define ENET_RMON_R_CRC_ALIGN_COUNT_SHIFT        (0U)
-#define ENET_RMON_R_CRC_ALIGN_COUNT(x)           (((uint32_t)(((uint32_t)(x)) << ENET_RMON_R_CRC_ALIGN_COUNT_SHIFT)) & ENET_RMON_R_CRC_ALIGN_COUNT_MASK)
-
-/*! @name RMON_R_UNDERSIZE - Rx Packets with Less Than 64 Bytes and Good CRC Statistic Register */
-#define ENET_RMON_R_UNDERSIZE_COUNT_MASK         (0xFFFFU)
-#define ENET_RMON_R_UNDERSIZE_COUNT_SHIFT        (0U)
-#define ENET_RMON_R_UNDERSIZE_COUNT(x)           (((uint32_t)(((uint32_t)(x)) << ENET_RMON_R_UNDERSIZE_COUNT_SHIFT)) & ENET_RMON_R_UNDERSIZE_COUNT_MASK)
-
-/*! @name RMON_R_OVERSIZE - Rx Packets Greater Than MAX_FL and Good CRC Statistic Register */
-#define ENET_RMON_R_OVERSIZE_COUNT_MASK          (0xFFFFU)
-#define ENET_RMON_R_OVERSIZE_COUNT_SHIFT         (0U)
-#define ENET_RMON_R_OVERSIZE_COUNT(x)            (((uint32_t)(((uint32_t)(x)) << ENET_RMON_R_OVERSIZE_COUNT_SHIFT)) & ENET_RMON_R_OVERSIZE_COUNT_MASK)
-
-/*! @name RMON_R_FRAG - Rx Packets Less Than 64 Bytes and Bad CRC Statistic Register */
-#define ENET_RMON_R_FRAG_COUNT_MASK              (0xFFFFU)
-#define ENET_RMON_R_FRAG_COUNT_SHIFT             (0U)
-#define ENET_RMON_R_FRAG_COUNT(x)                (((uint32_t)(((uint32_t)(x)) << ENET_RMON_R_FRAG_COUNT_SHIFT)) & ENET_RMON_R_FRAG_COUNT_MASK)
-
-/*! @name RMON_R_JAB - Rx Packets Greater Than MAX_FL Bytes and Bad CRC Statistic Register */
-#define ENET_RMON_R_JAB_COUNT_MASK               (0xFFFFU)
-#define ENET_RMON_R_JAB_COUNT_SHIFT              (0U)
-#define ENET_RMON_R_JAB_COUNT(x)                 (((uint32_t)(((uint32_t)(x)) << ENET_RMON_R_JAB_COUNT_SHIFT)) & ENET_RMON_R_JAB_COUNT_MASK)
-
-/*! @name RMON_R_P64 - Rx 64-Byte Packets Statistic Register */
-#define ENET_RMON_R_P64_COUNT_MASK               (0xFFFFU)
-#define ENET_RMON_R_P64_COUNT_SHIFT              (0U)
-#define ENET_RMON_R_P64_COUNT(x)                 (((uint32_t)(((uint32_t)(x)) << ENET_RMON_R_P64_COUNT_SHIFT)) & ENET_RMON_R_P64_COUNT_MASK)
-
-/*! @name RMON_R_P65TO127 - Rx 65- to 127-Byte Packets Statistic Register */
-#define ENET_RMON_R_P65TO127_COUNT_MASK          (0xFFFFU)
-#define ENET_RMON_R_P65TO127_COUNT_SHIFT         (0U)
-#define ENET_RMON_R_P65TO127_COUNT(x)            (((uint32_t)(((uint32_t)(x)) << ENET_RMON_R_P65TO127_COUNT_SHIFT)) & ENET_RMON_R_P65TO127_COUNT_MASK)
-
-/*! @name RMON_R_P128TO255 - Rx 128- to 255-Byte Packets Statistic Register */
-#define ENET_RMON_R_P128TO255_COUNT_MASK         (0xFFFFU)
-#define ENET_RMON_R_P128TO255_COUNT_SHIFT        (0U)
-#define ENET_RMON_R_P128TO255_COUNT(x)           (((uint32_t)(((uint32_t)(x)) << ENET_RMON_R_P128TO255_COUNT_SHIFT)) & ENET_RMON_R_P128TO255_COUNT_MASK)
-
-/*! @name RMON_R_P256TO511 - Rx 256- to 511-Byte Packets Statistic Register */
-#define ENET_RMON_R_P256TO511_COUNT_MASK         (0xFFFFU)
-#define ENET_RMON_R_P256TO511_COUNT_SHIFT        (0U)
-#define ENET_RMON_R_P256TO511_COUNT(x)           (((uint32_t)(((uint32_t)(x)) << ENET_RMON_R_P256TO511_COUNT_SHIFT)) & ENET_RMON_R_P256TO511_COUNT_MASK)
-
-/*! @name RMON_R_P512TO1023 - Rx 512- to 1023-Byte Packets Statistic Register */
-#define ENET_RMON_R_P512TO1023_COUNT_MASK        (0xFFFFU)
-#define ENET_RMON_R_P512TO1023_COUNT_SHIFT       (0U)
-#define ENET_RMON_R_P512TO1023_COUNT(x)          (((uint32_t)(((uint32_t)(x)) << ENET_RMON_R_P512TO1023_COUNT_SHIFT)) & ENET_RMON_R_P512TO1023_COUNT_MASK)
-
-/*! @name RMON_R_P1024TO2047 - Rx 1024- to 2047-Byte Packets Statistic Register */
-#define ENET_RMON_R_P1024TO2047_COUNT_MASK       (0xFFFFU)
-#define ENET_RMON_R_P1024TO2047_COUNT_SHIFT      (0U)
-#define ENET_RMON_R_P1024TO2047_COUNT(x)         (((uint32_t)(((uint32_t)(x)) << ENET_RMON_R_P1024TO2047_COUNT_SHIFT)) & ENET_RMON_R_P1024TO2047_COUNT_MASK)
-
-/*! @name RMON_R_P_GTE2048 - Rx Packets Greater than 2048 Bytes Statistic Register */
-#define ENET_RMON_R_P_GTE2048_COUNT_MASK         (0xFFFFU)
-#define ENET_RMON_R_P_GTE2048_COUNT_SHIFT        (0U)
-#define ENET_RMON_R_P_GTE2048_COUNT(x)           (((uint32_t)(((uint32_t)(x)) << ENET_RMON_R_P_GTE2048_COUNT_SHIFT)) & ENET_RMON_R_P_GTE2048_COUNT_MASK)
-
-/*! @name RMON_R_OCTETS - Rx Octets Statistic Register */
-#define ENET_RMON_R_OCTETS_COUNT_MASK            (0xFFFFFFFFU)
-#define ENET_RMON_R_OCTETS_COUNT_SHIFT           (0U)
-#define ENET_RMON_R_OCTETS_COUNT(x)              (((uint32_t)(((uint32_t)(x)) << ENET_RMON_R_OCTETS_COUNT_SHIFT)) & ENET_RMON_R_OCTETS_COUNT_MASK)
-
-/*! @name IEEE_R_DROP - Frames not Counted Correctly Statistic Register */
-#define ENET_IEEE_R_DROP_COUNT_MASK              (0xFFFFU)
-#define ENET_IEEE_R_DROP_COUNT_SHIFT             (0U)
-#define ENET_IEEE_R_DROP_COUNT(x)                (((uint32_t)(((uint32_t)(x)) << ENET_IEEE_R_DROP_COUNT_SHIFT)) & ENET_IEEE_R_DROP_COUNT_MASK)
-
-/*! @name IEEE_R_FRAME_OK - Frames Received OK Statistic Register */
-#define ENET_IEEE_R_FRAME_OK_COUNT_MASK          (0xFFFFU)
-#define ENET_IEEE_R_FRAME_OK_COUNT_SHIFT         (0U)
-#define ENET_IEEE_R_FRAME_OK_COUNT(x)            (((uint32_t)(((uint32_t)(x)) << ENET_IEEE_R_FRAME_OK_COUNT_SHIFT)) & ENET_IEEE_R_FRAME_OK_COUNT_MASK)
-
-/*! @name IEEE_R_CRC - Frames Received with CRC Error Statistic Register */
-#define ENET_IEEE_R_CRC_COUNT_MASK               (0xFFFFU)
-#define ENET_IEEE_R_CRC_COUNT_SHIFT              (0U)
-#define ENET_IEEE_R_CRC_COUNT(x)                 (((uint32_t)(((uint32_t)(x)) << ENET_IEEE_R_CRC_COUNT_SHIFT)) & ENET_IEEE_R_CRC_COUNT_MASK)
-
-/*! @name IEEE_R_ALIGN - Frames Received with Alignment Error Statistic Register */
-#define ENET_IEEE_R_ALIGN_COUNT_MASK             (0xFFFFU)
-#define ENET_IEEE_R_ALIGN_COUNT_SHIFT            (0U)
-#define ENET_IEEE_R_ALIGN_COUNT(x)               (((uint32_t)(((uint32_t)(x)) << ENET_IEEE_R_ALIGN_COUNT_SHIFT)) & ENET_IEEE_R_ALIGN_COUNT_MASK)
-
-/*! @name IEEE_R_MACERR - Receive FIFO Overflow Count Statistic Register */
-#define ENET_IEEE_R_MACERR_COUNT_MASK            (0xFFFFU)
-#define ENET_IEEE_R_MACERR_COUNT_SHIFT           (0U)
-#define ENET_IEEE_R_MACERR_COUNT(x)              (((uint32_t)(((uint32_t)(x)) << ENET_IEEE_R_MACERR_COUNT_SHIFT)) & ENET_IEEE_R_MACERR_COUNT_MASK)
-
-/*! @name IEEE_R_FDXFC - Flow Control Pause Frames Received Statistic Register */
-#define ENET_IEEE_R_FDXFC_COUNT_MASK             (0xFFFFU)
-#define ENET_IEEE_R_FDXFC_COUNT_SHIFT            (0U)
-#define ENET_IEEE_R_FDXFC_COUNT(x)               (((uint32_t)(((uint32_t)(x)) << ENET_IEEE_R_FDXFC_COUNT_SHIFT)) & ENET_IEEE_R_FDXFC_COUNT_MASK)
-
-/*! @name IEEE_R_OCTETS_OK - Octet Count for Frames Received without Error Statistic Register */
-#define ENET_IEEE_R_OCTETS_OK_COUNT_MASK         (0xFFFFFFFFU)
-#define ENET_IEEE_R_OCTETS_OK_COUNT_SHIFT        (0U)
-#define ENET_IEEE_R_OCTETS_OK_COUNT(x)           (((uint32_t)(((uint32_t)(x)) << ENET_IEEE_R_OCTETS_OK_COUNT_SHIFT)) & ENET_IEEE_R_OCTETS_OK_COUNT_MASK)
-
-/*! @name ATCR - Adjustable Timer Control Register */
-#define ENET_ATCR_EN_MASK                        (0x1U)
-#define ENET_ATCR_EN_SHIFT                       (0U)
-#define ENET_ATCR_EN(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_ATCR_EN_SHIFT)) & ENET_ATCR_EN_MASK)
-#define ENET_ATCR_OFFEN_MASK                     (0x4U)
-#define ENET_ATCR_OFFEN_SHIFT                    (2U)
-#define ENET_ATCR_OFFEN(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_ATCR_OFFEN_SHIFT)) & ENET_ATCR_OFFEN_MASK)
-#define ENET_ATCR_OFFRST_MASK                    (0x8U)
-#define ENET_ATCR_OFFRST_SHIFT                   (3U)
-#define ENET_ATCR_OFFRST(x)                      (((uint32_t)(((uint32_t)(x)) << ENET_ATCR_OFFRST_SHIFT)) & ENET_ATCR_OFFRST_MASK)
-#define ENET_ATCR_PEREN_MASK                     (0x10U)
-#define ENET_ATCR_PEREN_SHIFT                    (4U)
-#define ENET_ATCR_PEREN(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_ATCR_PEREN_SHIFT)) & ENET_ATCR_PEREN_MASK)
-#define ENET_ATCR_PINPER_MASK                    (0x80U)
-#define ENET_ATCR_PINPER_SHIFT                   (7U)
-#define ENET_ATCR_PINPER(x)                      (((uint32_t)(((uint32_t)(x)) << ENET_ATCR_PINPER_SHIFT)) & ENET_ATCR_PINPER_MASK)
-#define ENET_ATCR_RESTART_MASK                   (0x200U)
-#define ENET_ATCR_RESTART_SHIFT                  (9U)
-#define ENET_ATCR_RESTART(x)                     (((uint32_t)(((uint32_t)(x)) << ENET_ATCR_RESTART_SHIFT)) & ENET_ATCR_RESTART_MASK)
-#define ENET_ATCR_CAPTURE_MASK                   (0x800U)
-#define ENET_ATCR_CAPTURE_SHIFT                  (11U)
-#define ENET_ATCR_CAPTURE(x)                     (((uint32_t)(((uint32_t)(x)) << ENET_ATCR_CAPTURE_SHIFT)) & ENET_ATCR_CAPTURE_MASK)
-#define ENET_ATCR_SLAVE_MASK                     (0x2000U)
-#define ENET_ATCR_SLAVE_SHIFT                    (13U)
-#define ENET_ATCR_SLAVE(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_ATCR_SLAVE_SHIFT)) & ENET_ATCR_SLAVE_MASK)
-
-/*! @name ATVR - Timer Value Register */
-#define ENET_ATVR_ATIME_MASK                     (0xFFFFFFFFU)
-#define ENET_ATVR_ATIME_SHIFT                    (0U)
-#define ENET_ATVR_ATIME(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_ATVR_ATIME_SHIFT)) & ENET_ATVR_ATIME_MASK)
-
-/*! @name ATOFF - Timer Offset Register */
-#define ENET_ATOFF_OFFSET_MASK                   (0xFFFFFFFFU)
-#define ENET_ATOFF_OFFSET_SHIFT                  (0U)
-#define ENET_ATOFF_OFFSET(x)                     (((uint32_t)(((uint32_t)(x)) << ENET_ATOFF_OFFSET_SHIFT)) & ENET_ATOFF_OFFSET_MASK)
-
-/*! @name ATPER - Timer Period Register */
-#define ENET_ATPER_PERIOD_MASK                   (0xFFFFFFFFU)
-#define ENET_ATPER_PERIOD_SHIFT                  (0U)
-#define ENET_ATPER_PERIOD(x)                     (((uint32_t)(((uint32_t)(x)) << ENET_ATPER_PERIOD_SHIFT)) & ENET_ATPER_PERIOD_MASK)
-
-/*! @name ATCOR - Timer Correction Register */
-#define ENET_ATCOR_COR_MASK                      (0x7FFFFFFFU)
-#define ENET_ATCOR_COR_SHIFT                     (0U)
-#define ENET_ATCOR_COR(x)                        (((uint32_t)(((uint32_t)(x)) << ENET_ATCOR_COR_SHIFT)) & ENET_ATCOR_COR_MASK)
-
-/*! @name ATINC - Time-Stamping Clock Period Register */
-#define ENET_ATINC_INC_MASK                      (0x7FU)
-#define ENET_ATINC_INC_SHIFT                     (0U)
-#define ENET_ATINC_INC(x)                        (((uint32_t)(((uint32_t)(x)) << ENET_ATINC_INC_SHIFT)) & ENET_ATINC_INC_MASK)
-#define ENET_ATINC_INC_CORR_MASK                 (0x7F00U)
-#define ENET_ATINC_INC_CORR_SHIFT                (8U)
-#define ENET_ATINC_INC_CORR(x)                   (((uint32_t)(((uint32_t)(x)) << ENET_ATINC_INC_CORR_SHIFT)) & ENET_ATINC_INC_CORR_MASK)
-
-/*! @name ATSTMP - Timestamp of Last Transmitted Frame */
-#define ENET_ATSTMP_TIMESTAMP_MASK               (0xFFFFFFFFU)
-#define ENET_ATSTMP_TIMESTAMP_SHIFT              (0U)
-#define ENET_ATSTMP_TIMESTAMP(x)                 (((uint32_t)(((uint32_t)(x)) << ENET_ATSTMP_TIMESTAMP_SHIFT)) & ENET_ATSTMP_TIMESTAMP_MASK)
-
-/*! @name TGSR - Timer Global Status Register */
-#define ENET_TGSR_TF0_MASK                       (0x1U)
-#define ENET_TGSR_TF0_SHIFT                      (0U)
-#define ENET_TGSR_TF0(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_TGSR_TF0_SHIFT)) & ENET_TGSR_TF0_MASK)
-#define ENET_TGSR_TF1_MASK                       (0x2U)
-#define ENET_TGSR_TF1_SHIFT                      (1U)
-#define ENET_TGSR_TF1(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_TGSR_TF1_SHIFT)) & ENET_TGSR_TF1_MASK)
-#define ENET_TGSR_TF2_MASK                       (0x4U)
-#define ENET_TGSR_TF2_SHIFT                      (2U)
-#define ENET_TGSR_TF2(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_TGSR_TF2_SHIFT)) & ENET_TGSR_TF2_MASK)
-#define ENET_TGSR_TF3_MASK                       (0x8U)
-#define ENET_TGSR_TF3_SHIFT                      (3U)
-#define ENET_TGSR_TF3(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_TGSR_TF3_SHIFT)) & ENET_TGSR_TF3_MASK)
-
-/*! @name TCSR - Timer Control Status Register */
-#define ENET_TCSR_TDRE_MASK                      (0x1U)
-#define ENET_TCSR_TDRE_SHIFT                     (0U)
-#define ENET_TCSR_TDRE(x)                        (((uint32_t)(((uint32_t)(x)) << ENET_TCSR_TDRE_SHIFT)) & ENET_TCSR_TDRE_MASK)
-#define ENET_TCSR_TMODE_MASK                     (0x3CU)
-#define ENET_TCSR_TMODE_SHIFT                    (2U)
-#define ENET_TCSR_TMODE(x)                       (((uint32_t)(((uint32_t)(x)) << ENET_TCSR_TMODE_SHIFT)) & ENET_TCSR_TMODE_MASK)
-#define ENET_TCSR_TIE_MASK                       (0x40U)
-#define ENET_TCSR_TIE_SHIFT                      (6U)
-#define ENET_TCSR_TIE(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_TCSR_TIE_SHIFT)) & ENET_TCSR_TIE_MASK)
-#define ENET_TCSR_TF_MASK                        (0x80U)
-#define ENET_TCSR_TF_SHIFT                       (7U)
-#define ENET_TCSR_TF(x)                          (((uint32_t)(((uint32_t)(x)) << ENET_TCSR_TF_SHIFT)) & ENET_TCSR_TF_MASK)
-
-/* The count of ENET_TCSR */
-#define ENET_TCSR_COUNT                          (4U)
-
-/*! @name TCCR - Timer Compare Capture Register */
-#define ENET_TCCR_TCC_MASK                       (0xFFFFFFFFU)
-#define ENET_TCCR_TCC_SHIFT                      (0U)
-#define ENET_TCCR_TCC(x)                         (((uint32_t)(((uint32_t)(x)) << ENET_TCCR_TCC_SHIFT)) & ENET_TCCR_TCC_MASK)
-
-/* The count of ENET_TCCR */
-#define ENET_TCCR_COUNT                          (4U)
-
-
-/*!
- * @}
- */ /* end of group ENET_Register_Masks */
-
-
-/* ENET - Peripheral instance base addresses */
-/** Peripheral ENET base address */
-#define ENET_BASE                                (0x400C0000u)
-/** Peripheral ENET base pointer */
-#define ENET                                     ((ENET_Type *)ENET_BASE)
-/** Array initializer of ENET peripheral base addresses */
-#define ENET_BASE_ADDRS                          { ENET_BASE }
-/** Array initializer of ENET peripheral base pointers */
-#define ENET_BASE_PTRS                           { ENET }
-/** Interrupt vectors for the ENET peripheral type */
-#define ENET_Transmit_IRQS                       { ENET_Transmit_IRQn }
-#define ENET_Receive_IRQS                        { ENET_Receive_IRQn }
-#define ENET_Error_IRQS                          { ENET_Error_IRQn }
-#define ENET_1588_Timer_IRQS                     { ENET_1588_Timer_IRQn }
-
-/*!
- * @}
- */ /* end of group ENET_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- EWM Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup EWM_Peripheral_Access_Layer EWM Peripheral Access Layer
- * @{
- */
-
-/** EWM - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t CTRL;                               /**< Control Register, offset: 0x0 */
-  __O  uint8_t SERV;                               /**< Service Register, offset: 0x1 */
-  __IO uint8_t CMPL;                               /**< Compare Low Register, offset: 0x2 */
-  __IO uint8_t CMPH;                               /**< Compare High Register, offset: 0x3 */
-} EWM_Type;
-
-/* ----------------------------------------------------------------------------
-   -- EWM Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup EWM_Register_Masks EWM Register Masks
- * @{
- */
-
-/*! @name CTRL - Control Register */
-#define EWM_CTRL_EWMEN_MASK                      (0x1U)
-#define EWM_CTRL_EWMEN_SHIFT                     (0U)
-#define EWM_CTRL_EWMEN(x)                        (((uint8_t)(((uint8_t)(x)) << EWM_CTRL_EWMEN_SHIFT)) & EWM_CTRL_EWMEN_MASK)
-#define EWM_CTRL_ASSIN_MASK                      (0x2U)
-#define EWM_CTRL_ASSIN_SHIFT                     (1U)
-#define EWM_CTRL_ASSIN(x)                        (((uint8_t)(((uint8_t)(x)) << EWM_CTRL_ASSIN_SHIFT)) & EWM_CTRL_ASSIN_MASK)
-#define EWM_CTRL_INEN_MASK                       (0x4U)
-#define EWM_CTRL_INEN_SHIFT                      (2U)
-#define EWM_CTRL_INEN(x)                         (((uint8_t)(((uint8_t)(x)) << EWM_CTRL_INEN_SHIFT)) & EWM_CTRL_INEN_MASK)
-#define EWM_CTRL_INTEN_MASK                      (0x8U)
-#define EWM_CTRL_INTEN_SHIFT                     (3U)
-#define EWM_CTRL_INTEN(x)                        (((uint8_t)(((uint8_t)(x)) << EWM_CTRL_INTEN_SHIFT)) & EWM_CTRL_INTEN_MASK)
-
-/*! @name SERV - Service Register */
-#define EWM_SERV_SERVICE_MASK                    (0xFFU)
-#define EWM_SERV_SERVICE_SHIFT                   (0U)
-#define EWM_SERV_SERVICE(x)                      (((uint8_t)(((uint8_t)(x)) << EWM_SERV_SERVICE_SHIFT)) & EWM_SERV_SERVICE_MASK)
-
-/*! @name CMPL - Compare Low Register */
-#define EWM_CMPL_COMPAREL_MASK                   (0xFFU)
-#define EWM_CMPL_COMPAREL_SHIFT                  (0U)
-#define EWM_CMPL_COMPAREL(x)                     (((uint8_t)(((uint8_t)(x)) << EWM_CMPL_COMPAREL_SHIFT)) & EWM_CMPL_COMPAREL_MASK)
-
-/*! @name CMPH - Compare High Register */
-#define EWM_CMPH_COMPAREH_MASK                   (0xFFU)
-#define EWM_CMPH_COMPAREH_SHIFT                  (0U)
-#define EWM_CMPH_COMPAREH(x)                     (((uint8_t)(((uint8_t)(x)) << EWM_CMPH_COMPAREH_SHIFT)) & EWM_CMPH_COMPAREH_MASK)
-
-
-/*!
- * @}
- */ /* end of group EWM_Register_Masks */
-
-
-/* EWM - Peripheral instance base addresses */
-/** Peripheral EWM base address */
-#define EWM_BASE                                 (0x40061000u)
-/** Peripheral EWM base pointer */
-#define EWM                                      ((EWM_Type *)EWM_BASE)
-/** Array initializer of EWM peripheral base addresses */
-#define EWM_BASE_ADDRS                           { EWM_BASE }
-/** Array initializer of EWM peripheral base pointers */
-#define EWM_BASE_PTRS                            { EWM }
-/** Interrupt vectors for the EWM peripheral type */
-#define EWM_IRQS                                 { WDOG_EWM_IRQn }
-
-/*!
- * @}
- */ /* end of group EWM_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- FB Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup FB_Peripheral_Access_Layer FB Peripheral Access Layer
- * @{
- */
-
-/** FB - Register Layout Typedef */
-typedef struct {
-  struct {                                         /* offset: 0x0, array step: 0xC */
-    __IO uint32_t CSAR;                              /**< Chip Select Address Register, array offset: 0x0, array step: 0xC */
-    __IO uint32_t CSMR;                              /**< Chip Select Mask Register, array offset: 0x4, array step: 0xC */
-    __IO uint32_t CSCR;                              /**< Chip Select Control Register, array offset: 0x8, array step: 0xC */
-  } CS[6];
-       uint8_t RESERVED_0[24];
-  __IO uint32_t CSPMCR;                            /**< Chip Select port Multiplexing Control Register, offset: 0x60 */
-} FB_Type;
-
-/* ----------------------------------------------------------------------------
-   -- FB Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup FB_Register_Masks FB Register Masks
- * @{
- */
-
-/*! @name CSAR - Chip Select Address Register */
-#define FB_CSAR_BA_MASK                          (0xFFFF0000U)
-#define FB_CSAR_BA_SHIFT                         (16U)
-#define FB_CSAR_BA(x)                            (((uint32_t)(((uint32_t)(x)) << FB_CSAR_BA_SHIFT)) & FB_CSAR_BA_MASK)
-
-/* The count of FB_CSAR */
-#define FB_CSAR_COUNT                            (6U)
-
-/*! @name CSMR - Chip Select Mask Register */
-#define FB_CSMR_V_MASK                           (0x1U)
-#define FB_CSMR_V_SHIFT                          (0U)
-#define FB_CSMR_V(x)                             (((uint32_t)(((uint32_t)(x)) << FB_CSMR_V_SHIFT)) & FB_CSMR_V_MASK)
-#define FB_CSMR_WP_MASK                          (0x100U)
-#define FB_CSMR_WP_SHIFT                         (8U)
-#define FB_CSMR_WP(x)                            (((uint32_t)(((uint32_t)(x)) << FB_CSMR_WP_SHIFT)) & FB_CSMR_WP_MASK)
-#define FB_CSMR_BAM_MASK                         (0xFFFF0000U)
-#define FB_CSMR_BAM_SHIFT                        (16U)
-#define FB_CSMR_BAM(x)                           (((uint32_t)(((uint32_t)(x)) << FB_CSMR_BAM_SHIFT)) & FB_CSMR_BAM_MASK)
-
-/* The count of FB_CSMR */
-#define FB_CSMR_COUNT                            (6U)
-
-/*! @name CSCR - Chip Select Control Register */
-#define FB_CSCR_BSTW_MASK                        (0x8U)
-#define FB_CSCR_BSTW_SHIFT                       (3U)
-#define FB_CSCR_BSTW(x)                          (((uint32_t)(((uint32_t)(x)) << FB_CSCR_BSTW_SHIFT)) & FB_CSCR_BSTW_MASK)
-#define FB_CSCR_BSTR_MASK                        (0x10U)
-#define FB_CSCR_BSTR_SHIFT                       (4U)
-#define FB_CSCR_BSTR(x)                          (((uint32_t)(((uint32_t)(x)) << FB_CSCR_BSTR_SHIFT)) & FB_CSCR_BSTR_MASK)
-#define FB_CSCR_BEM_MASK                         (0x20U)
-#define FB_CSCR_BEM_SHIFT                        (5U)
-#define FB_CSCR_BEM(x)                           (((uint32_t)(((uint32_t)(x)) << FB_CSCR_BEM_SHIFT)) & FB_CSCR_BEM_MASK)
-#define FB_CSCR_PS_MASK                          (0xC0U)
-#define FB_CSCR_PS_SHIFT                         (6U)
-#define FB_CSCR_PS(x)                            (((uint32_t)(((uint32_t)(x)) << FB_CSCR_PS_SHIFT)) & FB_CSCR_PS_MASK)
-#define FB_CSCR_AA_MASK                          (0x100U)
-#define FB_CSCR_AA_SHIFT                         (8U)
-#define FB_CSCR_AA(x)                            (((uint32_t)(((uint32_t)(x)) << FB_CSCR_AA_SHIFT)) & FB_CSCR_AA_MASK)
-#define FB_CSCR_BLS_MASK                         (0x200U)
-#define FB_CSCR_BLS_SHIFT                        (9U)
-#define FB_CSCR_BLS(x)                           (((uint32_t)(((uint32_t)(x)) << FB_CSCR_BLS_SHIFT)) & FB_CSCR_BLS_MASK)
-#define FB_CSCR_WS_MASK                          (0xFC00U)
-#define FB_CSCR_WS_SHIFT                         (10U)
-#define FB_CSCR_WS(x)                            (((uint32_t)(((uint32_t)(x)) << FB_CSCR_WS_SHIFT)) & FB_CSCR_WS_MASK)
-#define FB_CSCR_WRAH_MASK                        (0x30000U)
-#define FB_CSCR_WRAH_SHIFT                       (16U)
-#define FB_CSCR_WRAH(x)                          (((uint32_t)(((uint32_t)(x)) << FB_CSCR_WRAH_SHIFT)) & FB_CSCR_WRAH_MASK)
-#define FB_CSCR_RDAH_MASK                        (0xC0000U)
-#define FB_CSCR_RDAH_SHIFT                       (18U)
-#define FB_CSCR_RDAH(x)                          (((uint32_t)(((uint32_t)(x)) << FB_CSCR_RDAH_SHIFT)) & FB_CSCR_RDAH_MASK)
-#define FB_CSCR_ASET_MASK                        (0x300000U)
-#define FB_CSCR_ASET_SHIFT                       (20U)
-#define FB_CSCR_ASET(x)                          (((uint32_t)(((uint32_t)(x)) << FB_CSCR_ASET_SHIFT)) & FB_CSCR_ASET_MASK)
-#define FB_CSCR_EXTS_MASK                        (0x400000U)
-#define FB_CSCR_EXTS_SHIFT                       (22U)
-#define FB_CSCR_EXTS(x)                          (((uint32_t)(((uint32_t)(x)) << FB_CSCR_EXTS_SHIFT)) & FB_CSCR_EXTS_MASK)
-#define FB_CSCR_SWSEN_MASK                       (0x800000U)
-#define FB_CSCR_SWSEN_SHIFT                      (23U)
-#define FB_CSCR_SWSEN(x)                         (((uint32_t)(((uint32_t)(x)) << FB_CSCR_SWSEN_SHIFT)) & FB_CSCR_SWSEN_MASK)
-#define FB_CSCR_SWS_MASK                         (0xFC000000U)
-#define FB_CSCR_SWS_SHIFT                        (26U)
-#define FB_CSCR_SWS(x)                           (((uint32_t)(((uint32_t)(x)) << FB_CSCR_SWS_SHIFT)) & FB_CSCR_SWS_MASK)
-
-/* The count of FB_CSCR */
-#define FB_CSCR_COUNT                            (6U)
-
-/*! @name CSPMCR - Chip Select port Multiplexing Control Register */
-#define FB_CSPMCR_GROUP5_MASK                    (0xF000U)
-#define FB_CSPMCR_GROUP5_SHIFT                   (12U)
-#define FB_CSPMCR_GROUP5(x)                      (((uint32_t)(((uint32_t)(x)) << FB_CSPMCR_GROUP5_SHIFT)) & FB_CSPMCR_GROUP5_MASK)
-#define FB_CSPMCR_GROUP4_MASK                    (0xF0000U)
-#define FB_CSPMCR_GROUP4_SHIFT                   (16U)
-#define FB_CSPMCR_GROUP4(x)                      (((uint32_t)(((uint32_t)(x)) << FB_CSPMCR_GROUP4_SHIFT)) & FB_CSPMCR_GROUP4_MASK)
-#define FB_CSPMCR_GROUP3_MASK                    (0xF00000U)
-#define FB_CSPMCR_GROUP3_SHIFT                   (20U)
-#define FB_CSPMCR_GROUP3(x)                      (((uint32_t)(((uint32_t)(x)) << FB_CSPMCR_GROUP3_SHIFT)) & FB_CSPMCR_GROUP3_MASK)
-#define FB_CSPMCR_GROUP2_MASK                    (0xF000000U)
-#define FB_CSPMCR_GROUP2_SHIFT                   (24U)
-#define FB_CSPMCR_GROUP2(x)                      (((uint32_t)(((uint32_t)(x)) << FB_CSPMCR_GROUP2_SHIFT)) & FB_CSPMCR_GROUP2_MASK)
-#define FB_CSPMCR_GROUP1_MASK                    (0xF0000000U)
-#define FB_CSPMCR_GROUP1_SHIFT                   (28U)
-#define FB_CSPMCR_GROUP1(x)                      (((uint32_t)(((uint32_t)(x)) << FB_CSPMCR_GROUP1_SHIFT)) & FB_CSPMCR_GROUP1_MASK)
-
-
-/*!
- * @}
- */ /* end of group FB_Register_Masks */
-
-
-/* FB - Peripheral instance base addresses */
-/** Peripheral FB base address */
-#define FB_BASE                                  (0x4000C000u)
-/** Peripheral FB base pointer */
-#define FB                                       ((FB_Type *)FB_BASE)
-/** Array initializer of FB peripheral base addresses */
-#define FB_BASE_ADDRS                            { FB_BASE }
-/** Array initializer of FB peripheral base pointers */
-#define FB_BASE_PTRS                             { FB }
-
-/*!
- * @}
- */ /* end of group FB_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- FMC Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup FMC_Peripheral_Access_Layer FMC Peripheral Access Layer
- * @{
- */
-
-/** FMC - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t PFAPR;                             /**< Flash Access Protection Register, offset: 0x0 */
-  __IO uint32_t PFB0CR;                            /**< Flash Bank 0 Control Register, offset: 0x4 */
-  __IO uint32_t PFB1CR;                            /**< Flash Bank 1 Control Register, offset: 0x8 */
-       uint8_t RESERVED_0[244];
-  __IO uint32_t TAGVDW0S[4];                       /**< Cache Tag Storage, array offset: 0x100, array step: 0x4 */
-  __IO uint32_t TAGVDW1S[4];                       /**< Cache Tag Storage, array offset: 0x110, array step: 0x4 */
-  __IO uint32_t TAGVDW2S[4];                       /**< Cache Tag Storage, array offset: 0x120, array step: 0x4 */
-  __IO uint32_t TAGVDW3S[4];                       /**< Cache Tag Storage, array offset: 0x130, array step: 0x4 */
-       uint8_t RESERVED_1[192];
-  struct {                                         /* offset: 0x200, array step: index*0x20, index2*0x8 */
-    __IO uint32_t DATA_U;                            /**< Cache Data Storage (upper word), array offset: 0x200, array step: index*0x20, index2*0x8 */
-    __IO uint32_t DATA_L;                            /**< Cache Data Storage (lower word), array offset: 0x204, array step: index*0x20, index2*0x8 */
-  } SET[4][4];
-} FMC_Type;
-
-/* ----------------------------------------------------------------------------
-   -- FMC Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup FMC_Register_Masks FMC Register Masks
- * @{
- */
-
-/*! @name PFAPR - Flash Access Protection Register */
-#define FMC_PFAPR_M0AP_MASK                      (0x3U)
-#define FMC_PFAPR_M0AP_SHIFT                     (0U)
-#define FMC_PFAPR_M0AP(x)                        (((uint32_t)(((uint32_t)(x)) << FMC_PFAPR_M0AP_SHIFT)) & FMC_PFAPR_M0AP_MASK)
-#define FMC_PFAPR_M1AP_MASK                      (0xCU)
-#define FMC_PFAPR_M1AP_SHIFT                     (2U)
-#define FMC_PFAPR_M1AP(x)                        (((uint32_t)(((uint32_t)(x)) << FMC_PFAPR_M1AP_SHIFT)) & FMC_PFAPR_M1AP_MASK)
-#define FMC_PFAPR_M2AP_MASK                      (0x30U)
-#define FMC_PFAPR_M2AP_SHIFT                     (4U)
-#define FMC_PFAPR_M2AP(x)                        (((uint32_t)(((uint32_t)(x)) << FMC_PFAPR_M2AP_SHIFT)) & FMC_PFAPR_M2AP_MASK)
-#define FMC_PFAPR_M3AP_MASK                      (0xC0U)
-#define FMC_PFAPR_M3AP_SHIFT                     (6U)
-#define FMC_PFAPR_M3AP(x)                        (((uint32_t)(((uint32_t)(x)) << FMC_PFAPR_M3AP_SHIFT)) & FMC_PFAPR_M3AP_MASK)
-#define FMC_PFAPR_M4AP_MASK                      (0x300U)
-#define FMC_PFAPR_M4AP_SHIFT                     (8U)
-#define FMC_PFAPR_M4AP(x)                        (((uint32_t)(((uint32_t)(x)) << FMC_PFAPR_M4AP_SHIFT)) & FMC_PFAPR_M4AP_MASK)
-#define FMC_PFAPR_M5AP_MASK                      (0xC00U)
-#define FMC_PFAPR_M5AP_SHIFT                     (10U)
-#define FMC_PFAPR_M5AP(x)                        (((uint32_t)(((uint32_t)(x)) << FMC_PFAPR_M5AP_SHIFT)) & FMC_PFAPR_M5AP_MASK)
-#define FMC_PFAPR_M6AP_MASK                      (0x3000U)
-#define FMC_PFAPR_M6AP_SHIFT                     (12U)
-#define FMC_PFAPR_M6AP(x)                        (((uint32_t)(((uint32_t)(x)) << FMC_PFAPR_M6AP_SHIFT)) & FMC_PFAPR_M6AP_MASK)
-#define FMC_PFAPR_M7AP_MASK                      (0xC000U)
-#define FMC_PFAPR_M7AP_SHIFT                     (14U)
-#define FMC_PFAPR_M7AP(x)                        (((uint32_t)(((uint32_t)(x)) << FMC_PFAPR_M7AP_SHIFT)) & FMC_PFAPR_M7AP_MASK)
-#define FMC_PFAPR_M0PFD_MASK                     (0x10000U)
-#define FMC_PFAPR_M0PFD_SHIFT                    (16U)
-#define FMC_PFAPR_M0PFD(x)                       (((uint32_t)(((uint32_t)(x)) << FMC_PFAPR_M0PFD_SHIFT)) & FMC_PFAPR_M0PFD_MASK)
-#define FMC_PFAPR_M1PFD_MASK                     (0x20000U)
-#define FMC_PFAPR_M1PFD_SHIFT                    (17U)
-#define FMC_PFAPR_M1PFD(x)                       (((uint32_t)(((uint32_t)(x)) << FMC_PFAPR_M1PFD_SHIFT)) & FMC_PFAPR_M1PFD_MASK)
-#define FMC_PFAPR_M2PFD_MASK                     (0x40000U)
-#define FMC_PFAPR_M2PFD_SHIFT                    (18U)
-#define FMC_PFAPR_M2PFD(x)                       (((uint32_t)(((uint32_t)(x)) << FMC_PFAPR_M2PFD_SHIFT)) & FMC_PFAPR_M2PFD_MASK)
-#define FMC_PFAPR_M3PFD_MASK                     (0x80000U)
-#define FMC_PFAPR_M3PFD_SHIFT                    (19U)
-#define FMC_PFAPR_M3PFD(x)                       (((uint32_t)(((uint32_t)(x)) << FMC_PFAPR_M3PFD_SHIFT)) & FMC_PFAPR_M3PFD_MASK)
-#define FMC_PFAPR_M4PFD_MASK                     (0x100000U)
-#define FMC_PFAPR_M4PFD_SHIFT                    (20U)
-#define FMC_PFAPR_M4PFD(x)                       (((uint32_t)(((uint32_t)(x)) << FMC_PFAPR_M4PFD_SHIFT)) & FMC_PFAPR_M4PFD_MASK)
-#define FMC_PFAPR_M5PFD_MASK                     (0x200000U)
-#define FMC_PFAPR_M5PFD_SHIFT                    (21U)
-#define FMC_PFAPR_M5PFD(x)                       (((uint32_t)(((uint32_t)(x)) << FMC_PFAPR_M5PFD_SHIFT)) & FMC_PFAPR_M5PFD_MASK)
-#define FMC_PFAPR_M6PFD_MASK                     (0x400000U)
-#define FMC_PFAPR_M6PFD_SHIFT                    (22U)
-#define FMC_PFAPR_M6PFD(x)                       (((uint32_t)(((uint32_t)(x)) << FMC_PFAPR_M6PFD_SHIFT)) & FMC_PFAPR_M6PFD_MASK)
-#define FMC_PFAPR_M7PFD_MASK                     (0x800000U)
-#define FMC_PFAPR_M7PFD_SHIFT                    (23U)
-#define FMC_PFAPR_M7PFD(x)                       (((uint32_t)(((uint32_t)(x)) << FMC_PFAPR_M7PFD_SHIFT)) & FMC_PFAPR_M7PFD_MASK)
-
-/*! @name PFB0CR - Flash Bank 0 Control Register */
-#define FMC_PFB0CR_B0SEBE_MASK                   (0x1U)
-#define FMC_PFB0CR_B0SEBE_SHIFT                  (0U)
-#define FMC_PFB0CR_B0SEBE(x)                     (((uint32_t)(((uint32_t)(x)) << FMC_PFB0CR_B0SEBE_SHIFT)) & FMC_PFB0CR_B0SEBE_MASK)
-#define FMC_PFB0CR_B0IPE_MASK                    (0x2U)
-#define FMC_PFB0CR_B0IPE_SHIFT                   (1U)
-#define FMC_PFB0CR_B0IPE(x)                      (((uint32_t)(((uint32_t)(x)) << FMC_PFB0CR_B0IPE_SHIFT)) & FMC_PFB0CR_B0IPE_MASK)
-#define FMC_PFB0CR_B0DPE_MASK                    (0x4U)
-#define FMC_PFB0CR_B0DPE_SHIFT                   (2U)
-#define FMC_PFB0CR_B0DPE(x)                      (((uint32_t)(((uint32_t)(x)) << FMC_PFB0CR_B0DPE_SHIFT)) & FMC_PFB0CR_B0DPE_MASK)
-#define FMC_PFB0CR_B0ICE_MASK                    (0x8U)
-#define FMC_PFB0CR_B0ICE_SHIFT                   (3U)
-#define FMC_PFB0CR_B0ICE(x)                      (((uint32_t)(((uint32_t)(x)) << FMC_PFB0CR_B0ICE_SHIFT)) & FMC_PFB0CR_B0ICE_MASK)
-#define FMC_PFB0CR_B0DCE_MASK                    (0x10U)
-#define FMC_PFB0CR_B0DCE_SHIFT                   (4U)
-#define FMC_PFB0CR_B0DCE(x)                      (((uint32_t)(((uint32_t)(x)) << FMC_PFB0CR_B0DCE_SHIFT)) & FMC_PFB0CR_B0DCE_MASK)
-#define FMC_PFB0CR_CRC_MASK                      (0xE0U)
-#define FMC_PFB0CR_CRC_SHIFT                     (5U)
-#define FMC_PFB0CR_CRC(x)                        (((uint32_t)(((uint32_t)(x)) << FMC_PFB0CR_CRC_SHIFT)) & FMC_PFB0CR_CRC_MASK)
-#define FMC_PFB0CR_B0MW_MASK                     (0x60000U)
-#define FMC_PFB0CR_B0MW_SHIFT                    (17U)
-#define FMC_PFB0CR_B0MW(x)                       (((uint32_t)(((uint32_t)(x)) << FMC_PFB0CR_B0MW_SHIFT)) & FMC_PFB0CR_B0MW_MASK)
-#define FMC_PFB0CR_S_B_INV_MASK                  (0x80000U)
-#define FMC_PFB0CR_S_B_INV_SHIFT                 (19U)
-#define FMC_PFB0CR_S_B_INV(x)                    (((uint32_t)(((uint32_t)(x)) << FMC_PFB0CR_S_B_INV_SHIFT)) & FMC_PFB0CR_S_B_INV_MASK)
-#define FMC_PFB0CR_CINV_WAY_MASK                 (0xF00000U)
-#define FMC_PFB0CR_CINV_WAY_SHIFT                (20U)
-#define FMC_PFB0CR_CINV_WAY(x)                   (((uint32_t)(((uint32_t)(x)) << FMC_PFB0CR_CINV_WAY_SHIFT)) & FMC_PFB0CR_CINV_WAY_MASK)
-#define FMC_PFB0CR_CLCK_WAY_MASK                 (0xF000000U)
-#define FMC_PFB0CR_CLCK_WAY_SHIFT                (24U)
-#define FMC_PFB0CR_CLCK_WAY(x)                   (((uint32_t)(((uint32_t)(x)) << FMC_PFB0CR_CLCK_WAY_SHIFT)) & FMC_PFB0CR_CLCK_WAY_MASK)
-#define FMC_PFB0CR_B0RWSC_MASK                   (0xF0000000U)
-#define FMC_PFB0CR_B0RWSC_SHIFT                  (28U)
-#define FMC_PFB0CR_B0RWSC(x)                     (((uint32_t)(((uint32_t)(x)) << FMC_PFB0CR_B0RWSC_SHIFT)) & FMC_PFB0CR_B0RWSC_MASK)
-
-/*! @name PFB1CR - Flash Bank 1 Control Register */
-#define FMC_PFB1CR_B1SEBE_MASK                   (0x1U)
-#define FMC_PFB1CR_B1SEBE_SHIFT                  (0U)
-#define FMC_PFB1CR_B1SEBE(x)                     (((uint32_t)(((uint32_t)(x)) << FMC_PFB1CR_B1SEBE_SHIFT)) & FMC_PFB1CR_B1SEBE_MASK)
-#define FMC_PFB1CR_B1IPE_MASK                    (0x2U)
-#define FMC_PFB1CR_B1IPE_SHIFT                   (1U)
-#define FMC_PFB1CR_B1IPE(x)                      (((uint32_t)(((uint32_t)(x)) << FMC_PFB1CR_B1IPE_SHIFT)) & FMC_PFB1CR_B1IPE_MASK)
-#define FMC_PFB1CR_B1DPE_MASK                    (0x4U)
-#define FMC_PFB1CR_B1DPE_SHIFT                   (2U)
-#define FMC_PFB1CR_B1DPE(x)                      (((uint32_t)(((uint32_t)(x)) << FMC_PFB1CR_B1DPE_SHIFT)) & FMC_PFB1CR_B1DPE_MASK)
-#define FMC_PFB1CR_B1ICE_MASK                    (0x8U)
-#define FMC_PFB1CR_B1ICE_SHIFT                   (3U)
-#define FMC_PFB1CR_B1ICE(x)                      (((uint32_t)(((uint32_t)(x)) << FMC_PFB1CR_B1ICE_SHIFT)) & FMC_PFB1CR_B1ICE_MASK)
-#define FMC_PFB1CR_B1DCE_MASK                    (0x10U)
-#define FMC_PFB1CR_B1DCE_SHIFT                   (4U)
-#define FMC_PFB1CR_B1DCE(x)                      (((uint32_t)(((uint32_t)(x)) << FMC_PFB1CR_B1DCE_SHIFT)) & FMC_PFB1CR_B1DCE_MASK)
-#define FMC_PFB1CR_B1MW_MASK                     (0x60000U)
-#define FMC_PFB1CR_B1MW_SHIFT                    (17U)
-#define FMC_PFB1CR_B1MW(x)                       (((uint32_t)(((uint32_t)(x)) << FMC_PFB1CR_B1MW_SHIFT)) & FMC_PFB1CR_B1MW_MASK)
-#define FMC_PFB1CR_B1RWSC_MASK                   (0xF0000000U)
-#define FMC_PFB1CR_B1RWSC_SHIFT                  (28U)
-#define FMC_PFB1CR_B1RWSC(x)                     (((uint32_t)(((uint32_t)(x)) << FMC_PFB1CR_B1RWSC_SHIFT)) & FMC_PFB1CR_B1RWSC_MASK)
-
-/*! @name TAGVDW0S - Cache Tag Storage */
-#define FMC_TAGVDW0S_valid_MASK                  (0x1U)
-#define FMC_TAGVDW0S_valid_SHIFT                 (0U)
-#define FMC_TAGVDW0S_valid(x)                    (((uint32_t)(((uint32_t)(x)) << FMC_TAGVDW0S_valid_SHIFT)) & FMC_TAGVDW0S_valid_MASK)
-#define FMC_TAGVDW0S_tag_MASK                    (0x7FFE0U)
-#define FMC_TAGVDW0S_tag_SHIFT                   (5U)
-#define FMC_TAGVDW0S_tag(x)                      (((uint32_t)(((uint32_t)(x)) << FMC_TAGVDW0S_tag_SHIFT)) & FMC_TAGVDW0S_tag_MASK)
-
-/* The count of FMC_TAGVDW0S */
-#define FMC_TAGVDW0S_COUNT                       (4U)
-
-/*! @name TAGVDW1S - Cache Tag Storage */
-#define FMC_TAGVDW1S_valid_MASK                  (0x1U)
-#define FMC_TAGVDW1S_valid_SHIFT                 (0U)
-#define FMC_TAGVDW1S_valid(x)                    (((uint32_t)(((uint32_t)(x)) << FMC_TAGVDW1S_valid_SHIFT)) & FMC_TAGVDW1S_valid_MASK)
-#define FMC_TAGVDW1S_tag_MASK                    (0x7FFE0U)
-#define FMC_TAGVDW1S_tag_SHIFT                   (5U)
-#define FMC_TAGVDW1S_tag(x)                      (((uint32_t)(((uint32_t)(x)) << FMC_TAGVDW1S_tag_SHIFT)) & FMC_TAGVDW1S_tag_MASK)
-
-/* The count of FMC_TAGVDW1S */
-#define FMC_TAGVDW1S_COUNT                       (4U)
-
-/*! @name TAGVDW2S - Cache Tag Storage */
-#define FMC_TAGVDW2S_valid_MASK                  (0x1U)
-#define FMC_TAGVDW2S_valid_SHIFT                 (0U)
-#define FMC_TAGVDW2S_valid(x)                    (((uint32_t)(((uint32_t)(x)) << FMC_TAGVDW2S_valid_SHIFT)) & FMC_TAGVDW2S_valid_MASK)
-#define FMC_TAGVDW2S_tag_MASK                    (0x7FFE0U)
-#define FMC_TAGVDW2S_tag_SHIFT                   (5U)
-#define FMC_TAGVDW2S_tag(x)                      (((uint32_t)(((uint32_t)(x)) << FMC_TAGVDW2S_tag_SHIFT)) & FMC_TAGVDW2S_tag_MASK)
-
-/* The count of FMC_TAGVDW2S */
-#define FMC_TAGVDW2S_COUNT                       (4U)
-
-/*! @name TAGVDW3S - Cache Tag Storage */
-#define FMC_TAGVDW3S_valid_MASK                  (0x1U)
-#define FMC_TAGVDW3S_valid_SHIFT                 (0U)
-#define FMC_TAGVDW3S_valid(x)                    (((uint32_t)(((uint32_t)(x)) << FMC_TAGVDW3S_valid_SHIFT)) & FMC_TAGVDW3S_valid_MASK)
-#define FMC_TAGVDW3S_tag_MASK                    (0x7FFE0U)
-#define FMC_TAGVDW3S_tag_SHIFT                   (5U)
-#define FMC_TAGVDW3S_tag(x)                      (((uint32_t)(((uint32_t)(x)) << FMC_TAGVDW3S_tag_SHIFT)) & FMC_TAGVDW3S_tag_MASK)
-
-/* The count of FMC_TAGVDW3S */
-#define FMC_TAGVDW3S_COUNT                       (4U)
-
-/*! @name DATA_U - Cache Data Storage (upper word) */
-#define FMC_DATA_U_data_MASK                     (0xFFFFFFFFU)
-#define FMC_DATA_U_data_SHIFT                    (0U)
-#define FMC_DATA_U_data(x)                       (((uint32_t)(((uint32_t)(x)) << FMC_DATA_U_data_SHIFT)) & FMC_DATA_U_data_MASK)
-
-/* The count of FMC_DATA_U */
-#define FMC_DATA_U_COUNT                         (4U)
-
-/* The count of FMC_DATA_U */
-#define FMC_DATA_U_COUNT2                        (4U)
-
-/*! @name DATA_L - Cache Data Storage (lower word) */
-#define FMC_DATA_L_data_MASK                     (0xFFFFFFFFU)
-#define FMC_DATA_L_data_SHIFT                    (0U)
-#define FMC_DATA_L_data(x)                       (((uint32_t)(((uint32_t)(x)) << FMC_DATA_L_data_SHIFT)) & FMC_DATA_L_data_MASK)
-
-/* The count of FMC_DATA_L */
-#define FMC_DATA_L_COUNT                         (4U)
-
-/* The count of FMC_DATA_L */
-#define FMC_DATA_L_COUNT2                        (4U)
-
-
-/*!
- * @}
- */ /* end of group FMC_Register_Masks */
-
-
-/* FMC - Peripheral instance base addresses */
-/** Peripheral FMC base address */
-#define FMC_BASE                                 (0x4001F000u)
-/** Peripheral FMC base pointer */
-#define FMC                                      ((FMC_Type *)FMC_BASE)
-/** Array initializer of FMC peripheral base addresses */
-#define FMC_BASE_ADDRS                           { FMC_BASE }
-/** Array initializer of FMC peripheral base pointers */
-#define FMC_BASE_PTRS                            { FMC }
-
-/*!
- * @}
- */ /* end of group FMC_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- FTFE Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup FTFE_Peripheral_Access_Layer FTFE Peripheral Access Layer
- * @{
- */
-
-/** FTFE - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t FSTAT;                              /**< Flash Status Register, offset: 0x0 */
-  __IO uint8_t FCNFG;                              /**< Flash Configuration Register, offset: 0x1 */
-  __I  uint8_t FSEC;                               /**< Flash Security Register, offset: 0x2 */
-  __I  uint8_t FOPT;                               /**< Flash Option Register, offset: 0x3 */
-  __IO uint8_t FCCOB3;                             /**< Flash Common Command Object Registers, offset: 0x4 */
-  __IO uint8_t FCCOB2;                             /**< Flash Common Command Object Registers, offset: 0x5 */
-  __IO uint8_t FCCOB1;                             /**< Flash Common Command Object Registers, offset: 0x6 */
-  __IO uint8_t FCCOB0;                             /**< Flash Common Command Object Registers, offset: 0x7 */
-  __IO uint8_t FCCOB7;                             /**< Flash Common Command Object Registers, offset: 0x8 */
-  __IO uint8_t FCCOB6;                             /**< Flash Common Command Object Registers, offset: 0x9 */
-  __IO uint8_t FCCOB5;                             /**< Flash Common Command Object Registers, offset: 0xA */
-  __IO uint8_t FCCOB4;                             /**< Flash Common Command Object Registers, offset: 0xB */
-  __IO uint8_t FCCOBB;                             /**< Flash Common Command Object Registers, offset: 0xC */
-  __IO uint8_t FCCOBA;                             /**< Flash Common Command Object Registers, offset: 0xD */
-  __IO uint8_t FCCOB9;                             /**< Flash Common Command Object Registers, offset: 0xE */
-  __IO uint8_t FCCOB8;                             /**< Flash Common Command Object Registers, offset: 0xF */
-  __IO uint8_t FPROT3;                             /**< Program Flash Protection Registers, offset: 0x10 */
-  __IO uint8_t FPROT2;                             /**< Program Flash Protection Registers, offset: 0x11 */
-  __IO uint8_t FPROT1;                             /**< Program Flash Protection Registers, offset: 0x12 */
-  __IO uint8_t FPROT0;                             /**< Program Flash Protection Registers, offset: 0x13 */
-       uint8_t RESERVED_0[2];
-  __IO uint8_t FEPROT;                             /**< EEPROM Protection Register, offset: 0x16 */
-  __IO uint8_t FDPROT;                             /**< Data Flash Protection Register, offset: 0x17 */
-} FTFE_Type;
-
-/* ----------------------------------------------------------------------------
-   -- FTFE Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup FTFE_Register_Masks FTFE Register Masks
- * @{
- */
-
-/*! @name FSTAT - Flash Status Register */
-#define FTFE_FSTAT_MGSTAT0_MASK                  (0x1U)
-#define FTFE_FSTAT_MGSTAT0_SHIFT                 (0U)
-#define FTFE_FSTAT_MGSTAT0(x)                    (((uint8_t)(((uint8_t)(x)) << FTFE_FSTAT_MGSTAT0_SHIFT)) & FTFE_FSTAT_MGSTAT0_MASK)
-#define FTFE_FSTAT_FPVIOL_MASK                   (0x10U)
-#define FTFE_FSTAT_FPVIOL_SHIFT                  (4U)
-#define FTFE_FSTAT_FPVIOL(x)                     (((uint8_t)(((uint8_t)(x)) << FTFE_FSTAT_FPVIOL_SHIFT)) & FTFE_FSTAT_FPVIOL_MASK)
-#define FTFE_FSTAT_ACCERR_MASK                   (0x20U)
-#define FTFE_FSTAT_ACCERR_SHIFT                  (5U)
-#define FTFE_FSTAT_ACCERR(x)                     (((uint8_t)(((uint8_t)(x)) << FTFE_FSTAT_ACCERR_SHIFT)) & FTFE_FSTAT_ACCERR_MASK)
-#define FTFE_FSTAT_RDCOLERR_MASK                 (0x40U)
-#define FTFE_FSTAT_RDCOLERR_SHIFT                (6U)
-#define FTFE_FSTAT_RDCOLERR(x)                   (((uint8_t)(((uint8_t)(x)) << FTFE_FSTAT_RDCOLERR_SHIFT)) & FTFE_FSTAT_RDCOLERR_MASK)
-#define FTFE_FSTAT_CCIF_MASK                     (0x80U)
-#define FTFE_FSTAT_CCIF_SHIFT                    (7U)
-#define FTFE_FSTAT_CCIF(x)                       (((uint8_t)(((uint8_t)(x)) << FTFE_FSTAT_CCIF_SHIFT)) & FTFE_FSTAT_CCIF_MASK)
-
-/*! @name FCNFG - Flash Configuration Register */
-#define FTFE_FCNFG_EEERDY_MASK                   (0x1U)
-#define FTFE_FCNFG_EEERDY_SHIFT                  (0U)
-#define FTFE_FCNFG_EEERDY(x)                     (((uint8_t)(((uint8_t)(x)) << FTFE_FCNFG_EEERDY_SHIFT)) & FTFE_FCNFG_EEERDY_MASK)
-#define FTFE_FCNFG_RAMRDY_MASK                   (0x2U)
-#define FTFE_FCNFG_RAMRDY_SHIFT                  (1U)
-#define FTFE_FCNFG_RAMRDY(x)                     (((uint8_t)(((uint8_t)(x)) << FTFE_FCNFG_RAMRDY_SHIFT)) & FTFE_FCNFG_RAMRDY_MASK)
-#define FTFE_FCNFG_PFLSH_MASK                    (0x4U)
-#define FTFE_FCNFG_PFLSH_SHIFT                   (2U)
-#define FTFE_FCNFG_PFLSH(x)                      (((uint8_t)(((uint8_t)(x)) << FTFE_FCNFG_PFLSH_SHIFT)) & FTFE_FCNFG_PFLSH_MASK)
-#define FTFE_FCNFG_SWAP_MASK                     (0x8U)
-#define FTFE_FCNFG_SWAP_SHIFT                    (3U)
-#define FTFE_FCNFG_SWAP(x)                       (((uint8_t)(((uint8_t)(x)) << FTFE_FCNFG_SWAP_SHIFT)) & FTFE_FCNFG_SWAP_MASK)
-#define FTFE_FCNFG_ERSSUSP_MASK                  (0x10U)
-#define FTFE_FCNFG_ERSSUSP_SHIFT                 (4U)
-#define FTFE_FCNFG_ERSSUSP(x)                    (((uint8_t)(((uint8_t)(x)) << FTFE_FCNFG_ERSSUSP_SHIFT)) & FTFE_FCNFG_ERSSUSP_MASK)
-#define FTFE_FCNFG_ERSAREQ_MASK                  (0x20U)
-#define FTFE_FCNFG_ERSAREQ_SHIFT                 (5U)
-#define FTFE_FCNFG_ERSAREQ(x)                    (((uint8_t)(((uint8_t)(x)) << FTFE_FCNFG_ERSAREQ_SHIFT)) & FTFE_FCNFG_ERSAREQ_MASK)
-#define FTFE_FCNFG_RDCOLLIE_MASK                 (0x40U)
-#define FTFE_FCNFG_RDCOLLIE_SHIFT                (6U)
-#define FTFE_FCNFG_RDCOLLIE(x)                   (((uint8_t)(((uint8_t)(x)) << FTFE_FCNFG_RDCOLLIE_SHIFT)) & FTFE_FCNFG_RDCOLLIE_MASK)
-#define FTFE_FCNFG_CCIE_MASK                     (0x80U)
-#define FTFE_FCNFG_CCIE_SHIFT                    (7U)
-#define FTFE_FCNFG_CCIE(x)                       (((uint8_t)(((uint8_t)(x)) << FTFE_FCNFG_CCIE_SHIFT)) & FTFE_FCNFG_CCIE_MASK)
-
-/*! @name FSEC - Flash Security Register */
-#define FTFE_FSEC_SEC_MASK                       (0x3U)
-#define FTFE_FSEC_SEC_SHIFT                      (0U)
-#define FTFE_FSEC_SEC(x)                         (((uint8_t)(((uint8_t)(x)) << FTFE_FSEC_SEC_SHIFT)) & FTFE_FSEC_SEC_MASK)
-#define FTFE_FSEC_FSLACC_MASK                    (0xCU)
-#define FTFE_FSEC_FSLACC_SHIFT                   (2U)
-#define FTFE_FSEC_FSLACC(x)                      (((uint8_t)(((uint8_t)(x)) << FTFE_FSEC_FSLACC_SHIFT)) & FTFE_FSEC_FSLACC_MASK)
-#define FTFE_FSEC_MEEN_MASK                      (0x30U)
-#define FTFE_FSEC_MEEN_SHIFT                     (4U)
-#define FTFE_FSEC_MEEN(x)                        (((uint8_t)(((uint8_t)(x)) << FTFE_FSEC_MEEN_SHIFT)) & FTFE_FSEC_MEEN_MASK)
-#define FTFE_FSEC_KEYEN_MASK                     (0xC0U)
-#define FTFE_FSEC_KEYEN_SHIFT                    (6U)
-#define FTFE_FSEC_KEYEN(x)                       (((uint8_t)(((uint8_t)(x)) << FTFE_FSEC_KEYEN_SHIFT)) & FTFE_FSEC_KEYEN_MASK)
-
-/*! @name FOPT - Flash Option Register */
-#define FTFE_FOPT_OPT_MASK                       (0xFFU)
-#define FTFE_FOPT_OPT_SHIFT                      (0U)
-#define FTFE_FOPT_OPT(x)                         (((uint8_t)(((uint8_t)(x)) << FTFE_FOPT_OPT_SHIFT)) & FTFE_FOPT_OPT_MASK)
-
-/*! @name FCCOB3 - Flash Common Command Object Registers */
-#define FTFE_FCCOB3_CCOBn_MASK                   (0xFFU)
-#define FTFE_FCCOB3_CCOBn_SHIFT                  (0U)
-#define FTFE_FCCOB3_CCOBn(x)                     (((uint8_t)(((uint8_t)(x)) << FTFE_FCCOB3_CCOBn_SHIFT)) & FTFE_FCCOB3_CCOBn_MASK)
-
-/*! @name FCCOB2 - Flash Common Command Object Registers */
-#define FTFE_FCCOB2_CCOBn_MASK                   (0xFFU)
-#define FTFE_FCCOB2_CCOBn_SHIFT                  (0U)
-#define FTFE_FCCOB2_CCOBn(x)                     (((uint8_t)(((uint8_t)(x)) << FTFE_FCCOB2_CCOBn_SHIFT)) & FTFE_FCCOB2_CCOBn_MASK)
-
-/*! @name FCCOB1 - Flash Common Command Object Registers */
-#define FTFE_FCCOB1_CCOBn_MASK                   (0xFFU)
-#define FTFE_FCCOB1_CCOBn_SHIFT                  (0U)
-#define FTFE_FCCOB1_CCOBn(x)                     (((uint8_t)(((uint8_t)(x)) << FTFE_FCCOB1_CCOBn_SHIFT)) & FTFE_FCCOB1_CCOBn_MASK)
-
-/*! @name FCCOB0 - Flash Common Command Object Registers */
-#define FTFE_FCCOB0_CCOBn_MASK                   (0xFFU)
-#define FTFE_FCCOB0_CCOBn_SHIFT                  (0U)
-#define FTFE_FCCOB0_CCOBn(x)                     (((uint8_t)(((uint8_t)(x)) << FTFE_FCCOB0_CCOBn_SHIFT)) & FTFE_FCCOB0_CCOBn_MASK)
-
-/*! @name FCCOB7 - Flash Common Command Object Registers */
-#define FTFE_FCCOB7_CCOBn_MASK                   (0xFFU)
-#define FTFE_FCCOB7_CCOBn_SHIFT                  (0U)
-#define FTFE_FCCOB7_CCOBn(x)                     (((uint8_t)(((uint8_t)(x)) << FTFE_FCCOB7_CCOBn_SHIFT)) & FTFE_FCCOB7_CCOBn_MASK)
-
-/*! @name FCCOB6 - Flash Common Command Object Registers */
-#define FTFE_FCCOB6_CCOBn_MASK                   (0xFFU)
-#define FTFE_FCCOB6_CCOBn_SHIFT                  (0U)
-#define FTFE_FCCOB6_CCOBn(x)                     (((uint8_t)(((uint8_t)(x)) << FTFE_FCCOB6_CCOBn_SHIFT)) & FTFE_FCCOB6_CCOBn_MASK)
-
-/*! @name FCCOB5 - Flash Common Command Object Registers */
-#define FTFE_FCCOB5_CCOBn_MASK                   (0xFFU)
-#define FTFE_FCCOB5_CCOBn_SHIFT                  (0U)
-#define FTFE_FCCOB5_CCOBn(x)                     (((uint8_t)(((uint8_t)(x)) << FTFE_FCCOB5_CCOBn_SHIFT)) & FTFE_FCCOB5_CCOBn_MASK)
-
-/*! @name FCCOB4 - Flash Common Command Object Registers */
-#define FTFE_FCCOB4_CCOBn_MASK                   (0xFFU)
-#define FTFE_FCCOB4_CCOBn_SHIFT                  (0U)
-#define FTFE_FCCOB4_CCOBn(x)                     (((uint8_t)(((uint8_t)(x)) << FTFE_FCCOB4_CCOBn_SHIFT)) & FTFE_FCCOB4_CCOBn_MASK)
-
-/*! @name FCCOBB - Flash Common Command Object Registers */
-#define FTFE_FCCOBB_CCOBn_MASK                   (0xFFU)
-#define FTFE_FCCOBB_CCOBn_SHIFT                  (0U)
-#define FTFE_FCCOBB_CCOBn(x)                     (((uint8_t)(((uint8_t)(x)) << FTFE_FCCOBB_CCOBn_SHIFT)) & FTFE_FCCOBB_CCOBn_MASK)
-
-/*! @name FCCOBA - Flash Common Command Object Registers */
-#define FTFE_FCCOBA_CCOBn_MASK                   (0xFFU)
-#define FTFE_FCCOBA_CCOBn_SHIFT                  (0U)
-#define FTFE_FCCOBA_CCOBn(x)                     (((uint8_t)(((uint8_t)(x)) << FTFE_FCCOBA_CCOBn_SHIFT)) & FTFE_FCCOBA_CCOBn_MASK)
-
-/*! @name FCCOB9 - Flash Common Command Object Registers */
-#define FTFE_FCCOB9_CCOBn_MASK                   (0xFFU)
-#define FTFE_FCCOB9_CCOBn_SHIFT                  (0U)
-#define FTFE_FCCOB9_CCOBn(x)                     (((uint8_t)(((uint8_t)(x)) << FTFE_FCCOB9_CCOBn_SHIFT)) & FTFE_FCCOB9_CCOBn_MASK)
-
-/*! @name FCCOB8 - Flash Common Command Object Registers */
-#define FTFE_FCCOB8_CCOBn_MASK                   (0xFFU)
-#define FTFE_FCCOB8_CCOBn_SHIFT                  (0U)
-#define FTFE_FCCOB8_CCOBn(x)                     (((uint8_t)(((uint8_t)(x)) << FTFE_FCCOB8_CCOBn_SHIFT)) & FTFE_FCCOB8_CCOBn_MASK)
-
-/*! @name FPROT3 - Program Flash Protection Registers */
-#define FTFE_FPROT3_PROT_MASK                    (0xFFU)
-#define FTFE_FPROT3_PROT_SHIFT                   (0U)
-#define FTFE_FPROT3_PROT(x)                      (((uint8_t)(((uint8_t)(x)) << FTFE_FPROT3_PROT_SHIFT)) & FTFE_FPROT3_PROT_MASK)
-
-/*! @name FPROT2 - Program Flash Protection Registers */
-#define FTFE_FPROT2_PROT_MASK                    (0xFFU)
-#define FTFE_FPROT2_PROT_SHIFT                   (0U)
-#define FTFE_FPROT2_PROT(x)                      (((uint8_t)(((uint8_t)(x)) << FTFE_FPROT2_PROT_SHIFT)) & FTFE_FPROT2_PROT_MASK)
-
-/*! @name FPROT1 - Program Flash Protection Registers */
-#define FTFE_FPROT1_PROT_MASK                    (0xFFU)
-#define FTFE_FPROT1_PROT_SHIFT                   (0U)
-#define FTFE_FPROT1_PROT(x)                      (((uint8_t)(((uint8_t)(x)) << FTFE_FPROT1_PROT_SHIFT)) & FTFE_FPROT1_PROT_MASK)
-
-/*! @name FPROT0 - Program Flash Protection Registers */
-#define FTFE_FPROT0_PROT_MASK                    (0xFFU)
-#define FTFE_FPROT0_PROT_SHIFT                   (0U)
-#define FTFE_FPROT0_PROT(x)                      (((uint8_t)(((uint8_t)(x)) << FTFE_FPROT0_PROT_SHIFT)) & FTFE_FPROT0_PROT_MASK)
-
-/*! @name FEPROT - EEPROM Protection Register */
-#define FTFE_FEPROT_EPROT_MASK                   (0xFFU)
-#define FTFE_FEPROT_EPROT_SHIFT                  (0U)
-#define FTFE_FEPROT_EPROT(x)                     (((uint8_t)(((uint8_t)(x)) << FTFE_FEPROT_EPROT_SHIFT)) & FTFE_FEPROT_EPROT_MASK)
-
-/*! @name FDPROT - Data Flash Protection Register */
-#define FTFE_FDPROT_DPROT_MASK                   (0xFFU)
-#define FTFE_FDPROT_DPROT_SHIFT                  (0U)
-#define FTFE_FDPROT_DPROT(x)                     (((uint8_t)(((uint8_t)(x)) << FTFE_FDPROT_DPROT_SHIFT)) & FTFE_FDPROT_DPROT_MASK)
-
-
-/*!
- * @}
- */ /* end of group FTFE_Register_Masks */
-
-
-/* FTFE - Peripheral instance base addresses */
-/** Peripheral FTFE base address */
-#define FTFE_BASE                                (0x40020000u)
-/** Peripheral FTFE base pointer */
-#define FTFE                                     ((FTFE_Type *)FTFE_BASE)
-/** Array initializer of FTFE peripheral base addresses */
-#define FTFE_BASE_ADDRS                          { FTFE_BASE }
-/** Array initializer of FTFE peripheral base pointers */
-#define FTFE_BASE_PTRS                           { FTFE }
-/** Interrupt vectors for the FTFE peripheral type */
-#define FTFE_COMMAND_COMPLETE_IRQS               { FTFE_IRQn }
-#define FTFE_READ_COLLISION_IRQS                 { Read_Collision_IRQn }
-
-/*!
- * @}
- */ /* end of group FTFE_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- FTM Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup FTM_Peripheral_Access_Layer FTM Peripheral Access Layer
- * @{
- */
-
-/** FTM - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t SC;                                /**< Status And Control, offset: 0x0 */
-  __IO uint32_t CNT;                               /**< Counter, offset: 0x4 */
-  __IO uint32_t MOD;                               /**< Modulo, offset: 0x8 */
-  struct {                                         /* offset: 0xC, array step: 0x8 */
-    __IO uint32_t CnSC;                              /**< Channel (n) Status And Control, array offset: 0xC, array step: 0x8 */
-    __IO uint32_t CnV;                               /**< Channel (n) Value, array offset: 0x10, array step: 0x8 */
-  } CONTROLS[8];
-  __IO uint32_t CNTIN;                             /**< Counter Initial Value, offset: 0x4C */
-  __IO uint32_t STATUS;                            /**< Capture And Compare Status, offset: 0x50 */
-  __IO uint32_t MODE;                              /**< Features Mode Selection, offset: 0x54 */
-  __IO uint32_t SYNC;                              /**< Synchronization, offset: 0x58 */
-  __IO uint32_t OUTINIT;                           /**< Initial State For Channels Output, offset: 0x5C */
-  __IO uint32_t OUTMASK;                           /**< Output Mask, offset: 0x60 */
-  __IO uint32_t COMBINE;                           /**< Function For Linked Channels, offset: 0x64 */
-  __IO uint32_t DEADTIME;                          /**< Deadtime Insertion Control, offset: 0x68 */
-  __IO uint32_t EXTTRIG;                           /**< FTM External Trigger, offset: 0x6C */
-  __IO uint32_t POL;                               /**< Channels Polarity, offset: 0x70 */
-  __IO uint32_t FMS;                               /**< Fault Mode Status, offset: 0x74 */
-  __IO uint32_t FILTER;                            /**< Input Capture Filter Control, offset: 0x78 */
-  __IO uint32_t FLTCTRL;                           /**< Fault Control, offset: 0x7C */
-  __IO uint32_t QDCTRL;                            /**< Quadrature Decoder Control And Status, offset: 0x80 */
-  __IO uint32_t CONF;                              /**< Configuration, offset: 0x84 */
-  __IO uint32_t FLTPOL;                            /**< FTM Fault Input Polarity, offset: 0x88 */
-  __IO uint32_t SYNCONF;                           /**< Synchronization Configuration, offset: 0x8C */
-  __IO uint32_t INVCTRL;                           /**< FTM Inverting Control, offset: 0x90 */
-  __IO uint32_t SWOCTRL;                           /**< FTM Software Output Control, offset: 0x94 */
-  __IO uint32_t PWMLOAD;                           /**< FTM PWM Load, offset: 0x98 */
-} FTM_Type;
-
-/* ----------------------------------------------------------------------------
-   -- FTM Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup FTM_Register_Masks FTM Register Masks
- * @{
- */
-
-/*! @name SC - Status And Control */
-#define FTM_SC_PS_MASK                           (0x7U)
-#define FTM_SC_PS_SHIFT                          (0U)
-#define FTM_SC_PS(x)                             (((uint32_t)(((uint32_t)(x)) << FTM_SC_PS_SHIFT)) & FTM_SC_PS_MASK)
-#define FTM_SC_CLKS_MASK                         (0x18U)
-#define FTM_SC_CLKS_SHIFT                        (3U)
-#define FTM_SC_CLKS(x)                           (((uint32_t)(((uint32_t)(x)) << FTM_SC_CLKS_SHIFT)) & FTM_SC_CLKS_MASK)
-#define FTM_SC_CPWMS_MASK                        (0x20U)
-#define FTM_SC_CPWMS_SHIFT                       (5U)
-#define FTM_SC_CPWMS(x)                          (((uint32_t)(((uint32_t)(x)) << FTM_SC_CPWMS_SHIFT)) & FTM_SC_CPWMS_MASK)
-#define FTM_SC_TOIE_MASK                         (0x40U)
-#define FTM_SC_TOIE_SHIFT                        (6U)
-#define FTM_SC_TOIE(x)                           (((uint32_t)(((uint32_t)(x)) << FTM_SC_TOIE_SHIFT)) & FTM_SC_TOIE_MASK)
-#define FTM_SC_TOF_MASK                          (0x80U)
-#define FTM_SC_TOF_SHIFT                         (7U)
-#define FTM_SC_TOF(x)                            (((uint32_t)(((uint32_t)(x)) << FTM_SC_TOF_SHIFT)) & FTM_SC_TOF_MASK)
-
-/*! @name CNT - Counter */
-#define FTM_CNT_COUNT_MASK                       (0xFFFFU)
-#define FTM_CNT_COUNT_SHIFT                      (0U)
-#define FTM_CNT_COUNT(x)                         (((uint32_t)(((uint32_t)(x)) << FTM_CNT_COUNT_SHIFT)) & FTM_CNT_COUNT_MASK)
-
-/*! @name MOD - Modulo */
-#define FTM_MOD_MOD_MASK                         (0xFFFFU)
-#define FTM_MOD_MOD_SHIFT                        (0U)
-#define FTM_MOD_MOD(x)                           (((uint32_t)(((uint32_t)(x)) << FTM_MOD_MOD_SHIFT)) & FTM_MOD_MOD_MASK)
-
-/*! @name CnSC - Channel (n) Status And Control */
-#define FTM_CnSC_DMA_MASK                        (0x1U)
-#define FTM_CnSC_DMA_SHIFT                       (0U)
-#define FTM_CnSC_DMA(x)                          (((uint32_t)(((uint32_t)(x)) << FTM_CnSC_DMA_SHIFT)) & FTM_CnSC_DMA_MASK)
-#define FTM_CnSC_ELSA_MASK                       (0x4U)
-#define FTM_CnSC_ELSA_SHIFT                      (2U)
-#define FTM_CnSC_ELSA(x)                         (((uint32_t)(((uint32_t)(x)) << FTM_CnSC_ELSA_SHIFT)) & FTM_CnSC_ELSA_MASK)
-#define FTM_CnSC_ELSB_MASK                       (0x8U)
-#define FTM_CnSC_ELSB_SHIFT                      (3U)
-#define FTM_CnSC_ELSB(x)                         (((uint32_t)(((uint32_t)(x)) << FTM_CnSC_ELSB_SHIFT)) & FTM_CnSC_ELSB_MASK)
-#define FTM_CnSC_MSA_MASK                        (0x10U)
-#define FTM_CnSC_MSA_SHIFT                       (4U)
-#define FTM_CnSC_MSA(x)                          (((uint32_t)(((uint32_t)(x)) << FTM_CnSC_MSA_SHIFT)) & FTM_CnSC_MSA_MASK)
-#define FTM_CnSC_MSB_MASK                        (0x20U)
-#define FTM_CnSC_MSB_SHIFT                       (5U)
-#define FTM_CnSC_MSB(x)                          (((uint32_t)(((uint32_t)(x)) << FTM_CnSC_MSB_SHIFT)) & FTM_CnSC_MSB_MASK)
-#define FTM_CnSC_CHIE_MASK                       (0x40U)
-#define FTM_CnSC_CHIE_SHIFT                      (6U)
-#define FTM_CnSC_CHIE(x)                         (((uint32_t)(((uint32_t)(x)) << FTM_CnSC_CHIE_SHIFT)) & FTM_CnSC_CHIE_MASK)
-#define FTM_CnSC_CHF_MASK                        (0x80U)
-#define FTM_CnSC_CHF_SHIFT                       (7U)
-#define FTM_CnSC_CHF(x)                          (((uint32_t)(((uint32_t)(x)) << FTM_CnSC_CHF_SHIFT)) & FTM_CnSC_CHF_MASK)
-
-/* The count of FTM_CnSC */
-#define FTM_CnSC_COUNT                           (8U)
-
-/*! @name CnV - Channel (n) Value */
-#define FTM_CnV_VAL_MASK                         (0xFFFFU)
-#define FTM_CnV_VAL_SHIFT                        (0U)
-#define FTM_CnV_VAL(x)                           (((uint32_t)(((uint32_t)(x)) << FTM_CnV_VAL_SHIFT)) & FTM_CnV_VAL_MASK)
-
-/* The count of FTM_CnV */
-#define FTM_CnV_COUNT                            (8U)
-
-/*! @name CNTIN - Counter Initial Value */
-#define FTM_CNTIN_INIT_MASK                      (0xFFFFU)
-#define FTM_CNTIN_INIT_SHIFT                     (0U)
-#define FTM_CNTIN_INIT(x)                        (((uint32_t)(((uint32_t)(x)) << FTM_CNTIN_INIT_SHIFT)) & FTM_CNTIN_INIT_MASK)
-
-/*! @name STATUS - Capture And Compare Status */
-#define FTM_STATUS_CH0F_MASK                     (0x1U)
-#define FTM_STATUS_CH0F_SHIFT                    (0U)
-#define FTM_STATUS_CH0F(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_STATUS_CH0F_SHIFT)) & FTM_STATUS_CH0F_MASK)
-#define FTM_STATUS_CH1F_MASK                     (0x2U)
-#define FTM_STATUS_CH1F_SHIFT                    (1U)
-#define FTM_STATUS_CH1F(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_STATUS_CH1F_SHIFT)) & FTM_STATUS_CH1F_MASK)
-#define FTM_STATUS_CH2F_MASK                     (0x4U)
-#define FTM_STATUS_CH2F_SHIFT                    (2U)
-#define FTM_STATUS_CH2F(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_STATUS_CH2F_SHIFT)) & FTM_STATUS_CH2F_MASK)
-#define FTM_STATUS_CH3F_MASK                     (0x8U)
-#define FTM_STATUS_CH3F_SHIFT                    (3U)
-#define FTM_STATUS_CH3F(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_STATUS_CH3F_SHIFT)) & FTM_STATUS_CH3F_MASK)
-#define FTM_STATUS_CH4F_MASK                     (0x10U)
-#define FTM_STATUS_CH4F_SHIFT                    (4U)
-#define FTM_STATUS_CH4F(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_STATUS_CH4F_SHIFT)) & FTM_STATUS_CH4F_MASK)
-#define FTM_STATUS_CH5F_MASK                     (0x20U)
-#define FTM_STATUS_CH5F_SHIFT                    (5U)
-#define FTM_STATUS_CH5F(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_STATUS_CH5F_SHIFT)) & FTM_STATUS_CH5F_MASK)
-#define FTM_STATUS_CH6F_MASK                     (0x40U)
-#define FTM_STATUS_CH6F_SHIFT                    (6U)
-#define FTM_STATUS_CH6F(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_STATUS_CH6F_SHIFT)) & FTM_STATUS_CH6F_MASK)
-#define FTM_STATUS_CH7F_MASK                     (0x80U)
-#define FTM_STATUS_CH7F_SHIFT                    (7U)
-#define FTM_STATUS_CH7F(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_STATUS_CH7F_SHIFT)) & FTM_STATUS_CH7F_MASK)
-
-/*! @name MODE - Features Mode Selection */
-#define FTM_MODE_FTMEN_MASK                      (0x1U)
-#define FTM_MODE_FTMEN_SHIFT                     (0U)
-#define FTM_MODE_FTMEN(x)                        (((uint32_t)(((uint32_t)(x)) << FTM_MODE_FTMEN_SHIFT)) & FTM_MODE_FTMEN_MASK)
-#define FTM_MODE_INIT_MASK                       (0x2U)
-#define FTM_MODE_INIT_SHIFT                      (1U)
-#define FTM_MODE_INIT(x)                         (((uint32_t)(((uint32_t)(x)) << FTM_MODE_INIT_SHIFT)) & FTM_MODE_INIT_MASK)
-#define FTM_MODE_WPDIS_MASK                      (0x4U)
-#define FTM_MODE_WPDIS_SHIFT                     (2U)
-#define FTM_MODE_WPDIS(x)                        (((uint32_t)(((uint32_t)(x)) << FTM_MODE_WPDIS_SHIFT)) & FTM_MODE_WPDIS_MASK)
-#define FTM_MODE_PWMSYNC_MASK                    (0x8U)
-#define FTM_MODE_PWMSYNC_SHIFT                   (3U)
-#define FTM_MODE_PWMSYNC(x)                      (((uint32_t)(((uint32_t)(x)) << FTM_MODE_PWMSYNC_SHIFT)) & FTM_MODE_PWMSYNC_MASK)
-#define FTM_MODE_CAPTEST_MASK                    (0x10U)
-#define FTM_MODE_CAPTEST_SHIFT                   (4U)
-#define FTM_MODE_CAPTEST(x)                      (((uint32_t)(((uint32_t)(x)) << FTM_MODE_CAPTEST_SHIFT)) & FTM_MODE_CAPTEST_MASK)
-#define FTM_MODE_FAULTM_MASK                     (0x60U)
-#define FTM_MODE_FAULTM_SHIFT                    (5U)
-#define FTM_MODE_FAULTM(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_MODE_FAULTM_SHIFT)) & FTM_MODE_FAULTM_MASK)
-#define FTM_MODE_FAULTIE_MASK                    (0x80U)
-#define FTM_MODE_FAULTIE_SHIFT                   (7U)
-#define FTM_MODE_FAULTIE(x)                      (((uint32_t)(((uint32_t)(x)) << FTM_MODE_FAULTIE_SHIFT)) & FTM_MODE_FAULTIE_MASK)
-
-/*! @name SYNC - Synchronization */
-#define FTM_SYNC_CNTMIN_MASK                     (0x1U)
-#define FTM_SYNC_CNTMIN_SHIFT                    (0U)
-#define FTM_SYNC_CNTMIN(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_SYNC_CNTMIN_SHIFT)) & FTM_SYNC_CNTMIN_MASK)
-#define FTM_SYNC_CNTMAX_MASK                     (0x2U)
-#define FTM_SYNC_CNTMAX_SHIFT                    (1U)
-#define FTM_SYNC_CNTMAX(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_SYNC_CNTMAX_SHIFT)) & FTM_SYNC_CNTMAX_MASK)
-#define FTM_SYNC_REINIT_MASK                     (0x4U)
-#define FTM_SYNC_REINIT_SHIFT                    (2U)
-#define FTM_SYNC_REINIT(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_SYNC_REINIT_SHIFT)) & FTM_SYNC_REINIT_MASK)
-#define FTM_SYNC_SYNCHOM_MASK                    (0x8U)
-#define FTM_SYNC_SYNCHOM_SHIFT                   (3U)
-#define FTM_SYNC_SYNCHOM(x)                      (((uint32_t)(((uint32_t)(x)) << FTM_SYNC_SYNCHOM_SHIFT)) & FTM_SYNC_SYNCHOM_MASK)
-#define FTM_SYNC_TRIG0_MASK                      (0x10U)
-#define FTM_SYNC_TRIG0_SHIFT                     (4U)
-#define FTM_SYNC_TRIG0(x)                        (((uint32_t)(((uint32_t)(x)) << FTM_SYNC_TRIG0_SHIFT)) & FTM_SYNC_TRIG0_MASK)
-#define FTM_SYNC_TRIG1_MASK                      (0x20U)
-#define FTM_SYNC_TRIG1_SHIFT                     (5U)
-#define FTM_SYNC_TRIG1(x)                        (((uint32_t)(((uint32_t)(x)) << FTM_SYNC_TRIG1_SHIFT)) & FTM_SYNC_TRIG1_MASK)
-#define FTM_SYNC_TRIG2_MASK                      (0x40U)
-#define FTM_SYNC_TRIG2_SHIFT                     (6U)
-#define FTM_SYNC_TRIG2(x)                        (((uint32_t)(((uint32_t)(x)) << FTM_SYNC_TRIG2_SHIFT)) & FTM_SYNC_TRIG2_MASK)
-#define FTM_SYNC_SWSYNC_MASK                     (0x80U)
-#define FTM_SYNC_SWSYNC_SHIFT                    (7U)
-#define FTM_SYNC_SWSYNC(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_SYNC_SWSYNC_SHIFT)) & FTM_SYNC_SWSYNC_MASK)
-
-/*! @name OUTINIT - Initial State For Channels Output */
-#define FTM_OUTINIT_CH0OI_MASK                   (0x1U)
-#define FTM_OUTINIT_CH0OI_SHIFT                  (0U)
-#define FTM_OUTINIT_CH0OI(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_OUTINIT_CH0OI_SHIFT)) & FTM_OUTINIT_CH0OI_MASK)
-#define FTM_OUTINIT_CH1OI_MASK                   (0x2U)
-#define FTM_OUTINIT_CH1OI_SHIFT                  (1U)
-#define FTM_OUTINIT_CH1OI(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_OUTINIT_CH1OI_SHIFT)) & FTM_OUTINIT_CH1OI_MASK)
-#define FTM_OUTINIT_CH2OI_MASK                   (0x4U)
-#define FTM_OUTINIT_CH2OI_SHIFT                  (2U)
-#define FTM_OUTINIT_CH2OI(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_OUTINIT_CH2OI_SHIFT)) & FTM_OUTINIT_CH2OI_MASK)
-#define FTM_OUTINIT_CH3OI_MASK                   (0x8U)
-#define FTM_OUTINIT_CH3OI_SHIFT                  (3U)
-#define FTM_OUTINIT_CH3OI(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_OUTINIT_CH3OI_SHIFT)) & FTM_OUTINIT_CH3OI_MASK)
-#define FTM_OUTINIT_CH4OI_MASK                   (0x10U)
-#define FTM_OUTINIT_CH4OI_SHIFT                  (4U)
-#define FTM_OUTINIT_CH4OI(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_OUTINIT_CH4OI_SHIFT)) & FTM_OUTINIT_CH4OI_MASK)
-#define FTM_OUTINIT_CH5OI_MASK                   (0x20U)
-#define FTM_OUTINIT_CH5OI_SHIFT                  (5U)
-#define FTM_OUTINIT_CH5OI(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_OUTINIT_CH5OI_SHIFT)) & FTM_OUTINIT_CH5OI_MASK)
-#define FTM_OUTINIT_CH6OI_MASK                   (0x40U)
-#define FTM_OUTINIT_CH6OI_SHIFT                  (6U)
-#define FTM_OUTINIT_CH6OI(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_OUTINIT_CH6OI_SHIFT)) & FTM_OUTINIT_CH6OI_MASK)
-#define FTM_OUTINIT_CH7OI_MASK                   (0x80U)
-#define FTM_OUTINIT_CH7OI_SHIFT                  (7U)
-#define FTM_OUTINIT_CH7OI(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_OUTINIT_CH7OI_SHIFT)) & FTM_OUTINIT_CH7OI_MASK)
-
-/*! @name OUTMASK - Output Mask */
-#define FTM_OUTMASK_CH0OM_MASK                   (0x1U)
-#define FTM_OUTMASK_CH0OM_SHIFT                  (0U)
-#define FTM_OUTMASK_CH0OM(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_OUTMASK_CH0OM_SHIFT)) & FTM_OUTMASK_CH0OM_MASK)
-#define FTM_OUTMASK_CH1OM_MASK                   (0x2U)
-#define FTM_OUTMASK_CH1OM_SHIFT                  (1U)
-#define FTM_OUTMASK_CH1OM(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_OUTMASK_CH1OM_SHIFT)) & FTM_OUTMASK_CH1OM_MASK)
-#define FTM_OUTMASK_CH2OM_MASK                   (0x4U)
-#define FTM_OUTMASK_CH2OM_SHIFT                  (2U)
-#define FTM_OUTMASK_CH2OM(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_OUTMASK_CH2OM_SHIFT)) & FTM_OUTMASK_CH2OM_MASK)
-#define FTM_OUTMASK_CH3OM_MASK                   (0x8U)
-#define FTM_OUTMASK_CH3OM_SHIFT                  (3U)
-#define FTM_OUTMASK_CH3OM(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_OUTMASK_CH3OM_SHIFT)) & FTM_OUTMASK_CH3OM_MASK)
-#define FTM_OUTMASK_CH4OM_MASK                   (0x10U)
-#define FTM_OUTMASK_CH4OM_SHIFT                  (4U)
-#define FTM_OUTMASK_CH4OM(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_OUTMASK_CH4OM_SHIFT)) & FTM_OUTMASK_CH4OM_MASK)
-#define FTM_OUTMASK_CH5OM_MASK                   (0x20U)
-#define FTM_OUTMASK_CH5OM_SHIFT                  (5U)
-#define FTM_OUTMASK_CH5OM(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_OUTMASK_CH5OM_SHIFT)) & FTM_OUTMASK_CH5OM_MASK)
-#define FTM_OUTMASK_CH6OM_MASK                   (0x40U)
-#define FTM_OUTMASK_CH6OM_SHIFT                  (6U)
-#define FTM_OUTMASK_CH6OM(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_OUTMASK_CH6OM_SHIFT)) & FTM_OUTMASK_CH6OM_MASK)
-#define FTM_OUTMASK_CH7OM_MASK                   (0x80U)
-#define FTM_OUTMASK_CH7OM_SHIFT                  (7U)
-#define FTM_OUTMASK_CH7OM(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_OUTMASK_CH7OM_SHIFT)) & FTM_OUTMASK_CH7OM_MASK)
-
-/*! @name COMBINE - Function For Linked Channels */
-#define FTM_COMBINE_COMBINE0_MASK                (0x1U)
-#define FTM_COMBINE_COMBINE0_SHIFT               (0U)
-#define FTM_COMBINE_COMBINE0(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_COMBINE0_SHIFT)) & FTM_COMBINE_COMBINE0_MASK)
-#define FTM_COMBINE_COMP0_MASK                   (0x2U)
-#define FTM_COMBINE_COMP0_SHIFT                  (1U)
-#define FTM_COMBINE_COMP0(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_COMP0_SHIFT)) & FTM_COMBINE_COMP0_MASK)
-#define FTM_COMBINE_DECAPEN0_MASK                (0x4U)
-#define FTM_COMBINE_DECAPEN0_SHIFT               (2U)
-#define FTM_COMBINE_DECAPEN0(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_DECAPEN0_SHIFT)) & FTM_COMBINE_DECAPEN0_MASK)
-#define FTM_COMBINE_DECAP0_MASK                  (0x8U)
-#define FTM_COMBINE_DECAP0_SHIFT                 (3U)
-#define FTM_COMBINE_DECAP0(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_DECAP0_SHIFT)) & FTM_COMBINE_DECAP0_MASK)
-#define FTM_COMBINE_DTEN0_MASK                   (0x10U)
-#define FTM_COMBINE_DTEN0_SHIFT                  (4U)
-#define FTM_COMBINE_DTEN0(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_DTEN0_SHIFT)) & FTM_COMBINE_DTEN0_MASK)
-#define FTM_COMBINE_SYNCEN0_MASK                 (0x20U)
-#define FTM_COMBINE_SYNCEN0_SHIFT                (5U)
-#define FTM_COMBINE_SYNCEN0(x)                   (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_SYNCEN0_SHIFT)) & FTM_COMBINE_SYNCEN0_MASK)
-#define FTM_COMBINE_FAULTEN0_MASK                (0x40U)
-#define FTM_COMBINE_FAULTEN0_SHIFT               (6U)
-#define FTM_COMBINE_FAULTEN0(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_FAULTEN0_SHIFT)) & FTM_COMBINE_FAULTEN0_MASK)
-#define FTM_COMBINE_COMBINE1_MASK                (0x100U)
-#define FTM_COMBINE_COMBINE1_SHIFT               (8U)
-#define FTM_COMBINE_COMBINE1(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_COMBINE1_SHIFT)) & FTM_COMBINE_COMBINE1_MASK)
-#define FTM_COMBINE_COMP1_MASK                   (0x200U)
-#define FTM_COMBINE_COMP1_SHIFT                  (9U)
-#define FTM_COMBINE_COMP1(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_COMP1_SHIFT)) & FTM_COMBINE_COMP1_MASK)
-#define FTM_COMBINE_DECAPEN1_MASK                (0x400U)
-#define FTM_COMBINE_DECAPEN1_SHIFT               (10U)
-#define FTM_COMBINE_DECAPEN1(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_DECAPEN1_SHIFT)) & FTM_COMBINE_DECAPEN1_MASK)
-#define FTM_COMBINE_DECAP1_MASK                  (0x800U)
-#define FTM_COMBINE_DECAP1_SHIFT                 (11U)
-#define FTM_COMBINE_DECAP1(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_DECAP1_SHIFT)) & FTM_COMBINE_DECAP1_MASK)
-#define FTM_COMBINE_DTEN1_MASK                   (0x1000U)
-#define FTM_COMBINE_DTEN1_SHIFT                  (12U)
-#define FTM_COMBINE_DTEN1(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_DTEN1_SHIFT)) & FTM_COMBINE_DTEN1_MASK)
-#define FTM_COMBINE_SYNCEN1_MASK                 (0x2000U)
-#define FTM_COMBINE_SYNCEN1_SHIFT                (13U)
-#define FTM_COMBINE_SYNCEN1(x)                   (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_SYNCEN1_SHIFT)) & FTM_COMBINE_SYNCEN1_MASK)
-#define FTM_COMBINE_FAULTEN1_MASK                (0x4000U)
-#define FTM_COMBINE_FAULTEN1_SHIFT               (14U)
-#define FTM_COMBINE_FAULTEN1(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_FAULTEN1_SHIFT)) & FTM_COMBINE_FAULTEN1_MASK)
-#define FTM_COMBINE_COMBINE2_MASK                (0x10000U)
-#define FTM_COMBINE_COMBINE2_SHIFT               (16U)
-#define FTM_COMBINE_COMBINE2(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_COMBINE2_SHIFT)) & FTM_COMBINE_COMBINE2_MASK)
-#define FTM_COMBINE_COMP2_MASK                   (0x20000U)
-#define FTM_COMBINE_COMP2_SHIFT                  (17U)
-#define FTM_COMBINE_COMP2(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_COMP2_SHIFT)) & FTM_COMBINE_COMP2_MASK)
-#define FTM_COMBINE_DECAPEN2_MASK                (0x40000U)
-#define FTM_COMBINE_DECAPEN2_SHIFT               (18U)
-#define FTM_COMBINE_DECAPEN2(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_DECAPEN2_SHIFT)) & FTM_COMBINE_DECAPEN2_MASK)
-#define FTM_COMBINE_DECAP2_MASK                  (0x80000U)
-#define FTM_COMBINE_DECAP2_SHIFT                 (19U)
-#define FTM_COMBINE_DECAP2(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_DECAP2_SHIFT)) & FTM_COMBINE_DECAP2_MASK)
-#define FTM_COMBINE_DTEN2_MASK                   (0x100000U)
-#define FTM_COMBINE_DTEN2_SHIFT                  (20U)
-#define FTM_COMBINE_DTEN2(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_DTEN2_SHIFT)) & FTM_COMBINE_DTEN2_MASK)
-#define FTM_COMBINE_SYNCEN2_MASK                 (0x200000U)
-#define FTM_COMBINE_SYNCEN2_SHIFT                (21U)
-#define FTM_COMBINE_SYNCEN2(x)                   (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_SYNCEN2_SHIFT)) & FTM_COMBINE_SYNCEN2_MASK)
-#define FTM_COMBINE_FAULTEN2_MASK                (0x400000U)
-#define FTM_COMBINE_FAULTEN2_SHIFT               (22U)
-#define FTM_COMBINE_FAULTEN2(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_FAULTEN2_SHIFT)) & FTM_COMBINE_FAULTEN2_MASK)
-#define FTM_COMBINE_COMBINE3_MASK                (0x1000000U)
-#define FTM_COMBINE_COMBINE3_SHIFT               (24U)
-#define FTM_COMBINE_COMBINE3(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_COMBINE3_SHIFT)) & FTM_COMBINE_COMBINE3_MASK)
-#define FTM_COMBINE_COMP3_MASK                   (0x2000000U)
-#define FTM_COMBINE_COMP3_SHIFT                  (25U)
-#define FTM_COMBINE_COMP3(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_COMP3_SHIFT)) & FTM_COMBINE_COMP3_MASK)
-#define FTM_COMBINE_DECAPEN3_MASK                (0x4000000U)
-#define FTM_COMBINE_DECAPEN3_SHIFT               (26U)
-#define FTM_COMBINE_DECAPEN3(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_DECAPEN3_SHIFT)) & FTM_COMBINE_DECAPEN3_MASK)
-#define FTM_COMBINE_DECAP3_MASK                  (0x8000000U)
-#define FTM_COMBINE_DECAP3_SHIFT                 (27U)
-#define FTM_COMBINE_DECAP3(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_DECAP3_SHIFT)) & FTM_COMBINE_DECAP3_MASK)
-#define FTM_COMBINE_DTEN3_MASK                   (0x10000000U)
-#define FTM_COMBINE_DTEN3_SHIFT                  (28U)
-#define FTM_COMBINE_DTEN3(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_DTEN3_SHIFT)) & FTM_COMBINE_DTEN3_MASK)
-#define FTM_COMBINE_SYNCEN3_MASK                 (0x20000000U)
-#define FTM_COMBINE_SYNCEN3_SHIFT                (29U)
-#define FTM_COMBINE_SYNCEN3(x)                   (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_SYNCEN3_SHIFT)) & FTM_COMBINE_SYNCEN3_MASK)
-#define FTM_COMBINE_FAULTEN3_MASK                (0x40000000U)
-#define FTM_COMBINE_FAULTEN3_SHIFT               (30U)
-#define FTM_COMBINE_FAULTEN3(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_COMBINE_FAULTEN3_SHIFT)) & FTM_COMBINE_FAULTEN3_MASK)
-
-/*! @name DEADTIME - Deadtime Insertion Control */
-#define FTM_DEADTIME_DTVAL_MASK                  (0x3FU)
-#define FTM_DEADTIME_DTVAL_SHIFT                 (0U)
-#define FTM_DEADTIME_DTVAL(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_DEADTIME_DTVAL_SHIFT)) & FTM_DEADTIME_DTVAL_MASK)
-#define FTM_DEADTIME_DTPS_MASK                   (0xC0U)
-#define FTM_DEADTIME_DTPS_SHIFT                  (6U)
-#define FTM_DEADTIME_DTPS(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_DEADTIME_DTPS_SHIFT)) & FTM_DEADTIME_DTPS_MASK)
-
-/*! @name EXTTRIG - FTM External Trigger */
-#define FTM_EXTTRIG_CH2TRIG_MASK                 (0x1U)
-#define FTM_EXTTRIG_CH2TRIG_SHIFT                (0U)
-#define FTM_EXTTRIG_CH2TRIG(x)                   (((uint32_t)(((uint32_t)(x)) << FTM_EXTTRIG_CH2TRIG_SHIFT)) & FTM_EXTTRIG_CH2TRIG_MASK)
-#define FTM_EXTTRIG_CH3TRIG_MASK                 (0x2U)
-#define FTM_EXTTRIG_CH3TRIG_SHIFT                (1U)
-#define FTM_EXTTRIG_CH3TRIG(x)                   (((uint32_t)(((uint32_t)(x)) << FTM_EXTTRIG_CH3TRIG_SHIFT)) & FTM_EXTTRIG_CH3TRIG_MASK)
-#define FTM_EXTTRIG_CH4TRIG_MASK                 (0x4U)
-#define FTM_EXTTRIG_CH4TRIG_SHIFT                (2U)
-#define FTM_EXTTRIG_CH4TRIG(x)                   (((uint32_t)(((uint32_t)(x)) << FTM_EXTTRIG_CH4TRIG_SHIFT)) & FTM_EXTTRIG_CH4TRIG_MASK)
-#define FTM_EXTTRIG_CH5TRIG_MASK                 (0x8U)
-#define FTM_EXTTRIG_CH5TRIG_SHIFT                (3U)
-#define FTM_EXTTRIG_CH5TRIG(x)                   (((uint32_t)(((uint32_t)(x)) << FTM_EXTTRIG_CH5TRIG_SHIFT)) & FTM_EXTTRIG_CH5TRIG_MASK)
-#define FTM_EXTTRIG_CH0TRIG_MASK                 (0x10U)
-#define FTM_EXTTRIG_CH0TRIG_SHIFT                (4U)
-#define FTM_EXTTRIG_CH0TRIG(x)                   (((uint32_t)(((uint32_t)(x)) << FTM_EXTTRIG_CH0TRIG_SHIFT)) & FTM_EXTTRIG_CH0TRIG_MASK)
-#define FTM_EXTTRIG_CH1TRIG_MASK                 (0x20U)
-#define FTM_EXTTRIG_CH1TRIG_SHIFT                (5U)
-#define FTM_EXTTRIG_CH1TRIG(x)                   (((uint32_t)(((uint32_t)(x)) << FTM_EXTTRIG_CH1TRIG_SHIFT)) & FTM_EXTTRIG_CH1TRIG_MASK)
-#define FTM_EXTTRIG_INITTRIGEN_MASK              (0x40U)
-#define FTM_EXTTRIG_INITTRIGEN_SHIFT             (6U)
-#define FTM_EXTTRIG_INITTRIGEN(x)                (((uint32_t)(((uint32_t)(x)) << FTM_EXTTRIG_INITTRIGEN_SHIFT)) & FTM_EXTTRIG_INITTRIGEN_MASK)
-#define FTM_EXTTRIG_TRIGF_MASK                   (0x80U)
-#define FTM_EXTTRIG_TRIGF_SHIFT                  (7U)
-#define FTM_EXTTRIG_TRIGF(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_EXTTRIG_TRIGF_SHIFT)) & FTM_EXTTRIG_TRIGF_MASK)
-
-/*! @name POL - Channels Polarity */
-#define FTM_POL_POL0_MASK                        (0x1U)
-#define FTM_POL_POL0_SHIFT                       (0U)
-#define FTM_POL_POL0(x)                          (((uint32_t)(((uint32_t)(x)) << FTM_POL_POL0_SHIFT)) & FTM_POL_POL0_MASK)
-#define FTM_POL_POL1_MASK                        (0x2U)
-#define FTM_POL_POL1_SHIFT                       (1U)
-#define FTM_POL_POL1(x)                          (((uint32_t)(((uint32_t)(x)) << FTM_POL_POL1_SHIFT)) & FTM_POL_POL1_MASK)
-#define FTM_POL_POL2_MASK                        (0x4U)
-#define FTM_POL_POL2_SHIFT                       (2U)
-#define FTM_POL_POL2(x)                          (((uint32_t)(((uint32_t)(x)) << FTM_POL_POL2_SHIFT)) & FTM_POL_POL2_MASK)
-#define FTM_POL_POL3_MASK                        (0x8U)
-#define FTM_POL_POL3_SHIFT                       (3U)
-#define FTM_POL_POL3(x)                          (((uint32_t)(((uint32_t)(x)) << FTM_POL_POL3_SHIFT)) & FTM_POL_POL3_MASK)
-#define FTM_POL_POL4_MASK                        (0x10U)
-#define FTM_POL_POL4_SHIFT                       (4U)
-#define FTM_POL_POL4(x)                          (((uint32_t)(((uint32_t)(x)) << FTM_POL_POL4_SHIFT)) & FTM_POL_POL4_MASK)
-#define FTM_POL_POL5_MASK                        (0x20U)
-#define FTM_POL_POL5_SHIFT                       (5U)
-#define FTM_POL_POL5(x)                          (((uint32_t)(((uint32_t)(x)) << FTM_POL_POL5_SHIFT)) & FTM_POL_POL5_MASK)
-#define FTM_POL_POL6_MASK                        (0x40U)
-#define FTM_POL_POL6_SHIFT                       (6U)
-#define FTM_POL_POL6(x)                          (((uint32_t)(((uint32_t)(x)) << FTM_POL_POL6_SHIFT)) & FTM_POL_POL6_MASK)
-#define FTM_POL_POL7_MASK                        (0x80U)
-#define FTM_POL_POL7_SHIFT                       (7U)
-#define FTM_POL_POL7(x)                          (((uint32_t)(((uint32_t)(x)) << FTM_POL_POL7_SHIFT)) & FTM_POL_POL7_MASK)
-
-/*! @name FMS - Fault Mode Status */
-#define FTM_FMS_FAULTF0_MASK                     (0x1U)
-#define FTM_FMS_FAULTF0_SHIFT                    (0U)
-#define FTM_FMS_FAULTF0(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_FMS_FAULTF0_SHIFT)) & FTM_FMS_FAULTF0_MASK)
-#define FTM_FMS_FAULTF1_MASK                     (0x2U)
-#define FTM_FMS_FAULTF1_SHIFT                    (1U)
-#define FTM_FMS_FAULTF1(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_FMS_FAULTF1_SHIFT)) & FTM_FMS_FAULTF1_MASK)
-#define FTM_FMS_FAULTF2_MASK                     (0x4U)
-#define FTM_FMS_FAULTF2_SHIFT                    (2U)
-#define FTM_FMS_FAULTF2(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_FMS_FAULTF2_SHIFT)) & FTM_FMS_FAULTF2_MASK)
-#define FTM_FMS_FAULTF3_MASK                     (0x8U)
-#define FTM_FMS_FAULTF3_SHIFT                    (3U)
-#define FTM_FMS_FAULTF3(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_FMS_FAULTF3_SHIFT)) & FTM_FMS_FAULTF3_MASK)
-#define FTM_FMS_FAULTIN_MASK                     (0x20U)
-#define FTM_FMS_FAULTIN_SHIFT                    (5U)
-#define FTM_FMS_FAULTIN(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_FMS_FAULTIN_SHIFT)) & FTM_FMS_FAULTIN_MASK)
-#define FTM_FMS_WPEN_MASK                        (0x40U)
-#define FTM_FMS_WPEN_SHIFT                       (6U)
-#define FTM_FMS_WPEN(x)                          (((uint32_t)(((uint32_t)(x)) << FTM_FMS_WPEN_SHIFT)) & FTM_FMS_WPEN_MASK)
-#define FTM_FMS_FAULTF_MASK                      (0x80U)
-#define FTM_FMS_FAULTF_SHIFT                     (7U)
-#define FTM_FMS_FAULTF(x)                        (((uint32_t)(((uint32_t)(x)) << FTM_FMS_FAULTF_SHIFT)) & FTM_FMS_FAULTF_MASK)
-
-/*! @name FILTER - Input Capture Filter Control */
-#define FTM_FILTER_CH0FVAL_MASK                  (0xFU)
-#define FTM_FILTER_CH0FVAL_SHIFT                 (0U)
-#define FTM_FILTER_CH0FVAL(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_FILTER_CH0FVAL_SHIFT)) & FTM_FILTER_CH0FVAL_MASK)
-#define FTM_FILTER_CH1FVAL_MASK                  (0xF0U)
-#define FTM_FILTER_CH1FVAL_SHIFT                 (4U)
-#define FTM_FILTER_CH1FVAL(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_FILTER_CH1FVAL_SHIFT)) & FTM_FILTER_CH1FVAL_MASK)
-#define FTM_FILTER_CH2FVAL_MASK                  (0xF00U)
-#define FTM_FILTER_CH2FVAL_SHIFT                 (8U)
-#define FTM_FILTER_CH2FVAL(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_FILTER_CH2FVAL_SHIFT)) & FTM_FILTER_CH2FVAL_MASK)
-#define FTM_FILTER_CH3FVAL_MASK                  (0xF000U)
-#define FTM_FILTER_CH3FVAL_SHIFT                 (12U)
-#define FTM_FILTER_CH3FVAL(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_FILTER_CH3FVAL_SHIFT)) & FTM_FILTER_CH3FVAL_MASK)
-
-/*! @name FLTCTRL - Fault Control */
-#define FTM_FLTCTRL_FAULT0EN_MASK                (0x1U)
-#define FTM_FLTCTRL_FAULT0EN_SHIFT               (0U)
-#define FTM_FLTCTRL_FAULT0EN(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_FLTCTRL_FAULT0EN_SHIFT)) & FTM_FLTCTRL_FAULT0EN_MASK)
-#define FTM_FLTCTRL_FAULT1EN_MASK                (0x2U)
-#define FTM_FLTCTRL_FAULT1EN_SHIFT               (1U)
-#define FTM_FLTCTRL_FAULT1EN(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_FLTCTRL_FAULT1EN_SHIFT)) & FTM_FLTCTRL_FAULT1EN_MASK)
-#define FTM_FLTCTRL_FAULT2EN_MASK                (0x4U)
-#define FTM_FLTCTRL_FAULT2EN_SHIFT               (2U)
-#define FTM_FLTCTRL_FAULT2EN(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_FLTCTRL_FAULT2EN_SHIFT)) & FTM_FLTCTRL_FAULT2EN_MASK)
-#define FTM_FLTCTRL_FAULT3EN_MASK                (0x8U)
-#define FTM_FLTCTRL_FAULT3EN_SHIFT               (3U)
-#define FTM_FLTCTRL_FAULT3EN(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_FLTCTRL_FAULT3EN_SHIFT)) & FTM_FLTCTRL_FAULT3EN_MASK)
-#define FTM_FLTCTRL_FFLTR0EN_MASK                (0x10U)
-#define FTM_FLTCTRL_FFLTR0EN_SHIFT               (4U)
-#define FTM_FLTCTRL_FFLTR0EN(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_FLTCTRL_FFLTR0EN_SHIFT)) & FTM_FLTCTRL_FFLTR0EN_MASK)
-#define FTM_FLTCTRL_FFLTR1EN_MASK                (0x20U)
-#define FTM_FLTCTRL_FFLTR1EN_SHIFT               (5U)
-#define FTM_FLTCTRL_FFLTR1EN(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_FLTCTRL_FFLTR1EN_SHIFT)) & FTM_FLTCTRL_FFLTR1EN_MASK)
-#define FTM_FLTCTRL_FFLTR2EN_MASK                (0x40U)
-#define FTM_FLTCTRL_FFLTR2EN_SHIFT               (6U)
-#define FTM_FLTCTRL_FFLTR2EN(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_FLTCTRL_FFLTR2EN_SHIFT)) & FTM_FLTCTRL_FFLTR2EN_MASK)
-#define FTM_FLTCTRL_FFLTR3EN_MASK                (0x80U)
-#define FTM_FLTCTRL_FFLTR3EN_SHIFT               (7U)
-#define FTM_FLTCTRL_FFLTR3EN(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_FLTCTRL_FFLTR3EN_SHIFT)) & FTM_FLTCTRL_FFLTR3EN_MASK)
-#define FTM_FLTCTRL_FFVAL_MASK                   (0xF00U)
-#define FTM_FLTCTRL_FFVAL_SHIFT                  (8U)
-#define FTM_FLTCTRL_FFVAL(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_FLTCTRL_FFVAL_SHIFT)) & FTM_FLTCTRL_FFVAL_MASK)
-
-/*! @name QDCTRL - Quadrature Decoder Control And Status */
-#define FTM_QDCTRL_QUADEN_MASK                   (0x1U)
-#define FTM_QDCTRL_QUADEN_SHIFT                  (0U)
-#define FTM_QDCTRL_QUADEN(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_QDCTRL_QUADEN_SHIFT)) & FTM_QDCTRL_QUADEN_MASK)
-#define FTM_QDCTRL_TOFDIR_MASK                   (0x2U)
-#define FTM_QDCTRL_TOFDIR_SHIFT                  (1U)
-#define FTM_QDCTRL_TOFDIR(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_QDCTRL_TOFDIR_SHIFT)) & FTM_QDCTRL_TOFDIR_MASK)
-#define FTM_QDCTRL_QUADIR_MASK                   (0x4U)
-#define FTM_QDCTRL_QUADIR_SHIFT                  (2U)
-#define FTM_QDCTRL_QUADIR(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_QDCTRL_QUADIR_SHIFT)) & FTM_QDCTRL_QUADIR_MASK)
-#define FTM_QDCTRL_QUADMODE_MASK                 (0x8U)
-#define FTM_QDCTRL_QUADMODE_SHIFT                (3U)
-#define FTM_QDCTRL_QUADMODE(x)                   (((uint32_t)(((uint32_t)(x)) << FTM_QDCTRL_QUADMODE_SHIFT)) & FTM_QDCTRL_QUADMODE_MASK)
-#define FTM_QDCTRL_PHBPOL_MASK                   (0x10U)
-#define FTM_QDCTRL_PHBPOL_SHIFT                  (4U)
-#define FTM_QDCTRL_PHBPOL(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_QDCTRL_PHBPOL_SHIFT)) & FTM_QDCTRL_PHBPOL_MASK)
-#define FTM_QDCTRL_PHAPOL_MASK                   (0x20U)
-#define FTM_QDCTRL_PHAPOL_SHIFT                  (5U)
-#define FTM_QDCTRL_PHAPOL(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_QDCTRL_PHAPOL_SHIFT)) & FTM_QDCTRL_PHAPOL_MASK)
-#define FTM_QDCTRL_PHBFLTREN_MASK                (0x40U)
-#define FTM_QDCTRL_PHBFLTREN_SHIFT               (6U)
-#define FTM_QDCTRL_PHBFLTREN(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_QDCTRL_PHBFLTREN_SHIFT)) & FTM_QDCTRL_PHBFLTREN_MASK)
-#define FTM_QDCTRL_PHAFLTREN_MASK                (0x80U)
-#define FTM_QDCTRL_PHAFLTREN_SHIFT               (7U)
-#define FTM_QDCTRL_PHAFLTREN(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_QDCTRL_PHAFLTREN_SHIFT)) & FTM_QDCTRL_PHAFLTREN_MASK)
-
-/*! @name CONF - Configuration */
-#define FTM_CONF_NUMTOF_MASK                     (0x1FU)
-#define FTM_CONF_NUMTOF_SHIFT                    (0U)
-#define FTM_CONF_NUMTOF(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_CONF_NUMTOF_SHIFT)) & FTM_CONF_NUMTOF_MASK)
-#define FTM_CONF_BDMMODE_MASK                    (0xC0U)
-#define FTM_CONF_BDMMODE_SHIFT                   (6U)
-#define FTM_CONF_BDMMODE(x)                      (((uint32_t)(((uint32_t)(x)) << FTM_CONF_BDMMODE_SHIFT)) & FTM_CONF_BDMMODE_MASK)
-#define FTM_CONF_GTBEEN_MASK                     (0x200U)
-#define FTM_CONF_GTBEEN_SHIFT                    (9U)
-#define FTM_CONF_GTBEEN(x)                       (((uint32_t)(((uint32_t)(x)) << FTM_CONF_GTBEEN_SHIFT)) & FTM_CONF_GTBEEN_MASK)
-#define FTM_CONF_GTBEOUT_MASK                    (0x400U)
-#define FTM_CONF_GTBEOUT_SHIFT                   (10U)
-#define FTM_CONF_GTBEOUT(x)                      (((uint32_t)(((uint32_t)(x)) << FTM_CONF_GTBEOUT_SHIFT)) & FTM_CONF_GTBEOUT_MASK)
-
-/*! @name FLTPOL - FTM Fault Input Polarity */
-#define FTM_FLTPOL_FLT0POL_MASK                  (0x1U)
-#define FTM_FLTPOL_FLT0POL_SHIFT                 (0U)
-#define FTM_FLTPOL_FLT0POL(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_FLTPOL_FLT0POL_SHIFT)) & FTM_FLTPOL_FLT0POL_MASK)
-#define FTM_FLTPOL_FLT1POL_MASK                  (0x2U)
-#define FTM_FLTPOL_FLT1POL_SHIFT                 (1U)
-#define FTM_FLTPOL_FLT1POL(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_FLTPOL_FLT1POL_SHIFT)) & FTM_FLTPOL_FLT1POL_MASK)
-#define FTM_FLTPOL_FLT2POL_MASK                  (0x4U)
-#define FTM_FLTPOL_FLT2POL_SHIFT                 (2U)
-#define FTM_FLTPOL_FLT2POL(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_FLTPOL_FLT2POL_SHIFT)) & FTM_FLTPOL_FLT2POL_MASK)
-#define FTM_FLTPOL_FLT3POL_MASK                  (0x8U)
-#define FTM_FLTPOL_FLT3POL_SHIFT                 (3U)
-#define FTM_FLTPOL_FLT3POL(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_FLTPOL_FLT3POL_SHIFT)) & FTM_FLTPOL_FLT3POL_MASK)
-
-/*! @name SYNCONF - Synchronization Configuration */
-#define FTM_SYNCONF_HWTRIGMODE_MASK              (0x1U)
-#define FTM_SYNCONF_HWTRIGMODE_SHIFT             (0U)
-#define FTM_SYNCONF_HWTRIGMODE(x)                (((uint32_t)(((uint32_t)(x)) << FTM_SYNCONF_HWTRIGMODE_SHIFT)) & FTM_SYNCONF_HWTRIGMODE_MASK)
-#define FTM_SYNCONF_CNTINC_MASK                  (0x4U)
-#define FTM_SYNCONF_CNTINC_SHIFT                 (2U)
-#define FTM_SYNCONF_CNTINC(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_SYNCONF_CNTINC_SHIFT)) & FTM_SYNCONF_CNTINC_MASK)
-#define FTM_SYNCONF_INVC_MASK                    (0x10U)
-#define FTM_SYNCONF_INVC_SHIFT                   (4U)
-#define FTM_SYNCONF_INVC(x)                      (((uint32_t)(((uint32_t)(x)) << FTM_SYNCONF_INVC_SHIFT)) & FTM_SYNCONF_INVC_MASK)
-#define FTM_SYNCONF_SWOC_MASK                    (0x20U)
-#define FTM_SYNCONF_SWOC_SHIFT                   (5U)
-#define FTM_SYNCONF_SWOC(x)                      (((uint32_t)(((uint32_t)(x)) << FTM_SYNCONF_SWOC_SHIFT)) & FTM_SYNCONF_SWOC_MASK)
-#define FTM_SYNCONF_SYNCMODE_MASK                (0x80U)
-#define FTM_SYNCONF_SYNCMODE_SHIFT               (7U)
-#define FTM_SYNCONF_SYNCMODE(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_SYNCONF_SYNCMODE_SHIFT)) & FTM_SYNCONF_SYNCMODE_MASK)
-#define FTM_SYNCONF_SWRSTCNT_MASK                (0x100U)
-#define FTM_SYNCONF_SWRSTCNT_SHIFT               (8U)
-#define FTM_SYNCONF_SWRSTCNT(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_SYNCONF_SWRSTCNT_SHIFT)) & FTM_SYNCONF_SWRSTCNT_MASK)
-#define FTM_SYNCONF_SWWRBUF_MASK                 (0x200U)
-#define FTM_SYNCONF_SWWRBUF_SHIFT                (9U)
-#define FTM_SYNCONF_SWWRBUF(x)                   (((uint32_t)(((uint32_t)(x)) << FTM_SYNCONF_SWWRBUF_SHIFT)) & FTM_SYNCONF_SWWRBUF_MASK)
-#define FTM_SYNCONF_SWOM_MASK                    (0x400U)
-#define FTM_SYNCONF_SWOM_SHIFT                   (10U)
-#define FTM_SYNCONF_SWOM(x)                      (((uint32_t)(((uint32_t)(x)) << FTM_SYNCONF_SWOM_SHIFT)) & FTM_SYNCONF_SWOM_MASK)
-#define FTM_SYNCONF_SWINVC_MASK                  (0x800U)
-#define FTM_SYNCONF_SWINVC_SHIFT                 (11U)
-#define FTM_SYNCONF_SWINVC(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_SYNCONF_SWINVC_SHIFT)) & FTM_SYNCONF_SWINVC_MASK)
-#define FTM_SYNCONF_SWSOC_MASK                   (0x1000U)
-#define FTM_SYNCONF_SWSOC_SHIFT                  (12U)
-#define FTM_SYNCONF_SWSOC(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_SYNCONF_SWSOC_SHIFT)) & FTM_SYNCONF_SWSOC_MASK)
-#define FTM_SYNCONF_HWRSTCNT_MASK                (0x10000U)
-#define FTM_SYNCONF_HWRSTCNT_SHIFT               (16U)
-#define FTM_SYNCONF_HWRSTCNT(x)                  (((uint32_t)(((uint32_t)(x)) << FTM_SYNCONF_HWRSTCNT_SHIFT)) & FTM_SYNCONF_HWRSTCNT_MASK)
-#define FTM_SYNCONF_HWWRBUF_MASK                 (0x20000U)
-#define FTM_SYNCONF_HWWRBUF_SHIFT                (17U)
-#define FTM_SYNCONF_HWWRBUF(x)                   (((uint32_t)(((uint32_t)(x)) << FTM_SYNCONF_HWWRBUF_SHIFT)) & FTM_SYNCONF_HWWRBUF_MASK)
-#define FTM_SYNCONF_HWOM_MASK                    (0x40000U)
-#define FTM_SYNCONF_HWOM_SHIFT                   (18U)
-#define FTM_SYNCONF_HWOM(x)                      (((uint32_t)(((uint32_t)(x)) << FTM_SYNCONF_HWOM_SHIFT)) & FTM_SYNCONF_HWOM_MASK)
-#define FTM_SYNCONF_HWINVC_MASK                  (0x80000U)
-#define FTM_SYNCONF_HWINVC_SHIFT                 (19U)
-#define FTM_SYNCONF_HWINVC(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_SYNCONF_HWINVC_SHIFT)) & FTM_SYNCONF_HWINVC_MASK)
-#define FTM_SYNCONF_HWSOC_MASK                   (0x100000U)
-#define FTM_SYNCONF_HWSOC_SHIFT                  (20U)
-#define FTM_SYNCONF_HWSOC(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_SYNCONF_HWSOC_SHIFT)) & FTM_SYNCONF_HWSOC_MASK)
-
-/*! @name INVCTRL - FTM Inverting Control */
-#define FTM_INVCTRL_INV0EN_MASK                  (0x1U)
-#define FTM_INVCTRL_INV0EN_SHIFT                 (0U)
-#define FTM_INVCTRL_INV0EN(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_INVCTRL_INV0EN_SHIFT)) & FTM_INVCTRL_INV0EN_MASK)
-#define FTM_INVCTRL_INV1EN_MASK                  (0x2U)
-#define FTM_INVCTRL_INV1EN_SHIFT                 (1U)
-#define FTM_INVCTRL_INV1EN(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_INVCTRL_INV1EN_SHIFT)) & FTM_INVCTRL_INV1EN_MASK)
-#define FTM_INVCTRL_INV2EN_MASK                  (0x4U)
-#define FTM_INVCTRL_INV2EN_SHIFT                 (2U)
-#define FTM_INVCTRL_INV2EN(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_INVCTRL_INV2EN_SHIFT)) & FTM_INVCTRL_INV2EN_MASK)
-#define FTM_INVCTRL_INV3EN_MASK                  (0x8U)
-#define FTM_INVCTRL_INV3EN_SHIFT                 (3U)
-#define FTM_INVCTRL_INV3EN(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_INVCTRL_INV3EN_SHIFT)) & FTM_INVCTRL_INV3EN_MASK)
-
-/*! @name SWOCTRL - FTM Software Output Control */
-#define FTM_SWOCTRL_CH0OC_MASK                   (0x1U)
-#define FTM_SWOCTRL_CH0OC_SHIFT                  (0U)
-#define FTM_SWOCTRL_CH0OC(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_SWOCTRL_CH0OC_SHIFT)) & FTM_SWOCTRL_CH0OC_MASK)
-#define FTM_SWOCTRL_CH1OC_MASK                   (0x2U)
-#define FTM_SWOCTRL_CH1OC_SHIFT                  (1U)
-#define FTM_SWOCTRL_CH1OC(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_SWOCTRL_CH1OC_SHIFT)) & FTM_SWOCTRL_CH1OC_MASK)
-#define FTM_SWOCTRL_CH2OC_MASK                   (0x4U)
-#define FTM_SWOCTRL_CH2OC_SHIFT                  (2U)
-#define FTM_SWOCTRL_CH2OC(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_SWOCTRL_CH2OC_SHIFT)) & FTM_SWOCTRL_CH2OC_MASK)
-#define FTM_SWOCTRL_CH3OC_MASK                   (0x8U)
-#define FTM_SWOCTRL_CH3OC_SHIFT                  (3U)
-#define FTM_SWOCTRL_CH3OC(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_SWOCTRL_CH3OC_SHIFT)) & FTM_SWOCTRL_CH3OC_MASK)
-#define FTM_SWOCTRL_CH4OC_MASK                   (0x10U)
-#define FTM_SWOCTRL_CH4OC_SHIFT                  (4U)
-#define FTM_SWOCTRL_CH4OC(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_SWOCTRL_CH4OC_SHIFT)) & FTM_SWOCTRL_CH4OC_MASK)
-#define FTM_SWOCTRL_CH5OC_MASK                   (0x20U)
-#define FTM_SWOCTRL_CH5OC_SHIFT                  (5U)
-#define FTM_SWOCTRL_CH5OC(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_SWOCTRL_CH5OC_SHIFT)) & FTM_SWOCTRL_CH5OC_MASK)
-#define FTM_SWOCTRL_CH6OC_MASK                   (0x40U)
-#define FTM_SWOCTRL_CH6OC_SHIFT                  (6U)
-#define FTM_SWOCTRL_CH6OC(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_SWOCTRL_CH6OC_SHIFT)) & FTM_SWOCTRL_CH6OC_MASK)
-#define FTM_SWOCTRL_CH7OC_MASK                   (0x80U)
-#define FTM_SWOCTRL_CH7OC_SHIFT                  (7U)
-#define FTM_SWOCTRL_CH7OC(x)                     (((uint32_t)(((uint32_t)(x)) << FTM_SWOCTRL_CH7OC_SHIFT)) & FTM_SWOCTRL_CH7OC_MASK)
-#define FTM_SWOCTRL_CH0OCV_MASK                  (0x100U)
-#define FTM_SWOCTRL_CH0OCV_SHIFT                 (8U)
-#define FTM_SWOCTRL_CH0OCV(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_SWOCTRL_CH0OCV_SHIFT)) & FTM_SWOCTRL_CH0OCV_MASK)
-#define FTM_SWOCTRL_CH1OCV_MASK                  (0x200U)
-#define FTM_SWOCTRL_CH1OCV_SHIFT                 (9U)
-#define FTM_SWOCTRL_CH1OCV(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_SWOCTRL_CH1OCV_SHIFT)) & FTM_SWOCTRL_CH1OCV_MASK)
-#define FTM_SWOCTRL_CH2OCV_MASK                  (0x400U)
-#define FTM_SWOCTRL_CH2OCV_SHIFT                 (10U)
-#define FTM_SWOCTRL_CH2OCV(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_SWOCTRL_CH2OCV_SHIFT)) & FTM_SWOCTRL_CH2OCV_MASK)
-#define FTM_SWOCTRL_CH3OCV_MASK                  (0x800U)
-#define FTM_SWOCTRL_CH3OCV_SHIFT                 (11U)
-#define FTM_SWOCTRL_CH3OCV(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_SWOCTRL_CH3OCV_SHIFT)) & FTM_SWOCTRL_CH3OCV_MASK)
-#define FTM_SWOCTRL_CH4OCV_MASK                  (0x1000U)
-#define FTM_SWOCTRL_CH4OCV_SHIFT                 (12U)
-#define FTM_SWOCTRL_CH4OCV(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_SWOCTRL_CH4OCV_SHIFT)) & FTM_SWOCTRL_CH4OCV_MASK)
-#define FTM_SWOCTRL_CH5OCV_MASK                  (0x2000U)
-#define FTM_SWOCTRL_CH5OCV_SHIFT                 (13U)
-#define FTM_SWOCTRL_CH5OCV(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_SWOCTRL_CH5OCV_SHIFT)) & FTM_SWOCTRL_CH5OCV_MASK)
-#define FTM_SWOCTRL_CH6OCV_MASK                  (0x4000U)
-#define FTM_SWOCTRL_CH6OCV_SHIFT                 (14U)
-#define FTM_SWOCTRL_CH6OCV(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_SWOCTRL_CH6OCV_SHIFT)) & FTM_SWOCTRL_CH6OCV_MASK)
-#define FTM_SWOCTRL_CH7OCV_MASK                  (0x8000U)
-#define FTM_SWOCTRL_CH7OCV_SHIFT                 (15U)
-#define FTM_SWOCTRL_CH7OCV(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_SWOCTRL_CH7OCV_SHIFT)) & FTM_SWOCTRL_CH7OCV_MASK)
-
-/*! @name PWMLOAD - FTM PWM Load */
-#define FTM_PWMLOAD_CH0SEL_MASK                  (0x1U)
-#define FTM_PWMLOAD_CH0SEL_SHIFT                 (0U)
-#define FTM_PWMLOAD_CH0SEL(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_PWMLOAD_CH0SEL_SHIFT)) & FTM_PWMLOAD_CH0SEL_MASK)
-#define FTM_PWMLOAD_CH1SEL_MASK                  (0x2U)
-#define FTM_PWMLOAD_CH1SEL_SHIFT                 (1U)
-#define FTM_PWMLOAD_CH1SEL(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_PWMLOAD_CH1SEL_SHIFT)) & FTM_PWMLOAD_CH1SEL_MASK)
-#define FTM_PWMLOAD_CH2SEL_MASK                  (0x4U)
-#define FTM_PWMLOAD_CH2SEL_SHIFT                 (2U)
-#define FTM_PWMLOAD_CH2SEL(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_PWMLOAD_CH2SEL_SHIFT)) & FTM_PWMLOAD_CH2SEL_MASK)
-#define FTM_PWMLOAD_CH3SEL_MASK                  (0x8U)
-#define FTM_PWMLOAD_CH3SEL_SHIFT                 (3U)
-#define FTM_PWMLOAD_CH3SEL(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_PWMLOAD_CH3SEL_SHIFT)) & FTM_PWMLOAD_CH3SEL_MASK)
-#define FTM_PWMLOAD_CH4SEL_MASK                  (0x10U)
-#define FTM_PWMLOAD_CH4SEL_SHIFT                 (4U)
-#define FTM_PWMLOAD_CH4SEL(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_PWMLOAD_CH4SEL_SHIFT)) & FTM_PWMLOAD_CH4SEL_MASK)
-#define FTM_PWMLOAD_CH5SEL_MASK                  (0x20U)
-#define FTM_PWMLOAD_CH5SEL_SHIFT                 (5U)
-#define FTM_PWMLOAD_CH5SEL(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_PWMLOAD_CH5SEL_SHIFT)) & FTM_PWMLOAD_CH5SEL_MASK)
-#define FTM_PWMLOAD_CH6SEL_MASK                  (0x40U)
-#define FTM_PWMLOAD_CH6SEL_SHIFT                 (6U)
-#define FTM_PWMLOAD_CH6SEL(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_PWMLOAD_CH6SEL_SHIFT)) & FTM_PWMLOAD_CH6SEL_MASK)
-#define FTM_PWMLOAD_CH7SEL_MASK                  (0x80U)
-#define FTM_PWMLOAD_CH7SEL_SHIFT                 (7U)
-#define FTM_PWMLOAD_CH7SEL(x)                    (((uint32_t)(((uint32_t)(x)) << FTM_PWMLOAD_CH7SEL_SHIFT)) & FTM_PWMLOAD_CH7SEL_MASK)
-#define FTM_PWMLOAD_LDOK_MASK                    (0x200U)
-#define FTM_PWMLOAD_LDOK_SHIFT                   (9U)
-#define FTM_PWMLOAD_LDOK(x)                      (((uint32_t)(((uint32_t)(x)) << FTM_PWMLOAD_LDOK_SHIFT)) & FTM_PWMLOAD_LDOK_MASK)
-
-
-/*!
- * @}
- */ /* end of group FTM_Register_Masks */
-
-
-/* FTM - Peripheral instance base addresses */
-/** Peripheral FTM0 base address */
-#define FTM0_BASE                                (0x40038000u)
-/** Peripheral FTM0 base pointer */
-#define FTM0                                     ((FTM_Type *)FTM0_BASE)
-/** Peripheral FTM1 base address */
-#define FTM1_BASE                                (0x40039000u)
-/** Peripheral FTM1 base pointer */
-#define FTM1                                     ((FTM_Type *)FTM1_BASE)
-/** Peripheral FTM2 base address */
-#define FTM2_BASE                                (0x4003A000u)
-/** Peripheral FTM2 base pointer */
-#define FTM2                                     ((FTM_Type *)FTM2_BASE)
-/** Peripheral FTM3 base address */
-#define FTM3_BASE                                (0x400B9000u)
-/** Peripheral FTM3 base pointer */
-#define FTM3                                     ((FTM_Type *)FTM3_BASE)
-/** Array initializer of FTM peripheral base addresses */
-#define FTM_BASE_ADDRS                           { FTM0_BASE, FTM1_BASE, FTM2_BASE, FTM3_BASE }
-/** Array initializer of FTM peripheral base pointers */
-#define FTM_BASE_PTRS                            { FTM0, FTM1, FTM2, FTM3 }
-/** Interrupt vectors for the FTM peripheral type */
-#define FTM_IRQS                                 { FTM0_IRQn, FTM1_IRQn, FTM2_IRQn, FTM3_IRQn }
-
-/*!
- * @}
- */ /* end of group FTM_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- GPIO Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup GPIO_Peripheral_Access_Layer GPIO Peripheral Access Layer
- * @{
- */
-
-/** GPIO - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t PDOR;                              /**< Port Data Output Register, offset: 0x0 */
-  __O  uint32_t PSOR;                              /**< Port Set Output Register, offset: 0x4 */
-  __O  uint32_t PCOR;                              /**< Port Clear Output Register, offset: 0x8 */
-  __O  uint32_t PTOR;                              /**< Port Toggle Output Register, offset: 0xC */
-  __I  uint32_t PDIR;                              /**< Port Data Input Register, offset: 0x10 */
-  __IO uint32_t PDDR;                              /**< Port Data Direction Register, offset: 0x14 */
-} GPIO_Type;
-
-/* ----------------------------------------------------------------------------
-   -- GPIO Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup GPIO_Register_Masks GPIO Register Masks
- * @{
- */
-
-/*! @name PDOR - Port Data Output Register */
-#define GPIO_PDOR_PDO_MASK                       (0xFFFFFFFFU)
-#define GPIO_PDOR_PDO_SHIFT                      (0U)
-#define GPIO_PDOR_PDO(x)                         (((uint32_t)(((uint32_t)(x)) << GPIO_PDOR_PDO_SHIFT)) & GPIO_PDOR_PDO_MASK)
-
-/*! @name PSOR - Port Set Output Register */
-#define GPIO_PSOR_PTSO_MASK                      (0xFFFFFFFFU)
-#define GPIO_PSOR_PTSO_SHIFT                     (0U)
-#define GPIO_PSOR_PTSO(x)                        (((uint32_t)(((uint32_t)(x)) << GPIO_PSOR_PTSO_SHIFT)) & GPIO_PSOR_PTSO_MASK)
-
-/*! @name PCOR - Port Clear Output Register */
-#define GPIO_PCOR_PTCO_MASK                      (0xFFFFFFFFU)
-#define GPIO_PCOR_PTCO_SHIFT                     (0U)
-#define GPIO_PCOR_PTCO(x)                        (((uint32_t)(((uint32_t)(x)) << GPIO_PCOR_PTCO_SHIFT)) & GPIO_PCOR_PTCO_MASK)
-
-/*! @name PTOR - Port Toggle Output Register */
-#define GPIO_PTOR_PTTO_MASK                      (0xFFFFFFFFU)
-#define GPIO_PTOR_PTTO_SHIFT                     (0U)
-#define GPIO_PTOR_PTTO(x)                        (((uint32_t)(((uint32_t)(x)) << GPIO_PTOR_PTTO_SHIFT)) & GPIO_PTOR_PTTO_MASK)
-
-/*! @name PDIR - Port Data Input Register */
-#define GPIO_PDIR_PDI_MASK                       (0xFFFFFFFFU)
-#define GPIO_PDIR_PDI_SHIFT                      (0U)
-#define GPIO_PDIR_PDI(x)                         (((uint32_t)(((uint32_t)(x)) << GPIO_PDIR_PDI_SHIFT)) & GPIO_PDIR_PDI_MASK)
-
-/*! @name PDDR - Port Data Direction Register */
-#define GPIO_PDDR_PDD_MASK                       (0xFFFFFFFFU)
-#define GPIO_PDDR_PDD_SHIFT                      (0U)
-#define GPIO_PDDR_PDD(x)                         (((uint32_t)(((uint32_t)(x)) << GPIO_PDDR_PDD_SHIFT)) & GPIO_PDDR_PDD_MASK)
-
-
-/*!
- * @}
- */ /* end of group GPIO_Register_Masks */
-
-
-/* GPIO - Peripheral instance base addresses */
-/** Peripheral PTA base address */
-#define PTA_BASE                                 (0x400FF000u)
-/** Peripheral PTA base pointer */
-#define PTA                                      ((GPIO_Type *)PTA_BASE)
-/** Peripheral PTB base address */
-#define PTB_BASE                                 (0x400FF040u)
-/** Peripheral PTB base pointer */
-#define PTB                                      ((GPIO_Type *)PTB_BASE)
-/** Peripheral PTC base address */
-#define PTC_BASE                                 (0x400FF080u)
-/** Peripheral PTC base pointer */
-#define PTC                                      ((GPIO_Type *)PTC_BASE)
-/** Peripheral PTD base address */
-#define PTD_BASE                                 (0x400FF0C0u)
-/** Peripheral PTD base pointer */
-#define PTD                                      ((GPIO_Type *)PTD_BASE)
-/** Peripheral PTE base address */
-#define PTE_BASE                                 (0x400FF100u)
-/** Peripheral PTE base pointer */
-#define PTE                                      ((GPIO_Type *)PTE_BASE)
-/** Array initializer of GPIO peripheral base addresses */
-#define GPIO_BASE_ADDRS                          { PTA_BASE, PTB_BASE, PTC_BASE, PTD_BASE, PTE_BASE }
-/** Array initializer of GPIO peripheral base pointers */
-#define GPIO_BASE_PTRS                           { PTA, PTB, PTC, PTD, PTE }
-
-/*!
- * @}
- */ /* end of group GPIO_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- I2C Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup I2C_Peripheral_Access_Layer I2C Peripheral Access Layer
- * @{
- */
-
-/** I2C - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t A1;                                 /**< I2C Address Register 1, offset: 0x0 */
-  __IO uint8_t F;                                  /**< I2C Frequency Divider register, offset: 0x1 */
-  __IO uint8_t C1;                                 /**< I2C Control Register 1, offset: 0x2 */
-  __IO uint8_t S;                                  /**< I2C Status register, offset: 0x3 */
-  __IO uint8_t D;                                  /**< I2C Data I/O register, offset: 0x4 */
-  __IO uint8_t C2;                                 /**< I2C Control Register 2, offset: 0x5 */
-  __IO uint8_t FLT;                                /**< I2C Programmable Input Glitch Filter register, offset: 0x6 */
-  __IO uint8_t RA;                                 /**< I2C Range Address register, offset: 0x7 */
-  __IO uint8_t SMB;                                /**< I2C SMBus Control and Status register, offset: 0x8 */
-  __IO uint8_t A2;                                 /**< I2C Address Register 2, offset: 0x9 */
-  __IO uint8_t SLTH;                               /**< I2C SCL Low Timeout Register High, offset: 0xA */
-  __IO uint8_t SLTL;                               /**< I2C SCL Low Timeout Register Low, offset: 0xB */
-} I2C_Type;
-
-/* ----------------------------------------------------------------------------
-   -- I2C Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup I2C_Register_Masks I2C Register Masks
- * @{
- */
-
-/*! @name A1 - I2C Address Register 1 */
-#define I2C_A1_AD_MASK                           (0xFEU)
-#define I2C_A1_AD_SHIFT                          (1U)
-#define I2C_A1_AD(x)                             (((uint8_t)(((uint8_t)(x)) << I2C_A1_AD_SHIFT)) & I2C_A1_AD_MASK)
-
-/*! @name F - I2C Frequency Divider register */
-#define I2C_F_ICR_MASK                           (0x3FU)
-#define I2C_F_ICR_SHIFT                          (0U)
-#define I2C_F_ICR(x)                             (((uint8_t)(((uint8_t)(x)) << I2C_F_ICR_SHIFT)) & I2C_F_ICR_MASK)
-#define I2C_F_MULT_MASK                          (0xC0U)
-#define I2C_F_MULT_SHIFT                         (6U)
-#define I2C_F_MULT(x)                            (((uint8_t)(((uint8_t)(x)) << I2C_F_MULT_SHIFT)) & I2C_F_MULT_MASK)
-
-/*! @name C1 - I2C Control Register 1 */
-#define I2C_C1_DMAEN_MASK                        (0x1U)
-#define I2C_C1_DMAEN_SHIFT                       (0U)
-#define I2C_C1_DMAEN(x)                          (((uint8_t)(((uint8_t)(x)) << I2C_C1_DMAEN_SHIFT)) & I2C_C1_DMAEN_MASK)
-#define I2C_C1_WUEN_MASK                         (0x2U)
-#define I2C_C1_WUEN_SHIFT                        (1U)
-#define I2C_C1_WUEN(x)                           (((uint8_t)(((uint8_t)(x)) << I2C_C1_WUEN_SHIFT)) & I2C_C1_WUEN_MASK)
-#define I2C_C1_RSTA_MASK                         (0x4U)
-#define I2C_C1_RSTA_SHIFT                        (2U)
-#define I2C_C1_RSTA(x)                           (((uint8_t)(((uint8_t)(x)) << I2C_C1_RSTA_SHIFT)) & I2C_C1_RSTA_MASK)
-#define I2C_C1_TXAK_MASK                         (0x8U)
-#define I2C_C1_TXAK_SHIFT                        (3U)
-#define I2C_C1_TXAK(x)                           (((uint8_t)(((uint8_t)(x)) << I2C_C1_TXAK_SHIFT)) & I2C_C1_TXAK_MASK)
-#define I2C_C1_TX_MASK                           (0x10U)
-#define I2C_C1_TX_SHIFT                          (4U)
-#define I2C_C1_TX(x)                             (((uint8_t)(((uint8_t)(x)) << I2C_C1_TX_SHIFT)) & I2C_C1_TX_MASK)
-#define I2C_C1_MST_MASK                          (0x20U)
-#define I2C_C1_MST_SHIFT                         (5U)
-#define I2C_C1_MST(x)                            (((uint8_t)(((uint8_t)(x)) << I2C_C1_MST_SHIFT)) & I2C_C1_MST_MASK)
-#define I2C_C1_IICIE_MASK                        (0x40U)
-#define I2C_C1_IICIE_SHIFT                       (6U)
-#define I2C_C1_IICIE(x)                          (((uint8_t)(((uint8_t)(x)) << I2C_C1_IICIE_SHIFT)) & I2C_C1_IICIE_MASK)
-#define I2C_C1_IICEN_MASK                        (0x80U)
-#define I2C_C1_IICEN_SHIFT                       (7U)
-#define I2C_C1_IICEN(x)                          (((uint8_t)(((uint8_t)(x)) << I2C_C1_IICEN_SHIFT)) & I2C_C1_IICEN_MASK)
-
-/*! @name S - I2C Status register */
-#define I2C_S_RXAK_MASK                          (0x1U)
-#define I2C_S_RXAK_SHIFT                         (0U)
-#define I2C_S_RXAK(x)                            (((uint8_t)(((uint8_t)(x)) << I2C_S_RXAK_SHIFT)) & I2C_S_RXAK_MASK)
-#define I2C_S_IICIF_MASK                         (0x2U)
-#define I2C_S_IICIF_SHIFT                        (1U)
-#define I2C_S_IICIF(x)                           (((uint8_t)(((uint8_t)(x)) << I2C_S_IICIF_SHIFT)) & I2C_S_IICIF_MASK)
-#define I2C_S_SRW_MASK                           (0x4U)
-#define I2C_S_SRW_SHIFT                          (2U)
-#define I2C_S_SRW(x)                             (((uint8_t)(((uint8_t)(x)) << I2C_S_SRW_SHIFT)) & I2C_S_SRW_MASK)
-#define I2C_S_RAM_MASK                           (0x8U)
-#define I2C_S_RAM_SHIFT                          (3U)
-#define I2C_S_RAM(x)                             (((uint8_t)(((uint8_t)(x)) << I2C_S_RAM_SHIFT)) & I2C_S_RAM_MASK)
-#define I2C_S_ARBL_MASK                          (0x10U)
-#define I2C_S_ARBL_SHIFT                         (4U)
-#define I2C_S_ARBL(x)                            (((uint8_t)(((uint8_t)(x)) << I2C_S_ARBL_SHIFT)) & I2C_S_ARBL_MASK)
-#define I2C_S_BUSY_MASK                          (0x20U)
-#define I2C_S_BUSY_SHIFT                         (5U)
-#define I2C_S_BUSY(x)                            (((uint8_t)(((uint8_t)(x)) << I2C_S_BUSY_SHIFT)) & I2C_S_BUSY_MASK)
-#define I2C_S_IAAS_MASK                          (0x40U)
-#define I2C_S_IAAS_SHIFT                         (6U)
-#define I2C_S_IAAS(x)                            (((uint8_t)(((uint8_t)(x)) << I2C_S_IAAS_SHIFT)) & I2C_S_IAAS_MASK)
-#define I2C_S_TCF_MASK                           (0x80U)
-#define I2C_S_TCF_SHIFT                          (7U)
-#define I2C_S_TCF(x)                             (((uint8_t)(((uint8_t)(x)) << I2C_S_TCF_SHIFT)) & I2C_S_TCF_MASK)
-
-/*! @name D - I2C Data I/O register */
-#define I2C_D_DATA_MASK                          (0xFFU)
-#define I2C_D_DATA_SHIFT                         (0U)
-#define I2C_D_DATA(x)                            (((uint8_t)(((uint8_t)(x)) << I2C_D_DATA_SHIFT)) & I2C_D_DATA_MASK)
-
-/*! @name C2 - I2C Control Register 2 */
-#define I2C_C2_AD_MASK                           (0x7U)
-#define I2C_C2_AD_SHIFT                          (0U)
-#define I2C_C2_AD(x)                             (((uint8_t)(((uint8_t)(x)) << I2C_C2_AD_SHIFT)) & I2C_C2_AD_MASK)
-#define I2C_C2_RMEN_MASK                         (0x8U)
-#define I2C_C2_RMEN_SHIFT                        (3U)
-#define I2C_C2_RMEN(x)                           (((uint8_t)(((uint8_t)(x)) << I2C_C2_RMEN_SHIFT)) & I2C_C2_RMEN_MASK)
-#define I2C_C2_SBRC_MASK                         (0x10U)
-#define I2C_C2_SBRC_SHIFT                        (4U)
-#define I2C_C2_SBRC(x)                           (((uint8_t)(((uint8_t)(x)) << I2C_C2_SBRC_SHIFT)) & I2C_C2_SBRC_MASK)
-#define I2C_C2_HDRS_MASK                         (0x20U)
-#define I2C_C2_HDRS_SHIFT                        (5U)
-#define I2C_C2_HDRS(x)                           (((uint8_t)(((uint8_t)(x)) << I2C_C2_HDRS_SHIFT)) & I2C_C2_HDRS_MASK)
-#define I2C_C2_ADEXT_MASK                        (0x40U)
-#define I2C_C2_ADEXT_SHIFT                       (6U)
-#define I2C_C2_ADEXT(x)                          (((uint8_t)(((uint8_t)(x)) << I2C_C2_ADEXT_SHIFT)) & I2C_C2_ADEXT_MASK)
-#define I2C_C2_GCAEN_MASK                        (0x80U)
-#define I2C_C2_GCAEN_SHIFT                       (7U)
-#define I2C_C2_GCAEN(x)                          (((uint8_t)(((uint8_t)(x)) << I2C_C2_GCAEN_SHIFT)) & I2C_C2_GCAEN_MASK)
-
-/*! @name FLT - I2C Programmable Input Glitch Filter register */
-#define I2C_FLT_FLT_MASK                         (0xFU)
-#define I2C_FLT_FLT_SHIFT                        (0U)
-#define I2C_FLT_FLT(x)                           (((uint8_t)(((uint8_t)(x)) << I2C_FLT_FLT_SHIFT)) & I2C_FLT_FLT_MASK)
-#define I2C_FLT_STARTF_MASK                      (0x10U)
-#define I2C_FLT_STARTF_SHIFT                     (4U)
-#define I2C_FLT_STARTF(x)                        (((uint8_t)(((uint8_t)(x)) << I2C_FLT_STARTF_SHIFT)) & I2C_FLT_STARTF_MASK)
-#define I2C_FLT_SSIE_MASK                        (0x20U)
-#define I2C_FLT_SSIE_SHIFT                       (5U)
-#define I2C_FLT_SSIE(x)                          (((uint8_t)(((uint8_t)(x)) << I2C_FLT_SSIE_SHIFT)) & I2C_FLT_SSIE_MASK)
-#define I2C_FLT_STOPF_MASK                       (0x40U)
-#define I2C_FLT_STOPF_SHIFT                      (6U)
-#define I2C_FLT_STOPF(x)                         (((uint8_t)(((uint8_t)(x)) << I2C_FLT_STOPF_SHIFT)) & I2C_FLT_STOPF_MASK)
-#define I2C_FLT_SHEN_MASK                        (0x80U)
-#define I2C_FLT_SHEN_SHIFT                       (7U)
-#define I2C_FLT_SHEN(x)                          (((uint8_t)(((uint8_t)(x)) << I2C_FLT_SHEN_SHIFT)) & I2C_FLT_SHEN_MASK)
-
-/*! @name RA - I2C Range Address register */
-#define I2C_RA_RAD_MASK                          (0xFEU)
-#define I2C_RA_RAD_SHIFT                         (1U)
-#define I2C_RA_RAD(x)                            (((uint8_t)(((uint8_t)(x)) << I2C_RA_RAD_SHIFT)) & I2C_RA_RAD_MASK)
-
-/*! @name SMB - I2C SMBus Control and Status register */
-#define I2C_SMB_SHTF2IE_MASK                     (0x1U)
-#define I2C_SMB_SHTF2IE_SHIFT                    (0U)
-#define I2C_SMB_SHTF2IE(x)                       (((uint8_t)(((uint8_t)(x)) << I2C_SMB_SHTF2IE_SHIFT)) & I2C_SMB_SHTF2IE_MASK)
-#define I2C_SMB_SHTF2_MASK                       (0x2U)
-#define I2C_SMB_SHTF2_SHIFT                      (1U)
-#define I2C_SMB_SHTF2(x)                         (((uint8_t)(((uint8_t)(x)) << I2C_SMB_SHTF2_SHIFT)) & I2C_SMB_SHTF2_MASK)
-#define I2C_SMB_SHTF1_MASK                       (0x4U)
-#define I2C_SMB_SHTF1_SHIFT                      (2U)
-#define I2C_SMB_SHTF1(x)                         (((uint8_t)(((uint8_t)(x)) << I2C_SMB_SHTF1_SHIFT)) & I2C_SMB_SHTF1_MASK)
-#define I2C_SMB_SLTF_MASK                        (0x8U)
-#define I2C_SMB_SLTF_SHIFT                       (3U)
-#define I2C_SMB_SLTF(x)                          (((uint8_t)(((uint8_t)(x)) << I2C_SMB_SLTF_SHIFT)) & I2C_SMB_SLTF_MASK)
-#define I2C_SMB_TCKSEL_MASK                      (0x10U)
-#define I2C_SMB_TCKSEL_SHIFT                     (4U)
-#define I2C_SMB_TCKSEL(x)                        (((uint8_t)(((uint8_t)(x)) << I2C_SMB_TCKSEL_SHIFT)) & I2C_SMB_TCKSEL_MASK)
-#define I2C_SMB_SIICAEN_MASK                     (0x20U)
-#define I2C_SMB_SIICAEN_SHIFT                    (5U)
-#define I2C_SMB_SIICAEN(x)                       (((uint8_t)(((uint8_t)(x)) << I2C_SMB_SIICAEN_SHIFT)) & I2C_SMB_SIICAEN_MASK)
-#define I2C_SMB_ALERTEN_MASK                     (0x40U)
-#define I2C_SMB_ALERTEN_SHIFT                    (6U)
-#define I2C_SMB_ALERTEN(x)                       (((uint8_t)(((uint8_t)(x)) << I2C_SMB_ALERTEN_SHIFT)) & I2C_SMB_ALERTEN_MASK)
-#define I2C_SMB_FACK_MASK                        (0x80U)
-#define I2C_SMB_FACK_SHIFT                       (7U)
-#define I2C_SMB_FACK(x)                          (((uint8_t)(((uint8_t)(x)) << I2C_SMB_FACK_SHIFT)) & I2C_SMB_FACK_MASK)
-
-/*! @name A2 - I2C Address Register 2 */
-#define I2C_A2_SAD_MASK                          (0xFEU)
-#define I2C_A2_SAD_SHIFT                         (1U)
-#define I2C_A2_SAD(x)                            (((uint8_t)(((uint8_t)(x)) << I2C_A2_SAD_SHIFT)) & I2C_A2_SAD_MASK)
-
-/*! @name SLTH - I2C SCL Low Timeout Register High */
-#define I2C_SLTH_SSLT_MASK                       (0xFFU)
-#define I2C_SLTH_SSLT_SHIFT                      (0U)
-#define I2C_SLTH_SSLT(x)                         (((uint8_t)(((uint8_t)(x)) << I2C_SLTH_SSLT_SHIFT)) & I2C_SLTH_SSLT_MASK)
-
-/*! @name SLTL - I2C SCL Low Timeout Register Low */
-#define I2C_SLTL_SSLT_MASK                       (0xFFU)
-#define I2C_SLTL_SSLT_SHIFT                      (0U)
-#define I2C_SLTL_SSLT(x)                         (((uint8_t)(((uint8_t)(x)) << I2C_SLTL_SSLT_SHIFT)) & I2C_SLTL_SSLT_MASK)
-
-
-/*!
- * @}
- */ /* end of group I2C_Register_Masks */
-
-
-/* I2C - Peripheral instance base addresses */
-/** Peripheral I2C0 base address */
-#define I2C0_BASE                                (0x40066000u)
-/** Peripheral I2C0 base pointer */
-#define I2C0                                     ((I2C_Type *)I2C0_BASE)
-/** Peripheral I2C1 base address */
-#define I2C1_BASE                                (0x40067000u)
-/** Peripheral I2C1 base pointer */
-#define I2C1                                     ((I2C_Type *)I2C1_BASE)
-/** Peripheral I2C2 base address */
-#define I2C2_BASE                                (0x400E6000u)
-/** Peripheral I2C2 base pointer */
-#define I2C2                                     ((I2C_Type *)I2C2_BASE)
-/** Array initializer of I2C peripheral base addresses */
-#define I2C_BASE_ADDRS                           { I2C0_BASE, I2C1_BASE, I2C2_BASE }
-/** Array initializer of I2C peripheral base pointers */
-#define I2C_BASE_PTRS                            { I2C0, I2C1, I2C2 }
-/** Interrupt vectors for the I2C peripheral type */
-#define I2C_IRQS                                 { I2C0_IRQn, I2C1_IRQn, I2C2_IRQn }
-
-/*!
- * @}
- */ /* end of group I2C_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- I2S Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup I2S_Peripheral_Access_Layer I2S Peripheral Access Layer
- * @{
- */
-
-/** I2S - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t TCSR;                              /**< SAI Transmit Control Register, offset: 0x0 */
-  __IO uint32_t TCR1;                              /**< SAI Transmit Configuration 1 Register, offset: 0x4 */
-  __IO uint32_t TCR2;                              /**< SAI Transmit Configuration 2 Register, offset: 0x8 */
-  __IO uint32_t TCR3;                              /**< SAI Transmit Configuration 3 Register, offset: 0xC */
-  __IO uint32_t TCR4;                              /**< SAI Transmit Configuration 4 Register, offset: 0x10 */
-  __IO uint32_t TCR5;                              /**< SAI Transmit Configuration 5 Register, offset: 0x14 */
-       uint8_t RESERVED_0[8];
-  __O  uint32_t TDR[2];                            /**< SAI Transmit Data Register, array offset: 0x20, array step: 0x4 */
-       uint8_t RESERVED_1[24];
-  __I  uint32_t TFR[2];                            /**< SAI Transmit FIFO Register, array offset: 0x40, array step: 0x4 */
-       uint8_t RESERVED_2[24];
-  __IO uint32_t TMR;                               /**< SAI Transmit Mask Register, offset: 0x60 */
-       uint8_t RESERVED_3[28];
-  __IO uint32_t RCSR;                              /**< SAI Receive Control Register, offset: 0x80 */
-  __IO uint32_t RCR1;                              /**< SAI Receive Configuration 1 Register, offset: 0x84 */
-  __IO uint32_t RCR2;                              /**< SAI Receive Configuration 2 Register, offset: 0x88 */
-  __IO uint32_t RCR3;                              /**< SAI Receive Configuration 3 Register, offset: 0x8C */
-  __IO uint32_t RCR4;                              /**< SAI Receive Configuration 4 Register, offset: 0x90 */
-  __IO uint32_t RCR5;                              /**< SAI Receive Configuration 5 Register, offset: 0x94 */
-       uint8_t RESERVED_4[8];
-  __I  uint32_t RDR[2];                            /**< SAI Receive Data Register, array offset: 0xA0, array step: 0x4 */
-       uint8_t RESERVED_5[24];
-  __I  uint32_t RFR[2];                            /**< SAI Receive FIFO Register, array offset: 0xC0, array step: 0x4 */
-       uint8_t RESERVED_6[24];
-  __IO uint32_t RMR;                               /**< SAI Receive Mask Register, offset: 0xE0 */
-       uint8_t RESERVED_7[28];
-  __IO uint32_t MCR;                               /**< SAI MCLK Control Register, offset: 0x100 */
-  __IO uint32_t MDR;                               /**< SAI MCLK Divide Register, offset: 0x104 */
-} I2S_Type;
-
-/* ----------------------------------------------------------------------------
-   -- I2S Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup I2S_Register_Masks I2S Register Masks
- * @{
- */
-
-/*! @name TCSR - SAI Transmit Control Register */
-#define I2S_TCSR_FRDE_MASK                       (0x1U)
-#define I2S_TCSR_FRDE_SHIFT                      (0U)
-#define I2S_TCSR_FRDE(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_TCSR_FRDE_SHIFT)) & I2S_TCSR_FRDE_MASK)
-#define I2S_TCSR_FWDE_MASK                       (0x2U)
-#define I2S_TCSR_FWDE_SHIFT                      (1U)
-#define I2S_TCSR_FWDE(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_TCSR_FWDE_SHIFT)) & I2S_TCSR_FWDE_MASK)
-#define I2S_TCSR_FRIE_MASK                       (0x100U)
-#define I2S_TCSR_FRIE_SHIFT                      (8U)
-#define I2S_TCSR_FRIE(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_TCSR_FRIE_SHIFT)) & I2S_TCSR_FRIE_MASK)
-#define I2S_TCSR_FWIE_MASK                       (0x200U)
-#define I2S_TCSR_FWIE_SHIFT                      (9U)
-#define I2S_TCSR_FWIE(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_TCSR_FWIE_SHIFT)) & I2S_TCSR_FWIE_MASK)
-#define I2S_TCSR_FEIE_MASK                       (0x400U)
-#define I2S_TCSR_FEIE_SHIFT                      (10U)
-#define I2S_TCSR_FEIE(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_TCSR_FEIE_SHIFT)) & I2S_TCSR_FEIE_MASK)
-#define I2S_TCSR_SEIE_MASK                       (0x800U)
-#define I2S_TCSR_SEIE_SHIFT                      (11U)
-#define I2S_TCSR_SEIE(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_TCSR_SEIE_SHIFT)) & I2S_TCSR_SEIE_MASK)
-#define I2S_TCSR_WSIE_MASK                       (0x1000U)
-#define I2S_TCSR_WSIE_SHIFT                      (12U)
-#define I2S_TCSR_WSIE(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_TCSR_WSIE_SHIFT)) & I2S_TCSR_WSIE_MASK)
-#define I2S_TCSR_FRF_MASK                        (0x10000U)
-#define I2S_TCSR_FRF_SHIFT                       (16U)
-#define I2S_TCSR_FRF(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCSR_FRF_SHIFT)) & I2S_TCSR_FRF_MASK)
-#define I2S_TCSR_FWF_MASK                        (0x20000U)
-#define I2S_TCSR_FWF_SHIFT                       (17U)
-#define I2S_TCSR_FWF(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCSR_FWF_SHIFT)) & I2S_TCSR_FWF_MASK)
-#define I2S_TCSR_FEF_MASK                        (0x40000U)
-#define I2S_TCSR_FEF_SHIFT                       (18U)
-#define I2S_TCSR_FEF(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCSR_FEF_SHIFT)) & I2S_TCSR_FEF_MASK)
-#define I2S_TCSR_SEF_MASK                        (0x80000U)
-#define I2S_TCSR_SEF_SHIFT                       (19U)
-#define I2S_TCSR_SEF(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCSR_SEF_SHIFT)) & I2S_TCSR_SEF_MASK)
-#define I2S_TCSR_WSF_MASK                        (0x100000U)
-#define I2S_TCSR_WSF_SHIFT                       (20U)
-#define I2S_TCSR_WSF(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCSR_WSF_SHIFT)) & I2S_TCSR_WSF_MASK)
-#define I2S_TCSR_SR_MASK                         (0x1000000U)
-#define I2S_TCSR_SR_SHIFT                        (24U)
-#define I2S_TCSR_SR(x)                           (((uint32_t)(((uint32_t)(x)) << I2S_TCSR_SR_SHIFT)) & I2S_TCSR_SR_MASK)
-#define I2S_TCSR_FR_MASK                         (0x2000000U)
-#define I2S_TCSR_FR_SHIFT                        (25U)
-#define I2S_TCSR_FR(x)                           (((uint32_t)(((uint32_t)(x)) << I2S_TCSR_FR_SHIFT)) & I2S_TCSR_FR_MASK)
-#define I2S_TCSR_BCE_MASK                        (0x10000000U)
-#define I2S_TCSR_BCE_SHIFT                       (28U)
-#define I2S_TCSR_BCE(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCSR_BCE_SHIFT)) & I2S_TCSR_BCE_MASK)
-#define I2S_TCSR_DBGE_MASK                       (0x20000000U)
-#define I2S_TCSR_DBGE_SHIFT                      (29U)
-#define I2S_TCSR_DBGE(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_TCSR_DBGE_SHIFT)) & I2S_TCSR_DBGE_MASK)
-#define I2S_TCSR_STOPE_MASK                      (0x40000000U)
-#define I2S_TCSR_STOPE_SHIFT                     (30U)
-#define I2S_TCSR_STOPE(x)                        (((uint32_t)(((uint32_t)(x)) << I2S_TCSR_STOPE_SHIFT)) & I2S_TCSR_STOPE_MASK)
-#define I2S_TCSR_TE_MASK                         (0x80000000U)
-#define I2S_TCSR_TE_SHIFT                        (31U)
-#define I2S_TCSR_TE(x)                           (((uint32_t)(((uint32_t)(x)) << I2S_TCSR_TE_SHIFT)) & I2S_TCSR_TE_MASK)
-
-/*! @name TCR1 - SAI Transmit Configuration 1 Register */
-#define I2S_TCR1_TFW_MASK                        (0x7U)
-#define I2S_TCR1_TFW_SHIFT                       (0U)
-#define I2S_TCR1_TFW(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCR1_TFW_SHIFT)) & I2S_TCR1_TFW_MASK)
-
-/*! @name TCR2 - SAI Transmit Configuration 2 Register */
-#define I2S_TCR2_DIV_MASK                        (0xFFU)
-#define I2S_TCR2_DIV_SHIFT                       (0U)
-#define I2S_TCR2_DIV(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCR2_DIV_SHIFT)) & I2S_TCR2_DIV_MASK)
-#define I2S_TCR2_BCD_MASK                        (0x1000000U)
-#define I2S_TCR2_BCD_SHIFT                       (24U)
-#define I2S_TCR2_BCD(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCR2_BCD_SHIFT)) & I2S_TCR2_BCD_MASK)
-#define I2S_TCR2_BCP_MASK                        (0x2000000U)
-#define I2S_TCR2_BCP_SHIFT                       (25U)
-#define I2S_TCR2_BCP(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCR2_BCP_SHIFT)) & I2S_TCR2_BCP_MASK)
-#define I2S_TCR2_MSEL_MASK                       (0xC000000U)
-#define I2S_TCR2_MSEL_SHIFT                      (26U)
-#define I2S_TCR2_MSEL(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_TCR2_MSEL_SHIFT)) & I2S_TCR2_MSEL_MASK)
-#define I2S_TCR2_BCI_MASK                        (0x10000000U)
-#define I2S_TCR2_BCI_SHIFT                       (28U)
-#define I2S_TCR2_BCI(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCR2_BCI_SHIFT)) & I2S_TCR2_BCI_MASK)
-#define I2S_TCR2_BCS_MASK                        (0x20000000U)
-#define I2S_TCR2_BCS_SHIFT                       (29U)
-#define I2S_TCR2_BCS(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCR2_BCS_SHIFT)) & I2S_TCR2_BCS_MASK)
-#define I2S_TCR2_SYNC_MASK                       (0xC0000000U)
-#define I2S_TCR2_SYNC_SHIFT                      (30U)
-#define I2S_TCR2_SYNC(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_TCR2_SYNC_SHIFT)) & I2S_TCR2_SYNC_MASK)
-
-/*! @name TCR3 - SAI Transmit Configuration 3 Register */
-#define I2S_TCR3_WDFL_MASK                       (0x1FU)
-#define I2S_TCR3_WDFL_SHIFT                      (0U)
-#define I2S_TCR3_WDFL(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_TCR3_WDFL_SHIFT)) & I2S_TCR3_WDFL_MASK)
-#define I2S_TCR3_TCE_MASK                        (0x30000U)
-#define I2S_TCR3_TCE_SHIFT                       (16U)
-#define I2S_TCR3_TCE(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCR3_TCE_SHIFT)) & I2S_TCR3_TCE_MASK)
-
-/*! @name TCR4 - SAI Transmit Configuration 4 Register */
-#define I2S_TCR4_FSD_MASK                        (0x1U)
-#define I2S_TCR4_FSD_SHIFT                       (0U)
-#define I2S_TCR4_FSD(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCR4_FSD_SHIFT)) & I2S_TCR4_FSD_MASK)
-#define I2S_TCR4_FSP_MASK                        (0x2U)
-#define I2S_TCR4_FSP_SHIFT                       (1U)
-#define I2S_TCR4_FSP(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCR4_FSP_SHIFT)) & I2S_TCR4_FSP_MASK)
-#define I2S_TCR4_FSE_MASK                        (0x8U)
-#define I2S_TCR4_FSE_SHIFT                       (3U)
-#define I2S_TCR4_FSE(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCR4_FSE_SHIFT)) & I2S_TCR4_FSE_MASK)
-#define I2S_TCR4_MF_MASK                         (0x10U)
-#define I2S_TCR4_MF_SHIFT                        (4U)
-#define I2S_TCR4_MF(x)                           (((uint32_t)(((uint32_t)(x)) << I2S_TCR4_MF_SHIFT)) & I2S_TCR4_MF_MASK)
-#define I2S_TCR4_SYWD_MASK                       (0x1F00U)
-#define I2S_TCR4_SYWD_SHIFT                      (8U)
-#define I2S_TCR4_SYWD(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_TCR4_SYWD_SHIFT)) & I2S_TCR4_SYWD_MASK)
-#define I2S_TCR4_FRSZ_MASK                       (0x1F0000U)
-#define I2S_TCR4_FRSZ_SHIFT                      (16U)
-#define I2S_TCR4_FRSZ(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_TCR4_FRSZ_SHIFT)) & I2S_TCR4_FRSZ_MASK)
-
-/*! @name TCR5 - SAI Transmit Configuration 5 Register */
-#define I2S_TCR5_FBT_MASK                        (0x1F00U)
-#define I2S_TCR5_FBT_SHIFT                       (8U)
-#define I2S_TCR5_FBT(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCR5_FBT_SHIFT)) & I2S_TCR5_FBT_MASK)
-#define I2S_TCR5_W0W_MASK                        (0x1F0000U)
-#define I2S_TCR5_W0W_SHIFT                       (16U)
-#define I2S_TCR5_W0W(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCR5_W0W_SHIFT)) & I2S_TCR5_W0W_MASK)
-#define I2S_TCR5_WNW_MASK                        (0x1F000000U)
-#define I2S_TCR5_WNW_SHIFT                       (24U)
-#define I2S_TCR5_WNW(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_TCR5_WNW_SHIFT)) & I2S_TCR5_WNW_MASK)
-
-/*! @name TDR - SAI Transmit Data Register */
-#define I2S_TDR_TDR_MASK                         (0xFFFFFFFFU)
-#define I2S_TDR_TDR_SHIFT                        (0U)
-#define I2S_TDR_TDR(x)                           (((uint32_t)(((uint32_t)(x)) << I2S_TDR_TDR_SHIFT)) & I2S_TDR_TDR_MASK)
-
-/* The count of I2S_TDR */
-#define I2S_TDR_COUNT                            (2U)
-
-/*! @name TFR - SAI Transmit FIFO Register */
-#define I2S_TFR_RFP_MASK                         (0xFU)
-#define I2S_TFR_RFP_SHIFT                        (0U)
-#define I2S_TFR_RFP(x)                           (((uint32_t)(((uint32_t)(x)) << I2S_TFR_RFP_SHIFT)) & I2S_TFR_RFP_MASK)
-#define I2S_TFR_WFP_MASK                         (0xF0000U)
-#define I2S_TFR_WFP_SHIFT                        (16U)
-#define I2S_TFR_WFP(x)                           (((uint32_t)(((uint32_t)(x)) << I2S_TFR_WFP_SHIFT)) & I2S_TFR_WFP_MASK)
-
-/* The count of I2S_TFR */
-#define I2S_TFR_COUNT                            (2U)
-
-/*! @name TMR - SAI Transmit Mask Register */
-#define I2S_TMR_TWM_MASK                         (0xFFFFFFFFU)
-#define I2S_TMR_TWM_SHIFT                        (0U)
-#define I2S_TMR_TWM(x)                           (((uint32_t)(((uint32_t)(x)) << I2S_TMR_TWM_SHIFT)) & I2S_TMR_TWM_MASK)
-
-/*! @name RCSR - SAI Receive Control Register */
-#define I2S_RCSR_FRDE_MASK                       (0x1U)
-#define I2S_RCSR_FRDE_SHIFT                      (0U)
-#define I2S_RCSR_FRDE(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_RCSR_FRDE_SHIFT)) & I2S_RCSR_FRDE_MASK)
-#define I2S_RCSR_FWDE_MASK                       (0x2U)
-#define I2S_RCSR_FWDE_SHIFT                      (1U)
-#define I2S_RCSR_FWDE(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_RCSR_FWDE_SHIFT)) & I2S_RCSR_FWDE_MASK)
-#define I2S_RCSR_FRIE_MASK                       (0x100U)
-#define I2S_RCSR_FRIE_SHIFT                      (8U)
-#define I2S_RCSR_FRIE(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_RCSR_FRIE_SHIFT)) & I2S_RCSR_FRIE_MASK)
-#define I2S_RCSR_FWIE_MASK                       (0x200U)
-#define I2S_RCSR_FWIE_SHIFT                      (9U)
-#define I2S_RCSR_FWIE(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_RCSR_FWIE_SHIFT)) & I2S_RCSR_FWIE_MASK)
-#define I2S_RCSR_FEIE_MASK                       (0x400U)
-#define I2S_RCSR_FEIE_SHIFT                      (10U)
-#define I2S_RCSR_FEIE(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_RCSR_FEIE_SHIFT)) & I2S_RCSR_FEIE_MASK)
-#define I2S_RCSR_SEIE_MASK                       (0x800U)
-#define I2S_RCSR_SEIE_SHIFT                      (11U)
-#define I2S_RCSR_SEIE(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_RCSR_SEIE_SHIFT)) & I2S_RCSR_SEIE_MASK)
-#define I2S_RCSR_WSIE_MASK                       (0x1000U)
-#define I2S_RCSR_WSIE_SHIFT                      (12U)
-#define I2S_RCSR_WSIE(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_RCSR_WSIE_SHIFT)) & I2S_RCSR_WSIE_MASK)
-#define I2S_RCSR_FRF_MASK                        (0x10000U)
-#define I2S_RCSR_FRF_SHIFT                       (16U)
-#define I2S_RCSR_FRF(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCSR_FRF_SHIFT)) & I2S_RCSR_FRF_MASK)
-#define I2S_RCSR_FWF_MASK                        (0x20000U)
-#define I2S_RCSR_FWF_SHIFT                       (17U)
-#define I2S_RCSR_FWF(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCSR_FWF_SHIFT)) & I2S_RCSR_FWF_MASK)
-#define I2S_RCSR_FEF_MASK                        (0x40000U)
-#define I2S_RCSR_FEF_SHIFT                       (18U)
-#define I2S_RCSR_FEF(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCSR_FEF_SHIFT)) & I2S_RCSR_FEF_MASK)
-#define I2S_RCSR_SEF_MASK                        (0x80000U)
-#define I2S_RCSR_SEF_SHIFT                       (19U)
-#define I2S_RCSR_SEF(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCSR_SEF_SHIFT)) & I2S_RCSR_SEF_MASK)
-#define I2S_RCSR_WSF_MASK                        (0x100000U)
-#define I2S_RCSR_WSF_SHIFT                       (20U)
-#define I2S_RCSR_WSF(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCSR_WSF_SHIFT)) & I2S_RCSR_WSF_MASK)
-#define I2S_RCSR_SR_MASK                         (0x1000000U)
-#define I2S_RCSR_SR_SHIFT                        (24U)
-#define I2S_RCSR_SR(x)                           (((uint32_t)(((uint32_t)(x)) << I2S_RCSR_SR_SHIFT)) & I2S_RCSR_SR_MASK)
-#define I2S_RCSR_FR_MASK                         (0x2000000U)
-#define I2S_RCSR_FR_SHIFT                        (25U)
-#define I2S_RCSR_FR(x)                           (((uint32_t)(((uint32_t)(x)) << I2S_RCSR_FR_SHIFT)) & I2S_RCSR_FR_MASK)
-#define I2S_RCSR_BCE_MASK                        (0x10000000U)
-#define I2S_RCSR_BCE_SHIFT                       (28U)
-#define I2S_RCSR_BCE(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCSR_BCE_SHIFT)) & I2S_RCSR_BCE_MASK)
-#define I2S_RCSR_DBGE_MASK                       (0x20000000U)
-#define I2S_RCSR_DBGE_SHIFT                      (29U)
-#define I2S_RCSR_DBGE(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_RCSR_DBGE_SHIFT)) & I2S_RCSR_DBGE_MASK)
-#define I2S_RCSR_STOPE_MASK                      (0x40000000U)
-#define I2S_RCSR_STOPE_SHIFT                     (30U)
-#define I2S_RCSR_STOPE(x)                        (((uint32_t)(((uint32_t)(x)) << I2S_RCSR_STOPE_SHIFT)) & I2S_RCSR_STOPE_MASK)
-#define I2S_RCSR_RE_MASK                         (0x80000000U)
-#define I2S_RCSR_RE_SHIFT                        (31U)
-#define I2S_RCSR_RE(x)                           (((uint32_t)(((uint32_t)(x)) << I2S_RCSR_RE_SHIFT)) & I2S_RCSR_RE_MASK)
-
-/*! @name RCR1 - SAI Receive Configuration 1 Register */
-#define I2S_RCR1_RFW_MASK                        (0x7U)
-#define I2S_RCR1_RFW_SHIFT                       (0U)
-#define I2S_RCR1_RFW(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCR1_RFW_SHIFT)) & I2S_RCR1_RFW_MASK)
-
-/*! @name RCR2 - SAI Receive Configuration 2 Register */
-#define I2S_RCR2_DIV_MASK                        (0xFFU)
-#define I2S_RCR2_DIV_SHIFT                       (0U)
-#define I2S_RCR2_DIV(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCR2_DIV_SHIFT)) & I2S_RCR2_DIV_MASK)
-#define I2S_RCR2_BCD_MASK                        (0x1000000U)
-#define I2S_RCR2_BCD_SHIFT                       (24U)
-#define I2S_RCR2_BCD(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCR2_BCD_SHIFT)) & I2S_RCR2_BCD_MASK)
-#define I2S_RCR2_BCP_MASK                        (0x2000000U)
-#define I2S_RCR2_BCP_SHIFT                       (25U)
-#define I2S_RCR2_BCP(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCR2_BCP_SHIFT)) & I2S_RCR2_BCP_MASK)
-#define I2S_RCR2_MSEL_MASK                       (0xC000000U)
-#define I2S_RCR2_MSEL_SHIFT                      (26U)
-#define I2S_RCR2_MSEL(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_RCR2_MSEL_SHIFT)) & I2S_RCR2_MSEL_MASK)
-#define I2S_RCR2_BCI_MASK                        (0x10000000U)
-#define I2S_RCR2_BCI_SHIFT                       (28U)
-#define I2S_RCR2_BCI(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCR2_BCI_SHIFT)) & I2S_RCR2_BCI_MASK)
-#define I2S_RCR2_BCS_MASK                        (0x20000000U)
-#define I2S_RCR2_BCS_SHIFT                       (29U)
-#define I2S_RCR2_BCS(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCR2_BCS_SHIFT)) & I2S_RCR2_BCS_MASK)
-#define I2S_RCR2_SYNC_MASK                       (0xC0000000U)
-#define I2S_RCR2_SYNC_SHIFT                      (30U)
-#define I2S_RCR2_SYNC(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_RCR2_SYNC_SHIFT)) & I2S_RCR2_SYNC_MASK)
-
-/*! @name RCR3 - SAI Receive Configuration 3 Register */
-#define I2S_RCR3_WDFL_MASK                       (0x1FU)
-#define I2S_RCR3_WDFL_SHIFT                      (0U)
-#define I2S_RCR3_WDFL(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_RCR3_WDFL_SHIFT)) & I2S_RCR3_WDFL_MASK)
-#define I2S_RCR3_RCE_MASK                        (0x30000U)
-#define I2S_RCR3_RCE_SHIFT                       (16U)
-#define I2S_RCR3_RCE(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCR3_RCE_SHIFT)) & I2S_RCR3_RCE_MASK)
-
-/*! @name RCR4 - SAI Receive Configuration 4 Register */
-#define I2S_RCR4_FSD_MASK                        (0x1U)
-#define I2S_RCR4_FSD_SHIFT                       (0U)
-#define I2S_RCR4_FSD(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCR4_FSD_SHIFT)) & I2S_RCR4_FSD_MASK)
-#define I2S_RCR4_FSP_MASK                        (0x2U)
-#define I2S_RCR4_FSP_SHIFT                       (1U)
-#define I2S_RCR4_FSP(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCR4_FSP_SHIFT)) & I2S_RCR4_FSP_MASK)
-#define I2S_RCR4_FSE_MASK                        (0x8U)
-#define I2S_RCR4_FSE_SHIFT                       (3U)
-#define I2S_RCR4_FSE(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCR4_FSE_SHIFT)) & I2S_RCR4_FSE_MASK)
-#define I2S_RCR4_MF_MASK                         (0x10U)
-#define I2S_RCR4_MF_SHIFT                        (4U)
-#define I2S_RCR4_MF(x)                           (((uint32_t)(((uint32_t)(x)) << I2S_RCR4_MF_SHIFT)) & I2S_RCR4_MF_MASK)
-#define I2S_RCR4_SYWD_MASK                       (0x1F00U)
-#define I2S_RCR4_SYWD_SHIFT                      (8U)
-#define I2S_RCR4_SYWD(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_RCR4_SYWD_SHIFT)) & I2S_RCR4_SYWD_MASK)
-#define I2S_RCR4_FRSZ_MASK                       (0x1F0000U)
-#define I2S_RCR4_FRSZ_SHIFT                      (16U)
-#define I2S_RCR4_FRSZ(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_RCR4_FRSZ_SHIFT)) & I2S_RCR4_FRSZ_MASK)
-
-/*! @name RCR5 - SAI Receive Configuration 5 Register */
-#define I2S_RCR5_FBT_MASK                        (0x1F00U)
-#define I2S_RCR5_FBT_SHIFT                       (8U)
-#define I2S_RCR5_FBT(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCR5_FBT_SHIFT)) & I2S_RCR5_FBT_MASK)
-#define I2S_RCR5_W0W_MASK                        (0x1F0000U)
-#define I2S_RCR5_W0W_SHIFT                       (16U)
-#define I2S_RCR5_W0W(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCR5_W0W_SHIFT)) & I2S_RCR5_W0W_MASK)
-#define I2S_RCR5_WNW_MASK                        (0x1F000000U)
-#define I2S_RCR5_WNW_SHIFT                       (24U)
-#define I2S_RCR5_WNW(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_RCR5_WNW_SHIFT)) & I2S_RCR5_WNW_MASK)
-
-/*! @name RDR - SAI Receive Data Register */
-#define I2S_RDR_RDR_MASK                         (0xFFFFFFFFU)
-#define I2S_RDR_RDR_SHIFT                        (0U)
-#define I2S_RDR_RDR(x)                           (((uint32_t)(((uint32_t)(x)) << I2S_RDR_RDR_SHIFT)) & I2S_RDR_RDR_MASK)
-
-/* The count of I2S_RDR */
-#define I2S_RDR_COUNT                            (2U)
-
-/*! @name RFR - SAI Receive FIFO Register */
-#define I2S_RFR_RFP_MASK                         (0xFU)
-#define I2S_RFR_RFP_SHIFT                        (0U)
-#define I2S_RFR_RFP(x)                           (((uint32_t)(((uint32_t)(x)) << I2S_RFR_RFP_SHIFT)) & I2S_RFR_RFP_MASK)
-#define I2S_RFR_WFP_MASK                         (0xF0000U)
-#define I2S_RFR_WFP_SHIFT                        (16U)
-#define I2S_RFR_WFP(x)                           (((uint32_t)(((uint32_t)(x)) << I2S_RFR_WFP_SHIFT)) & I2S_RFR_WFP_MASK)
-
-/* The count of I2S_RFR */
-#define I2S_RFR_COUNT                            (2U)
-
-/*! @name RMR - SAI Receive Mask Register */
-#define I2S_RMR_RWM_MASK                         (0xFFFFFFFFU)
-#define I2S_RMR_RWM_SHIFT                        (0U)
-#define I2S_RMR_RWM(x)                           (((uint32_t)(((uint32_t)(x)) << I2S_RMR_RWM_SHIFT)) & I2S_RMR_RWM_MASK)
-
-/*! @name MCR - SAI MCLK Control Register */
-#define I2S_MCR_MICS_MASK                        (0x3000000U)
-#define I2S_MCR_MICS_SHIFT                       (24U)
-#define I2S_MCR_MICS(x)                          (((uint32_t)(((uint32_t)(x)) << I2S_MCR_MICS_SHIFT)) & I2S_MCR_MICS_MASK)
-#define I2S_MCR_MOE_MASK                         (0x40000000U)
-#define I2S_MCR_MOE_SHIFT                        (30U)
-#define I2S_MCR_MOE(x)                           (((uint32_t)(((uint32_t)(x)) << I2S_MCR_MOE_SHIFT)) & I2S_MCR_MOE_MASK)
-#define I2S_MCR_DUF_MASK                         (0x80000000U)
-#define I2S_MCR_DUF_SHIFT                        (31U)
-#define I2S_MCR_DUF(x)                           (((uint32_t)(((uint32_t)(x)) << I2S_MCR_DUF_SHIFT)) & I2S_MCR_DUF_MASK)
-
-/*! @name MDR - SAI MCLK Divide Register */
-#define I2S_MDR_DIVIDE_MASK                      (0xFFFU)
-#define I2S_MDR_DIVIDE_SHIFT                     (0U)
-#define I2S_MDR_DIVIDE(x)                        (((uint32_t)(((uint32_t)(x)) << I2S_MDR_DIVIDE_SHIFT)) & I2S_MDR_DIVIDE_MASK)
-#define I2S_MDR_FRACT_MASK                       (0xFF000U)
-#define I2S_MDR_FRACT_SHIFT                      (12U)
-#define I2S_MDR_FRACT(x)                         (((uint32_t)(((uint32_t)(x)) << I2S_MDR_FRACT_SHIFT)) & I2S_MDR_FRACT_MASK)
-
-
-/*!
- * @}
- */ /* end of group I2S_Register_Masks */
-
-
-/* I2S - Peripheral instance base addresses */
-/** Peripheral I2S0 base address */
-#define I2S0_BASE                                (0x4002F000u)
-/** Peripheral I2S0 base pointer */
-#define I2S0                                     ((I2S_Type *)I2S0_BASE)
-/** Array initializer of I2S peripheral base addresses */
-#define I2S_BASE_ADDRS                           { I2S0_BASE }
-/** Array initializer of I2S peripheral base pointers */
-#define I2S_BASE_PTRS                            { I2S0 }
-/** Interrupt vectors for the I2S peripheral type */
-#define I2S_RX_IRQS                              { I2S0_Rx_IRQn }
-#define I2S_TX_IRQS                              { I2S0_Tx_IRQn }
-
-/*!
- * @}
- */ /* end of group I2S_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- LLWU Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LLWU_Peripheral_Access_Layer LLWU Peripheral Access Layer
- * @{
- */
-
-/** LLWU - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t PE1;                                /**< LLWU Pin Enable 1 register, offset: 0x0 */
-  __IO uint8_t PE2;                                /**< LLWU Pin Enable 2 register, offset: 0x1 */
-  __IO uint8_t PE3;                                /**< LLWU Pin Enable 3 register, offset: 0x2 */
-  __IO uint8_t PE4;                                /**< LLWU Pin Enable 4 register, offset: 0x3 */
-  __IO uint8_t ME;                                 /**< LLWU Module Enable register, offset: 0x4 */
-  __IO uint8_t F1;                                 /**< LLWU Flag 1 register, offset: 0x5 */
-  __IO uint8_t F2;                                 /**< LLWU Flag 2 register, offset: 0x6 */
-  __I  uint8_t F3;                                 /**< LLWU Flag 3 register, offset: 0x7 */
-  __IO uint8_t FILT1;                              /**< LLWU Pin Filter 1 register, offset: 0x8 */
-  __IO uint8_t FILT2;                              /**< LLWU Pin Filter 2 register, offset: 0x9 */
-  __IO uint8_t RST;                                /**< LLWU Reset Enable register, offset: 0xA */
-} LLWU_Type;
-
-/* ----------------------------------------------------------------------------
-   -- LLWU Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LLWU_Register_Masks LLWU Register Masks
- * @{
- */
-
-/*! @name PE1 - LLWU Pin Enable 1 register */
-#define LLWU_PE1_WUPE0_MASK                      (0x3U)
-#define LLWU_PE1_WUPE0_SHIFT                     (0U)
-#define LLWU_PE1_WUPE0(x)                        (((uint8_t)(((uint8_t)(x)) << LLWU_PE1_WUPE0_SHIFT)) & LLWU_PE1_WUPE0_MASK)
-#define LLWU_PE1_WUPE1_MASK                      (0xCU)
-#define LLWU_PE1_WUPE1_SHIFT                     (2U)
-#define LLWU_PE1_WUPE1(x)                        (((uint8_t)(((uint8_t)(x)) << LLWU_PE1_WUPE1_SHIFT)) & LLWU_PE1_WUPE1_MASK)
-#define LLWU_PE1_WUPE2_MASK                      (0x30U)
-#define LLWU_PE1_WUPE2_SHIFT                     (4U)
-#define LLWU_PE1_WUPE2(x)                        (((uint8_t)(((uint8_t)(x)) << LLWU_PE1_WUPE2_SHIFT)) & LLWU_PE1_WUPE2_MASK)
-#define LLWU_PE1_WUPE3_MASK                      (0xC0U)
-#define LLWU_PE1_WUPE3_SHIFT                     (6U)
-#define LLWU_PE1_WUPE3(x)                        (((uint8_t)(((uint8_t)(x)) << LLWU_PE1_WUPE3_SHIFT)) & LLWU_PE1_WUPE3_MASK)
-
-/*! @name PE2 - LLWU Pin Enable 2 register */
-#define LLWU_PE2_WUPE4_MASK                      (0x3U)
-#define LLWU_PE2_WUPE4_SHIFT                     (0U)
-#define LLWU_PE2_WUPE4(x)                        (((uint8_t)(((uint8_t)(x)) << LLWU_PE2_WUPE4_SHIFT)) & LLWU_PE2_WUPE4_MASK)
-#define LLWU_PE2_WUPE5_MASK                      (0xCU)
-#define LLWU_PE2_WUPE5_SHIFT                     (2U)
-#define LLWU_PE2_WUPE5(x)                        (((uint8_t)(((uint8_t)(x)) << LLWU_PE2_WUPE5_SHIFT)) & LLWU_PE2_WUPE5_MASK)
-#define LLWU_PE2_WUPE6_MASK                      (0x30U)
-#define LLWU_PE2_WUPE6_SHIFT                     (4U)
-#define LLWU_PE2_WUPE6(x)                        (((uint8_t)(((uint8_t)(x)) << LLWU_PE2_WUPE6_SHIFT)) & LLWU_PE2_WUPE6_MASK)
-#define LLWU_PE2_WUPE7_MASK                      (0xC0U)
-#define LLWU_PE2_WUPE7_SHIFT                     (6U)
-#define LLWU_PE2_WUPE7(x)                        (((uint8_t)(((uint8_t)(x)) << LLWU_PE2_WUPE7_SHIFT)) & LLWU_PE2_WUPE7_MASK)
-
-/*! @name PE3 - LLWU Pin Enable 3 register */
-#define LLWU_PE3_WUPE8_MASK                      (0x3U)
-#define LLWU_PE3_WUPE8_SHIFT                     (0U)
-#define LLWU_PE3_WUPE8(x)                        (((uint8_t)(((uint8_t)(x)) << LLWU_PE3_WUPE8_SHIFT)) & LLWU_PE3_WUPE8_MASK)
-#define LLWU_PE3_WUPE9_MASK                      (0xCU)
-#define LLWU_PE3_WUPE9_SHIFT                     (2U)
-#define LLWU_PE3_WUPE9(x)                        (((uint8_t)(((uint8_t)(x)) << LLWU_PE3_WUPE9_SHIFT)) & LLWU_PE3_WUPE9_MASK)
-#define LLWU_PE3_WUPE10_MASK                     (0x30U)
-#define LLWU_PE3_WUPE10_SHIFT                    (4U)
-#define LLWU_PE3_WUPE10(x)                       (((uint8_t)(((uint8_t)(x)) << LLWU_PE3_WUPE10_SHIFT)) & LLWU_PE3_WUPE10_MASK)
-#define LLWU_PE3_WUPE11_MASK                     (0xC0U)
-#define LLWU_PE3_WUPE11_SHIFT                    (6U)
-#define LLWU_PE3_WUPE11(x)                       (((uint8_t)(((uint8_t)(x)) << LLWU_PE3_WUPE11_SHIFT)) & LLWU_PE3_WUPE11_MASK)
-
-/*! @name PE4 - LLWU Pin Enable 4 register */
-#define LLWU_PE4_WUPE12_MASK                     (0x3U)
-#define LLWU_PE4_WUPE12_SHIFT                    (0U)
-#define LLWU_PE4_WUPE12(x)                       (((uint8_t)(((uint8_t)(x)) << LLWU_PE4_WUPE12_SHIFT)) & LLWU_PE4_WUPE12_MASK)
-#define LLWU_PE4_WUPE13_MASK                     (0xCU)
-#define LLWU_PE4_WUPE13_SHIFT                    (2U)
-#define LLWU_PE4_WUPE13(x)                       (((uint8_t)(((uint8_t)(x)) << LLWU_PE4_WUPE13_SHIFT)) & LLWU_PE4_WUPE13_MASK)
-#define LLWU_PE4_WUPE14_MASK                     (0x30U)
-#define LLWU_PE4_WUPE14_SHIFT                    (4U)
-#define LLWU_PE4_WUPE14(x)                       (((uint8_t)(((uint8_t)(x)) << LLWU_PE4_WUPE14_SHIFT)) & LLWU_PE4_WUPE14_MASK)
-#define LLWU_PE4_WUPE15_MASK                     (0xC0U)
-#define LLWU_PE4_WUPE15_SHIFT                    (6U)
-#define LLWU_PE4_WUPE15(x)                       (((uint8_t)(((uint8_t)(x)) << LLWU_PE4_WUPE15_SHIFT)) & LLWU_PE4_WUPE15_MASK)
-
-/*! @name ME - LLWU Module Enable register */
-#define LLWU_ME_WUME0_MASK                       (0x1U)
-#define LLWU_ME_WUME0_SHIFT                      (0U)
-#define LLWU_ME_WUME0(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_ME_WUME0_SHIFT)) & LLWU_ME_WUME0_MASK)
-#define LLWU_ME_WUME1_MASK                       (0x2U)
-#define LLWU_ME_WUME1_SHIFT                      (1U)
-#define LLWU_ME_WUME1(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_ME_WUME1_SHIFT)) & LLWU_ME_WUME1_MASK)
-#define LLWU_ME_WUME2_MASK                       (0x4U)
-#define LLWU_ME_WUME2_SHIFT                      (2U)
-#define LLWU_ME_WUME2(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_ME_WUME2_SHIFT)) & LLWU_ME_WUME2_MASK)
-#define LLWU_ME_WUME3_MASK                       (0x8U)
-#define LLWU_ME_WUME3_SHIFT                      (3U)
-#define LLWU_ME_WUME3(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_ME_WUME3_SHIFT)) & LLWU_ME_WUME3_MASK)
-#define LLWU_ME_WUME4_MASK                       (0x10U)
-#define LLWU_ME_WUME4_SHIFT                      (4U)
-#define LLWU_ME_WUME4(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_ME_WUME4_SHIFT)) & LLWU_ME_WUME4_MASK)
-#define LLWU_ME_WUME5_MASK                       (0x20U)
-#define LLWU_ME_WUME5_SHIFT                      (5U)
-#define LLWU_ME_WUME5(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_ME_WUME5_SHIFT)) & LLWU_ME_WUME5_MASK)
-#define LLWU_ME_WUME6_MASK                       (0x40U)
-#define LLWU_ME_WUME6_SHIFT                      (6U)
-#define LLWU_ME_WUME6(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_ME_WUME6_SHIFT)) & LLWU_ME_WUME6_MASK)
-#define LLWU_ME_WUME7_MASK                       (0x80U)
-#define LLWU_ME_WUME7_SHIFT                      (7U)
-#define LLWU_ME_WUME7(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_ME_WUME7_SHIFT)) & LLWU_ME_WUME7_MASK)
-
-/*! @name F1 - LLWU Flag 1 register */
-#define LLWU_F1_WUF0_MASK                        (0x1U)
-#define LLWU_F1_WUF0_SHIFT                       (0U)
-#define LLWU_F1_WUF0(x)                          (((uint8_t)(((uint8_t)(x)) << LLWU_F1_WUF0_SHIFT)) & LLWU_F1_WUF0_MASK)
-#define LLWU_F1_WUF1_MASK                        (0x2U)
-#define LLWU_F1_WUF1_SHIFT                       (1U)
-#define LLWU_F1_WUF1(x)                          (((uint8_t)(((uint8_t)(x)) << LLWU_F1_WUF1_SHIFT)) & LLWU_F1_WUF1_MASK)
-#define LLWU_F1_WUF2_MASK                        (0x4U)
-#define LLWU_F1_WUF2_SHIFT                       (2U)
-#define LLWU_F1_WUF2(x)                          (((uint8_t)(((uint8_t)(x)) << LLWU_F1_WUF2_SHIFT)) & LLWU_F1_WUF2_MASK)
-#define LLWU_F1_WUF3_MASK                        (0x8U)
-#define LLWU_F1_WUF3_SHIFT                       (3U)
-#define LLWU_F1_WUF3(x)                          (((uint8_t)(((uint8_t)(x)) << LLWU_F1_WUF3_SHIFT)) & LLWU_F1_WUF3_MASK)
-#define LLWU_F1_WUF4_MASK                        (0x10U)
-#define LLWU_F1_WUF4_SHIFT                       (4U)
-#define LLWU_F1_WUF4(x)                          (((uint8_t)(((uint8_t)(x)) << LLWU_F1_WUF4_SHIFT)) & LLWU_F1_WUF4_MASK)
-#define LLWU_F1_WUF5_MASK                        (0x20U)
-#define LLWU_F1_WUF5_SHIFT                       (5U)
-#define LLWU_F1_WUF5(x)                          (((uint8_t)(((uint8_t)(x)) << LLWU_F1_WUF5_SHIFT)) & LLWU_F1_WUF5_MASK)
-#define LLWU_F1_WUF6_MASK                        (0x40U)
-#define LLWU_F1_WUF6_SHIFT                       (6U)
-#define LLWU_F1_WUF6(x)                          (((uint8_t)(((uint8_t)(x)) << LLWU_F1_WUF6_SHIFT)) & LLWU_F1_WUF6_MASK)
-#define LLWU_F1_WUF7_MASK                        (0x80U)
-#define LLWU_F1_WUF7_SHIFT                       (7U)
-#define LLWU_F1_WUF7(x)                          (((uint8_t)(((uint8_t)(x)) << LLWU_F1_WUF7_SHIFT)) & LLWU_F1_WUF7_MASK)
-
-/*! @name F2 - LLWU Flag 2 register */
-#define LLWU_F2_WUF8_MASK                        (0x1U)
-#define LLWU_F2_WUF8_SHIFT                       (0U)
-#define LLWU_F2_WUF8(x)                          (((uint8_t)(((uint8_t)(x)) << LLWU_F2_WUF8_SHIFT)) & LLWU_F2_WUF8_MASK)
-#define LLWU_F2_WUF9_MASK                        (0x2U)
-#define LLWU_F2_WUF9_SHIFT                       (1U)
-#define LLWU_F2_WUF9(x)                          (((uint8_t)(((uint8_t)(x)) << LLWU_F2_WUF9_SHIFT)) & LLWU_F2_WUF9_MASK)
-#define LLWU_F2_WUF10_MASK                       (0x4U)
-#define LLWU_F2_WUF10_SHIFT                      (2U)
-#define LLWU_F2_WUF10(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_F2_WUF10_SHIFT)) & LLWU_F2_WUF10_MASK)
-#define LLWU_F2_WUF11_MASK                       (0x8U)
-#define LLWU_F2_WUF11_SHIFT                      (3U)
-#define LLWU_F2_WUF11(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_F2_WUF11_SHIFT)) & LLWU_F2_WUF11_MASK)
-#define LLWU_F2_WUF12_MASK                       (0x10U)
-#define LLWU_F2_WUF12_SHIFT                      (4U)
-#define LLWU_F2_WUF12(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_F2_WUF12_SHIFT)) & LLWU_F2_WUF12_MASK)
-#define LLWU_F2_WUF13_MASK                       (0x20U)
-#define LLWU_F2_WUF13_SHIFT                      (5U)
-#define LLWU_F2_WUF13(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_F2_WUF13_SHIFT)) & LLWU_F2_WUF13_MASK)
-#define LLWU_F2_WUF14_MASK                       (0x40U)
-#define LLWU_F2_WUF14_SHIFT                      (6U)
-#define LLWU_F2_WUF14(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_F2_WUF14_SHIFT)) & LLWU_F2_WUF14_MASK)
-#define LLWU_F2_WUF15_MASK                       (0x80U)
-#define LLWU_F2_WUF15_SHIFT                      (7U)
-#define LLWU_F2_WUF15(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_F2_WUF15_SHIFT)) & LLWU_F2_WUF15_MASK)
-
-/*! @name F3 - LLWU Flag 3 register */
-#define LLWU_F3_MWUF0_MASK                       (0x1U)
-#define LLWU_F3_MWUF0_SHIFT                      (0U)
-#define LLWU_F3_MWUF0(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_F3_MWUF0_SHIFT)) & LLWU_F3_MWUF0_MASK)
-#define LLWU_F3_MWUF1_MASK                       (0x2U)
-#define LLWU_F3_MWUF1_SHIFT                      (1U)
-#define LLWU_F3_MWUF1(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_F3_MWUF1_SHIFT)) & LLWU_F3_MWUF1_MASK)
-#define LLWU_F3_MWUF2_MASK                       (0x4U)
-#define LLWU_F3_MWUF2_SHIFT                      (2U)
-#define LLWU_F3_MWUF2(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_F3_MWUF2_SHIFT)) & LLWU_F3_MWUF2_MASK)
-#define LLWU_F3_MWUF3_MASK                       (0x8U)
-#define LLWU_F3_MWUF3_SHIFT                      (3U)
-#define LLWU_F3_MWUF3(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_F3_MWUF3_SHIFT)) & LLWU_F3_MWUF3_MASK)
-#define LLWU_F3_MWUF4_MASK                       (0x10U)
-#define LLWU_F3_MWUF4_SHIFT                      (4U)
-#define LLWU_F3_MWUF4(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_F3_MWUF4_SHIFT)) & LLWU_F3_MWUF4_MASK)
-#define LLWU_F3_MWUF5_MASK                       (0x20U)
-#define LLWU_F3_MWUF5_SHIFT                      (5U)
-#define LLWU_F3_MWUF5(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_F3_MWUF5_SHIFT)) & LLWU_F3_MWUF5_MASK)
-#define LLWU_F3_MWUF6_MASK                       (0x40U)
-#define LLWU_F3_MWUF6_SHIFT                      (6U)
-#define LLWU_F3_MWUF6(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_F3_MWUF6_SHIFT)) & LLWU_F3_MWUF6_MASK)
-#define LLWU_F3_MWUF7_MASK                       (0x80U)
-#define LLWU_F3_MWUF7_SHIFT                      (7U)
-#define LLWU_F3_MWUF7(x)                         (((uint8_t)(((uint8_t)(x)) << LLWU_F3_MWUF7_SHIFT)) & LLWU_F3_MWUF7_MASK)
-
-/*! @name FILT1 - LLWU Pin Filter 1 register */
-#define LLWU_FILT1_FILTSEL_MASK                  (0xFU)
-#define LLWU_FILT1_FILTSEL_SHIFT                 (0U)
-#define LLWU_FILT1_FILTSEL(x)                    (((uint8_t)(((uint8_t)(x)) << LLWU_FILT1_FILTSEL_SHIFT)) & LLWU_FILT1_FILTSEL_MASK)
-#define LLWU_FILT1_FILTE_MASK                    (0x60U)
-#define LLWU_FILT1_FILTE_SHIFT                   (5U)
-#define LLWU_FILT1_FILTE(x)                      (((uint8_t)(((uint8_t)(x)) << LLWU_FILT1_FILTE_SHIFT)) & LLWU_FILT1_FILTE_MASK)
-#define LLWU_FILT1_FILTF_MASK                    (0x80U)
-#define LLWU_FILT1_FILTF_SHIFT                   (7U)
-#define LLWU_FILT1_FILTF(x)                      (((uint8_t)(((uint8_t)(x)) << LLWU_FILT1_FILTF_SHIFT)) & LLWU_FILT1_FILTF_MASK)
-
-/*! @name FILT2 - LLWU Pin Filter 2 register */
-#define LLWU_FILT2_FILTSEL_MASK                  (0xFU)
-#define LLWU_FILT2_FILTSEL_SHIFT                 (0U)
-#define LLWU_FILT2_FILTSEL(x)                    (((uint8_t)(((uint8_t)(x)) << LLWU_FILT2_FILTSEL_SHIFT)) & LLWU_FILT2_FILTSEL_MASK)
-#define LLWU_FILT2_FILTE_MASK                    (0x60U)
-#define LLWU_FILT2_FILTE_SHIFT                   (5U)
-#define LLWU_FILT2_FILTE(x)                      (((uint8_t)(((uint8_t)(x)) << LLWU_FILT2_FILTE_SHIFT)) & LLWU_FILT2_FILTE_MASK)
-#define LLWU_FILT2_FILTF_MASK                    (0x80U)
-#define LLWU_FILT2_FILTF_SHIFT                   (7U)
-#define LLWU_FILT2_FILTF(x)                      (((uint8_t)(((uint8_t)(x)) << LLWU_FILT2_FILTF_SHIFT)) & LLWU_FILT2_FILTF_MASK)
-
-/*! @name RST - LLWU Reset Enable register */
-#define LLWU_RST_RSTFILT_MASK                    (0x1U)
-#define LLWU_RST_RSTFILT_SHIFT                   (0U)
-#define LLWU_RST_RSTFILT(x)                      (((uint8_t)(((uint8_t)(x)) << LLWU_RST_RSTFILT_SHIFT)) & LLWU_RST_RSTFILT_MASK)
-#define LLWU_RST_LLRSTE_MASK                     (0x2U)
-#define LLWU_RST_LLRSTE_SHIFT                    (1U)
-#define LLWU_RST_LLRSTE(x)                       (((uint8_t)(((uint8_t)(x)) << LLWU_RST_LLRSTE_SHIFT)) & LLWU_RST_LLRSTE_MASK)
-
-
-/*!
- * @}
- */ /* end of group LLWU_Register_Masks */
-
-
-/* LLWU - Peripheral instance base addresses */
-/** Peripheral LLWU base address */
-#define LLWU_BASE                                (0x4007C000u)
-/** Peripheral LLWU base pointer */
-#define LLWU                                     ((LLWU_Type *)LLWU_BASE)
-/** Array initializer of LLWU peripheral base addresses */
-#define LLWU_BASE_ADDRS                          { LLWU_BASE }
-/** Array initializer of LLWU peripheral base pointers */
-#define LLWU_BASE_PTRS                           { LLWU }
-/** Interrupt vectors for the LLWU peripheral type */
-#define LLWU_IRQS                                { LLWU_IRQn }
-
-/*!
- * @}
- */ /* end of group LLWU_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- LPTMR Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LPTMR_Peripheral_Access_Layer LPTMR Peripheral Access Layer
- * @{
- */
-
-/** LPTMR - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t CSR;                               /**< Low Power Timer Control Status Register, offset: 0x0 */
-  __IO uint32_t PSR;                               /**< Low Power Timer Prescale Register, offset: 0x4 */
-  __IO uint32_t CMR;                               /**< Low Power Timer Compare Register, offset: 0x8 */
-  __IO uint32_t CNR;                               /**< Low Power Timer Counter Register, offset: 0xC */
-} LPTMR_Type;
-
-/* ----------------------------------------------------------------------------
-   -- LPTMR Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LPTMR_Register_Masks LPTMR Register Masks
- * @{
- */
-
-/*! @name CSR - Low Power Timer Control Status Register */
-#define LPTMR_CSR_TEN_MASK                       (0x1U)
-#define LPTMR_CSR_TEN_SHIFT                      (0U)
-#define LPTMR_CSR_TEN(x)                         (((uint32_t)(((uint32_t)(x)) << LPTMR_CSR_TEN_SHIFT)) & LPTMR_CSR_TEN_MASK)
-#define LPTMR_CSR_TMS_MASK                       (0x2U)
-#define LPTMR_CSR_TMS_SHIFT                      (1U)
-#define LPTMR_CSR_TMS(x)                         (((uint32_t)(((uint32_t)(x)) << LPTMR_CSR_TMS_SHIFT)) & LPTMR_CSR_TMS_MASK)
-#define LPTMR_CSR_TFC_MASK                       (0x4U)
-#define LPTMR_CSR_TFC_SHIFT                      (2U)
-#define LPTMR_CSR_TFC(x)                         (((uint32_t)(((uint32_t)(x)) << LPTMR_CSR_TFC_SHIFT)) & LPTMR_CSR_TFC_MASK)
-#define LPTMR_CSR_TPP_MASK                       (0x8U)
-#define LPTMR_CSR_TPP_SHIFT                      (3U)
-#define LPTMR_CSR_TPP(x)                         (((uint32_t)(((uint32_t)(x)) << LPTMR_CSR_TPP_SHIFT)) & LPTMR_CSR_TPP_MASK)
-#define LPTMR_CSR_TPS_MASK                       (0x30U)
-#define LPTMR_CSR_TPS_SHIFT                      (4U)
-#define LPTMR_CSR_TPS(x)                         (((uint32_t)(((uint32_t)(x)) << LPTMR_CSR_TPS_SHIFT)) & LPTMR_CSR_TPS_MASK)
-#define LPTMR_CSR_TIE_MASK                       (0x40U)
-#define LPTMR_CSR_TIE_SHIFT                      (6U)
-#define LPTMR_CSR_TIE(x)                         (((uint32_t)(((uint32_t)(x)) << LPTMR_CSR_TIE_SHIFT)) & LPTMR_CSR_TIE_MASK)
-#define LPTMR_CSR_TCF_MASK                       (0x80U)
-#define LPTMR_CSR_TCF_SHIFT                      (7U)
-#define LPTMR_CSR_TCF(x)                         (((uint32_t)(((uint32_t)(x)) << LPTMR_CSR_TCF_SHIFT)) & LPTMR_CSR_TCF_MASK)
-
-/*! @name PSR - Low Power Timer Prescale Register */
-#define LPTMR_PSR_PCS_MASK                       (0x3U)
-#define LPTMR_PSR_PCS_SHIFT                      (0U)
-#define LPTMR_PSR_PCS(x)                         (((uint32_t)(((uint32_t)(x)) << LPTMR_PSR_PCS_SHIFT)) & LPTMR_PSR_PCS_MASK)
-#define LPTMR_PSR_PBYP_MASK                      (0x4U)
-#define LPTMR_PSR_PBYP_SHIFT                     (2U)
-#define LPTMR_PSR_PBYP(x)                        (((uint32_t)(((uint32_t)(x)) << LPTMR_PSR_PBYP_SHIFT)) & LPTMR_PSR_PBYP_MASK)
-#define LPTMR_PSR_PRESCALE_MASK                  (0x78U)
-#define LPTMR_PSR_PRESCALE_SHIFT                 (3U)
-#define LPTMR_PSR_PRESCALE(x)                    (((uint32_t)(((uint32_t)(x)) << LPTMR_PSR_PRESCALE_SHIFT)) & LPTMR_PSR_PRESCALE_MASK)
-
-/*! @name CMR - Low Power Timer Compare Register */
-#define LPTMR_CMR_COMPARE_MASK                   (0xFFFFU)
-#define LPTMR_CMR_COMPARE_SHIFT                  (0U)
-#define LPTMR_CMR_COMPARE(x)                     (((uint32_t)(((uint32_t)(x)) << LPTMR_CMR_COMPARE_SHIFT)) & LPTMR_CMR_COMPARE_MASK)
-
-/*! @name CNR - Low Power Timer Counter Register */
-#define LPTMR_CNR_COUNTER_MASK                   (0xFFFFU)
-#define LPTMR_CNR_COUNTER_SHIFT                  (0U)
-#define LPTMR_CNR_COUNTER(x)                     (((uint32_t)(((uint32_t)(x)) << LPTMR_CNR_COUNTER_SHIFT)) & LPTMR_CNR_COUNTER_MASK)
-
-
-/*!
- * @}
- */ /* end of group LPTMR_Register_Masks */
-
-
-/* LPTMR - Peripheral instance base addresses */
-/** Peripheral LPTMR0 base address */
-#define LPTMR0_BASE                              (0x40040000u)
-/** Peripheral LPTMR0 base pointer */
-#define LPTMR0                                   ((LPTMR_Type *)LPTMR0_BASE)
-/** Array initializer of LPTMR peripheral base addresses */
-#define LPTMR_BASE_ADDRS                         { LPTMR0_BASE }
-/** Array initializer of LPTMR peripheral base pointers */
-#define LPTMR_BASE_PTRS                          { LPTMR0 }
-/** Interrupt vectors for the LPTMR peripheral type */
-#define LPTMR_IRQS                               { LPTMR0_IRQn }
-
-/*!
- * @}
- */ /* end of group LPTMR_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- MCG Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MCG_Peripheral_Access_Layer MCG Peripheral Access Layer
- * @{
- */
-
-/** MCG - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t C1;                                 /**< MCG Control 1 Register, offset: 0x0 */
-  __IO uint8_t C2;                                 /**< MCG Control 2 Register, offset: 0x1 */
-  __IO uint8_t C3;                                 /**< MCG Control 3 Register, offset: 0x2 */
-  __IO uint8_t C4;                                 /**< MCG Control 4 Register, offset: 0x3 */
-  __IO uint8_t C5;                                 /**< MCG Control 5 Register, offset: 0x4 */
-  __IO uint8_t C6;                                 /**< MCG Control 6 Register, offset: 0x5 */
-  __IO uint8_t S;                                  /**< MCG Status Register, offset: 0x6 */
-       uint8_t RESERVED_0[1];
-  __IO uint8_t SC;                                 /**< MCG Status and Control Register, offset: 0x8 */
-       uint8_t RESERVED_1[1];
-  __IO uint8_t ATCVH;                              /**< MCG Auto Trim Compare Value High Register, offset: 0xA */
-  __IO uint8_t ATCVL;                              /**< MCG Auto Trim Compare Value Low Register, offset: 0xB */
-  __IO uint8_t C7;                                 /**< MCG Control 7 Register, offset: 0xC */
-  __IO uint8_t C8;                                 /**< MCG Control 8 Register, offset: 0xD */
-} MCG_Type;
-
-/* ----------------------------------------------------------------------------
-   -- MCG Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MCG_Register_Masks MCG Register Masks
- * @{
- */
-
-/*! @name C1 - MCG Control 1 Register */
-#define MCG_C1_IREFSTEN_MASK                     (0x1U)
-#define MCG_C1_IREFSTEN_SHIFT                    (0U)
-#define MCG_C1_IREFSTEN(x)                       (((uint8_t)(((uint8_t)(x)) << MCG_C1_IREFSTEN_SHIFT)) & MCG_C1_IREFSTEN_MASK)
-#define MCG_C1_IRCLKEN_MASK                      (0x2U)
-#define MCG_C1_IRCLKEN_SHIFT                     (1U)
-#define MCG_C1_IRCLKEN(x)                        (((uint8_t)(((uint8_t)(x)) << MCG_C1_IRCLKEN_SHIFT)) & MCG_C1_IRCLKEN_MASK)
-#define MCG_C1_IREFS_MASK                        (0x4U)
-#define MCG_C1_IREFS_SHIFT                       (2U)
-#define MCG_C1_IREFS(x)                          (((uint8_t)(((uint8_t)(x)) << MCG_C1_IREFS_SHIFT)) & MCG_C1_IREFS_MASK)
-#define MCG_C1_FRDIV_MASK                        (0x38U)
-#define MCG_C1_FRDIV_SHIFT                       (3U)
-#define MCG_C1_FRDIV(x)                          (((uint8_t)(((uint8_t)(x)) << MCG_C1_FRDIV_SHIFT)) & MCG_C1_FRDIV_MASK)
-#define MCG_C1_CLKS_MASK                         (0xC0U)
-#define MCG_C1_CLKS_SHIFT                        (6U)
-#define MCG_C1_CLKS(x)                           (((uint8_t)(((uint8_t)(x)) << MCG_C1_CLKS_SHIFT)) & MCG_C1_CLKS_MASK)
-
-/*! @name C2 - MCG Control 2 Register */
-#define MCG_C2_IRCS_MASK                         (0x1U)
-#define MCG_C2_IRCS_SHIFT                        (0U)
-#define MCG_C2_IRCS(x)                           (((uint8_t)(((uint8_t)(x)) << MCG_C2_IRCS_SHIFT)) & MCG_C2_IRCS_MASK)
-#define MCG_C2_LP_MASK                           (0x2U)
-#define MCG_C2_LP_SHIFT                          (1U)
-#define MCG_C2_LP(x)                             (((uint8_t)(((uint8_t)(x)) << MCG_C2_LP_SHIFT)) & MCG_C2_LP_MASK)
-#define MCG_C2_EREFS_MASK                        (0x4U)
-#define MCG_C2_EREFS_SHIFT                       (2U)
-#define MCG_C2_EREFS(x)                          (((uint8_t)(((uint8_t)(x)) << MCG_C2_EREFS_SHIFT)) & MCG_C2_EREFS_MASK)
-#define MCG_C2_HGO_MASK                          (0x8U)
-#define MCG_C2_HGO_SHIFT                         (3U)
-#define MCG_C2_HGO(x)                            (((uint8_t)(((uint8_t)(x)) << MCG_C2_HGO_SHIFT)) & MCG_C2_HGO_MASK)
-#define MCG_C2_RANGE_MASK                        (0x30U)
-#define MCG_C2_RANGE_SHIFT                       (4U)
-#define MCG_C2_RANGE(x)                          (((uint8_t)(((uint8_t)(x)) << MCG_C2_RANGE_SHIFT)) & MCG_C2_RANGE_MASK)
-#define MCG_C2_FCFTRIM_MASK                      (0x40U)
-#define MCG_C2_FCFTRIM_SHIFT                     (6U)
-#define MCG_C2_FCFTRIM(x)                        (((uint8_t)(((uint8_t)(x)) << MCG_C2_FCFTRIM_SHIFT)) & MCG_C2_FCFTRIM_MASK)
-#define MCG_C2_LOCRE0_MASK                       (0x80U)
-#define MCG_C2_LOCRE0_SHIFT                      (7U)
-#define MCG_C2_LOCRE0(x)                         (((uint8_t)(((uint8_t)(x)) << MCG_C2_LOCRE0_SHIFT)) & MCG_C2_LOCRE0_MASK)
-
-/*! @name C3 - MCG Control 3 Register */
-#define MCG_C3_SCTRIM_MASK                       (0xFFU)
-#define MCG_C3_SCTRIM_SHIFT                      (0U)
-#define MCG_C3_SCTRIM(x)                         (((uint8_t)(((uint8_t)(x)) << MCG_C3_SCTRIM_SHIFT)) & MCG_C3_SCTRIM_MASK)
-
-/*! @name C4 - MCG Control 4 Register */
-#define MCG_C4_SCFTRIM_MASK                      (0x1U)
-#define MCG_C4_SCFTRIM_SHIFT                     (0U)
-#define MCG_C4_SCFTRIM(x)                        (((uint8_t)(((uint8_t)(x)) << MCG_C4_SCFTRIM_SHIFT)) & MCG_C4_SCFTRIM_MASK)
-#define MCG_C4_FCTRIM_MASK                       (0x1EU)
-#define MCG_C4_FCTRIM_SHIFT                      (1U)
-#define MCG_C4_FCTRIM(x)                         (((uint8_t)(((uint8_t)(x)) << MCG_C4_FCTRIM_SHIFT)) & MCG_C4_FCTRIM_MASK)
-#define MCG_C4_DRST_DRS_MASK                     (0x60U)
-#define MCG_C4_DRST_DRS_SHIFT                    (5U)
-#define MCG_C4_DRST_DRS(x)                       (((uint8_t)(((uint8_t)(x)) << MCG_C4_DRST_DRS_SHIFT)) & MCG_C4_DRST_DRS_MASK)
-#define MCG_C4_DMX32_MASK                        (0x80U)
-#define MCG_C4_DMX32_SHIFT                       (7U)
-#define MCG_C4_DMX32(x)                          (((uint8_t)(((uint8_t)(x)) << MCG_C4_DMX32_SHIFT)) & MCG_C4_DMX32_MASK)
-
-/*! @name C5 - MCG Control 5 Register */
-#define MCG_C5_PRDIV0_MASK                       (0x1FU)
-#define MCG_C5_PRDIV0_SHIFT                      (0U)
-#define MCG_C5_PRDIV0(x)                         (((uint8_t)(((uint8_t)(x)) << MCG_C5_PRDIV0_SHIFT)) & MCG_C5_PRDIV0_MASK)
-#define MCG_C5_PLLSTEN0_MASK                     (0x20U)
-#define MCG_C5_PLLSTEN0_SHIFT                    (5U)
-#define MCG_C5_PLLSTEN0(x)                       (((uint8_t)(((uint8_t)(x)) << MCG_C5_PLLSTEN0_SHIFT)) & MCG_C5_PLLSTEN0_MASK)
-#define MCG_C5_PLLCLKEN0_MASK                    (0x40U)
-#define MCG_C5_PLLCLKEN0_SHIFT                   (6U)
-#define MCG_C5_PLLCLKEN0(x)                      (((uint8_t)(((uint8_t)(x)) << MCG_C5_PLLCLKEN0_SHIFT)) & MCG_C5_PLLCLKEN0_MASK)
-
-/*! @name C6 - MCG Control 6 Register */
-#define MCG_C6_VDIV0_MASK                        (0x1FU)
-#define MCG_C6_VDIV0_SHIFT                       (0U)
-#define MCG_C6_VDIV0(x)                          (((uint8_t)(((uint8_t)(x)) << MCG_C6_VDIV0_SHIFT)) & MCG_C6_VDIV0_MASK)
-#define MCG_C6_CME0_MASK                         (0x20U)
-#define MCG_C6_CME0_SHIFT                        (5U)
-#define MCG_C6_CME0(x)                           (((uint8_t)(((uint8_t)(x)) << MCG_C6_CME0_SHIFT)) & MCG_C6_CME0_MASK)
-#define MCG_C6_PLLS_MASK                         (0x40U)
-#define MCG_C6_PLLS_SHIFT                        (6U)
-#define MCG_C6_PLLS(x)                           (((uint8_t)(((uint8_t)(x)) << MCG_C6_PLLS_SHIFT)) & MCG_C6_PLLS_MASK)
-#define MCG_C6_LOLIE0_MASK                       (0x80U)
-#define MCG_C6_LOLIE0_SHIFT                      (7U)
-#define MCG_C6_LOLIE0(x)                         (((uint8_t)(((uint8_t)(x)) << MCG_C6_LOLIE0_SHIFT)) & MCG_C6_LOLIE0_MASK)
-
-/*! @name S - MCG Status Register */
-#define MCG_S_IRCST_MASK                         (0x1U)
-#define MCG_S_IRCST_SHIFT                        (0U)
-#define MCG_S_IRCST(x)                           (((uint8_t)(((uint8_t)(x)) << MCG_S_IRCST_SHIFT)) & MCG_S_IRCST_MASK)
-#define MCG_S_OSCINIT0_MASK                      (0x2U)
-#define MCG_S_OSCINIT0_SHIFT                     (1U)
-#define MCG_S_OSCINIT0(x)                        (((uint8_t)(((uint8_t)(x)) << MCG_S_OSCINIT0_SHIFT)) & MCG_S_OSCINIT0_MASK)
-#define MCG_S_CLKST_MASK                         (0xCU)
-#define MCG_S_CLKST_SHIFT                        (2U)
-#define MCG_S_CLKST(x)                           (((uint8_t)(((uint8_t)(x)) << MCG_S_CLKST_SHIFT)) & MCG_S_CLKST_MASK)
-#define MCG_S_IREFST_MASK                        (0x10U)
-#define MCG_S_IREFST_SHIFT                       (4U)
-#define MCG_S_IREFST(x)                          (((uint8_t)(((uint8_t)(x)) << MCG_S_IREFST_SHIFT)) & MCG_S_IREFST_MASK)
-#define MCG_S_PLLST_MASK                         (0x20U)
-#define MCG_S_PLLST_SHIFT                        (5U)
-#define MCG_S_PLLST(x)                           (((uint8_t)(((uint8_t)(x)) << MCG_S_PLLST_SHIFT)) & MCG_S_PLLST_MASK)
-#define MCG_S_LOCK0_MASK                         (0x40U)
-#define MCG_S_LOCK0_SHIFT                        (6U)
-#define MCG_S_LOCK0(x)                           (((uint8_t)(((uint8_t)(x)) << MCG_S_LOCK0_SHIFT)) & MCG_S_LOCK0_MASK)
-#define MCG_S_LOLS0_MASK                         (0x80U)
-#define MCG_S_LOLS0_SHIFT                        (7U)
-#define MCG_S_LOLS0(x)                           (((uint8_t)(((uint8_t)(x)) << MCG_S_LOLS0_SHIFT)) & MCG_S_LOLS0_MASK)
-
-/*! @name SC - MCG Status and Control Register */
-#define MCG_SC_LOCS0_MASK                        (0x1U)
-#define MCG_SC_LOCS0_SHIFT                       (0U)
-#define MCG_SC_LOCS0(x)                          (((uint8_t)(((uint8_t)(x)) << MCG_SC_LOCS0_SHIFT)) & MCG_SC_LOCS0_MASK)
-#define MCG_SC_FCRDIV_MASK                       (0xEU)
-#define MCG_SC_FCRDIV_SHIFT                      (1U)
-#define MCG_SC_FCRDIV(x)                         (((uint8_t)(((uint8_t)(x)) << MCG_SC_FCRDIV_SHIFT)) & MCG_SC_FCRDIV_MASK)
-#define MCG_SC_FLTPRSRV_MASK                     (0x10U)
-#define MCG_SC_FLTPRSRV_SHIFT                    (4U)
-#define MCG_SC_FLTPRSRV(x)                       (((uint8_t)(((uint8_t)(x)) << MCG_SC_FLTPRSRV_SHIFT)) & MCG_SC_FLTPRSRV_MASK)
-#define MCG_SC_ATMF_MASK                         (0x20U)
-#define MCG_SC_ATMF_SHIFT                        (5U)
-#define MCG_SC_ATMF(x)                           (((uint8_t)(((uint8_t)(x)) << MCG_SC_ATMF_SHIFT)) & MCG_SC_ATMF_MASK)
-#define MCG_SC_ATMS_MASK                         (0x40U)
-#define MCG_SC_ATMS_SHIFT                        (6U)
-#define MCG_SC_ATMS(x)                           (((uint8_t)(((uint8_t)(x)) << MCG_SC_ATMS_SHIFT)) & MCG_SC_ATMS_MASK)
-#define MCG_SC_ATME_MASK                         (0x80U)
-#define MCG_SC_ATME_SHIFT                        (7U)
-#define MCG_SC_ATME(x)                           (((uint8_t)(((uint8_t)(x)) << MCG_SC_ATME_SHIFT)) & MCG_SC_ATME_MASK)
-
-/*! @name ATCVH - MCG Auto Trim Compare Value High Register */
-#define MCG_ATCVH_ATCVH_MASK                     (0xFFU)
-#define MCG_ATCVH_ATCVH_SHIFT                    (0U)
-#define MCG_ATCVH_ATCVH(x)                       (((uint8_t)(((uint8_t)(x)) << MCG_ATCVH_ATCVH_SHIFT)) & MCG_ATCVH_ATCVH_MASK)
-
-/*! @name ATCVL - MCG Auto Trim Compare Value Low Register */
-#define MCG_ATCVL_ATCVL_MASK                     (0xFFU)
-#define MCG_ATCVL_ATCVL_SHIFT                    (0U)
-#define MCG_ATCVL_ATCVL(x)                       (((uint8_t)(((uint8_t)(x)) << MCG_ATCVL_ATCVL_SHIFT)) & MCG_ATCVL_ATCVL_MASK)
-
-/*! @name C7 - MCG Control 7 Register */
-#define MCG_C7_OSCSEL_MASK                       (0x3U)
-#define MCG_C7_OSCSEL_SHIFT                      (0U)
-#define MCG_C7_OSCSEL(x)                         (((uint8_t)(((uint8_t)(x)) << MCG_C7_OSCSEL_SHIFT)) & MCG_C7_OSCSEL_MASK)
-
-/*! @name C8 - MCG Control 8 Register */
-#define MCG_C8_LOCS1_MASK                        (0x1U)
-#define MCG_C8_LOCS1_SHIFT                       (0U)
-#define MCG_C8_LOCS1(x)                          (((uint8_t)(((uint8_t)(x)) << MCG_C8_LOCS1_SHIFT)) & MCG_C8_LOCS1_MASK)
-#define MCG_C8_CME1_MASK                         (0x20U)
-#define MCG_C8_CME1_SHIFT                        (5U)
-#define MCG_C8_CME1(x)                           (((uint8_t)(((uint8_t)(x)) << MCG_C8_CME1_SHIFT)) & MCG_C8_CME1_MASK)
-#define MCG_C8_LOLRE_MASK                        (0x40U)
-#define MCG_C8_LOLRE_SHIFT                       (6U)
-#define MCG_C8_LOLRE(x)                          (((uint8_t)(((uint8_t)(x)) << MCG_C8_LOLRE_SHIFT)) & MCG_C8_LOLRE_MASK)
-#define MCG_C8_LOCRE1_MASK                       (0x80U)
-#define MCG_C8_LOCRE1_SHIFT                      (7U)
-#define MCG_C8_LOCRE1(x)                         (((uint8_t)(((uint8_t)(x)) << MCG_C8_LOCRE1_SHIFT)) & MCG_C8_LOCRE1_MASK)
-
-
-/*!
- * @}
- */ /* end of group MCG_Register_Masks */
-
-
-/* MCG - Peripheral instance base addresses */
-/** Peripheral MCG base address */
-#define MCG_BASE                                 (0x40064000u)
-/** Peripheral MCG base pointer */
-#define MCG                                      ((MCG_Type *)MCG_BASE)
-/** Array initializer of MCG peripheral base addresses */
-#define MCG_BASE_ADDRS                           { MCG_BASE }
-/** Array initializer of MCG peripheral base pointers */
-#define MCG_BASE_PTRS                            { MCG }
-
-/*!
- * @}
- */ /* end of group MCG_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- MCM Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MCM_Peripheral_Access_Layer MCM Peripheral Access Layer
- * @{
- */
-
-/** MCM - Register Layout Typedef */
-typedef struct {
-       uint8_t RESERVED_0[8];
-  __I  uint16_t PLASC;                             /**< Crossbar Switch (AXBS) Slave Configuration, offset: 0x8 */
-  __I  uint16_t PLAMC;                             /**< Crossbar Switch (AXBS) Master Configuration, offset: 0xA */
-  __IO uint32_t CR;                                /**< Control Register, offset: 0xC */
-  __IO uint32_t ISCR;                              /**< Interrupt Status Register, offset: 0x10 */
-  __IO uint32_t ETBCC;                             /**< ETB Counter Control register, offset: 0x14 */
-  __IO uint32_t ETBRL;                             /**< ETB Reload register, offset: 0x18 */
-  __I  uint32_t ETBCNT;                            /**< ETB Counter Value register, offset: 0x1C */
-       uint8_t RESERVED_1[16];
-  __IO uint32_t PID;                               /**< Process ID register, offset: 0x30 */
-} MCM_Type;
-
-/* ----------------------------------------------------------------------------
-   -- MCM Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MCM_Register_Masks MCM Register Masks
- * @{
- */
-
-/*! @name PLASC - Crossbar Switch (AXBS) Slave Configuration */
-#define MCM_PLASC_ASC_MASK                       (0xFFU)
-#define MCM_PLASC_ASC_SHIFT                      (0U)
-#define MCM_PLASC_ASC(x)                         (((uint16_t)(((uint16_t)(x)) << MCM_PLASC_ASC_SHIFT)) & MCM_PLASC_ASC_MASK)
-
-/*! @name PLAMC - Crossbar Switch (AXBS) Master Configuration */
-#define MCM_PLAMC_AMC_MASK                       (0xFFU)
-#define MCM_PLAMC_AMC_SHIFT                      (0U)
-#define MCM_PLAMC_AMC(x)                         (((uint16_t)(((uint16_t)(x)) << MCM_PLAMC_AMC_SHIFT)) & MCM_PLAMC_AMC_MASK)
-
-/*! @name CR - Control Register */
-#define MCM_CR_SRAMUAP_MASK                      (0x3000000U)
-#define MCM_CR_SRAMUAP_SHIFT                     (24U)
-#define MCM_CR_SRAMUAP(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_CR_SRAMUAP_SHIFT)) & MCM_CR_SRAMUAP_MASK)
-#define MCM_CR_SRAMUWP_MASK                      (0x4000000U)
-#define MCM_CR_SRAMUWP_SHIFT                     (26U)
-#define MCM_CR_SRAMUWP(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_CR_SRAMUWP_SHIFT)) & MCM_CR_SRAMUWP_MASK)
-#define MCM_CR_SRAMLAP_MASK                      (0x30000000U)
-#define MCM_CR_SRAMLAP_SHIFT                     (28U)
-#define MCM_CR_SRAMLAP(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_CR_SRAMLAP_SHIFT)) & MCM_CR_SRAMLAP_MASK)
-#define MCM_CR_SRAMLWP_MASK                      (0x40000000U)
-#define MCM_CR_SRAMLWP_SHIFT                     (30U)
-#define MCM_CR_SRAMLWP(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_CR_SRAMLWP_SHIFT)) & MCM_CR_SRAMLWP_MASK)
-
-/*! @name ISCR - Interrupt Status Register */
-#define MCM_ISCR_IRQ_MASK                        (0x2U)
-#define MCM_ISCR_IRQ_SHIFT                       (1U)
-#define MCM_ISCR_IRQ(x)                          (((uint32_t)(((uint32_t)(x)) << MCM_ISCR_IRQ_SHIFT)) & MCM_ISCR_IRQ_MASK)
-#define MCM_ISCR_NMI_MASK                        (0x4U)
-#define MCM_ISCR_NMI_SHIFT                       (2U)
-#define MCM_ISCR_NMI(x)                          (((uint32_t)(((uint32_t)(x)) << MCM_ISCR_NMI_SHIFT)) & MCM_ISCR_NMI_MASK)
-#define MCM_ISCR_DHREQ_MASK                      (0x8U)
-#define MCM_ISCR_DHREQ_SHIFT                     (3U)
-#define MCM_ISCR_DHREQ(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_ISCR_DHREQ_SHIFT)) & MCM_ISCR_DHREQ_MASK)
-#define MCM_ISCR_FIOC_MASK                       (0x100U)
-#define MCM_ISCR_FIOC_SHIFT                      (8U)
-#define MCM_ISCR_FIOC(x)                         (((uint32_t)(((uint32_t)(x)) << MCM_ISCR_FIOC_SHIFT)) & MCM_ISCR_FIOC_MASK)
-#define MCM_ISCR_FDZC_MASK                       (0x200U)
-#define MCM_ISCR_FDZC_SHIFT                      (9U)
-#define MCM_ISCR_FDZC(x)                         (((uint32_t)(((uint32_t)(x)) << MCM_ISCR_FDZC_SHIFT)) & MCM_ISCR_FDZC_MASK)
-#define MCM_ISCR_FOFC_MASK                       (0x400U)
-#define MCM_ISCR_FOFC_SHIFT                      (10U)
-#define MCM_ISCR_FOFC(x)                         (((uint32_t)(((uint32_t)(x)) << MCM_ISCR_FOFC_SHIFT)) & MCM_ISCR_FOFC_MASK)
-#define MCM_ISCR_FUFC_MASK                       (0x800U)
-#define MCM_ISCR_FUFC_SHIFT                      (11U)
-#define MCM_ISCR_FUFC(x)                         (((uint32_t)(((uint32_t)(x)) << MCM_ISCR_FUFC_SHIFT)) & MCM_ISCR_FUFC_MASK)
-#define MCM_ISCR_FIXC_MASK                       (0x1000U)
-#define MCM_ISCR_FIXC_SHIFT                      (12U)
-#define MCM_ISCR_FIXC(x)                         (((uint32_t)(((uint32_t)(x)) << MCM_ISCR_FIXC_SHIFT)) & MCM_ISCR_FIXC_MASK)
-#define MCM_ISCR_FIDC_MASK                       (0x8000U)
-#define MCM_ISCR_FIDC_SHIFT                      (15U)
-#define MCM_ISCR_FIDC(x)                         (((uint32_t)(((uint32_t)(x)) << MCM_ISCR_FIDC_SHIFT)) & MCM_ISCR_FIDC_MASK)
-#define MCM_ISCR_FIOCE_MASK                      (0x1000000U)
-#define MCM_ISCR_FIOCE_SHIFT                     (24U)
-#define MCM_ISCR_FIOCE(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_ISCR_FIOCE_SHIFT)) & MCM_ISCR_FIOCE_MASK)
-#define MCM_ISCR_FDZCE_MASK                      (0x2000000U)
-#define MCM_ISCR_FDZCE_SHIFT                     (25U)
-#define MCM_ISCR_FDZCE(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_ISCR_FDZCE_SHIFT)) & MCM_ISCR_FDZCE_MASK)
-#define MCM_ISCR_FOFCE_MASK                      (0x4000000U)
-#define MCM_ISCR_FOFCE_SHIFT                     (26U)
-#define MCM_ISCR_FOFCE(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_ISCR_FOFCE_SHIFT)) & MCM_ISCR_FOFCE_MASK)
-#define MCM_ISCR_FUFCE_MASK                      (0x8000000U)
-#define MCM_ISCR_FUFCE_SHIFT                     (27U)
-#define MCM_ISCR_FUFCE(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_ISCR_FUFCE_SHIFT)) & MCM_ISCR_FUFCE_MASK)
-#define MCM_ISCR_FIXCE_MASK                      (0x10000000U)
-#define MCM_ISCR_FIXCE_SHIFT                     (28U)
-#define MCM_ISCR_FIXCE(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_ISCR_FIXCE_SHIFT)) & MCM_ISCR_FIXCE_MASK)
-#define MCM_ISCR_FIDCE_MASK                      (0x80000000U)
-#define MCM_ISCR_FIDCE_SHIFT                     (31U)
-#define MCM_ISCR_FIDCE(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_ISCR_FIDCE_SHIFT)) & MCM_ISCR_FIDCE_MASK)
-
-/*! @name ETBCC - ETB Counter Control register */
-#define MCM_ETBCC_CNTEN_MASK                     (0x1U)
-#define MCM_ETBCC_CNTEN_SHIFT                    (0U)
-#define MCM_ETBCC_CNTEN(x)                       (((uint32_t)(((uint32_t)(x)) << MCM_ETBCC_CNTEN_SHIFT)) & MCM_ETBCC_CNTEN_MASK)
-#define MCM_ETBCC_RSPT_MASK                      (0x6U)
-#define MCM_ETBCC_RSPT_SHIFT                     (1U)
-#define MCM_ETBCC_RSPT(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_ETBCC_RSPT_SHIFT)) & MCM_ETBCC_RSPT_MASK)
-#define MCM_ETBCC_RLRQ_MASK                      (0x8U)
-#define MCM_ETBCC_RLRQ_SHIFT                     (3U)
-#define MCM_ETBCC_RLRQ(x)                        (((uint32_t)(((uint32_t)(x)) << MCM_ETBCC_RLRQ_SHIFT)) & MCM_ETBCC_RLRQ_MASK)
-#define MCM_ETBCC_ETDIS_MASK                     (0x10U)
-#define MCM_ETBCC_ETDIS_SHIFT                    (4U)
-#define MCM_ETBCC_ETDIS(x)                       (((uint32_t)(((uint32_t)(x)) << MCM_ETBCC_ETDIS_SHIFT)) & MCM_ETBCC_ETDIS_MASK)
-#define MCM_ETBCC_ITDIS_MASK                     (0x20U)
-#define MCM_ETBCC_ITDIS_SHIFT                    (5U)
-#define MCM_ETBCC_ITDIS(x)                       (((uint32_t)(((uint32_t)(x)) << MCM_ETBCC_ITDIS_SHIFT)) & MCM_ETBCC_ITDIS_MASK)
-
-/*! @name ETBRL - ETB Reload register */
-#define MCM_ETBRL_RELOAD_MASK                    (0x7FFU)
-#define MCM_ETBRL_RELOAD_SHIFT                   (0U)
-#define MCM_ETBRL_RELOAD(x)                      (((uint32_t)(((uint32_t)(x)) << MCM_ETBRL_RELOAD_SHIFT)) & MCM_ETBRL_RELOAD_MASK)
-
-/*! @name ETBCNT - ETB Counter Value register */
-#define MCM_ETBCNT_COUNTER_MASK                  (0x7FFU)
-#define MCM_ETBCNT_COUNTER_SHIFT                 (0U)
-#define MCM_ETBCNT_COUNTER(x)                    (((uint32_t)(((uint32_t)(x)) << MCM_ETBCNT_COUNTER_SHIFT)) & MCM_ETBCNT_COUNTER_MASK)
-
-/*! @name PID - Process ID register */
-#define MCM_PID_PID_MASK                         (0xFFU)
-#define MCM_PID_PID_SHIFT                        (0U)
-#define MCM_PID_PID(x)                           (((uint32_t)(((uint32_t)(x)) << MCM_PID_PID_SHIFT)) & MCM_PID_PID_MASK)
-
-
-/*!
- * @}
- */ /* end of group MCM_Register_Masks */
-
-
-/* MCM - Peripheral instance base addresses */
-/** Peripheral MCM base address */
-#define MCM_BASE                                 (0xE0080000u)
-/** Peripheral MCM base pointer */
-#define MCM                                      ((MCM_Type *)MCM_BASE)
-/** Array initializer of MCM peripheral base addresses */
-#define MCM_BASE_ADDRS                           { MCM_BASE }
-/** Array initializer of MCM peripheral base pointers */
-#define MCM_BASE_PTRS                            { MCM }
-/** Interrupt vectors for the MCM peripheral type */
-#define MCM_IRQS                                 { MCM_IRQn }
-
-/*!
- * @}
- */ /* end of group MCM_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- MPU Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MPU_Peripheral_Access_Layer MPU Peripheral Access Layer
- * @{
- */
-
-/** MPU - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t CESR;                              /**< Control/Error Status Register, offset: 0x0 */
-       uint8_t RESERVED_0[12];
-  struct {                                         /* offset: 0x10, array step: 0x8 */
-    __I  uint32_t EAR;                               /**< Error Address Register, slave port n, array offset: 0x10, array step: 0x8 */
-    __I  uint32_t EDR;                               /**< Error Detail Register, slave port n, array offset: 0x14, array step: 0x8 */
-  } SP[5];
-       uint8_t RESERVED_1[968];
-  __IO uint32_t WORD[12][4];                       /**< Region Descriptor n, Word 0..Region Descriptor n, Word 3, array offset: 0x400, array step: index*0x10, index2*0x4 */
-       uint8_t RESERVED_2[832];
-  __IO uint32_t RGDAAC[12];                        /**< Region Descriptor Alternate Access Control n, array offset: 0x800, array step: 0x4 */
-} MPU_Type;
-
-/* ----------------------------------------------------------------------------
-   -- MPU Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MPU_Register_Masks MPU Register Masks
- * @{
- */
-
-/*! @name CESR - Control/Error Status Register */
-#define MPU_CESR_VLD_MASK                        (0x1U)
-#define MPU_CESR_VLD_SHIFT                       (0U)
-#define MPU_CESR_VLD(x)                          (((uint32_t)(((uint32_t)(x)) << MPU_CESR_VLD_SHIFT)) & MPU_CESR_VLD_MASK)
-#define MPU_CESR_NRGD_MASK                       (0xF00U)
-#define MPU_CESR_NRGD_SHIFT                      (8U)
-#define MPU_CESR_NRGD(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_CESR_NRGD_SHIFT)) & MPU_CESR_NRGD_MASK)
-#define MPU_CESR_NSP_MASK                        (0xF000U)
-#define MPU_CESR_NSP_SHIFT                       (12U)
-#define MPU_CESR_NSP(x)                          (((uint32_t)(((uint32_t)(x)) << MPU_CESR_NSP_SHIFT)) & MPU_CESR_NSP_MASK)
-#define MPU_CESR_HRL_MASK                        (0xF0000U)
-#define MPU_CESR_HRL_SHIFT                       (16U)
-#define MPU_CESR_HRL(x)                          (((uint32_t)(((uint32_t)(x)) << MPU_CESR_HRL_SHIFT)) & MPU_CESR_HRL_MASK)
-#define MPU_CESR_SPERR_MASK                      (0xF8000000U)
-#define MPU_CESR_SPERR_SHIFT                     (27U)
-#define MPU_CESR_SPERR(x)                        (((uint32_t)(((uint32_t)(x)) << MPU_CESR_SPERR_SHIFT)) & MPU_CESR_SPERR_MASK)
-
-/*! @name EAR - Error Address Register, slave port n */
-#define MPU_EAR_EADDR_MASK                       (0xFFFFFFFFU)
-#define MPU_EAR_EADDR_SHIFT                      (0U)
-#define MPU_EAR_EADDR(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_EAR_EADDR_SHIFT)) & MPU_EAR_EADDR_MASK)
-
-/* The count of MPU_EAR */
-#define MPU_EAR_COUNT                            (5U)
-
-/*! @name EDR - Error Detail Register, slave port n */
-#define MPU_EDR_ERW_MASK                         (0x1U)
-#define MPU_EDR_ERW_SHIFT                        (0U)
-#define MPU_EDR_ERW(x)                           (((uint32_t)(((uint32_t)(x)) << MPU_EDR_ERW_SHIFT)) & MPU_EDR_ERW_MASK)
-#define MPU_EDR_EATTR_MASK                       (0xEU)
-#define MPU_EDR_EATTR_SHIFT                      (1U)
-#define MPU_EDR_EATTR(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_EDR_EATTR_SHIFT)) & MPU_EDR_EATTR_MASK)
-#define MPU_EDR_EMN_MASK                         (0xF0U)
-#define MPU_EDR_EMN_SHIFT                        (4U)
-#define MPU_EDR_EMN(x)                           (((uint32_t)(((uint32_t)(x)) << MPU_EDR_EMN_SHIFT)) & MPU_EDR_EMN_MASK)
-#define MPU_EDR_EPID_MASK                        (0xFF00U)
-#define MPU_EDR_EPID_SHIFT                       (8U)
-#define MPU_EDR_EPID(x)                          (((uint32_t)(((uint32_t)(x)) << MPU_EDR_EPID_SHIFT)) & MPU_EDR_EPID_MASK)
-#define MPU_EDR_EACD_MASK                        (0xFFFF0000U)
-#define MPU_EDR_EACD_SHIFT                       (16U)
-#define MPU_EDR_EACD(x)                          (((uint32_t)(((uint32_t)(x)) << MPU_EDR_EACD_SHIFT)) & MPU_EDR_EACD_MASK)
-
-/* The count of MPU_EDR */
-#define MPU_EDR_COUNT                            (5U)
-
-/*! @name WORD - Region Descriptor n, Word 0..Region Descriptor n, Word 3 */
-#define MPU_WORD_VLD_MASK                        (0x1U)
-#define MPU_WORD_VLD_SHIFT                       (0U)
-#define MPU_WORD_VLD(x)                          (((uint32_t)(((uint32_t)(x)) << MPU_WORD_VLD_SHIFT)) & MPU_WORD_VLD_MASK)
-#define MPU_WORD_M0UM_MASK                       (0x7U)
-#define MPU_WORD_M0UM_SHIFT                      (0U)
-#define MPU_WORD_M0UM(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M0UM_SHIFT)) & MPU_WORD_M0UM_MASK)
-#define MPU_WORD_M0SM_MASK                       (0x18U)
-#define MPU_WORD_M0SM_SHIFT                      (3U)
-#define MPU_WORD_M0SM(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M0SM_SHIFT)) & MPU_WORD_M0SM_MASK)
-#define MPU_WORD_M0PE_MASK                       (0x20U)
-#define MPU_WORD_M0PE_SHIFT                      (5U)
-#define MPU_WORD_M0PE(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M0PE_SHIFT)) & MPU_WORD_M0PE_MASK)
-#define MPU_WORD_ENDADDR_MASK                    (0xFFFFFFE0U)
-#define MPU_WORD_ENDADDR_SHIFT                   (5U)
-#define MPU_WORD_ENDADDR(x)                      (((uint32_t)(((uint32_t)(x)) << MPU_WORD_ENDADDR_SHIFT)) & MPU_WORD_ENDADDR_MASK)
-#define MPU_WORD_SRTADDR_MASK                    (0xFFFFFFE0U)
-#define MPU_WORD_SRTADDR_SHIFT                   (5U)
-#define MPU_WORD_SRTADDR(x)                      (((uint32_t)(((uint32_t)(x)) << MPU_WORD_SRTADDR_SHIFT)) & MPU_WORD_SRTADDR_MASK)
-#define MPU_WORD_M1UM_MASK                       (0x1C0U)
-#define MPU_WORD_M1UM_SHIFT                      (6U)
-#define MPU_WORD_M1UM(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M1UM_SHIFT)) & MPU_WORD_M1UM_MASK)
-#define MPU_WORD_M1SM_MASK                       (0x600U)
-#define MPU_WORD_M1SM_SHIFT                      (9U)
-#define MPU_WORD_M1SM(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M1SM_SHIFT)) & MPU_WORD_M1SM_MASK)
-#define MPU_WORD_M1PE_MASK                       (0x800U)
-#define MPU_WORD_M1PE_SHIFT                      (11U)
-#define MPU_WORD_M1PE(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M1PE_SHIFT)) & MPU_WORD_M1PE_MASK)
-#define MPU_WORD_M2UM_MASK                       (0x7000U)
-#define MPU_WORD_M2UM_SHIFT                      (12U)
-#define MPU_WORD_M2UM(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M2UM_SHIFT)) & MPU_WORD_M2UM_MASK)
-#define MPU_WORD_M2SM_MASK                       (0x18000U)
-#define MPU_WORD_M2SM_SHIFT                      (15U)
-#define MPU_WORD_M2SM(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M2SM_SHIFT)) & MPU_WORD_M2SM_MASK)
-#define MPU_WORD_PIDMASK_MASK                    (0xFF0000U)
-#define MPU_WORD_PIDMASK_SHIFT                   (16U)
-#define MPU_WORD_PIDMASK(x)                      (((uint32_t)(((uint32_t)(x)) << MPU_WORD_PIDMASK_SHIFT)) & MPU_WORD_PIDMASK_MASK)
-#define MPU_WORD_M2PE_MASK                       (0x20000U)
-#define MPU_WORD_M2PE_SHIFT                      (17U)
-#define MPU_WORD_M2PE(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M2PE_SHIFT)) & MPU_WORD_M2PE_MASK)
-#define MPU_WORD_M3UM_MASK                       (0x1C0000U)
-#define MPU_WORD_M3UM_SHIFT                      (18U)
-#define MPU_WORD_M3UM(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M3UM_SHIFT)) & MPU_WORD_M3UM_MASK)
-#define MPU_WORD_M3SM_MASK                       (0x600000U)
-#define MPU_WORD_M3SM_SHIFT                      (21U)
-#define MPU_WORD_M3SM(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M3SM_SHIFT)) & MPU_WORD_M3SM_MASK)
-#define MPU_WORD_M3PE_MASK                       (0x800000U)
-#define MPU_WORD_M3PE_SHIFT                      (23U)
-#define MPU_WORD_M3PE(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M3PE_SHIFT)) & MPU_WORD_M3PE_MASK)
-#define MPU_WORD_PID_MASK                        (0xFF000000U)
-#define MPU_WORD_PID_SHIFT                       (24U)
-#define MPU_WORD_PID(x)                          (((uint32_t)(((uint32_t)(x)) << MPU_WORD_PID_SHIFT)) & MPU_WORD_PID_MASK)
-#define MPU_WORD_M4WE_MASK                       (0x1000000U)
-#define MPU_WORD_M4WE_SHIFT                      (24U)
-#define MPU_WORD_M4WE(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M4WE_SHIFT)) & MPU_WORD_M4WE_MASK)
-#define MPU_WORD_M4RE_MASK                       (0x2000000U)
-#define MPU_WORD_M4RE_SHIFT                      (25U)
-#define MPU_WORD_M4RE(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M4RE_SHIFT)) & MPU_WORD_M4RE_MASK)
-#define MPU_WORD_M5WE_MASK                       (0x4000000U)
-#define MPU_WORD_M5WE_SHIFT                      (26U)
-#define MPU_WORD_M5WE(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M5WE_SHIFT)) & MPU_WORD_M5WE_MASK)
-#define MPU_WORD_M5RE_MASK                       (0x8000000U)
-#define MPU_WORD_M5RE_SHIFT                      (27U)
-#define MPU_WORD_M5RE(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M5RE_SHIFT)) & MPU_WORD_M5RE_MASK)
-#define MPU_WORD_M6WE_MASK                       (0x10000000U)
-#define MPU_WORD_M6WE_SHIFT                      (28U)
-#define MPU_WORD_M6WE(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M6WE_SHIFT)) & MPU_WORD_M6WE_MASK)
-#define MPU_WORD_M6RE_MASK                       (0x20000000U)
-#define MPU_WORD_M6RE_SHIFT                      (29U)
-#define MPU_WORD_M6RE(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M6RE_SHIFT)) & MPU_WORD_M6RE_MASK)
-#define MPU_WORD_M7WE_MASK                       (0x40000000U)
-#define MPU_WORD_M7WE_SHIFT                      (30U)
-#define MPU_WORD_M7WE(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M7WE_SHIFT)) & MPU_WORD_M7WE_MASK)
-#define MPU_WORD_M7RE_MASK                       (0x80000000U)
-#define MPU_WORD_M7RE_SHIFT                      (31U)
-#define MPU_WORD_M7RE(x)                         (((uint32_t)(((uint32_t)(x)) << MPU_WORD_M7RE_SHIFT)) & MPU_WORD_M7RE_MASK)
-
-/* The count of MPU_WORD */
-#define MPU_WORD_COUNT                           (12U)
-
-/* The count of MPU_WORD */
-#define MPU_WORD_COUNT2                          (4U)
-
-/*! @name RGDAAC - Region Descriptor Alternate Access Control n */
-#define MPU_RGDAAC_M0UM_MASK                     (0x7U)
-#define MPU_RGDAAC_M0UM_SHIFT                    (0U)
-#define MPU_RGDAAC_M0UM(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M0UM_SHIFT)) & MPU_RGDAAC_M0UM_MASK)
-#define MPU_RGDAAC_M0SM_MASK                     (0x18U)
-#define MPU_RGDAAC_M0SM_SHIFT                    (3U)
-#define MPU_RGDAAC_M0SM(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M0SM_SHIFT)) & MPU_RGDAAC_M0SM_MASK)
-#define MPU_RGDAAC_M0PE_MASK                     (0x20U)
-#define MPU_RGDAAC_M0PE_SHIFT                    (5U)
-#define MPU_RGDAAC_M0PE(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M0PE_SHIFT)) & MPU_RGDAAC_M0PE_MASK)
-#define MPU_RGDAAC_M1UM_MASK                     (0x1C0U)
-#define MPU_RGDAAC_M1UM_SHIFT                    (6U)
-#define MPU_RGDAAC_M1UM(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M1UM_SHIFT)) & MPU_RGDAAC_M1UM_MASK)
-#define MPU_RGDAAC_M1SM_MASK                     (0x600U)
-#define MPU_RGDAAC_M1SM_SHIFT                    (9U)
-#define MPU_RGDAAC_M1SM(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M1SM_SHIFT)) & MPU_RGDAAC_M1SM_MASK)
-#define MPU_RGDAAC_M1PE_MASK                     (0x800U)
-#define MPU_RGDAAC_M1PE_SHIFT                    (11U)
-#define MPU_RGDAAC_M1PE(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M1PE_SHIFT)) & MPU_RGDAAC_M1PE_MASK)
-#define MPU_RGDAAC_M2UM_MASK                     (0x7000U)
-#define MPU_RGDAAC_M2UM_SHIFT                    (12U)
-#define MPU_RGDAAC_M2UM(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M2UM_SHIFT)) & MPU_RGDAAC_M2UM_MASK)
-#define MPU_RGDAAC_M2SM_MASK                     (0x18000U)
-#define MPU_RGDAAC_M2SM_SHIFT                    (15U)
-#define MPU_RGDAAC_M2SM(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M2SM_SHIFT)) & MPU_RGDAAC_M2SM_MASK)
-#define MPU_RGDAAC_M2PE_MASK                     (0x20000U)
-#define MPU_RGDAAC_M2PE_SHIFT                    (17U)
-#define MPU_RGDAAC_M2PE(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M2PE_SHIFT)) & MPU_RGDAAC_M2PE_MASK)
-#define MPU_RGDAAC_M3UM_MASK                     (0x1C0000U)
-#define MPU_RGDAAC_M3UM_SHIFT                    (18U)
-#define MPU_RGDAAC_M3UM(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M3UM_SHIFT)) & MPU_RGDAAC_M3UM_MASK)
-#define MPU_RGDAAC_M3SM_MASK                     (0x600000U)
-#define MPU_RGDAAC_M3SM_SHIFT                    (21U)
-#define MPU_RGDAAC_M3SM(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M3SM_SHIFT)) & MPU_RGDAAC_M3SM_MASK)
-#define MPU_RGDAAC_M3PE_MASK                     (0x800000U)
-#define MPU_RGDAAC_M3PE_SHIFT                    (23U)
-#define MPU_RGDAAC_M3PE(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M3PE_SHIFT)) & MPU_RGDAAC_M3PE_MASK)
-#define MPU_RGDAAC_M4WE_MASK                     (0x1000000U)
-#define MPU_RGDAAC_M4WE_SHIFT                    (24U)
-#define MPU_RGDAAC_M4WE(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M4WE_SHIFT)) & MPU_RGDAAC_M4WE_MASK)
-#define MPU_RGDAAC_M4RE_MASK                     (0x2000000U)
-#define MPU_RGDAAC_M4RE_SHIFT                    (25U)
-#define MPU_RGDAAC_M4RE(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M4RE_SHIFT)) & MPU_RGDAAC_M4RE_MASK)
-#define MPU_RGDAAC_M5WE_MASK                     (0x4000000U)
-#define MPU_RGDAAC_M5WE_SHIFT                    (26U)
-#define MPU_RGDAAC_M5WE(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M5WE_SHIFT)) & MPU_RGDAAC_M5WE_MASK)
-#define MPU_RGDAAC_M5RE_MASK                     (0x8000000U)
-#define MPU_RGDAAC_M5RE_SHIFT                    (27U)
-#define MPU_RGDAAC_M5RE(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M5RE_SHIFT)) & MPU_RGDAAC_M5RE_MASK)
-#define MPU_RGDAAC_M6WE_MASK                     (0x10000000U)
-#define MPU_RGDAAC_M6WE_SHIFT                    (28U)
-#define MPU_RGDAAC_M6WE(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M6WE_SHIFT)) & MPU_RGDAAC_M6WE_MASK)
-#define MPU_RGDAAC_M6RE_MASK                     (0x20000000U)
-#define MPU_RGDAAC_M6RE_SHIFT                    (29U)
-#define MPU_RGDAAC_M6RE(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M6RE_SHIFT)) & MPU_RGDAAC_M6RE_MASK)
-#define MPU_RGDAAC_M7WE_MASK                     (0x40000000U)
-#define MPU_RGDAAC_M7WE_SHIFT                    (30U)
-#define MPU_RGDAAC_M7WE(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M7WE_SHIFT)) & MPU_RGDAAC_M7WE_MASK)
-#define MPU_RGDAAC_M7RE_MASK                     (0x80000000U)
-#define MPU_RGDAAC_M7RE_SHIFT                    (31U)
-#define MPU_RGDAAC_M7RE(x)                       (((uint32_t)(((uint32_t)(x)) << MPU_RGDAAC_M7RE_SHIFT)) & MPU_RGDAAC_M7RE_MASK)
-
-/* The count of MPU_RGDAAC */
-#define MPU_RGDAAC_COUNT                         (12U)
-
-
-/*!
- * @}
- */ /* end of group MPU_Register_Masks */
-
-
-/* MPU - Peripheral instance base addresses */
-/** Peripheral MPU base address */
-#define MPU_BASE                                 (0x4000D000u)
-/** Peripheral MPU base pointer */
-#define MPU                                      ((MPU_Type *)MPU_BASE)
-/** Array initializer of MPU peripheral base addresses */
-#define MPU_BASE_ADDRS                           { MPU_BASE }
-/** Array initializer of MPU peripheral base pointers */
-#define MPU_BASE_PTRS                            { MPU }
-
-/*!
- * @}
- */ /* end of group MPU_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- NV Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup NV_Peripheral_Access_Layer NV Peripheral Access Layer
- * @{
- */
-
-/** NV - Register Layout Typedef */
-typedef struct {
-  __I  uint8_t BACKKEY3;                           /**< Backdoor Comparison Key 3., offset: 0x0 */
-  __I  uint8_t BACKKEY2;                           /**< Backdoor Comparison Key 2., offset: 0x1 */
-  __I  uint8_t BACKKEY1;                           /**< Backdoor Comparison Key 1., offset: 0x2 */
-  __I  uint8_t BACKKEY0;                           /**< Backdoor Comparison Key 0., offset: 0x3 */
-  __I  uint8_t BACKKEY7;                           /**< Backdoor Comparison Key 7., offset: 0x4 */
-  __I  uint8_t BACKKEY6;                           /**< Backdoor Comparison Key 6., offset: 0x5 */
-  __I  uint8_t BACKKEY5;                           /**< Backdoor Comparison Key 5., offset: 0x6 */
-  __I  uint8_t BACKKEY4;                           /**< Backdoor Comparison Key 4., offset: 0x7 */
-  __I  uint8_t FPROT3;                             /**< Non-volatile P-Flash Protection 1 - Low Register, offset: 0x8 */
-  __I  uint8_t FPROT2;                             /**< Non-volatile P-Flash Protection 1 - High Register, offset: 0x9 */
-  __I  uint8_t FPROT1;                             /**< Non-volatile P-Flash Protection 0 - Low Register, offset: 0xA */
-  __I  uint8_t FPROT0;                             /**< Non-volatile P-Flash Protection 0 - High Register, offset: 0xB */
-  __I  uint8_t FSEC;                               /**< Non-volatile Flash Security Register, offset: 0xC */
-  __I  uint8_t FOPT;                               /**< Non-volatile Flash Option Register, offset: 0xD */
-  __I  uint8_t FEPROT;                             /**< Non-volatile EERAM Protection Register, offset: 0xE */
-  __I  uint8_t FDPROT;                             /**< Non-volatile D-Flash Protection Register, offset: 0xF */
-} NV_Type;
-
-/* ----------------------------------------------------------------------------
-   -- NV Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup NV_Register_Masks NV Register Masks
- * @{
- */
-
-/*! @name BACKKEY3 - Backdoor Comparison Key 3. */
-#define NV_BACKKEY3_KEY_MASK                     (0xFFU)
-#define NV_BACKKEY3_KEY_SHIFT                    (0U)
-#define NV_BACKKEY3_KEY(x)                       (((uint8_t)(((uint8_t)(x)) << NV_BACKKEY3_KEY_SHIFT)) & NV_BACKKEY3_KEY_MASK)
-
-/*! @name BACKKEY2 - Backdoor Comparison Key 2. */
-#define NV_BACKKEY2_KEY_MASK                     (0xFFU)
-#define NV_BACKKEY2_KEY_SHIFT                    (0U)
-#define NV_BACKKEY2_KEY(x)                       (((uint8_t)(((uint8_t)(x)) << NV_BACKKEY2_KEY_SHIFT)) & NV_BACKKEY2_KEY_MASK)
-
-/*! @name BACKKEY1 - Backdoor Comparison Key 1. */
-#define NV_BACKKEY1_KEY_MASK                     (0xFFU)
-#define NV_BACKKEY1_KEY_SHIFT                    (0U)
-#define NV_BACKKEY1_KEY(x)                       (((uint8_t)(((uint8_t)(x)) << NV_BACKKEY1_KEY_SHIFT)) & NV_BACKKEY1_KEY_MASK)
-
-/*! @name BACKKEY0 - Backdoor Comparison Key 0. */
-#define NV_BACKKEY0_KEY_MASK                     (0xFFU)
-#define NV_BACKKEY0_KEY_SHIFT                    (0U)
-#define NV_BACKKEY0_KEY(x)                       (((uint8_t)(((uint8_t)(x)) << NV_BACKKEY0_KEY_SHIFT)) & NV_BACKKEY0_KEY_MASK)
-
-/*! @name BACKKEY7 - Backdoor Comparison Key 7. */
-#define NV_BACKKEY7_KEY_MASK                     (0xFFU)
-#define NV_BACKKEY7_KEY_SHIFT                    (0U)
-#define NV_BACKKEY7_KEY(x)                       (((uint8_t)(((uint8_t)(x)) << NV_BACKKEY7_KEY_SHIFT)) & NV_BACKKEY7_KEY_MASK)
-
-/*! @name BACKKEY6 - Backdoor Comparison Key 6. */
-#define NV_BACKKEY6_KEY_MASK                     (0xFFU)
-#define NV_BACKKEY6_KEY_SHIFT                    (0U)
-#define NV_BACKKEY6_KEY(x)                       (((uint8_t)(((uint8_t)(x)) << NV_BACKKEY6_KEY_SHIFT)) & NV_BACKKEY6_KEY_MASK)
-
-/*! @name BACKKEY5 - Backdoor Comparison Key 5. */
-#define NV_BACKKEY5_KEY_MASK                     (0xFFU)
-#define NV_BACKKEY5_KEY_SHIFT                    (0U)
-#define NV_BACKKEY5_KEY(x)                       (((uint8_t)(((uint8_t)(x)) << NV_BACKKEY5_KEY_SHIFT)) & NV_BACKKEY5_KEY_MASK)
-
-/*! @name BACKKEY4 - Backdoor Comparison Key 4. */
-#define NV_BACKKEY4_KEY_MASK                     (0xFFU)
-#define NV_BACKKEY4_KEY_SHIFT                    (0U)
-#define NV_BACKKEY4_KEY(x)                       (((uint8_t)(((uint8_t)(x)) << NV_BACKKEY4_KEY_SHIFT)) & NV_BACKKEY4_KEY_MASK)
-
-/*! @name FPROT3 - Non-volatile P-Flash Protection 1 - Low Register */
-#define NV_FPROT3_PROT_MASK                      (0xFFU)
-#define NV_FPROT3_PROT_SHIFT                     (0U)
-#define NV_FPROT3_PROT(x)                        (((uint8_t)(((uint8_t)(x)) << NV_FPROT3_PROT_SHIFT)) & NV_FPROT3_PROT_MASK)
-
-/*! @name FPROT2 - Non-volatile P-Flash Protection 1 - High Register */
-#define NV_FPROT2_PROT_MASK                      (0xFFU)
-#define NV_FPROT2_PROT_SHIFT                     (0U)
-#define NV_FPROT2_PROT(x)                        (((uint8_t)(((uint8_t)(x)) << NV_FPROT2_PROT_SHIFT)) & NV_FPROT2_PROT_MASK)
-
-/*! @name FPROT1 - Non-volatile P-Flash Protection 0 - Low Register */
-#define NV_FPROT1_PROT_MASK                      (0xFFU)
-#define NV_FPROT1_PROT_SHIFT                     (0U)
-#define NV_FPROT1_PROT(x)                        (((uint8_t)(((uint8_t)(x)) << NV_FPROT1_PROT_SHIFT)) & NV_FPROT1_PROT_MASK)
-
-/*! @name FPROT0 - Non-volatile P-Flash Protection 0 - High Register */
-#define NV_FPROT0_PROT_MASK                      (0xFFU)
-#define NV_FPROT0_PROT_SHIFT                     (0U)
-#define NV_FPROT0_PROT(x)                        (((uint8_t)(((uint8_t)(x)) << NV_FPROT0_PROT_SHIFT)) & NV_FPROT0_PROT_MASK)
-
-/*! @name FSEC - Non-volatile Flash Security Register */
-#define NV_FSEC_SEC_MASK                         (0x3U)
-#define NV_FSEC_SEC_SHIFT                        (0U)
-#define NV_FSEC_SEC(x)                           (((uint8_t)(((uint8_t)(x)) << NV_FSEC_SEC_SHIFT)) & NV_FSEC_SEC_MASK)
-#define NV_FSEC_FSLACC_MASK                      (0xCU)
-#define NV_FSEC_FSLACC_SHIFT                     (2U)
-#define NV_FSEC_FSLACC(x)                        (((uint8_t)(((uint8_t)(x)) << NV_FSEC_FSLACC_SHIFT)) & NV_FSEC_FSLACC_MASK)
-#define NV_FSEC_MEEN_MASK                        (0x30U)
-#define NV_FSEC_MEEN_SHIFT                       (4U)
-#define NV_FSEC_MEEN(x)                          (((uint8_t)(((uint8_t)(x)) << NV_FSEC_MEEN_SHIFT)) & NV_FSEC_MEEN_MASK)
-#define NV_FSEC_KEYEN_MASK                       (0xC0U)
-#define NV_FSEC_KEYEN_SHIFT                      (6U)
-#define NV_FSEC_KEYEN(x)                         (((uint8_t)(((uint8_t)(x)) << NV_FSEC_KEYEN_SHIFT)) & NV_FSEC_KEYEN_MASK)
-
-/*! @name FOPT - Non-volatile Flash Option Register */
-#define NV_FOPT_LPBOOT_MASK                      (0x1U)
-#define NV_FOPT_LPBOOT_SHIFT                     (0U)
-#define NV_FOPT_LPBOOT(x)                        (((uint8_t)(((uint8_t)(x)) << NV_FOPT_LPBOOT_SHIFT)) & NV_FOPT_LPBOOT_MASK)
-#define NV_FOPT_EZPORT_DIS_MASK                  (0x2U)
-#define NV_FOPT_EZPORT_DIS_SHIFT                 (1U)
-#define NV_FOPT_EZPORT_DIS(x)                    (((uint8_t)(((uint8_t)(x)) << NV_FOPT_EZPORT_DIS_SHIFT)) & NV_FOPT_EZPORT_DIS_MASK)
-
-/*! @name FEPROT - Non-volatile EERAM Protection Register */
-#define NV_FEPROT_EPROT_MASK                     (0xFFU)
-#define NV_FEPROT_EPROT_SHIFT                    (0U)
-#define NV_FEPROT_EPROT(x)                       (((uint8_t)(((uint8_t)(x)) << NV_FEPROT_EPROT_SHIFT)) & NV_FEPROT_EPROT_MASK)
-
-/*! @name FDPROT - Non-volatile D-Flash Protection Register */
-#define NV_FDPROT_DPROT_MASK                     (0xFFU)
-#define NV_FDPROT_DPROT_SHIFT                    (0U)
-#define NV_FDPROT_DPROT(x)                       (((uint8_t)(((uint8_t)(x)) << NV_FDPROT_DPROT_SHIFT)) & NV_FDPROT_DPROT_MASK)
-
-
-/*!
- * @}
- */ /* end of group NV_Register_Masks */
-
-
-/* NV - Peripheral instance base addresses */
-/** Peripheral FTFE_FlashConfig base address */
-#define FTFE_FlashConfig_BASE                    (0x400u)
-/** Peripheral FTFE_FlashConfig base pointer */
-#define FTFE_FlashConfig                         ((NV_Type *)FTFE_FlashConfig_BASE)
-/** Array initializer of NV peripheral base addresses */
-#define NV_BASE_ADDRS                            { FTFE_FlashConfig_BASE }
-/** Array initializer of NV peripheral base pointers */
-#define NV_BASE_PTRS                             { FTFE_FlashConfig }
-
-/*!
- * @}
- */ /* end of group NV_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- OSC Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup OSC_Peripheral_Access_Layer OSC Peripheral Access Layer
- * @{
- */
-
-/** OSC - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t CR;                                 /**< OSC Control Register, offset: 0x0 */
-} OSC_Type;
-
-/* ----------------------------------------------------------------------------
-   -- OSC Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup OSC_Register_Masks OSC Register Masks
- * @{
- */
-
-/*! @name CR - OSC Control Register */
-#define OSC_CR_SC16P_MASK                        (0x1U)
-#define OSC_CR_SC16P_SHIFT                       (0U)
-#define OSC_CR_SC16P(x)                          (((uint8_t)(((uint8_t)(x)) << OSC_CR_SC16P_SHIFT)) & OSC_CR_SC16P_MASK)
-#define OSC_CR_SC8P_MASK                         (0x2U)
-#define OSC_CR_SC8P_SHIFT                        (1U)
-#define OSC_CR_SC8P(x)                           (((uint8_t)(((uint8_t)(x)) << OSC_CR_SC8P_SHIFT)) & OSC_CR_SC8P_MASK)
-#define OSC_CR_SC4P_MASK                         (0x4U)
-#define OSC_CR_SC4P_SHIFT                        (2U)
-#define OSC_CR_SC4P(x)                           (((uint8_t)(((uint8_t)(x)) << OSC_CR_SC4P_SHIFT)) & OSC_CR_SC4P_MASK)
-#define OSC_CR_SC2P_MASK                         (0x8U)
-#define OSC_CR_SC2P_SHIFT                        (3U)
-#define OSC_CR_SC2P(x)                           (((uint8_t)(((uint8_t)(x)) << OSC_CR_SC2P_SHIFT)) & OSC_CR_SC2P_MASK)
-#define OSC_CR_EREFSTEN_MASK                     (0x20U)
-#define OSC_CR_EREFSTEN_SHIFT                    (5U)
-#define OSC_CR_EREFSTEN(x)                       (((uint8_t)(((uint8_t)(x)) << OSC_CR_EREFSTEN_SHIFT)) & OSC_CR_EREFSTEN_MASK)
-#define OSC_CR_ERCLKEN_MASK                      (0x80U)
-#define OSC_CR_ERCLKEN_SHIFT                     (7U)
-#define OSC_CR_ERCLKEN(x)                        (((uint8_t)(((uint8_t)(x)) << OSC_CR_ERCLKEN_SHIFT)) & OSC_CR_ERCLKEN_MASK)
-
-
-/*!
- * @}
- */ /* end of group OSC_Register_Masks */
-
-
-/* OSC - Peripheral instance base addresses */
-/** Peripheral OSC base address */
-#define OSC_BASE                                 (0x40065000u)
-/** Peripheral OSC base pointer */
-#define OSC                                      ((OSC_Type *)OSC_BASE)
-/** Array initializer of OSC peripheral base addresses */
-#define OSC_BASE_ADDRS                           { OSC_BASE }
-/** Array initializer of OSC peripheral base pointers */
-#define OSC_BASE_PTRS                            { OSC }
-
-/*!
- * @}
- */ /* end of group OSC_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- PDB Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PDB_Peripheral_Access_Layer PDB Peripheral Access Layer
- * @{
- */
-
-/** PDB - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t SC;                                /**< Status and Control register, offset: 0x0 */
-  __IO uint32_t MOD;                               /**< Modulus register, offset: 0x4 */
-  __I  uint32_t CNT;                               /**< Counter register, offset: 0x8 */
-  __IO uint32_t IDLY;                              /**< Interrupt Delay register, offset: 0xC */
-  struct {                                         /* offset: 0x10, array step: 0x28 */
-    __IO uint32_t C1;                                /**< Channel n Control register 1, array offset: 0x10, array step: 0x28 */
-    __IO uint32_t S;                                 /**< Channel n Status register, array offset: 0x14, array step: 0x28 */
-    __IO uint32_t DLY[2];                            /**< Channel n Delay 0 register..Channel n Delay 1 register, array offset: 0x18, array step: index*0x28, index2*0x4 */
-         uint8_t RESERVED_0[24];
-  } CH[2];
-       uint8_t RESERVED_0[240];
-  struct {                                         /* offset: 0x150, array step: 0x8 */
-    __IO uint32_t INTC;                              /**< DAC Interval Trigger n Control register, array offset: 0x150, array step: 0x8 */
-    __IO uint32_t INT;                               /**< DAC Interval n register, array offset: 0x154, array step: 0x8 */
-  } DAC[2];
-       uint8_t RESERVED_1[48];
-  __IO uint32_t POEN;                              /**< Pulse-Out n Enable register, offset: 0x190 */
-  __IO uint32_t PODLY[3];                          /**< Pulse-Out n Delay register, array offset: 0x194, array step: 0x4 */
-} PDB_Type;
-
-/* ----------------------------------------------------------------------------
-   -- PDB Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PDB_Register_Masks PDB Register Masks
- * @{
- */
-
-/*! @name SC - Status and Control register */
-#define PDB_SC_LDOK_MASK                         (0x1U)
-#define PDB_SC_LDOK_SHIFT                        (0U)
-#define PDB_SC_LDOK(x)                           (((uint32_t)(((uint32_t)(x)) << PDB_SC_LDOK_SHIFT)) & PDB_SC_LDOK_MASK)
-#define PDB_SC_CONT_MASK                         (0x2U)
-#define PDB_SC_CONT_SHIFT                        (1U)
-#define PDB_SC_CONT(x)                           (((uint32_t)(((uint32_t)(x)) << PDB_SC_CONT_SHIFT)) & PDB_SC_CONT_MASK)
-#define PDB_SC_MULT_MASK                         (0xCU)
-#define PDB_SC_MULT_SHIFT                        (2U)
-#define PDB_SC_MULT(x)                           (((uint32_t)(((uint32_t)(x)) << PDB_SC_MULT_SHIFT)) & PDB_SC_MULT_MASK)
-#define PDB_SC_PDBIE_MASK                        (0x20U)
-#define PDB_SC_PDBIE_SHIFT                       (5U)
-#define PDB_SC_PDBIE(x)                          (((uint32_t)(((uint32_t)(x)) << PDB_SC_PDBIE_SHIFT)) & PDB_SC_PDBIE_MASK)
-#define PDB_SC_PDBIF_MASK                        (0x40U)
-#define PDB_SC_PDBIF_SHIFT                       (6U)
-#define PDB_SC_PDBIF(x)                          (((uint32_t)(((uint32_t)(x)) << PDB_SC_PDBIF_SHIFT)) & PDB_SC_PDBIF_MASK)
-#define PDB_SC_PDBEN_MASK                        (0x80U)
-#define PDB_SC_PDBEN_SHIFT                       (7U)
-#define PDB_SC_PDBEN(x)                          (((uint32_t)(((uint32_t)(x)) << PDB_SC_PDBEN_SHIFT)) & PDB_SC_PDBEN_MASK)
-#define PDB_SC_TRGSEL_MASK                       (0xF00U)
-#define PDB_SC_TRGSEL_SHIFT                      (8U)
-#define PDB_SC_TRGSEL(x)                         (((uint32_t)(((uint32_t)(x)) << PDB_SC_TRGSEL_SHIFT)) & PDB_SC_TRGSEL_MASK)
-#define PDB_SC_PRESCALER_MASK                    (0x7000U)
-#define PDB_SC_PRESCALER_SHIFT                   (12U)
-#define PDB_SC_PRESCALER(x)                      (((uint32_t)(((uint32_t)(x)) << PDB_SC_PRESCALER_SHIFT)) & PDB_SC_PRESCALER_MASK)
-#define PDB_SC_DMAEN_MASK                        (0x8000U)
-#define PDB_SC_DMAEN_SHIFT                       (15U)
-#define PDB_SC_DMAEN(x)                          (((uint32_t)(((uint32_t)(x)) << PDB_SC_DMAEN_SHIFT)) & PDB_SC_DMAEN_MASK)
-#define PDB_SC_SWTRIG_MASK                       (0x10000U)
-#define PDB_SC_SWTRIG_SHIFT                      (16U)
-#define PDB_SC_SWTRIG(x)                         (((uint32_t)(((uint32_t)(x)) << PDB_SC_SWTRIG_SHIFT)) & PDB_SC_SWTRIG_MASK)
-#define PDB_SC_PDBEIE_MASK                       (0x20000U)
-#define PDB_SC_PDBEIE_SHIFT                      (17U)
-#define PDB_SC_PDBEIE(x)                         (((uint32_t)(((uint32_t)(x)) << PDB_SC_PDBEIE_SHIFT)) & PDB_SC_PDBEIE_MASK)
-#define PDB_SC_LDMOD_MASK                        (0xC0000U)
-#define PDB_SC_LDMOD_SHIFT                       (18U)
-#define PDB_SC_LDMOD(x)                          (((uint32_t)(((uint32_t)(x)) << PDB_SC_LDMOD_SHIFT)) & PDB_SC_LDMOD_MASK)
-
-/*! @name MOD - Modulus register */
-#define PDB_MOD_MOD_MASK                         (0xFFFFU)
-#define PDB_MOD_MOD_SHIFT                        (0U)
-#define PDB_MOD_MOD(x)                           (((uint32_t)(((uint32_t)(x)) << PDB_MOD_MOD_SHIFT)) & PDB_MOD_MOD_MASK)
-
-/*! @name CNT - Counter register */
-#define PDB_CNT_CNT_MASK                         (0xFFFFU)
-#define PDB_CNT_CNT_SHIFT                        (0U)
-#define PDB_CNT_CNT(x)                           (((uint32_t)(((uint32_t)(x)) << PDB_CNT_CNT_SHIFT)) & PDB_CNT_CNT_MASK)
-
-/*! @name IDLY - Interrupt Delay register */
-#define PDB_IDLY_IDLY_MASK                       (0xFFFFU)
-#define PDB_IDLY_IDLY_SHIFT                      (0U)
-#define PDB_IDLY_IDLY(x)                         (((uint32_t)(((uint32_t)(x)) << PDB_IDLY_IDLY_SHIFT)) & PDB_IDLY_IDLY_MASK)
-
-/*! @name C1 - Channel n Control register 1 */
-#define PDB_C1_EN_MASK                           (0xFFU)
-#define PDB_C1_EN_SHIFT                          (0U)
-#define PDB_C1_EN(x)                             (((uint32_t)(((uint32_t)(x)) << PDB_C1_EN_SHIFT)) & PDB_C1_EN_MASK)
-#define PDB_C1_TOS_MASK                          (0xFF00U)
-#define PDB_C1_TOS_SHIFT                         (8U)
-#define PDB_C1_TOS(x)                            (((uint32_t)(((uint32_t)(x)) << PDB_C1_TOS_SHIFT)) & PDB_C1_TOS_MASK)
-#define PDB_C1_BB_MASK                           (0xFF0000U)
-#define PDB_C1_BB_SHIFT                          (16U)
-#define PDB_C1_BB(x)                             (((uint32_t)(((uint32_t)(x)) << PDB_C1_BB_SHIFT)) & PDB_C1_BB_MASK)
-
-/* The count of PDB_C1 */
-#define PDB_C1_COUNT                             (2U)
-
-/*! @name S - Channel n Status register */
-#define PDB_S_ERR_MASK                           (0xFFU)
-#define PDB_S_ERR_SHIFT                          (0U)
-#define PDB_S_ERR(x)                             (((uint32_t)(((uint32_t)(x)) << PDB_S_ERR_SHIFT)) & PDB_S_ERR_MASK)
-#define PDB_S_CF_MASK                            (0xFF0000U)
-#define PDB_S_CF_SHIFT                           (16U)
-#define PDB_S_CF(x)                              (((uint32_t)(((uint32_t)(x)) << PDB_S_CF_SHIFT)) & PDB_S_CF_MASK)
-
-/* The count of PDB_S */
-#define PDB_S_COUNT                              (2U)
-
-/*! @name DLY - Channel n Delay 0 register..Channel n Delay 1 register */
-#define PDB_DLY_DLY_MASK                         (0xFFFFU)
-#define PDB_DLY_DLY_SHIFT                        (0U)
-#define PDB_DLY_DLY(x)                           (((uint32_t)(((uint32_t)(x)) << PDB_DLY_DLY_SHIFT)) & PDB_DLY_DLY_MASK)
-
-/* The count of PDB_DLY */
-#define PDB_DLY_COUNT                            (2U)
-
-/* The count of PDB_DLY */
-#define PDB_DLY_COUNT2                           (2U)
-
-/*! @name INTC - DAC Interval Trigger n Control register */
-#define PDB_INTC_TOE_MASK                        (0x1U)
-#define PDB_INTC_TOE_SHIFT                       (0U)
-#define PDB_INTC_TOE(x)                          (((uint32_t)(((uint32_t)(x)) << PDB_INTC_TOE_SHIFT)) & PDB_INTC_TOE_MASK)
-#define PDB_INTC_EXT_MASK                        (0x2U)
-#define PDB_INTC_EXT_SHIFT                       (1U)
-#define PDB_INTC_EXT(x)                          (((uint32_t)(((uint32_t)(x)) << PDB_INTC_EXT_SHIFT)) & PDB_INTC_EXT_MASK)
-
-/* The count of PDB_INTC */
-#define PDB_INTC_COUNT                           (2U)
-
-/*! @name INT - DAC Interval n register */
-#define PDB_INT_INT_MASK                         (0xFFFFU)
-#define PDB_INT_INT_SHIFT                        (0U)
-#define PDB_INT_INT(x)                           (((uint32_t)(((uint32_t)(x)) << PDB_INT_INT_SHIFT)) & PDB_INT_INT_MASK)
-
-/* The count of PDB_INT */
-#define PDB_INT_COUNT                            (2U)
-
-/*! @name POEN - Pulse-Out n Enable register */
-#define PDB_POEN_POEN_MASK                       (0xFFU)
-#define PDB_POEN_POEN_SHIFT                      (0U)
-#define PDB_POEN_POEN(x)                         (((uint32_t)(((uint32_t)(x)) << PDB_POEN_POEN_SHIFT)) & PDB_POEN_POEN_MASK)
-
-/*! @name PODLY - Pulse-Out n Delay register */
-#define PDB_PODLY_DLY2_MASK                      (0xFFFFU)
-#define PDB_PODLY_DLY2_SHIFT                     (0U)
-#define PDB_PODLY_DLY2(x)                        (((uint32_t)(((uint32_t)(x)) << PDB_PODLY_DLY2_SHIFT)) & PDB_PODLY_DLY2_MASK)
-#define PDB_PODLY_DLY1_MASK                      (0xFFFF0000U)
-#define PDB_PODLY_DLY1_SHIFT                     (16U)
-#define PDB_PODLY_DLY1(x)                        (((uint32_t)(((uint32_t)(x)) << PDB_PODLY_DLY1_SHIFT)) & PDB_PODLY_DLY1_MASK)
-
-/* The count of PDB_PODLY */
-#define PDB_PODLY_COUNT                          (3U)
-
-
-/*!
- * @}
- */ /* end of group PDB_Register_Masks */
-
-
-/* PDB - Peripheral instance base addresses */
-/** Peripheral PDB0 base address */
-#define PDB0_BASE                                (0x40036000u)
-/** Peripheral PDB0 base pointer */
-#define PDB0                                     ((PDB_Type *)PDB0_BASE)
-/** Array initializer of PDB peripheral base addresses */
-#define PDB_BASE_ADDRS                           { PDB0_BASE }
-/** Array initializer of PDB peripheral base pointers */
-#define PDB_BASE_PTRS                            { PDB0 }
-/** Interrupt vectors for the PDB peripheral type */
-#define PDB_IRQS                                 { PDB0_IRQn }
-
-/*!
- * @}
- */ /* end of group PDB_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- PIT Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PIT_Peripheral_Access_Layer PIT Peripheral Access Layer
- * @{
- */
-
-/** PIT - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t MCR;                               /**< PIT Module Control Register, offset: 0x0 */
-       uint8_t RESERVED_0[252];
-  struct {                                         /* offset: 0x100, array step: 0x10 */
-    __IO uint32_t LDVAL;                             /**< Timer Load Value Register, array offset: 0x100, array step: 0x10 */
-    __I  uint32_t CVAL;                              /**< Current Timer Value Register, array offset: 0x104, array step: 0x10 */
-    __IO uint32_t TCTRL;                             /**< Timer Control Register, array offset: 0x108, array step: 0x10 */
-    __IO uint32_t TFLG;                              /**< Timer Flag Register, array offset: 0x10C, array step: 0x10 */
-  } CHANNEL[4];
-} PIT_Type;
-
-/* ----------------------------------------------------------------------------
-   -- PIT Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PIT_Register_Masks PIT Register Masks
- * @{
- */
-
-/*! @name MCR - PIT Module Control Register */
-#define PIT_MCR_FRZ_MASK                         (0x1U)
-#define PIT_MCR_FRZ_SHIFT                        (0U)
-#define PIT_MCR_FRZ(x)                           (((uint32_t)(((uint32_t)(x)) << PIT_MCR_FRZ_SHIFT)) & PIT_MCR_FRZ_MASK)
-#define PIT_MCR_MDIS_MASK                        (0x2U)
-#define PIT_MCR_MDIS_SHIFT                       (1U)
-#define PIT_MCR_MDIS(x)                          (((uint32_t)(((uint32_t)(x)) << PIT_MCR_MDIS_SHIFT)) & PIT_MCR_MDIS_MASK)
-
-/*! @name LDVAL - Timer Load Value Register */
-#define PIT_LDVAL_TSV_MASK                       (0xFFFFFFFFU)
-#define PIT_LDVAL_TSV_SHIFT                      (0U)
-#define PIT_LDVAL_TSV(x)                         (((uint32_t)(((uint32_t)(x)) << PIT_LDVAL_TSV_SHIFT)) & PIT_LDVAL_TSV_MASK)
-
-/* The count of PIT_LDVAL */
-#define PIT_LDVAL_COUNT                          (4U)
-
-/*! @name CVAL - Current Timer Value Register */
-#define PIT_CVAL_TVL_MASK                        (0xFFFFFFFFU)
-#define PIT_CVAL_TVL_SHIFT                       (0U)
-#define PIT_CVAL_TVL(x)                          (((uint32_t)(((uint32_t)(x)) << PIT_CVAL_TVL_SHIFT)) & PIT_CVAL_TVL_MASK)
-
-/* The count of PIT_CVAL */
-#define PIT_CVAL_COUNT                           (4U)
-
-/*! @name TCTRL - Timer Control Register */
-#define PIT_TCTRL_TEN_MASK                       (0x1U)
-#define PIT_TCTRL_TEN_SHIFT                      (0U)
-#define PIT_TCTRL_TEN(x)                         (((uint32_t)(((uint32_t)(x)) << PIT_TCTRL_TEN_SHIFT)) & PIT_TCTRL_TEN_MASK)
-#define PIT_TCTRL_TIE_MASK                       (0x2U)
-#define PIT_TCTRL_TIE_SHIFT                      (1U)
-#define PIT_TCTRL_TIE(x)                         (((uint32_t)(((uint32_t)(x)) << PIT_TCTRL_TIE_SHIFT)) & PIT_TCTRL_TIE_MASK)
-#define PIT_TCTRL_CHN_MASK                       (0x4U)
-#define PIT_TCTRL_CHN_SHIFT                      (2U)
-#define PIT_TCTRL_CHN(x)                         (((uint32_t)(((uint32_t)(x)) << PIT_TCTRL_CHN_SHIFT)) & PIT_TCTRL_CHN_MASK)
-
-/* The count of PIT_TCTRL */
-#define PIT_TCTRL_COUNT                          (4U)
-
-/*! @name TFLG - Timer Flag Register */
-#define PIT_TFLG_TIF_MASK                        (0x1U)
-#define PIT_TFLG_TIF_SHIFT                       (0U)
-#define PIT_TFLG_TIF(x)                          (((uint32_t)(((uint32_t)(x)) << PIT_TFLG_TIF_SHIFT)) & PIT_TFLG_TIF_MASK)
-
-/* The count of PIT_TFLG */
-#define PIT_TFLG_COUNT                           (4U)
-
-
-/*!
- * @}
- */ /* end of group PIT_Register_Masks */
-
-
-/* PIT - Peripheral instance base addresses */
-/** Peripheral PIT base address */
-#define PIT_BASE                                 (0x40037000u)
-/** Peripheral PIT base pointer */
-#define PIT                                      ((PIT_Type *)PIT_BASE)
-/** Array initializer of PIT peripheral base addresses */
-#define PIT_BASE_ADDRS                           { PIT_BASE }
-/** Array initializer of PIT peripheral base pointers */
-#define PIT_BASE_PTRS                            { PIT }
-/** Interrupt vectors for the PIT peripheral type */
-#define PIT_IRQS                                 { PIT0_IRQn, PIT1_IRQn, PIT2_IRQn, PIT3_IRQn }
-
-/*!
- * @}
- */ /* end of group PIT_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- PMC Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PMC_Peripheral_Access_Layer PMC Peripheral Access Layer
- * @{
- */
-
-/** PMC - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t LVDSC1;                             /**< Low Voltage Detect Status And Control 1 register, offset: 0x0 */
-  __IO uint8_t LVDSC2;                             /**< Low Voltage Detect Status And Control 2 register, offset: 0x1 */
-  __IO uint8_t REGSC;                              /**< Regulator Status And Control register, offset: 0x2 */
-} PMC_Type;
-
-/* ----------------------------------------------------------------------------
-   -- PMC Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PMC_Register_Masks PMC Register Masks
- * @{
- */
-
-/*! @name LVDSC1 - Low Voltage Detect Status And Control 1 register */
-#define PMC_LVDSC1_LVDV_MASK                     (0x3U)
-#define PMC_LVDSC1_LVDV_SHIFT                    (0U)
-#define PMC_LVDSC1_LVDV(x)                       (((uint8_t)(((uint8_t)(x)) << PMC_LVDSC1_LVDV_SHIFT)) & PMC_LVDSC1_LVDV_MASK)
-#define PMC_LVDSC1_LVDRE_MASK                    (0x10U)
-#define PMC_LVDSC1_LVDRE_SHIFT                   (4U)
-#define PMC_LVDSC1_LVDRE(x)                      (((uint8_t)(((uint8_t)(x)) << PMC_LVDSC1_LVDRE_SHIFT)) & PMC_LVDSC1_LVDRE_MASK)
-#define PMC_LVDSC1_LVDIE_MASK                    (0x20U)
-#define PMC_LVDSC1_LVDIE_SHIFT                   (5U)
-#define PMC_LVDSC1_LVDIE(x)                      (((uint8_t)(((uint8_t)(x)) << PMC_LVDSC1_LVDIE_SHIFT)) & PMC_LVDSC1_LVDIE_MASK)
-#define PMC_LVDSC1_LVDACK_MASK                   (0x40U)
-#define PMC_LVDSC1_LVDACK_SHIFT                  (6U)
-#define PMC_LVDSC1_LVDACK(x)                     (((uint8_t)(((uint8_t)(x)) << PMC_LVDSC1_LVDACK_SHIFT)) & PMC_LVDSC1_LVDACK_MASK)
-#define PMC_LVDSC1_LVDF_MASK                     (0x80U)
-#define PMC_LVDSC1_LVDF_SHIFT                    (7U)
-#define PMC_LVDSC1_LVDF(x)                       (((uint8_t)(((uint8_t)(x)) << PMC_LVDSC1_LVDF_SHIFT)) & PMC_LVDSC1_LVDF_MASK)
-
-/*! @name LVDSC2 - Low Voltage Detect Status And Control 2 register */
-#define PMC_LVDSC2_LVWV_MASK                     (0x3U)
-#define PMC_LVDSC2_LVWV_SHIFT                    (0U)
-#define PMC_LVDSC2_LVWV(x)                       (((uint8_t)(((uint8_t)(x)) << PMC_LVDSC2_LVWV_SHIFT)) & PMC_LVDSC2_LVWV_MASK)
-#define PMC_LVDSC2_LVWIE_MASK                    (0x20U)
-#define PMC_LVDSC2_LVWIE_SHIFT                   (5U)
-#define PMC_LVDSC2_LVWIE(x)                      (((uint8_t)(((uint8_t)(x)) << PMC_LVDSC2_LVWIE_SHIFT)) & PMC_LVDSC2_LVWIE_MASK)
-#define PMC_LVDSC2_LVWACK_MASK                   (0x40U)
-#define PMC_LVDSC2_LVWACK_SHIFT                  (6U)
-#define PMC_LVDSC2_LVWACK(x)                     (((uint8_t)(((uint8_t)(x)) << PMC_LVDSC2_LVWACK_SHIFT)) & PMC_LVDSC2_LVWACK_MASK)
-#define PMC_LVDSC2_LVWF_MASK                     (0x80U)
-#define PMC_LVDSC2_LVWF_SHIFT                    (7U)
-#define PMC_LVDSC2_LVWF(x)                       (((uint8_t)(((uint8_t)(x)) << PMC_LVDSC2_LVWF_SHIFT)) & PMC_LVDSC2_LVWF_MASK)
-
-/*! @name REGSC - Regulator Status And Control register */
-#define PMC_REGSC_BGBE_MASK                      (0x1U)
-#define PMC_REGSC_BGBE_SHIFT                     (0U)
-#define PMC_REGSC_BGBE(x)                        (((uint8_t)(((uint8_t)(x)) << PMC_REGSC_BGBE_SHIFT)) & PMC_REGSC_BGBE_MASK)
-#define PMC_REGSC_REGONS_MASK                    (0x4U)
-#define PMC_REGSC_REGONS_SHIFT                   (2U)
-#define PMC_REGSC_REGONS(x)                      (((uint8_t)(((uint8_t)(x)) << PMC_REGSC_REGONS_SHIFT)) & PMC_REGSC_REGONS_MASK)
-#define PMC_REGSC_ACKISO_MASK                    (0x8U)
-#define PMC_REGSC_ACKISO_SHIFT                   (3U)
-#define PMC_REGSC_ACKISO(x)                      (((uint8_t)(((uint8_t)(x)) << PMC_REGSC_ACKISO_SHIFT)) & PMC_REGSC_ACKISO_MASK)
-#define PMC_REGSC_BGEN_MASK                      (0x10U)
-#define PMC_REGSC_BGEN_SHIFT                     (4U)
-#define PMC_REGSC_BGEN(x)                        (((uint8_t)(((uint8_t)(x)) << PMC_REGSC_BGEN_SHIFT)) & PMC_REGSC_BGEN_MASK)
-
-
-/*!
- * @}
- */ /* end of group PMC_Register_Masks */
-
-
-/* PMC - Peripheral instance base addresses */
-/** Peripheral PMC base address */
-#define PMC_BASE                                 (0x4007D000u)
-/** Peripheral PMC base pointer */
-#define PMC                                      ((PMC_Type *)PMC_BASE)
-/** Array initializer of PMC peripheral base addresses */
-#define PMC_BASE_ADDRS                           { PMC_BASE }
-/** Array initializer of PMC peripheral base pointers */
-#define PMC_BASE_PTRS                            { PMC }
-/** Interrupt vectors for the PMC peripheral type */
-#define PMC_IRQS                                 { LVD_LVW_IRQn }
-
-/*!
- * @}
- */ /* end of group PMC_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- PORT Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PORT_Peripheral_Access_Layer PORT Peripheral Access Layer
- * @{
- */
-
-/** PORT - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t PCR[32];                           /**< Pin Control Register n, array offset: 0x0, array step: 0x4 */
-  __O  uint32_t GPCLR;                             /**< Global Pin Control Low Register, offset: 0x80 */
-  __O  uint32_t GPCHR;                             /**< Global Pin Control High Register, offset: 0x84 */
-       uint8_t RESERVED_0[24];
-  __IO uint32_t ISFR;                              /**< Interrupt Status Flag Register, offset: 0xA0 */
-       uint8_t RESERVED_1[28];
-  __IO uint32_t DFER;                              /**< Digital Filter Enable Register, offset: 0xC0 */
-  __IO uint32_t DFCR;                              /**< Digital Filter Clock Register, offset: 0xC4 */
-  __IO uint32_t DFWR;                              /**< Digital Filter Width Register, offset: 0xC8 */
-} PORT_Type;
-
-/* ----------------------------------------------------------------------------
-   -- PORT Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PORT_Register_Masks PORT Register Masks
- * @{
- */
-
-/*! @name PCR - Pin Control Register n */
-#define PORT_PCR_PS_MASK                         (0x1U)
-#define PORT_PCR_PS_SHIFT                        (0U)
-#define PORT_PCR_PS(x)                           (((uint32_t)(((uint32_t)(x)) << PORT_PCR_PS_SHIFT)) & PORT_PCR_PS_MASK)
-#define PORT_PCR_PE_MASK                         (0x2U)
-#define PORT_PCR_PE_SHIFT                        (1U)
-#define PORT_PCR_PE(x)                           (((uint32_t)(((uint32_t)(x)) << PORT_PCR_PE_SHIFT)) & PORT_PCR_PE_MASK)
-#define PORT_PCR_SRE_MASK                        (0x4U)
-#define PORT_PCR_SRE_SHIFT                       (2U)
-#define PORT_PCR_SRE(x)                          (((uint32_t)(((uint32_t)(x)) << PORT_PCR_SRE_SHIFT)) & PORT_PCR_SRE_MASK)
-#define PORT_PCR_PFE_MASK                        (0x10U)
-#define PORT_PCR_PFE_SHIFT                       (4U)
-#define PORT_PCR_PFE(x)                          (((uint32_t)(((uint32_t)(x)) << PORT_PCR_PFE_SHIFT)) & PORT_PCR_PFE_MASK)
-#define PORT_PCR_ODE_MASK                        (0x20U)
-#define PORT_PCR_ODE_SHIFT                       (5U)
-#define PORT_PCR_ODE(x)                          (((uint32_t)(((uint32_t)(x)) << PORT_PCR_ODE_SHIFT)) & PORT_PCR_ODE_MASK)
-#define PORT_PCR_DSE_MASK                        (0x40U)
-#define PORT_PCR_DSE_SHIFT                       (6U)
-#define PORT_PCR_DSE(x)                          (((uint32_t)(((uint32_t)(x)) << PORT_PCR_DSE_SHIFT)) & PORT_PCR_DSE_MASK)
-#define PORT_PCR_MUX_MASK                        (0x700U)
-#define PORT_PCR_MUX_SHIFT                       (8U)
-#define PORT_PCR_MUX(x)                          (((uint32_t)(((uint32_t)(x)) << PORT_PCR_MUX_SHIFT)) & PORT_PCR_MUX_MASK)
-#define PORT_PCR_LK_MASK                         (0x8000U)
-#define PORT_PCR_LK_SHIFT                        (15U)
-#define PORT_PCR_LK(x)                           (((uint32_t)(((uint32_t)(x)) << PORT_PCR_LK_SHIFT)) & PORT_PCR_LK_MASK)
-#define PORT_PCR_IRQC_MASK                       (0xF0000U)
-#define PORT_PCR_IRQC_SHIFT                      (16U)
-#define PORT_PCR_IRQC(x)                         (((uint32_t)(((uint32_t)(x)) << PORT_PCR_IRQC_SHIFT)) & PORT_PCR_IRQC_MASK)
-#define PORT_PCR_ISF_MASK                        (0x1000000U)
-#define PORT_PCR_ISF_SHIFT                       (24U)
-#define PORT_PCR_ISF(x)                          (((uint32_t)(((uint32_t)(x)) << PORT_PCR_ISF_SHIFT)) & PORT_PCR_ISF_MASK)
-
-/* The count of PORT_PCR */
-#define PORT_PCR_COUNT                           (32U)
-
-/*! @name GPCLR - Global Pin Control Low Register */
-#define PORT_GPCLR_GPWD_MASK                     (0xFFFFU)
-#define PORT_GPCLR_GPWD_SHIFT                    (0U)
-#define PORT_GPCLR_GPWD(x)                       (((uint32_t)(((uint32_t)(x)) << PORT_GPCLR_GPWD_SHIFT)) & PORT_GPCLR_GPWD_MASK)
-#define PORT_GPCLR_GPWE_MASK                     (0xFFFF0000U)
-#define PORT_GPCLR_GPWE_SHIFT                    (16U)
-#define PORT_GPCLR_GPWE(x)                       (((uint32_t)(((uint32_t)(x)) << PORT_GPCLR_GPWE_SHIFT)) & PORT_GPCLR_GPWE_MASK)
-
-/*! @name GPCHR - Global Pin Control High Register */
-#define PORT_GPCHR_GPWD_MASK                     (0xFFFFU)
-#define PORT_GPCHR_GPWD_SHIFT                    (0U)
-#define PORT_GPCHR_GPWD(x)                       (((uint32_t)(((uint32_t)(x)) << PORT_GPCHR_GPWD_SHIFT)) & PORT_GPCHR_GPWD_MASK)
-#define PORT_GPCHR_GPWE_MASK                     (0xFFFF0000U)
-#define PORT_GPCHR_GPWE_SHIFT                    (16U)
-#define PORT_GPCHR_GPWE(x)                       (((uint32_t)(((uint32_t)(x)) << PORT_GPCHR_GPWE_SHIFT)) & PORT_GPCHR_GPWE_MASK)
-
-/*! @name ISFR - Interrupt Status Flag Register */
-#define PORT_ISFR_ISF_MASK                       (0xFFFFFFFFU)
-#define PORT_ISFR_ISF_SHIFT                      (0U)
-#define PORT_ISFR_ISF(x)                         (((uint32_t)(((uint32_t)(x)) << PORT_ISFR_ISF_SHIFT)) & PORT_ISFR_ISF_MASK)
-
-/*! @name DFER - Digital Filter Enable Register */
-#define PORT_DFER_DFE_MASK                       (0xFFFFFFFFU)
-#define PORT_DFER_DFE_SHIFT                      (0U)
-#define PORT_DFER_DFE(x)                         (((uint32_t)(((uint32_t)(x)) << PORT_DFER_DFE_SHIFT)) & PORT_DFER_DFE_MASK)
-
-/*! @name DFCR - Digital Filter Clock Register */
-#define PORT_DFCR_CS_MASK                        (0x1U)
-#define PORT_DFCR_CS_SHIFT                       (0U)
-#define PORT_DFCR_CS(x)                          (((uint32_t)(((uint32_t)(x)) << PORT_DFCR_CS_SHIFT)) & PORT_DFCR_CS_MASK)
-
-/*! @name DFWR - Digital Filter Width Register */
-#define PORT_DFWR_FILT_MASK                      (0x1FU)
-#define PORT_DFWR_FILT_SHIFT                     (0U)
-#define PORT_DFWR_FILT(x)                        (((uint32_t)(((uint32_t)(x)) << PORT_DFWR_FILT_SHIFT)) & PORT_DFWR_FILT_MASK)
-
-
-/*!
- * @}
- */ /* end of group PORT_Register_Masks */
-
-
-/* PORT - Peripheral instance base addresses */
-/** Peripheral PORTA base address */
-#define PORTA_BASE                               (0x40049000u)
-/** Peripheral PORTA base pointer */
-#define PORTA                                    ((PORT_Type *)PORTA_BASE)
-/** Peripheral PORTB base address */
-#define PORTB_BASE                               (0x4004A000u)
-/** Peripheral PORTB base pointer */
-#define PORTB                                    ((PORT_Type *)PORTB_BASE)
-/** Peripheral PORTC base address */
-#define PORTC_BASE                               (0x4004B000u)
-/** Peripheral PORTC base pointer */
-#define PORTC                                    ((PORT_Type *)PORTC_BASE)
-/** Peripheral PORTD base address */
-#define PORTD_BASE                               (0x4004C000u)
-/** Peripheral PORTD base pointer */
-#define PORTD                                    ((PORT_Type *)PORTD_BASE)
-/** Peripheral PORTE base address */
-#define PORTE_BASE                               (0x4004D000u)
-/** Peripheral PORTE base pointer */
-#define PORTE                                    ((PORT_Type *)PORTE_BASE)
-/** Array initializer of PORT peripheral base addresses */
-#define PORT_BASE_ADDRS                          { PORTA_BASE, PORTB_BASE, PORTC_BASE, PORTD_BASE, PORTE_BASE }
-/** Array initializer of PORT peripheral base pointers */
-#define PORT_BASE_PTRS                           { PORTA, PORTB, PORTC, PORTD, PORTE }
-/** Interrupt vectors for the PORT peripheral type */
-#define PORT_IRQS                                { PORTA_IRQn, PORTB_IRQn, PORTC_IRQn, PORTD_IRQn, PORTE_IRQn }
-
-/*!
- * @}
- */ /* end of group PORT_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- RCM Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RCM_Peripheral_Access_Layer RCM Peripheral Access Layer
- * @{
- */
-
-/** RCM - Register Layout Typedef */
-typedef struct {
-  __I  uint8_t SRS0;                               /**< System Reset Status Register 0, offset: 0x0 */
-  __I  uint8_t SRS1;                               /**< System Reset Status Register 1, offset: 0x1 */
-       uint8_t RESERVED_0[2];
-  __IO uint8_t RPFC;                               /**< Reset Pin Filter Control register, offset: 0x4 */
-  __IO uint8_t RPFW;                               /**< Reset Pin Filter Width register, offset: 0x5 */
-       uint8_t RESERVED_1[1];
-  __I  uint8_t MR;                                 /**< Mode Register, offset: 0x7 */
-} RCM_Type;
-
-/* ----------------------------------------------------------------------------
-   -- RCM Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RCM_Register_Masks RCM Register Masks
- * @{
- */
-
-/*! @name SRS0 - System Reset Status Register 0 */
-#define RCM_SRS0_WAKEUP_MASK                     (0x1U)
-#define RCM_SRS0_WAKEUP_SHIFT                    (0U)
-#define RCM_SRS0_WAKEUP(x)                       (((uint8_t)(((uint8_t)(x)) << RCM_SRS0_WAKEUP_SHIFT)) & RCM_SRS0_WAKEUP_MASK)
-#define RCM_SRS0_LVD_MASK                        (0x2U)
-#define RCM_SRS0_LVD_SHIFT                       (1U)
-#define RCM_SRS0_LVD(x)                          (((uint8_t)(((uint8_t)(x)) << RCM_SRS0_LVD_SHIFT)) & RCM_SRS0_LVD_MASK)
-#define RCM_SRS0_LOC_MASK                        (0x4U)
-#define RCM_SRS0_LOC_SHIFT                       (2U)
-#define RCM_SRS0_LOC(x)                          (((uint8_t)(((uint8_t)(x)) << RCM_SRS0_LOC_SHIFT)) & RCM_SRS0_LOC_MASK)
-#define RCM_SRS0_LOL_MASK                        (0x8U)
-#define RCM_SRS0_LOL_SHIFT                       (3U)
-#define RCM_SRS0_LOL(x)                          (((uint8_t)(((uint8_t)(x)) << RCM_SRS0_LOL_SHIFT)) & RCM_SRS0_LOL_MASK)
-#define RCM_SRS0_WDOG_MASK                       (0x20U)
-#define RCM_SRS0_WDOG_SHIFT                      (5U)
-#define RCM_SRS0_WDOG(x)                         (((uint8_t)(((uint8_t)(x)) << RCM_SRS0_WDOG_SHIFT)) & RCM_SRS0_WDOG_MASK)
-#define RCM_SRS0_PIN_MASK                        (0x40U)
-#define RCM_SRS0_PIN_SHIFT                       (6U)
-#define RCM_SRS0_PIN(x)                          (((uint8_t)(((uint8_t)(x)) << RCM_SRS0_PIN_SHIFT)) & RCM_SRS0_PIN_MASK)
-#define RCM_SRS0_POR_MASK                        (0x80U)
-#define RCM_SRS0_POR_SHIFT                       (7U)
-#define RCM_SRS0_POR(x)                          (((uint8_t)(((uint8_t)(x)) << RCM_SRS0_POR_SHIFT)) & RCM_SRS0_POR_MASK)
-
-/*! @name SRS1 - System Reset Status Register 1 */
-#define RCM_SRS1_JTAG_MASK                       (0x1U)
-#define RCM_SRS1_JTAG_SHIFT                      (0U)
-#define RCM_SRS1_JTAG(x)                         (((uint8_t)(((uint8_t)(x)) << RCM_SRS1_JTAG_SHIFT)) & RCM_SRS1_JTAG_MASK)
-#define RCM_SRS1_LOCKUP_MASK                     (0x2U)
-#define RCM_SRS1_LOCKUP_SHIFT                    (1U)
-#define RCM_SRS1_LOCKUP(x)                       (((uint8_t)(((uint8_t)(x)) << RCM_SRS1_LOCKUP_SHIFT)) & RCM_SRS1_LOCKUP_MASK)
-#define RCM_SRS1_SW_MASK                         (0x4U)
-#define RCM_SRS1_SW_SHIFT                        (2U)
-#define RCM_SRS1_SW(x)                           (((uint8_t)(((uint8_t)(x)) << RCM_SRS1_SW_SHIFT)) & RCM_SRS1_SW_MASK)
-#define RCM_SRS1_MDM_AP_MASK                     (0x8U)
-#define RCM_SRS1_MDM_AP_SHIFT                    (3U)
-#define RCM_SRS1_MDM_AP(x)                       (((uint8_t)(((uint8_t)(x)) << RCM_SRS1_MDM_AP_SHIFT)) & RCM_SRS1_MDM_AP_MASK)
-#define RCM_SRS1_EZPT_MASK                       (0x10U)
-#define RCM_SRS1_EZPT_SHIFT                      (4U)
-#define RCM_SRS1_EZPT(x)                         (((uint8_t)(((uint8_t)(x)) << RCM_SRS1_EZPT_SHIFT)) & RCM_SRS1_EZPT_MASK)
-#define RCM_SRS1_SACKERR_MASK                    (0x20U)
-#define RCM_SRS1_SACKERR_SHIFT                   (5U)
-#define RCM_SRS1_SACKERR(x)                      (((uint8_t)(((uint8_t)(x)) << RCM_SRS1_SACKERR_SHIFT)) & RCM_SRS1_SACKERR_MASK)
-
-/*! @name RPFC - Reset Pin Filter Control register */
-#define RCM_RPFC_RSTFLTSRW_MASK                  (0x3U)
-#define RCM_RPFC_RSTFLTSRW_SHIFT                 (0U)
-#define RCM_RPFC_RSTFLTSRW(x)                    (((uint8_t)(((uint8_t)(x)) << RCM_RPFC_RSTFLTSRW_SHIFT)) & RCM_RPFC_RSTFLTSRW_MASK)
-#define RCM_RPFC_RSTFLTSS_MASK                   (0x4U)
-#define RCM_RPFC_RSTFLTSS_SHIFT                  (2U)
-#define RCM_RPFC_RSTFLTSS(x)                     (((uint8_t)(((uint8_t)(x)) << RCM_RPFC_RSTFLTSS_SHIFT)) & RCM_RPFC_RSTFLTSS_MASK)
-
-/*! @name RPFW - Reset Pin Filter Width register */
-#define RCM_RPFW_RSTFLTSEL_MASK                  (0x1FU)
-#define RCM_RPFW_RSTFLTSEL_SHIFT                 (0U)
-#define RCM_RPFW_RSTFLTSEL(x)                    (((uint8_t)(((uint8_t)(x)) << RCM_RPFW_RSTFLTSEL_SHIFT)) & RCM_RPFW_RSTFLTSEL_MASK)
-
-/*! @name MR - Mode Register */
-#define RCM_MR_EZP_MS_MASK                       (0x2U)
-#define RCM_MR_EZP_MS_SHIFT                      (1U)
-#define RCM_MR_EZP_MS(x)                         (((uint8_t)(((uint8_t)(x)) << RCM_MR_EZP_MS_SHIFT)) & RCM_MR_EZP_MS_MASK)
-
-
-/*!
- * @}
- */ /* end of group RCM_Register_Masks */
-
-
-/* RCM - Peripheral instance base addresses */
-/** Peripheral RCM base address */
-#define RCM_BASE                                 (0x4007F000u)
-/** Peripheral RCM base pointer */
-#define RCM                                      ((RCM_Type *)RCM_BASE)
-/** Array initializer of RCM peripheral base addresses */
-#define RCM_BASE_ADDRS                           { RCM_BASE }
-/** Array initializer of RCM peripheral base pointers */
-#define RCM_BASE_PTRS                            { RCM }
-
-/*!
- * @}
- */ /* end of group RCM_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- RFSYS Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RFSYS_Peripheral_Access_Layer RFSYS Peripheral Access Layer
- * @{
- */
-
-/** RFSYS - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t REG[8];                            /**< Register file register, array offset: 0x0, array step: 0x4 */
-} RFSYS_Type;
-
-/* ----------------------------------------------------------------------------
-   -- RFSYS Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RFSYS_Register_Masks RFSYS Register Masks
- * @{
- */
-
-/*! @name REG - Register file register */
-#define RFSYS_REG_LL_MASK                        (0xFFU)
-#define RFSYS_REG_LL_SHIFT                       (0U)
-#define RFSYS_REG_LL(x)                          (((uint32_t)(((uint32_t)(x)) << RFSYS_REG_LL_SHIFT)) & RFSYS_REG_LL_MASK)
-#define RFSYS_REG_LH_MASK                        (0xFF00U)
-#define RFSYS_REG_LH_SHIFT                       (8U)
-#define RFSYS_REG_LH(x)                          (((uint32_t)(((uint32_t)(x)) << RFSYS_REG_LH_SHIFT)) & RFSYS_REG_LH_MASK)
-#define RFSYS_REG_HL_MASK                        (0xFF0000U)
-#define RFSYS_REG_HL_SHIFT                       (16U)
-#define RFSYS_REG_HL(x)                          (((uint32_t)(((uint32_t)(x)) << RFSYS_REG_HL_SHIFT)) & RFSYS_REG_HL_MASK)
-#define RFSYS_REG_HH_MASK                        (0xFF000000U)
-#define RFSYS_REG_HH_SHIFT                       (24U)
-#define RFSYS_REG_HH(x)                          (((uint32_t)(((uint32_t)(x)) << RFSYS_REG_HH_SHIFT)) & RFSYS_REG_HH_MASK)
-
-/* The count of RFSYS_REG */
-#define RFSYS_REG_COUNT                          (8U)
-
-
-/*!
- * @}
- */ /* end of group RFSYS_Register_Masks */
-
-
-/* RFSYS - Peripheral instance base addresses */
-/** Peripheral RFSYS base address */
-#define RFSYS_BASE                               (0x40041000u)
-/** Peripheral RFSYS base pointer */
-#define RFSYS                                    ((RFSYS_Type *)RFSYS_BASE)
-/** Array initializer of RFSYS peripheral base addresses */
-#define RFSYS_BASE_ADDRS                         { RFSYS_BASE }
-/** Array initializer of RFSYS peripheral base pointers */
-#define RFSYS_BASE_PTRS                          { RFSYS }
-
-/*!
- * @}
- */ /* end of group RFSYS_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- RFVBAT Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RFVBAT_Peripheral_Access_Layer RFVBAT Peripheral Access Layer
- * @{
- */
-
-/** RFVBAT - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t REG[8];                            /**< VBAT register file register, array offset: 0x0, array step: 0x4 */
-} RFVBAT_Type;
-
-/* ----------------------------------------------------------------------------
-   -- RFVBAT Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RFVBAT_Register_Masks RFVBAT Register Masks
- * @{
- */
-
-/*! @name REG - VBAT register file register */
-#define RFVBAT_REG_LL_MASK                       (0xFFU)
-#define RFVBAT_REG_LL_SHIFT                      (0U)
-#define RFVBAT_REG_LL(x)                         (((uint32_t)(((uint32_t)(x)) << RFVBAT_REG_LL_SHIFT)) & RFVBAT_REG_LL_MASK)
-#define RFVBAT_REG_LH_MASK                       (0xFF00U)
-#define RFVBAT_REG_LH_SHIFT                      (8U)
-#define RFVBAT_REG_LH(x)                         (((uint32_t)(((uint32_t)(x)) << RFVBAT_REG_LH_SHIFT)) & RFVBAT_REG_LH_MASK)
-#define RFVBAT_REG_HL_MASK                       (0xFF0000U)
-#define RFVBAT_REG_HL_SHIFT                      (16U)
-#define RFVBAT_REG_HL(x)                         (((uint32_t)(((uint32_t)(x)) << RFVBAT_REG_HL_SHIFT)) & RFVBAT_REG_HL_MASK)
-#define RFVBAT_REG_HH_MASK                       (0xFF000000U)
-#define RFVBAT_REG_HH_SHIFT                      (24U)
-#define RFVBAT_REG_HH(x)                         (((uint32_t)(((uint32_t)(x)) << RFVBAT_REG_HH_SHIFT)) & RFVBAT_REG_HH_MASK)
-
-/* The count of RFVBAT_REG */
-#define RFVBAT_REG_COUNT                         (8U)
-
-
-/*!
- * @}
- */ /* end of group RFVBAT_Register_Masks */
-
-
-/* RFVBAT - Peripheral instance base addresses */
-/** Peripheral RFVBAT base address */
-#define RFVBAT_BASE                              (0x4003E000u)
-/** Peripheral RFVBAT base pointer */
-#define RFVBAT                                   ((RFVBAT_Type *)RFVBAT_BASE)
-/** Array initializer of RFVBAT peripheral base addresses */
-#define RFVBAT_BASE_ADDRS                        { RFVBAT_BASE }
-/** Array initializer of RFVBAT peripheral base pointers */
-#define RFVBAT_BASE_PTRS                         { RFVBAT }
-
-/*!
- * @}
- */ /* end of group RFVBAT_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- RNG Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RNG_Peripheral_Access_Layer RNG Peripheral Access Layer
- * @{
- */
-
-/** RNG - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t CR;                                /**< RNGA Control Register, offset: 0x0 */
-  __I  uint32_t SR;                                /**< RNGA Status Register, offset: 0x4 */
-  __O  uint32_t ER;                                /**< RNGA Entropy Register, offset: 0x8 */
-  __I  uint32_t OR;                                /**< RNGA Output Register, offset: 0xC */
-} RNG_Type;
-
-/* ----------------------------------------------------------------------------
-   -- RNG Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RNG_Register_Masks RNG Register Masks
- * @{
- */
-
-/*! @name CR - RNGA Control Register */
-#define RNG_CR_GO_MASK                           (0x1U)
-#define RNG_CR_GO_SHIFT                          (0U)
-#define RNG_CR_GO(x)                             (((uint32_t)(((uint32_t)(x)) << RNG_CR_GO_SHIFT)) & RNG_CR_GO_MASK)
-#define RNG_CR_HA_MASK                           (0x2U)
-#define RNG_CR_HA_SHIFT                          (1U)
-#define RNG_CR_HA(x)                             (((uint32_t)(((uint32_t)(x)) << RNG_CR_HA_SHIFT)) & RNG_CR_HA_MASK)
-#define RNG_CR_INTM_MASK                         (0x4U)
-#define RNG_CR_INTM_SHIFT                        (2U)
-#define RNG_CR_INTM(x)                           (((uint32_t)(((uint32_t)(x)) << RNG_CR_INTM_SHIFT)) & RNG_CR_INTM_MASK)
-#define RNG_CR_CLRI_MASK                         (0x8U)
-#define RNG_CR_CLRI_SHIFT                        (3U)
-#define RNG_CR_CLRI(x)                           (((uint32_t)(((uint32_t)(x)) << RNG_CR_CLRI_SHIFT)) & RNG_CR_CLRI_MASK)
-#define RNG_CR_SLP_MASK                          (0x10U)
-#define RNG_CR_SLP_SHIFT                         (4U)
-#define RNG_CR_SLP(x)                            (((uint32_t)(((uint32_t)(x)) << RNG_CR_SLP_SHIFT)) & RNG_CR_SLP_MASK)
-
-/*! @name SR - RNGA Status Register */
-#define RNG_SR_SECV_MASK                         (0x1U)
-#define RNG_SR_SECV_SHIFT                        (0U)
-#define RNG_SR_SECV(x)                           (((uint32_t)(((uint32_t)(x)) << RNG_SR_SECV_SHIFT)) & RNG_SR_SECV_MASK)
-#define RNG_SR_LRS_MASK                          (0x2U)
-#define RNG_SR_LRS_SHIFT                         (1U)
-#define RNG_SR_LRS(x)                            (((uint32_t)(((uint32_t)(x)) << RNG_SR_LRS_SHIFT)) & RNG_SR_LRS_MASK)
-#define RNG_SR_ORU_MASK                          (0x4U)
-#define RNG_SR_ORU_SHIFT                         (2U)
-#define RNG_SR_ORU(x)                            (((uint32_t)(((uint32_t)(x)) << RNG_SR_ORU_SHIFT)) & RNG_SR_ORU_MASK)
-#define RNG_SR_ERRI_MASK                         (0x8U)
-#define RNG_SR_ERRI_SHIFT                        (3U)
-#define RNG_SR_ERRI(x)                           (((uint32_t)(((uint32_t)(x)) << RNG_SR_ERRI_SHIFT)) & RNG_SR_ERRI_MASK)
-#define RNG_SR_SLP_MASK                          (0x10U)
-#define RNG_SR_SLP_SHIFT                         (4U)
-#define RNG_SR_SLP(x)                            (((uint32_t)(((uint32_t)(x)) << RNG_SR_SLP_SHIFT)) & RNG_SR_SLP_MASK)
-#define RNG_SR_OREG_LVL_MASK                     (0xFF00U)
-#define RNG_SR_OREG_LVL_SHIFT                    (8U)
-#define RNG_SR_OREG_LVL(x)                       (((uint32_t)(((uint32_t)(x)) << RNG_SR_OREG_LVL_SHIFT)) & RNG_SR_OREG_LVL_MASK)
-#define RNG_SR_OREG_SIZE_MASK                    (0xFF0000U)
-#define RNG_SR_OREG_SIZE_SHIFT                   (16U)
-#define RNG_SR_OREG_SIZE(x)                      (((uint32_t)(((uint32_t)(x)) << RNG_SR_OREG_SIZE_SHIFT)) & RNG_SR_OREG_SIZE_MASK)
-
-/*! @name ER - RNGA Entropy Register */
-#define RNG_ER_EXT_ENT_MASK                      (0xFFFFFFFFU)
-#define RNG_ER_EXT_ENT_SHIFT                     (0U)
-#define RNG_ER_EXT_ENT(x)                        (((uint32_t)(((uint32_t)(x)) << RNG_ER_EXT_ENT_SHIFT)) & RNG_ER_EXT_ENT_MASK)
-
-/*! @name OR - RNGA Output Register */
-#define RNG_OR_RANDOUT_MASK                      (0xFFFFFFFFU)
-#define RNG_OR_RANDOUT_SHIFT                     (0U)
-#define RNG_OR_RANDOUT(x)                        (((uint32_t)(((uint32_t)(x)) << RNG_OR_RANDOUT_SHIFT)) & RNG_OR_RANDOUT_MASK)
-
-
-/*!
- * @}
- */ /* end of group RNG_Register_Masks */
-
-
-/* RNG - Peripheral instance base addresses */
-/** Peripheral RNG base address */
-#define RNG_BASE                                 (0x40029000u)
-/** Peripheral RNG base pointer */
-#define RNG                                      ((RNG_Type *)RNG_BASE)
-/** Array initializer of RNG peripheral base addresses */
-#define RNG_BASE_ADDRS                           { RNG_BASE }
-/** Array initializer of RNG peripheral base pointers */
-#define RNG_BASE_PTRS                            { RNG }
-/** Interrupt vectors for the RNG peripheral type */
-#define RNG_IRQS                                 { RNG_IRQn }
-
-/*!
- * @}
- */ /* end of group RNG_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- RTC Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RTC_Peripheral_Access_Layer RTC Peripheral Access Layer
- * @{
- */
-
-/** RTC - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t TSR;                               /**< RTC Time Seconds Register, offset: 0x0 */
-  __IO uint32_t TPR;                               /**< RTC Time Prescaler Register, offset: 0x4 */
-  __IO uint32_t TAR;                               /**< RTC Time Alarm Register, offset: 0x8 */
-  __IO uint32_t TCR;                               /**< RTC Time Compensation Register, offset: 0xC */
-  __IO uint32_t CR;                                /**< RTC Control Register, offset: 0x10 */
-  __IO uint32_t SR;                                /**< RTC Status Register, offset: 0x14 */
-  __IO uint32_t LR;                                /**< RTC Lock Register, offset: 0x18 */
-  __IO uint32_t IER;                               /**< RTC Interrupt Enable Register, offset: 0x1C */
-       uint8_t RESERVED_0[2016];
-  __IO uint32_t WAR;                               /**< RTC Write Access Register, offset: 0x800 */
-  __IO uint32_t RAR;                               /**< RTC Read Access Register, offset: 0x804 */
-} RTC_Type;
-
-/* ----------------------------------------------------------------------------
-   -- RTC Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RTC_Register_Masks RTC Register Masks
- * @{
- */
-
-/*! @name TSR - RTC Time Seconds Register */
-#define RTC_TSR_TSR_MASK                         (0xFFFFFFFFU)
-#define RTC_TSR_TSR_SHIFT                        (0U)
-#define RTC_TSR_TSR(x)                           (((uint32_t)(((uint32_t)(x)) << RTC_TSR_TSR_SHIFT)) & RTC_TSR_TSR_MASK)
-
-/*! @name TPR - RTC Time Prescaler Register */
-#define RTC_TPR_TPR_MASK                         (0xFFFFU)
-#define RTC_TPR_TPR_SHIFT                        (0U)
-#define RTC_TPR_TPR(x)                           (((uint32_t)(((uint32_t)(x)) << RTC_TPR_TPR_SHIFT)) & RTC_TPR_TPR_MASK)
-
-/*! @name TAR - RTC Time Alarm Register */
-#define RTC_TAR_TAR_MASK                         (0xFFFFFFFFU)
-#define RTC_TAR_TAR_SHIFT                        (0U)
-#define RTC_TAR_TAR(x)                           (((uint32_t)(((uint32_t)(x)) << RTC_TAR_TAR_SHIFT)) & RTC_TAR_TAR_MASK)
-
-/*! @name TCR - RTC Time Compensation Register */
-#define RTC_TCR_TCR_MASK                         (0xFFU)
-#define RTC_TCR_TCR_SHIFT                        (0U)
-#define RTC_TCR_TCR(x)                           (((uint32_t)(((uint32_t)(x)) << RTC_TCR_TCR_SHIFT)) & RTC_TCR_TCR_MASK)
-#define RTC_TCR_CIR_MASK                         (0xFF00U)
-#define RTC_TCR_CIR_SHIFT                        (8U)
-#define RTC_TCR_CIR(x)                           (((uint32_t)(((uint32_t)(x)) << RTC_TCR_CIR_SHIFT)) & RTC_TCR_CIR_MASK)
-#define RTC_TCR_TCV_MASK                         (0xFF0000U)
-#define RTC_TCR_TCV_SHIFT                        (16U)
-#define RTC_TCR_TCV(x)                           (((uint32_t)(((uint32_t)(x)) << RTC_TCR_TCV_SHIFT)) & RTC_TCR_TCV_MASK)
-#define RTC_TCR_CIC_MASK                         (0xFF000000U)
-#define RTC_TCR_CIC_SHIFT                        (24U)
-#define RTC_TCR_CIC(x)                           (((uint32_t)(((uint32_t)(x)) << RTC_TCR_CIC_SHIFT)) & RTC_TCR_CIC_MASK)
-
-/*! @name CR - RTC Control Register */
-#define RTC_CR_SWR_MASK                          (0x1U)
-#define RTC_CR_SWR_SHIFT                         (0U)
-#define RTC_CR_SWR(x)                            (((uint32_t)(((uint32_t)(x)) << RTC_CR_SWR_SHIFT)) & RTC_CR_SWR_MASK)
-#define RTC_CR_WPE_MASK                          (0x2U)
-#define RTC_CR_WPE_SHIFT                         (1U)
-#define RTC_CR_WPE(x)                            (((uint32_t)(((uint32_t)(x)) << RTC_CR_WPE_SHIFT)) & RTC_CR_WPE_MASK)
-#define RTC_CR_SUP_MASK                          (0x4U)
-#define RTC_CR_SUP_SHIFT                         (2U)
-#define RTC_CR_SUP(x)                            (((uint32_t)(((uint32_t)(x)) << RTC_CR_SUP_SHIFT)) & RTC_CR_SUP_MASK)
-#define RTC_CR_UM_MASK                           (0x8U)
-#define RTC_CR_UM_SHIFT                          (3U)
-#define RTC_CR_UM(x)                             (((uint32_t)(((uint32_t)(x)) << RTC_CR_UM_SHIFT)) & RTC_CR_UM_MASK)
-#define RTC_CR_WPS_MASK                          (0x10U)
-#define RTC_CR_WPS_SHIFT                         (4U)
-#define RTC_CR_WPS(x)                            (((uint32_t)(((uint32_t)(x)) << RTC_CR_WPS_SHIFT)) & RTC_CR_WPS_MASK)
-#define RTC_CR_OSCE_MASK                         (0x100U)
-#define RTC_CR_OSCE_SHIFT                        (8U)
-#define RTC_CR_OSCE(x)                           (((uint32_t)(((uint32_t)(x)) << RTC_CR_OSCE_SHIFT)) & RTC_CR_OSCE_MASK)
-#define RTC_CR_CLKO_MASK                         (0x200U)
-#define RTC_CR_CLKO_SHIFT                        (9U)
-#define RTC_CR_CLKO(x)                           (((uint32_t)(((uint32_t)(x)) << RTC_CR_CLKO_SHIFT)) & RTC_CR_CLKO_MASK)
-#define RTC_CR_SC16P_MASK                        (0x400U)
-#define RTC_CR_SC16P_SHIFT                       (10U)
-#define RTC_CR_SC16P(x)                          (((uint32_t)(((uint32_t)(x)) << RTC_CR_SC16P_SHIFT)) & RTC_CR_SC16P_MASK)
-#define RTC_CR_SC8P_MASK                         (0x800U)
-#define RTC_CR_SC8P_SHIFT                        (11U)
-#define RTC_CR_SC8P(x)                           (((uint32_t)(((uint32_t)(x)) << RTC_CR_SC8P_SHIFT)) & RTC_CR_SC8P_MASK)
-#define RTC_CR_SC4P_MASK                         (0x1000U)
-#define RTC_CR_SC4P_SHIFT                        (12U)
-#define RTC_CR_SC4P(x)                           (((uint32_t)(((uint32_t)(x)) << RTC_CR_SC4P_SHIFT)) & RTC_CR_SC4P_MASK)
-#define RTC_CR_SC2P_MASK                         (0x2000U)
-#define RTC_CR_SC2P_SHIFT                        (13U)
-#define RTC_CR_SC2P(x)                           (((uint32_t)(((uint32_t)(x)) << RTC_CR_SC2P_SHIFT)) & RTC_CR_SC2P_MASK)
-
-/*! @name SR - RTC Status Register */
-#define RTC_SR_TIF_MASK                          (0x1U)
-#define RTC_SR_TIF_SHIFT                         (0U)
-#define RTC_SR_TIF(x)                            (((uint32_t)(((uint32_t)(x)) << RTC_SR_TIF_SHIFT)) & RTC_SR_TIF_MASK)
-#define RTC_SR_TOF_MASK                          (0x2U)
-#define RTC_SR_TOF_SHIFT                         (1U)
-#define RTC_SR_TOF(x)                            (((uint32_t)(((uint32_t)(x)) << RTC_SR_TOF_SHIFT)) & RTC_SR_TOF_MASK)
-#define RTC_SR_TAF_MASK                          (0x4U)
-#define RTC_SR_TAF_SHIFT                         (2U)
-#define RTC_SR_TAF(x)                            (((uint32_t)(((uint32_t)(x)) << RTC_SR_TAF_SHIFT)) & RTC_SR_TAF_MASK)
-#define RTC_SR_TCE_MASK                          (0x10U)
-#define RTC_SR_TCE_SHIFT                         (4U)
-#define RTC_SR_TCE(x)                            (((uint32_t)(((uint32_t)(x)) << RTC_SR_TCE_SHIFT)) & RTC_SR_TCE_MASK)
-
-/*! @name LR - RTC Lock Register */
-#define RTC_LR_TCL_MASK                          (0x8U)
-#define RTC_LR_TCL_SHIFT                         (3U)
-#define RTC_LR_TCL(x)                            (((uint32_t)(((uint32_t)(x)) << RTC_LR_TCL_SHIFT)) & RTC_LR_TCL_MASK)
-#define RTC_LR_CRL_MASK                          (0x10U)
-#define RTC_LR_CRL_SHIFT                         (4U)
-#define RTC_LR_CRL(x)                            (((uint32_t)(((uint32_t)(x)) << RTC_LR_CRL_SHIFT)) & RTC_LR_CRL_MASK)
-#define RTC_LR_SRL_MASK                          (0x20U)
-#define RTC_LR_SRL_SHIFT                         (5U)
-#define RTC_LR_SRL(x)                            (((uint32_t)(((uint32_t)(x)) << RTC_LR_SRL_SHIFT)) & RTC_LR_SRL_MASK)
-#define RTC_LR_LRL_MASK                          (0x40U)
-#define RTC_LR_LRL_SHIFT                         (6U)
-#define RTC_LR_LRL(x)                            (((uint32_t)(((uint32_t)(x)) << RTC_LR_LRL_SHIFT)) & RTC_LR_LRL_MASK)
-
-/*! @name IER - RTC Interrupt Enable Register */
-#define RTC_IER_TIIE_MASK                        (0x1U)
-#define RTC_IER_TIIE_SHIFT                       (0U)
-#define RTC_IER_TIIE(x)                          (((uint32_t)(((uint32_t)(x)) << RTC_IER_TIIE_SHIFT)) & RTC_IER_TIIE_MASK)
-#define RTC_IER_TOIE_MASK                        (0x2U)
-#define RTC_IER_TOIE_SHIFT                       (1U)
-#define RTC_IER_TOIE(x)                          (((uint32_t)(((uint32_t)(x)) << RTC_IER_TOIE_SHIFT)) & RTC_IER_TOIE_MASK)
-#define RTC_IER_TAIE_MASK                        (0x4U)
-#define RTC_IER_TAIE_SHIFT                       (2U)
-#define RTC_IER_TAIE(x)                          (((uint32_t)(((uint32_t)(x)) << RTC_IER_TAIE_SHIFT)) & RTC_IER_TAIE_MASK)
-#define RTC_IER_TSIE_MASK                        (0x10U)
-#define RTC_IER_TSIE_SHIFT                       (4U)
-#define RTC_IER_TSIE(x)                          (((uint32_t)(((uint32_t)(x)) << RTC_IER_TSIE_SHIFT)) & RTC_IER_TSIE_MASK)
-#define RTC_IER_WPON_MASK                        (0x80U)
-#define RTC_IER_WPON_SHIFT                       (7U)
-#define RTC_IER_WPON(x)                          (((uint32_t)(((uint32_t)(x)) << RTC_IER_WPON_SHIFT)) & RTC_IER_WPON_MASK)
-
-/*! @name WAR - RTC Write Access Register */
-#define RTC_WAR_TSRW_MASK                        (0x1U)
-#define RTC_WAR_TSRW_SHIFT                       (0U)
-#define RTC_WAR_TSRW(x)                          (((uint32_t)(((uint32_t)(x)) << RTC_WAR_TSRW_SHIFT)) & RTC_WAR_TSRW_MASK)
-#define RTC_WAR_TPRW_MASK                        (0x2U)
-#define RTC_WAR_TPRW_SHIFT                       (1U)
-#define RTC_WAR_TPRW(x)                          (((uint32_t)(((uint32_t)(x)) << RTC_WAR_TPRW_SHIFT)) & RTC_WAR_TPRW_MASK)
-#define RTC_WAR_TARW_MASK                        (0x4U)
-#define RTC_WAR_TARW_SHIFT                       (2U)
-#define RTC_WAR_TARW(x)                          (((uint32_t)(((uint32_t)(x)) << RTC_WAR_TARW_SHIFT)) & RTC_WAR_TARW_MASK)
-#define RTC_WAR_TCRW_MASK                        (0x8U)
-#define RTC_WAR_TCRW_SHIFT                       (3U)
-#define RTC_WAR_TCRW(x)                          (((uint32_t)(((uint32_t)(x)) << RTC_WAR_TCRW_SHIFT)) & RTC_WAR_TCRW_MASK)
-#define RTC_WAR_CRW_MASK                         (0x10U)
-#define RTC_WAR_CRW_SHIFT                        (4U)
-#define RTC_WAR_CRW(x)                           (((uint32_t)(((uint32_t)(x)) << RTC_WAR_CRW_SHIFT)) & RTC_WAR_CRW_MASK)
-#define RTC_WAR_SRW_MASK                         (0x20U)
-#define RTC_WAR_SRW_SHIFT                        (5U)
-#define RTC_WAR_SRW(x)                           (((uint32_t)(((uint32_t)(x)) << RTC_WAR_SRW_SHIFT)) & RTC_WAR_SRW_MASK)
-#define RTC_WAR_LRW_MASK                         (0x40U)
-#define RTC_WAR_LRW_SHIFT                        (6U)
-#define RTC_WAR_LRW(x)                           (((uint32_t)(((uint32_t)(x)) << RTC_WAR_LRW_SHIFT)) & RTC_WAR_LRW_MASK)
-#define RTC_WAR_IERW_MASK                        (0x80U)
-#define RTC_WAR_IERW_SHIFT                       (7U)
-#define RTC_WAR_IERW(x)                          (((uint32_t)(((uint32_t)(x)) << RTC_WAR_IERW_SHIFT)) & RTC_WAR_IERW_MASK)
-
-/*! @name RAR - RTC Read Access Register */
-#define RTC_RAR_TSRR_MASK                        (0x1U)
-#define RTC_RAR_TSRR_SHIFT                       (0U)
-#define RTC_RAR_TSRR(x)                          (((uint32_t)(((uint32_t)(x)) << RTC_RAR_TSRR_SHIFT)) & RTC_RAR_TSRR_MASK)
-#define RTC_RAR_TPRR_MASK                        (0x2U)
-#define RTC_RAR_TPRR_SHIFT                       (1U)
-#define RTC_RAR_TPRR(x)                          (((uint32_t)(((uint32_t)(x)) << RTC_RAR_TPRR_SHIFT)) & RTC_RAR_TPRR_MASK)
-#define RTC_RAR_TARR_MASK                        (0x4U)
-#define RTC_RAR_TARR_SHIFT                       (2U)
-#define RTC_RAR_TARR(x)                          (((uint32_t)(((uint32_t)(x)) << RTC_RAR_TARR_SHIFT)) & RTC_RAR_TARR_MASK)
-#define RTC_RAR_TCRR_MASK                        (0x8U)
-#define RTC_RAR_TCRR_SHIFT                       (3U)
-#define RTC_RAR_TCRR(x)                          (((uint32_t)(((uint32_t)(x)) << RTC_RAR_TCRR_SHIFT)) & RTC_RAR_TCRR_MASK)
-#define RTC_RAR_CRR_MASK                         (0x10U)
-#define RTC_RAR_CRR_SHIFT                        (4U)
-#define RTC_RAR_CRR(x)                           (((uint32_t)(((uint32_t)(x)) << RTC_RAR_CRR_SHIFT)) & RTC_RAR_CRR_MASK)
-#define RTC_RAR_SRR_MASK                         (0x20U)
-#define RTC_RAR_SRR_SHIFT                        (5U)
-#define RTC_RAR_SRR(x)                           (((uint32_t)(((uint32_t)(x)) << RTC_RAR_SRR_SHIFT)) & RTC_RAR_SRR_MASK)
-#define RTC_RAR_LRR_MASK                         (0x40U)
-#define RTC_RAR_LRR_SHIFT                        (6U)
-#define RTC_RAR_LRR(x)                           (((uint32_t)(((uint32_t)(x)) << RTC_RAR_LRR_SHIFT)) & RTC_RAR_LRR_MASK)
-#define RTC_RAR_IERR_MASK                        (0x80U)
-#define RTC_RAR_IERR_SHIFT                       (7U)
-#define RTC_RAR_IERR(x)                          (((uint32_t)(((uint32_t)(x)) << RTC_RAR_IERR_SHIFT)) & RTC_RAR_IERR_MASK)
-
-
-/*!
- * @}
- */ /* end of group RTC_Register_Masks */
-
-
-/* RTC - Peripheral instance base addresses */
-/** Peripheral RTC base address */
-#define RTC_BASE                                 (0x4003D000u)
-/** Peripheral RTC base pointer */
-#define RTC                                      ((RTC_Type *)RTC_BASE)
-/** Array initializer of RTC peripheral base addresses */
-#define RTC_BASE_ADDRS                           { RTC_BASE }
-/** Array initializer of RTC peripheral base pointers */
-#define RTC_BASE_PTRS                            { RTC }
-/** Interrupt vectors for the RTC peripheral type */
-#define RTC_IRQS                                 { RTC_IRQn }
-#define RTC_SECONDS_IRQS                         { RTC_Seconds_IRQn }
-
-/*!
- * @}
- */ /* end of group RTC_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- SDHC Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SDHC_Peripheral_Access_Layer SDHC Peripheral Access Layer
- * @{
- */
-
-/** SDHC - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t DSADDR;                            /**< DMA System Address register, offset: 0x0 */
-  __IO uint32_t BLKATTR;                           /**< Block Attributes register, offset: 0x4 */
-  __IO uint32_t CMDARG;                            /**< Command Argument register, offset: 0x8 */
-  __IO uint32_t XFERTYP;                           /**< Transfer Type register, offset: 0xC */
-  __I  uint32_t CMDRSP[4];                         /**< Command Response 0..Command Response 3, array offset: 0x10, array step: 0x4 */
-  __IO uint32_t DATPORT;                           /**< Buffer Data Port register, offset: 0x20 */
-  __I  uint32_t PRSSTAT;                           /**< Present State register, offset: 0x24 */
-  __IO uint32_t PROCTL;                            /**< Protocol Control register, offset: 0x28 */
-  __IO uint32_t SYSCTL;                            /**< System Control register, offset: 0x2C */
-  __IO uint32_t IRQSTAT;                           /**< Interrupt Status register, offset: 0x30 */
-  __IO uint32_t IRQSTATEN;                         /**< Interrupt Status Enable register, offset: 0x34 */
-  __IO uint32_t IRQSIGEN;                          /**< Interrupt Signal Enable register, offset: 0x38 */
-  __I  uint32_t AC12ERR;                           /**< Auto CMD12 Error Status Register, offset: 0x3C */
-  __I  uint32_t HTCAPBLT;                          /**< Host Controller Capabilities, offset: 0x40 */
-  __IO uint32_t WML;                               /**< Watermark Level Register, offset: 0x44 */
-       uint8_t RESERVED_0[8];
-  __O  uint32_t FEVT;                              /**< Force Event register, offset: 0x50 */
-  __I  uint32_t ADMAES;                            /**< ADMA Error Status register, offset: 0x54 */
-  __IO uint32_t ADSADDR;                           /**< ADMA System Addressregister, offset: 0x58 */
-       uint8_t RESERVED_1[100];
-  __IO uint32_t VENDOR;                            /**< Vendor Specific register, offset: 0xC0 */
-  __IO uint32_t MMCBOOT;                           /**< MMC Boot register, offset: 0xC4 */
-       uint8_t RESERVED_2[52];
-  __I  uint32_t HOSTVER;                           /**< Host Controller Version, offset: 0xFC */
-} SDHC_Type;
-
-/* ----------------------------------------------------------------------------
-   -- SDHC Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SDHC_Register_Masks SDHC Register Masks
- * @{
- */
-
-/*! @name DSADDR - DMA System Address register */
-#define SDHC_DSADDR_DSADDR_MASK                  (0xFFFFFFFCU)
-#define SDHC_DSADDR_DSADDR_SHIFT                 (2U)
-#define SDHC_DSADDR_DSADDR(x)                    (((uint32_t)(((uint32_t)(x)) << SDHC_DSADDR_DSADDR_SHIFT)) & SDHC_DSADDR_DSADDR_MASK)
-
-/*! @name BLKATTR - Block Attributes register */
-#define SDHC_BLKATTR_BLKSIZE_MASK                (0x1FFFU)
-#define SDHC_BLKATTR_BLKSIZE_SHIFT               (0U)
-#define SDHC_BLKATTR_BLKSIZE(x)                  (((uint32_t)(((uint32_t)(x)) << SDHC_BLKATTR_BLKSIZE_SHIFT)) & SDHC_BLKATTR_BLKSIZE_MASK)
-#define SDHC_BLKATTR_BLKCNT_MASK                 (0xFFFF0000U)
-#define SDHC_BLKATTR_BLKCNT_SHIFT                (16U)
-#define SDHC_BLKATTR_BLKCNT(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_BLKATTR_BLKCNT_SHIFT)) & SDHC_BLKATTR_BLKCNT_MASK)
-
-/*! @name CMDARG - Command Argument register */
-#define SDHC_CMDARG_CMDARG_MASK                  (0xFFFFFFFFU)
-#define SDHC_CMDARG_CMDARG_SHIFT                 (0U)
-#define SDHC_CMDARG_CMDARG(x)                    (((uint32_t)(((uint32_t)(x)) << SDHC_CMDARG_CMDARG_SHIFT)) & SDHC_CMDARG_CMDARG_MASK)
-
-/*! @name XFERTYP - Transfer Type register */
-#define SDHC_XFERTYP_DMAEN_MASK                  (0x1U)
-#define SDHC_XFERTYP_DMAEN_SHIFT                 (0U)
-#define SDHC_XFERTYP_DMAEN(x)                    (((uint32_t)(((uint32_t)(x)) << SDHC_XFERTYP_DMAEN_SHIFT)) & SDHC_XFERTYP_DMAEN_MASK)
-#define SDHC_XFERTYP_BCEN_MASK                   (0x2U)
-#define SDHC_XFERTYP_BCEN_SHIFT                  (1U)
-#define SDHC_XFERTYP_BCEN(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_XFERTYP_BCEN_SHIFT)) & SDHC_XFERTYP_BCEN_MASK)
-#define SDHC_XFERTYP_AC12EN_MASK                 (0x4U)
-#define SDHC_XFERTYP_AC12EN_SHIFT                (2U)
-#define SDHC_XFERTYP_AC12EN(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_XFERTYP_AC12EN_SHIFT)) & SDHC_XFERTYP_AC12EN_MASK)
-#define SDHC_XFERTYP_DTDSEL_MASK                 (0x10U)
-#define SDHC_XFERTYP_DTDSEL_SHIFT                (4U)
-#define SDHC_XFERTYP_DTDSEL(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_XFERTYP_DTDSEL_SHIFT)) & SDHC_XFERTYP_DTDSEL_MASK)
-#define SDHC_XFERTYP_MSBSEL_MASK                 (0x20U)
-#define SDHC_XFERTYP_MSBSEL_SHIFT                (5U)
-#define SDHC_XFERTYP_MSBSEL(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_XFERTYP_MSBSEL_SHIFT)) & SDHC_XFERTYP_MSBSEL_MASK)
-#define SDHC_XFERTYP_RSPTYP_MASK                 (0x30000U)
-#define SDHC_XFERTYP_RSPTYP_SHIFT                (16U)
-#define SDHC_XFERTYP_RSPTYP(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_XFERTYP_RSPTYP_SHIFT)) & SDHC_XFERTYP_RSPTYP_MASK)
-#define SDHC_XFERTYP_CCCEN_MASK                  (0x80000U)
-#define SDHC_XFERTYP_CCCEN_SHIFT                 (19U)
-#define SDHC_XFERTYP_CCCEN(x)                    (((uint32_t)(((uint32_t)(x)) << SDHC_XFERTYP_CCCEN_SHIFT)) & SDHC_XFERTYP_CCCEN_MASK)
-#define SDHC_XFERTYP_CICEN_MASK                  (0x100000U)
-#define SDHC_XFERTYP_CICEN_SHIFT                 (20U)
-#define SDHC_XFERTYP_CICEN(x)                    (((uint32_t)(((uint32_t)(x)) << SDHC_XFERTYP_CICEN_SHIFT)) & SDHC_XFERTYP_CICEN_MASK)
-#define SDHC_XFERTYP_DPSEL_MASK                  (0x200000U)
-#define SDHC_XFERTYP_DPSEL_SHIFT                 (21U)
-#define SDHC_XFERTYP_DPSEL(x)                    (((uint32_t)(((uint32_t)(x)) << SDHC_XFERTYP_DPSEL_SHIFT)) & SDHC_XFERTYP_DPSEL_MASK)
-#define SDHC_XFERTYP_CMDTYP_MASK                 (0xC00000U)
-#define SDHC_XFERTYP_CMDTYP_SHIFT                (22U)
-#define SDHC_XFERTYP_CMDTYP(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_XFERTYP_CMDTYP_SHIFT)) & SDHC_XFERTYP_CMDTYP_MASK)
-#define SDHC_XFERTYP_CMDINX_MASK                 (0x3F000000U)
-#define SDHC_XFERTYP_CMDINX_SHIFT                (24U)
-#define SDHC_XFERTYP_CMDINX(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_XFERTYP_CMDINX_SHIFT)) & SDHC_XFERTYP_CMDINX_MASK)
-
-/*! @name CMDRSP - Command Response 0..Command Response 3 */
-#define SDHC_CMDRSP_CMDRSP0_MASK                 (0xFFFFFFFFU)
-#define SDHC_CMDRSP_CMDRSP0_SHIFT                (0U)
-#define SDHC_CMDRSP_CMDRSP0(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_CMDRSP_CMDRSP0_SHIFT)) & SDHC_CMDRSP_CMDRSP0_MASK)
-#define SDHC_CMDRSP_CMDRSP1_MASK                 (0xFFFFFFFFU)
-#define SDHC_CMDRSP_CMDRSP1_SHIFT                (0U)
-#define SDHC_CMDRSP_CMDRSP1(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_CMDRSP_CMDRSP1_SHIFT)) & SDHC_CMDRSP_CMDRSP1_MASK)
-#define SDHC_CMDRSP_CMDRSP2_MASK                 (0xFFFFFFFFU)
-#define SDHC_CMDRSP_CMDRSP2_SHIFT                (0U)
-#define SDHC_CMDRSP_CMDRSP2(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_CMDRSP_CMDRSP2_SHIFT)) & SDHC_CMDRSP_CMDRSP2_MASK)
-#define SDHC_CMDRSP_CMDRSP3_MASK                 (0xFFFFFFFFU)
-#define SDHC_CMDRSP_CMDRSP3_SHIFT                (0U)
-#define SDHC_CMDRSP_CMDRSP3(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_CMDRSP_CMDRSP3_SHIFT)) & SDHC_CMDRSP_CMDRSP3_MASK)
-
-/* The count of SDHC_CMDRSP */
-#define SDHC_CMDRSP_COUNT                        (4U)
-
-/*! @name DATPORT - Buffer Data Port register */
-#define SDHC_DATPORT_DATCONT_MASK                (0xFFFFFFFFU)
-#define SDHC_DATPORT_DATCONT_SHIFT               (0U)
-#define SDHC_DATPORT_DATCONT(x)                  (((uint32_t)(((uint32_t)(x)) << SDHC_DATPORT_DATCONT_SHIFT)) & SDHC_DATPORT_DATCONT_MASK)
-
-/*! @name PRSSTAT - Present State register */
-#define SDHC_PRSSTAT_CIHB_MASK                   (0x1U)
-#define SDHC_PRSSTAT_CIHB_SHIFT                  (0U)
-#define SDHC_PRSSTAT_CIHB(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_PRSSTAT_CIHB_SHIFT)) & SDHC_PRSSTAT_CIHB_MASK)
-#define SDHC_PRSSTAT_CDIHB_MASK                  (0x2U)
-#define SDHC_PRSSTAT_CDIHB_SHIFT                 (1U)
-#define SDHC_PRSSTAT_CDIHB(x)                    (((uint32_t)(((uint32_t)(x)) << SDHC_PRSSTAT_CDIHB_SHIFT)) & SDHC_PRSSTAT_CDIHB_MASK)
-#define SDHC_PRSSTAT_DLA_MASK                    (0x4U)
-#define SDHC_PRSSTAT_DLA_SHIFT                   (2U)
-#define SDHC_PRSSTAT_DLA(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_PRSSTAT_DLA_SHIFT)) & SDHC_PRSSTAT_DLA_MASK)
-#define SDHC_PRSSTAT_SDSTB_MASK                  (0x8U)
-#define SDHC_PRSSTAT_SDSTB_SHIFT                 (3U)
-#define SDHC_PRSSTAT_SDSTB(x)                    (((uint32_t)(((uint32_t)(x)) << SDHC_PRSSTAT_SDSTB_SHIFT)) & SDHC_PRSSTAT_SDSTB_MASK)
-#define SDHC_PRSSTAT_IPGOFF_MASK                 (0x10U)
-#define SDHC_PRSSTAT_IPGOFF_SHIFT                (4U)
-#define SDHC_PRSSTAT_IPGOFF(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_PRSSTAT_IPGOFF_SHIFT)) & SDHC_PRSSTAT_IPGOFF_MASK)
-#define SDHC_PRSSTAT_HCKOFF_MASK                 (0x20U)
-#define SDHC_PRSSTAT_HCKOFF_SHIFT                (5U)
-#define SDHC_PRSSTAT_HCKOFF(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_PRSSTAT_HCKOFF_SHIFT)) & SDHC_PRSSTAT_HCKOFF_MASK)
-#define SDHC_PRSSTAT_PEROFF_MASK                 (0x40U)
-#define SDHC_PRSSTAT_PEROFF_SHIFT                (6U)
-#define SDHC_PRSSTAT_PEROFF(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_PRSSTAT_PEROFF_SHIFT)) & SDHC_PRSSTAT_PEROFF_MASK)
-#define SDHC_PRSSTAT_SDOFF_MASK                  (0x80U)
-#define SDHC_PRSSTAT_SDOFF_SHIFT                 (7U)
-#define SDHC_PRSSTAT_SDOFF(x)                    (((uint32_t)(((uint32_t)(x)) << SDHC_PRSSTAT_SDOFF_SHIFT)) & SDHC_PRSSTAT_SDOFF_MASK)
-#define SDHC_PRSSTAT_WTA_MASK                    (0x100U)
-#define SDHC_PRSSTAT_WTA_SHIFT                   (8U)
-#define SDHC_PRSSTAT_WTA(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_PRSSTAT_WTA_SHIFT)) & SDHC_PRSSTAT_WTA_MASK)
-#define SDHC_PRSSTAT_RTA_MASK                    (0x200U)
-#define SDHC_PRSSTAT_RTA_SHIFT                   (9U)
-#define SDHC_PRSSTAT_RTA(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_PRSSTAT_RTA_SHIFT)) & SDHC_PRSSTAT_RTA_MASK)
-#define SDHC_PRSSTAT_BWEN_MASK                   (0x400U)
-#define SDHC_PRSSTAT_BWEN_SHIFT                  (10U)
-#define SDHC_PRSSTAT_BWEN(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_PRSSTAT_BWEN_SHIFT)) & SDHC_PRSSTAT_BWEN_MASK)
-#define SDHC_PRSSTAT_BREN_MASK                   (0x800U)
-#define SDHC_PRSSTAT_BREN_SHIFT                  (11U)
-#define SDHC_PRSSTAT_BREN(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_PRSSTAT_BREN_SHIFT)) & SDHC_PRSSTAT_BREN_MASK)
-#define SDHC_PRSSTAT_CINS_MASK                   (0x10000U)
-#define SDHC_PRSSTAT_CINS_SHIFT                  (16U)
-#define SDHC_PRSSTAT_CINS(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_PRSSTAT_CINS_SHIFT)) & SDHC_PRSSTAT_CINS_MASK)
-#define SDHC_PRSSTAT_CLSL_MASK                   (0x800000U)
-#define SDHC_PRSSTAT_CLSL_SHIFT                  (23U)
-#define SDHC_PRSSTAT_CLSL(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_PRSSTAT_CLSL_SHIFT)) & SDHC_PRSSTAT_CLSL_MASK)
-#define SDHC_PRSSTAT_DLSL_MASK                   (0xFF000000U)
-#define SDHC_PRSSTAT_DLSL_SHIFT                  (24U)
-#define SDHC_PRSSTAT_DLSL(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_PRSSTAT_DLSL_SHIFT)) & SDHC_PRSSTAT_DLSL_MASK)
-
-/*! @name PROCTL - Protocol Control register */
-#define SDHC_PROCTL_LCTL_MASK                    (0x1U)
-#define SDHC_PROCTL_LCTL_SHIFT                   (0U)
-#define SDHC_PROCTL_LCTL(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_PROCTL_LCTL_SHIFT)) & SDHC_PROCTL_LCTL_MASK)
-#define SDHC_PROCTL_DTW_MASK                     (0x6U)
-#define SDHC_PROCTL_DTW_SHIFT                    (1U)
-#define SDHC_PROCTL_DTW(x)                       (((uint32_t)(((uint32_t)(x)) << SDHC_PROCTL_DTW_SHIFT)) & SDHC_PROCTL_DTW_MASK)
-#define SDHC_PROCTL_D3CD_MASK                    (0x8U)
-#define SDHC_PROCTL_D3CD_SHIFT                   (3U)
-#define SDHC_PROCTL_D3CD(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_PROCTL_D3CD_SHIFT)) & SDHC_PROCTL_D3CD_MASK)
-#define SDHC_PROCTL_EMODE_MASK                   (0x30U)
-#define SDHC_PROCTL_EMODE_SHIFT                  (4U)
-#define SDHC_PROCTL_EMODE(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_PROCTL_EMODE_SHIFT)) & SDHC_PROCTL_EMODE_MASK)
-#define SDHC_PROCTL_CDTL_MASK                    (0x40U)
-#define SDHC_PROCTL_CDTL_SHIFT                   (6U)
-#define SDHC_PROCTL_CDTL(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_PROCTL_CDTL_SHIFT)) & SDHC_PROCTL_CDTL_MASK)
-#define SDHC_PROCTL_CDSS_MASK                    (0x80U)
-#define SDHC_PROCTL_CDSS_SHIFT                   (7U)
-#define SDHC_PROCTL_CDSS(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_PROCTL_CDSS_SHIFT)) & SDHC_PROCTL_CDSS_MASK)
-#define SDHC_PROCTL_DMAS_MASK                    (0x300U)
-#define SDHC_PROCTL_DMAS_SHIFT                   (8U)
-#define SDHC_PROCTL_DMAS(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_PROCTL_DMAS_SHIFT)) & SDHC_PROCTL_DMAS_MASK)
-#define SDHC_PROCTL_SABGREQ_MASK                 (0x10000U)
-#define SDHC_PROCTL_SABGREQ_SHIFT                (16U)
-#define SDHC_PROCTL_SABGREQ(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_PROCTL_SABGREQ_SHIFT)) & SDHC_PROCTL_SABGREQ_MASK)
-#define SDHC_PROCTL_CREQ_MASK                    (0x20000U)
-#define SDHC_PROCTL_CREQ_SHIFT                   (17U)
-#define SDHC_PROCTL_CREQ(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_PROCTL_CREQ_SHIFT)) & SDHC_PROCTL_CREQ_MASK)
-#define SDHC_PROCTL_RWCTL_MASK                   (0x40000U)
-#define SDHC_PROCTL_RWCTL_SHIFT                  (18U)
-#define SDHC_PROCTL_RWCTL(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_PROCTL_RWCTL_SHIFT)) & SDHC_PROCTL_RWCTL_MASK)
-#define SDHC_PROCTL_IABG_MASK                    (0x80000U)
-#define SDHC_PROCTL_IABG_SHIFT                   (19U)
-#define SDHC_PROCTL_IABG(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_PROCTL_IABG_SHIFT)) & SDHC_PROCTL_IABG_MASK)
-#define SDHC_PROCTL_WECINT_MASK                  (0x1000000U)
-#define SDHC_PROCTL_WECINT_SHIFT                 (24U)
-#define SDHC_PROCTL_WECINT(x)                    (((uint32_t)(((uint32_t)(x)) << SDHC_PROCTL_WECINT_SHIFT)) & SDHC_PROCTL_WECINT_MASK)
-#define SDHC_PROCTL_WECINS_MASK                  (0x2000000U)
-#define SDHC_PROCTL_WECINS_SHIFT                 (25U)
-#define SDHC_PROCTL_WECINS(x)                    (((uint32_t)(((uint32_t)(x)) << SDHC_PROCTL_WECINS_SHIFT)) & SDHC_PROCTL_WECINS_MASK)
-#define SDHC_PROCTL_WECRM_MASK                   (0x4000000U)
-#define SDHC_PROCTL_WECRM_SHIFT                  (26U)
-#define SDHC_PROCTL_WECRM(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_PROCTL_WECRM_SHIFT)) & SDHC_PROCTL_WECRM_MASK)
-
-/*! @name SYSCTL - System Control register */
-#define SDHC_SYSCTL_IPGEN_MASK                   (0x1U)
-#define SDHC_SYSCTL_IPGEN_SHIFT                  (0U)
-#define SDHC_SYSCTL_IPGEN(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_SYSCTL_IPGEN_SHIFT)) & SDHC_SYSCTL_IPGEN_MASK)
-#define SDHC_SYSCTL_HCKEN_MASK                   (0x2U)
-#define SDHC_SYSCTL_HCKEN_SHIFT                  (1U)
-#define SDHC_SYSCTL_HCKEN(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_SYSCTL_HCKEN_SHIFT)) & SDHC_SYSCTL_HCKEN_MASK)
-#define SDHC_SYSCTL_PEREN_MASK                   (0x4U)
-#define SDHC_SYSCTL_PEREN_SHIFT                  (2U)
-#define SDHC_SYSCTL_PEREN(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_SYSCTL_PEREN_SHIFT)) & SDHC_SYSCTL_PEREN_MASK)
-#define SDHC_SYSCTL_SDCLKEN_MASK                 (0x8U)
-#define SDHC_SYSCTL_SDCLKEN_SHIFT                (3U)
-#define SDHC_SYSCTL_SDCLKEN(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_SYSCTL_SDCLKEN_SHIFT)) & SDHC_SYSCTL_SDCLKEN_MASK)
-#define SDHC_SYSCTL_DVS_MASK                     (0xF0U)
-#define SDHC_SYSCTL_DVS_SHIFT                    (4U)
-#define SDHC_SYSCTL_DVS(x)                       (((uint32_t)(((uint32_t)(x)) << SDHC_SYSCTL_DVS_SHIFT)) & SDHC_SYSCTL_DVS_MASK)
-#define SDHC_SYSCTL_SDCLKFS_MASK                 (0xFF00U)
-#define SDHC_SYSCTL_SDCLKFS_SHIFT                (8U)
-#define SDHC_SYSCTL_SDCLKFS(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_SYSCTL_SDCLKFS_SHIFT)) & SDHC_SYSCTL_SDCLKFS_MASK)
-#define SDHC_SYSCTL_DTOCV_MASK                   (0xF0000U)
-#define SDHC_SYSCTL_DTOCV_SHIFT                  (16U)
-#define SDHC_SYSCTL_DTOCV(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_SYSCTL_DTOCV_SHIFT)) & SDHC_SYSCTL_DTOCV_MASK)
-#define SDHC_SYSCTL_RSTA_MASK                    (0x1000000U)
-#define SDHC_SYSCTL_RSTA_SHIFT                   (24U)
-#define SDHC_SYSCTL_RSTA(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_SYSCTL_RSTA_SHIFT)) & SDHC_SYSCTL_RSTA_MASK)
-#define SDHC_SYSCTL_RSTC_MASK                    (0x2000000U)
-#define SDHC_SYSCTL_RSTC_SHIFT                   (25U)
-#define SDHC_SYSCTL_RSTC(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_SYSCTL_RSTC_SHIFT)) & SDHC_SYSCTL_RSTC_MASK)
-#define SDHC_SYSCTL_RSTD_MASK                    (0x4000000U)
-#define SDHC_SYSCTL_RSTD_SHIFT                   (26U)
-#define SDHC_SYSCTL_RSTD(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_SYSCTL_RSTD_SHIFT)) & SDHC_SYSCTL_RSTD_MASK)
-#define SDHC_SYSCTL_INITA_MASK                   (0x8000000U)
-#define SDHC_SYSCTL_INITA_SHIFT                  (27U)
-#define SDHC_SYSCTL_INITA(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_SYSCTL_INITA_SHIFT)) & SDHC_SYSCTL_INITA_MASK)
-
-/*! @name IRQSTAT - Interrupt Status register */
-#define SDHC_IRQSTAT_CC_MASK                     (0x1U)
-#define SDHC_IRQSTAT_CC_SHIFT                    (0U)
-#define SDHC_IRQSTAT_CC(x)                       (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTAT_CC_SHIFT)) & SDHC_IRQSTAT_CC_MASK)
-#define SDHC_IRQSTAT_TC_MASK                     (0x2U)
-#define SDHC_IRQSTAT_TC_SHIFT                    (1U)
-#define SDHC_IRQSTAT_TC(x)                       (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTAT_TC_SHIFT)) & SDHC_IRQSTAT_TC_MASK)
-#define SDHC_IRQSTAT_BGE_MASK                    (0x4U)
-#define SDHC_IRQSTAT_BGE_SHIFT                   (2U)
-#define SDHC_IRQSTAT_BGE(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTAT_BGE_SHIFT)) & SDHC_IRQSTAT_BGE_MASK)
-#define SDHC_IRQSTAT_DINT_MASK                   (0x8U)
-#define SDHC_IRQSTAT_DINT_SHIFT                  (3U)
-#define SDHC_IRQSTAT_DINT(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTAT_DINT_SHIFT)) & SDHC_IRQSTAT_DINT_MASK)
-#define SDHC_IRQSTAT_BWR_MASK                    (0x10U)
-#define SDHC_IRQSTAT_BWR_SHIFT                   (4U)
-#define SDHC_IRQSTAT_BWR(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTAT_BWR_SHIFT)) & SDHC_IRQSTAT_BWR_MASK)
-#define SDHC_IRQSTAT_BRR_MASK                    (0x20U)
-#define SDHC_IRQSTAT_BRR_SHIFT                   (5U)
-#define SDHC_IRQSTAT_BRR(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTAT_BRR_SHIFT)) & SDHC_IRQSTAT_BRR_MASK)
-#define SDHC_IRQSTAT_CINS_MASK                   (0x40U)
-#define SDHC_IRQSTAT_CINS_SHIFT                  (6U)
-#define SDHC_IRQSTAT_CINS(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTAT_CINS_SHIFT)) & SDHC_IRQSTAT_CINS_MASK)
-#define SDHC_IRQSTAT_CRM_MASK                    (0x80U)
-#define SDHC_IRQSTAT_CRM_SHIFT                   (7U)
-#define SDHC_IRQSTAT_CRM(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTAT_CRM_SHIFT)) & SDHC_IRQSTAT_CRM_MASK)
-#define SDHC_IRQSTAT_CINT_MASK                   (0x100U)
-#define SDHC_IRQSTAT_CINT_SHIFT                  (8U)
-#define SDHC_IRQSTAT_CINT(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTAT_CINT_SHIFT)) & SDHC_IRQSTAT_CINT_MASK)
-#define SDHC_IRQSTAT_CTOE_MASK                   (0x10000U)
-#define SDHC_IRQSTAT_CTOE_SHIFT                  (16U)
-#define SDHC_IRQSTAT_CTOE(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTAT_CTOE_SHIFT)) & SDHC_IRQSTAT_CTOE_MASK)
-#define SDHC_IRQSTAT_CCE_MASK                    (0x20000U)
-#define SDHC_IRQSTAT_CCE_SHIFT                   (17U)
-#define SDHC_IRQSTAT_CCE(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTAT_CCE_SHIFT)) & SDHC_IRQSTAT_CCE_MASK)
-#define SDHC_IRQSTAT_CEBE_MASK                   (0x40000U)
-#define SDHC_IRQSTAT_CEBE_SHIFT                  (18U)
-#define SDHC_IRQSTAT_CEBE(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTAT_CEBE_SHIFT)) & SDHC_IRQSTAT_CEBE_MASK)
-#define SDHC_IRQSTAT_CIE_MASK                    (0x80000U)
-#define SDHC_IRQSTAT_CIE_SHIFT                   (19U)
-#define SDHC_IRQSTAT_CIE(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTAT_CIE_SHIFT)) & SDHC_IRQSTAT_CIE_MASK)
-#define SDHC_IRQSTAT_DTOE_MASK                   (0x100000U)
-#define SDHC_IRQSTAT_DTOE_SHIFT                  (20U)
-#define SDHC_IRQSTAT_DTOE(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTAT_DTOE_SHIFT)) & SDHC_IRQSTAT_DTOE_MASK)
-#define SDHC_IRQSTAT_DCE_MASK                    (0x200000U)
-#define SDHC_IRQSTAT_DCE_SHIFT                   (21U)
-#define SDHC_IRQSTAT_DCE(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTAT_DCE_SHIFT)) & SDHC_IRQSTAT_DCE_MASK)
-#define SDHC_IRQSTAT_DEBE_MASK                   (0x400000U)
-#define SDHC_IRQSTAT_DEBE_SHIFT                  (22U)
-#define SDHC_IRQSTAT_DEBE(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTAT_DEBE_SHIFT)) & SDHC_IRQSTAT_DEBE_MASK)
-#define SDHC_IRQSTAT_AC12E_MASK                  (0x1000000U)
-#define SDHC_IRQSTAT_AC12E_SHIFT                 (24U)
-#define SDHC_IRQSTAT_AC12E(x)                    (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTAT_AC12E_SHIFT)) & SDHC_IRQSTAT_AC12E_MASK)
-#define SDHC_IRQSTAT_DMAE_MASK                   (0x10000000U)
-#define SDHC_IRQSTAT_DMAE_SHIFT                  (28U)
-#define SDHC_IRQSTAT_DMAE(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTAT_DMAE_SHIFT)) & SDHC_IRQSTAT_DMAE_MASK)
-
-/*! @name IRQSTATEN - Interrupt Status Enable register */
-#define SDHC_IRQSTATEN_CCSEN_MASK                (0x1U)
-#define SDHC_IRQSTATEN_CCSEN_SHIFT               (0U)
-#define SDHC_IRQSTATEN_CCSEN(x)                  (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTATEN_CCSEN_SHIFT)) & SDHC_IRQSTATEN_CCSEN_MASK)
-#define SDHC_IRQSTATEN_TCSEN_MASK                (0x2U)
-#define SDHC_IRQSTATEN_TCSEN_SHIFT               (1U)
-#define SDHC_IRQSTATEN_TCSEN(x)                  (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTATEN_TCSEN_SHIFT)) & SDHC_IRQSTATEN_TCSEN_MASK)
-#define SDHC_IRQSTATEN_BGESEN_MASK               (0x4U)
-#define SDHC_IRQSTATEN_BGESEN_SHIFT              (2U)
-#define SDHC_IRQSTATEN_BGESEN(x)                 (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTATEN_BGESEN_SHIFT)) & SDHC_IRQSTATEN_BGESEN_MASK)
-#define SDHC_IRQSTATEN_DINTSEN_MASK              (0x8U)
-#define SDHC_IRQSTATEN_DINTSEN_SHIFT             (3U)
-#define SDHC_IRQSTATEN_DINTSEN(x)                (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTATEN_DINTSEN_SHIFT)) & SDHC_IRQSTATEN_DINTSEN_MASK)
-#define SDHC_IRQSTATEN_BWRSEN_MASK               (0x10U)
-#define SDHC_IRQSTATEN_BWRSEN_SHIFT              (4U)
-#define SDHC_IRQSTATEN_BWRSEN(x)                 (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTATEN_BWRSEN_SHIFT)) & SDHC_IRQSTATEN_BWRSEN_MASK)
-#define SDHC_IRQSTATEN_BRRSEN_MASK               (0x20U)
-#define SDHC_IRQSTATEN_BRRSEN_SHIFT              (5U)
-#define SDHC_IRQSTATEN_BRRSEN(x)                 (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTATEN_BRRSEN_SHIFT)) & SDHC_IRQSTATEN_BRRSEN_MASK)
-#define SDHC_IRQSTATEN_CINSEN_MASK               (0x40U)
-#define SDHC_IRQSTATEN_CINSEN_SHIFT              (6U)
-#define SDHC_IRQSTATEN_CINSEN(x)                 (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTATEN_CINSEN_SHIFT)) & SDHC_IRQSTATEN_CINSEN_MASK)
-#define SDHC_IRQSTATEN_CRMSEN_MASK               (0x80U)
-#define SDHC_IRQSTATEN_CRMSEN_SHIFT              (7U)
-#define SDHC_IRQSTATEN_CRMSEN(x)                 (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTATEN_CRMSEN_SHIFT)) & SDHC_IRQSTATEN_CRMSEN_MASK)
-#define SDHC_IRQSTATEN_CINTSEN_MASK              (0x100U)
-#define SDHC_IRQSTATEN_CINTSEN_SHIFT             (8U)
-#define SDHC_IRQSTATEN_CINTSEN(x)                (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTATEN_CINTSEN_SHIFT)) & SDHC_IRQSTATEN_CINTSEN_MASK)
-#define SDHC_IRQSTATEN_CTOESEN_MASK              (0x10000U)
-#define SDHC_IRQSTATEN_CTOESEN_SHIFT             (16U)
-#define SDHC_IRQSTATEN_CTOESEN(x)                (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTATEN_CTOESEN_SHIFT)) & SDHC_IRQSTATEN_CTOESEN_MASK)
-#define SDHC_IRQSTATEN_CCESEN_MASK               (0x20000U)
-#define SDHC_IRQSTATEN_CCESEN_SHIFT              (17U)
-#define SDHC_IRQSTATEN_CCESEN(x)                 (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTATEN_CCESEN_SHIFT)) & SDHC_IRQSTATEN_CCESEN_MASK)
-#define SDHC_IRQSTATEN_CEBESEN_MASK              (0x40000U)
-#define SDHC_IRQSTATEN_CEBESEN_SHIFT             (18U)
-#define SDHC_IRQSTATEN_CEBESEN(x)                (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTATEN_CEBESEN_SHIFT)) & SDHC_IRQSTATEN_CEBESEN_MASK)
-#define SDHC_IRQSTATEN_CIESEN_MASK               (0x80000U)
-#define SDHC_IRQSTATEN_CIESEN_SHIFT              (19U)
-#define SDHC_IRQSTATEN_CIESEN(x)                 (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTATEN_CIESEN_SHIFT)) & SDHC_IRQSTATEN_CIESEN_MASK)
-#define SDHC_IRQSTATEN_DTOESEN_MASK              (0x100000U)
-#define SDHC_IRQSTATEN_DTOESEN_SHIFT             (20U)
-#define SDHC_IRQSTATEN_DTOESEN(x)                (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTATEN_DTOESEN_SHIFT)) & SDHC_IRQSTATEN_DTOESEN_MASK)
-#define SDHC_IRQSTATEN_DCESEN_MASK               (0x200000U)
-#define SDHC_IRQSTATEN_DCESEN_SHIFT              (21U)
-#define SDHC_IRQSTATEN_DCESEN(x)                 (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTATEN_DCESEN_SHIFT)) & SDHC_IRQSTATEN_DCESEN_MASK)
-#define SDHC_IRQSTATEN_DEBESEN_MASK              (0x400000U)
-#define SDHC_IRQSTATEN_DEBESEN_SHIFT             (22U)
-#define SDHC_IRQSTATEN_DEBESEN(x)                (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTATEN_DEBESEN_SHIFT)) & SDHC_IRQSTATEN_DEBESEN_MASK)
-#define SDHC_IRQSTATEN_AC12ESEN_MASK             (0x1000000U)
-#define SDHC_IRQSTATEN_AC12ESEN_SHIFT            (24U)
-#define SDHC_IRQSTATEN_AC12ESEN(x)               (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTATEN_AC12ESEN_SHIFT)) & SDHC_IRQSTATEN_AC12ESEN_MASK)
-#define SDHC_IRQSTATEN_DMAESEN_MASK              (0x10000000U)
-#define SDHC_IRQSTATEN_DMAESEN_SHIFT             (28U)
-#define SDHC_IRQSTATEN_DMAESEN(x)                (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSTATEN_DMAESEN_SHIFT)) & SDHC_IRQSTATEN_DMAESEN_MASK)
-
-/*! @name IRQSIGEN - Interrupt Signal Enable register */
-#define SDHC_IRQSIGEN_CCIEN_MASK                 (0x1U)
-#define SDHC_IRQSIGEN_CCIEN_SHIFT                (0U)
-#define SDHC_IRQSIGEN_CCIEN(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSIGEN_CCIEN_SHIFT)) & SDHC_IRQSIGEN_CCIEN_MASK)
-#define SDHC_IRQSIGEN_TCIEN_MASK                 (0x2U)
-#define SDHC_IRQSIGEN_TCIEN_SHIFT                (1U)
-#define SDHC_IRQSIGEN_TCIEN(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSIGEN_TCIEN_SHIFT)) & SDHC_IRQSIGEN_TCIEN_MASK)
-#define SDHC_IRQSIGEN_BGEIEN_MASK                (0x4U)
-#define SDHC_IRQSIGEN_BGEIEN_SHIFT               (2U)
-#define SDHC_IRQSIGEN_BGEIEN(x)                  (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSIGEN_BGEIEN_SHIFT)) & SDHC_IRQSIGEN_BGEIEN_MASK)
-#define SDHC_IRQSIGEN_DINTIEN_MASK               (0x8U)
-#define SDHC_IRQSIGEN_DINTIEN_SHIFT              (3U)
-#define SDHC_IRQSIGEN_DINTIEN(x)                 (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSIGEN_DINTIEN_SHIFT)) & SDHC_IRQSIGEN_DINTIEN_MASK)
-#define SDHC_IRQSIGEN_BWRIEN_MASK                (0x10U)
-#define SDHC_IRQSIGEN_BWRIEN_SHIFT               (4U)
-#define SDHC_IRQSIGEN_BWRIEN(x)                  (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSIGEN_BWRIEN_SHIFT)) & SDHC_IRQSIGEN_BWRIEN_MASK)
-#define SDHC_IRQSIGEN_BRRIEN_MASK                (0x20U)
-#define SDHC_IRQSIGEN_BRRIEN_SHIFT               (5U)
-#define SDHC_IRQSIGEN_BRRIEN(x)                  (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSIGEN_BRRIEN_SHIFT)) & SDHC_IRQSIGEN_BRRIEN_MASK)
-#define SDHC_IRQSIGEN_CINSIEN_MASK               (0x40U)
-#define SDHC_IRQSIGEN_CINSIEN_SHIFT              (6U)
-#define SDHC_IRQSIGEN_CINSIEN(x)                 (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSIGEN_CINSIEN_SHIFT)) & SDHC_IRQSIGEN_CINSIEN_MASK)
-#define SDHC_IRQSIGEN_CRMIEN_MASK                (0x80U)
-#define SDHC_IRQSIGEN_CRMIEN_SHIFT               (7U)
-#define SDHC_IRQSIGEN_CRMIEN(x)                  (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSIGEN_CRMIEN_SHIFT)) & SDHC_IRQSIGEN_CRMIEN_MASK)
-#define SDHC_IRQSIGEN_CINTIEN_MASK               (0x100U)
-#define SDHC_IRQSIGEN_CINTIEN_SHIFT              (8U)
-#define SDHC_IRQSIGEN_CINTIEN(x)                 (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSIGEN_CINTIEN_SHIFT)) & SDHC_IRQSIGEN_CINTIEN_MASK)
-#define SDHC_IRQSIGEN_CTOEIEN_MASK               (0x10000U)
-#define SDHC_IRQSIGEN_CTOEIEN_SHIFT              (16U)
-#define SDHC_IRQSIGEN_CTOEIEN(x)                 (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSIGEN_CTOEIEN_SHIFT)) & SDHC_IRQSIGEN_CTOEIEN_MASK)
-#define SDHC_IRQSIGEN_CCEIEN_MASK                (0x20000U)
-#define SDHC_IRQSIGEN_CCEIEN_SHIFT               (17U)
-#define SDHC_IRQSIGEN_CCEIEN(x)                  (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSIGEN_CCEIEN_SHIFT)) & SDHC_IRQSIGEN_CCEIEN_MASK)
-#define SDHC_IRQSIGEN_CEBEIEN_MASK               (0x40000U)
-#define SDHC_IRQSIGEN_CEBEIEN_SHIFT              (18U)
-#define SDHC_IRQSIGEN_CEBEIEN(x)                 (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSIGEN_CEBEIEN_SHIFT)) & SDHC_IRQSIGEN_CEBEIEN_MASK)
-#define SDHC_IRQSIGEN_CIEIEN_MASK                (0x80000U)
-#define SDHC_IRQSIGEN_CIEIEN_SHIFT               (19U)
-#define SDHC_IRQSIGEN_CIEIEN(x)                  (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSIGEN_CIEIEN_SHIFT)) & SDHC_IRQSIGEN_CIEIEN_MASK)
-#define SDHC_IRQSIGEN_DTOEIEN_MASK               (0x100000U)
-#define SDHC_IRQSIGEN_DTOEIEN_SHIFT              (20U)
-#define SDHC_IRQSIGEN_DTOEIEN(x)                 (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSIGEN_DTOEIEN_SHIFT)) & SDHC_IRQSIGEN_DTOEIEN_MASK)
-#define SDHC_IRQSIGEN_DCEIEN_MASK                (0x200000U)
-#define SDHC_IRQSIGEN_DCEIEN_SHIFT               (21U)
-#define SDHC_IRQSIGEN_DCEIEN(x)                  (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSIGEN_DCEIEN_SHIFT)) & SDHC_IRQSIGEN_DCEIEN_MASK)
-#define SDHC_IRQSIGEN_DEBEIEN_MASK               (0x400000U)
-#define SDHC_IRQSIGEN_DEBEIEN_SHIFT              (22U)
-#define SDHC_IRQSIGEN_DEBEIEN(x)                 (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSIGEN_DEBEIEN_SHIFT)) & SDHC_IRQSIGEN_DEBEIEN_MASK)
-#define SDHC_IRQSIGEN_AC12EIEN_MASK              (0x1000000U)
-#define SDHC_IRQSIGEN_AC12EIEN_SHIFT             (24U)
-#define SDHC_IRQSIGEN_AC12EIEN(x)                (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSIGEN_AC12EIEN_SHIFT)) & SDHC_IRQSIGEN_AC12EIEN_MASK)
-#define SDHC_IRQSIGEN_DMAEIEN_MASK               (0x10000000U)
-#define SDHC_IRQSIGEN_DMAEIEN_SHIFT              (28U)
-#define SDHC_IRQSIGEN_DMAEIEN(x)                 (((uint32_t)(((uint32_t)(x)) << SDHC_IRQSIGEN_DMAEIEN_SHIFT)) & SDHC_IRQSIGEN_DMAEIEN_MASK)
-
-/*! @name AC12ERR - Auto CMD12 Error Status Register */
-#define SDHC_AC12ERR_AC12NE_MASK                 (0x1U)
-#define SDHC_AC12ERR_AC12NE_SHIFT                (0U)
-#define SDHC_AC12ERR_AC12NE(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_AC12ERR_AC12NE_SHIFT)) & SDHC_AC12ERR_AC12NE_MASK)
-#define SDHC_AC12ERR_AC12TOE_MASK                (0x2U)
-#define SDHC_AC12ERR_AC12TOE_SHIFT               (1U)
-#define SDHC_AC12ERR_AC12TOE(x)                  (((uint32_t)(((uint32_t)(x)) << SDHC_AC12ERR_AC12TOE_SHIFT)) & SDHC_AC12ERR_AC12TOE_MASK)
-#define SDHC_AC12ERR_AC12EBE_MASK                (0x4U)
-#define SDHC_AC12ERR_AC12EBE_SHIFT               (2U)
-#define SDHC_AC12ERR_AC12EBE(x)                  (((uint32_t)(((uint32_t)(x)) << SDHC_AC12ERR_AC12EBE_SHIFT)) & SDHC_AC12ERR_AC12EBE_MASK)
-#define SDHC_AC12ERR_AC12CE_MASK                 (0x8U)
-#define SDHC_AC12ERR_AC12CE_SHIFT                (3U)
-#define SDHC_AC12ERR_AC12CE(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_AC12ERR_AC12CE_SHIFT)) & SDHC_AC12ERR_AC12CE_MASK)
-#define SDHC_AC12ERR_AC12IE_MASK                 (0x10U)
-#define SDHC_AC12ERR_AC12IE_SHIFT                (4U)
-#define SDHC_AC12ERR_AC12IE(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_AC12ERR_AC12IE_SHIFT)) & SDHC_AC12ERR_AC12IE_MASK)
-#define SDHC_AC12ERR_CNIBAC12E_MASK              (0x80U)
-#define SDHC_AC12ERR_CNIBAC12E_SHIFT             (7U)
-#define SDHC_AC12ERR_CNIBAC12E(x)                (((uint32_t)(((uint32_t)(x)) << SDHC_AC12ERR_CNIBAC12E_SHIFT)) & SDHC_AC12ERR_CNIBAC12E_MASK)
-
-/*! @name HTCAPBLT - Host Controller Capabilities */
-#define SDHC_HTCAPBLT_MBL_MASK                   (0x70000U)
-#define SDHC_HTCAPBLT_MBL_SHIFT                  (16U)
-#define SDHC_HTCAPBLT_MBL(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_HTCAPBLT_MBL_SHIFT)) & SDHC_HTCAPBLT_MBL_MASK)
-#define SDHC_HTCAPBLT_ADMAS_MASK                 (0x100000U)
-#define SDHC_HTCAPBLT_ADMAS_SHIFT                (20U)
-#define SDHC_HTCAPBLT_ADMAS(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_HTCAPBLT_ADMAS_SHIFT)) & SDHC_HTCAPBLT_ADMAS_MASK)
-#define SDHC_HTCAPBLT_HSS_MASK                   (0x200000U)
-#define SDHC_HTCAPBLT_HSS_SHIFT                  (21U)
-#define SDHC_HTCAPBLT_HSS(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_HTCAPBLT_HSS_SHIFT)) & SDHC_HTCAPBLT_HSS_MASK)
-#define SDHC_HTCAPBLT_DMAS_MASK                  (0x400000U)
-#define SDHC_HTCAPBLT_DMAS_SHIFT                 (22U)
-#define SDHC_HTCAPBLT_DMAS(x)                    (((uint32_t)(((uint32_t)(x)) << SDHC_HTCAPBLT_DMAS_SHIFT)) & SDHC_HTCAPBLT_DMAS_MASK)
-#define SDHC_HTCAPBLT_SRS_MASK                   (0x800000U)
-#define SDHC_HTCAPBLT_SRS_SHIFT                  (23U)
-#define SDHC_HTCAPBLT_SRS(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_HTCAPBLT_SRS_SHIFT)) & SDHC_HTCAPBLT_SRS_MASK)
-#define SDHC_HTCAPBLT_VS33_MASK                  (0x1000000U)
-#define SDHC_HTCAPBLT_VS33_SHIFT                 (24U)
-#define SDHC_HTCAPBLT_VS33(x)                    (((uint32_t)(((uint32_t)(x)) << SDHC_HTCAPBLT_VS33_SHIFT)) & SDHC_HTCAPBLT_VS33_MASK)
-
-/*! @name WML - Watermark Level Register */
-#define SDHC_WML_RDWML_MASK                      (0xFFU)
-#define SDHC_WML_RDWML_SHIFT                     (0U)
-#define SDHC_WML_RDWML(x)                        (((uint32_t)(((uint32_t)(x)) << SDHC_WML_RDWML_SHIFT)) & SDHC_WML_RDWML_MASK)
-#define SDHC_WML_WRWML_MASK                      (0xFF0000U)
-#define SDHC_WML_WRWML_SHIFT                     (16U)
-#define SDHC_WML_WRWML(x)                        (((uint32_t)(((uint32_t)(x)) << SDHC_WML_WRWML_SHIFT)) & SDHC_WML_WRWML_MASK)
-
-/*! @name FEVT - Force Event register */
-#define SDHC_FEVT_AC12NE_MASK                    (0x1U)
-#define SDHC_FEVT_AC12NE_SHIFT                   (0U)
-#define SDHC_FEVT_AC12NE(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_FEVT_AC12NE_SHIFT)) & SDHC_FEVT_AC12NE_MASK)
-#define SDHC_FEVT_AC12TOE_MASK                   (0x2U)
-#define SDHC_FEVT_AC12TOE_SHIFT                  (1U)
-#define SDHC_FEVT_AC12TOE(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_FEVT_AC12TOE_SHIFT)) & SDHC_FEVT_AC12TOE_MASK)
-#define SDHC_FEVT_AC12CE_MASK                    (0x4U)
-#define SDHC_FEVT_AC12CE_SHIFT                   (2U)
-#define SDHC_FEVT_AC12CE(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_FEVT_AC12CE_SHIFT)) & SDHC_FEVT_AC12CE_MASK)
-#define SDHC_FEVT_AC12EBE_MASK                   (0x8U)
-#define SDHC_FEVT_AC12EBE_SHIFT                  (3U)
-#define SDHC_FEVT_AC12EBE(x)                     (((uint32_t)(((uint32_t)(x)) << SDHC_FEVT_AC12EBE_SHIFT)) & SDHC_FEVT_AC12EBE_MASK)
-#define SDHC_FEVT_AC12IE_MASK                    (0x10U)
-#define SDHC_FEVT_AC12IE_SHIFT                   (4U)
-#define SDHC_FEVT_AC12IE(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_FEVT_AC12IE_SHIFT)) & SDHC_FEVT_AC12IE_MASK)
-#define SDHC_FEVT_CNIBAC12E_MASK                 (0x80U)
-#define SDHC_FEVT_CNIBAC12E_SHIFT                (7U)
-#define SDHC_FEVT_CNIBAC12E(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_FEVT_CNIBAC12E_SHIFT)) & SDHC_FEVT_CNIBAC12E_MASK)
-#define SDHC_FEVT_CTOE_MASK                      (0x10000U)
-#define SDHC_FEVT_CTOE_SHIFT                     (16U)
-#define SDHC_FEVT_CTOE(x)                        (((uint32_t)(((uint32_t)(x)) << SDHC_FEVT_CTOE_SHIFT)) & SDHC_FEVT_CTOE_MASK)
-#define SDHC_FEVT_CCE_MASK                       (0x20000U)
-#define SDHC_FEVT_CCE_SHIFT                      (17U)
-#define SDHC_FEVT_CCE(x)                         (((uint32_t)(((uint32_t)(x)) << SDHC_FEVT_CCE_SHIFT)) & SDHC_FEVT_CCE_MASK)
-#define SDHC_FEVT_CEBE_MASK                      (0x40000U)
-#define SDHC_FEVT_CEBE_SHIFT                     (18U)
-#define SDHC_FEVT_CEBE(x)                        (((uint32_t)(((uint32_t)(x)) << SDHC_FEVT_CEBE_SHIFT)) & SDHC_FEVT_CEBE_MASK)
-#define SDHC_FEVT_CIE_MASK                       (0x80000U)
-#define SDHC_FEVT_CIE_SHIFT                      (19U)
-#define SDHC_FEVT_CIE(x)                         (((uint32_t)(((uint32_t)(x)) << SDHC_FEVT_CIE_SHIFT)) & SDHC_FEVT_CIE_MASK)
-#define SDHC_FEVT_DTOE_MASK                      (0x100000U)
-#define SDHC_FEVT_DTOE_SHIFT                     (20U)
-#define SDHC_FEVT_DTOE(x)                        (((uint32_t)(((uint32_t)(x)) << SDHC_FEVT_DTOE_SHIFT)) & SDHC_FEVT_DTOE_MASK)
-#define SDHC_FEVT_DCE_MASK                       (0x200000U)
-#define SDHC_FEVT_DCE_SHIFT                      (21U)
-#define SDHC_FEVT_DCE(x)                         (((uint32_t)(((uint32_t)(x)) << SDHC_FEVT_DCE_SHIFT)) & SDHC_FEVT_DCE_MASK)
-#define SDHC_FEVT_DEBE_MASK                      (0x400000U)
-#define SDHC_FEVT_DEBE_SHIFT                     (22U)
-#define SDHC_FEVT_DEBE(x)                        (((uint32_t)(((uint32_t)(x)) << SDHC_FEVT_DEBE_SHIFT)) & SDHC_FEVT_DEBE_MASK)
-#define SDHC_FEVT_AC12E_MASK                     (0x1000000U)
-#define SDHC_FEVT_AC12E_SHIFT                    (24U)
-#define SDHC_FEVT_AC12E(x)                       (((uint32_t)(((uint32_t)(x)) << SDHC_FEVT_AC12E_SHIFT)) & SDHC_FEVT_AC12E_MASK)
-#define SDHC_FEVT_DMAE_MASK                      (0x10000000U)
-#define SDHC_FEVT_DMAE_SHIFT                     (28U)
-#define SDHC_FEVT_DMAE(x)                        (((uint32_t)(((uint32_t)(x)) << SDHC_FEVT_DMAE_SHIFT)) & SDHC_FEVT_DMAE_MASK)
-#define SDHC_FEVT_CINT_MASK                      (0x80000000U)
-#define SDHC_FEVT_CINT_SHIFT                     (31U)
-#define SDHC_FEVT_CINT(x)                        (((uint32_t)(((uint32_t)(x)) << SDHC_FEVT_CINT_SHIFT)) & SDHC_FEVT_CINT_MASK)
-
-/*! @name ADMAES - ADMA Error Status register */
-#define SDHC_ADMAES_ADMAES_MASK                  (0x3U)
-#define SDHC_ADMAES_ADMAES_SHIFT                 (0U)
-#define SDHC_ADMAES_ADMAES(x)                    (((uint32_t)(((uint32_t)(x)) << SDHC_ADMAES_ADMAES_SHIFT)) & SDHC_ADMAES_ADMAES_MASK)
-#define SDHC_ADMAES_ADMALME_MASK                 (0x4U)
-#define SDHC_ADMAES_ADMALME_SHIFT                (2U)
-#define SDHC_ADMAES_ADMALME(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_ADMAES_ADMALME_SHIFT)) & SDHC_ADMAES_ADMALME_MASK)
-#define SDHC_ADMAES_ADMADCE_MASK                 (0x8U)
-#define SDHC_ADMAES_ADMADCE_SHIFT                (3U)
-#define SDHC_ADMAES_ADMADCE(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_ADMAES_ADMADCE_SHIFT)) & SDHC_ADMAES_ADMADCE_MASK)
-
-/*! @name ADSADDR - ADMA System Addressregister */
-#define SDHC_ADSADDR_ADSADDR_MASK                (0xFFFFFFFCU)
-#define SDHC_ADSADDR_ADSADDR_SHIFT               (2U)
-#define SDHC_ADSADDR_ADSADDR(x)                  (((uint32_t)(((uint32_t)(x)) << SDHC_ADSADDR_ADSADDR_SHIFT)) & SDHC_ADSADDR_ADSADDR_MASK)
-
-/*! @name VENDOR - Vendor Specific register */
-#define SDHC_VENDOR_EXTDMAEN_MASK                (0x1U)
-#define SDHC_VENDOR_EXTDMAEN_SHIFT               (0U)
-#define SDHC_VENDOR_EXTDMAEN(x)                  (((uint32_t)(((uint32_t)(x)) << SDHC_VENDOR_EXTDMAEN_SHIFT)) & SDHC_VENDOR_EXTDMAEN_MASK)
-#define SDHC_VENDOR_EXBLKNU_MASK                 (0x2U)
-#define SDHC_VENDOR_EXBLKNU_SHIFT                (1U)
-#define SDHC_VENDOR_EXBLKNU(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_VENDOR_EXBLKNU_SHIFT)) & SDHC_VENDOR_EXBLKNU_MASK)
-#define SDHC_VENDOR_INTSTVAL_MASK                (0xFF0000U)
-#define SDHC_VENDOR_INTSTVAL_SHIFT               (16U)
-#define SDHC_VENDOR_INTSTVAL(x)                  (((uint32_t)(((uint32_t)(x)) << SDHC_VENDOR_INTSTVAL_SHIFT)) & SDHC_VENDOR_INTSTVAL_MASK)
-
-/*! @name MMCBOOT - MMC Boot register */
-#define SDHC_MMCBOOT_DTOCVACK_MASK               (0xFU)
-#define SDHC_MMCBOOT_DTOCVACK_SHIFT              (0U)
-#define SDHC_MMCBOOT_DTOCVACK(x)                 (((uint32_t)(((uint32_t)(x)) << SDHC_MMCBOOT_DTOCVACK_SHIFT)) & SDHC_MMCBOOT_DTOCVACK_MASK)
-#define SDHC_MMCBOOT_BOOTACK_MASK                (0x10U)
-#define SDHC_MMCBOOT_BOOTACK_SHIFT               (4U)
-#define SDHC_MMCBOOT_BOOTACK(x)                  (((uint32_t)(((uint32_t)(x)) << SDHC_MMCBOOT_BOOTACK_SHIFT)) & SDHC_MMCBOOT_BOOTACK_MASK)
-#define SDHC_MMCBOOT_BOOTMODE_MASK               (0x20U)
-#define SDHC_MMCBOOT_BOOTMODE_SHIFT              (5U)
-#define SDHC_MMCBOOT_BOOTMODE(x)                 (((uint32_t)(((uint32_t)(x)) << SDHC_MMCBOOT_BOOTMODE_SHIFT)) & SDHC_MMCBOOT_BOOTMODE_MASK)
-#define SDHC_MMCBOOT_BOOTEN_MASK                 (0x40U)
-#define SDHC_MMCBOOT_BOOTEN_SHIFT                (6U)
-#define SDHC_MMCBOOT_BOOTEN(x)                   (((uint32_t)(((uint32_t)(x)) << SDHC_MMCBOOT_BOOTEN_SHIFT)) & SDHC_MMCBOOT_BOOTEN_MASK)
-#define SDHC_MMCBOOT_AUTOSABGEN_MASK             (0x80U)
-#define SDHC_MMCBOOT_AUTOSABGEN_SHIFT            (7U)
-#define SDHC_MMCBOOT_AUTOSABGEN(x)               (((uint32_t)(((uint32_t)(x)) << SDHC_MMCBOOT_AUTOSABGEN_SHIFT)) & SDHC_MMCBOOT_AUTOSABGEN_MASK)
-#define SDHC_MMCBOOT_BOOTBLKCNT_MASK             (0xFFFF0000U)
-#define SDHC_MMCBOOT_BOOTBLKCNT_SHIFT            (16U)
-#define SDHC_MMCBOOT_BOOTBLKCNT(x)               (((uint32_t)(((uint32_t)(x)) << SDHC_MMCBOOT_BOOTBLKCNT_SHIFT)) & SDHC_MMCBOOT_BOOTBLKCNT_MASK)
-
-/*! @name HOSTVER - Host Controller Version */
-#define SDHC_HOSTVER_SVN_MASK                    (0xFFU)
-#define SDHC_HOSTVER_SVN_SHIFT                   (0U)
-#define SDHC_HOSTVER_SVN(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_HOSTVER_SVN_SHIFT)) & SDHC_HOSTVER_SVN_MASK)
-#define SDHC_HOSTVER_VVN_MASK                    (0xFF00U)
-#define SDHC_HOSTVER_VVN_SHIFT                   (8U)
-#define SDHC_HOSTVER_VVN(x)                      (((uint32_t)(((uint32_t)(x)) << SDHC_HOSTVER_VVN_SHIFT)) & SDHC_HOSTVER_VVN_MASK)
-
-
-/*!
- * @}
- */ /* end of group SDHC_Register_Masks */
-
-
-/* SDHC - Peripheral instance base addresses */
-/** Peripheral SDHC base address */
-#define SDHC_BASE                                (0x400B1000u)
-/** Peripheral SDHC base pointer */
-#define SDHC                                     ((SDHC_Type *)SDHC_BASE)
-/** Array initializer of SDHC peripheral base addresses */
-#define SDHC_BASE_ADDRS                          { SDHC_BASE }
-/** Array initializer of SDHC peripheral base pointers */
-#define SDHC_BASE_PTRS                           { SDHC }
-/** Interrupt vectors for the SDHC peripheral type */
-#define SDHC_IRQS                                { SDHC_IRQn }
-
-/*!
- * @}
- */ /* end of group SDHC_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- SIM Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SIM_Peripheral_Access_Layer SIM Peripheral Access Layer
- * @{
- */
-
-/** SIM - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t SOPT1;                             /**< System Options Register 1, offset: 0x0 */
-  __IO uint32_t SOPT1CFG;                          /**< SOPT1 Configuration Register, offset: 0x4 */
-       uint8_t RESERVED_0[4092];
-  __IO uint32_t SOPT2;                             /**< System Options Register 2, offset: 0x1004 */
-       uint8_t RESERVED_1[4];
-  __IO uint32_t SOPT4;                             /**< System Options Register 4, offset: 0x100C */
-  __IO uint32_t SOPT5;                             /**< System Options Register 5, offset: 0x1010 */
-       uint8_t RESERVED_2[4];
-  __IO uint32_t SOPT7;                             /**< System Options Register 7, offset: 0x1018 */
-       uint8_t RESERVED_3[8];
-  __I  uint32_t SDID;                              /**< System Device Identification Register, offset: 0x1024 */
-  __IO uint32_t SCGC1;                             /**< System Clock Gating Control Register 1, offset: 0x1028 */
-  __IO uint32_t SCGC2;                             /**< System Clock Gating Control Register 2, offset: 0x102C */
-  __IO uint32_t SCGC3;                             /**< System Clock Gating Control Register 3, offset: 0x1030 */
-  __IO uint32_t SCGC4;                             /**< System Clock Gating Control Register 4, offset: 0x1034 */
-  __IO uint32_t SCGC5;                             /**< System Clock Gating Control Register 5, offset: 0x1038 */
-  __IO uint32_t SCGC6;                             /**< System Clock Gating Control Register 6, offset: 0x103C */
-  __IO uint32_t SCGC7;                             /**< System Clock Gating Control Register 7, offset: 0x1040 */
-  __IO uint32_t CLKDIV1;                           /**< System Clock Divider Register 1, offset: 0x1044 */
-  __IO uint32_t CLKDIV2;                           /**< System Clock Divider Register 2, offset: 0x1048 */
-  __IO uint32_t FCFG1;                             /**< Flash Configuration Register 1, offset: 0x104C */
-  __I  uint32_t FCFG2;                             /**< Flash Configuration Register 2, offset: 0x1050 */
-  __I  uint32_t UIDH;                              /**< Unique Identification Register High, offset: 0x1054 */
-  __I  uint32_t UIDMH;                             /**< Unique Identification Register Mid-High, offset: 0x1058 */
-  __I  uint32_t UIDML;                             /**< Unique Identification Register Mid Low, offset: 0x105C */
-  __I  uint32_t UIDL;                              /**< Unique Identification Register Low, offset: 0x1060 */
-} SIM_Type;
-
-/* ----------------------------------------------------------------------------
-   -- SIM Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SIM_Register_Masks SIM Register Masks
- * @{
- */
-
-/*! @name SOPT1 - System Options Register 1 */
-#define SIM_SOPT1_RAMSIZE_MASK                   (0xF000U)
-#define SIM_SOPT1_RAMSIZE_SHIFT                  (12U)
-#define SIM_SOPT1_RAMSIZE(x)                     (((uint32_t)(((uint32_t)(x)) << SIM_SOPT1_RAMSIZE_SHIFT)) & SIM_SOPT1_RAMSIZE_MASK)
-#define SIM_SOPT1_OSC32KSEL_MASK                 (0xC0000U)
-#define SIM_SOPT1_OSC32KSEL_SHIFT                (18U)
-#define SIM_SOPT1_OSC32KSEL(x)                   (((uint32_t)(((uint32_t)(x)) << SIM_SOPT1_OSC32KSEL_SHIFT)) & SIM_SOPT1_OSC32KSEL_MASK)
-#define SIM_SOPT1_USBVSTBY_MASK                  (0x20000000U)
-#define SIM_SOPT1_USBVSTBY_SHIFT                 (29U)
-#define SIM_SOPT1_USBVSTBY(x)                    (((uint32_t)(((uint32_t)(x)) << SIM_SOPT1_USBVSTBY_SHIFT)) & SIM_SOPT1_USBVSTBY_MASK)
-#define SIM_SOPT1_USBSSTBY_MASK                  (0x40000000U)
-#define SIM_SOPT1_USBSSTBY_SHIFT                 (30U)
-#define SIM_SOPT1_USBSSTBY(x)                    (((uint32_t)(((uint32_t)(x)) << SIM_SOPT1_USBSSTBY_SHIFT)) & SIM_SOPT1_USBSSTBY_MASK)
-#define SIM_SOPT1_USBREGEN_MASK                  (0x80000000U)
-#define SIM_SOPT1_USBREGEN_SHIFT                 (31U)
-#define SIM_SOPT1_USBREGEN(x)                    (((uint32_t)(((uint32_t)(x)) << SIM_SOPT1_USBREGEN_SHIFT)) & SIM_SOPT1_USBREGEN_MASK)
-
-/*! @name SOPT1CFG - SOPT1 Configuration Register */
-#define SIM_SOPT1CFG_URWE_MASK                   (0x1000000U)
-#define SIM_SOPT1CFG_URWE_SHIFT                  (24U)
-#define SIM_SOPT1CFG_URWE(x)                     (((uint32_t)(((uint32_t)(x)) << SIM_SOPT1CFG_URWE_SHIFT)) & SIM_SOPT1CFG_URWE_MASK)
-#define SIM_SOPT1CFG_UVSWE_MASK                  (0x2000000U)
-#define SIM_SOPT1CFG_UVSWE_SHIFT                 (25U)
-#define SIM_SOPT1CFG_UVSWE(x)                    (((uint32_t)(((uint32_t)(x)) << SIM_SOPT1CFG_UVSWE_SHIFT)) & SIM_SOPT1CFG_UVSWE_MASK)
-#define SIM_SOPT1CFG_USSWE_MASK                  (0x4000000U)
-#define SIM_SOPT1CFG_USSWE_SHIFT                 (26U)
-#define SIM_SOPT1CFG_USSWE(x)                    (((uint32_t)(((uint32_t)(x)) << SIM_SOPT1CFG_USSWE_SHIFT)) & SIM_SOPT1CFG_USSWE_MASK)
-
-/*! @name SOPT2 - System Options Register 2 */
-#define SIM_SOPT2_RTCCLKOUTSEL_MASK              (0x10U)
-#define SIM_SOPT2_RTCCLKOUTSEL_SHIFT             (4U)
-#define SIM_SOPT2_RTCCLKOUTSEL(x)                (((uint32_t)(((uint32_t)(x)) << SIM_SOPT2_RTCCLKOUTSEL_SHIFT)) & SIM_SOPT2_RTCCLKOUTSEL_MASK)
-#define SIM_SOPT2_CLKOUTSEL_MASK                 (0xE0U)
-#define SIM_SOPT2_CLKOUTSEL_SHIFT                (5U)
-#define SIM_SOPT2_CLKOUTSEL(x)                   (((uint32_t)(((uint32_t)(x)) << SIM_SOPT2_CLKOUTSEL_SHIFT)) & SIM_SOPT2_CLKOUTSEL_MASK)
-#define SIM_SOPT2_FBSL_MASK                      (0x300U)
-#define SIM_SOPT2_FBSL_SHIFT                     (8U)
-#define SIM_SOPT2_FBSL(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SOPT2_FBSL_SHIFT)) & SIM_SOPT2_FBSL_MASK)
-#define SIM_SOPT2_PTD7PAD_MASK                   (0x800U)
-#define SIM_SOPT2_PTD7PAD_SHIFT                  (11U)
-#define SIM_SOPT2_PTD7PAD(x)                     (((uint32_t)(((uint32_t)(x)) << SIM_SOPT2_PTD7PAD_SHIFT)) & SIM_SOPT2_PTD7PAD_MASK)
-#define SIM_SOPT2_TRACECLKSEL_MASK               (0x1000U)
-#define SIM_SOPT2_TRACECLKSEL_SHIFT              (12U)
-#define SIM_SOPT2_TRACECLKSEL(x)                 (((uint32_t)(((uint32_t)(x)) << SIM_SOPT2_TRACECLKSEL_SHIFT)) & SIM_SOPT2_TRACECLKSEL_MASK)
-#define SIM_SOPT2_PLLFLLSEL_MASK                 (0x30000U)
-#define SIM_SOPT2_PLLFLLSEL_SHIFT                (16U)
-#define SIM_SOPT2_PLLFLLSEL(x)                   (((uint32_t)(((uint32_t)(x)) << SIM_SOPT2_PLLFLLSEL_SHIFT)) & SIM_SOPT2_PLLFLLSEL_MASK)
-#define SIM_SOPT2_USBSRC_MASK                    (0x40000U)
-#define SIM_SOPT2_USBSRC_SHIFT                   (18U)
-#define SIM_SOPT2_USBSRC(x)                      (((uint32_t)(((uint32_t)(x)) << SIM_SOPT2_USBSRC_SHIFT)) & SIM_SOPT2_USBSRC_MASK)
-#define SIM_SOPT2_RMIISRC_MASK                   (0x80000U)
-#define SIM_SOPT2_RMIISRC_SHIFT                  (19U)
-#define SIM_SOPT2_RMIISRC(x)                     (((uint32_t)(((uint32_t)(x)) << SIM_SOPT2_RMIISRC_SHIFT)) & SIM_SOPT2_RMIISRC_MASK)
-#define SIM_SOPT2_TIMESRC_MASK                   (0x300000U)
-#define SIM_SOPT2_TIMESRC_SHIFT                  (20U)
-#define SIM_SOPT2_TIMESRC(x)                     (((uint32_t)(((uint32_t)(x)) << SIM_SOPT2_TIMESRC_SHIFT)) & SIM_SOPT2_TIMESRC_MASK)
-#define SIM_SOPT2_SDHCSRC_MASK                   (0x30000000U)
-#define SIM_SOPT2_SDHCSRC_SHIFT                  (28U)
-#define SIM_SOPT2_SDHCSRC(x)                     (((uint32_t)(((uint32_t)(x)) << SIM_SOPT2_SDHCSRC_SHIFT)) & SIM_SOPT2_SDHCSRC_MASK)
-
-/*! @name SOPT4 - System Options Register 4 */
-#define SIM_SOPT4_FTM0FLT0_MASK                  (0x1U)
-#define SIM_SOPT4_FTM0FLT0_SHIFT                 (0U)
-#define SIM_SOPT4_FTM0FLT0(x)                    (((uint32_t)(((uint32_t)(x)) << SIM_SOPT4_FTM0FLT0_SHIFT)) & SIM_SOPT4_FTM0FLT0_MASK)
-#define SIM_SOPT4_FTM0FLT1_MASK                  (0x2U)
-#define SIM_SOPT4_FTM0FLT1_SHIFT                 (1U)
-#define SIM_SOPT4_FTM0FLT1(x)                    (((uint32_t)(((uint32_t)(x)) << SIM_SOPT4_FTM0FLT1_SHIFT)) & SIM_SOPT4_FTM0FLT1_MASK)
-#define SIM_SOPT4_FTM0FLT2_MASK                  (0x4U)
-#define SIM_SOPT4_FTM0FLT2_SHIFT                 (2U)
-#define SIM_SOPT4_FTM0FLT2(x)                    (((uint32_t)(((uint32_t)(x)) << SIM_SOPT4_FTM0FLT2_SHIFT)) & SIM_SOPT4_FTM0FLT2_MASK)
-#define SIM_SOPT4_FTM1FLT0_MASK                  (0x10U)
-#define SIM_SOPT4_FTM1FLT0_SHIFT                 (4U)
-#define SIM_SOPT4_FTM1FLT0(x)                    (((uint32_t)(((uint32_t)(x)) << SIM_SOPT4_FTM1FLT0_SHIFT)) & SIM_SOPT4_FTM1FLT0_MASK)
-#define SIM_SOPT4_FTM2FLT0_MASK                  (0x100U)
-#define SIM_SOPT4_FTM2FLT0_SHIFT                 (8U)
-#define SIM_SOPT4_FTM2FLT0(x)                    (((uint32_t)(((uint32_t)(x)) << SIM_SOPT4_FTM2FLT0_SHIFT)) & SIM_SOPT4_FTM2FLT0_MASK)
-#define SIM_SOPT4_FTM3FLT0_MASK                  (0x1000U)
-#define SIM_SOPT4_FTM3FLT0_SHIFT                 (12U)
-#define SIM_SOPT4_FTM3FLT0(x)                    (((uint32_t)(((uint32_t)(x)) << SIM_SOPT4_FTM3FLT0_SHIFT)) & SIM_SOPT4_FTM3FLT0_MASK)
-#define SIM_SOPT4_FTM1CH0SRC_MASK                (0xC0000U)
-#define SIM_SOPT4_FTM1CH0SRC_SHIFT               (18U)
-#define SIM_SOPT4_FTM1CH0SRC(x)                  (((uint32_t)(((uint32_t)(x)) << SIM_SOPT4_FTM1CH0SRC_SHIFT)) & SIM_SOPT4_FTM1CH0SRC_MASK)
-#define SIM_SOPT4_FTM2CH0SRC_MASK                (0x300000U)
-#define SIM_SOPT4_FTM2CH0SRC_SHIFT               (20U)
-#define SIM_SOPT4_FTM2CH0SRC(x)                  (((uint32_t)(((uint32_t)(x)) << SIM_SOPT4_FTM2CH0SRC_SHIFT)) & SIM_SOPT4_FTM2CH0SRC_MASK)
-#define SIM_SOPT4_FTM0CLKSEL_MASK                (0x1000000U)
-#define SIM_SOPT4_FTM0CLKSEL_SHIFT               (24U)
-#define SIM_SOPT4_FTM0CLKSEL(x)                  (((uint32_t)(((uint32_t)(x)) << SIM_SOPT4_FTM0CLKSEL_SHIFT)) & SIM_SOPT4_FTM0CLKSEL_MASK)
-#define SIM_SOPT4_FTM1CLKSEL_MASK                (0x2000000U)
-#define SIM_SOPT4_FTM1CLKSEL_SHIFT               (25U)
-#define SIM_SOPT4_FTM1CLKSEL(x)                  (((uint32_t)(((uint32_t)(x)) << SIM_SOPT4_FTM1CLKSEL_SHIFT)) & SIM_SOPT4_FTM1CLKSEL_MASK)
-#define SIM_SOPT4_FTM2CLKSEL_MASK                (0x4000000U)
-#define SIM_SOPT4_FTM2CLKSEL_SHIFT               (26U)
-#define SIM_SOPT4_FTM2CLKSEL(x)                  (((uint32_t)(((uint32_t)(x)) << SIM_SOPT4_FTM2CLKSEL_SHIFT)) & SIM_SOPT4_FTM2CLKSEL_MASK)
-#define SIM_SOPT4_FTM3CLKSEL_MASK                (0x8000000U)
-#define SIM_SOPT4_FTM3CLKSEL_SHIFT               (27U)
-#define SIM_SOPT4_FTM3CLKSEL(x)                  (((uint32_t)(((uint32_t)(x)) << SIM_SOPT4_FTM3CLKSEL_SHIFT)) & SIM_SOPT4_FTM3CLKSEL_MASK)
-#define SIM_SOPT4_FTM0TRG0SRC_MASK               (0x10000000U)
-#define SIM_SOPT4_FTM0TRG0SRC_SHIFT              (28U)
-#define SIM_SOPT4_FTM0TRG0SRC(x)                 (((uint32_t)(((uint32_t)(x)) << SIM_SOPT4_FTM0TRG0SRC_SHIFT)) & SIM_SOPT4_FTM0TRG0SRC_MASK)
-#define SIM_SOPT4_FTM0TRG1SRC_MASK               (0x20000000U)
-#define SIM_SOPT4_FTM0TRG1SRC_SHIFT              (29U)
-#define SIM_SOPT4_FTM0TRG1SRC(x)                 (((uint32_t)(((uint32_t)(x)) << SIM_SOPT4_FTM0TRG1SRC_SHIFT)) & SIM_SOPT4_FTM0TRG1SRC_MASK)
-#define SIM_SOPT4_FTM3TRG0SRC_MASK               (0x40000000U)
-#define SIM_SOPT4_FTM3TRG0SRC_SHIFT              (30U)
-#define SIM_SOPT4_FTM3TRG0SRC(x)                 (((uint32_t)(((uint32_t)(x)) << SIM_SOPT4_FTM3TRG0SRC_SHIFT)) & SIM_SOPT4_FTM3TRG0SRC_MASK)
-#define SIM_SOPT4_FTM3TRG1SRC_MASK               (0x80000000U)
-#define SIM_SOPT4_FTM3TRG1SRC_SHIFT              (31U)
-#define SIM_SOPT4_FTM3TRG1SRC(x)                 (((uint32_t)(((uint32_t)(x)) << SIM_SOPT4_FTM3TRG1SRC_SHIFT)) & SIM_SOPT4_FTM3TRG1SRC_MASK)
-
-/*! @name SOPT5 - System Options Register 5 */
-#define SIM_SOPT5_UART0TXSRC_MASK                (0x3U)
-#define SIM_SOPT5_UART0TXSRC_SHIFT               (0U)
-#define SIM_SOPT5_UART0TXSRC(x)                  (((uint32_t)(((uint32_t)(x)) << SIM_SOPT5_UART0TXSRC_SHIFT)) & SIM_SOPT5_UART0TXSRC_MASK)
-#define SIM_SOPT5_UART0RXSRC_MASK                (0xCU)
-#define SIM_SOPT5_UART0RXSRC_SHIFT               (2U)
-#define SIM_SOPT5_UART0RXSRC(x)                  (((uint32_t)(((uint32_t)(x)) << SIM_SOPT5_UART0RXSRC_SHIFT)) & SIM_SOPT5_UART0RXSRC_MASK)
-#define SIM_SOPT5_UART1TXSRC_MASK                (0x30U)
-#define SIM_SOPT5_UART1TXSRC_SHIFT               (4U)
-#define SIM_SOPT5_UART1TXSRC(x)                  (((uint32_t)(((uint32_t)(x)) << SIM_SOPT5_UART1TXSRC_SHIFT)) & SIM_SOPT5_UART1TXSRC_MASK)
-#define SIM_SOPT5_UART1RXSRC_MASK                (0xC0U)
-#define SIM_SOPT5_UART1RXSRC_SHIFT               (6U)
-#define SIM_SOPT5_UART1RXSRC(x)                  (((uint32_t)(((uint32_t)(x)) << SIM_SOPT5_UART1RXSRC_SHIFT)) & SIM_SOPT5_UART1RXSRC_MASK)
-
-/*! @name SOPT7 - System Options Register 7 */
-#define SIM_SOPT7_ADC0TRGSEL_MASK                (0xFU)
-#define SIM_SOPT7_ADC0TRGSEL_SHIFT               (0U)
-#define SIM_SOPT7_ADC0TRGSEL(x)                  (((uint32_t)(((uint32_t)(x)) << SIM_SOPT7_ADC0TRGSEL_SHIFT)) & SIM_SOPT7_ADC0TRGSEL_MASK)
-#define SIM_SOPT7_ADC0PRETRGSEL_MASK             (0x10U)
-#define SIM_SOPT7_ADC0PRETRGSEL_SHIFT            (4U)
-#define SIM_SOPT7_ADC0PRETRGSEL(x)               (((uint32_t)(((uint32_t)(x)) << SIM_SOPT7_ADC0PRETRGSEL_SHIFT)) & SIM_SOPT7_ADC0PRETRGSEL_MASK)
-#define SIM_SOPT7_ADC0ALTTRGEN_MASK              (0x80U)
-#define SIM_SOPT7_ADC0ALTTRGEN_SHIFT             (7U)
-#define SIM_SOPT7_ADC0ALTTRGEN(x)                (((uint32_t)(((uint32_t)(x)) << SIM_SOPT7_ADC0ALTTRGEN_SHIFT)) & SIM_SOPT7_ADC0ALTTRGEN_MASK)
-#define SIM_SOPT7_ADC1TRGSEL_MASK                (0xF00U)
-#define SIM_SOPT7_ADC1TRGSEL_SHIFT               (8U)
-#define SIM_SOPT7_ADC1TRGSEL(x)                  (((uint32_t)(((uint32_t)(x)) << SIM_SOPT7_ADC1TRGSEL_SHIFT)) & SIM_SOPT7_ADC1TRGSEL_MASK)
-#define SIM_SOPT7_ADC1PRETRGSEL_MASK             (0x1000U)
-#define SIM_SOPT7_ADC1PRETRGSEL_SHIFT            (12U)
-#define SIM_SOPT7_ADC1PRETRGSEL(x)               (((uint32_t)(((uint32_t)(x)) << SIM_SOPT7_ADC1PRETRGSEL_SHIFT)) & SIM_SOPT7_ADC1PRETRGSEL_MASK)
-#define SIM_SOPT7_ADC1ALTTRGEN_MASK              (0x8000U)
-#define SIM_SOPT7_ADC1ALTTRGEN_SHIFT             (15U)
-#define SIM_SOPT7_ADC1ALTTRGEN(x)                (((uint32_t)(((uint32_t)(x)) << SIM_SOPT7_ADC1ALTTRGEN_SHIFT)) & SIM_SOPT7_ADC1ALTTRGEN_MASK)
-
-/*! @name SDID - System Device Identification Register */
-#define SIM_SDID_PINID_MASK                      (0xFU)
-#define SIM_SDID_PINID_SHIFT                     (0U)
-#define SIM_SDID_PINID(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SDID_PINID_SHIFT)) & SIM_SDID_PINID_MASK)
-#define SIM_SDID_FAMID_MASK                      (0x70U)
-#define SIM_SDID_FAMID_SHIFT                     (4U)
-#define SIM_SDID_FAMID(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SDID_FAMID_SHIFT)) & SIM_SDID_FAMID_MASK)
-#define SIM_SDID_DIEID_MASK                      (0xF80U)
-#define SIM_SDID_DIEID_SHIFT                     (7U)
-#define SIM_SDID_DIEID(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SDID_DIEID_SHIFT)) & SIM_SDID_DIEID_MASK)
-#define SIM_SDID_REVID_MASK                      (0xF000U)
-#define SIM_SDID_REVID_SHIFT                     (12U)
-#define SIM_SDID_REVID(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SDID_REVID_SHIFT)) & SIM_SDID_REVID_MASK)
-#define SIM_SDID_SERIESID_MASK                   (0xF00000U)
-#define SIM_SDID_SERIESID_SHIFT                  (20U)
-#define SIM_SDID_SERIESID(x)                     (((uint32_t)(((uint32_t)(x)) << SIM_SDID_SERIESID_SHIFT)) & SIM_SDID_SERIESID_MASK)
-#define SIM_SDID_SUBFAMID_MASK                   (0xF000000U)
-#define SIM_SDID_SUBFAMID_SHIFT                  (24U)
-#define SIM_SDID_SUBFAMID(x)                     (((uint32_t)(((uint32_t)(x)) << SIM_SDID_SUBFAMID_SHIFT)) & SIM_SDID_SUBFAMID_MASK)
-#define SIM_SDID_FAMILYID_MASK                   (0xF0000000U)
-#define SIM_SDID_FAMILYID_SHIFT                  (28U)
-#define SIM_SDID_FAMILYID(x)                     (((uint32_t)(((uint32_t)(x)) << SIM_SDID_FAMILYID_SHIFT)) & SIM_SDID_FAMILYID_MASK)
-
-/*! @name SCGC1 - System Clock Gating Control Register 1 */
-#define SIM_SCGC1_I2C2_MASK                      (0x40U)
-#define SIM_SCGC1_I2C2_SHIFT                     (6U)
-#define SIM_SCGC1_I2C2(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC1_I2C2_SHIFT)) & SIM_SCGC1_I2C2_MASK)
-#define SIM_SCGC1_UART4_MASK                     (0x400U)
-#define SIM_SCGC1_UART4_SHIFT                    (10U)
-#define SIM_SCGC1_UART4(x)                       (((uint32_t)(((uint32_t)(x)) << SIM_SCGC1_UART4_SHIFT)) & SIM_SCGC1_UART4_MASK)
-#define SIM_SCGC1_UART5_MASK                     (0x800U)
-#define SIM_SCGC1_UART5_SHIFT                    (11U)
-#define SIM_SCGC1_UART5(x)                       (((uint32_t)(((uint32_t)(x)) << SIM_SCGC1_UART5_SHIFT)) & SIM_SCGC1_UART5_MASK)
-
-/*! @name SCGC2 - System Clock Gating Control Register 2 */
-#define SIM_SCGC2_ENET_MASK                      (0x1U)
-#define SIM_SCGC2_ENET_SHIFT                     (0U)
-#define SIM_SCGC2_ENET(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC2_ENET_SHIFT)) & SIM_SCGC2_ENET_MASK)
-#define SIM_SCGC2_DAC0_MASK                      (0x1000U)
-#define SIM_SCGC2_DAC0_SHIFT                     (12U)
-#define SIM_SCGC2_DAC0(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC2_DAC0_SHIFT)) & SIM_SCGC2_DAC0_MASK)
-#define SIM_SCGC2_DAC1_MASK                      (0x2000U)
-#define SIM_SCGC2_DAC1_SHIFT                     (13U)
-#define SIM_SCGC2_DAC1(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC2_DAC1_SHIFT)) & SIM_SCGC2_DAC1_MASK)
-
-/*! @name SCGC3 - System Clock Gating Control Register 3 */
-#define SIM_SCGC3_RNGA_MASK                      (0x1U)
-#define SIM_SCGC3_RNGA_SHIFT                     (0U)
-#define SIM_SCGC3_RNGA(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC3_RNGA_SHIFT)) & SIM_SCGC3_RNGA_MASK)
-#define SIM_SCGC3_SPI2_MASK                      (0x1000U)
-#define SIM_SCGC3_SPI2_SHIFT                     (12U)
-#define SIM_SCGC3_SPI2(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC3_SPI2_SHIFT)) & SIM_SCGC3_SPI2_MASK)
-#define SIM_SCGC3_SDHC_MASK                      (0x20000U)
-#define SIM_SCGC3_SDHC_SHIFT                     (17U)
-#define SIM_SCGC3_SDHC(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC3_SDHC_SHIFT)) & SIM_SCGC3_SDHC_MASK)
-#define SIM_SCGC3_FTM2_MASK                      (0x1000000U)
-#define SIM_SCGC3_FTM2_SHIFT                     (24U)
-#define SIM_SCGC3_FTM2(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC3_FTM2_SHIFT)) & SIM_SCGC3_FTM2_MASK)
-#define SIM_SCGC3_FTM3_MASK                      (0x2000000U)
-#define SIM_SCGC3_FTM3_SHIFT                     (25U)
-#define SIM_SCGC3_FTM3(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC3_FTM3_SHIFT)) & SIM_SCGC3_FTM3_MASK)
-#define SIM_SCGC3_ADC1_MASK                      (0x8000000U)
-#define SIM_SCGC3_ADC1_SHIFT                     (27U)
-#define SIM_SCGC3_ADC1(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC3_ADC1_SHIFT)) & SIM_SCGC3_ADC1_MASK)
-
-/*! @name SCGC4 - System Clock Gating Control Register 4 */
-#define SIM_SCGC4_EWM_MASK                       (0x2U)
-#define SIM_SCGC4_EWM_SHIFT                      (1U)
-#define SIM_SCGC4_EWM(x)                         (((uint32_t)(((uint32_t)(x)) << SIM_SCGC4_EWM_SHIFT)) & SIM_SCGC4_EWM_MASK)
-#define SIM_SCGC4_CMT_MASK                       (0x4U)
-#define SIM_SCGC4_CMT_SHIFT                      (2U)
-#define SIM_SCGC4_CMT(x)                         (((uint32_t)(((uint32_t)(x)) << SIM_SCGC4_CMT_SHIFT)) & SIM_SCGC4_CMT_MASK)
-#define SIM_SCGC4_I2C0_MASK                      (0x40U)
-#define SIM_SCGC4_I2C0_SHIFT                     (6U)
-#define SIM_SCGC4_I2C0(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC4_I2C0_SHIFT)) & SIM_SCGC4_I2C0_MASK)
-#define SIM_SCGC4_I2C1_MASK                      (0x80U)
-#define SIM_SCGC4_I2C1_SHIFT                     (7U)
-#define SIM_SCGC4_I2C1(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC4_I2C1_SHIFT)) & SIM_SCGC4_I2C1_MASK)
-#define SIM_SCGC4_UART0_MASK                     (0x400U)
-#define SIM_SCGC4_UART0_SHIFT                    (10U)
-#define SIM_SCGC4_UART0(x)                       (((uint32_t)(((uint32_t)(x)) << SIM_SCGC4_UART0_SHIFT)) & SIM_SCGC4_UART0_MASK)
-#define SIM_SCGC4_UART1_MASK                     (0x800U)
-#define SIM_SCGC4_UART1_SHIFT                    (11U)
-#define SIM_SCGC4_UART1(x)                       (((uint32_t)(((uint32_t)(x)) << SIM_SCGC4_UART1_SHIFT)) & SIM_SCGC4_UART1_MASK)
-#define SIM_SCGC4_UART2_MASK                     (0x1000U)
-#define SIM_SCGC4_UART2_SHIFT                    (12U)
-#define SIM_SCGC4_UART2(x)                       (((uint32_t)(((uint32_t)(x)) << SIM_SCGC4_UART2_SHIFT)) & SIM_SCGC4_UART2_MASK)
-#define SIM_SCGC4_UART3_MASK                     (0x2000U)
-#define SIM_SCGC4_UART3_SHIFT                    (13U)
-#define SIM_SCGC4_UART3(x)                       (((uint32_t)(((uint32_t)(x)) << SIM_SCGC4_UART3_SHIFT)) & SIM_SCGC4_UART3_MASK)
-#define SIM_SCGC4_USBOTG_MASK                    (0x40000U)
-#define SIM_SCGC4_USBOTG_SHIFT                   (18U)
-#define SIM_SCGC4_USBOTG(x)                      (((uint32_t)(((uint32_t)(x)) << SIM_SCGC4_USBOTG_SHIFT)) & SIM_SCGC4_USBOTG_MASK)
-#define SIM_SCGC4_CMP_MASK                       (0x80000U)
-#define SIM_SCGC4_CMP_SHIFT                      (19U)
-#define SIM_SCGC4_CMP(x)                         (((uint32_t)(((uint32_t)(x)) << SIM_SCGC4_CMP_SHIFT)) & SIM_SCGC4_CMP_MASK)
-#define SIM_SCGC4_VREF_MASK                      (0x100000U)
-#define SIM_SCGC4_VREF_SHIFT                     (20U)
-#define SIM_SCGC4_VREF(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC4_VREF_SHIFT)) & SIM_SCGC4_VREF_MASK)
-
-/*! @name SCGC5 - System Clock Gating Control Register 5 */
-#define SIM_SCGC5_LPTMR_MASK                     (0x1U)
-#define SIM_SCGC5_LPTMR_SHIFT                    (0U)
-#define SIM_SCGC5_LPTMR(x)                       (((uint32_t)(((uint32_t)(x)) << SIM_SCGC5_LPTMR_SHIFT)) & SIM_SCGC5_LPTMR_MASK)
-#define SIM_SCGC5_PORTA_MASK                     (0x200U)
-#define SIM_SCGC5_PORTA_SHIFT                    (9U)
-#define SIM_SCGC5_PORTA(x)                       (((uint32_t)(((uint32_t)(x)) << SIM_SCGC5_PORTA_SHIFT)) & SIM_SCGC5_PORTA_MASK)
-#define SIM_SCGC5_PORTB_MASK                     (0x400U)
-#define SIM_SCGC5_PORTB_SHIFT                    (10U)
-#define SIM_SCGC5_PORTB(x)                       (((uint32_t)(((uint32_t)(x)) << SIM_SCGC5_PORTB_SHIFT)) & SIM_SCGC5_PORTB_MASK)
-#define SIM_SCGC5_PORTC_MASK                     (0x800U)
-#define SIM_SCGC5_PORTC_SHIFT                    (11U)
-#define SIM_SCGC5_PORTC(x)                       (((uint32_t)(((uint32_t)(x)) << SIM_SCGC5_PORTC_SHIFT)) & SIM_SCGC5_PORTC_MASK)
-#define SIM_SCGC5_PORTD_MASK                     (0x1000U)
-#define SIM_SCGC5_PORTD_SHIFT                    (12U)
-#define SIM_SCGC5_PORTD(x)                       (((uint32_t)(((uint32_t)(x)) << SIM_SCGC5_PORTD_SHIFT)) & SIM_SCGC5_PORTD_MASK)
-#define SIM_SCGC5_PORTE_MASK                     (0x2000U)
-#define SIM_SCGC5_PORTE_SHIFT                    (13U)
-#define SIM_SCGC5_PORTE(x)                       (((uint32_t)(((uint32_t)(x)) << SIM_SCGC5_PORTE_SHIFT)) & SIM_SCGC5_PORTE_MASK)
-
-/*! @name SCGC6 - System Clock Gating Control Register 6 */
-#define SIM_SCGC6_FTF_MASK                       (0x1U)
-#define SIM_SCGC6_FTF_SHIFT                      (0U)
-#define SIM_SCGC6_FTF(x)                         (((uint32_t)(((uint32_t)(x)) << SIM_SCGC6_FTF_SHIFT)) & SIM_SCGC6_FTF_MASK)
-#define SIM_SCGC6_DMAMUX_MASK                    (0x2U)
-#define SIM_SCGC6_DMAMUX_SHIFT                   (1U)
-#define SIM_SCGC6_DMAMUX(x)                      (((uint32_t)(((uint32_t)(x)) << SIM_SCGC6_DMAMUX_SHIFT)) & SIM_SCGC6_DMAMUX_MASK)
-#define SIM_SCGC6_FLEXCAN0_MASK                  (0x10U)
-#define SIM_SCGC6_FLEXCAN0_SHIFT                 (4U)
-#define SIM_SCGC6_FLEXCAN0(x)                    (((uint32_t)(((uint32_t)(x)) << SIM_SCGC6_FLEXCAN0_SHIFT)) & SIM_SCGC6_FLEXCAN0_MASK)
-#define SIM_SCGC6_RNGA_MASK                      (0x200U)
-#define SIM_SCGC6_RNGA_SHIFT                     (9U)
-#define SIM_SCGC6_RNGA(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC6_RNGA_SHIFT)) & SIM_SCGC6_RNGA_MASK)
-#define SIM_SCGC6_SPI0_MASK                      (0x1000U)
-#define SIM_SCGC6_SPI0_SHIFT                     (12U)
-#define SIM_SCGC6_SPI0(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC6_SPI0_SHIFT)) & SIM_SCGC6_SPI0_MASK)
-#define SIM_SCGC6_SPI1_MASK                      (0x2000U)
-#define SIM_SCGC6_SPI1_SHIFT                     (13U)
-#define SIM_SCGC6_SPI1(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC6_SPI1_SHIFT)) & SIM_SCGC6_SPI1_MASK)
-#define SIM_SCGC6_I2S_MASK                       (0x8000U)
-#define SIM_SCGC6_I2S_SHIFT                      (15U)
-#define SIM_SCGC6_I2S(x)                         (((uint32_t)(((uint32_t)(x)) << SIM_SCGC6_I2S_SHIFT)) & SIM_SCGC6_I2S_MASK)
-#define SIM_SCGC6_CRC_MASK                       (0x40000U)
-#define SIM_SCGC6_CRC_SHIFT                      (18U)
-#define SIM_SCGC6_CRC(x)                         (((uint32_t)(((uint32_t)(x)) << SIM_SCGC6_CRC_SHIFT)) & SIM_SCGC6_CRC_MASK)
-#define SIM_SCGC6_USBDCD_MASK                    (0x200000U)
-#define SIM_SCGC6_USBDCD_SHIFT                   (21U)
-#define SIM_SCGC6_USBDCD(x)                      (((uint32_t)(((uint32_t)(x)) << SIM_SCGC6_USBDCD_SHIFT)) & SIM_SCGC6_USBDCD_MASK)
-#define SIM_SCGC6_PDB_MASK                       (0x400000U)
-#define SIM_SCGC6_PDB_SHIFT                      (22U)
-#define SIM_SCGC6_PDB(x)                         (((uint32_t)(((uint32_t)(x)) << SIM_SCGC6_PDB_SHIFT)) & SIM_SCGC6_PDB_MASK)
-#define SIM_SCGC6_PIT_MASK                       (0x800000U)
-#define SIM_SCGC6_PIT_SHIFT                      (23U)
-#define SIM_SCGC6_PIT(x)                         (((uint32_t)(((uint32_t)(x)) << SIM_SCGC6_PIT_SHIFT)) & SIM_SCGC6_PIT_MASK)
-#define SIM_SCGC6_FTM0_MASK                      (0x1000000U)
-#define SIM_SCGC6_FTM0_SHIFT                     (24U)
-#define SIM_SCGC6_FTM0(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC6_FTM0_SHIFT)) & SIM_SCGC6_FTM0_MASK)
-#define SIM_SCGC6_FTM1_MASK                      (0x2000000U)
-#define SIM_SCGC6_FTM1_SHIFT                     (25U)
-#define SIM_SCGC6_FTM1(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC6_FTM1_SHIFT)) & SIM_SCGC6_FTM1_MASK)
-#define SIM_SCGC6_FTM2_MASK                      (0x4000000U)
-#define SIM_SCGC6_FTM2_SHIFT                     (26U)
-#define SIM_SCGC6_FTM2(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC6_FTM2_SHIFT)) & SIM_SCGC6_FTM2_MASK)
-#define SIM_SCGC6_ADC0_MASK                      (0x8000000U)
-#define SIM_SCGC6_ADC0_SHIFT                     (27U)
-#define SIM_SCGC6_ADC0(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC6_ADC0_SHIFT)) & SIM_SCGC6_ADC0_MASK)
-#define SIM_SCGC6_RTC_MASK                       (0x20000000U)
-#define SIM_SCGC6_RTC_SHIFT                      (29U)
-#define SIM_SCGC6_RTC(x)                         (((uint32_t)(((uint32_t)(x)) << SIM_SCGC6_RTC_SHIFT)) & SIM_SCGC6_RTC_MASK)
-#define SIM_SCGC6_DAC0_MASK                      (0x80000000U)
-#define SIM_SCGC6_DAC0_SHIFT                     (31U)
-#define SIM_SCGC6_DAC0(x)                        (((uint32_t)(((uint32_t)(x)) << SIM_SCGC6_DAC0_SHIFT)) & SIM_SCGC6_DAC0_MASK)
-
-/*! @name SCGC7 - System Clock Gating Control Register 7 */
-#define SIM_SCGC7_FLEXBUS_MASK                   (0x1U)
-#define SIM_SCGC7_FLEXBUS_SHIFT                  (0U)
-#define SIM_SCGC7_FLEXBUS(x)                     (((uint32_t)(((uint32_t)(x)) << SIM_SCGC7_FLEXBUS_SHIFT)) & SIM_SCGC7_FLEXBUS_MASK)
-#define SIM_SCGC7_DMA_MASK                       (0x2U)
-#define SIM_SCGC7_DMA_SHIFT                      (1U)
-#define SIM_SCGC7_DMA(x)                         (((uint32_t)(((uint32_t)(x)) << SIM_SCGC7_DMA_SHIFT)) & SIM_SCGC7_DMA_MASK)
-#define SIM_SCGC7_MPU_MASK                       (0x4U)
-#define SIM_SCGC7_MPU_SHIFT                      (2U)
-#define SIM_SCGC7_MPU(x)                         (((uint32_t)(((uint32_t)(x)) << SIM_SCGC7_MPU_SHIFT)) & SIM_SCGC7_MPU_MASK)
-
-/*! @name CLKDIV1 - System Clock Divider Register 1 */
-#define SIM_CLKDIV1_OUTDIV4_MASK                 (0xF0000U)
-#define SIM_CLKDIV1_OUTDIV4_SHIFT                (16U)
-#define SIM_CLKDIV1_OUTDIV4(x)                   (((uint32_t)(((uint32_t)(x)) << SIM_CLKDIV1_OUTDIV4_SHIFT)) & SIM_CLKDIV1_OUTDIV4_MASK)
-#define SIM_CLKDIV1_OUTDIV3_MASK                 (0xF00000U)
-#define SIM_CLKDIV1_OUTDIV3_SHIFT                (20U)
-#define SIM_CLKDIV1_OUTDIV3(x)                   (((uint32_t)(((uint32_t)(x)) << SIM_CLKDIV1_OUTDIV3_SHIFT)) & SIM_CLKDIV1_OUTDIV3_MASK)
-#define SIM_CLKDIV1_OUTDIV2_MASK                 (0xF000000U)
-#define SIM_CLKDIV1_OUTDIV2_SHIFT                (24U)
-#define SIM_CLKDIV1_OUTDIV2(x)                   (((uint32_t)(((uint32_t)(x)) << SIM_CLKDIV1_OUTDIV2_SHIFT)) & SIM_CLKDIV1_OUTDIV2_MASK)
-#define SIM_CLKDIV1_OUTDIV1_MASK                 (0xF0000000U)
-#define SIM_CLKDIV1_OUTDIV1_SHIFT                (28U)
-#define SIM_CLKDIV1_OUTDIV1(x)                   (((uint32_t)(((uint32_t)(x)) << SIM_CLKDIV1_OUTDIV1_SHIFT)) & SIM_CLKDIV1_OUTDIV1_MASK)
-
-/*! @name CLKDIV2 - System Clock Divider Register 2 */
-#define SIM_CLKDIV2_USBFRAC_MASK                 (0x1U)
-#define SIM_CLKDIV2_USBFRAC_SHIFT                (0U)
-#define SIM_CLKDIV2_USBFRAC(x)                   (((uint32_t)(((uint32_t)(x)) << SIM_CLKDIV2_USBFRAC_SHIFT)) & SIM_CLKDIV2_USBFRAC_MASK)
-#define SIM_CLKDIV2_USBDIV_MASK                  (0xEU)
-#define SIM_CLKDIV2_USBDIV_SHIFT                 (1U)
-#define SIM_CLKDIV2_USBDIV(x)                    (((uint32_t)(((uint32_t)(x)) << SIM_CLKDIV2_USBDIV_SHIFT)) & SIM_CLKDIV2_USBDIV_MASK)
-
-/*! @name FCFG1 - Flash Configuration Register 1 */
-#define SIM_FCFG1_FLASHDIS_MASK                  (0x1U)
-#define SIM_FCFG1_FLASHDIS_SHIFT                 (0U)
-#define SIM_FCFG1_FLASHDIS(x)                    (((uint32_t)(((uint32_t)(x)) << SIM_FCFG1_FLASHDIS_SHIFT)) & SIM_FCFG1_FLASHDIS_MASK)
-#define SIM_FCFG1_FLASHDOZE_MASK                 (0x2U)
-#define SIM_FCFG1_FLASHDOZE_SHIFT                (1U)
-#define SIM_FCFG1_FLASHDOZE(x)                   (((uint32_t)(((uint32_t)(x)) << SIM_FCFG1_FLASHDOZE_SHIFT)) & SIM_FCFG1_FLASHDOZE_MASK)
-#define SIM_FCFG1_DEPART_MASK                    (0xF00U)
-#define SIM_FCFG1_DEPART_SHIFT                   (8U)
-#define SIM_FCFG1_DEPART(x)                      (((uint32_t)(((uint32_t)(x)) << SIM_FCFG1_DEPART_SHIFT)) & SIM_FCFG1_DEPART_MASK)
-#define SIM_FCFG1_EESIZE_MASK                    (0xF0000U)
-#define SIM_FCFG1_EESIZE_SHIFT                   (16U)
-#define SIM_FCFG1_EESIZE(x)                      (((uint32_t)(((uint32_t)(x)) << SIM_FCFG1_EESIZE_SHIFT)) & SIM_FCFG1_EESIZE_MASK)
-#define SIM_FCFG1_PFSIZE_MASK                    (0xF000000U)
-#define SIM_FCFG1_PFSIZE_SHIFT                   (24U)
-#define SIM_FCFG1_PFSIZE(x)                      (((uint32_t)(((uint32_t)(x)) << SIM_FCFG1_PFSIZE_SHIFT)) & SIM_FCFG1_PFSIZE_MASK)
-#define SIM_FCFG1_NVMSIZE_MASK                   (0xF0000000U)
-#define SIM_FCFG1_NVMSIZE_SHIFT                  (28U)
-#define SIM_FCFG1_NVMSIZE(x)                     (((uint32_t)(((uint32_t)(x)) << SIM_FCFG1_NVMSIZE_SHIFT)) & SIM_FCFG1_NVMSIZE_MASK)
-
-/*! @name FCFG2 - Flash Configuration Register 2 */
-#define SIM_FCFG2_MAXADDR1_MASK                  (0x7F0000U)
-#define SIM_FCFG2_MAXADDR1_SHIFT                 (16U)
-#define SIM_FCFG2_MAXADDR1(x)                    (((uint32_t)(((uint32_t)(x)) << SIM_FCFG2_MAXADDR1_SHIFT)) & SIM_FCFG2_MAXADDR1_MASK)
-#define SIM_FCFG2_PFLSH_MASK                     (0x800000U)
-#define SIM_FCFG2_PFLSH_SHIFT                    (23U)
-#define SIM_FCFG2_PFLSH(x)                       (((uint32_t)(((uint32_t)(x)) << SIM_FCFG2_PFLSH_SHIFT)) & SIM_FCFG2_PFLSH_MASK)
-#define SIM_FCFG2_MAXADDR0_MASK                  (0x7F000000U)
-#define SIM_FCFG2_MAXADDR0_SHIFT                 (24U)
-#define SIM_FCFG2_MAXADDR0(x)                    (((uint32_t)(((uint32_t)(x)) << SIM_FCFG2_MAXADDR0_SHIFT)) & SIM_FCFG2_MAXADDR0_MASK)
-
-/*! @name UIDH - Unique Identification Register High */
-#define SIM_UIDH_UID_MASK                        (0xFFFFFFFFU)
-#define SIM_UIDH_UID_SHIFT                       (0U)
-#define SIM_UIDH_UID(x)                          (((uint32_t)(((uint32_t)(x)) << SIM_UIDH_UID_SHIFT)) & SIM_UIDH_UID_MASK)
-
-/*! @name UIDMH - Unique Identification Register Mid-High */
-#define SIM_UIDMH_UID_MASK                       (0xFFFFFFFFU)
-#define SIM_UIDMH_UID_SHIFT                      (0U)
-#define SIM_UIDMH_UID(x)                         (((uint32_t)(((uint32_t)(x)) << SIM_UIDMH_UID_SHIFT)) & SIM_UIDMH_UID_MASK)
-
-/*! @name UIDML - Unique Identification Register Mid Low */
-#define SIM_UIDML_UID_MASK                       (0xFFFFFFFFU)
-#define SIM_UIDML_UID_SHIFT                      (0U)
-#define SIM_UIDML_UID(x)                         (((uint32_t)(((uint32_t)(x)) << SIM_UIDML_UID_SHIFT)) & SIM_UIDML_UID_MASK)
-
-/*! @name UIDL - Unique Identification Register Low */
-#define SIM_UIDL_UID_MASK                        (0xFFFFFFFFU)
-#define SIM_UIDL_UID_SHIFT                       (0U)
-#define SIM_UIDL_UID(x)                          (((uint32_t)(((uint32_t)(x)) << SIM_UIDL_UID_SHIFT)) & SIM_UIDL_UID_MASK)
-
-
-/*!
- * @}
- */ /* end of group SIM_Register_Masks */
-
-
-/* SIM - Peripheral instance base addresses */
-/** Peripheral SIM base address */
-#define SIM_BASE                                 (0x40047000u)
-/** Peripheral SIM base pointer */
-#define SIM                                      ((SIM_Type *)SIM_BASE)
-/** Array initializer of SIM peripheral base addresses */
-#define SIM_BASE_ADDRS                           { SIM_BASE }
-/** Array initializer of SIM peripheral base pointers */
-#define SIM_BASE_PTRS                            { SIM }
-
-/*!
- * @}
- */ /* end of group SIM_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- SMC Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SMC_Peripheral_Access_Layer SMC Peripheral Access Layer
- * @{
- */
-
-/** SMC - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t PMPROT;                             /**< Power Mode Protection register, offset: 0x0 */
-  __IO uint8_t PMCTRL;                             /**< Power Mode Control register, offset: 0x1 */
-  __IO uint8_t VLLSCTRL;                           /**< VLLS Control register, offset: 0x2 */
-  __I  uint8_t PMSTAT;                             /**< Power Mode Status register, offset: 0x3 */
-} SMC_Type;
-
-/* ----------------------------------------------------------------------------
-   -- SMC Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SMC_Register_Masks SMC Register Masks
- * @{
- */
-
-/*! @name PMPROT - Power Mode Protection register */
-#define SMC_PMPROT_AVLLS_MASK                    (0x2U)
-#define SMC_PMPROT_AVLLS_SHIFT                   (1U)
-#define SMC_PMPROT_AVLLS(x)                      (((uint8_t)(((uint8_t)(x)) << SMC_PMPROT_AVLLS_SHIFT)) & SMC_PMPROT_AVLLS_MASK)
-#define SMC_PMPROT_ALLS_MASK                     (0x8U)
-#define SMC_PMPROT_ALLS_SHIFT                    (3U)
-#define SMC_PMPROT_ALLS(x)                       (((uint8_t)(((uint8_t)(x)) << SMC_PMPROT_ALLS_SHIFT)) & SMC_PMPROT_ALLS_MASK)
-#define SMC_PMPROT_AVLP_MASK                     (0x20U)
-#define SMC_PMPROT_AVLP_SHIFT                    (5U)
-#define SMC_PMPROT_AVLP(x)                       (((uint8_t)(((uint8_t)(x)) << SMC_PMPROT_AVLP_SHIFT)) & SMC_PMPROT_AVLP_MASK)
-
-/*! @name PMCTRL - Power Mode Control register */
-#define SMC_PMCTRL_STOPM_MASK                    (0x7U)
-#define SMC_PMCTRL_STOPM_SHIFT                   (0U)
-#define SMC_PMCTRL_STOPM(x)                      (((uint8_t)(((uint8_t)(x)) << SMC_PMCTRL_STOPM_SHIFT)) & SMC_PMCTRL_STOPM_MASK)
-#define SMC_PMCTRL_STOPA_MASK                    (0x8U)
-#define SMC_PMCTRL_STOPA_SHIFT                   (3U)
-#define SMC_PMCTRL_STOPA(x)                      (((uint8_t)(((uint8_t)(x)) << SMC_PMCTRL_STOPA_SHIFT)) & SMC_PMCTRL_STOPA_MASK)
-#define SMC_PMCTRL_RUNM_MASK                     (0x60U)
-#define SMC_PMCTRL_RUNM_SHIFT                    (5U)
-#define SMC_PMCTRL_RUNM(x)                       (((uint8_t)(((uint8_t)(x)) << SMC_PMCTRL_RUNM_SHIFT)) & SMC_PMCTRL_RUNM_MASK)
-#define SMC_PMCTRL_LPWUI_MASK                    (0x80U)
-#define SMC_PMCTRL_LPWUI_SHIFT                   (7U)
-#define SMC_PMCTRL_LPWUI(x)                      (((uint8_t)(((uint8_t)(x)) << SMC_PMCTRL_LPWUI_SHIFT)) & SMC_PMCTRL_LPWUI_MASK)
-
-/*! @name VLLSCTRL - VLLS Control register */
-#define SMC_VLLSCTRL_VLLSM_MASK                  (0x7U)
-#define SMC_VLLSCTRL_VLLSM_SHIFT                 (0U)
-#define SMC_VLLSCTRL_VLLSM(x)                    (((uint8_t)(((uint8_t)(x)) << SMC_VLLSCTRL_VLLSM_SHIFT)) & SMC_VLLSCTRL_VLLSM_MASK)
-#define SMC_VLLSCTRL_PORPO_MASK                  (0x20U)
-#define SMC_VLLSCTRL_PORPO_SHIFT                 (5U)
-#define SMC_VLLSCTRL_PORPO(x)                    (((uint8_t)(((uint8_t)(x)) << SMC_VLLSCTRL_PORPO_SHIFT)) & SMC_VLLSCTRL_PORPO_MASK)
-
-/*! @name PMSTAT - Power Mode Status register */
-#define SMC_PMSTAT_PMSTAT_MASK                   (0x7FU)
-#define SMC_PMSTAT_PMSTAT_SHIFT                  (0U)
-#define SMC_PMSTAT_PMSTAT(x)                     (((uint8_t)(((uint8_t)(x)) << SMC_PMSTAT_PMSTAT_SHIFT)) & SMC_PMSTAT_PMSTAT_MASK)
-
-
-/*!
- * @}
- */ /* end of group SMC_Register_Masks */
-
-
-/* SMC - Peripheral instance base addresses */
-/** Peripheral SMC base address */
-#define SMC_BASE                                 (0x4007E000u)
-/** Peripheral SMC base pointer */
-#define SMC                                      ((SMC_Type *)SMC_BASE)
-/** Array initializer of SMC peripheral base addresses */
-#define SMC_BASE_ADDRS                           { SMC_BASE }
-/** Array initializer of SMC peripheral base pointers */
-#define SMC_BASE_PTRS                            { SMC }
-
-/*!
- * @}
- */ /* end of group SMC_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- SPI Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SPI_Peripheral_Access_Layer SPI Peripheral Access Layer
- * @{
- */
-
-/** SPI - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t MCR;                               /**< Module Configuration Register, offset: 0x0 */
-       uint8_t RESERVED_0[4];
-  __IO uint32_t TCR;                               /**< Transfer Count Register, offset: 0x8 */
-  union {                                          /* offset: 0xC */
-    __IO uint32_t CTAR[2];                           /**< Clock and Transfer Attributes Register (In Master Mode), array offset: 0xC, array step: 0x4 */
-    __IO uint32_t CTAR_SLAVE[1];                     /**< Clock and Transfer Attributes Register (In Slave Mode), array offset: 0xC, array step: 0x4 */
-  };
-       uint8_t RESERVED_1[24];
-  __IO uint32_t SR;                                /**< Status Register, offset: 0x2C */
-  __IO uint32_t RSER;                              /**< DMA/Interrupt Request Select and Enable Register, offset: 0x30 */
-  union {                                          /* offset: 0x34 */
-    __IO uint32_t PUSHR;                             /**< PUSH TX FIFO Register In Master Mode, offset: 0x34 */
-    __IO uint32_t PUSHR_SLAVE;                       /**< PUSH TX FIFO Register In Slave Mode, offset: 0x34 */
-  };
-  __I  uint32_t POPR;                              /**< POP RX FIFO Register, offset: 0x38 */
-  __I  uint32_t TXFR0;                             /**< Transmit FIFO Registers, offset: 0x3C */
-  __I  uint32_t TXFR1;                             /**< Transmit FIFO Registers, offset: 0x40 */
-  __I  uint32_t TXFR2;                             /**< Transmit FIFO Registers, offset: 0x44 */
-  __I  uint32_t TXFR3;                             /**< Transmit FIFO Registers, offset: 0x48 */
-       uint8_t RESERVED_2[48];
-  __I  uint32_t RXFR0;                             /**< Receive FIFO Registers, offset: 0x7C */
-  __I  uint32_t RXFR1;                             /**< Receive FIFO Registers, offset: 0x80 */
-  __I  uint32_t RXFR2;                             /**< Receive FIFO Registers, offset: 0x84 */
-  __I  uint32_t RXFR3;                             /**< Receive FIFO Registers, offset: 0x88 */
-} SPI_Type;
-
-/* ----------------------------------------------------------------------------
-   -- SPI Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SPI_Register_Masks SPI Register Masks
- * @{
- */
-
-/*! @name MCR - Module Configuration Register */
-#define SPI_MCR_HALT_MASK                        (0x1U)
-#define SPI_MCR_HALT_SHIFT                       (0U)
-#define SPI_MCR_HALT(x)                          (((uint32_t)(((uint32_t)(x)) << SPI_MCR_HALT_SHIFT)) & SPI_MCR_HALT_MASK)
-#define SPI_MCR_SMPL_PT_MASK                     (0x300U)
-#define SPI_MCR_SMPL_PT_SHIFT                    (8U)
-#define SPI_MCR_SMPL_PT(x)                       (((uint32_t)(((uint32_t)(x)) << SPI_MCR_SMPL_PT_SHIFT)) & SPI_MCR_SMPL_PT_MASK)
-#define SPI_MCR_CLR_RXF_MASK                     (0x400U)
-#define SPI_MCR_CLR_RXF_SHIFT                    (10U)
-#define SPI_MCR_CLR_RXF(x)                       (((uint32_t)(((uint32_t)(x)) << SPI_MCR_CLR_RXF_SHIFT)) & SPI_MCR_CLR_RXF_MASK)
-#define SPI_MCR_CLR_TXF_MASK                     (0x800U)
-#define SPI_MCR_CLR_TXF_SHIFT                    (11U)
-#define SPI_MCR_CLR_TXF(x)                       (((uint32_t)(((uint32_t)(x)) << SPI_MCR_CLR_TXF_SHIFT)) & SPI_MCR_CLR_TXF_MASK)
-#define SPI_MCR_DIS_RXF_MASK                     (0x1000U)
-#define SPI_MCR_DIS_RXF_SHIFT                    (12U)
-#define SPI_MCR_DIS_RXF(x)                       (((uint32_t)(((uint32_t)(x)) << SPI_MCR_DIS_RXF_SHIFT)) & SPI_MCR_DIS_RXF_MASK)
-#define SPI_MCR_DIS_TXF_MASK                     (0x2000U)
-#define SPI_MCR_DIS_TXF_SHIFT                    (13U)
-#define SPI_MCR_DIS_TXF(x)                       (((uint32_t)(((uint32_t)(x)) << SPI_MCR_DIS_TXF_SHIFT)) & SPI_MCR_DIS_TXF_MASK)
-#define SPI_MCR_MDIS_MASK                        (0x4000U)
-#define SPI_MCR_MDIS_SHIFT                       (14U)
-#define SPI_MCR_MDIS(x)                          (((uint32_t)(((uint32_t)(x)) << SPI_MCR_MDIS_SHIFT)) & SPI_MCR_MDIS_MASK)
-#define SPI_MCR_DOZE_MASK                        (0x8000U)
-#define SPI_MCR_DOZE_SHIFT                       (15U)
-#define SPI_MCR_DOZE(x)                          (((uint32_t)(((uint32_t)(x)) << SPI_MCR_DOZE_SHIFT)) & SPI_MCR_DOZE_MASK)
-#define SPI_MCR_PCSIS_MASK                       (0x3F0000U)
-#define SPI_MCR_PCSIS_SHIFT                      (16U)
-#define SPI_MCR_PCSIS(x)                         (((uint32_t)(((uint32_t)(x)) << SPI_MCR_PCSIS_SHIFT)) & SPI_MCR_PCSIS_MASK)
-#define SPI_MCR_ROOE_MASK                        (0x1000000U)
-#define SPI_MCR_ROOE_SHIFT                       (24U)
-#define SPI_MCR_ROOE(x)                          (((uint32_t)(((uint32_t)(x)) << SPI_MCR_ROOE_SHIFT)) & SPI_MCR_ROOE_MASK)
-#define SPI_MCR_PCSSE_MASK                       (0x2000000U)
-#define SPI_MCR_PCSSE_SHIFT                      (25U)
-#define SPI_MCR_PCSSE(x)                         (((uint32_t)(((uint32_t)(x)) << SPI_MCR_PCSSE_SHIFT)) & SPI_MCR_PCSSE_MASK)
-#define SPI_MCR_MTFE_MASK                        (0x4000000U)
-#define SPI_MCR_MTFE_SHIFT                       (26U)
-#define SPI_MCR_MTFE(x)                          (((uint32_t)(((uint32_t)(x)) << SPI_MCR_MTFE_SHIFT)) & SPI_MCR_MTFE_MASK)
-#define SPI_MCR_FRZ_MASK                         (0x8000000U)
-#define SPI_MCR_FRZ_SHIFT                        (27U)
-#define SPI_MCR_FRZ(x)                           (((uint32_t)(((uint32_t)(x)) << SPI_MCR_FRZ_SHIFT)) & SPI_MCR_FRZ_MASK)
-#define SPI_MCR_DCONF_MASK                       (0x30000000U)
-#define SPI_MCR_DCONF_SHIFT                      (28U)
-#define SPI_MCR_DCONF(x)                         (((uint32_t)(((uint32_t)(x)) << SPI_MCR_DCONF_SHIFT)) & SPI_MCR_DCONF_MASK)
-#define SPI_MCR_CONT_SCKE_MASK                   (0x40000000U)
-#define SPI_MCR_CONT_SCKE_SHIFT                  (30U)
-#define SPI_MCR_CONT_SCKE(x)                     (((uint32_t)(((uint32_t)(x)) << SPI_MCR_CONT_SCKE_SHIFT)) & SPI_MCR_CONT_SCKE_MASK)
-#define SPI_MCR_MSTR_MASK                        (0x80000000U)
-#define SPI_MCR_MSTR_SHIFT                       (31U)
-#define SPI_MCR_MSTR(x)                          (((uint32_t)(((uint32_t)(x)) << SPI_MCR_MSTR_SHIFT)) & SPI_MCR_MSTR_MASK)
-
-/*! @name TCR - Transfer Count Register */
-#define SPI_TCR_SPI_TCNT_MASK                    (0xFFFF0000U)
-#define SPI_TCR_SPI_TCNT_SHIFT                   (16U)
-#define SPI_TCR_SPI_TCNT(x)                      (((uint32_t)(((uint32_t)(x)) << SPI_TCR_SPI_TCNT_SHIFT)) & SPI_TCR_SPI_TCNT_MASK)
-
-/*! @name CTAR - Clock and Transfer Attributes Register (In Master Mode) */
-#define SPI_CTAR_BR_MASK                         (0xFU)
-#define SPI_CTAR_BR_SHIFT                        (0U)
-#define SPI_CTAR_BR(x)                           (((uint32_t)(((uint32_t)(x)) << SPI_CTAR_BR_SHIFT)) & SPI_CTAR_BR_MASK)
-#define SPI_CTAR_DT_MASK                         (0xF0U)
-#define SPI_CTAR_DT_SHIFT                        (4U)
-#define SPI_CTAR_DT(x)                           (((uint32_t)(((uint32_t)(x)) << SPI_CTAR_DT_SHIFT)) & SPI_CTAR_DT_MASK)
-#define SPI_CTAR_ASC_MASK                        (0xF00U)
-#define SPI_CTAR_ASC_SHIFT                       (8U)
-#define SPI_CTAR_ASC(x)                          (((uint32_t)(((uint32_t)(x)) << SPI_CTAR_ASC_SHIFT)) & SPI_CTAR_ASC_MASK)
-#define SPI_CTAR_CSSCK_MASK                      (0xF000U)
-#define SPI_CTAR_CSSCK_SHIFT                     (12U)
-#define SPI_CTAR_CSSCK(x)                        (((uint32_t)(((uint32_t)(x)) << SPI_CTAR_CSSCK_SHIFT)) & SPI_CTAR_CSSCK_MASK)
-#define SPI_CTAR_PBR_MASK                        (0x30000U)
-#define SPI_CTAR_PBR_SHIFT                       (16U)
-#define SPI_CTAR_PBR(x)                          (((uint32_t)(((uint32_t)(x)) << SPI_CTAR_PBR_SHIFT)) & SPI_CTAR_PBR_MASK)
-#define SPI_CTAR_PDT_MASK                        (0xC0000U)
-#define SPI_CTAR_PDT_SHIFT                       (18U)
-#define SPI_CTAR_PDT(x)                          (((uint32_t)(((uint32_t)(x)) << SPI_CTAR_PDT_SHIFT)) & SPI_CTAR_PDT_MASK)
-#define SPI_CTAR_PASC_MASK                       (0x300000U)
-#define SPI_CTAR_PASC_SHIFT                      (20U)
-#define SPI_CTAR_PASC(x)                         (((uint32_t)(((uint32_t)(x)) << SPI_CTAR_PASC_SHIFT)) & SPI_CTAR_PASC_MASK)
-#define SPI_CTAR_PCSSCK_MASK                     (0xC00000U)
-#define SPI_CTAR_PCSSCK_SHIFT                    (22U)
-#define SPI_CTAR_PCSSCK(x)                       (((uint32_t)(((uint32_t)(x)) << SPI_CTAR_PCSSCK_SHIFT)) & SPI_CTAR_PCSSCK_MASK)
-#define SPI_CTAR_LSBFE_MASK                      (0x1000000U)
-#define SPI_CTAR_LSBFE_SHIFT                     (24U)
-#define SPI_CTAR_LSBFE(x)                        (((uint32_t)(((uint32_t)(x)) << SPI_CTAR_LSBFE_SHIFT)) & SPI_CTAR_LSBFE_MASK)
-#define SPI_CTAR_CPHA_MASK                       (0x2000000U)
-#define SPI_CTAR_CPHA_SHIFT                      (25U)
-#define SPI_CTAR_CPHA(x)                         (((uint32_t)(((uint32_t)(x)) << SPI_CTAR_CPHA_SHIFT)) & SPI_CTAR_CPHA_MASK)
-#define SPI_CTAR_CPOL_MASK                       (0x4000000U)
-#define SPI_CTAR_CPOL_SHIFT                      (26U)
-#define SPI_CTAR_CPOL(x)                         (((uint32_t)(((uint32_t)(x)) << SPI_CTAR_CPOL_SHIFT)) & SPI_CTAR_CPOL_MASK)
-#define SPI_CTAR_FMSZ_MASK                       (0x78000000U)
-#define SPI_CTAR_FMSZ_SHIFT                      (27U)
-#define SPI_CTAR_FMSZ(x)                         (((uint32_t)(((uint32_t)(x)) << SPI_CTAR_FMSZ_SHIFT)) & SPI_CTAR_FMSZ_MASK)
-#define SPI_CTAR_DBR_MASK                        (0x80000000U)
-#define SPI_CTAR_DBR_SHIFT                       (31U)
-#define SPI_CTAR_DBR(x)                          (((uint32_t)(((uint32_t)(x)) << SPI_CTAR_DBR_SHIFT)) & SPI_CTAR_DBR_MASK)
-
-/* The count of SPI_CTAR */
-#define SPI_CTAR_COUNT                           (2U)
-
-/*! @name CTAR_SLAVE - Clock and Transfer Attributes Register (In Slave Mode) */
-#define SPI_CTAR_SLAVE_CPHA_MASK                 (0x2000000U)
-#define SPI_CTAR_SLAVE_CPHA_SHIFT                (25U)
-#define SPI_CTAR_SLAVE_CPHA(x)                   (((uint32_t)(((uint32_t)(x)) << SPI_CTAR_SLAVE_CPHA_SHIFT)) & SPI_CTAR_SLAVE_CPHA_MASK)
-#define SPI_CTAR_SLAVE_CPOL_MASK                 (0x4000000U)
-#define SPI_CTAR_SLAVE_CPOL_SHIFT                (26U)
-#define SPI_CTAR_SLAVE_CPOL(x)                   (((uint32_t)(((uint32_t)(x)) << SPI_CTAR_SLAVE_CPOL_SHIFT)) & SPI_CTAR_SLAVE_CPOL_MASK)
-#define SPI_CTAR_SLAVE_FMSZ_MASK                 (0xF8000000U)
-#define SPI_CTAR_SLAVE_FMSZ_SHIFT                (27U)
-#define SPI_CTAR_SLAVE_FMSZ(x)                   (((uint32_t)(((uint32_t)(x)) << SPI_CTAR_SLAVE_FMSZ_SHIFT)) & SPI_CTAR_SLAVE_FMSZ_MASK)
-
-/* The count of SPI_CTAR_SLAVE */
-#define SPI_CTAR_SLAVE_COUNT                     (1U)
-
-/*! @name SR - Status Register */
-#define SPI_SR_POPNXTPTR_MASK                    (0xFU)
-#define SPI_SR_POPNXTPTR_SHIFT                   (0U)
-#define SPI_SR_POPNXTPTR(x)                      (((uint32_t)(((uint32_t)(x)) << SPI_SR_POPNXTPTR_SHIFT)) & SPI_SR_POPNXTPTR_MASK)
-#define SPI_SR_RXCTR_MASK                        (0xF0U)
-#define SPI_SR_RXCTR_SHIFT                       (4U)
-#define SPI_SR_RXCTR(x)                          (((uint32_t)(((uint32_t)(x)) << SPI_SR_RXCTR_SHIFT)) & SPI_SR_RXCTR_MASK)
-#define SPI_SR_TXNXTPTR_MASK                     (0xF00U)
-#define SPI_SR_TXNXTPTR_SHIFT                    (8U)
-#define SPI_SR_TXNXTPTR(x)                       (((uint32_t)(((uint32_t)(x)) << SPI_SR_TXNXTPTR_SHIFT)) & SPI_SR_TXNXTPTR_MASK)
-#define SPI_SR_TXCTR_MASK                        (0xF000U)
-#define SPI_SR_TXCTR_SHIFT                       (12U)
-#define SPI_SR_TXCTR(x)                          (((uint32_t)(((uint32_t)(x)) << SPI_SR_TXCTR_SHIFT)) & SPI_SR_TXCTR_MASK)
-#define SPI_SR_RFDF_MASK                         (0x20000U)
-#define SPI_SR_RFDF_SHIFT                        (17U)
-#define SPI_SR_RFDF(x)                           (((uint32_t)(((uint32_t)(x)) << SPI_SR_RFDF_SHIFT)) & SPI_SR_RFDF_MASK)
-#define SPI_SR_RFOF_MASK                         (0x80000U)
-#define SPI_SR_RFOF_SHIFT                        (19U)
-#define SPI_SR_RFOF(x)                           (((uint32_t)(((uint32_t)(x)) << SPI_SR_RFOF_SHIFT)) & SPI_SR_RFOF_MASK)
-#define SPI_SR_TFFF_MASK                         (0x2000000U)
-#define SPI_SR_TFFF_SHIFT                        (25U)
-#define SPI_SR_TFFF(x)                           (((uint32_t)(((uint32_t)(x)) << SPI_SR_TFFF_SHIFT)) & SPI_SR_TFFF_MASK)
-#define SPI_SR_TFUF_MASK                         (0x8000000U)
-#define SPI_SR_TFUF_SHIFT                        (27U)
-#define SPI_SR_TFUF(x)                           (((uint32_t)(((uint32_t)(x)) << SPI_SR_TFUF_SHIFT)) & SPI_SR_TFUF_MASK)
-#define SPI_SR_EOQF_MASK                         (0x10000000U)
-#define SPI_SR_EOQF_SHIFT                        (28U)
-#define SPI_SR_EOQF(x)                           (((uint32_t)(((uint32_t)(x)) << SPI_SR_EOQF_SHIFT)) & SPI_SR_EOQF_MASK)
-#define SPI_SR_TXRXS_MASK                        (0x40000000U)
-#define SPI_SR_TXRXS_SHIFT                       (30U)
-#define SPI_SR_TXRXS(x)                          (((uint32_t)(((uint32_t)(x)) << SPI_SR_TXRXS_SHIFT)) & SPI_SR_TXRXS_MASK)
-#define SPI_SR_TCF_MASK                          (0x80000000U)
-#define SPI_SR_TCF_SHIFT                         (31U)
-#define SPI_SR_TCF(x)                            (((uint32_t)(((uint32_t)(x)) << SPI_SR_TCF_SHIFT)) & SPI_SR_TCF_MASK)
-
-/*! @name RSER - DMA/Interrupt Request Select and Enable Register */
-#define SPI_RSER_RFDF_DIRS_MASK                  (0x10000U)
-#define SPI_RSER_RFDF_DIRS_SHIFT                 (16U)
-#define SPI_RSER_RFDF_DIRS(x)                    (((uint32_t)(((uint32_t)(x)) << SPI_RSER_RFDF_DIRS_SHIFT)) & SPI_RSER_RFDF_DIRS_MASK)
-#define SPI_RSER_RFDF_RE_MASK                    (0x20000U)
-#define SPI_RSER_RFDF_RE_SHIFT                   (17U)
-#define SPI_RSER_RFDF_RE(x)                      (((uint32_t)(((uint32_t)(x)) << SPI_RSER_RFDF_RE_SHIFT)) & SPI_RSER_RFDF_RE_MASK)
-#define SPI_RSER_RFOF_RE_MASK                    (0x80000U)
-#define SPI_RSER_RFOF_RE_SHIFT                   (19U)
-#define SPI_RSER_RFOF_RE(x)                      (((uint32_t)(((uint32_t)(x)) << SPI_RSER_RFOF_RE_SHIFT)) & SPI_RSER_RFOF_RE_MASK)
-#define SPI_RSER_TFFF_DIRS_MASK                  (0x1000000U)
-#define SPI_RSER_TFFF_DIRS_SHIFT                 (24U)
-#define SPI_RSER_TFFF_DIRS(x)                    (((uint32_t)(((uint32_t)(x)) << SPI_RSER_TFFF_DIRS_SHIFT)) & SPI_RSER_TFFF_DIRS_MASK)
-#define SPI_RSER_TFFF_RE_MASK                    (0x2000000U)
-#define SPI_RSER_TFFF_RE_SHIFT                   (25U)
-#define SPI_RSER_TFFF_RE(x)                      (((uint32_t)(((uint32_t)(x)) << SPI_RSER_TFFF_RE_SHIFT)) & SPI_RSER_TFFF_RE_MASK)
-#define SPI_RSER_TFUF_RE_MASK                    (0x8000000U)
-#define SPI_RSER_TFUF_RE_SHIFT                   (27U)
-#define SPI_RSER_TFUF_RE(x)                      (((uint32_t)(((uint32_t)(x)) << SPI_RSER_TFUF_RE_SHIFT)) & SPI_RSER_TFUF_RE_MASK)
-#define SPI_RSER_EOQF_RE_MASK                    (0x10000000U)
-#define SPI_RSER_EOQF_RE_SHIFT                   (28U)
-#define SPI_RSER_EOQF_RE(x)                      (((uint32_t)(((uint32_t)(x)) << SPI_RSER_EOQF_RE_SHIFT)) & SPI_RSER_EOQF_RE_MASK)
-#define SPI_RSER_TCF_RE_MASK                     (0x80000000U)
-#define SPI_RSER_TCF_RE_SHIFT                    (31U)
-#define SPI_RSER_TCF_RE(x)                       (((uint32_t)(((uint32_t)(x)) << SPI_RSER_TCF_RE_SHIFT)) & SPI_RSER_TCF_RE_MASK)
-
-/*! @name PUSHR - PUSH TX FIFO Register In Master Mode */
-#define SPI_PUSHR_TXDATA_MASK                    (0xFFFFU)
-#define SPI_PUSHR_TXDATA_SHIFT                   (0U)
-#define SPI_PUSHR_TXDATA(x)                      (((uint32_t)(((uint32_t)(x)) << SPI_PUSHR_TXDATA_SHIFT)) & SPI_PUSHR_TXDATA_MASK)
-#define SPI_PUSHR_PCS_MASK                       (0x3F0000U)
-#define SPI_PUSHR_PCS_SHIFT                      (16U)
-#define SPI_PUSHR_PCS(x)                         (((uint32_t)(((uint32_t)(x)) << SPI_PUSHR_PCS_SHIFT)) & SPI_PUSHR_PCS_MASK)
-#define SPI_PUSHR_CTCNT_MASK                     (0x4000000U)
-#define SPI_PUSHR_CTCNT_SHIFT                    (26U)
-#define SPI_PUSHR_CTCNT(x)                       (((uint32_t)(((uint32_t)(x)) << SPI_PUSHR_CTCNT_SHIFT)) & SPI_PUSHR_CTCNT_MASK)
-#define SPI_PUSHR_EOQ_MASK                       (0x8000000U)
-#define SPI_PUSHR_EOQ_SHIFT                      (27U)
-#define SPI_PUSHR_EOQ(x)                         (((uint32_t)(((uint32_t)(x)) << SPI_PUSHR_EOQ_SHIFT)) & SPI_PUSHR_EOQ_MASK)
-#define SPI_PUSHR_CTAS_MASK                      (0x70000000U)
-#define SPI_PUSHR_CTAS_SHIFT                     (28U)
-#define SPI_PUSHR_CTAS(x)                        (((uint32_t)(((uint32_t)(x)) << SPI_PUSHR_CTAS_SHIFT)) & SPI_PUSHR_CTAS_MASK)
-#define SPI_PUSHR_CONT_MASK                      (0x80000000U)
-#define SPI_PUSHR_CONT_SHIFT                     (31U)
-#define SPI_PUSHR_CONT(x)                        (((uint32_t)(((uint32_t)(x)) << SPI_PUSHR_CONT_SHIFT)) & SPI_PUSHR_CONT_MASK)
-
-/*! @name PUSHR_SLAVE - PUSH TX FIFO Register In Slave Mode */
-#define SPI_PUSHR_SLAVE_TXDATA_MASK              (0xFFFFFFFFU)
-#define SPI_PUSHR_SLAVE_TXDATA_SHIFT             (0U)
-#define SPI_PUSHR_SLAVE_TXDATA(x)                (((uint32_t)(((uint32_t)(x)) << SPI_PUSHR_SLAVE_TXDATA_SHIFT)) & SPI_PUSHR_SLAVE_TXDATA_MASK)
-
-/*! @name POPR - POP RX FIFO Register */
-#define SPI_POPR_RXDATA_MASK                     (0xFFFFFFFFU)
-#define SPI_POPR_RXDATA_SHIFT                    (0U)
-#define SPI_POPR_RXDATA(x)                       (((uint32_t)(((uint32_t)(x)) << SPI_POPR_RXDATA_SHIFT)) & SPI_POPR_RXDATA_MASK)
-
-/*! @name TXFR0 - Transmit FIFO Registers */
-#define SPI_TXFR0_TXDATA_MASK                    (0xFFFFU)
-#define SPI_TXFR0_TXDATA_SHIFT                   (0U)
-#define SPI_TXFR0_TXDATA(x)                      (((uint32_t)(((uint32_t)(x)) << SPI_TXFR0_TXDATA_SHIFT)) & SPI_TXFR0_TXDATA_MASK)
-#define SPI_TXFR0_TXCMD_TXDATA_MASK              (0xFFFF0000U)
-#define SPI_TXFR0_TXCMD_TXDATA_SHIFT             (16U)
-#define SPI_TXFR0_TXCMD_TXDATA(x)                (((uint32_t)(((uint32_t)(x)) << SPI_TXFR0_TXCMD_TXDATA_SHIFT)) & SPI_TXFR0_TXCMD_TXDATA_MASK)
-
-/*! @name TXFR1 - Transmit FIFO Registers */
-#define SPI_TXFR1_TXDATA_MASK                    (0xFFFFU)
-#define SPI_TXFR1_TXDATA_SHIFT                   (0U)
-#define SPI_TXFR1_TXDATA(x)                      (((uint32_t)(((uint32_t)(x)) << SPI_TXFR1_TXDATA_SHIFT)) & SPI_TXFR1_TXDATA_MASK)
-#define SPI_TXFR1_TXCMD_TXDATA_MASK              (0xFFFF0000U)
-#define SPI_TXFR1_TXCMD_TXDATA_SHIFT             (16U)
-#define SPI_TXFR1_TXCMD_TXDATA(x)                (((uint32_t)(((uint32_t)(x)) << SPI_TXFR1_TXCMD_TXDATA_SHIFT)) & SPI_TXFR1_TXCMD_TXDATA_MASK)
-
-/*! @name TXFR2 - Transmit FIFO Registers */
-#define SPI_TXFR2_TXDATA_MASK                    (0xFFFFU)
-#define SPI_TXFR2_TXDATA_SHIFT                   (0U)
-#define SPI_TXFR2_TXDATA(x)                      (((uint32_t)(((uint32_t)(x)) << SPI_TXFR2_TXDATA_SHIFT)) & SPI_TXFR2_TXDATA_MASK)
-#define SPI_TXFR2_TXCMD_TXDATA_MASK              (0xFFFF0000U)
-#define SPI_TXFR2_TXCMD_TXDATA_SHIFT             (16U)
-#define SPI_TXFR2_TXCMD_TXDATA(x)                (((uint32_t)(((uint32_t)(x)) << SPI_TXFR2_TXCMD_TXDATA_SHIFT)) & SPI_TXFR2_TXCMD_TXDATA_MASK)
-
-/*! @name TXFR3 - Transmit FIFO Registers */
-#define SPI_TXFR3_TXDATA_MASK                    (0xFFFFU)
-#define SPI_TXFR3_TXDATA_SHIFT                   (0U)
-#define SPI_TXFR3_TXDATA(x)                      (((uint32_t)(((uint32_t)(x)) << SPI_TXFR3_TXDATA_SHIFT)) & SPI_TXFR3_TXDATA_MASK)
-#define SPI_TXFR3_TXCMD_TXDATA_MASK              (0xFFFF0000U)
-#define SPI_TXFR3_TXCMD_TXDATA_SHIFT             (16U)
-#define SPI_TXFR3_TXCMD_TXDATA(x)                (((uint32_t)(((uint32_t)(x)) << SPI_TXFR3_TXCMD_TXDATA_SHIFT)) & SPI_TXFR3_TXCMD_TXDATA_MASK)
-
-/*! @name RXFR0 - Receive FIFO Registers */
-#define SPI_RXFR0_RXDATA_MASK                    (0xFFFFFFFFU)
-#define SPI_RXFR0_RXDATA_SHIFT                   (0U)
-#define SPI_RXFR0_RXDATA(x)                      (((uint32_t)(((uint32_t)(x)) << SPI_RXFR0_RXDATA_SHIFT)) & SPI_RXFR0_RXDATA_MASK)
-
-/*! @name RXFR1 - Receive FIFO Registers */
-#define SPI_RXFR1_RXDATA_MASK                    (0xFFFFFFFFU)
-#define SPI_RXFR1_RXDATA_SHIFT                   (0U)
-#define SPI_RXFR1_RXDATA(x)                      (((uint32_t)(((uint32_t)(x)) << SPI_RXFR1_RXDATA_SHIFT)) & SPI_RXFR1_RXDATA_MASK)
-
-/*! @name RXFR2 - Receive FIFO Registers */
-#define SPI_RXFR2_RXDATA_MASK                    (0xFFFFFFFFU)
-#define SPI_RXFR2_RXDATA_SHIFT                   (0U)
-#define SPI_RXFR2_RXDATA(x)                      (((uint32_t)(((uint32_t)(x)) << SPI_RXFR2_RXDATA_SHIFT)) & SPI_RXFR2_RXDATA_MASK)
-
-/*! @name RXFR3 - Receive FIFO Registers */
-#define SPI_RXFR3_RXDATA_MASK                    (0xFFFFFFFFU)
-#define SPI_RXFR3_RXDATA_SHIFT                   (0U)
-#define SPI_RXFR3_RXDATA(x)                      (((uint32_t)(((uint32_t)(x)) << SPI_RXFR3_RXDATA_SHIFT)) & SPI_RXFR3_RXDATA_MASK)
-
-
-/*!
- * @}
- */ /* end of group SPI_Register_Masks */
-
-
-/* SPI - Peripheral instance base addresses */
-/** Peripheral SPI0 base address */
-#define SPI0_BASE                                (0x4002C000u)
-/** Peripheral SPI0 base pointer */
-#define SPI0                                     ((SPI_Type *)SPI0_BASE)
-/** Peripheral SPI1 base address */
-#define SPI1_BASE                                (0x4002D000u)
-/** Peripheral SPI1 base pointer */
-#define SPI1                                     ((SPI_Type *)SPI1_BASE)
-/** Peripheral SPI2 base address */
-#define SPI2_BASE                                (0x400AC000u)
-/** Peripheral SPI2 base pointer */
-#define SPI2                                     ((SPI_Type *)SPI2_BASE)
-/** Array initializer of SPI peripheral base addresses */
-#define SPI_BASE_ADDRS                           { SPI0_BASE, SPI1_BASE, SPI2_BASE }
-/** Array initializer of SPI peripheral base pointers */
-#define SPI_BASE_PTRS                            { SPI0, SPI1, SPI2 }
-/** Interrupt vectors for the SPI peripheral type */
-#define SPI_IRQS                                 { SPI0_IRQn, SPI1_IRQn, SPI2_IRQn }
-
-/*!
- * @}
- */ /* end of group SPI_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- UART Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup UART_Peripheral_Access_Layer UART Peripheral Access Layer
- * @{
- */
-
-/** UART - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t BDH;                                /**< UART Baud Rate Registers: High, offset: 0x0 */
-  __IO uint8_t BDL;                                /**< UART Baud Rate Registers: Low, offset: 0x1 */
-  __IO uint8_t C1;                                 /**< UART Control Register 1, offset: 0x2 */
-  __IO uint8_t C2;                                 /**< UART Control Register 2, offset: 0x3 */
-  __I  uint8_t S1;                                 /**< UART Status Register 1, offset: 0x4 */
-  __IO uint8_t S2;                                 /**< UART Status Register 2, offset: 0x5 */
-  __IO uint8_t C3;                                 /**< UART Control Register 3, offset: 0x6 */
-  __IO uint8_t D;                                  /**< UART Data Register, offset: 0x7 */
-  __IO uint8_t MA1;                                /**< UART Match Address Registers 1, offset: 0x8 */
-  __IO uint8_t MA2;                                /**< UART Match Address Registers 2, offset: 0x9 */
-  __IO uint8_t C4;                                 /**< UART Control Register 4, offset: 0xA */
-  __IO uint8_t C5;                                 /**< UART Control Register 5, offset: 0xB */
-  __I  uint8_t ED;                                 /**< UART Extended Data Register, offset: 0xC */
-  __IO uint8_t MODEM;                              /**< UART Modem Register, offset: 0xD */
-  __IO uint8_t IR;                                 /**< UART Infrared Register, offset: 0xE */
-       uint8_t RESERVED_0[1];
-  __IO uint8_t PFIFO;                              /**< UART FIFO Parameters, offset: 0x10 */
-  __IO uint8_t CFIFO;                              /**< UART FIFO Control Register, offset: 0x11 */
-  __IO uint8_t SFIFO;                              /**< UART FIFO Status Register, offset: 0x12 */
-  __IO uint8_t TWFIFO;                             /**< UART FIFO Transmit Watermark, offset: 0x13 */
-  __I  uint8_t TCFIFO;                             /**< UART FIFO Transmit Count, offset: 0x14 */
-  __IO uint8_t RWFIFO;                             /**< UART FIFO Receive Watermark, offset: 0x15 */
-  __I  uint8_t RCFIFO;                             /**< UART FIFO Receive Count, offset: 0x16 */
-       uint8_t RESERVED_1[1];
-  __IO uint8_t C7816;                              /**< UART 7816 Control Register, offset: 0x18 */
-  __IO uint8_t IE7816;                             /**< UART 7816 Interrupt Enable Register, offset: 0x19 */
-  __IO uint8_t IS7816;                             /**< UART 7816 Interrupt Status Register, offset: 0x1A */
-  union {                                          /* offset: 0x1B */
-    __IO uint8_t WP7816T0;                           /**< UART 7816 Wait Parameter Register, offset: 0x1B */
-    __IO uint8_t WP7816T1;                           /**< UART 7816 Wait Parameter Register, offset: 0x1B */
-  };
-  __IO uint8_t WN7816;                             /**< UART 7816 Wait N Register, offset: 0x1C */
-  __IO uint8_t WF7816;                             /**< UART 7816 Wait FD Register, offset: 0x1D */
-  __IO uint8_t ET7816;                             /**< UART 7816 Error Threshold Register, offset: 0x1E */
-  __IO uint8_t TL7816;                             /**< UART 7816 Transmit Length Register, offset: 0x1F */
-} UART_Type;
-
-/* ----------------------------------------------------------------------------
-   -- UART Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup UART_Register_Masks UART Register Masks
- * @{
- */
-
-/*! @name BDH - UART Baud Rate Registers: High */
-#define UART_BDH_SBR_MASK                        (0x1FU)
-#define UART_BDH_SBR_SHIFT                       (0U)
-#define UART_BDH_SBR(x)                          (((uint8_t)(((uint8_t)(x)) << UART_BDH_SBR_SHIFT)) & UART_BDH_SBR_MASK)
-#define UART_BDH_SBNS_MASK                       (0x20U)
-#define UART_BDH_SBNS_SHIFT                      (5U)
-#define UART_BDH_SBNS(x)                         (((uint8_t)(((uint8_t)(x)) << UART_BDH_SBNS_SHIFT)) & UART_BDH_SBNS_MASK)
-#define UART_BDH_RXEDGIE_MASK                    (0x40U)
-#define UART_BDH_RXEDGIE_SHIFT                   (6U)
-#define UART_BDH_RXEDGIE(x)                      (((uint8_t)(((uint8_t)(x)) << UART_BDH_RXEDGIE_SHIFT)) & UART_BDH_RXEDGIE_MASK)
-#define UART_BDH_LBKDIE_MASK                     (0x80U)
-#define UART_BDH_LBKDIE_SHIFT                    (7U)
-#define UART_BDH_LBKDIE(x)                       (((uint8_t)(((uint8_t)(x)) << UART_BDH_LBKDIE_SHIFT)) & UART_BDH_LBKDIE_MASK)
-
-/*! @name BDL - UART Baud Rate Registers: Low */
-#define UART_BDL_SBR_MASK                        (0xFFU)
-#define UART_BDL_SBR_SHIFT                       (0U)
-#define UART_BDL_SBR(x)                          (((uint8_t)(((uint8_t)(x)) << UART_BDL_SBR_SHIFT)) & UART_BDL_SBR_MASK)
-
-/*! @name C1 - UART Control Register 1 */
-#define UART_C1_PT_MASK                          (0x1U)
-#define UART_C1_PT_SHIFT                         (0U)
-#define UART_C1_PT(x)                            (((uint8_t)(((uint8_t)(x)) << UART_C1_PT_SHIFT)) & UART_C1_PT_MASK)
-#define UART_C1_PE_MASK                          (0x2U)
-#define UART_C1_PE_SHIFT                         (1U)
-#define UART_C1_PE(x)                            (((uint8_t)(((uint8_t)(x)) << UART_C1_PE_SHIFT)) & UART_C1_PE_MASK)
-#define UART_C1_ILT_MASK                         (0x4U)
-#define UART_C1_ILT_SHIFT                        (2U)
-#define UART_C1_ILT(x)                           (((uint8_t)(((uint8_t)(x)) << UART_C1_ILT_SHIFT)) & UART_C1_ILT_MASK)
-#define UART_C1_WAKE_MASK                        (0x8U)
-#define UART_C1_WAKE_SHIFT                       (3U)
-#define UART_C1_WAKE(x)                          (((uint8_t)(((uint8_t)(x)) << UART_C1_WAKE_SHIFT)) & UART_C1_WAKE_MASK)
-#define UART_C1_M_MASK                           (0x10U)
-#define UART_C1_M_SHIFT                          (4U)
-#define UART_C1_M(x)                             (((uint8_t)(((uint8_t)(x)) << UART_C1_M_SHIFT)) & UART_C1_M_MASK)
-#define UART_C1_RSRC_MASK                        (0x20U)
-#define UART_C1_RSRC_SHIFT                       (5U)
-#define UART_C1_RSRC(x)                          (((uint8_t)(((uint8_t)(x)) << UART_C1_RSRC_SHIFT)) & UART_C1_RSRC_MASK)
-#define UART_C1_UARTSWAI_MASK                    (0x40U)
-#define UART_C1_UARTSWAI_SHIFT                   (6U)
-#define UART_C1_UARTSWAI(x)                      (((uint8_t)(((uint8_t)(x)) << UART_C1_UARTSWAI_SHIFT)) & UART_C1_UARTSWAI_MASK)
-#define UART_C1_LOOPS_MASK                       (0x80U)
-#define UART_C1_LOOPS_SHIFT                      (7U)
-#define UART_C1_LOOPS(x)                         (((uint8_t)(((uint8_t)(x)) << UART_C1_LOOPS_SHIFT)) & UART_C1_LOOPS_MASK)
-
-/*! @name C2 - UART Control Register 2 */
-#define UART_C2_SBK_MASK                         (0x1U)
-#define UART_C2_SBK_SHIFT                        (0U)
-#define UART_C2_SBK(x)                           (((uint8_t)(((uint8_t)(x)) << UART_C2_SBK_SHIFT)) & UART_C2_SBK_MASK)
-#define UART_C2_RWU_MASK                         (0x2U)
-#define UART_C2_RWU_SHIFT                        (1U)
-#define UART_C2_RWU(x)                           (((uint8_t)(((uint8_t)(x)) << UART_C2_RWU_SHIFT)) & UART_C2_RWU_MASK)
-#define UART_C2_RE_MASK                          (0x4U)
-#define UART_C2_RE_SHIFT                         (2U)
-#define UART_C2_RE(x)                            (((uint8_t)(((uint8_t)(x)) << UART_C2_RE_SHIFT)) & UART_C2_RE_MASK)
-#define UART_C2_TE_MASK                          (0x8U)
-#define UART_C2_TE_SHIFT                         (3U)
-#define UART_C2_TE(x)                            (((uint8_t)(((uint8_t)(x)) << UART_C2_TE_SHIFT)) & UART_C2_TE_MASK)
-#define UART_C2_ILIE_MASK                        (0x10U)
-#define UART_C2_ILIE_SHIFT                       (4U)
-#define UART_C2_ILIE(x)                          (((uint8_t)(((uint8_t)(x)) << UART_C2_ILIE_SHIFT)) & UART_C2_ILIE_MASK)
-#define UART_C2_RIE_MASK                         (0x20U)
-#define UART_C2_RIE_SHIFT                        (5U)
-#define UART_C2_RIE(x)                           (((uint8_t)(((uint8_t)(x)) << UART_C2_RIE_SHIFT)) & UART_C2_RIE_MASK)
-#define UART_C2_TCIE_MASK                        (0x40U)
-#define UART_C2_TCIE_SHIFT                       (6U)
-#define UART_C2_TCIE(x)                          (((uint8_t)(((uint8_t)(x)) << UART_C2_TCIE_SHIFT)) & UART_C2_TCIE_MASK)
-#define UART_C2_TIE_MASK                         (0x80U)
-#define UART_C2_TIE_SHIFT                        (7U)
-#define UART_C2_TIE(x)                           (((uint8_t)(((uint8_t)(x)) << UART_C2_TIE_SHIFT)) & UART_C2_TIE_MASK)
-
-/*! @name S1 - UART Status Register 1 */
-#define UART_S1_PF_MASK                          (0x1U)
-#define UART_S1_PF_SHIFT                         (0U)
-#define UART_S1_PF(x)                            (((uint8_t)(((uint8_t)(x)) << UART_S1_PF_SHIFT)) & UART_S1_PF_MASK)
-#define UART_S1_FE_MASK                          (0x2U)
-#define UART_S1_FE_SHIFT                         (1U)
-#define UART_S1_FE(x)                            (((uint8_t)(((uint8_t)(x)) << UART_S1_FE_SHIFT)) & UART_S1_FE_MASK)
-#define UART_S1_NF_MASK                          (0x4U)
-#define UART_S1_NF_SHIFT                         (2U)
-#define UART_S1_NF(x)                            (((uint8_t)(((uint8_t)(x)) << UART_S1_NF_SHIFT)) & UART_S1_NF_MASK)
-#define UART_S1_OR_MASK                          (0x8U)
-#define UART_S1_OR_SHIFT                         (3U)
-#define UART_S1_OR(x)                            (((uint8_t)(((uint8_t)(x)) << UART_S1_OR_SHIFT)) & UART_S1_OR_MASK)
-#define UART_S1_IDLE_MASK                        (0x10U)
-#define UART_S1_IDLE_SHIFT                       (4U)
-#define UART_S1_IDLE(x)                          (((uint8_t)(((uint8_t)(x)) << UART_S1_IDLE_SHIFT)) & UART_S1_IDLE_MASK)
-#define UART_S1_RDRF_MASK                        (0x20U)
-#define UART_S1_RDRF_SHIFT                       (5U)
-#define UART_S1_RDRF(x)                          (((uint8_t)(((uint8_t)(x)) << UART_S1_RDRF_SHIFT)) & UART_S1_RDRF_MASK)
-#define UART_S1_TC_MASK                          (0x40U)
-#define UART_S1_TC_SHIFT                         (6U)
-#define UART_S1_TC(x)                            (((uint8_t)(((uint8_t)(x)) << UART_S1_TC_SHIFT)) & UART_S1_TC_MASK)
-#define UART_S1_TDRE_MASK                        (0x80U)
-#define UART_S1_TDRE_SHIFT                       (7U)
-#define UART_S1_TDRE(x)                          (((uint8_t)(((uint8_t)(x)) << UART_S1_TDRE_SHIFT)) & UART_S1_TDRE_MASK)
-
-/*! @name S2 - UART Status Register 2 */
-#define UART_S2_RAF_MASK                         (0x1U)
-#define UART_S2_RAF_SHIFT                        (0U)
-#define UART_S2_RAF(x)                           (((uint8_t)(((uint8_t)(x)) << UART_S2_RAF_SHIFT)) & UART_S2_RAF_MASK)
-#define UART_S2_LBKDE_MASK                       (0x2U)
-#define UART_S2_LBKDE_SHIFT                      (1U)
-#define UART_S2_LBKDE(x)                         (((uint8_t)(((uint8_t)(x)) << UART_S2_LBKDE_SHIFT)) & UART_S2_LBKDE_MASK)
-#define UART_S2_BRK13_MASK                       (0x4U)
-#define UART_S2_BRK13_SHIFT                      (2U)
-#define UART_S2_BRK13(x)                         (((uint8_t)(((uint8_t)(x)) << UART_S2_BRK13_SHIFT)) & UART_S2_BRK13_MASK)
-#define UART_S2_RWUID_MASK                       (0x8U)
-#define UART_S2_RWUID_SHIFT                      (3U)
-#define UART_S2_RWUID(x)                         (((uint8_t)(((uint8_t)(x)) << UART_S2_RWUID_SHIFT)) & UART_S2_RWUID_MASK)
-#define UART_S2_RXINV_MASK                       (0x10U)
-#define UART_S2_RXINV_SHIFT                      (4U)
-#define UART_S2_RXINV(x)                         (((uint8_t)(((uint8_t)(x)) << UART_S2_RXINV_SHIFT)) & UART_S2_RXINV_MASK)
-#define UART_S2_MSBF_MASK                        (0x20U)
-#define UART_S2_MSBF_SHIFT                       (5U)
-#define UART_S2_MSBF(x)                          (((uint8_t)(((uint8_t)(x)) << UART_S2_MSBF_SHIFT)) & UART_S2_MSBF_MASK)
-#define UART_S2_RXEDGIF_MASK                     (0x40U)
-#define UART_S2_RXEDGIF_SHIFT                    (6U)
-#define UART_S2_RXEDGIF(x)                       (((uint8_t)(((uint8_t)(x)) << UART_S2_RXEDGIF_SHIFT)) & UART_S2_RXEDGIF_MASK)
-#define UART_S2_LBKDIF_MASK                      (0x80U)
-#define UART_S2_LBKDIF_SHIFT                     (7U)
-#define UART_S2_LBKDIF(x)                        (((uint8_t)(((uint8_t)(x)) << UART_S2_LBKDIF_SHIFT)) & UART_S2_LBKDIF_MASK)
-
-/*! @name C3 - UART Control Register 3 */
-#define UART_C3_PEIE_MASK                        (0x1U)
-#define UART_C3_PEIE_SHIFT                       (0U)
-#define UART_C3_PEIE(x)                          (((uint8_t)(((uint8_t)(x)) << UART_C3_PEIE_SHIFT)) & UART_C3_PEIE_MASK)
-#define UART_C3_FEIE_MASK                        (0x2U)
-#define UART_C3_FEIE_SHIFT                       (1U)
-#define UART_C3_FEIE(x)                          (((uint8_t)(((uint8_t)(x)) << UART_C3_FEIE_SHIFT)) & UART_C3_FEIE_MASK)
-#define UART_C3_NEIE_MASK                        (0x4U)
-#define UART_C3_NEIE_SHIFT                       (2U)
-#define UART_C3_NEIE(x)                          (((uint8_t)(((uint8_t)(x)) << UART_C3_NEIE_SHIFT)) & UART_C3_NEIE_MASK)
-#define UART_C3_ORIE_MASK                        (0x8U)
-#define UART_C3_ORIE_SHIFT                       (3U)
-#define UART_C3_ORIE(x)                          (((uint8_t)(((uint8_t)(x)) << UART_C3_ORIE_SHIFT)) & UART_C3_ORIE_MASK)
-#define UART_C3_TXINV_MASK                       (0x10U)
-#define UART_C3_TXINV_SHIFT                      (4U)
-#define UART_C3_TXINV(x)                         (((uint8_t)(((uint8_t)(x)) << UART_C3_TXINV_SHIFT)) & UART_C3_TXINV_MASK)
-#define UART_C3_TXDIR_MASK                       (0x20U)
-#define UART_C3_TXDIR_SHIFT                      (5U)
-#define UART_C3_TXDIR(x)                         (((uint8_t)(((uint8_t)(x)) << UART_C3_TXDIR_SHIFT)) & UART_C3_TXDIR_MASK)
-#define UART_C3_T8_MASK                          (0x40U)
-#define UART_C3_T8_SHIFT                         (6U)
-#define UART_C3_T8(x)                            (((uint8_t)(((uint8_t)(x)) << UART_C3_T8_SHIFT)) & UART_C3_T8_MASK)
-#define UART_C3_R8_MASK                          (0x80U)
-#define UART_C3_R8_SHIFT                         (7U)
-#define UART_C3_R8(x)                            (((uint8_t)(((uint8_t)(x)) << UART_C3_R8_SHIFT)) & UART_C3_R8_MASK)
-
-/*! @name D - UART Data Register */
-#define UART_D_RT_MASK                           (0xFFU)
-#define UART_D_RT_SHIFT                          (0U)
-#define UART_D_RT(x)                             (((uint8_t)(((uint8_t)(x)) << UART_D_RT_SHIFT)) & UART_D_RT_MASK)
-
-/*! @name MA1 - UART Match Address Registers 1 */
-#define UART_MA1_MA_MASK                         (0xFFU)
-#define UART_MA1_MA_SHIFT                        (0U)
-#define UART_MA1_MA(x)                           (((uint8_t)(((uint8_t)(x)) << UART_MA1_MA_SHIFT)) & UART_MA1_MA_MASK)
-
-/*! @name MA2 - UART Match Address Registers 2 */
-#define UART_MA2_MA_MASK                         (0xFFU)
-#define UART_MA2_MA_SHIFT                        (0U)
-#define UART_MA2_MA(x)                           (((uint8_t)(((uint8_t)(x)) << UART_MA2_MA_SHIFT)) & UART_MA2_MA_MASK)
-
-/*! @name C4 - UART Control Register 4 */
-#define UART_C4_BRFA_MASK                        (0x1FU)
-#define UART_C4_BRFA_SHIFT                       (0U)
-#define UART_C4_BRFA(x)                          (((uint8_t)(((uint8_t)(x)) << UART_C4_BRFA_SHIFT)) & UART_C4_BRFA_MASK)
-#define UART_C4_M10_MASK                         (0x20U)
-#define UART_C4_M10_SHIFT                        (5U)
-#define UART_C4_M10(x)                           (((uint8_t)(((uint8_t)(x)) << UART_C4_M10_SHIFT)) & UART_C4_M10_MASK)
-#define UART_C4_MAEN2_MASK                       (0x40U)
-#define UART_C4_MAEN2_SHIFT                      (6U)
-#define UART_C4_MAEN2(x)                         (((uint8_t)(((uint8_t)(x)) << UART_C4_MAEN2_SHIFT)) & UART_C4_MAEN2_MASK)
-#define UART_C4_MAEN1_MASK                       (0x80U)
-#define UART_C4_MAEN1_SHIFT                      (7U)
-#define UART_C4_MAEN1(x)                         (((uint8_t)(((uint8_t)(x)) << UART_C4_MAEN1_SHIFT)) & UART_C4_MAEN1_MASK)
-
-/*! @name C5 - UART Control Register 5 */
-#define UART_C5_LBKDDMAS_MASK                    (0x8U)
-#define UART_C5_LBKDDMAS_SHIFT                   (3U)
-#define UART_C5_LBKDDMAS(x)                      (((uint8_t)(((uint8_t)(x)) << UART_C5_LBKDDMAS_SHIFT)) & UART_C5_LBKDDMAS_MASK)
-#define UART_C5_ILDMAS_MASK                      (0x10U)
-#define UART_C5_ILDMAS_SHIFT                     (4U)
-#define UART_C5_ILDMAS(x)                        (((uint8_t)(((uint8_t)(x)) << UART_C5_ILDMAS_SHIFT)) & UART_C5_ILDMAS_MASK)
-#define UART_C5_RDMAS_MASK                       (0x20U)
-#define UART_C5_RDMAS_SHIFT                      (5U)
-#define UART_C5_RDMAS(x)                         (((uint8_t)(((uint8_t)(x)) << UART_C5_RDMAS_SHIFT)) & UART_C5_RDMAS_MASK)
-#define UART_C5_TCDMAS_MASK                      (0x40U)
-#define UART_C5_TCDMAS_SHIFT                     (6U)
-#define UART_C5_TCDMAS(x)                        (((uint8_t)(((uint8_t)(x)) << UART_C5_TCDMAS_SHIFT)) & UART_C5_TCDMAS_MASK)
-#define UART_C5_TDMAS_MASK                       (0x80U)
-#define UART_C5_TDMAS_SHIFT                      (7U)
-#define UART_C5_TDMAS(x)                         (((uint8_t)(((uint8_t)(x)) << UART_C5_TDMAS_SHIFT)) & UART_C5_TDMAS_MASK)
-
-/*! @name ED - UART Extended Data Register */
-#define UART_ED_PARITYE_MASK                     (0x40U)
-#define UART_ED_PARITYE_SHIFT                    (6U)
-#define UART_ED_PARITYE(x)                       (((uint8_t)(((uint8_t)(x)) << UART_ED_PARITYE_SHIFT)) & UART_ED_PARITYE_MASK)
-#define UART_ED_NOISY_MASK                       (0x80U)
-#define UART_ED_NOISY_SHIFT                      (7U)
-#define UART_ED_NOISY(x)                         (((uint8_t)(((uint8_t)(x)) << UART_ED_NOISY_SHIFT)) & UART_ED_NOISY_MASK)
-
-/*! @name MODEM - UART Modem Register */
-#define UART_MODEM_TXCTSE_MASK                   (0x1U)
-#define UART_MODEM_TXCTSE_SHIFT                  (0U)
-#define UART_MODEM_TXCTSE(x)                     (((uint8_t)(((uint8_t)(x)) << UART_MODEM_TXCTSE_SHIFT)) & UART_MODEM_TXCTSE_MASK)
-#define UART_MODEM_TXRTSE_MASK                   (0x2U)
-#define UART_MODEM_TXRTSE_SHIFT                  (1U)
-#define UART_MODEM_TXRTSE(x)                     (((uint8_t)(((uint8_t)(x)) << UART_MODEM_TXRTSE_SHIFT)) & UART_MODEM_TXRTSE_MASK)
-#define UART_MODEM_TXRTSPOL_MASK                 (0x4U)
-#define UART_MODEM_TXRTSPOL_SHIFT                (2U)
-#define UART_MODEM_TXRTSPOL(x)                   (((uint8_t)(((uint8_t)(x)) << UART_MODEM_TXRTSPOL_SHIFT)) & UART_MODEM_TXRTSPOL_MASK)
-#define UART_MODEM_RXRTSE_MASK                   (0x8U)
-#define UART_MODEM_RXRTSE_SHIFT                  (3U)
-#define UART_MODEM_RXRTSE(x)                     (((uint8_t)(((uint8_t)(x)) << UART_MODEM_RXRTSE_SHIFT)) & UART_MODEM_RXRTSE_MASK)
-
-/*! @name IR - UART Infrared Register */
-#define UART_IR_TNP_MASK                         (0x3U)
-#define UART_IR_TNP_SHIFT                        (0U)
-#define UART_IR_TNP(x)                           (((uint8_t)(((uint8_t)(x)) << UART_IR_TNP_SHIFT)) & UART_IR_TNP_MASK)
-#define UART_IR_IREN_MASK                        (0x4U)
-#define UART_IR_IREN_SHIFT                       (2U)
-#define UART_IR_IREN(x)                          (((uint8_t)(((uint8_t)(x)) << UART_IR_IREN_SHIFT)) & UART_IR_IREN_MASK)
-
-/*! @name PFIFO - UART FIFO Parameters */
-#define UART_PFIFO_RXFIFOSIZE_MASK               (0x7U)
-#define UART_PFIFO_RXFIFOSIZE_SHIFT              (0U)
-#define UART_PFIFO_RXFIFOSIZE(x)                 (((uint8_t)(((uint8_t)(x)) << UART_PFIFO_RXFIFOSIZE_SHIFT)) & UART_PFIFO_RXFIFOSIZE_MASK)
-#define UART_PFIFO_RXFE_MASK                     (0x8U)
-#define UART_PFIFO_RXFE_SHIFT                    (3U)
-#define UART_PFIFO_RXFE(x)                       (((uint8_t)(((uint8_t)(x)) << UART_PFIFO_RXFE_SHIFT)) & UART_PFIFO_RXFE_MASK)
-#define UART_PFIFO_TXFIFOSIZE_MASK               (0x70U)
-#define UART_PFIFO_TXFIFOSIZE_SHIFT              (4U)
-#define UART_PFIFO_TXFIFOSIZE(x)                 (((uint8_t)(((uint8_t)(x)) << UART_PFIFO_TXFIFOSIZE_SHIFT)) & UART_PFIFO_TXFIFOSIZE_MASK)
-#define UART_PFIFO_TXFE_MASK                     (0x80U)
-#define UART_PFIFO_TXFE_SHIFT                    (7U)
-#define UART_PFIFO_TXFE(x)                       (((uint8_t)(((uint8_t)(x)) << UART_PFIFO_TXFE_SHIFT)) & UART_PFIFO_TXFE_MASK)
-
-/*! @name CFIFO - UART FIFO Control Register */
-#define UART_CFIFO_RXUFE_MASK                    (0x1U)
-#define UART_CFIFO_RXUFE_SHIFT                   (0U)
-#define UART_CFIFO_RXUFE(x)                      (((uint8_t)(((uint8_t)(x)) << UART_CFIFO_RXUFE_SHIFT)) & UART_CFIFO_RXUFE_MASK)
-#define UART_CFIFO_TXOFE_MASK                    (0x2U)
-#define UART_CFIFO_TXOFE_SHIFT                   (1U)
-#define UART_CFIFO_TXOFE(x)                      (((uint8_t)(((uint8_t)(x)) << UART_CFIFO_TXOFE_SHIFT)) & UART_CFIFO_TXOFE_MASK)
-#define UART_CFIFO_RXOFE_MASK                    (0x4U)
-#define UART_CFIFO_RXOFE_SHIFT                   (2U)
-#define UART_CFIFO_RXOFE(x)                      (((uint8_t)(((uint8_t)(x)) << UART_CFIFO_RXOFE_SHIFT)) & UART_CFIFO_RXOFE_MASK)
-#define UART_CFIFO_RXFLUSH_MASK                  (0x40U)
-#define UART_CFIFO_RXFLUSH_SHIFT                 (6U)
-#define UART_CFIFO_RXFLUSH(x)                    (((uint8_t)(((uint8_t)(x)) << UART_CFIFO_RXFLUSH_SHIFT)) & UART_CFIFO_RXFLUSH_MASK)
-#define UART_CFIFO_TXFLUSH_MASK                  (0x80U)
-#define UART_CFIFO_TXFLUSH_SHIFT                 (7U)
-#define UART_CFIFO_TXFLUSH(x)                    (((uint8_t)(((uint8_t)(x)) << UART_CFIFO_TXFLUSH_SHIFT)) & UART_CFIFO_TXFLUSH_MASK)
-
-/*! @name SFIFO - UART FIFO Status Register */
-#define UART_SFIFO_RXUF_MASK                     (0x1U)
-#define UART_SFIFO_RXUF_SHIFT                    (0U)
-#define UART_SFIFO_RXUF(x)                       (((uint8_t)(((uint8_t)(x)) << UART_SFIFO_RXUF_SHIFT)) & UART_SFIFO_RXUF_MASK)
-#define UART_SFIFO_TXOF_MASK                     (0x2U)
-#define UART_SFIFO_TXOF_SHIFT                    (1U)
-#define UART_SFIFO_TXOF(x)                       (((uint8_t)(((uint8_t)(x)) << UART_SFIFO_TXOF_SHIFT)) & UART_SFIFO_TXOF_MASK)
-#define UART_SFIFO_RXOF_MASK                     (0x4U)
-#define UART_SFIFO_RXOF_SHIFT                    (2U)
-#define UART_SFIFO_RXOF(x)                       (((uint8_t)(((uint8_t)(x)) << UART_SFIFO_RXOF_SHIFT)) & UART_SFIFO_RXOF_MASK)
-#define UART_SFIFO_RXEMPT_MASK                   (0x40U)
-#define UART_SFIFO_RXEMPT_SHIFT                  (6U)
-#define UART_SFIFO_RXEMPT(x)                     (((uint8_t)(((uint8_t)(x)) << UART_SFIFO_RXEMPT_SHIFT)) & UART_SFIFO_RXEMPT_MASK)
-#define UART_SFIFO_TXEMPT_MASK                   (0x80U)
-#define UART_SFIFO_TXEMPT_SHIFT                  (7U)
-#define UART_SFIFO_TXEMPT(x)                     (((uint8_t)(((uint8_t)(x)) << UART_SFIFO_TXEMPT_SHIFT)) & UART_SFIFO_TXEMPT_MASK)
-
-/*! @name TWFIFO - UART FIFO Transmit Watermark */
-#define UART_TWFIFO_TXWATER_MASK                 (0xFFU)
-#define UART_TWFIFO_TXWATER_SHIFT                (0U)
-#define UART_TWFIFO_TXWATER(x)                   (((uint8_t)(((uint8_t)(x)) << UART_TWFIFO_TXWATER_SHIFT)) & UART_TWFIFO_TXWATER_MASK)
-
-/*! @name TCFIFO - UART FIFO Transmit Count */
-#define UART_TCFIFO_TXCOUNT_MASK                 (0xFFU)
-#define UART_TCFIFO_TXCOUNT_SHIFT                (0U)
-#define UART_TCFIFO_TXCOUNT(x)                   (((uint8_t)(((uint8_t)(x)) << UART_TCFIFO_TXCOUNT_SHIFT)) & UART_TCFIFO_TXCOUNT_MASK)
-
-/*! @name RWFIFO - UART FIFO Receive Watermark */
-#define UART_RWFIFO_RXWATER_MASK                 (0xFFU)
-#define UART_RWFIFO_RXWATER_SHIFT                (0U)
-#define UART_RWFIFO_RXWATER(x)                   (((uint8_t)(((uint8_t)(x)) << UART_RWFIFO_RXWATER_SHIFT)) & UART_RWFIFO_RXWATER_MASK)
-
-/*! @name RCFIFO - UART FIFO Receive Count */
-#define UART_RCFIFO_RXCOUNT_MASK                 (0xFFU)
-#define UART_RCFIFO_RXCOUNT_SHIFT                (0U)
-#define UART_RCFIFO_RXCOUNT(x)                   (((uint8_t)(((uint8_t)(x)) << UART_RCFIFO_RXCOUNT_SHIFT)) & UART_RCFIFO_RXCOUNT_MASK)
-
-/*! @name C7816 - UART 7816 Control Register */
-#define UART_C7816_ISO_7816E_MASK                (0x1U)
-#define UART_C7816_ISO_7816E_SHIFT               (0U)
-#define UART_C7816_ISO_7816E(x)                  (((uint8_t)(((uint8_t)(x)) << UART_C7816_ISO_7816E_SHIFT)) & UART_C7816_ISO_7816E_MASK)
-#define UART_C7816_TTYPE_MASK                    (0x2U)
-#define UART_C7816_TTYPE_SHIFT                   (1U)
-#define UART_C7816_TTYPE(x)                      (((uint8_t)(((uint8_t)(x)) << UART_C7816_TTYPE_SHIFT)) & UART_C7816_TTYPE_MASK)
-#define UART_C7816_INIT_MASK                     (0x4U)
-#define UART_C7816_INIT_SHIFT                    (2U)
-#define UART_C7816_INIT(x)                       (((uint8_t)(((uint8_t)(x)) << UART_C7816_INIT_SHIFT)) & UART_C7816_INIT_MASK)
-#define UART_C7816_ANACK_MASK                    (0x8U)
-#define UART_C7816_ANACK_SHIFT                   (3U)
-#define UART_C7816_ANACK(x)                      (((uint8_t)(((uint8_t)(x)) << UART_C7816_ANACK_SHIFT)) & UART_C7816_ANACK_MASK)
-#define UART_C7816_ONACK_MASK                    (0x10U)
-#define UART_C7816_ONACK_SHIFT                   (4U)
-#define UART_C7816_ONACK(x)                      (((uint8_t)(((uint8_t)(x)) << UART_C7816_ONACK_SHIFT)) & UART_C7816_ONACK_MASK)
-
-/*! @name IE7816 - UART 7816 Interrupt Enable Register */
-#define UART_IE7816_RXTE_MASK                    (0x1U)
-#define UART_IE7816_RXTE_SHIFT                   (0U)
-#define UART_IE7816_RXTE(x)                      (((uint8_t)(((uint8_t)(x)) << UART_IE7816_RXTE_SHIFT)) & UART_IE7816_RXTE_MASK)
-#define UART_IE7816_TXTE_MASK                    (0x2U)
-#define UART_IE7816_TXTE_SHIFT                   (1U)
-#define UART_IE7816_TXTE(x)                      (((uint8_t)(((uint8_t)(x)) << UART_IE7816_TXTE_SHIFT)) & UART_IE7816_TXTE_MASK)
-#define UART_IE7816_GTVE_MASK                    (0x4U)
-#define UART_IE7816_GTVE_SHIFT                   (2U)
-#define UART_IE7816_GTVE(x)                      (((uint8_t)(((uint8_t)(x)) << UART_IE7816_GTVE_SHIFT)) & UART_IE7816_GTVE_MASK)
-#define UART_IE7816_INITDE_MASK                  (0x10U)
-#define UART_IE7816_INITDE_SHIFT                 (4U)
-#define UART_IE7816_INITDE(x)                    (((uint8_t)(((uint8_t)(x)) << UART_IE7816_INITDE_SHIFT)) & UART_IE7816_INITDE_MASK)
-#define UART_IE7816_BWTE_MASK                    (0x20U)
-#define UART_IE7816_BWTE_SHIFT                   (5U)
-#define UART_IE7816_BWTE(x)                      (((uint8_t)(((uint8_t)(x)) << UART_IE7816_BWTE_SHIFT)) & UART_IE7816_BWTE_MASK)
-#define UART_IE7816_CWTE_MASK                    (0x40U)
-#define UART_IE7816_CWTE_SHIFT                   (6U)
-#define UART_IE7816_CWTE(x)                      (((uint8_t)(((uint8_t)(x)) << UART_IE7816_CWTE_SHIFT)) & UART_IE7816_CWTE_MASK)
-#define UART_IE7816_WTE_MASK                     (0x80U)
-#define UART_IE7816_WTE_SHIFT                    (7U)
-#define UART_IE7816_WTE(x)                       (((uint8_t)(((uint8_t)(x)) << UART_IE7816_WTE_SHIFT)) & UART_IE7816_WTE_MASK)
-
-/*! @name IS7816 - UART 7816 Interrupt Status Register */
-#define UART_IS7816_RXT_MASK                     (0x1U)
-#define UART_IS7816_RXT_SHIFT                    (0U)
-#define UART_IS7816_RXT(x)                       (((uint8_t)(((uint8_t)(x)) << UART_IS7816_RXT_SHIFT)) & UART_IS7816_RXT_MASK)
-#define UART_IS7816_TXT_MASK                     (0x2U)
-#define UART_IS7816_TXT_SHIFT                    (1U)
-#define UART_IS7816_TXT(x)                       (((uint8_t)(((uint8_t)(x)) << UART_IS7816_TXT_SHIFT)) & UART_IS7816_TXT_MASK)
-#define UART_IS7816_GTV_MASK                     (0x4U)
-#define UART_IS7816_GTV_SHIFT                    (2U)
-#define UART_IS7816_GTV(x)                       (((uint8_t)(((uint8_t)(x)) << UART_IS7816_GTV_SHIFT)) & UART_IS7816_GTV_MASK)
-#define UART_IS7816_INITD_MASK                   (0x10U)
-#define UART_IS7816_INITD_SHIFT                  (4U)
-#define UART_IS7816_INITD(x)                     (((uint8_t)(((uint8_t)(x)) << UART_IS7816_INITD_SHIFT)) & UART_IS7816_INITD_MASK)
-#define UART_IS7816_BWT_MASK                     (0x20U)
-#define UART_IS7816_BWT_SHIFT                    (5U)
-#define UART_IS7816_BWT(x)                       (((uint8_t)(((uint8_t)(x)) << UART_IS7816_BWT_SHIFT)) & UART_IS7816_BWT_MASK)
-#define UART_IS7816_CWT_MASK                     (0x40U)
-#define UART_IS7816_CWT_SHIFT                    (6U)
-#define UART_IS7816_CWT(x)                       (((uint8_t)(((uint8_t)(x)) << UART_IS7816_CWT_SHIFT)) & UART_IS7816_CWT_MASK)
-#define UART_IS7816_WT_MASK                      (0x80U)
-#define UART_IS7816_WT_SHIFT                     (7U)
-#define UART_IS7816_WT(x)                        (((uint8_t)(((uint8_t)(x)) << UART_IS7816_WT_SHIFT)) & UART_IS7816_WT_MASK)
-
-/*! @name WP7816T0 - UART 7816 Wait Parameter Register */
-#define UART_WP7816T0_WI_MASK                    (0xFFU)
-#define UART_WP7816T0_WI_SHIFT                   (0U)
-#define UART_WP7816T0_WI(x)                      (((uint8_t)(((uint8_t)(x)) << UART_WP7816T0_WI_SHIFT)) & UART_WP7816T0_WI_MASK)
-
-/*! @name WP7816T1 - UART 7816 Wait Parameter Register */
-#define UART_WP7816T1_BWI_MASK                   (0xFU)
-#define UART_WP7816T1_BWI_SHIFT                  (0U)
-#define UART_WP7816T1_BWI(x)                     (((uint8_t)(((uint8_t)(x)) << UART_WP7816T1_BWI_SHIFT)) & UART_WP7816T1_BWI_MASK)
-#define UART_WP7816T1_CWI_MASK                   (0xF0U)
-#define UART_WP7816T1_CWI_SHIFT                  (4U)
-#define UART_WP7816T1_CWI(x)                     (((uint8_t)(((uint8_t)(x)) << UART_WP7816T1_CWI_SHIFT)) & UART_WP7816T1_CWI_MASK)
-
-/*! @name WN7816 - UART 7816 Wait N Register */
-#define UART_WN7816_GTN_MASK                     (0xFFU)
-#define UART_WN7816_GTN_SHIFT                    (0U)
-#define UART_WN7816_GTN(x)                       (((uint8_t)(((uint8_t)(x)) << UART_WN7816_GTN_SHIFT)) & UART_WN7816_GTN_MASK)
-
-/*! @name WF7816 - UART 7816 Wait FD Register */
-#define UART_WF7816_GTFD_MASK                    (0xFFU)
-#define UART_WF7816_GTFD_SHIFT                   (0U)
-#define UART_WF7816_GTFD(x)                      (((uint8_t)(((uint8_t)(x)) << UART_WF7816_GTFD_SHIFT)) & UART_WF7816_GTFD_MASK)
-
-/*! @name ET7816 - UART 7816 Error Threshold Register */
-#define UART_ET7816_RXTHRESHOLD_MASK             (0xFU)
-#define UART_ET7816_RXTHRESHOLD_SHIFT            (0U)
-#define UART_ET7816_RXTHRESHOLD(x)               (((uint8_t)(((uint8_t)(x)) << UART_ET7816_RXTHRESHOLD_SHIFT)) & UART_ET7816_RXTHRESHOLD_MASK)
-#define UART_ET7816_TXTHRESHOLD_MASK             (0xF0U)
-#define UART_ET7816_TXTHRESHOLD_SHIFT            (4U)
-#define UART_ET7816_TXTHRESHOLD(x)               (((uint8_t)(((uint8_t)(x)) << UART_ET7816_TXTHRESHOLD_SHIFT)) & UART_ET7816_TXTHRESHOLD_MASK)
-
-/*! @name TL7816 - UART 7816 Transmit Length Register */
-#define UART_TL7816_TLEN_MASK                    (0xFFU)
-#define UART_TL7816_TLEN_SHIFT                   (0U)
-#define UART_TL7816_TLEN(x)                      (((uint8_t)(((uint8_t)(x)) << UART_TL7816_TLEN_SHIFT)) & UART_TL7816_TLEN_MASK)
-
-
-/*!
- * @}
- */ /* end of group UART_Register_Masks */
-
-
-/* UART - Peripheral instance base addresses */
-/** Peripheral UART0 base address */
-#define UART0_BASE                               (0x4006A000u)
-/** Peripheral UART0 base pointer */
-#define UART0                                    ((UART_Type *)UART0_BASE)
-/** Peripheral UART1 base address */
-#define UART1_BASE                               (0x4006B000u)
-/** Peripheral UART1 base pointer */
-#define UART1                                    ((UART_Type *)UART1_BASE)
-/** Peripheral UART2 base address */
-#define UART2_BASE                               (0x4006C000u)
-/** Peripheral UART2 base pointer */
-#define UART2                                    ((UART_Type *)UART2_BASE)
-/** Peripheral UART3 base address */
-#define UART3_BASE                               (0x4006D000u)
-/** Peripheral UART3 base pointer */
-#define UART3                                    ((UART_Type *)UART3_BASE)
-/** Peripheral UART4 base address */
-#define UART4_BASE                               (0x400EA000u)
-/** Peripheral UART4 base pointer */
-#define UART4                                    ((UART_Type *)UART4_BASE)
-/** Peripheral UART5 base address */
-#define UART5_BASE                               (0x400EB000u)
-/** Peripheral UART5 base pointer */
-#define UART5                                    ((UART_Type *)UART5_BASE)
-/** Array initializer of UART peripheral base addresses */
-#define UART_BASE_ADDRS                          { UART0_BASE, UART1_BASE, UART2_BASE, UART3_BASE, UART4_BASE, UART5_BASE }
-/** Array initializer of UART peripheral base pointers */
-#define UART_BASE_PTRS                           { UART0, UART1, UART2, UART3, UART4, UART5 }
-/** Interrupt vectors for the UART peripheral type */
-#define UART_RX_TX_IRQS                          { UART0_RX_TX_IRQn, UART1_RX_TX_IRQn, UART2_RX_TX_IRQn, UART3_RX_TX_IRQn, UART4_RX_TX_IRQn, UART5_RX_TX_IRQn }
-#define UART_ERR_IRQS                            { UART0_ERR_IRQn, UART1_ERR_IRQn, UART2_ERR_IRQn, UART3_ERR_IRQn, UART4_ERR_IRQn, UART5_ERR_IRQn }
-#define UART_LON_IRQS                            { UART0_LON_IRQn, NotAvail_IRQn, NotAvail_IRQn, NotAvail_IRQn, NotAvail_IRQn, NotAvail_IRQn }
-
-/*!
- * @}
- */ /* end of group UART_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- USB Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup USB_Peripheral_Access_Layer USB Peripheral Access Layer
- * @{
- */
-
-/** USB - Register Layout Typedef */
-typedef struct {
-  __I  uint8_t PERID;                              /**< Peripheral ID register, offset: 0x0 */
-       uint8_t RESERVED_0[3];
-  __I  uint8_t IDCOMP;                             /**< Peripheral ID Complement register, offset: 0x4 */
-       uint8_t RESERVED_1[3];
-  __I  uint8_t REV;                                /**< Peripheral Revision register, offset: 0x8 */
-       uint8_t RESERVED_2[3];
-  __I  uint8_t ADDINFO;                            /**< Peripheral Additional Info register, offset: 0xC */
-       uint8_t RESERVED_3[3];
-  __IO uint8_t OTGISTAT;                           /**< OTG Interrupt Status register, offset: 0x10 */
-       uint8_t RESERVED_4[3];
-  __IO uint8_t OTGICR;                             /**< OTG Interrupt Control register, offset: 0x14 */
-       uint8_t RESERVED_5[3];
-  __IO uint8_t OTGSTAT;                            /**< OTG Status register, offset: 0x18 */
-       uint8_t RESERVED_6[3];
-  __IO uint8_t OTGCTL;                             /**< OTG Control register, offset: 0x1C */
-       uint8_t RESERVED_7[99];
-  __IO uint8_t ISTAT;                              /**< Interrupt Status register, offset: 0x80 */
-       uint8_t RESERVED_8[3];
-  __IO uint8_t INTEN;                              /**< Interrupt Enable register, offset: 0x84 */
-       uint8_t RESERVED_9[3];
-  __IO uint8_t ERRSTAT;                            /**< Error Interrupt Status register, offset: 0x88 */
-       uint8_t RESERVED_10[3];
-  __IO uint8_t ERREN;                              /**< Error Interrupt Enable register, offset: 0x8C */
-       uint8_t RESERVED_11[3];
-  __I  uint8_t STAT;                               /**< Status register, offset: 0x90 */
-       uint8_t RESERVED_12[3];
-  __IO uint8_t CTL;                                /**< Control register, offset: 0x94 */
-       uint8_t RESERVED_13[3];
-  __IO uint8_t ADDR;                               /**< Address register, offset: 0x98 */
-       uint8_t RESERVED_14[3];
-  __IO uint8_t BDTPAGE1;                           /**< BDT Page register 1, offset: 0x9C */
-       uint8_t RESERVED_15[3];
-  __IO uint8_t FRMNUML;                            /**< Frame Number register Low, offset: 0xA0 */
-       uint8_t RESERVED_16[3];
-  __IO uint8_t FRMNUMH;                            /**< Frame Number register High, offset: 0xA4 */
-       uint8_t RESERVED_17[3];
-  __IO uint8_t TOKEN;                              /**< Token register, offset: 0xA8 */
-       uint8_t RESERVED_18[3];
-  __IO uint8_t SOFTHLD;                            /**< SOF Threshold register, offset: 0xAC */
-       uint8_t RESERVED_19[3];
-  __IO uint8_t BDTPAGE2;                           /**< BDT Page Register 2, offset: 0xB0 */
-       uint8_t RESERVED_20[3];
-  __IO uint8_t BDTPAGE3;                           /**< BDT Page Register 3, offset: 0xB4 */
-       uint8_t RESERVED_21[11];
-  struct {                                         /* offset: 0xC0, array step: 0x4 */
-    __IO uint8_t ENDPT;                              /**< Endpoint Control register, array offset: 0xC0, array step: 0x4 */
-         uint8_t RESERVED_0[3];
-  } ENDPOINT[16];
-  __IO uint8_t USBCTRL;                            /**< USB Control register, offset: 0x100 */
-       uint8_t RESERVED_22[3];
-  __I  uint8_t OBSERVE;                            /**< USB OTG Observe register, offset: 0x104 */
-       uint8_t RESERVED_23[3];
-  __IO uint8_t CONTROL;                            /**< USB OTG Control register, offset: 0x108 */
-       uint8_t RESERVED_24[3];
-  __IO uint8_t USBTRC0;                            /**< USB Transceiver Control register 0, offset: 0x10C */
-       uint8_t RESERVED_25[7];
-  __IO uint8_t USBFRMADJUST;                       /**< Frame Adjust Register, offset: 0x114 */
-       uint8_t RESERVED_26[43];
-  __IO uint8_t CLK_RECOVER_CTRL;                   /**< USB Clock recovery control, offset: 0x140 */
-       uint8_t RESERVED_27[3];
-  __IO uint8_t CLK_RECOVER_IRC_EN;                 /**< IRC48M oscillator enable register, offset: 0x144 */
-       uint8_t RESERVED_28[23];
-  __IO uint8_t CLK_RECOVER_INT_STATUS;             /**< Clock recovery separated interrupt status, offset: 0x15C */
-} USB_Type;
-
-/* ----------------------------------------------------------------------------
-   -- USB Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup USB_Register_Masks USB Register Masks
- * @{
- */
-
-/*! @name PERID - Peripheral ID register */
-#define USB_PERID_ID_MASK                        (0x3FU)
-#define USB_PERID_ID_SHIFT                       (0U)
-#define USB_PERID_ID(x)                          (((uint8_t)(((uint8_t)(x)) << USB_PERID_ID_SHIFT)) & USB_PERID_ID_MASK)
-
-/*! @name IDCOMP - Peripheral ID Complement register */
-#define USB_IDCOMP_NID_MASK                      (0x3FU)
-#define USB_IDCOMP_NID_SHIFT                     (0U)
-#define USB_IDCOMP_NID(x)                        (((uint8_t)(((uint8_t)(x)) << USB_IDCOMP_NID_SHIFT)) & USB_IDCOMP_NID_MASK)
-
-/*! @name REV - Peripheral Revision register */
-#define USB_REV_REV_MASK                         (0xFFU)
-#define USB_REV_REV_SHIFT                        (0U)
-#define USB_REV_REV(x)                           (((uint8_t)(((uint8_t)(x)) << USB_REV_REV_SHIFT)) & USB_REV_REV_MASK)
-
-/*! @name ADDINFO - Peripheral Additional Info register */
-#define USB_ADDINFO_IEHOST_MASK                  (0x1U)
-#define USB_ADDINFO_IEHOST_SHIFT                 (0U)
-#define USB_ADDINFO_IEHOST(x)                    (((uint8_t)(((uint8_t)(x)) << USB_ADDINFO_IEHOST_SHIFT)) & USB_ADDINFO_IEHOST_MASK)
-#define USB_ADDINFO_IRQNUM_MASK                  (0xF8U)
-#define USB_ADDINFO_IRQNUM_SHIFT                 (3U)
-#define USB_ADDINFO_IRQNUM(x)                    (((uint8_t)(((uint8_t)(x)) << USB_ADDINFO_IRQNUM_SHIFT)) & USB_ADDINFO_IRQNUM_MASK)
-
-/*! @name OTGISTAT - OTG Interrupt Status register */
-#define USB_OTGISTAT_AVBUSCHG_MASK               (0x1U)
-#define USB_OTGISTAT_AVBUSCHG_SHIFT              (0U)
-#define USB_OTGISTAT_AVBUSCHG(x)                 (((uint8_t)(((uint8_t)(x)) << USB_OTGISTAT_AVBUSCHG_SHIFT)) & USB_OTGISTAT_AVBUSCHG_MASK)
-#define USB_OTGISTAT_B_SESS_CHG_MASK             (0x4U)
-#define USB_OTGISTAT_B_SESS_CHG_SHIFT            (2U)
-#define USB_OTGISTAT_B_SESS_CHG(x)               (((uint8_t)(((uint8_t)(x)) << USB_OTGISTAT_B_SESS_CHG_SHIFT)) & USB_OTGISTAT_B_SESS_CHG_MASK)
-#define USB_OTGISTAT_SESSVLDCHG_MASK             (0x8U)
-#define USB_OTGISTAT_SESSVLDCHG_SHIFT            (3U)
-#define USB_OTGISTAT_SESSVLDCHG(x)               (((uint8_t)(((uint8_t)(x)) << USB_OTGISTAT_SESSVLDCHG_SHIFT)) & USB_OTGISTAT_SESSVLDCHG_MASK)
-#define USB_OTGISTAT_LINE_STATE_CHG_MASK         (0x20U)
-#define USB_OTGISTAT_LINE_STATE_CHG_SHIFT        (5U)
-#define USB_OTGISTAT_LINE_STATE_CHG(x)           (((uint8_t)(((uint8_t)(x)) << USB_OTGISTAT_LINE_STATE_CHG_SHIFT)) & USB_OTGISTAT_LINE_STATE_CHG_MASK)
-#define USB_OTGISTAT_ONEMSEC_MASK                (0x40U)
-#define USB_OTGISTAT_ONEMSEC_SHIFT               (6U)
-#define USB_OTGISTAT_ONEMSEC(x)                  (((uint8_t)(((uint8_t)(x)) << USB_OTGISTAT_ONEMSEC_SHIFT)) & USB_OTGISTAT_ONEMSEC_MASK)
-#define USB_OTGISTAT_IDCHG_MASK                  (0x80U)
-#define USB_OTGISTAT_IDCHG_SHIFT                 (7U)
-#define USB_OTGISTAT_IDCHG(x)                    (((uint8_t)(((uint8_t)(x)) << USB_OTGISTAT_IDCHG_SHIFT)) & USB_OTGISTAT_IDCHG_MASK)
-
-/*! @name OTGICR - OTG Interrupt Control register */
-#define USB_OTGICR_AVBUSEN_MASK                  (0x1U)
-#define USB_OTGICR_AVBUSEN_SHIFT                 (0U)
-#define USB_OTGICR_AVBUSEN(x)                    (((uint8_t)(((uint8_t)(x)) << USB_OTGICR_AVBUSEN_SHIFT)) & USB_OTGICR_AVBUSEN_MASK)
-#define USB_OTGICR_BSESSEN_MASK                  (0x4U)
-#define USB_OTGICR_BSESSEN_SHIFT                 (2U)
-#define USB_OTGICR_BSESSEN(x)                    (((uint8_t)(((uint8_t)(x)) << USB_OTGICR_BSESSEN_SHIFT)) & USB_OTGICR_BSESSEN_MASK)
-#define USB_OTGICR_SESSVLDEN_MASK                (0x8U)
-#define USB_OTGICR_SESSVLDEN_SHIFT               (3U)
-#define USB_OTGICR_SESSVLDEN(x)                  (((uint8_t)(((uint8_t)(x)) << USB_OTGICR_SESSVLDEN_SHIFT)) & USB_OTGICR_SESSVLDEN_MASK)
-#define USB_OTGICR_LINESTATEEN_MASK              (0x20U)
-#define USB_OTGICR_LINESTATEEN_SHIFT             (5U)
-#define USB_OTGICR_LINESTATEEN(x)                (((uint8_t)(((uint8_t)(x)) << USB_OTGICR_LINESTATEEN_SHIFT)) & USB_OTGICR_LINESTATEEN_MASK)
-#define USB_OTGICR_ONEMSECEN_MASK                (0x40U)
-#define USB_OTGICR_ONEMSECEN_SHIFT               (6U)
-#define USB_OTGICR_ONEMSECEN(x)                  (((uint8_t)(((uint8_t)(x)) << USB_OTGICR_ONEMSECEN_SHIFT)) & USB_OTGICR_ONEMSECEN_MASK)
-#define USB_OTGICR_IDEN_MASK                     (0x80U)
-#define USB_OTGICR_IDEN_SHIFT                    (7U)
-#define USB_OTGICR_IDEN(x)                       (((uint8_t)(((uint8_t)(x)) << USB_OTGICR_IDEN_SHIFT)) & USB_OTGICR_IDEN_MASK)
-
-/*! @name OTGSTAT - OTG Status register */
-#define USB_OTGSTAT_AVBUSVLD_MASK                (0x1U)
-#define USB_OTGSTAT_AVBUSVLD_SHIFT               (0U)
-#define USB_OTGSTAT_AVBUSVLD(x)                  (((uint8_t)(((uint8_t)(x)) << USB_OTGSTAT_AVBUSVLD_SHIFT)) & USB_OTGSTAT_AVBUSVLD_MASK)
-#define USB_OTGSTAT_BSESSEND_MASK                (0x4U)
-#define USB_OTGSTAT_BSESSEND_SHIFT               (2U)
-#define USB_OTGSTAT_BSESSEND(x)                  (((uint8_t)(((uint8_t)(x)) << USB_OTGSTAT_BSESSEND_SHIFT)) & USB_OTGSTAT_BSESSEND_MASK)
-#define USB_OTGSTAT_SESS_VLD_MASK                (0x8U)
-#define USB_OTGSTAT_SESS_VLD_SHIFT               (3U)
-#define USB_OTGSTAT_SESS_VLD(x)                  (((uint8_t)(((uint8_t)(x)) << USB_OTGSTAT_SESS_VLD_SHIFT)) & USB_OTGSTAT_SESS_VLD_MASK)
-#define USB_OTGSTAT_LINESTATESTABLE_MASK         (0x20U)
-#define USB_OTGSTAT_LINESTATESTABLE_SHIFT        (5U)
-#define USB_OTGSTAT_LINESTATESTABLE(x)           (((uint8_t)(((uint8_t)(x)) << USB_OTGSTAT_LINESTATESTABLE_SHIFT)) & USB_OTGSTAT_LINESTATESTABLE_MASK)
-#define USB_OTGSTAT_ONEMSECEN_MASK               (0x40U)
-#define USB_OTGSTAT_ONEMSECEN_SHIFT              (6U)
-#define USB_OTGSTAT_ONEMSECEN(x)                 (((uint8_t)(((uint8_t)(x)) << USB_OTGSTAT_ONEMSECEN_SHIFT)) & USB_OTGSTAT_ONEMSECEN_MASK)
-#define USB_OTGSTAT_ID_MASK                      (0x80U)
-#define USB_OTGSTAT_ID_SHIFT                     (7U)
-#define USB_OTGSTAT_ID(x)                        (((uint8_t)(((uint8_t)(x)) << USB_OTGSTAT_ID_SHIFT)) & USB_OTGSTAT_ID_MASK)
-
-/*! @name OTGCTL - OTG Control register */
-#define USB_OTGCTL_OTGEN_MASK                    (0x4U)
-#define USB_OTGCTL_OTGEN_SHIFT                   (2U)
-#define USB_OTGCTL_OTGEN(x)                      (((uint8_t)(((uint8_t)(x)) << USB_OTGCTL_OTGEN_SHIFT)) & USB_OTGCTL_OTGEN_MASK)
-#define USB_OTGCTL_DMLOW_MASK                    (0x10U)
-#define USB_OTGCTL_DMLOW_SHIFT                   (4U)
-#define USB_OTGCTL_DMLOW(x)                      (((uint8_t)(((uint8_t)(x)) << USB_OTGCTL_DMLOW_SHIFT)) & USB_OTGCTL_DMLOW_MASK)
-#define USB_OTGCTL_DPLOW_MASK                    (0x20U)
-#define USB_OTGCTL_DPLOW_SHIFT                   (5U)
-#define USB_OTGCTL_DPLOW(x)                      (((uint8_t)(((uint8_t)(x)) << USB_OTGCTL_DPLOW_SHIFT)) & USB_OTGCTL_DPLOW_MASK)
-#define USB_OTGCTL_DPHIGH_MASK                   (0x80U)
-#define USB_OTGCTL_DPHIGH_SHIFT                  (7U)
-#define USB_OTGCTL_DPHIGH(x)                     (((uint8_t)(((uint8_t)(x)) << USB_OTGCTL_DPHIGH_SHIFT)) & USB_OTGCTL_DPHIGH_MASK)
-
-/*! @name ISTAT - Interrupt Status register */
-#define USB_ISTAT_USBRST_MASK                    (0x1U)
-#define USB_ISTAT_USBRST_SHIFT                   (0U)
-#define USB_ISTAT_USBRST(x)                      (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_USBRST_SHIFT)) & USB_ISTAT_USBRST_MASK)
-#define USB_ISTAT_ERROR_MASK                     (0x2U)
-#define USB_ISTAT_ERROR_SHIFT                    (1U)
-#define USB_ISTAT_ERROR(x)                       (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_ERROR_SHIFT)) & USB_ISTAT_ERROR_MASK)
-#define USB_ISTAT_SOFTOK_MASK                    (0x4U)
-#define USB_ISTAT_SOFTOK_SHIFT                   (2U)
-#define USB_ISTAT_SOFTOK(x)                      (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_SOFTOK_SHIFT)) & USB_ISTAT_SOFTOK_MASK)
-#define USB_ISTAT_TOKDNE_MASK                    (0x8U)
-#define USB_ISTAT_TOKDNE_SHIFT                   (3U)
-#define USB_ISTAT_TOKDNE(x)                      (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_TOKDNE_SHIFT)) & USB_ISTAT_TOKDNE_MASK)
-#define USB_ISTAT_SLEEP_MASK                     (0x10U)
-#define USB_ISTAT_SLEEP_SHIFT                    (4U)
-#define USB_ISTAT_SLEEP(x)                       (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_SLEEP_SHIFT)) & USB_ISTAT_SLEEP_MASK)
-#define USB_ISTAT_RESUME_MASK                    (0x20U)
-#define USB_ISTAT_RESUME_SHIFT                   (5U)
-#define USB_ISTAT_RESUME(x)                      (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_RESUME_SHIFT)) & USB_ISTAT_RESUME_MASK)
-#define USB_ISTAT_ATTACH_MASK                    (0x40U)
-#define USB_ISTAT_ATTACH_SHIFT                   (6U)
-#define USB_ISTAT_ATTACH(x)                      (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_ATTACH_SHIFT)) & USB_ISTAT_ATTACH_MASK)
-#define USB_ISTAT_STALL_MASK                     (0x80U)
-#define USB_ISTAT_STALL_SHIFT                    (7U)
-#define USB_ISTAT_STALL(x)                       (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_STALL_SHIFT)) & USB_ISTAT_STALL_MASK)
-
-/*! @name INTEN - Interrupt Enable register */
-#define USB_INTEN_USBRSTEN_MASK                  (0x1U)
-#define USB_INTEN_USBRSTEN_SHIFT                 (0U)
-#define USB_INTEN_USBRSTEN(x)                    (((uint8_t)(((uint8_t)(x)) << USB_INTEN_USBRSTEN_SHIFT)) & USB_INTEN_USBRSTEN_MASK)
-#define USB_INTEN_ERROREN_MASK                   (0x2U)
-#define USB_INTEN_ERROREN_SHIFT                  (1U)
-#define USB_INTEN_ERROREN(x)                     (((uint8_t)(((uint8_t)(x)) << USB_INTEN_ERROREN_SHIFT)) & USB_INTEN_ERROREN_MASK)
-#define USB_INTEN_SOFTOKEN_MASK                  (0x4U)
-#define USB_INTEN_SOFTOKEN_SHIFT                 (2U)
-#define USB_INTEN_SOFTOKEN(x)                    (((uint8_t)(((uint8_t)(x)) << USB_INTEN_SOFTOKEN_SHIFT)) & USB_INTEN_SOFTOKEN_MASK)
-#define USB_INTEN_TOKDNEEN_MASK                  (0x8U)
-#define USB_INTEN_TOKDNEEN_SHIFT                 (3U)
-#define USB_INTEN_TOKDNEEN(x)                    (((uint8_t)(((uint8_t)(x)) << USB_INTEN_TOKDNEEN_SHIFT)) & USB_INTEN_TOKDNEEN_MASK)
-#define USB_INTEN_SLEEPEN_MASK                   (0x10U)
-#define USB_INTEN_SLEEPEN_SHIFT                  (4U)
-#define USB_INTEN_SLEEPEN(x)                     (((uint8_t)(((uint8_t)(x)) << USB_INTEN_SLEEPEN_SHIFT)) & USB_INTEN_SLEEPEN_MASK)
-#define USB_INTEN_RESUMEEN_MASK                  (0x20U)
-#define USB_INTEN_RESUMEEN_SHIFT                 (5U)
-#define USB_INTEN_RESUMEEN(x)                    (((uint8_t)(((uint8_t)(x)) << USB_INTEN_RESUMEEN_SHIFT)) & USB_INTEN_RESUMEEN_MASK)
-#define USB_INTEN_ATTACHEN_MASK                  (0x40U)
-#define USB_INTEN_ATTACHEN_SHIFT                 (6U)
-#define USB_INTEN_ATTACHEN(x)                    (((uint8_t)(((uint8_t)(x)) << USB_INTEN_ATTACHEN_SHIFT)) & USB_INTEN_ATTACHEN_MASK)
-#define USB_INTEN_STALLEN_MASK                   (0x80U)
-#define USB_INTEN_STALLEN_SHIFT                  (7U)
-#define USB_INTEN_STALLEN(x)                     (((uint8_t)(((uint8_t)(x)) << USB_INTEN_STALLEN_SHIFT)) & USB_INTEN_STALLEN_MASK)
-
-/*! @name ERRSTAT - Error Interrupt Status register */
-#define USB_ERRSTAT_PIDERR_MASK                  (0x1U)
-#define USB_ERRSTAT_PIDERR_SHIFT                 (0U)
-#define USB_ERRSTAT_PIDERR(x)                    (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_PIDERR_SHIFT)) & USB_ERRSTAT_PIDERR_MASK)
-#define USB_ERRSTAT_CRC5EOF_MASK                 (0x2U)
-#define USB_ERRSTAT_CRC5EOF_SHIFT                (1U)
-#define USB_ERRSTAT_CRC5EOF(x)                   (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_CRC5EOF_SHIFT)) & USB_ERRSTAT_CRC5EOF_MASK)
-#define USB_ERRSTAT_CRC16_MASK                   (0x4U)
-#define USB_ERRSTAT_CRC16_SHIFT                  (2U)
-#define USB_ERRSTAT_CRC16(x)                     (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_CRC16_SHIFT)) & USB_ERRSTAT_CRC16_MASK)
-#define USB_ERRSTAT_DFN8_MASK                    (0x8U)
-#define USB_ERRSTAT_DFN8_SHIFT                   (3U)
-#define USB_ERRSTAT_DFN8(x)                      (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_DFN8_SHIFT)) & USB_ERRSTAT_DFN8_MASK)
-#define USB_ERRSTAT_BTOERR_MASK                  (0x10U)
-#define USB_ERRSTAT_BTOERR_SHIFT                 (4U)
-#define USB_ERRSTAT_BTOERR(x)                    (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_BTOERR_SHIFT)) & USB_ERRSTAT_BTOERR_MASK)
-#define USB_ERRSTAT_DMAERR_MASK                  (0x20U)
-#define USB_ERRSTAT_DMAERR_SHIFT                 (5U)
-#define USB_ERRSTAT_DMAERR(x)                    (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_DMAERR_SHIFT)) & USB_ERRSTAT_DMAERR_MASK)
-#define USB_ERRSTAT_BTSERR_MASK                  (0x80U)
-#define USB_ERRSTAT_BTSERR_SHIFT                 (7U)
-#define USB_ERRSTAT_BTSERR(x)                    (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_BTSERR_SHIFT)) & USB_ERRSTAT_BTSERR_MASK)
-
-/*! @name ERREN - Error Interrupt Enable register */
-#define USB_ERREN_PIDERREN_MASK                  (0x1U)
-#define USB_ERREN_PIDERREN_SHIFT                 (0U)
-#define USB_ERREN_PIDERREN(x)                    (((uint8_t)(((uint8_t)(x)) << USB_ERREN_PIDERREN_SHIFT)) & USB_ERREN_PIDERREN_MASK)
-#define USB_ERREN_CRC5EOFEN_MASK                 (0x2U)
-#define USB_ERREN_CRC5EOFEN_SHIFT                (1U)
-#define USB_ERREN_CRC5EOFEN(x)                   (((uint8_t)(((uint8_t)(x)) << USB_ERREN_CRC5EOFEN_SHIFT)) & USB_ERREN_CRC5EOFEN_MASK)
-#define USB_ERREN_CRC16EN_MASK                   (0x4U)
-#define USB_ERREN_CRC16EN_SHIFT                  (2U)
-#define USB_ERREN_CRC16EN(x)                     (((uint8_t)(((uint8_t)(x)) << USB_ERREN_CRC16EN_SHIFT)) & USB_ERREN_CRC16EN_MASK)
-#define USB_ERREN_DFN8EN_MASK                    (0x8U)
-#define USB_ERREN_DFN8EN_SHIFT                   (3U)
-#define USB_ERREN_DFN8EN(x)                      (((uint8_t)(((uint8_t)(x)) << USB_ERREN_DFN8EN_SHIFT)) & USB_ERREN_DFN8EN_MASK)
-#define USB_ERREN_BTOERREN_MASK                  (0x10U)
-#define USB_ERREN_BTOERREN_SHIFT                 (4U)
-#define USB_ERREN_BTOERREN(x)                    (((uint8_t)(((uint8_t)(x)) << USB_ERREN_BTOERREN_SHIFT)) & USB_ERREN_BTOERREN_MASK)
-#define USB_ERREN_DMAERREN_MASK                  (0x20U)
-#define USB_ERREN_DMAERREN_SHIFT                 (5U)
-#define USB_ERREN_DMAERREN(x)                    (((uint8_t)(((uint8_t)(x)) << USB_ERREN_DMAERREN_SHIFT)) & USB_ERREN_DMAERREN_MASK)
-#define USB_ERREN_BTSERREN_MASK                  (0x80U)
-#define USB_ERREN_BTSERREN_SHIFT                 (7U)
-#define USB_ERREN_BTSERREN(x)                    (((uint8_t)(((uint8_t)(x)) << USB_ERREN_BTSERREN_SHIFT)) & USB_ERREN_BTSERREN_MASK)
-
-/*! @name STAT - Status register */
-#define USB_STAT_ODD_MASK                        (0x4U)
-#define USB_STAT_ODD_SHIFT                       (2U)
-#define USB_STAT_ODD(x)                          (((uint8_t)(((uint8_t)(x)) << USB_STAT_ODD_SHIFT)) & USB_STAT_ODD_MASK)
-#define USB_STAT_TX_MASK                         (0x8U)
-#define USB_STAT_TX_SHIFT                        (3U)
-#define USB_STAT_TX(x)                           (((uint8_t)(((uint8_t)(x)) << USB_STAT_TX_SHIFT)) & USB_STAT_TX_MASK)
-#define USB_STAT_ENDP_MASK                       (0xF0U)
-#define USB_STAT_ENDP_SHIFT                      (4U)
-#define USB_STAT_ENDP(x)                         (((uint8_t)(((uint8_t)(x)) << USB_STAT_ENDP_SHIFT)) & USB_STAT_ENDP_MASK)
-
-/*! @name CTL - Control register */
-#define USB_CTL_USBENSOFEN_MASK                  (0x1U)
-#define USB_CTL_USBENSOFEN_SHIFT                 (0U)
-#define USB_CTL_USBENSOFEN(x)                    (((uint8_t)(((uint8_t)(x)) << USB_CTL_USBENSOFEN_SHIFT)) & USB_CTL_USBENSOFEN_MASK)
-#define USB_CTL_ODDRST_MASK                      (0x2U)
-#define USB_CTL_ODDRST_SHIFT                     (1U)
-#define USB_CTL_ODDRST(x)                        (((uint8_t)(((uint8_t)(x)) << USB_CTL_ODDRST_SHIFT)) & USB_CTL_ODDRST_MASK)
-#define USB_CTL_RESUME_MASK                      (0x4U)
-#define USB_CTL_RESUME_SHIFT                     (2U)
-#define USB_CTL_RESUME(x)                        (((uint8_t)(((uint8_t)(x)) << USB_CTL_RESUME_SHIFT)) & USB_CTL_RESUME_MASK)
-#define USB_CTL_HOSTMODEEN_MASK                  (0x8U)
-#define USB_CTL_HOSTMODEEN_SHIFT                 (3U)
-#define USB_CTL_HOSTMODEEN(x)                    (((uint8_t)(((uint8_t)(x)) << USB_CTL_HOSTMODEEN_SHIFT)) & USB_CTL_HOSTMODEEN_MASK)
-#define USB_CTL_RESET_MASK                       (0x10U)
-#define USB_CTL_RESET_SHIFT                      (4U)
-#define USB_CTL_RESET(x)                         (((uint8_t)(((uint8_t)(x)) << USB_CTL_RESET_SHIFT)) & USB_CTL_RESET_MASK)
-#define USB_CTL_TXSUSPENDTOKENBUSY_MASK          (0x20U)
-#define USB_CTL_TXSUSPENDTOKENBUSY_SHIFT         (5U)
-#define USB_CTL_TXSUSPENDTOKENBUSY(x)            (((uint8_t)(((uint8_t)(x)) << USB_CTL_TXSUSPENDTOKENBUSY_SHIFT)) & USB_CTL_TXSUSPENDTOKENBUSY_MASK)
-#define USB_CTL_SE0_MASK                         (0x40U)
-#define USB_CTL_SE0_SHIFT                        (6U)
-#define USB_CTL_SE0(x)                           (((uint8_t)(((uint8_t)(x)) << USB_CTL_SE0_SHIFT)) & USB_CTL_SE0_MASK)
-#define USB_CTL_JSTATE_MASK                      (0x80U)
-#define USB_CTL_JSTATE_SHIFT                     (7U)
-#define USB_CTL_JSTATE(x)                        (((uint8_t)(((uint8_t)(x)) << USB_CTL_JSTATE_SHIFT)) & USB_CTL_JSTATE_MASK)
-
-/*! @name ADDR - Address register */
-#define USB_ADDR_ADDR_MASK                       (0x7FU)
-#define USB_ADDR_ADDR_SHIFT                      (0U)
-#define USB_ADDR_ADDR(x)                         (((uint8_t)(((uint8_t)(x)) << USB_ADDR_ADDR_SHIFT)) & USB_ADDR_ADDR_MASK)
-#define USB_ADDR_LSEN_MASK                       (0x80U)
-#define USB_ADDR_LSEN_SHIFT                      (7U)
-#define USB_ADDR_LSEN(x)                         (((uint8_t)(((uint8_t)(x)) << USB_ADDR_LSEN_SHIFT)) & USB_ADDR_LSEN_MASK)
-
-/*! @name BDTPAGE1 - BDT Page register 1 */
-#define USB_BDTPAGE1_BDTBA_MASK                  (0xFEU)
-#define USB_BDTPAGE1_BDTBA_SHIFT                 (1U)
-#define USB_BDTPAGE1_BDTBA(x)                    (((uint8_t)(((uint8_t)(x)) << USB_BDTPAGE1_BDTBA_SHIFT)) & USB_BDTPAGE1_BDTBA_MASK)
-
-/*! @name FRMNUML - Frame Number register Low */
-#define USB_FRMNUML_FRM_MASK                     (0xFFU)
-#define USB_FRMNUML_FRM_SHIFT                    (0U)
-#define USB_FRMNUML_FRM(x)                       (((uint8_t)(((uint8_t)(x)) << USB_FRMNUML_FRM_SHIFT)) & USB_FRMNUML_FRM_MASK)
-
-/*! @name FRMNUMH - Frame Number register High */
-#define USB_FRMNUMH_FRM_MASK                     (0x7U)
-#define USB_FRMNUMH_FRM_SHIFT                    (0U)
-#define USB_FRMNUMH_FRM(x)                       (((uint8_t)(((uint8_t)(x)) << USB_FRMNUMH_FRM_SHIFT)) & USB_FRMNUMH_FRM_MASK)
-
-/*! @name TOKEN - Token register */
-#define USB_TOKEN_TOKENENDPT_MASK                (0xFU)
-#define USB_TOKEN_TOKENENDPT_SHIFT               (0U)
-#define USB_TOKEN_TOKENENDPT(x)                  (((uint8_t)(((uint8_t)(x)) << USB_TOKEN_TOKENENDPT_SHIFT)) & USB_TOKEN_TOKENENDPT_MASK)
-#define USB_TOKEN_TOKENPID_MASK                  (0xF0U)
-#define USB_TOKEN_TOKENPID_SHIFT                 (4U)
-#define USB_TOKEN_TOKENPID(x)                    (((uint8_t)(((uint8_t)(x)) << USB_TOKEN_TOKENPID_SHIFT)) & USB_TOKEN_TOKENPID_MASK)
-
-/*! @name SOFTHLD - SOF Threshold register */
-#define USB_SOFTHLD_CNT_MASK                     (0xFFU)
-#define USB_SOFTHLD_CNT_SHIFT                    (0U)
-#define USB_SOFTHLD_CNT(x)                       (((uint8_t)(((uint8_t)(x)) << USB_SOFTHLD_CNT_SHIFT)) & USB_SOFTHLD_CNT_MASK)
-
-/*! @name BDTPAGE2 - BDT Page Register 2 */
-#define USB_BDTPAGE2_BDTBA_MASK                  (0xFFU)
-#define USB_BDTPAGE2_BDTBA_SHIFT                 (0U)
-#define USB_BDTPAGE2_BDTBA(x)                    (((uint8_t)(((uint8_t)(x)) << USB_BDTPAGE2_BDTBA_SHIFT)) & USB_BDTPAGE2_BDTBA_MASK)
-
-/*! @name BDTPAGE3 - BDT Page Register 3 */
-#define USB_BDTPAGE3_BDTBA_MASK                  (0xFFU)
-#define USB_BDTPAGE3_BDTBA_SHIFT                 (0U)
-#define USB_BDTPAGE3_BDTBA(x)                    (((uint8_t)(((uint8_t)(x)) << USB_BDTPAGE3_BDTBA_SHIFT)) & USB_BDTPAGE3_BDTBA_MASK)
-
-/*! @name ENDPT - Endpoint Control register */
-#define USB_ENDPT_EPHSHK_MASK                    (0x1U)
-#define USB_ENDPT_EPHSHK_SHIFT                   (0U)
-#define USB_ENDPT_EPHSHK(x)                      (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_EPHSHK_SHIFT)) & USB_ENDPT_EPHSHK_MASK)
-#define USB_ENDPT_EPSTALL_MASK                   (0x2U)
-#define USB_ENDPT_EPSTALL_SHIFT                  (1U)
-#define USB_ENDPT_EPSTALL(x)                     (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_EPSTALL_SHIFT)) & USB_ENDPT_EPSTALL_MASK)
-#define USB_ENDPT_EPTXEN_MASK                    (0x4U)
-#define USB_ENDPT_EPTXEN_SHIFT                   (2U)
-#define USB_ENDPT_EPTXEN(x)                      (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_EPTXEN_SHIFT)) & USB_ENDPT_EPTXEN_MASK)
-#define USB_ENDPT_EPRXEN_MASK                    (0x8U)
-#define USB_ENDPT_EPRXEN_SHIFT                   (3U)
-#define USB_ENDPT_EPRXEN(x)                      (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_EPRXEN_SHIFT)) & USB_ENDPT_EPRXEN_MASK)
-#define USB_ENDPT_EPCTLDIS_MASK                  (0x10U)
-#define USB_ENDPT_EPCTLDIS_SHIFT                 (4U)
-#define USB_ENDPT_EPCTLDIS(x)                    (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_EPCTLDIS_SHIFT)) & USB_ENDPT_EPCTLDIS_MASK)
-#define USB_ENDPT_RETRYDIS_MASK                  (0x40U)
-#define USB_ENDPT_RETRYDIS_SHIFT                 (6U)
-#define USB_ENDPT_RETRYDIS(x)                    (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_RETRYDIS_SHIFT)) & USB_ENDPT_RETRYDIS_MASK)
-#define USB_ENDPT_HOSTWOHUB_MASK                 (0x80U)
-#define USB_ENDPT_HOSTWOHUB_SHIFT                (7U)
-#define USB_ENDPT_HOSTWOHUB(x)                   (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_HOSTWOHUB_SHIFT)) & USB_ENDPT_HOSTWOHUB_MASK)
-
-/* The count of USB_ENDPT */
-#define USB_ENDPT_COUNT                          (16U)
-
-/*! @name USBCTRL - USB Control register */
-#define USB_USBCTRL_PDE_MASK                     (0x40U)
-#define USB_USBCTRL_PDE_SHIFT                    (6U)
-#define USB_USBCTRL_PDE(x)                       (((uint8_t)(((uint8_t)(x)) << USB_USBCTRL_PDE_SHIFT)) & USB_USBCTRL_PDE_MASK)
-#define USB_USBCTRL_SUSP_MASK                    (0x80U)
-#define USB_USBCTRL_SUSP_SHIFT                   (7U)
-#define USB_USBCTRL_SUSP(x)                      (((uint8_t)(((uint8_t)(x)) << USB_USBCTRL_SUSP_SHIFT)) & USB_USBCTRL_SUSP_MASK)
-
-/*! @name OBSERVE - USB OTG Observe register */
-#define USB_OBSERVE_DMPD_MASK                    (0x10U)
-#define USB_OBSERVE_DMPD_SHIFT                   (4U)
-#define USB_OBSERVE_DMPD(x)                      (((uint8_t)(((uint8_t)(x)) << USB_OBSERVE_DMPD_SHIFT)) & USB_OBSERVE_DMPD_MASK)
-#define USB_OBSERVE_DPPD_MASK                    (0x40U)
-#define USB_OBSERVE_DPPD_SHIFT                   (6U)
-#define USB_OBSERVE_DPPD(x)                      (((uint8_t)(((uint8_t)(x)) << USB_OBSERVE_DPPD_SHIFT)) & USB_OBSERVE_DPPD_MASK)
-#define USB_OBSERVE_DPPU_MASK                    (0x80U)
-#define USB_OBSERVE_DPPU_SHIFT                   (7U)
-#define USB_OBSERVE_DPPU(x)                      (((uint8_t)(((uint8_t)(x)) << USB_OBSERVE_DPPU_SHIFT)) & USB_OBSERVE_DPPU_MASK)
-
-/*! @name CONTROL - USB OTG Control register */
-#define USB_CONTROL_DPPULLUPNONOTG_MASK          (0x10U)
-#define USB_CONTROL_DPPULLUPNONOTG_SHIFT         (4U)
-#define USB_CONTROL_DPPULLUPNONOTG(x)            (((uint8_t)(((uint8_t)(x)) << USB_CONTROL_DPPULLUPNONOTG_SHIFT)) & USB_CONTROL_DPPULLUPNONOTG_MASK)
-
-/*! @name USBTRC0 - USB Transceiver Control register 0 */
-#define USB_USBTRC0_USB_RESUME_INT_MASK          (0x1U)
-#define USB_USBTRC0_USB_RESUME_INT_SHIFT         (0U)
-#define USB_USBTRC0_USB_RESUME_INT(x)            (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_USB_RESUME_INT_SHIFT)) & USB_USBTRC0_USB_RESUME_INT_MASK)
-#define USB_USBTRC0_SYNC_DET_MASK                (0x2U)
-#define USB_USBTRC0_SYNC_DET_SHIFT               (1U)
-#define USB_USBTRC0_SYNC_DET(x)                  (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_SYNC_DET_SHIFT)) & USB_USBTRC0_SYNC_DET_MASK)
-#define USB_USBTRC0_USB_CLK_RECOVERY_INT_MASK    (0x4U)
-#define USB_USBTRC0_USB_CLK_RECOVERY_INT_SHIFT   (2U)
-#define USB_USBTRC0_USB_CLK_RECOVERY_INT(x)      (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_USB_CLK_RECOVERY_INT_SHIFT)) & USB_USBTRC0_USB_CLK_RECOVERY_INT_MASK)
-#define USB_USBTRC0_USBRESMEN_MASK               (0x20U)
-#define USB_USBTRC0_USBRESMEN_SHIFT              (5U)
-#define USB_USBTRC0_USBRESMEN(x)                 (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_USBRESMEN_SHIFT)) & USB_USBTRC0_USBRESMEN_MASK)
-#define USB_USBTRC0_USBRESET_MASK                (0x80U)
-#define USB_USBTRC0_USBRESET_SHIFT               (7U)
-#define USB_USBTRC0_USBRESET(x)                  (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_USBRESET_SHIFT)) & USB_USBTRC0_USBRESET_MASK)
-
-/*! @name USBFRMADJUST - Frame Adjust Register */
-#define USB_USBFRMADJUST_ADJ_MASK                (0xFFU)
-#define USB_USBFRMADJUST_ADJ_SHIFT               (0U)
-#define USB_USBFRMADJUST_ADJ(x)                  (((uint8_t)(((uint8_t)(x)) << USB_USBFRMADJUST_ADJ_SHIFT)) & USB_USBFRMADJUST_ADJ_MASK)
-
-/*! @name CLK_RECOVER_CTRL - USB Clock recovery control */
-#define USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN_MASK (0x20U)
-#define USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN_SHIFT (5U)
-#define USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN_SHIFT)) & USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN_MASK)
-#define USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN_MASK (0x40U)
-#define USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN_SHIFT (6U)
-#define USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN_SHIFT)) & USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN_MASK)
-#define USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN_MASK (0x80U)
-#define USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN_SHIFT (7U)
-#define USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN_SHIFT)) & USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN_MASK)
-
-/*! @name CLK_RECOVER_IRC_EN - IRC48M oscillator enable register */
-#define USB_CLK_RECOVER_IRC_EN_REG_EN_MASK       (0x1U)
-#define USB_CLK_RECOVER_IRC_EN_REG_EN_SHIFT      (0U)
-#define USB_CLK_RECOVER_IRC_EN_REG_EN(x)         (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_IRC_EN_REG_EN_SHIFT)) & USB_CLK_RECOVER_IRC_EN_REG_EN_MASK)
-#define USB_CLK_RECOVER_IRC_EN_IRC_EN_MASK       (0x2U)
-#define USB_CLK_RECOVER_IRC_EN_IRC_EN_SHIFT      (1U)
-#define USB_CLK_RECOVER_IRC_EN_IRC_EN(x)         (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_IRC_EN_IRC_EN_SHIFT)) & USB_CLK_RECOVER_IRC_EN_IRC_EN_MASK)
-
-/*! @name CLK_RECOVER_INT_STATUS - Clock recovery separated interrupt status */
-#define USB_CLK_RECOVER_INT_STATUS_OVF_ERROR_MASK (0x10U)
-#define USB_CLK_RECOVER_INT_STATUS_OVF_ERROR_SHIFT (4U)
-#define USB_CLK_RECOVER_INT_STATUS_OVF_ERROR(x)  (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_INT_STATUS_OVF_ERROR_SHIFT)) & USB_CLK_RECOVER_INT_STATUS_OVF_ERROR_MASK)
-
-
-/*!
- * @}
- */ /* end of group USB_Register_Masks */
-
-
-/* USB - Peripheral instance base addresses */
-/** Peripheral USB0 base address */
-#define USB0_BASE                                (0x40072000u)
-/** Peripheral USB0 base pointer */
-#define USB0                                     ((USB_Type *)USB0_BASE)
-/** Array initializer of USB peripheral base addresses */
-#define USB_BASE_ADDRS                           { USB0_BASE }
-/** Array initializer of USB peripheral base pointers */
-#define USB_BASE_PTRS                            { USB0 }
-/** Interrupt vectors for the USB peripheral type */
-#define USB_IRQS                                 { USB0_IRQn }
-
-/*!
- * @}
- */ /* end of group USB_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- USBDCD Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup USBDCD_Peripheral_Access_Layer USBDCD Peripheral Access Layer
- * @{
- */
-
-/** USBDCD - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t CONTROL;                           /**< Control register, offset: 0x0 */
-  __IO uint32_t CLOCK;                             /**< Clock register, offset: 0x4 */
-  __I  uint32_t STATUS;                            /**< Status register, offset: 0x8 */
-       uint8_t RESERVED_0[4];
-  __IO uint32_t TIMER0;                            /**< TIMER0 register, offset: 0x10 */
-  __IO uint32_t TIMER1;                            /**< TIMER1 register, offset: 0x14 */
-  union {                                          /* offset: 0x18 */
-    __IO uint32_t TIMER2_BC11;                       /**< TIMER2_BC11 register, offset: 0x18 */
-    __IO uint32_t TIMER2_BC12;                       /**< TIMER2_BC12 register, offset: 0x18 */
-  };
-} USBDCD_Type;
-
-/* ----------------------------------------------------------------------------
-   -- USBDCD Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup USBDCD_Register_Masks USBDCD Register Masks
- * @{
- */
-
-/*! @name CONTROL - Control register */
-#define USBDCD_CONTROL_IACK_MASK                 (0x1U)
-#define USBDCD_CONTROL_IACK_SHIFT                (0U)
-#define USBDCD_CONTROL_IACK(x)                   (((uint32_t)(((uint32_t)(x)) << USBDCD_CONTROL_IACK_SHIFT)) & USBDCD_CONTROL_IACK_MASK)
-#define USBDCD_CONTROL_IF_MASK                   (0x100U)
-#define USBDCD_CONTROL_IF_SHIFT                  (8U)
-#define USBDCD_CONTROL_IF(x)                     (((uint32_t)(((uint32_t)(x)) << USBDCD_CONTROL_IF_SHIFT)) & USBDCD_CONTROL_IF_MASK)
-#define USBDCD_CONTROL_IE_MASK                   (0x10000U)
-#define USBDCD_CONTROL_IE_SHIFT                  (16U)
-#define USBDCD_CONTROL_IE(x)                     (((uint32_t)(((uint32_t)(x)) << USBDCD_CONTROL_IE_SHIFT)) & USBDCD_CONTROL_IE_MASK)
-#define USBDCD_CONTROL_BC12_MASK                 (0x20000U)
-#define USBDCD_CONTROL_BC12_SHIFT                (17U)
-#define USBDCD_CONTROL_BC12(x)                   (((uint32_t)(((uint32_t)(x)) << USBDCD_CONTROL_BC12_SHIFT)) & USBDCD_CONTROL_BC12_MASK)
-#define USBDCD_CONTROL_START_MASK                (0x1000000U)
-#define USBDCD_CONTROL_START_SHIFT               (24U)
-#define USBDCD_CONTROL_START(x)                  (((uint32_t)(((uint32_t)(x)) << USBDCD_CONTROL_START_SHIFT)) & USBDCD_CONTROL_START_MASK)
-#define USBDCD_CONTROL_SR_MASK                   (0x2000000U)
-#define USBDCD_CONTROL_SR_SHIFT                  (25U)
-#define USBDCD_CONTROL_SR(x)                     (((uint32_t)(((uint32_t)(x)) << USBDCD_CONTROL_SR_SHIFT)) & USBDCD_CONTROL_SR_MASK)
-
-/*! @name CLOCK - Clock register */
-#define USBDCD_CLOCK_CLOCK_UNIT_MASK             (0x1U)
-#define USBDCD_CLOCK_CLOCK_UNIT_SHIFT            (0U)
-#define USBDCD_CLOCK_CLOCK_UNIT(x)               (((uint32_t)(((uint32_t)(x)) << USBDCD_CLOCK_CLOCK_UNIT_SHIFT)) & USBDCD_CLOCK_CLOCK_UNIT_MASK)
-#define USBDCD_CLOCK_CLOCK_SPEED_MASK            (0xFFCU)
-#define USBDCD_CLOCK_CLOCK_SPEED_SHIFT           (2U)
-#define USBDCD_CLOCK_CLOCK_SPEED(x)              (((uint32_t)(((uint32_t)(x)) << USBDCD_CLOCK_CLOCK_SPEED_SHIFT)) & USBDCD_CLOCK_CLOCK_SPEED_MASK)
-
-/*! @name STATUS - Status register */
-#define USBDCD_STATUS_SEQ_RES_MASK               (0x30000U)
-#define USBDCD_STATUS_SEQ_RES_SHIFT              (16U)
-#define USBDCD_STATUS_SEQ_RES(x)                 (((uint32_t)(((uint32_t)(x)) << USBDCD_STATUS_SEQ_RES_SHIFT)) & USBDCD_STATUS_SEQ_RES_MASK)
-#define USBDCD_STATUS_SEQ_STAT_MASK              (0xC0000U)
-#define USBDCD_STATUS_SEQ_STAT_SHIFT             (18U)
-#define USBDCD_STATUS_SEQ_STAT(x)                (((uint32_t)(((uint32_t)(x)) << USBDCD_STATUS_SEQ_STAT_SHIFT)) & USBDCD_STATUS_SEQ_STAT_MASK)
-#define USBDCD_STATUS_ERR_MASK                   (0x100000U)
-#define USBDCD_STATUS_ERR_SHIFT                  (20U)
-#define USBDCD_STATUS_ERR(x)                     (((uint32_t)(((uint32_t)(x)) << USBDCD_STATUS_ERR_SHIFT)) & USBDCD_STATUS_ERR_MASK)
-#define USBDCD_STATUS_TO_MASK                    (0x200000U)
-#define USBDCD_STATUS_TO_SHIFT                   (21U)
-#define USBDCD_STATUS_TO(x)                      (((uint32_t)(((uint32_t)(x)) << USBDCD_STATUS_TO_SHIFT)) & USBDCD_STATUS_TO_MASK)
-#define USBDCD_STATUS_ACTIVE_MASK                (0x400000U)
-#define USBDCD_STATUS_ACTIVE_SHIFT               (22U)
-#define USBDCD_STATUS_ACTIVE(x)                  (((uint32_t)(((uint32_t)(x)) << USBDCD_STATUS_ACTIVE_SHIFT)) & USBDCD_STATUS_ACTIVE_MASK)
-
-/*! @name TIMER0 - TIMER0 register */
-#define USBDCD_TIMER0_TUNITCON_MASK              (0xFFFU)
-#define USBDCD_TIMER0_TUNITCON_SHIFT             (0U)
-#define USBDCD_TIMER0_TUNITCON(x)                (((uint32_t)(((uint32_t)(x)) << USBDCD_TIMER0_TUNITCON_SHIFT)) & USBDCD_TIMER0_TUNITCON_MASK)
-#define USBDCD_TIMER0_TSEQ_INIT_MASK             (0x3FF0000U)
-#define USBDCD_TIMER0_TSEQ_INIT_SHIFT            (16U)
-#define USBDCD_TIMER0_TSEQ_INIT(x)               (((uint32_t)(((uint32_t)(x)) << USBDCD_TIMER0_TSEQ_INIT_SHIFT)) & USBDCD_TIMER0_TSEQ_INIT_MASK)
-
-/*! @name TIMER1 - TIMER1 register */
-#define USBDCD_TIMER1_TVDPSRC_ON_MASK            (0x3FFU)
-#define USBDCD_TIMER1_TVDPSRC_ON_SHIFT           (0U)
-#define USBDCD_TIMER1_TVDPSRC_ON(x)              (((uint32_t)(((uint32_t)(x)) << USBDCD_TIMER1_TVDPSRC_ON_SHIFT)) & USBDCD_TIMER1_TVDPSRC_ON_MASK)
-#define USBDCD_TIMER1_TDCD_DBNC_MASK             (0x3FF0000U)
-#define USBDCD_TIMER1_TDCD_DBNC_SHIFT            (16U)
-#define USBDCD_TIMER1_TDCD_DBNC(x)               (((uint32_t)(((uint32_t)(x)) << USBDCD_TIMER1_TDCD_DBNC_SHIFT)) & USBDCD_TIMER1_TDCD_DBNC_MASK)
-
-/*! @name TIMER2_BC11 - TIMER2_BC11 register */
-#define USBDCD_TIMER2_BC11_CHECK_DM_MASK         (0xFU)
-#define USBDCD_TIMER2_BC11_CHECK_DM_SHIFT        (0U)
-#define USBDCD_TIMER2_BC11_CHECK_DM(x)           (((uint32_t)(((uint32_t)(x)) << USBDCD_TIMER2_BC11_CHECK_DM_SHIFT)) & USBDCD_TIMER2_BC11_CHECK_DM_MASK)
-#define USBDCD_TIMER2_BC11_TVDPSRC_CON_MASK      (0x3FF0000U)
-#define USBDCD_TIMER2_BC11_TVDPSRC_CON_SHIFT     (16U)
-#define USBDCD_TIMER2_BC11_TVDPSRC_CON(x)        (((uint32_t)(((uint32_t)(x)) << USBDCD_TIMER2_BC11_TVDPSRC_CON_SHIFT)) & USBDCD_TIMER2_BC11_TVDPSRC_CON_MASK)
-
-/*! @name TIMER2_BC12 - TIMER2_BC12 register */
-#define USBDCD_TIMER2_BC12_TVDMSRC_ON_MASK       (0x3FFU)
-#define USBDCD_TIMER2_BC12_TVDMSRC_ON_SHIFT      (0U)
-#define USBDCD_TIMER2_BC12_TVDMSRC_ON(x)         (((uint32_t)(((uint32_t)(x)) << USBDCD_TIMER2_BC12_TVDMSRC_ON_SHIFT)) & USBDCD_TIMER2_BC12_TVDMSRC_ON_MASK)
-#define USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD_MASK  (0x3FF0000U)
-#define USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD_SHIFT (16U)
-#define USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD(x)    (((uint32_t)(((uint32_t)(x)) << USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD_SHIFT)) & USBDCD_TIMER2_BC12_TWAIT_AFTER_PRD_MASK)
-
-
-/*!
- * @}
- */ /* end of group USBDCD_Register_Masks */
-
-
-/* USBDCD - Peripheral instance base addresses */
-/** Peripheral USBDCD base address */
-#define USBDCD_BASE                              (0x40035000u)
-/** Peripheral USBDCD base pointer */
-#define USBDCD                                   ((USBDCD_Type *)USBDCD_BASE)
-/** Array initializer of USBDCD peripheral base addresses */
-#define USBDCD_BASE_ADDRS                        { USBDCD_BASE }
-/** Array initializer of USBDCD peripheral base pointers */
-#define USBDCD_BASE_PTRS                         { USBDCD }
-/** Interrupt vectors for the USBDCD peripheral type */
-#define USBDCD_IRQS                              { USBDCD_IRQn }
-
-/*!
- * @}
- */ /* end of group USBDCD_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- VREF Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup VREF_Peripheral_Access_Layer VREF Peripheral Access Layer
- * @{
- */
-
-/** VREF - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t TRM;                                /**< VREF Trim Register, offset: 0x0 */
-  __IO uint8_t SC;                                 /**< VREF Status and Control Register, offset: 0x1 */
-} VREF_Type;
-
-/* ----------------------------------------------------------------------------
-   -- VREF Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup VREF_Register_Masks VREF Register Masks
- * @{
- */
-
-/*! @name TRM - VREF Trim Register */
-#define VREF_TRM_TRIM_MASK                       (0x3FU)
-#define VREF_TRM_TRIM_SHIFT                      (0U)
-#define VREF_TRM_TRIM(x)                         (((uint8_t)(((uint8_t)(x)) << VREF_TRM_TRIM_SHIFT)) & VREF_TRM_TRIM_MASK)
-#define VREF_TRM_CHOPEN_MASK                     (0x40U)
-#define VREF_TRM_CHOPEN_SHIFT                    (6U)
-#define VREF_TRM_CHOPEN(x)                       (((uint8_t)(((uint8_t)(x)) << VREF_TRM_CHOPEN_SHIFT)) & VREF_TRM_CHOPEN_MASK)
-
-/*! @name SC - VREF Status and Control Register */
-#define VREF_SC_MODE_LV_MASK                     (0x3U)
-#define VREF_SC_MODE_LV_SHIFT                    (0U)
-#define VREF_SC_MODE_LV(x)                       (((uint8_t)(((uint8_t)(x)) << VREF_SC_MODE_LV_SHIFT)) & VREF_SC_MODE_LV_MASK)
-#define VREF_SC_VREFST_MASK                      (0x4U)
-#define VREF_SC_VREFST_SHIFT                     (2U)
-#define VREF_SC_VREFST(x)                        (((uint8_t)(((uint8_t)(x)) << VREF_SC_VREFST_SHIFT)) & VREF_SC_VREFST_MASK)
-#define VREF_SC_ICOMPEN_MASK                     (0x20U)
-#define VREF_SC_ICOMPEN_SHIFT                    (5U)
-#define VREF_SC_ICOMPEN(x)                       (((uint8_t)(((uint8_t)(x)) << VREF_SC_ICOMPEN_SHIFT)) & VREF_SC_ICOMPEN_MASK)
-#define VREF_SC_REGEN_MASK                       (0x40U)
-#define VREF_SC_REGEN_SHIFT                      (6U)
-#define VREF_SC_REGEN(x)                         (((uint8_t)(((uint8_t)(x)) << VREF_SC_REGEN_SHIFT)) & VREF_SC_REGEN_MASK)
-#define VREF_SC_VREFEN_MASK                      (0x80U)
-#define VREF_SC_VREFEN_SHIFT                     (7U)
-#define VREF_SC_VREFEN(x)                        (((uint8_t)(((uint8_t)(x)) << VREF_SC_VREFEN_SHIFT)) & VREF_SC_VREFEN_MASK)
-
-
-/*!
- * @}
- */ /* end of group VREF_Register_Masks */
-
-
-/* VREF - Peripheral instance base addresses */
-/** Peripheral VREF base address */
-#define VREF_BASE                                (0x40074000u)
-/** Peripheral VREF base pointer */
-#define VREF                                     ((VREF_Type *)VREF_BASE)
-/** Array initializer of VREF peripheral base addresses */
-#define VREF_BASE_ADDRS                          { VREF_BASE }
-/** Array initializer of VREF peripheral base pointers */
-#define VREF_BASE_PTRS                           { VREF }
-
-/*!
- * @}
- */ /* end of group VREF_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- WDOG Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup WDOG_Peripheral_Access_Layer WDOG Peripheral Access Layer
- * @{
- */
-
-/** WDOG - Register Layout Typedef */
-typedef struct {
-  __IO uint16_t STCTRLH;                           /**< Watchdog Status and Control Register High, offset: 0x0 */
-  __IO uint16_t STCTRLL;                           /**< Watchdog Status and Control Register Low, offset: 0x2 */
-  __IO uint16_t TOVALH;                            /**< Watchdog Time-out Value Register High, offset: 0x4 */
-  __IO uint16_t TOVALL;                            /**< Watchdog Time-out Value Register Low, offset: 0x6 */
-  __IO uint16_t WINH;                              /**< Watchdog Window Register High, offset: 0x8 */
-  __IO uint16_t WINL;                              /**< Watchdog Window Register Low, offset: 0xA */
-  __IO uint16_t REFRESH;                           /**< Watchdog Refresh register, offset: 0xC */
-  __IO uint16_t UNLOCK;                            /**< Watchdog Unlock register, offset: 0xE */
-  __IO uint16_t TMROUTH;                           /**< Watchdog Timer Output Register High, offset: 0x10 */
-  __IO uint16_t TMROUTL;                           /**< Watchdog Timer Output Register Low, offset: 0x12 */
-  __IO uint16_t RSTCNT;                            /**< Watchdog Reset Count register, offset: 0x14 */
-  __IO uint16_t PRESC;                             /**< Watchdog Prescaler register, offset: 0x16 */
-} WDOG_Type;
-
-/* ----------------------------------------------------------------------------
-   -- WDOG Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup WDOG_Register_Masks WDOG Register Masks
- * @{
- */
-
-/*! @name STCTRLH - Watchdog Status and Control Register High */
-#define WDOG_STCTRLH_WDOGEN_MASK                 (0x1U)
-#define WDOG_STCTRLH_WDOGEN_SHIFT                (0U)
-#define WDOG_STCTRLH_WDOGEN(x)                   (((uint16_t)(((uint16_t)(x)) << WDOG_STCTRLH_WDOGEN_SHIFT)) & WDOG_STCTRLH_WDOGEN_MASK)
-#define WDOG_STCTRLH_CLKSRC_MASK                 (0x2U)
-#define WDOG_STCTRLH_CLKSRC_SHIFT                (1U)
-#define WDOG_STCTRLH_CLKSRC(x)                   (((uint16_t)(((uint16_t)(x)) << WDOG_STCTRLH_CLKSRC_SHIFT)) & WDOG_STCTRLH_CLKSRC_MASK)
-#define WDOG_STCTRLH_IRQRSTEN_MASK               (0x4U)
-#define WDOG_STCTRLH_IRQRSTEN_SHIFT              (2U)
-#define WDOG_STCTRLH_IRQRSTEN(x)                 (((uint16_t)(((uint16_t)(x)) << WDOG_STCTRLH_IRQRSTEN_SHIFT)) & WDOG_STCTRLH_IRQRSTEN_MASK)
-#define WDOG_STCTRLH_WINEN_MASK                  (0x8U)
-#define WDOG_STCTRLH_WINEN_SHIFT                 (3U)
-#define WDOG_STCTRLH_WINEN(x)                    (((uint16_t)(((uint16_t)(x)) << WDOG_STCTRLH_WINEN_SHIFT)) & WDOG_STCTRLH_WINEN_MASK)
-#define WDOG_STCTRLH_ALLOWUPDATE_MASK            (0x10U)
-#define WDOG_STCTRLH_ALLOWUPDATE_SHIFT           (4U)
-#define WDOG_STCTRLH_ALLOWUPDATE(x)              (((uint16_t)(((uint16_t)(x)) << WDOG_STCTRLH_ALLOWUPDATE_SHIFT)) & WDOG_STCTRLH_ALLOWUPDATE_MASK)
-#define WDOG_STCTRLH_DBGEN_MASK                  (0x20U)
-#define WDOG_STCTRLH_DBGEN_SHIFT                 (5U)
-#define WDOG_STCTRLH_DBGEN(x)                    (((uint16_t)(((uint16_t)(x)) << WDOG_STCTRLH_DBGEN_SHIFT)) & WDOG_STCTRLH_DBGEN_MASK)
-#define WDOG_STCTRLH_STOPEN_MASK                 (0x40U)
-#define WDOG_STCTRLH_STOPEN_SHIFT                (6U)
-#define WDOG_STCTRLH_STOPEN(x)                   (((uint16_t)(((uint16_t)(x)) << WDOG_STCTRLH_STOPEN_SHIFT)) & WDOG_STCTRLH_STOPEN_MASK)
-#define WDOG_STCTRLH_WAITEN_MASK                 (0x80U)
-#define WDOG_STCTRLH_WAITEN_SHIFT                (7U)
-#define WDOG_STCTRLH_WAITEN(x)                   (((uint16_t)(((uint16_t)(x)) << WDOG_STCTRLH_WAITEN_SHIFT)) & WDOG_STCTRLH_WAITEN_MASK)
-#define WDOG_STCTRLH_TESTWDOG_MASK               (0x400U)
-#define WDOG_STCTRLH_TESTWDOG_SHIFT              (10U)
-#define WDOG_STCTRLH_TESTWDOG(x)                 (((uint16_t)(((uint16_t)(x)) << WDOG_STCTRLH_TESTWDOG_SHIFT)) & WDOG_STCTRLH_TESTWDOG_MASK)
-#define WDOG_STCTRLH_TESTSEL_MASK                (0x800U)
-#define WDOG_STCTRLH_TESTSEL_SHIFT               (11U)
-#define WDOG_STCTRLH_TESTSEL(x)                  (((uint16_t)(((uint16_t)(x)) << WDOG_STCTRLH_TESTSEL_SHIFT)) & WDOG_STCTRLH_TESTSEL_MASK)
-#define WDOG_STCTRLH_BYTESEL_MASK                (0x3000U)
-#define WDOG_STCTRLH_BYTESEL_SHIFT               (12U)
-#define WDOG_STCTRLH_BYTESEL(x)                  (((uint16_t)(((uint16_t)(x)) << WDOG_STCTRLH_BYTESEL_SHIFT)) & WDOG_STCTRLH_BYTESEL_MASK)
-#define WDOG_STCTRLH_DISTESTWDOG_MASK            (0x4000U)
-#define WDOG_STCTRLH_DISTESTWDOG_SHIFT           (14U)
-#define WDOG_STCTRLH_DISTESTWDOG(x)              (((uint16_t)(((uint16_t)(x)) << WDOG_STCTRLH_DISTESTWDOG_SHIFT)) & WDOG_STCTRLH_DISTESTWDOG_MASK)
-
-/*! @name STCTRLL - Watchdog Status and Control Register Low */
-#define WDOG_STCTRLL_INTFLG_MASK                 (0x8000U)
-#define WDOG_STCTRLL_INTFLG_SHIFT                (15U)
-#define WDOG_STCTRLL_INTFLG(x)                   (((uint16_t)(((uint16_t)(x)) << WDOG_STCTRLL_INTFLG_SHIFT)) & WDOG_STCTRLL_INTFLG_MASK)
-
-/*! @name TOVALH - Watchdog Time-out Value Register High */
-#define WDOG_TOVALH_TOVALHIGH_MASK               (0xFFFFU)
-#define WDOG_TOVALH_TOVALHIGH_SHIFT              (0U)
-#define WDOG_TOVALH_TOVALHIGH(x)                 (((uint16_t)(((uint16_t)(x)) << WDOG_TOVALH_TOVALHIGH_SHIFT)) & WDOG_TOVALH_TOVALHIGH_MASK)
-
-/*! @name TOVALL - Watchdog Time-out Value Register Low */
-#define WDOG_TOVALL_TOVALLOW_MASK                (0xFFFFU)
-#define WDOG_TOVALL_TOVALLOW_SHIFT               (0U)
-#define WDOG_TOVALL_TOVALLOW(x)                  (((uint16_t)(((uint16_t)(x)) << WDOG_TOVALL_TOVALLOW_SHIFT)) & WDOG_TOVALL_TOVALLOW_MASK)
-
-/*! @name WINH - Watchdog Window Register High */
-#define WDOG_WINH_WINHIGH_MASK                   (0xFFFFU)
-#define WDOG_WINH_WINHIGH_SHIFT                  (0U)
-#define WDOG_WINH_WINHIGH(x)                     (((uint16_t)(((uint16_t)(x)) << WDOG_WINH_WINHIGH_SHIFT)) & WDOG_WINH_WINHIGH_MASK)
-
-/*! @name WINL - Watchdog Window Register Low */
-#define WDOG_WINL_WINLOW_MASK                    (0xFFFFU)
-#define WDOG_WINL_WINLOW_SHIFT                   (0U)
-#define WDOG_WINL_WINLOW(x)                      (((uint16_t)(((uint16_t)(x)) << WDOG_WINL_WINLOW_SHIFT)) & WDOG_WINL_WINLOW_MASK)
-
-/*! @name REFRESH - Watchdog Refresh register */
-#define WDOG_REFRESH_WDOGREFRESH_MASK            (0xFFFFU)
-#define WDOG_REFRESH_WDOGREFRESH_SHIFT           (0U)
-#define WDOG_REFRESH_WDOGREFRESH(x)              (((uint16_t)(((uint16_t)(x)) << WDOG_REFRESH_WDOGREFRESH_SHIFT)) & WDOG_REFRESH_WDOGREFRESH_MASK)
-
-/*! @name UNLOCK - Watchdog Unlock register */
-#define WDOG_UNLOCK_WDOGUNLOCK_MASK              (0xFFFFU)
-#define WDOG_UNLOCK_WDOGUNLOCK_SHIFT             (0U)
-#define WDOG_UNLOCK_WDOGUNLOCK(x)                (((uint16_t)(((uint16_t)(x)) << WDOG_UNLOCK_WDOGUNLOCK_SHIFT)) & WDOG_UNLOCK_WDOGUNLOCK_MASK)
-
-/*! @name TMROUTH - Watchdog Timer Output Register High */
-#define WDOG_TMROUTH_TIMEROUTHIGH_MASK           (0xFFFFU)
-#define WDOG_TMROUTH_TIMEROUTHIGH_SHIFT          (0U)
-#define WDOG_TMROUTH_TIMEROUTHIGH(x)             (((uint16_t)(((uint16_t)(x)) << WDOG_TMROUTH_TIMEROUTHIGH_SHIFT)) & WDOG_TMROUTH_TIMEROUTHIGH_MASK)
-
-/*! @name TMROUTL - Watchdog Timer Output Register Low */
-#define WDOG_TMROUTL_TIMEROUTLOW_MASK            (0xFFFFU)
-#define WDOG_TMROUTL_TIMEROUTLOW_SHIFT           (0U)
-#define WDOG_TMROUTL_TIMEROUTLOW(x)              (((uint16_t)(((uint16_t)(x)) << WDOG_TMROUTL_TIMEROUTLOW_SHIFT)) & WDOG_TMROUTL_TIMEROUTLOW_MASK)
-
-/*! @name RSTCNT - Watchdog Reset Count register */
-#define WDOG_RSTCNT_RSTCNT_MASK                  (0xFFFFU)
-#define WDOG_RSTCNT_RSTCNT_SHIFT                 (0U)
-#define WDOG_RSTCNT_RSTCNT(x)                    (((uint16_t)(((uint16_t)(x)) << WDOG_RSTCNT_RSTCNT_SHIFT)) & WDOG_RSTCNT_RSTCNT_MASK)
-
-/*! @name PRESC - Watchdog Prescaler register */
-#define WDOG_PRESC_PRESCVAL_MASK                 (0x700U)
-#define WDOG_PRESC_PRESCVAL_SHIFT                (8U)
-#define WDOG_PRESC_PRESCVAL(x)                   (((uint16_t)(((uint16_t)(x)) << WDOG_PRESC_PRESCVAL_SHIFT)) & WDOG_PRESC_PRESCVAL_MASK)
-
-
-/*!
- * @}
- */ /* end of group WDOG_Register_Masks */
-
-
-/* WDOG - Peripheral instance base addresses */
-/** Peripheral WDOG base address */
-#define WDOG_BASE                                (0x40052000u)
-/** Peripheral WDOG base pointer */
-#define WDOG                                     ((WDOG_Type *)WDOG_BASE)
-/** Array initializer of WDOG peripheral base addresses */
-#define WDOG_BASE_ADDRS                          { WDOG_BASE }
-/** Array initializer of WDOG peripheral base pointers */
-#define WDOG_BASE_PTRS                           { WDOG }
-/** Interrupt vectors for the WDOG peripheral type */
-#define WDOG_IRQS                                { WDOG_EWM_IRQn }
-
-/*!
- * @}
- */ /* end of group WDOG_Peripheral_Access_Layer */
-
-
-/*
-** End of section using anonymous unions
-*/
-
-#if defined(__ARMCC_VERSION)
-  #pragma pop
-#elif defined(__CWCC__)
-  #pragma pop
-#elif defined(__GNUC__)
-  /* leave anonymous unions enabled */
-#elif defined(__IAR_SYSTEMS_ICC__)
-  #pragma language=default
-#else
-  #error Not supported compiler type
-#endif
-
-/*!
- * @}
- */ /* end of group Peripheral_access_layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- SDK Compatibility
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SDK_Compatibility_Symbols SDK Compatibility
- * @{
- */
-
-#define ENET_RMON_R_DROP_REG(base)               ENET_IEEE_R_DROP_REG(base)
-#define ENET_RMON_R_FRAME_OK_REG(base)           ENET_IEEE_R_FRAME_OK_REG(base)
-#define MCG_C2_EREFS0_MASK                       MCG_C2_EREFS_MASK
-#define MCG_C2_EREFS0_SHIFT                      MCG_C2_EREFS_SHIFT
-#define MCG_C2_HGO0_MASK                         MCG_C2_HGO_MASK
-#define MCG_C2_HGO0_SHIFT                        MCG_C2_HGO_SHIFT
-#define MCG_C2_RANGE0_MASK                       MCG_C2_RANGE_MASK
-#define MCG_C2_RANGE0_SHIFT                      MCG_C2_RANGE_SHIFT
-#define MCG_C2_RANGE0(x)                         MCG_C2_RANGE(x)
-#define MCM_ISR_REG(base)                        MCM_ISCR_REG(base)
-#define MCM_ISR_FIOC_MASK                        MCM_ISCR_FIOC_MASK
-#define MCM_ISR_FIOC_SHIFT                       MCM_ISCR_FIOC_SHIFT
-#define MCM_ISR_FDZC_MASK                        MCM_ISCR_FDZC_MASK
-#define MCM_ISR_FDZC_SHIFT                       MCM_ISCR_FDZC_SHIFT
-#define MCM_ISR_FOFC_MASK                        MCM_ISCR_FOFC_MASK
-#define MCM_ISR_FOFC_SHIFT                       MCM_ISCR_FOFC_SHIFT
-#define MCM_ISR_FUFC_MASK                        MCM_ISCR_FUFC_MASK
-#define MCM_ISR_FUFC_SHIFT                       MCM_ISCR_FUFC_SHIFT
-#define MCM_ISR_FIXC_MASK                        MCM_ISCR_FIXC_MASK
-#define MCM_ISR_FIXC_SHIFT                       MCM_ISCR_FIXC_SHIFT
-#define MCM_ISR_FIDC_MASK                        MCM_ISCR_FIDC_MASK
-#define MCM_ISR_FIDC_SHIFT                       MCM_ISCR_FIDC_SHIFT
-#define MCM_ISR_FIOCE_MASK                       MCM_ISCR_FIOCE_MASK
-#define MCM_ISR_FIOCE_SHIFT                      MCM_ISCR_FIOCE_SHIFT
-#define MCM_ISR_FDZCE_MASK                       MCM_ISCR_FDZCE_MASK
-#define MCM_ISR_FDZCE_SHIFT                      MCM_ISCR_FDZCE_SHIFT
-#define MCM_ISR_FOFCE_MASK                       MCM_ISCR_FOFCE_MASK
-#define MCM_ISR_FOFCE_SHIFT                      MCM_ISCR_FOFCE_SHIFT
-#define MCM_ISR_FUFCE_MASK                       MCM_ISCR_FUFCE_MASK
-#define MCM_ISR_FUFCE_SHIFT                      MCM_ISCR_FUFCE_SHIFT
-#define MCM_ISR_FIXCE_MASK                       MCM_ISCR_FIXCE_MASK
-#define MCM_ISR_FIXCE_SHIFT                      MCM_ISCR_FIXCE_SHIFT
-#define MCM_ISR_FIDCE_MASK                       MCM_ISCR_FIDCE_MASK
-#define MCM_ISR_FIDCE_SHIFT                      MCM_ISCR_FIDCE_SHIFT
-#define DSPI0                                    SPI0
-#define DSPI1                                    SPI1
-#define DSPI2                                    SPI2
-#define FLEXCAN0                                 CAN0
-#define GPIOA_BASE                               PTA_BASE
-#define GPIOA                                    PTA
-#define GPIOB_BASE                               PTB_BASE
-#define GPIOB                                    PTB
-#define GPIOC_BASE                               PTC_BASE
-#define GPIOC                                    PTC
-#define GPIOD_BASE                               PTD_BASE
-#define GPIOD                                    PTD
-#define GPIOE_BASE                               PTE_BASE
-#define GPIOE                                    PTE
-#define UART_WP7816_T_TYPE0_REG(base)            UART_WP7816T0_REG(base)
-#define UART_WP7816_T_TYPE1_REG(base)            UART_WP7816T1_REG(base)
-#define UART_WP7816_T_TYPE0_WI_MASK              UART_WP7816T0_WI_MASK
-#define UART_WP7816_T_TYPE0_WI_SHIFT             UART_WP7816T0_WI_SHIFT
-#define UART_WP7816_T_TYPE0_WI(x)                UART_WP7816T0_WI(x)
-#define UART_WP7816_T_TYPE1_BWI_MASK             UART_WP7816T1_BWI_MASK
-#define UART_WP7816_T_TYPE1_BWI_SHIFT            UART_WP7816T1_BWI_SHIFT
-#define UART_WP7816_T_TYPE1_BWI(x)               UART_WP7816T1_BWI(x)
-#define UART_WP7816_T_TYPE1_CWI_MASK             UART_WP7816T1_CWI_MASK
-#define UART_WP7816_T_TYPE1_CWI_SHIFT            UART_WP7816T1_CWI_SHIFT
-#define UART_WP7816_T_TYPE1_CWI(x)               UART_WP7816T1_CWI(x)
-#define Watchdog_IRQn                            WDOG_EWM_IRQn
-#define Watchdog_IRQHandler                      WDOG_EWM_IRQHandler
-#define LPTimer_IRQn                             LPTMR0_IRQn
-#define LPTimer_IRQHandler                       LPTMR0_IRQHandler
-#define LLW_IRQn                                 LLWU_IRQn
-#define LLW_IRQHandler                           LLWU_IRQHandler
-#define DMAMUX0                                  DMAMUX
-#define WDOG0                                    WDOG
-#define MCM0                                     MCM
-#define RTC0                                     RTC
-
-/*!
- * @}
- */ /* end of group SDK_Compatibility_Symbols */
-
-
-#endif  /* _MK64F12_H_ */
-
--- a/targets/cmsis/TARGET_Freescale/TARGET_K64F/MK64F12_features.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2108 +0,0 @@
-/*
-** ###################################################################
-**     Version:             rev. 2.14, 2015-06-08
-**     Build:               b151217
-**
-**     Abstract:
-**         Chip specific module features.
-**
-**     Copyright (c) 2015 Freescale Semiconductor, Inc.
-**     All rights reserved.
-**
-**     Redistribution and use in source and binary forms, with or without modification,
-**     are permitted provided that the following conditions are met:
-**
-**     o Redistributions of source code must retain the above copyright notice, this list
-**       of conditions and the following disclaimer.
-**
-**     o Redistributions in binary form must reproduce the above copyright notice, this
-**       list of conditions and the following disclaimer in the documentation and/or
-**       other materials provided with the distribution.
-**
-**     o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-**       contributors may be used to endorse or promote products derived from this
-**       software without specific prior written permission.
-**
-**     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-**     ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-**     WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-**     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-**     ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-**     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-**     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-**     ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-**     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-**     SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-**     http:                 www.freescale.com
-**     mail:                 support@freescale.com
-**
-**     Revisions:
-**     - rev. 1.0 (2013-08-12)
-**         Initial version.
-**     - rev. 2.0 (2013-10-29)
-**         Register accessor macros added to the memory map.
-**         Symbols for Processor Expert memory map compatibility added to the memory map.
-**         Startup file for gcc has been updated according to CMSIS 3.2.
-**         System initialization updated.
-**         MCG - registers updated.
-**         PORTA, PORTB, PORTC, PORTE - registers for digital filter removed.
-**     - rev. 2.1 (2013-10-30)
-**         Definition of BITBAND macros updated to support peripherals with 32-bit acces disabled.
-**     - rev. 2.2 (2013-12-09)
-**         DMA - EARS register removed.
-**         AIPS0, AIPS1 - MPRA register updated.
-**     - rev. 2.3 (2014-01-24)
-**         Update according to reference manual rev. 2
-**         ENET, MCG, MCM, SIM, USB - registers updated
-**     - rev. 2.4 (2014-01-30)
-**         Added single maximum value generation and a constrain to varying feature values that only numbers can have maximum.
-**     - rev. 2.5 (2014-02-10)
-**         The declaration of clock configurations has been moved to separate header file system_MK64F12.h
-**         Update of SystemInit() and SystemCoreClockUpdate() functions.
-**     - rev. 2.6 (2014-02-10)
-**         The declaration of clock configurations has been moved to separate header file system_MK64F12.h
-**         Update of SystemInit() and SystemCoreClockUpdate() functions.
-**         Module access macro module_BASES replaced by module_BASE_PTRS.
-**     - rev. 2.7 (2014-08-28)
-**         Update of system files - default clock configuration changed.
-**         Update of startup files - possibility to override DefaultISR added.
-**     - rev. 2.8 (2014-10-14)
-**         Interrupt INT_LPTimer renamed to INT_LPTMR0, interrupt INT_Watchdog renamed to INT_WDOG_EWM.
-**     - rev. 2.9 (2015-01-21)
-**         Added FSL_FEATURE_SOC_peripheral_COUNT with number of peripheral instances
-**     - rev. 2.10 (2015-02-19)
-**         Renamed interrupt vector LLW to LLWU.
-**     - rev. 2.11 (2015-05-19)
-**         FSL_FEATURE_SOC_CAU_COUNT remamed to FSL_FEATURE_SOC_MMCAU_COUNT.
-**         Added FSL_FEATURE_SOC_peripheral_COUNT for TRNG and HSADC.
-**         Added features for PDB and PORT.
-**     - rev. 2.12 (2015-05-25)
-**         Added FSL_FEATURE_FLASH_PFLASH_START_ADDRESS
-**     - rev. 2.13 (2015-05-27)
-**         Several USB features added.
-**     - rev. 2.14 (2015-06-08)
-**         FTM features BUS_CLOCK and FAST_CLOCK removed.
-**
-** ###################################################################
-*/
-
-#ifndef _MK64F12_FEATURES_H_
-#define _MK64F12_FEATURES_H_
-
-/* SOC module features */
-
-#if defined(CPU_MK64FN1M0VDC12) || defined(CPU_MK64FN1M0VLQ12) || defined(CPU_MK64FN1M0VMD12) || defined(CPU_MK64FX512VDC12) || \
-    defined(CPU_MK64FX512VLQ12) || defined(CPU_MK64FX512VMD12)
-    /* @brief ACMP availability on the SoC. */
-    #define FSL_FEATURE_SOC_ACMP_COUNT (0)
-    /* @brief ADC16 availability on the SoC. */
-    #define FSL_FEATURE_SOC_ADC16_COUNT (2)
-    /* @brief ADC12 availability on the SoC. */
-    #define FSL_FEATURE_SOC_ADC12_COUNT (0)
-    /* @brief AFE availability on the SoC. */
-    #define FSL_FEATURE_SOC_AFE_COUNT (0)
-    /* @brief AIPS availability on the SoC. */
-    #define FSL_FEATURE_SOC_AIPS_COUNT (2)
-    /* @brief AOI availability on the SoC. */
-    #define FSL_FEATURE_SOC_AOI_COUNT (0)
-    /* @brief AXBS availability on the SoC. */
-    #define FSL_FEATURE_SOC_AXBS_COUNT (1)
-    /* @brief ASMC availability on the SoC. */
-    #define FSL_FEATURE_SOC_ASMC_COUNT (0)
-    /* @brief CADC availability on the SoC. */
-    #define FSL_FEATURE_SOC_CADC_COUNT (0)
-    /* @brief FLEXCAN availability on the SoC. */
-    #define FSL_FEATURE_SOC_FLEXCAN_COUNT (1)
-    /* @brief MMCAU availability on the SoC. */
-    #define FSL_FEATURE_SOC_MMCAU_COUNT (1)
-    /* @brief CMP availability on the SoC. */
-    #define FSL_FEATURE_SOC_CMP_COUNT (3)
-    /* @brief CMT availability on the SoC. */
-    #define FSL_FEATURE_SOC_CMT_COUNT (1)
-    /* @brief CNC availability on the SoC. */
-    #define FSL_FEATURE_SOC_CNC_COUNT (0)
-    /* @brief CRC availability on the SoC. */
-    #define FSL_FEATURE_SOC_CRC_COUNT (1)
-    /* @brief DAC availability on the SoC. */
-    #define FSL_FEATURE_SOC_DAC_COUNT (2)
-    /* @brief DAC32 availability on the SoC. */
-    #define FSL_FEATURE_SOC_DAC32_COUNT (0)
-    /* @brief DCDC availability on the SoC. */
-    #define FSL_FEATURE_SOC_DCDC_COUNT (0)
-    /* @brief DDR availability on the SoC. */
-    #define FSL_FEATURE_SOC_DDR_COUNT (0)
-    /* @brief DMA availability on the SoC. */
-    #define FSL_FEATURE_SOC_DMA_COUNT (0)
-    /* @brief EDMA availability on the SoC. */
-    #define FSL_FEATURE_SOC_EDMA_COUNT (1)
-    /* @brief DMAMUX availability on the SoC. */
-    #define FSL_FEATURE_SOC_DMAMUX_COUNT (1)
-    /* @brief DRY availability on the SoC. */
-    #define FSL_FEATURE_SOC_DRY_COUNT (0)
-    /* @brief DSPI availability on the SoC. */
-    #define FSL_FEATURE_SOC_DSPI_COUNT (3)
-    /* @brief EMVSIM availability on the SoC. */
-    #define FSL_FEATURE_SOC_EMVSIM_COUNT (0)
-    /* @brief ENC availability on the SoC. */
-    #define FSL_FEATURE_SOC_ENC_COUNT (0)
-    /* @brief ENET availability on the SoC. */
-    #define FSL_FEATURE_SOC_ENET_COUNT (1)
-    /* @brief EWM availability on the SoC. */
-    #define FSL_FEATURE_SOC_EWM_COUNT (1)
-    /* @brief FB availability on the SoC. */
-    #define FSL_FEATURE_SOC_FB_COUNT (1)
-    /* @brief FGPIO availability on the SoC. */
-    #define FSL_FEATURE_SOC_FGPIO_COUNT (0)
-    /* @brief FLEXIO availability on the SoC. */
-    #define FSL_FEATURE_SOC_FLEXIO_COUNT (0)
-    /* @brief FMC availability on the SoC. */
-    #define FSL_FEATURE_SOC_FMC_COUNT (1)
-    /* @brief FSKDT availability on the SoC. */
-    #define FSL_FEATURE_SOC_FSKDT_COUNT (0)
-    /* @brief FTFA availability on the SoC. */
-    #define FSL_FEATURE_SOC_FTFA_COUNT (0)
-    /* @brief FTFE availability on the SoC. */
-    #define FSL_FEATURE_SOC_FTFE_COUNT (1)
-    /* @brief FTFL availability on the SoC. */
-    #define FSL_FEATURE_SOC_FTFL_COUNT (0)
-    /* @brief FTM availability on the SoC. */
-    #define FSL_FEATURE_SOC_FTM_COUNT (4)
-    /* @brief FTMRA availability on the SoC. */
-    #define FSL_FEATURE_SOC_FTMRA_COUNT (0)
-    /* @brief FTMRE availability on the SoC. */
-    #define FSL_FEATURE_SOC_FTMRE_COUNT (0)
-    /* @brief FTMRH availability on the SoC. */
-    #define FSL_FEATURE_SOC_FTMRH_COUNT (0)
-    /* @brief GPIO availability on the SoC. */
-    #define FSL_FEATURE_SOC_GPIO_COUNT (5)
-    /* @brief HSADC availability on the SoC. */
-    #define FSL_FEATURE_SOC_HSADC_COUNT (0)
-    /* @brief I2C availability on the SoC. */
-    #define FSL_FEATURE_SOC_I2C_COUNT (3)
-    /* @brief I2S availability on the SoC. */
-    #define FSL_FEATURE_SOC_I2S_COUNT (1)
-    /* @brief ICS availability on the SoC. */
-    #define FSL_FEATURE_SOC_ICS_COUNT (0)
-    /* @brief INTMUX availability on the SoC. */
-    #define FSL_FEATURE_SOC_INTMUX_COUNT (0)
-    /* @brief IRQ availability on the SoC. */
-    #define FSL_FEATURE_SOC_IRQ_COUNT (0)
-    /* @brief KBI availability on the SoC. */
-    #define FSL_FEATURE_SOC_KBI_COUNT (0)
-    /* @brief SLCD availability on the SoC. */
-    #define FSL_FEATURE_SOC_SLCD_COUNT (0)
-    /* @brief LCDC availability on the SoC. */
-    #define FSL_FEATURE_SOC_LCDC_COUNT (0)
-    /* @brief LDO availability on the SoC. */
-    #define FSL_FEATURE_SOC_LDO_COUNT (0)
-    /* @brief LLWU availability on the SoC. */
-    #define FSL_FEATURE_SOC_LLWU_COUNT (1)
-    /* @brief LMEM availability on the SoC. */
-    #define FSL_FEATURE_SOC_LMEM_COUNT (0)
-    /* @brief LPI2C availability on the SoC. */
-    #define FSL_FEATURE_SOC_LPI2C_COUNT (0)
-    /* @brief LPIT availability on the SoC. */
-    #define FSL_FEATURE_SOC_LPIT_COUNT (0)
-    /* @brief LPSCI availability on the SoC. */
-    #define FSL_FEATURE_SOC_LPSCI_COUNT (0)
-    /* @brief LPSPI availability on the SoC. */
-    #define FSL_FEATURE_SOC_LPSPI_COUNT (0)
-    /* @brief LPTMR availability on the SoC. */
-    #define FSL_FEATURE_SOC_LPTMR_COUNT (1)
-    /* @brief LPTPM availability on the SoC. */
-    #define FSL_FEATURE_SOC_LPTPM_COUNT (0)
-    /* @brief LPUART availability on the SoC. */
-    #define FSL_FEATURE_SOC_LPUART_COUNT (0)
-    /* @brief LTC availability on the SoC. */
-    #define FSL_FEATURE_SOC_LTC_COUNT (0)
-    /* @brief MC availability on the SoC. */
-    #define FSL_FEATURE_SOC_MC_COUNT (0)
-    /* @brief MCG availability on the SoC. */
-    #define FSL_FEATURE_SOC_MCG_COUNT (1)
-    /* @brief MCGLITE availability on the SoC. */
-    #define FSL_FEATURE_SOC_MCGLITE_COUNT (0)
-    /* @brief MCM availability on the SoC. */
-    #define FSL_FEATURE_SOC_MCM_COUNT (1)
-    /* @brief MMAU availability on the SoC. */
-    #define FSL_FEATURE_SOC_MMAU_COUNT (0)
-    /* @brief MMDVSQ availability on the SoC. */
-    #define FSL_FEATURE_SOC_MMDVSQ_COUNT (0)
-    /* @brief MPU availability on the SoC. */
-    #define FSL_FEATURE_SOC_MPU_COUNT (1)
-    /* @brief MSCAN availability on the SoC. */
-    #define FSL_FEATURE_SOC_MSCAN_COUNT (0)
-    /* @brief MSCM availability on the SoC. */
-    #define FSL_FEATURE_SOC_MSCM_COUNT (0)
-    /* @brief MTB availability on the SoC. */
-    #define FSL_FEATURE_SOC_MTB_COUNT (0)
-    /* @brief MTBDWT availability on the SoC. */
-    #define FSL_FEATURE_SOC_MTBDWT_COUNT (0)
-    /* @brief MU availability on the SoC. */
-    #define FSL_FEATURE_SOC_MU_COUNT (0)
-    /* @brief NFC availability on the SoC. */
-    #define FSL_FEATURE_SOC_NFC_COUNT (0)
-    /* @brief OPAMP availability on the SoC. */
-    #define FSL_FEATURE_SOC_OPAMP_COUNT (0)
-    /* @brief OSC availability on the SoC. */
-    #define FSL_FEATURE_SOC_OSC_COUNT (1)
-    /* @brief OSC32 availability on the SoC. */
-    #define FSL_FEATURE_SOC_OSC32_COUNT (0)
-    /* @brief OTFAD availability on the SoC. */
-    #define FSL_FEATURE_SOC_OTFAD_COUNT (0)
-    /* @brief PDB availability on the SoC. */
-    #define FSL_FEATURE_SOC_PDB_COUNT (1)
-    /* @brief PCC availability on the SoC. */
-    #define FSL_FEATURE_SOC_PCC_COUNT (0)
-    /* @brief PGA availability on the SoC. */
-    #define FSL_FEATURE_SOC_PGA_COUNT (0)
-    /* @brief PIT availability on the SoC. */
-    #define FSL_FEATURE_SOC_PIT_COUNT (1)
-    /* @brief PMC availability on the SoC. */
-    #define FSL_FEATURE_SOC_PMC_COUNT (1)
-    /* @brief PORT availability on the SoC. */
-    #define FSL_FEATURE_SOC_PORT_COUNT (5)
-    /* @brief PWM availability on the SoC. */
-    #define FSL_FEATURE_SOC_PWM_COUNT (0)
-    /* @brief PWT availability on the SoC. */
-    #define FSL_FEATURE_SOC_PWT_COUNT (0)
-    /* @brief QuadSPI availability on the SoC. */
-    #define FSL_FEATURE_SOC_QuadSPI_COUNT (0)
-    /* @brief RCM availability on the SoC. */
-    #define FSL_FEATURE_SOC_RCM_COUNT (1)
-    /* @brief RFSYS availability on the SoC. */
-    #define FSL_FEATURE_SOC_RFSYS_COUNT (1)
-    /* @brief RFVBAT availability on the SoC. */
-    #define FSL_FEATURE_SOC_RFVBAT_COUNT (1)
-    /* @brief RNG availability on the SoC. */
-    #define FSL_FEATURE_SOC_RNG_COUNT (1)
-    /* @brief RNGB availability on the SoC. */
-    #define FSL_FEATURE_SOC_RNGB_COUNT (0)
-    /* @brief ROM availability on the SoC. */
-    #define FSL_FEATURE_SOC_ROM_COUNT (0)
-    /* @brief RSIM availability on the SoC. */
-    #define FSL_FEATURE_SOC_RSIM_COUNT (0)
-    /* @brief RTC availability on the SoC. */
-    #define FSL_FEATURE_SOC_RTC_COUNT (1)
-    /* @brief SCG availability on the SoC. */
-    #define FSL_FEATURE_SOC_SCG_COUNT (0)
-    /* @brief SCI availability on the SoC. */
-    #define FSL_FEATURE_SOC_SCI_COUNT (0)
-    /* @brief SDHC availability on the SoC. */
-    #define FSL_FEATURE_SOC_SDHC_COUNT (1)
-    /* @brief SDRAM availability on the SoC. */
-    #define FSL_FEATURE_SOC_SDRAM_COUNT (0)
-    /* @brief SEMA42 availability on the SoC. */
-    #define FSL_FEATURE_SOC_SEMA42_COUNT (0)
-    /* @brief SIM availability on the SoC. */
-    #define FSL_FEATURE_SOC_SIM_COUNT (1)
-    /* @brief SMC availability on the SoC. */
-    #define FSL_FEATURE_SOC_SMC_COUNT (1)
-    /* @brief SPI availability on the SoC. */
-    #define FSL_FEATURE_SOC_SPI_COUNT (0)
-    /* @brief TMR availability on the SoC. */
-    #define FSL_FEATURE_SOC_TMR_COUNT (0)
-    /* @brief TPM availability on the SoC. */
-    #define FSL_FEATURE_SOC_TPM_COUNT (0)
-    /* @brief TRGMUX availability on the SoC. */
-    #define FSL_FEATURE_SOC_TRGMUX_COUNT (0)
-    /* @brief TRIAMP availability on the SoC. */
-    #define FSL_FEATURE_SOC_TRIAMP_COUNT (0)
-    /* @brief TRNG availability on the SoC. */
-    #define FSL_FEATURE_SOC_TRNG_COUNT (0)
-    /* @brief TSI availability on the SoC. */
-    #define FSL_FEATURE_SOC_TSI_COUNT (0)
-    /* @brief TSTMR availability on the SoC. */
-    #define FSL_FEATURE_SOC_TSTMR_COUNT (0)
-    /* @brief UART availability on the SoC. */
-    #define FSL_FEATURE_SOC_UART_COUNT (6)
-    /* @brief USB availability on the SoC. */
-    #define FSL_FEATURE_SOC_USB_COUNT (1)
-    /* @brief USBDCD availability on the SoC. */
-    #define FSL_FEATURE_SOC_USBDCD_COUNT (1)
-    /* @brief USBHSDCD availability on the SoC. */
-    #define FSL_FEATURE_SOC_USBHSDCD_COUNT (0)
-    /* @brief USBPHY availability on the SoC. */
-    #define FSL_FEATURE_SOC_USBPHY_COUNT (0)
-    /* @brief VREF availability on the SoC. */
-    #define FSL_FEATURE_SOC_VREF_COUNT (1)
-    /* @brief WDOG availability on the SoC. */
-    #define FSL_FEATURE_SOC_WDOG_COUNT (1)
-    /* @brief XBAR availability on the SoC. */
-    #define FSL_FEATURE_SOC_XBAR_COUNT (0)
-    /* @brief XBARA availability on the SoC. */
-    #define FSL_FEATURE_SOC_XBARA_COUNT (0)
-    /* @brief XBARB availability on the SoC. */
-    #define FSL_FEATURE_SOC_XBARB_COUNT (0)
-    /* @brief XCVR availability on the SoC. */
-    #define FSL_FEATURE_SOC_XCVR_COUNT (0)
-    /* @brief XRDC availability on the SoC. */
-    #define FSL_FEATURE_SOC_XRDC_COUNT (0)
-    /* @brief ZLL availability on the SoC. */
-    #define FSL_FEATURE_SOC_ZLL_COUNT (0)
-#elif defined(CPU_MK64FN1M0VLL12) || defined(CPU_MK64FX512VLL12)
-    /* @brief ACMP availability on the SoC. */
-    #define FSL_FEATURE_SOC_ACMP_COUNT (0)
-    /* @brief ADC16 availability on the SoC. */
-    #define FSL_FEATURE_SOC_ADC16_COUNT (2)
-    /* @brief ADC12 availability on the SoC. */
-    #define FSL_FEATURE_SOC_ADC12_COUNT (0)
-    /* @brief AFE availability on the SoC. */
-    #define FSL_FEATURE_SOC_AFE_COUNT (0)
-    /* @brief AIPS availability on the SoC. */
-    #define FSL_FEATURE_SOC_AIPS_COUNT (2)
-    /* @brief AOI availability on the SoC. */
-    #define FSL_FEATURE_SOC_AOI_COUNT (0)
-    /* @brief AXBS availability on the SoC. */
-    #define FSL_FEATURE_SOC_AXBS_COUNT (1)
-    /* @brief ASMC availability on the SoC. */
-    #define FSL_FEATURE_SOC_ASMC_COUNT (0)
-    /* @brief CADC availability on the SoC. */
-    #define FSL_FEATURE_SOC_CADC_COUNT (0)
-    /* @brief FLEXCAN availability on the SoC. */
-    #define FSL_FEATURE_SOC_FLEXCAN_COUNT (1)
-    /* @brief MMCAU availability on the SoC. */
-    #define FSL_FEATURE_SOC_MMCAU_COUNT (1)
-    /* @brief CMP availability on the SoC. */
-    #define FSL_FEATURE_SOC_CMP_COUNT (3)
-    /* @brief CMT availability on the SoC. */
-    #define FSL_FEATURE_SOC_CMT_COUNT (1)
-    /* @brief CNC availability on the SoC. */
-    #define FSL_FEATURE_SOC_CNC_COUNT (0)
-    /* @brief CRC availability on the SoC. */
-    #define FSL_FEATURE_SOC_CRC_COUNT (1)
-    /* @brief DAC availability on the SoC. */
-    #define FSL_FEATURE_SOC_DAC_COUNT (1)
-    /* @brief DAC32 availability on the SoC. */
-    #define FSL_FEATURE_SOC_DAC32_COUNT (0)
-    /* @brief DCDC availability on the SoC. */
-    #define FSL_FEATURE_SOC_DCDC_COUNT (0)
-    /* @brief DDR availability on the SoC. */
-    #define FSL_FEATURE_SOC_DDR_COUNT (0)
-    /* @brief DMA availability on the SoC. */
-    #define FSL_FEATURE_SOC_DMA_COUNT (0)
-    /* @brief EDMA availability on the SoC. */
-    #define FSL_FEATURE_SOC_EDMA_COUNT (1)
-    /* @brief DMAMUX availability on the SoC. */
-    #define FSL_FEATURE_SOC_DMAMUX_COUNT (1)
-    /* @brief DRY availability on the SoC. */
-    #define FSL_FEATURE_SOC_DRY_COUNT (0)
-    /* @brief DSPI availability on the SoC. */
-    #define FSL_FEATURE_SOC_DSPI_COUNT (3)
-    /* @brief EMVSIM availability on the SoC. */
-    #define FSL_FEATURE_SOC_EMVSIM_COUNT (0)
-    /* @brief ENC availability on the SoC. */
-    #define FSL_FEATURE_SOC_ENC_COUNT (0)
-    /* @brief ENET availability on the SoC. */
-    #define FSL_FEATURE_SOC_ENET_COUNT (1)
-    /* @brief EWM availability on the SoC. */
-    #define FSL_FEATURE_SOC_EWM_COUNT (1)
-    /* @brief FB availability on the SoC. */
-    #define FSL_FEATURE_SOC_FB_COUNT (1)
-    /* @brief FGPIO availability on the SoC. */
-    #define FSL_FEATURE_SOC_FGPIO_COUNT (0)
-    /* @brief FLEXIO availability on the SoC. */
-    #define FSL_FEATURE_SOC_FLEXIO_COUNT (0)
-    /* @brief FMC availability on the SoC. */
-    #define FSL_FEATURE_SOC_FMC_COUNT (1)
-    /* @brief FSKDT availability on the SoC. */
-    #define FSL_FEATURE_SOC_FSKDT_COUNT (0)
-    /* @brief FTFA availability on the SoC. */
-    #define FSL_FEATURE_SOC_FTFA_COUNT (0)
-    /* @brief FTFE availability on the SoC. */
-    #define FSL_FEATURE_SOC_FTFE_COUNT (1)
-    /* @brief FTFL availability on the SoC. */
-    #define FSL_FEATURE_SOC_FTFL_COUNT (0)
-    /* @brief FTM availability on the SoC. */
-    #define FSL_FEATURE_SOC_FTM_COUNT (4)
-    /* @brief FTMRA availability on the SoC. */
-    #define FSL_FEATURE_SOC_FTMRA_COUNT (0)
-    /* @brief FTMRE availability on the SoC. */
-    #define FSL_FEATURE_SOC_FTMRE_COUNT (0)
-    /* @brief FTMRH availability on the SoC. */
-    #define FSL_FEATURE_SOC_FTMRH_COUNT (0)
-    /* @brief GPIO availability on the SoC. */
-    #define FSL_FEATURE_SOC_GPIO_COUNT (5)
-    /* @brief HSADC availability on the SoC. */
-    #define FSL_FEATURE_SOC_HSADC_COUNT (0)
-    /* @brief I2C availability on the SoC. */
-    #define FSL_FEATURE_SOC_I2C_COUNT (3)
-    /* @brief I2S availability on the SoC. */
-    #define FSL_FEATURE_SOC_I2S_COUNT (1)
-    /* @brief ICS availability on the SoC. */
-    #define FSL_FEATURE_SOC_ICS_COUNT (0)
-    /* @brief INTMUX availability on the SoC. */
-    #define FSL_FEATURE_SOC_INTMUX_COUNT (0)
-    /* @brief IRQ availability on the SoC. */
-    #define FSL_FEATURE_SOC_IRQ_COUNT (0)
-    /* @brief KBI availability on the SoC. */
-    #define FSL_FEATURE_SOC_KBI_COUNT (0)
-    /* @brief SLCD availability on the SoC. */
-    #define FSL_FEATURE_SOC_SLCD_COUNT (0)
-    /* @brief LCDC availability on the SoC. */
-    #define FSL_FEATURE_SOC_LCDC_COUNT (0)
-    /* @brief LDO availability on the SoC. */
-    #define FSL_FEATURE_SOC_LDO_COUNT (0)
-    /* @brief LLWU availability on the SoC. */
-    #define FSL_FEATURE_SOC_LLWU_COUNT (1)
-    /* @brief LMEM availability on the SoC. */
-    #define FSL_FEATURE_SOC_LMEM_COUNT (0)
-    /* @brief LPI2C availability on the SoC. */
-    #define FSL_FEATURE_SOC_LPI2C_COUNT (0)
-    /* @brief LPIT availability on the SoC. */
-    #define FSL_FEATURE_SOC_LPIT_COUNT (0)
-    /* @brief LPSCI availability on the SoC. */
-    #define FSL_FEATURE_SOC_LPSCI_COUNT (0)
-    /* @brief LPSPI availability on the SoC. */
-    #define FSL_FEATURE_SOC_LPSPI_COUNT (0)
-    /* @brief LPTMR availability on the SoC. */
-    #define FSL_FEATURE_SOC_LPTMR_COUNT (1)
-    /* @brief LPTPM availability on the SoC. */
-    #define FSL_FEATURE_SOC_LPTPM_COUNT (0)
-    /* @brief LPUART availability on the SoC. */
-    #define FSL_FEATURE_SOC_LPUART_COUNT (0)
-    /* @brief LTC availability on the SoC. */
-    #define FSL_FEATURE_SOC_LTC_COUNT (0)
-    /* @brief MC availability on the SoC. */
-    #define FSL_FEATURE_SOC_MC_COUNT (0)
-    /* @brief MCG availability on the SoC. */
-    #define FSL_FEATURE_SOC_MCG_COUNT (1)
-    /* @brief MCGLITE availability on the SoC. */
-    #define FSL_FEATURE_SOC_MCGLITE_COUNT (0)
-    /* @brief MCM availability on the SoC. */
-    #define FSL_FEATURE_SOC_MCM_COUNT (1)
-    /* @brief MMAU availability on the SoC. */
-    #define FSL_FEATURE_SOC_MMAU_COUNT (0)
-    /* @brief MMDVSQ availability on the SoC. */
-    #define FSL_FEATURE_SOC_MMDVSQ_COUNT (0)
-    /* @brief MPU availability on the SoC. */
-    #define FSL_FEATURE_SOC_MPU_COUNT (1)
-    /* @brief MSCAN availability on the SoC. */
-    #define FSL_FEATURE_SOC_MSCAN_COUNT (0)
-    /* @brief MSCM availability on the SoC. */
-    #define FSL_FEATURE_SOC_MSCM_COUNT (0)
-    /* @brief MTB availability on the SoC. */
-    #define FSL_FEATURE_SOC_MTB_COUNT (0)
-    /* @brief MTBDWT availability on the SoC. */
-    #define FSL_FEATURE_SOC_MTBDWT_COUNT (0)
-    /* @brief MU availability on the SoC. */
-    #define FSL_FEATURE_SOC_MU_COUNT (0)
-    /* @brief NFC availability on the SoC. */
-    #define FSL_FEATURE_SOC_NFC_COUNT (0)
-    /* @brief OPAMP availability on the SoC. */
-    #define FSL_FEATURE_SOC_OPAMP_COUNT (0)
-    /* @brief OSC availability on the SoC. */
-    #define FSL_FEATURE_SOC_OSC_COUNT (1)
-    /* @brief OSC32 availability on the SoC. */
-    #define FSL_FEATURE_SOC_OSC32_COUNT (0)
-    /* @brief OTFAD availability on the SoC. */
-    #define FSL_FEATURE_SOC_OTFAD_COUNT (0)
-    /* @brief PDB availability on the SoC. */
-    #define FSL_FEATURE_SOC_PDB_COUNT (1)
-    /* @brief PCC availability on the SoC. */
-    #define FSL_FEATURE_SOC_PCC_COUNT (0)
-    /* @brief PGA availability on the SoC. */
-    #define FSL_FEATURE_SOC_PGA_COUNT (0)
-    /* @brief PIT availability on the SoC. */
-    #define FSL_FEATURE_SOC_PIT_COUNT (1)
-    /* @brief PMC availability on the SoC. */
-    #define FSL_FEATURE_SOC_PMC_COUNT (1)
-    /* @brief PORT availability on the SoC. */
-    #define FSL_FEATURE_SOC_PORT_COUNT (5)
-    /* @brief PWM availability on the SoC. */
-    #define FSL_FEATURE_SOC_PWM_COUNT (0)
-    /* @brief PWT availability on the SoC. */
-    #define FSL_FEATURE_SOC_PWT_COUNT (0)
-    /* @brief QuadSPI availability on the SoC. */
-    #define FSL_FEATURE_SOC_QuadSPI_COUNT (0)
-    /* @brief RCM availability on the SoC. */
-    #define FSL_FEATURE_SOC_RCM_COUNT (1)
-    /* @brief RFSYS availability on the SoC. */
-    #define FSL_FEATURE_SOC_RFSYS_COUNT (1)
-    /* @brief RFVBAT availability on the SoC. */
-    #define FSL_FEATURE_SOC_RFVBAT_COUNT (1)
-    /* @brief RNG availability on the SoC. */
-    #define FSL_FEATURE_SOC_RNG_COUNT (1)
-    /* @brief RNGB availability on the SoC. */
-    #define FSL_FEATURE_SOC_RNGB_COUNT (0)
-    /* @brief ROM availability on the SoC. */
-    #define FSL_FEATURE_SOC_ROM_COUNT (0)
-    /* @brief RSIM availability on the SoC. */
-    #define FSL_FEATURE_SOC_RSIM_COUNT (0)
-    /* @brief RTC availability on the SoC. */
-    #define FSL_FEATURE_SOC_RTC_COUNT (1)
-    /* @brief SCG availability on the SoC. */
-    #define FSL_FEATURE_SOC_SCG_COUNT (0)
-    /* @brief SCI availability on the SoC. */
-    #define FSL_FEATURE_SOC_SCI_COUNT (0)
-    /* @brief SDHC availability on the SoC. */
-    #define FSL_FEATURE_SOC_SDHC_COUNT (1)
-    /* @brief SDRAM availability on the SoC. */
-    #define FSL_FEATURE_SOC_SDRAM_COUNT (0)
-    /* @brief SEMA42 availability on the SoC. */
-    #define FSL_FEATURE_SOC_SEMA42_COUNT (0)
-    /* @brief SIM availability on the SoC. */
-    #define FSL_FEATURE_SOC_SIM_COUNT (1)
-    /* @brief SMC availability on the SoC. */
-    #define FSL_FEATURE_SOC_SMC_COUNT (1)
-    /* @brief SPI availability on the SoC. */
-    #define FSL_FEATURE_SOC_SPI_COUNT (0)
-    /* @brief TMR availability on the SoC. */
-    #define FSL_FEATURE_SOC_TMR_COUNT (0)
-    /* @brief TPM availability on the SoC. */
-    #define FSL_FEATURE_SOC_TPM_COUNT (0)
-    /* @brief TRGMUX availability on the SoC. */
-    #define FSL_FEATURE_SOC_TRGMUX_COUNT (0)
-    /* @brief TRIAMP availability on the SoC. */
-    #define FSL_FEATURE_SOC_TRIAMP_COUNT (0)
-    /* @brief TRNG availability on the SoC. */
-    #define FSL_FEATURE_SOC_TRNG_COUNT (0)
-    /* @brief TSI availability on the SoC. */
-    #define FSL_FEATURE_SOC_TSI_COUNT (0)
-    /* @brief TSTMR availability on the SoC. */
-    #define FSL_FEATURE_SOC_TSTMR_COUNT (0)
-    /* @brief UART availability on the SoC. */
-    #define FSL_FEATURE_SOC_UART_COUNT (6)
-    /* @brief USB availability on the SoC. */
-    #define FSL_FEATURE_SOC_USB_COUNT (1)
-    /* @brief USBDCD availability on the SoC. */
-    #define FSL_FEATURE_SOC_USBDCD_COUNT (1)
-    /* @brief USBHSDCD availability on the SoC. */
-    #define FSL_FEATURE_SOC_USBHSDCD_COUNT (0)
-    /* @brief USBPHY availability on the SoC. */
-    #define FSL_FEATURE_SOC_USBPHY_COUNT (0)
-    /* @brief VREF availability on the SoC. */
-    #define FSL_FEATURE_SOC_VREF_COUNT (1)
-    /* @brief WDOG availability on the SoC. */
-    #define FSL_FEATURE_SOC_WDOG_COUNT (1)
-    /* @brief XBAR availability on the SoC. */
-    #define FSL_FEATURE_SOC_XBAR_COUNT (0)
-    /* @brief XBARA availability on the SoC. */
-    #define FSL_FEATURE_SOC_XBARA_COUNT (0)
-    /* @brief XBARB availability on the SoC. */
-    #define FSL_FEATURE_SOC_XBARB_COUNT (0)
-    /* @brief XCVR availability on the SoC. */
-    #define FSL_FEATURE_SOC_XCVR_COUNT (0)
-    /* @brief XRDC availability on the SoC. */
-    #define FSL_FEATURE_SOC_XRDC_COUNT (0)
-    /* @brief ZLL availability on the SoC. */
-    #define FSL_FEATURE_SOC_ZLL_COUNT (0)
-#endif
-
-/* ADC16 module features */
-
-/* @brief Has Programmable Gain Amplifier (PGA) in ADC (register PGA). */
-#define FSL_FEATURE_ADC16_HAS_PGA (0)
-/* @brief Has PGA chopping control in ADC (bit PGA[PGACHPb] or PGA[PGACHP]). */
-#define FSL_FEATURE_ADC16_HAS_PGA_CHOPPING (0)
-/* @brief Has PGA offset measurement mode in ADC (bit PGA[PGAOFSM]). */
-#define FSL_FEATURE_ADC16_HAS_PGA_OFFSET_MEASUREMENT (0)
-/* @brief Has DMA support (bit SC2[DMAEN] or SC4[DMAEN]). */
-#define FSL_FEATURE_ADC16_HAS_DMA (1)
-/* @brief Has differential mode (bitfield SC1x[DIFF]). */
-#define FSL_FEATURE_ADC16_HAS_DIFF_MODE (1)
-/* @brief Has FIFO (bit SC4[AFDEP]). */
-#define FSL_FEATURE_ADC16_HAS_FIFO (0)
-/* @brief FIFO size if available (bitfield SC4[AFDEP]). */
-#define FSL_FEATURE_ADC16_FIFO_SIZE (0)
-/* @brief Has channel set a/b multiplexor (bitfield CFG2[MUXSEL]). */
-#define FSL_FEATURE_ADC16_HAS_MUX_SELECT (1)
-/* @brief Has HW trigger masking (bitfield SC5[HTRGMASKE]. */
-#define FSL_FEATURE_ADC16_HAS_HW_TRIGGER_MASK (0)
-/* @brief Has calibration feature (bit SC3[CAL] and registers CLPx, CLMx). */
-#define FSL_FEATURE_ADC16_HAS_CALIBRATION (1)
-/* @brief Has HW averaging (bit SC3[AVGE]). */
-#define FSL_FEATURE_ADC16_HAS_HW_AVERAGE (1)
-/* @brief Has offset correction (register OFS). */
-#define FSL_FEATURE_ADC16_HAS_OFFSET_CORRECTION (1)
-/* @brief Maximum ADC resolution. */
-#define FSL_FEATURE_ADC16_MAX_RESOLUTION (16)
-/* @brief Number of SC1x and Rx register pairs (conversion control and result registers). */
-#define FSL_FEATURE_ADC16_CONVERSION_CONTROL_COUNT (2)
-
-/* FLEXCAN module features */
-
-/* @brief Message buffer size */
-#define FSL_FEATURE_FLEXCAN_HAS_MESSAGE_BUFFER_MAX_NUMBERn(x) (16)
-/* @brief Has doze mode support (register bit field MCR[DOZE]). */
-#define FSL_FEATURE_FLEXCAN_HAS_DOZE_MODE_SUPPORT (0)
-/* @brief Has a glitch filter on the receive pin (register bit field MCR[WAKSRC]). */
-#define FSL_FEATURE_FLEXCAN_HAS_GLITCH_FILTER (1)
-/* @brief Has extended interrupt mask and flag register (register IMASK2, IFLAG2). */
-#define FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER (0)
-/* @brief Has extended bit timing register (register CBT). */
-#define FSL_FEATURE_FLEXCAN_HAS_EXTENDED_TIMING_REGISTER (0)
-/* @brief Has a receive FIFO DMA feature (register bit field MCR[DMA]). */
-#define FSL_FEATURE_FLEXCAN_HAS_RX_FIFO_DMA (0)
-/* @brief Has separate message buffer 0 interrupt flag (register bit field IFLAG1[BUF0I]). */
-#define FSL_FEATURE_FLEXCAN_HAS_SEPARATE_BUFFER_0_FLAG (1)
-/* @brief Has bitfield name BUF31TO0M. */
-#define FSL_FEATURE_FLEXCAN_HAS_BUF31TO0M (0)
-/* @brief Number of interrupt vectors. */
-#define FSL_FEATURE_FLEXCAN_INTERRUPT_COUNT (6)
-
-/* CMP module features */
-
-/* @brief Has Trigger mode in CMP (register bit field CR1[TRIGM]). */
-#define FSL_FEATURE_CMP_HAS_TRIGGER_MODE (0)
-/* @brief Has Window mode in CMP (register bit field CR1[WE]). */
-#define FSL_FEATURE_CMP_HAS_WINDOW_MODE (1)
-/* @brief Has External sample supported in CMP (register bit field CR1[SE]). */
-#define FSL_FEATURE_CMP_HAS_EXTERNAL_SAMPLE_SUPPORT (1)
-/* @brief Has DMA support in CMP (register bit field SCR[DMAEN]). */
-#define FSL_FEATURE_CMP_HAS_DMA (1)
-/* @brief Has Pass Through mode in CMP (register bit field MUXCR[PSTM]). */
-#define FSL_FEATURE_CMP_HAS_PASS_THROUGH_MODE (1)
-/* @brief Has DAC Test function in CMP (register DACTEST). */
-#define FSL_FEATURE_CMP_HAS_DAC_TEST (0)
-
-/* CRC module features */
-
-/* @brief Has data register with name CRC */
-#define FSL_FEATURE_CRC_HAS_CRC_REG (0)
-
-/* DAC module features */
-
-/* @brief Define the size of hardware buffer */
-#define FSL_FEATURE_DAC_BUFFER_SIZE (16)
-/* @brief Define whether the buffer supports watermark event detection or not. */
-#define FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION (1)
-/* @brief Define whether the buffer supports watermark selection detection or not. */
-#define FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION (1)
-/* @brief Define whether the buffer supports watermark event 1 word before buffer upper limit. */
-#define FSL_FEATURE_DAC_HAS_WATERMARK_1_WORD (1)
-/* @brief Define whether the buffer supports watermark event 2 words before buffer upper limit. */
-#define FSL_FEATURE_DAC_HAS_WATERMARK_2_WORDS (1)
-/* @brief Define whether the buffer supports watermark event 3 words before buffer upper limit. */
-#define FSL_FEATURE_DAC_HAS_WATERMARK_3_WORDS (1)
-/* @brief Define whether the buffer supports watermark event 4 words before buffer upper limit. */
-#define FSL_FEATURE_DAC_HAS_WATERMARK_4_WORDS (1)
-/* @brief Define whether FIFO buffer mode is available or not. */
-#define FSL_FEATURE_DAC_HAS_BUFFER_FIFO_MODE (0)
-/* @brief Define whether swing buffer mode is available or not.. */
-#define FSL_FEATURE_DAC_HAS_BUFFER_SWING_MODE (1)
-
-/* EDMA module features */
-
-/* @brief Number of DMA channels (related to number of registers TCD, DCHPRI, bit fields ERQ[ERQn], EEI[EEIn], INT[INTn], ERR[ERRn], HRS[HRSn] and bit field widths ES[ERRCHN], CEEI[CEEI], SEEI[SEEI], CERQ[CERQ], SERQ[SERQ], CDNE[CDNE], SSRT[SSRT], CERR[CERR], CINT[CINT], TCDn_CITER_ELINKYES[LINKCH], TCDn_CSR[MAJORLINKCH], TCDn_BITER_ELINKYES[LINKCH]). (Valid only for eDMA modules.) */
-#define FSL_FEATURE_EDMA_MODULE_CHANNEL (16)
-/* @brief Total number of DMA channels on all modules. */
-#define FSL_FEATURE_EDMA_DMAMUX_CHANNELS (FSL_FEATURE_SOC_EDMA_COUNT * 16)
-/* @brief Number of DMA channel groups (register bit fields CR[ERGA], CR[GRPnPRI], ES[GPE], DCHPRIn[GRPPRI]). (Valid only for eDMA modules.) */
-#define FSL_FEATURE_EDMA_CHANNEL_GROUP_COUNT (1)
-/* @brief Has DMA_Error interrupt vector. */
-#define FSL_FEATURE_EDMA_HAS_ERROR_IRQ (1)
-/* @brief Number of DMA channels with asynchronous request capability (register EARS). (Valid only for eDMA modules.) */
-#define FSL_FEATURE_EDMA_ASYNCHRO_REQUEST_CHANNEL_COUNT (0)
-
-/* DMAMUX module features */
-
-/* @brief Number of DMA channels (related to number of register CHCFGn). */
-#define FSL_FEATURE_DMAMUX_MODULE_CHANNEL (16)
-/* @brief Total number of DMA channels on all modules. */
-#define FSL_FEATURE_DMAMUX_DMAMUX_CHANNELS (FSL_FEATURE_SOC_DMAMUX_COUNT * 16)
-/* @brief Has the periodic trigger capability for the triggered DMA channel 0 (register bit CHCFG0[TRIG]). */
-#define FSL_FEATURE_DMAMUX_HAS_TRIG (1)
-
-/* ENET module features */
-
-/* @brief Has buffer descriptor byte swapping (register bit field ECR[DBSWP]). */
-#define FSL_FEATURE_ENET_DMA_BIG_ENDIAN_ONLY (0)
-/* @brief Has precision time protocol (IEEE 1588) support (register bit field ECR[EN1588], registers ATCR, ATVR, ATOFF, ATPER, ATCOR, ATINC, ATSTMP). */
-#define FSL_FEATURE_ENET_SUPPORT_PTP (1)
-/* @brief Number of associated interrupt vectors. */
-#define FSL_FEATURE_ENET_INTERRUPT_COUNT (4)
-/* @brief Has threshold for the number of frames in the receive FIFO (register bit field RSEM[STAT_SECTION_EMPTY]). */
-#define FSL_FEATURE_ENET_HAS_RECEIVE_STATUS_THRESHOLD (1)
-
-/* EWM module features */
-
-/* @brief Has clock select (register CLKCTRL). */
-#define FSL_FEATURE_EWM_HAS_CLOCK_SELECT  (0)
-/* @brief Has clock prescaler (register CLKPRESCALER). */
-#define FSL_FEATURE_EWM_HAS_PRESCALER  (0)
-
-/* FLEXBUS module features */
-
-/* No feature definitions */
-
-/* FLASH module features */
-
-#if defined(CPU_MK64FN1M0VDC12) || defined(CPU_MK64FN1M0VLL12) || defined(CPU_MK64FN1M0VLQ12) || defined(CPU_MK64FN1M0VMD12)
-    /* @brief Is of type FTFA. */
-    #define FSL_FEATURE_FLASH_IS_FTFA (0)
-    /* @brief Is of type FTFE. */
-    #define FSL_FEATURE_FLASH_IS_FTFE (1)
-    /* @brief Is of type FTFL. */
-    #define FSL_FEATURE_FLASH_IS_FTFL (0)
-    /* @brief Has flags indicating the status of the FlexRAM (register bits FCNFG[EEERDY], FCNFG[RAMRDY] and FCNFG[PFLSH]). */
-    #define FSL_FEATURE_FLASH_HAS_FLEX_RAM_FLAGS (1)
-    /* @brief Has program flash swapping status flag (register bit FCNFG[SWAP]). */
-    #define FSL_FEATURE_FLASH_HAS_PFLASH_SWAPPING_STATUS_FLAG (1)
-    /* @brief Has EEPROM region protection (register FEPROT). */
-    #define FSL_FEATURE_FLASH_HAS_EEROM_REGION_PROTECTION (1)
-    /* @brief Has data flash region protection (register FDPROT). */
-    #define FSL_FEATURE_FLASH_HAS_DATA_FLASH_REGION_PROTECTION (1)
-    /* @brief Has flash access control (registers XACCHn, SACCHn, where n is a number, FACSS and FACSN). */
-    #define FSL_FEATURE_FLASH_HAS_ACCESS_CONTROL (0)
-    /* @brief Has flash cache control in FMC module. */
-    #define FSL_FEATURE_FLASH_HAS_FMC_FLASH_CACHE_CONTROLS (1)
-    /* @brief Has flash cache control in MCM module. */
-    #define FSL_FEATURE_FLASH_HAS_MCM_FLASH_CACHE_CONTROLS (0)
-    /* @brief P-Flash start address. */
-    #define FSL_FEATURE_FLASH_PFLASH_START_ADDRESS (0x00000000)
-    /* @brief P-Flash block count. */
-    #define FSL_FEATURE_FLASH_PFLASH_BLOCK_COUNT (2)
-    /* @brief P-Flash block size. */
-    #define FSL_FEATURE_FLASH_PFLASH_BLOCK_SIZE (524288)
-    /* @brief P-Flash sector size. */
-    #define FSL_FEATURE_FLASH_PFLASH_BLOCK_SECTOR_SIZE (4096)
-    /* @brief P-Flash write unit size. */
-    #define FSL_FEATURE_FLASH_PFLASH_BLOCK_WRITE_UNIT_SIZE (8)
-    /* @brief P-Flash data path width. */
-    #define FSL_FEATURE_FLASH_PFLASH_BLOCK_DATA_PATH_WIDTH (16)
-    /* @brief P-Flash block swap feature. */
-    #define FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP (1)
-    /* @brief Has FlexNVM memory. */
-    #define FSL_FEATURE_FLASH_HAS_FLEX_NVM (0)
-    /* @brief FlexNVM start address. (Valid only if FlexNVM is available.) */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_START_ADDRESS (0x00000000)
-    /* @brief FlexNVM block count. */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_BLOCK_COUNT (0)
-    /* @brief FlexNVM block size. */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_BLOCK_SIZE (0)
-    /* @brief FlexNVM sector size. */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_BLOCK_SECTOR_SIZE (0)
-    /* @brief FlexNVM write unit size. */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_BLOCK_WRITE_UNIT_SIZE (0)
-    /* @brief FlexNVM data path width. */
-    #define FSL_FEATURE_FLASH_FLEX_BLOCK_DATA_PATH_WIDTH (0)
-    /* @brief Has FlexRAM memory. */
-    #define FSL_FEATURE_FLASH_HAS_FLEX_RAM (1)
-    /* @brief FlexRAM start address. (Valid only if FlexRAM is available.) */
-    #define FSL_FEATURE_FLASH_FLEX_RAM_START_ADDRESS (0x14000000)
-    /* @brief FlexRAM size. */
-    #define FSL_FEATURE_FLASH_FLEX_RAM_SIZE (4096)
-    /* @brief Has 0x00 Read 1s Block command. */
-    #define FSL_FEATURE_FLASH_HAS_READ_1S_BLOCK_CMD (1)
-    /* @brief Has 0x01 Read 1s Section command. */
-    #define FSL_FEATURE_FLASH_HAS_READ_1S_SECTION_CMD (1)
-    /* @brief Has 0x02 Program Check command. */
-    #define FSL_FEATURE_FLASH_HAS_PROGRAM_CHECK_CMD (1)
-    /* @brief Has 0x03 Read Resource command. */
-    #define FSL_FEATURE_FLASH_HAS_READ_RESOURCE_CMD (1)
-    /* @brief Has 0x06 Program Longword command. */
-    #define FSL_FEATURE_FLASH_HAS_PROGRAM_LONGWORD_CMD (0)
-    /* @brief Has 0x07 Program Phrase command. */
-    #define FSL_FEATURE_FLASH_HAS_PROGRAM_PHRASE_CMD (1)
-    /* @brief Has 0x08 Erase Flash Block command. */
-    #define FSL_FEATURE_FLASH_HAS_ERASE_FLASH_BLOCK_CMD (1)
-    /* @brief Has 0x09 Erase Flash Sector command. */
-    #define FSL_FEATURE_FLASH_HAS_ERASE_FLASH_SECTOR_CMD (1)
-    /* @brief Has 0x0B Program Section command. */
-    #define FSL_FEATURE_FLASH_HAS_PROGRAM_SECTION_CMD (1)
-    /* @brief Has 0x40 Read 1s All Blocks command. */
-    #define FSL_FEATURE_FLASH_HAS_READ_1S_ALL_BLOCKS_CMD (1)
-    /* @brief Has 0x41 Read Once command. */
-    #define FSL_FEATURE_FLASH_HAS_READ_ONCE_CMD (1)
-    /* @brief Has 0x43 Program Once command. */
-    #define FSL_FEATURE_FLASH_HAS_PROGRAM_ONCE_CMD (1)
-    /* @brief Has 0x44 Erase All Blocks command. */
-    #define FSL_FEATURE_FLASH_HAS_ERASE_ALL_BLOCKS_CMD (1)
-    /* @brief Has 0x45 Verify Backdoor Access Key command. */
-    #define FSL_FEATURE_FLASH_HAS_VERIFY_BACKDOOR_ACCESS_KEY_CMD (1)
-    /* @brief Has 0x46 Swap Control command. */
-    #define FSL_FEATURE_FLASH_HAS_SWAP_CONTROL_CMD (1)
-    /* @brief Has 0x49 Erase All Blocks Unsecure command. */
-    #define FSL_FEATURE_FLASH_HAS_ERASE_ALL_BLOCKS_UNSECURE_CMD (0)
-    /* @brief Has 0x80 Program Partition command. */
-    #define FSL_FEATURE_FLASH_HAS_PROGRAM_PARTITION_CMD (0)
-    /* @brief Has 0x81 Set FlexRAM Function command. */
-    #define FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD (0)
-    /* @brief P-Flash Erase/Read 1st all block command address alignment. */
-    #define FSL_FEATURE_FLASH_PFLASH_BLOCK_CMD_ADDRESS_ALIGMENT (16)
-    /* @brief P-Flash Erase sector command address alignment. */
-    #define FSL_FEATURE_FLASH_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT (16)
-    /* @brief P-Flash Rrogram/Verify section command address alignment. */
-    #define FSL_FEATURE_FLASH_PFLASH_SECTION_CMD_ADDRESS_ALIGMENT (16)
-    /* @brief P-Flash Read resource command address alignment. */
-    #define FSL_FEATURE_FLASH_PFLASH_RESOURCE_CMD_ADDRESS_ALIGMENT (8)
-    /* @brief P-Flash Program check command address alignment. */
-    #define FSL_FEATURE_FLASH_PFLASH_CHECK_CMD_ADDRESS_ALIGMENT (4)
-    /* @brief P-Flash Program check command address alignment. */
-    #define FSL_FEATURE_FLASH_PFLASH_SWAP_CONTROL_CMD_ADDRESS_ALIGMENT (16)
-    /* @brief FlexNVM Erase/Read 1st all block command address alignment. */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_BLOCK_CMD_ADDRESS_ALIGMENT (0)
-    /* @brief FlexNVM Erase sector command address alignment. */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_SECTOR_CMD_ADDRESS_ALIGMENT (0)
-    /* @brief FlexNVM Rrogram/Verify section command address alignment. */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_SECTION_CMD_ADDRESS_ALIGMENT (0)
-    /* @brief FlexNVM Read resource command address alignment. */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_RESOURCE_CMD_ADDRESS_ALIGMENT (0)
-    /* @brief FlexNVM Program check command address alignment. */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_CHECK_CMD_ADDRESS_ALIGMENT (0)
-    /* @brief FlexNVM partition code 0000 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0000 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 0001 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0001 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 0010 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0010 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 0011 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0011 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 0100 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0100 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 0101 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0101 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 0110 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0110 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 0111 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0111 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 1000 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1000 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 1001 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1001 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 1010 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1010 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 1011 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1011 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 1100 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1100 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 1101 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1101 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 1110 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1110 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 1111 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1111 (0xFFFFFFFF)
-    /* @brief Emulated eeprom size code 0000 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0000 (0xFFFF)
-    /* @brief Emulated eeprom size code 0001 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0001 (0xFFFF)
-    /* @brief Emulated eeprom size code 0010 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0010 (0x1000)
-    /* @brief Emulated eeprom size code 0011 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0011 (0x0800)
-    /* @brief Emulated eeprom size code 0100 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0100 (0x0400)
-    /* @brief Emulated eeprom size code 0101 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0101 (0x0200)
-    /* @brief Emulated eeprom size code 0110 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0110 (0x0100)
-    /* @brief Emulated eeprom size code 0111 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0111 (0x0080)
-    /* @brief Emulated eeprom size code 1000 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1000 (0x0040)
-    /* @brief Emulated eeprom size code 1001 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1001 (0x0020)
-    /* @brief Emulated eeprom size code 1010 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1010 (0xFFFF)
-    /* @brief Emulated eeprom size code 1011 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1011 (0xFFFF)
-    /* @brief Emulated eeprom size code 1100 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1100 (0xFFFF)
-    /* @brief Emulated eeprom size code 1101 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1101 (0xFFFF)
-    /* @brief Emulated eeprom size code 1110 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1110 (0xFFFF)
-    /* @brief Emulated eeprom size code 1111 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1111 (0x0000)
-#elif defined(CPU_MK64FX512VDC12) || defined(CPU_MK64FX512VLL12) || defined(CPU_MK64FX512VLQ12) || defined(CPU_MK64FX512VMD12)
-    /* @brief Is of type FTFA. */
-    #define FSL_FEATURE_FLASH_IS_FTFA (0)
-    /* @brief Is of type FTFE. */
-    #define FSL_FEATURE_FLASH_IS_FTFE (1)
-    /* @brief Is of type FTFL. */
-    #define FSL_FEATURE_FLASH_IS_FTFL (0)
-    /* @brief Has flags indicating the status of the FlexRAM (register bits FCNFG[EEERDY], FCNFG[RAMRDY] and FCNFG[PFLSH]). */
-    #define FSL_FEATURE_FLASH_HAS_FLEX_RAM_FLAGS (1)
-    /* @brief Has program flash swapping status flag (register bit FCNFG[SWAP]). */
-    #define FSL_FEATURE_FLASH_HAS_PFLASH_SWAPPING_STATUS_FLAG (1)
-    /* @brief Has EEPROM region protection (register FEPROT). */
-    #define FSL_FEATURE_FLASH_HAS_EEROM_REGION_PROTECTION (1)
-    /* @brief Has data flash region protection (register FDPROT). */
-    #define FSL_FEATURE_FLASH_HAS_DATA_FLASH_REGION_PROTECTION (1)
-    /* @brief Has flash access control (registers XACCHn, SACCHn, where n is a number, FACSS and FACSN). */
-    #define FSL_FEATURE_FLASH_HAS_ACCESS_CONTROL (0)
-    /* @brief Has flash cache control in FMC module. */
-    #define FSL_FEATURE_FLASH_HAS_FMC_FLASH_CACHE_CONTROLS (1)
-    /* @brief Has flash cache control in MCM module. */
-    #define FSL_FEATURE_FLASH_HAS_MCM_FLASH_CACHE_CONTROLS (0)
-    /* @brief P-Flash start address. */
-    #define FSL_FEATURE_FLASH_PFLASH_START_ADDRESS (0x00000000)
-    /* @brief P-Flash block count. */
-    #define FSL_FEATURE_FLASH_PFLASH_BLOCK_COUNT (1)
-    /* @brief P-Flash block size. */
-    #define FSL_FEATURE_FLASH_PFLASH_BLOCK_SIZE (524288)
-    /* @brief P-Flash sector size. */
-    #define FSL_FEATURE_FLASH_PFLASH_BLOCK_SECTOR_SIZE (4096)
-    /* @brief P-Flash write unit size. */
-    #define FSL_FEATURE_FLASH_PFLASH_BLOCK_WRITE_UNIT_SIZE (8)
-    /* @brief P-Flash data path width. */
-    #define FSL_FEATURE_FLASH_PFLASH_BLOCK_DATA_PATH_WIDTH (16)
-    /* @brief P-Flash block swap feature. */
-    #define FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP (0)
-    /* @brief Has FlexNVM memory. */
-    #define FSL_FEATURE_FLASH_HAS_FLEX_NVM (1)
-    /* @brief FlexNVM start address. (Valid only if FlexNVM is available.) */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_START_ADDRESS (0x10000000)
-    /* @brief FlexNVM block count. */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_BLOCK_COUNT (1)
-    /* @brief FlexNVM block size. */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_BLOCK_SIZE (131072)
-    /* @brief FlexNVM sector size. */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_BLOCK_SECTOR_SIZE (4096)
-    /* @brief FlexNVM write unit size. */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_BLOCK_WRITE_UNIT_SIZE (8)
-    /* @brief FlexNVM data path width. */
-    #define FSL_FEATURE_FLASH_FLEX_BLOCK_DATA_PATH_WIDTH (16)
-    /* @brief Has FlexRAM memory. */
-    #define FSL_FEATURE_FLASH_HAS_FLEX_RAM (1)
-    /* @brief FlexRAM start address. (Valid only if FlexRAM is available.) */
-    #define FSL_FEATURE_FLASH_FLEX_RAM_START_ADDRESS (0x14000000)
-    /* @brief FlexRAM size. */
-    #define FSL_FEATURE_FLASH_FLEX_RAM_SIZE (4096)
-    /* @brief Has 0x00 Read 1s Block command. */
-    #define FSL_FEATURE_FLASH_HAS_READ_1S_BLOCK_CMD (0)
-    /* @brief Has 0x01 Read 1s Section command. */
-    #define FSL_FEATURE_FLASH_HAS_READ_1S_SECTION_CMD (1)
-    /* @brief Has 0x02 Program Check command. */
-    #define FSL_FEATURE_FLASH_HAS_PROGRAM_CHECK_CMD (1)
-    /* @brief Has 0x03 Read Resource command. */
-    #define FSL_FEATURE_FLASH_HAS_READ_RESOURCE_CMD (1)
-    /* @brief Has 0x06 Program Longword command. */
-    #define FSL_FEATURE_FLASH_HAS_PROGRAM_LONGWORD_CMD (0)
-    /* @brief Has 0x07 Program Phrase command. */
-    #define FSL_FEATURE_FLASH_HAS_PROGRAM_PHRASE_CMD (1)
-    /* @brief Has 0x08 Erase Flash Block command. */
-    #define FSL_FEATURE_FLASH_HAS_ERASE_FLASH_BLOCK_CMD (0)
-    /* @brief Has 0x09 Erase Flash Sector command. */
-    #define FSL_FEATURE_FLASH_HAS_ERASE_FLASH_SECTOR_CMD (1)
-    /* @brief Has 0x0B Program Section command. */
-    #define FSL_FEATURE_FLASH_HAS_PROGRAM_SECTION_CMD (1)
-    /* @brief Has 0x40 Read 1s All Blocks command. */
-    #define FSL_FEATURE_FLASH_HAS_READ_1S_ALL_BLOCKS_CMD (0)
-    /* @brief Has 0x41 Read Once command. */
-    #define FSL_FEATURE_FLASH_HAS_READ_ONCE_CMD (1)
-    /* @brief Has 0x43 Program Once command. */
-    #define FSL_FEATURE_FLASH_HAS_PROGRAM_ONCE_CMD (1)
-    /* @brief Has 0x44 Erase All Blocks command. */
-    #define FSL_FEATURE_FLASH_HAS_ERASE_ALL_BLOCKS_CMD (0)
-    /* @brief Has 0x45 Verify Backdoor Access Key command. */
-    #define FSL_FEATURE_FLASH_HAS_VERIFY_BACKDOOR_ACCESS_KEY_CMD (1)
-    /* @brief Has 0x46 Swap Control command. */
-    #define FSL_FEATURE_FLASH_HAS_SWAP_CONTROL_CMD (0)
-    /* @brief Has 0x49 Erase All Blocks Unsecure command. */
-    #define FSL_FEATURE_FLASH_HAS_ERASE_ALL_BLOCKS_UNSECURE_CMD (0)
-    /* @brief Has 0x80 Program Partition command. */
-    #define FSL_FEATURE_FLASH_HAS_PROGRAM_PARTITION_CMD (1)
-    /* @brief Has 0x81 Set FlexRAM Function command. */
-    #define FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD (1)
-    /* @brief P-Flash Erase/Read 1st all block command address alignment. */
-    #define FSL_FEATURE_FLASH_PFLASH_BLOCK_CMD_ADDRESS_ALIGMENT (16)
-    /* @brief P-Flash Erase sector command address alignment. */
-    #define FSL_FEATURE_FLASH_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT (16)
-    /* @brief P-Flash Rrogram/Verify section command address alignment. */
-    #define FSL_FEATURE_FLASH_PFLASH_SECTION_CMD_ADDRESS_ALIGMENT (16)
-    /* @brief P-Flash Read resource command address alignment. */
-    #define FSL_FEATURE_FLASH_PFLASH_RESOURCE_CMD_ADDRESS_ALIGMENT (8)
-    /* @brief P-Flash Program check command address alignment. */
-    #define FSL_FEATURE_FLASH_PFLASH_CHECK_CMD_ADDRESS_ALIGMENT (4)
-    /* @brief P-Flash Program check command address alignment. */
-    #define FSL_FEATURE_FLASH_PFLASH_SWAP_CONTROL_CMD_ADDRESS_ALIGMENT (0)
-    /* @brief FlexNVM Erase/Read 1st all block command address alignment. */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_BLOCK_CMD_ADDRESS_ALIGMENT (16)
-    /* @brief FlexNVM Erase sector command address alignment. */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_SECTOR_CMD_ADDRESS_ALIGMENT (16)
-    /* @brief FlexNVM Rrogram/Verify section command address alignment. */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_SECTION_CMD_ADDRESS_ALIGMENT (16)
-    /* @brief FlexNVM Read resource command address alignment. */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_RESOURCE_CMD_ADDRESS_ALIGMENT (8)
-    /* @brief FlexNVM Program check command address alignment. */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_CHECK_CMD_ADDRESS_ALIGMENT (4)
-    /* @brief FlexNVM partition code 0000 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0000 (0x00020000)
-    /* @brief FlexNVM partition code 0001 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0001 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 0010 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0010 (0x0001C000)
-    /* @brief FlexNVM partition code 0011 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0011 (0x00018000)
-    /* @brief FlexNVM partition code 0100 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0100 (0x00010000)
-    /* @brief FlexNVM partition code 0101 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0101 (0x00000000)
-    /* @brief FlexNVM partition code 0110 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0110 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 0111 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0111 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 1000 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1000 (0x00000000)
-    /* @brief FlexNVM partition code 1001 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1001 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 1010 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1010 (0x00004000)
-    /* @brief FlexNVM partition code 1011 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1011 (0x00008000)
-    /* @brief FlexNVM partition code 1100 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1100 (0x00010000)
-    /* @brief FlexNVM partition code 1101 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1101 (0x00020000)
-    /* @brief FlexNVM partition code 1110 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1110 (0xFFFFFFFF)
-    /* @brief FlexNVM partition code 1111 mapping to data flash size in bytes (0xFFFFFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1111 (0x00020000)
-    /* @brief Emulated eeprom size code 0000 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0000 (0xFFFF)
-    /* @brief Emulated eeprom size code 0001 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0001 (0xFFFF)
-    /* @brief Emulated eeprom size code 0010 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0010 (0x1000)
-    /* @brief Emulated eeprom size code 0011 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0011 (0x0800)
-    /* @brief Emulated eeprom size code 0100 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0100 (0x0400)
-    /* @brief Emulated eeprom size code 0101 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0101 (0x0200)
-    /* @brief Emulated eeprom size code 0110 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0110 (0x0100)
-    /* @brief Emulated eeprom size code 0111 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0111 (0x0080)
-    /* @brief Emulated eeprom size code 1000 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1000 (0x0040)
-    /* @brief Emulated eeprom size code 1001 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1001 (0x0020)
-    /* @brief Emulated eeprom size code 1010 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1010 (0xFFFF)
-    /* @brief Emulated eeprom size code 1011 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1011 (0xFFFF)
-    /* @brief Emulated eeprom size code 1100 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1100 (0xFFFF)
-    /* @brief Emulated eeprom size code 1101 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1101 (0xFFFF)
-    /* @brief Emulated eeprom size code 1110 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1110 (0xFFFF)
-    /* @brief Emulated eeprom size code 1111 mapping to emulated eeprom size in bytes (0xFFFF = reserved). */
-    #define FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1111 (0x0000)
-#endif /* defined(CPU_MK64FN1M0VDC12) || defined(CPU_MK64FN1M0VLL12) || defined(CPU_MK64FN1M0VLQ12) || defined(CPU_MK64FN1M0VMD12) */
-
-/* FTM module features */
-
-/* @brief Number of channels. */
-#define FSL_FEATURE_FTM_CHANNEL_COUNTn(x) \
-    ((x) == FTM0 ? (8) : \
-    ((x) == FTM1 ? (2) : \
-    ((x) == FTM2 ? (2) : \
-    ((x) == FTM3 ? (8) : (-1)))))
-/* @brief Has counter reset by the selected input capture event (register bits C0SC[ICRST], C1SC[ICRST], ...). */
-#define FSL_FEATURE_FTM_HAS_COUNTER_RESET_BY_CAPTURE_EVENT (0)
-/* @brief Enable pwm output for the module. */
-#define FSL_FEATURE_FTM_HAS_ENABLE_PWM_OUTPUT (0)
-/* @brief Has half-cycle reload for the module. */
-#define FSL_FEATURE_FTM_HAS_HALFCYCLE_RELOAD (0)
-/* @brief Has reload interrupt. */
-#define FSL_FEATURE_FTM_HAS_RELOAD_INTERRUPT (0)
-/* @brief Has reload initialization trigger. */
-#define FSL_FEATURE_FTM_HAS_RELOAD_INITIALIZATION_TRIGGER (0)
-
-/* I2C module features */
-
-/* @brief Has System Management Bus support (registers SMB, A2, SLTL and SLTH). */
-#define FSL_FEATURE_I2C_HAS_SMBUS (1)
-/* @brief Maximum supported baud rate in kilobit per second. */
-#define FSL_FEATURE_I2C_MAX_BAUD_KBPS (400)
-/* @brief Is affected by errata with ID 6070 (repeat start cannot be generated if the F[MULT] bit field is set to a non-zero value). */
-#define FSL_FEATURE_I2C_HAS_ERRATA_6070 (0)
-/* @brief Has DMA support (register bit C1[DMAEN]). */
-#define FSL_FEATURE_I2C_HAS_DMA_SUPPORT (1)
-/* @brief Has I2C bus start and stop detection (register bits FLT[SSIE], FLT[STARTF] and FLT[STOPF]). */
-#define FSL_FEATURE_I2C_HAS_START_STOP_DETECT (1)
-/* @brief Has I2C bus stop detection (register bits FLT[STOPIE] and FLT[STOPF]). */
-#define FSL_FEATURE_I2C_HAS_STOP_DETECT (0)
-/* @brief Has I2C bus stop hold off (register bit FLT[SHEN]). */
-#define FSL_FEATURE_I2C_HAS_STOP_HOLD_OFF (1)
-/* @brief Maximum width of the glitch filter in number of bus clocks. */
-#define FSL_FEATURE_I2C_MAX_GLITCH_FILTER_WIDTH (15)
-/* @brief Has control of the drive capability of the I2C pins. */
-#define FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION (1)
-/* @brief Has double buffering support (register S2). */
-#define FSL_FEATURE_I2C_HAS_DOUBLE_BUFFERING (0)
-
-/* SAI module features */
-
-/* @brief Receive/transmit FIFO size in item count (register bit fields TCSR[FRDE], TCSR[FRIE], TCSR[FRF], TCR1[TFW], RCSR[FRDE], RCSR[FRIE], RCSR[FRF], RCR1[RFW], registers TFRn, RFRn). */
-#define FSL_FEATURE_SAI_FIFO_COUNT (8)
-/* @brief Receive/transmit channel number (register bit fields TCR3[TCE], RCR3[RCE], registers TDRn and RDRn). */
-#define FSL_FEATURE_SAI_CHANNEL_COUNT (2)
-/* @brief Maximum words per frame (register bit fields TCR3[WDFL], TCR4[FRSZ], TMR[TWM], RCR3[WDFL], RCR4[FRSZ], RMR[RWM]). */
-#define FSL_FEATURE_SAI_MAX_WORDS_PER_FRAME (32)
-/* @brief Has support of combining multiple data channel FIFOs into single channel FIFO (register bit fields TCR3[CFR], TCR4[FCOMB], TFR0[WCP], TFR1[WCP], RCR3[CFR], RCR4[FCOMB], RFR0[RCP], RFR1[RCP]). */
-#define FSL_FEATURE_SAI_HAS_FIFO_COMBINE_MODE (0)
-/* @brief Has packing of 8-bit and 16-bit data into each 32-bit FIFO word (register bit fields TCR4[FPACK], RCR4[FPACK]). */
-#define FSL_FEATURE_SAI_HAS_FIFO_PACKING (0)
-/* @brief Configures when the SAI will continue transmitting after a FIFO error has been detected (register bit fields TCR4[FCONT], RCR4[FCONT]). */
-#define FSL_FEATURE_SAI_HAS_FIFO_FUNCTION_AFTER_ERROR (0)
-/* @brief Configures if the frame sync is generated internally, a frame sync is only generated when the FIFO warning flag is clear or continuously (register bit fields TCR4[ONDEM], RCR4[ONDEM]). */
-#define FSL_FEATURE_SAI_HAS_ON_DEMAND_MODE (0)
-/* @brief Simplified bit clock source and asynchronous/synchronous mode selection (register bit fields TCR2[CLKMODE], RCR2[CLKMODE]), in comparison with the exclusively implemented TCR2[SYNC,BCS,BCI,MSEL], RCR2[SYNC,BCS,BCI,MSEL]. */
-#define FSL_FEATURE_SAI_HAS_CLOCKING_MODE (0)
-/* @brief Has register for configuration of the MCLK divide ratio (register bit fields MDR[FRACT], MDR[DIVIDE]). */
-#define FSL_FEATURE_SAI_HAS_MCLKDIV_REGISTER (1)
-/* @brief Ihe interrupt source number */
-#define FSL_FEATURE_SAI_INT_SOURCE_NUM (2)
-/* @brief Has register of MCR. */
-#define FSL_FEATURE_SAI_HAS_MCR (1)
-/* @brief Has register of MDR */
-#define FSL_FEATURE_SAI_HAS_MDR (1)
-
-/* LLWU module features */
-
-/* @brief Maximum number of pins (maximal index plus one) connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN (16)
-/* @brief Has pins 8-15 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_EXTERNAL_PIN_GROUP2 (1)
-/* @brief Maximum number of internal modules connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_INTERNAL_MODULE (8)
-/* @brief Number of digital filters. */
-#define FSL_FEATURE_LLWU_HAS_PIN_FILTER (2)
-/* @brief Has MF5 register. */
-#define FSL_FEATURE_LLWU_HAS_MF (0)
-/* @brief Has PF register. */
-#define FSL_FEATURE_LLWU_HAS_PF (0)
-/* @brief Has possibility to enable reset in low leakage power mode and enable digital filter for RESET pin (register LLWU_RST). */
-#define FSL_FEATURE_LLWU_HAS_RESET_ENABLE (1)
-/* @brief Has external pin 0 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN0 (1)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN0_GPIO_IDX (GPIOE_IDX)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN0_GPIO_PIN (1)
-/* @brief Has external pin 1 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN1 (1)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN1_GPIO_IDX (GPIOE_IDX)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN1_GPIO_PIN (2)
-/* @brief Has external pin 2 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN2 (1)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN2_GPIO_IDX (GPIOE_IDX)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN2_GPIO_PIN (4)
-/* @brief Has external pin 3 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN3 (1)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN3_GPIO_IDX (GPIOA_IDX)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN3_GPIO_PIN (4)
-/* @brief Has external pin 4 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN4 (1)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN4_GPIO_IDX (GPIOA_IDX)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN4_GPIO_PIN (13)
-/* @brief Has external pin 5 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN5 (1)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN5_GPIO_IDX (GPIOB_IDX)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN5_GPIO_PIN (0)
-/* @brief Has external pin 6 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN6 (1)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN6_GPIO_IDX (GPIOC_IDX)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN6_GPIO_PIN (1)
-/* @brief Has external pin 7 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN7 (1)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN7_GPIO_IDX (GPIOC_IDX)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN7_GPIO_PIN (3)
-/* @brief Has external pin 8 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN8 (1)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN8_GPIO_IDX (GPIOC_IDX)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN8_GPIO_PIN (4)
-/* @brief Has external pin 9 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN9 (1)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN9_GPIO_IDX (GPIOC_IDX)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN9_GPIO_PIN (5)
-/* @brief Has external pin 10 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN10 (1)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN10_GPIO_IDX (GPIOC_IDX)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN10_GPIO_PIN (6)
-/* @brief Has external pin 11 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN11 (1)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN11_GPIO_IDX (GPIOC_IDX)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN11_GPIO_PIN (11)
-/* @brief Has external pin 12 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN12 (1)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN12_GPIO_IDX (GPIOD_IDX)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN12_GPIO_PIN (0)
-/* @brief Has external pin 13 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN13 (1)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN13_GPIO_IDX (GPIOD_IDX)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN13_GPIO_PIN (2)
-/* @brief Has external pin 14 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN14 (1)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN14_GPIO_IDX (GPIOD_IDX)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN14_GPIO_PIN (4)
-/* @brief Has external pin 15 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN15 (1)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN15_GPIO_IDX (GPIOD_IDX)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN15_GPIO_PIN (6)
-/* @brief Has external pin 16 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN16 (0)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN16_GPIO_IDX (0)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN16_GPIO_PIN (0)
-/* @brief Has external pin 17 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN17 (0)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN17_GPIO_IDX (0)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN17_GPIO_PIN (0)
-/* @brief Has external pin 18 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN18 (0)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN18_GPIO_IDX (0)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN18_GPIO_PIN (0)
-/* @brief Has external pin 19 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN19 (0)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN19_GPIO_IDX (0)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN19_GPIO_PIN (0)
-/* @brief Has external pin 20 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN20 (0)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN20_GPIO_IDX (0)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN20_GPIO_PIN (0)
-/* @brief Has external pin 21 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN21 (0)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN21_GPIO_IDX (0)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN21_GPIO_PIN (0)
-/* @brief Has external pin 22 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN22 (0)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN22_GPIO_IDX (0)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN22_GPIO_PIN (0)
-/* @brief Has external pin 23 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN23 (0)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN23_GPIO_IDX (0)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN23_GPIO_PIN (0)
-/* @brief Has external pin 24 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN24 (0)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN24_GPIO_IDX (0)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN24_GPIO_PIN (0)
-/* @brief Has external pin 25 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN25 (0)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN25_GPIO_IDX (0)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN25_GPIO_PIN (0)
-/* @brief Has external pin 26 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN26 (0)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN26_GPIO_IDX (0)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN26_GPIO_PIN (0)
-/* @brief Has external pin 27 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN27 (0)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN27_GPIO_IDX (0)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN27_GPIO_PIN (0)
-/* @brief Has external pin 28 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN28 (0)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN28_GPIO_IDX (0)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN28_GPIO_PIN (0)
-/* @brief Has external pin 29 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN29 (0)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN29_GPIO_IDX (0)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN29_GPIO_PIN (0)
-/* @brief Has external pin 30 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN30 (0)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN30_GPIO_IDX (0)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN30_GPIO_PIN (0)
-/* @brief Has external pin 31 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN31 (0)
-/* @brief Index of port of external pin. */
-#define FSL_FEATURE_LLWU_PIN31_GPIO_IDX (0)
-/* @brief Number of external pin port on specified port. */
-#define FSL_FEATURE_LLWU_PIN31_GPIO_PIN (0)
-/* @brief Has internal module 0 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_INTERNAL_MODULE0 (1)
-/* @brief Has internal module 1 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_INTERNAL_MODULE1 (1)
-/* @brief Has internal module 2 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_INTERNAL_MODULE2 (1)
-/* @brief Has internal module 3 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_INTERNAL_MODULE3 (1)
-/* @brief Has internal module 4 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_INTERNAL_MODULE4 (0)
-/* @brief Has internal module 5 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_INTERNAL_MODULE5 (1)
-/* @brief Has internal module 6 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_INTERNAL_MODULE6 (0)
-/* @brief Has internal module 7 connected to LLWU device. */
-#define FSL_FEATURE_LLWU_HAS_INTERNAL_MODULE7 (1)
-/* @brief Has Version ID Register (LLWU_VERID). */
-#define FSL_FEATURE_LLWU_HAS_VERID (0)
-/* @brief Has Parameter Register (LLWU_PARAM). */
-#define FSL_FEATURE_LLWU_HAS_PARAM (0)
-/* @brief Width of registers of the LLWU. */
-#define FSL_FEATURE_LLWU_REG_BITWIDTH (8)
-/* @brief Has DMA Enable register (LLWU_DE). */
-#define FSL_FEATURE_LLWU_HAS_DMA_ENABLE_REG (0)
-
-/* LPTMR module features */
-
-/* @brief Has shared interrupt handler with another LPTMR module. */
-#define FSL_FEATURE_LPTMR_HAS_SHARED_IRQ_HANDLER (0)
-
-/* MCG module features */
-
-/* @brief PRDIV base value (divider of register bit field [PRDIV] zero value). */
-#define FSL_FEATURE_MCG_PLL_PRDIV_BASE (1)
-/* @brief Maximum PLL external reference divider value (max. value of register bit field C5[PRVDIV]). */
-#define FSL_FEATURE_MCG_PLL_PRDIV_MAX (24)
-/* @brief VCO divider base value (multiply factor of register bit field C6[VDIV] zero value). */
-#define FSL_FEATURE_MCG_PLL_VDIV_BASE (24)
-/* @brief PLL reference clock low range. OSCCLK/PLL_R. */
-#define FSL_FEATURE_MCG_PLL_REF_MIN (2000000)
-/* @brief PLL reference clock high range. OSCCLK/PLL_R. */
-#define FSL_FEATURE_MCG_PLL_REF_MAX (4000000)
-/* @brief The PLL clock is divided by 2 before VCO divider. */
-#define FSL_FEATURE_MCG_HAS_PLL_INTERNAL_DIV (0)
-/* @brief FRDIV supports 1280. */
-#define FSL_FEATURE_MCG_FRDIV_SUPPORT_1280 (1)
-/* @brief FRDIV supports 1536. */
-#define FSL_FEATURE_MCG_FRDIV_SUPPORT_1536 (1)
-/* @brief MCGFFCLK divider. */
-#define FSL_FEATURE_MCG_FFCLK_DIV (1)
-/* @brief Is PLL clock divided by 2 before MCG PLL/FLL clock selection in the SIM module. */
-#define FSL_FEATURE_MCG_HAS_PLL_EXTRA_DIV (0)
-/* @brief Has 32kHz RTC external reference clock (register bits C8[LOCS1], C8[CME1], C8[LOCRE1] and RTC module are present). */
-#define FSL_FEATURE_MCG_HAS_RTC_32K (1)
-/* @brief Has PLL1 external reference clock (registers C10, C11, C12, S2). */
-#define FSL_FEATURE_MCG_HAS_PLL1 (0)
-/* @brief Has 48MHz internal oscillator. */
-#define FSL_FEATURE_MCG_HAS_IRC_48M (1)
-/* @brief Has OSC1 external oscillator (registers C10, C11, C12, S2). */
-#define FSL_FEATURE_MCG_HAS_OSC1 (0)
-/* @brief Has fast internal reference clock fine trim (register bit C2[FCFTRIM]). */
-#define FSL_FEATURE_MCG_HAS_FCFTRIM (1)
-/* @brief Has PLL loss of lock reset (register bit C8[LOLRE]). */
-#define FSL_FEATURE_MCG_HAS_LOLRE (1)
-/* @brief Has MCG OSC clock selection (register bit C7[OSCSEL]). */
-#define FSL_FEATURE_MCG_USE_OSCSEL (1)
-/* @brief Has PLL external reference selection (register bits C5[PLLREFSEL0] and C11[PLLREFSEL1]). */
-#define FSL_FEATURE_MCG_USE_PLLREFSEL (0)
-/* @brief TBD */
-#define FSL_FEATURE_MCG_USE_SYSTEM_CLOCK (0)
-/* @brief Has phase-locked loop (PLL) (register C5 and bits C6[VDIV], C6[PLLS], C6[LOLIE0], S[PLLST], S[LOCK0], S[LOLS]). */
-#define FSL_FEATURE_MCG_HAS_PLL (1)
-/* @brief Has phase-locked loop (PLL) PRDIV (register C5[PRDIV]. */
-#define FSL_FEATURE_MCG_HAS_PLL_PRDIV (1)
-/* @brief Has phase-locked loop (PLL) VDIV (register C6[VDIV]. */
-#define FSL_FEATURE_MCG_HAS_PLL_VDIV (1)
-/* @brief PLL/OSC related register bit fields have PLL/OSC index in their name. */
-#define FSL_FEATURE_MCG_HAS_PLL_OSC_INDEX (0)
-/* @brief Has frequency-locked loop (FLL) (register ATCVH, ATCVL and bits C1[IREFS], C1[FRDIV]). */
-#define FSL_FEATURE_MCG_HAS_FLL (1)
-/* @brief Has PLL external to MCG (C9[PLL_CME], C9[PLL_LOCRE], C9[EXT_PLL_LOCS]). */
-#define FSL_FEATURE_MCG_HAS_EXTERNAL_PLL (0)
-/* @brief Has crystal oscillator or external reference clock low power controls (register bits C2[HGO], C2[RANGE]). */
-#define FSL_FEATURE_MCG_HAS_EXT_REF_LOW_POWER_CONTROL (1)
-/* @brief Has PLL/FLL selection as MCG output (register bit C6[PLLS]). */
-#define FSL_FEATURE_MCG_HAS_PLL_FLL_SELECTION (1)
-/* @brief Has PLL output selection (PLL0/PLL1, PLL/external PLL) (register bit C11[PLLCS]). */
-#define FSL_FEATURE_MCG_HAS_PLL_OUTPUT_SELECTION (0)
-/* @brief Has automatic trim machine (registers ATCVH, ATCVL and bits SC[ATMF], SC[ATMS], SC[ATME]). */
-#define FSL_FEATURE_MCG_HAS_AUTO_TRIM_MACHINE (1)
-/* @brief Has external clock monitor (register bit C6[CME]). */
-#define FSL_FEATURE_MCG_HAS_EXTERNAL_CLOCK_MONITOR (1)
-/* @brief Has low frequency internal reference clock (IRC) (registers LTRIMRNG, LFRIM, LSTRIM and bit MC[LIRC_DIV2]). */
-#define FSL_FEATURE_MCG_HAS_LOW_FREQ_IRC (0)
-/* @brief Has high frequency internal reference clock (IRC) (registers HCTRIM, HTTRIM, HFTRIM and bit MC[HIRCEN]). */
-#define FSL_FEATURE_MCG_HAS_HIGH_FREQ_IRC (0)
-/* @brief Has PEI mode or PBI mode. */
-#define FSL_FEATURE_MCG_HAS_PLL_INTERNAL_MODE (0)
-/* @brief Reset clock mode is BLPI. */
-#define FSL_FEATURE_MCG_RESET_IS_BLPI (0)
-
-/* MPU module features */
-
-/* @brief Specifies number of descriptors available. */
-#define FSL_FEATURE_MPU_DESCRIPTOR_COUNT (12)
-/* @brief Has process identifier support. */
-#define FSL_FEATURE_MPU_HAS_PROCESS_IDENTIFIER (1)
-/* @brief Has master 0. */
-#define FSL_FEATURE_MPU_HAS_MASTER0 (1)
-/* @brief Has master 1. */
-#define FSL_FEATURE_MPU_HAS_MASTER1 (1)
-/* @brief Has master 2. */
-#define FSL_FEATURE_MPU_HAS_MASTER2 (1)
-/* @brief Has master 3. */
-#define FSL_FEATURE_MPU_HAS_MASTER3 (1)
-/* @brief Has master 4. */
-#define FSL_FEATURE_MPU_HAS_MASTER4 (1)
-/* @brief Has master 5. */
-#define FSL_FEATURE_MPU_HAS_MASTER5 (1)
-/* @brief Has master 6. */
-#define FSL_FEATURE_MPU_HAS_MASTER6 (0)
-/* @brief Has master 7. */
-#define FSL_FEATURE_MPU_HAS_MASTER7 (0)
-
-/* interrupt module features */
-
-/* @brief Lowest interrupt request number. */
-#define FSL_FEATURE_INTERRUPT_IRQ_MIN (-14)
-/* @brief Highest interrupt request number. */
-#define FSL_FEATURE_INTERRUPT_IRQ_MAX (85)
-
-/* OSC module features */
-
-/* @brief Has OSC1 external oscillator. */
-#define FSL_FEATURE_OSC_HAS_OSC1 (0)
-/* @brief Has OSC0 external oscillator. */
-#define FSL_FEATURE_OSC_HAS_OSC0 (0)
-/* @brief Has OSC external oscillator (without index). */
-#define FSL_FEATURE_OSC_HAS_OSC (1)
-/* @brief Number of OSC external oscillators. */
-#define FSL_FEATURE_OSC_OSC_COUNT (1)
-/* @brief Has external reference clock divider (register bit field DIV[ERPS]). */
-#define FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER (0)
-
-/* PDB module features */
-
-/* @brief Define the count of supporting ADC pre-trigger for each channel. */
-#define FSL_FEATURE_PDB_ADC_PRE_CHANNEL_COUNT (2)
-/* @brief Has DAC support. */
-#define FSL_FEATURE_PDB_HAS_DAC (1)
-/* @brief Has shared interrupt handler (has not individual interrupt handler for each channel). */
-#define FSL_FEATURE_PDB_HAS_SHARED_IRQ_HANDLER (0)
-
-/* PIT module features */
-
-/* @brief Number of channels (related to number of registers LDVALn, CVALn, TCTRLn, TFLGn). */
-#define FSL_FEATURE_PIT_TIMER_COUNT (4)
-/* @brief Has lifetime timer (related to existence of registers LTMR64L and LTMR64H). */
-#define FSL_FEATURE_PIT_HAS_LIFETIME_TIMER (0)
-/* @brief Has chain mode (related to existence of register bit field TCTRLn[CHN]). */
-#define FSL_FEATURE_PIT_HAS_CHAIN_MODE (1)
-/* @brief Has shared interrupt handler (has not individual interrupt handler for each channel). */
-#define FSL_FEATURE_PIT_HAS_SHARED_IRQ_HANDLER (0)
-
-/* PMC module features */
-
-/* @brief Has Bandgap Enable In VLPx Operation support. */
-#define FSL_FEATURE_PMC_HAS_BGEN (1)
-/* @brief Has Bandgap Buffer Enable. */
-#define FSL_FEATURE_PMC_HAS_BGBE (1)
-/* @brief Has Bandgap Buffer Drive Select. */
-#define FSL_FEATURE_PMC_HAS_BGBDS (0)
-/* @brief Has Low-Voltage Detect Voltage Select support. */
-#define FSL_FEATURE_PMC_HAS_LVDV (1)
-/* @brief Has Low-Voltage Warning Voltage Select support. */
-#define FSL_FEATURE_PMC_HAS_LVWV (1)
-/* @brief Has LPO. */
-#define FSL_FEATURE_PMC_HAS_LPO (0)
-/* @brief Has VLPx option PMC_REGSC[VLPO]. */
-#define FSL_FEATURE_PMC_HAS_VLPO (0)
-/* @brief Has acknowledge isolation support. */
-#define FSL_FEATURE_PMC_HAS_ACKISO (1)
-/* @brief Has Regulator In Full Performance Mode Status Bit PMC_REGSC[REGFPM]. */
-#define FSL_FEATURE_PMC_HAS_REGFPM (0)
-/* @brief Has Regulator In Run Regulation Status Bit PMC_REGSC[REGONS]. */
-#define FSL_FEATURE_PMC_HAS_REGONS (1)
-/* @brief Has PMC_HVDSC1. */
-#define FSL_FEATURE_PMC_HAS_HVDSC1 (0)
-/* @brief Has PMC_PARAM. */
-#define FSL_FEATURE_PMC_HAS_PARAM (0)
-/* @brief Has PMC_VERID. */
-#define FSL_FEATURE_PMC_HAS_VERID (0)
-
-/* PORT module features */
-
-/* @brief Has control lock (register bit PCR[LK]). */
-#define FSL_FEATURE_PORT_HAS_PIN_CONTROL_LOCK (1)
-/* @brief Has open drain control (register bit PCR[ODE]). */
-#define FSL_FEATURE_PORT_HAS_OPEN_DRAIN (1)
-/* @brief Has digital filter (registers DFER, DFCR and DFWR). */
-#define FSL_FEATURE_PORT_HAS_DIGITAL_FILTER (1)
-/* @brief Has DMA request (register bit field PCR[IRQC] values). */
-#define FSL_FEATURE_PORT_HAS_DMA_REQUEST (1)
-/* @brief Has pull resistor selection available. */
-#define FSL_FEATURE_PORT_HAS_PULL_SELECTION (1)
-/* @brief Has pull resistor enable (register bit PCR[PE]). */
-#define FSL_FEATURE_PORT_HAS_PULL_ENABLE (1)
-/* @brief Has slew rate control (register bit PCR[SRE]). */
-#define FSL_FEATURE_PORT_HAS_SLEW_RATE (1)
-/* @brief Has passive filter (register bit field PCR[PFE]). */
-#define FSL_FEATURE_PORT_HAS_PASSIVE_FILTER (1)
-/* @brief Has drive strength control (register bit PCR[DSE]). */
-#define FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH (1)
-/* @brief Has separate drive strength register (HDRVE). */
-#define FSL_FEATURE_PORT_HAS_DRIVE_STRENGTH_REGISTER (0)
-/* @brief Has glitch filter (register IOFLT). */
-#define FSL_FEATURE_PORT_HAS_GLITCH_FILTER (0)
-/* @brief Defines width of PCR[MUX] field. */
-#define FSL_FEATURE_PORT_PCR_MUX_WIDTH (3)
-/* @brief Has dedicated interrupt vector. */
-#define FSL_FEATURE_PORT_HAS_INTERRUPT_VECTOR (1)
-/* @brief Defines whether PCR[IRQC] bit-field has flag states. */
-#define FSL_FEATURE_PORT_HAS_IRQC_FLAG (0)
-/* @brief Defines whether PCR[IRQC] bit-field has trigger states. */
-#define FSL_FEATURE_PORT_HAS_IRQC_TRIGGER (0)
-
-/* GPIO module features */
-
-/* @brief Has fast (single cycle) access capability via a dedicated memory region. */
-#define FSL_FEATURE_GPIO_HAS_FAST_GPIO (0)
-/* @brief Has port input disable register (PIDR). */
-#define FSL_FEATURE_GPIO_HAS_INPUT_DISABLE (0)
-/* @brief Has dedicated interrupt vector. */
-#define FSL_FEATURE_GPIO_HAS_PORT_INTERRUPT_VECTOR (1)
-
-/* RCM module features */
-
-/* @brief Has Loss-of-Lock Reset support. */
-#define FSL_FEATURE_RCM_HAS_LOL (1)
-/* @brief Has Loss-of-Clock Reset support. */
-#define FSL_FEATURE_RCM_HAS_LOC (1)
-/* @brief Has JTAG generated Reset support. */
-#define FSL_FEATURE_RCM_HAS_JTAG (1)
-/* @brief Has EzPort generated Reset support. */
-#define FSL_FEATURE_RCM_HAS_EZPORT (1)
-/* @brief Has bit-field indicating EZP_MS_B pin state during last reset. */
-#define FSL_FEATURE_RCM_HAS_EZPMS (1)
-/* @brief Has boot ROM configuration, MR[BOOTROM], FM[FORCEROM] */
-#define FSL_FEATURE_RCM_HAS_BOOTROM (0)
-/* @brief Has sticky system reset status register RCM_SSRS0 and RCM_SSRS1. */
-#define FSL_FEATURE_RCM_HAS_SSRS (0)
-/* @brief Has Version ID Register (RCM_VERID). */
-#define FSL_FEATURE_RCM_HAS_VERID (0)
-/* @brief Has Parameter Register (RCM_PARAM). */
-#define FSL_FEATURE_RCM_HAS_PARAM (0)
-/* @brief Has Reset Interrupt Enable Register RCM_SRIE. */
-#define FSL_FEATURE_RCM_HAS_SRIE (0)
-/* @brief Width of registers of the RCM. */
-#define FSL_FEATURE_RCM_REG_WIDTH (8)
-/* @brief Has Core 1 generated Reset support RCM_SRS[CORE1] */
-#define FSL_FEATURE_RCM_HAS_CORE1 (0)
-/* @brief Has MDM-AP system reset support RCM_SRS1[MDM_AP] */
-#define FSL_FEATURE_RCM_HAS_MDM_AP (1)
-/* @brief Has wakeup reset feature. Register bit SRS[WAKEUP]. */
-#define FSL_FEATURE_RCM_HAS_WAKEUP (1)
-
-/* RTC module features */
-
-#if defined(CPU_MK64FN1M0VDC12) || defined(CPU_MK64FN1M0VLL12) || defined(CPU_MK64FN1M0VLQ12) || defined(CPU_MK64FX512VDC12) || \
-    defined(CPU_MK64FX512VLL12) || defined(CPU_MK64FX512VLQ12)
-    /* @brief Has wakeup pin. */
-    #define FSL_FEATURE_RTC_HAS_WAKEUP_PIN (1)
-    /* @brief Has wakeup pin selection (bit field CR[WPS]). */
-    #define FSL_FEATURE_RTC_HAS_WAKEUP_PIN_SELECTION (1)
-    /* @brief Has low power features (registers MER, MCLR and MCHR). */
-    #define FSL_FEATURE_RTC_HAS_MONOTONIC (0)
-    /* @brief Has read/write access control (registers WAR and RAR). */
-    #define FSL_FEATURE_RTC_HAS_ACCESS_CONTROL (1)
-    /* @brief Has security features (registers TTSR, MER, MCLR and MCHR). */
-    #define FSL_FEATURE_RTC_HAS_SECURITY (1)
-    /* @brief Has RTC_CLKIN available. */
-    #define FSL_FEATURE_RTC_HAS_RTC_CLKIN (0)
-    /* @brief Has prescaler adjust for LPO. */
-    #define FSL_FEATURE_RTC_HAS_LPO_ADJUST (0)
-    /* @brief Has Clock Pin Enable field. */
-    #define FSL_FEATURE_RTC_HAS_CPE (0)
-    /* @brief Has Timer Seconds Interrupt Configuration field. */
-    #define FSL_FEATURE_RTC_HAS_TSIC (0)
-    /* @brief Has OSC capacitor setting RTC_CR[SC2P ~ SC16P] */
-    #define FSL_FEATURE_RTC_HAS_OSC_SCXP (1)
-#elif defined(CPU_MK64FN1M0VMD12) || defined(CPU_MK64FX512VMD12)
-    /* @brief Has wakeup pin. */
-    #define FSL_FEATURE_RTC_HAS_WAKEUP_PIN (1)
-    /* @brief Has wakeup pin selection (bit field CR[WPS]). */
-    #define FSL_FEATURE_RTC_HAS_WAKEUP_PIN_SELECTION (1)
-    /* @brief Has low power features (registers MER, MCLR and MCHR). */
-    #define FSL_FEATURE_RTC_HAS_MONOTONIC (0)
-    /* @brief Has read/write access control (registers WAR and RAR). */
-    #define FSL_FEATURE_RTC_HAS_ACCESS_CONTROL (1)
-    /* @brief Has security features (registers TTSR, MER, MCLR and MCHR). */
-    #define FSL_FEATURE_RTC_HAS_SECURITY (0)
-    /* @brief Has RTC_CLKIN available. */
-    #define FSL_FEATURE_RTC_HAS_RTC_CLKIN (0)
-    /* @brief Has prescaler adjust for LPO. */
-    #define FSL_FEATURE_RTC_HAS_LPO_ADJUST (0)
-    /* @brief Has Clock Pin Enable field. */
-    #define FSL_FEATURE_RTC_HAS_CPE (0)
-    /* @brief Has Timer Seconds Interrupt Configuration field. */
-    #define FSL_FEATURE_RTC_HAS_TSIC (0)
-    /* @brief Has OSC capacitor setting RTC_CR[SC2P ~ SC16P] */
-    #define FSL_FEATURE_RTC_HAS_OSC_SCXP (1)
-#endif /* defined(CPU_MK64FN1M0VDC12) || defined(CPU_MK64FN1M0VLL12) || defined(CPU_MK64FN1M0VLQ12) || defined(CPU_MK64FX512VDC12) || \
-    defined(CPU_MK64FX512VLL12) || defined(CPU_MK64FX512VLQ12) */
-
-/* SDHC module features */
-
-/* @brief Has external DMA support (register bit VENDOR[EXTDMAEN]). */
-#define FSL_FEATURE_SDHC_HAS_EXTERNAL_DMA_SUPPORT (1)
-/* @brief Has support of 3.0V voltage (register bit HTCAPBLT[VS30]). */
-#define FSL_FEATURE_SDHC_HAS_V300_SUPPORT (0)
-/* @brief Has support of 1.8V voltage (register bit HTCAPBLT[VS18]). */
-#define FSL_FEATURE_SDHC_HAS_V180_SUPPORT (0)
-
-/* SIM module features */
-
-/* @brief Has USB FS divider. */
-#define FSL_FEATURE_SIM_USBFS_USE_SPECIAL_DIVIDER (0)
-/* @brief Is PLL clock divided by 2 before MCG PLL/FLL clock selection. */
-#define FSL_FEATURE_SIM_PLLCLK_USE_SPECIAL_DIVIDER (0)
-/* @brief Has RAM size specification (register bit field SOPT1[RAMSIZE]). */
-#define FSL_FEATURE_SIM_OPT_HAS_RAMSIZE (1)
-/* @brief Has 32k oscillator clock output (register bit SOPT1[OSC32KOUT]). */
-#define FSL_FEATURE_SIM_OPT_HAS_OSC32K_OUT (0)
-/* @brief Has 32k oscillator clock selection (register bit field SOPT1[OSC32KSEL]). */
-#define FSL_FEATURE_SIM_OPT_HAS_OSC32K_SELECTION (1)
-/* @brief 32k oscillator clock selection width (width of register bit field SOPT1[OSC32KSEL]). */
-#define FSL_FEATURE_SIM_OPT_OSC32K_SELECTION_WIDTH (2)
-/* @brief Has RTC clock output selection (register bit SOPT2[RTCCLKOUTSEL]). */
-#define FSL_FEATURE_SIM_OPT_HAS_RTC_CLOCK_OUT_SELECTION (1)
-/* @brief Has USB voltage regulator (register bits SOPT1[USBVSTBY], SOPT1[USBSSTBY], SOPT1[USBREGEN], SOPT1CFG[URWE], SOPT1CFG[UVSWE], SOPT1CFG[USSWE]). */
-#define FSL_FEATURE_SIM_OPT_HAS_USB_VOLTAGE_REGULATOR (1)
-/* @brief USB has integrated PHY (register bits USBPHYCTL[USBVREGSEL], USBPHYCTL[USBVREGPD], USBPHYCTL[USB3VOUTTRG], USBPHYCTL[USBDISILIM], SOPT2[USBSLSRC], SOPT2[USBREGEN]). */
-#define FSL_FEATURE_SIM_OPT_HAS_USB_PHY (0)
-/* @brief Has PTD7 pad drive strength control (register bit SOPT2[PTD7PAD]). */
-#define FSL_FEATURE_SIM_OPT_HAS_PTD7PAD (1)
-/* @brief Has FlexBus security level selection (register bit SOPT2[FBSL]). */
-#define FSL_FEATURE_SIM_OPT_HAS_FBSL (1)
-/* @brief Has number of FlexBus hold cycle before FlexBus can release bus (register bit SOPT6[PCR]). */
-#define FSL_FEATURE_SIM_OPT_HAS_PCR (0)
-/* @brief Has number of NFC hold cycle in case of FlexBus request (register bit SOPT6[MCC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_MCC (0)
-/* @brief Has UART open drain enable (register bits UARTnODE, where n is a number, in register SOPT5). */
-#define FSL_FEATURE_SIM_OPT_HAS_ODE (0)
-/* @brief Number of LPUART modules (number of register bits LPUARTn, where n is a number, in register SCGC5). */
-#define FSL_FEATURE_SIM_OPT_LPUART_COUNT (0)
-/* @brief Number of UART modules (number of register bits UARTn, where n is a number, in register SCGC4). */
-#define FSL_FEATURE_SIM_OPT_UART_COUNT (4)
-/* @brief Has UART0 open drain enable (register bit SOPT5[UART0ODE]). */
-#define FSL_FEATURE_SIM_OPT_HAS_UART0_ODE (0)
-/* @brief Has UART1 open drain enable (register bit SOPT5[UART1ODE]). */
-#define FSL_FEATURE_SIM_OPT_HAS_UART1_ODE (0)
-/* @brief Has UART2 open drain enable (register bit SOPT5[UART2ODE]). */
-#define FSL_FEATURE_SIM_OPT_HAS_UART2_ODE (0)
-/* @brief Has LPUART0 open drain enable (register bit SOPT5[LPUART0ODE]). */
-#define FSL_FEATURE_SIM_OPT_HAS_LPUART0_ODE (0)
-/* @brief Has LPUART1 open drain enable (register bit SOPT5[LPUART1ODE]). */
-#define FSL_FEATURE_SIM_OPT_HAS_LPUART1_ODE (0)
-/* @brief Has CMT/UART pad drive strength control (register bit SOPT2[CMTUARTPAD]). */
-#define FSL_FEATURE_SIM_OPT_HAS_CMTUARTPAD (0)
-/* @brief Has LPUART0 transmit data source selection (register bit SOPT5[LPUART0TXSRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_LPUART0_TX_SRC (0)
-/* @brief Has LPUART0 receive data source selection (register bit SOPT5[LPUART0RXSRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_LPUART0_RX_SRC (0)
-/* @brief Has LPUART1 transmit data source selection (register bit SOPT5[LPUART1TXSRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_LPUART1_TX_SRC (0)
-/* @brief Has LPUART1 receive data source selection (register bit SOPT5[LPUART1RXSRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_LPUART1_RX_SRC (0)
-/* @brief Has UART0 transmit data source selection (register bit SOPT5[UART0TXSRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_UART0_TX_SRC (1)
-/* @brief UART0 transmit data source selection width (width of register bit SOPT5[UART0TXSRC]). */
-#define FSL_FEATURE_SIM_OPT_UART0_TX_SRC_WIDTH (2)
-/* @brief Has UART0 receive data source selection (register bit SOPT5[UART0RXSRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_UART0_RX_SRC (1)
-/* @brief UART0 receive data source selection width (width of register bit SOPT5[UART0RXSRC]). */
-#define FSL_FEATURE_SIM_OPT_UART0_RX_SRC_WIDTH (2)
-/* @brief Has UART1 transmit data source selection (register bit SOPT5[UART1TXSRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_UART1_TX_SRC (1)
-/* @brief Has UART1 receive data source selection (register bit SOPT5[UART1RXSRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_UART1_RX_SRC (1)
-/* @brief UART1 receive data source selection width (width of register bit SOPT5[UART1RXSRC]). */
-#define FSL_FEATURE_SIM_OPT_UART1_RX_SRC_WIDTH (2)
-/* @brief Has FTM module(s) configuration. */
-#define FSL_FEATURE_SIM_OPT_HAS_FTM (1)
-/* @brief Number of FTM modules. */
-#define FSL_FEATURE_SIM_OPT_FTM_COUNT (4)
-/* @brief Number of FTM triggers with selectable source. */
-#define FSL_FEATURE_SIM_OPT_FTM_TRIGGER_COUNT (2)
-/* @brief Has FTM0 triggers source selection (register bits SOPT4[FTM0TRGnSRC], where n is a number). */
-#define FSL_FEATURE_SIM_OPT_HAS_FTM0_TRIGGER (1)
-/* @brief Has FTM3 triggers source selection (register bits SOPT4[FTM3TRGnSRC], where n is a number). */
-#define FSL_FEATURE_SIM_OPT_HAS_FTM3_TRIGGER (1)
-/* @brief Has FTM1 channel 0 input capture source selection (register bit SOPT4[FTM1CH0SRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_FTM1_CHANNELS (1)
-/* @brief Has FTM2 channel 0 input capture source selection (register bit SOPT4[FTM2CH0SRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_FTM2_CHANNELS (1)
-/* @brief Has FTM3 channel 0 input capture source selection (register bit SOPT4[FTM3CH0SRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_FTM3_CHANNELS (0)
-/* @brief Has FTM2 channel 1 input capture source selection (register bit SOPT4[FTM2CH1SRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_FTM2_CHANNEL1 (0)
-/* @brief Number of configurable FTM0 fault detection input (number of register bits SOPT4[FTM0FLTn], where n is a number starting from zero). */
-#define FSL_FEATURE_SIM_OPT_FTM0_FAULT_COUNT (3)
-/* @brief Number of configurable FTM1 fault detection input (number of register bits SOPT4[FTM1FLTn], where n is a number starting from zero). */
-#define FSL_FEATURE_SIM_OPT_FTM1_FAULT_COUNT (1)
-/* @brief Number of configurable FTM2 fault detection input (number of register bits SOPT4[FTM2FLTn], where n is a number starting from zero). */
-#define FSL_FEATURE_SIM_OPT_FTM2_FAULT_COUNT (1)
-/* @brief Number of configurable FTM3 fault detection input (number of register bits SOPT4[FTM3FLTn], where n is a number starting from zero). */
-#define FSL_FEATURE_SIM_OPT_FTM3_FAULT_COUNT (1)
-/* @brief Has FTM hardware trigger 0 software synchronization (register bit SOPT8[FTMnSYNCBIT], where n is a module instance index). */
-#define FSL_FEATURE_SIM_OPT_HAS_FTM_TRIGGER_SYNC (0)
-/* @brief Has FTM channels output source selection (register bit SOPT8[FTMxOCHnSRC], where x is a module instance index and n is a channel index). */
-#define FSL_FEATURE_SIM_OPT_HAS_FTM_CHANNELS_OUTPUT_SRC (0)
-/* @brief Has TPM module(s) configuration. */
-#define FSL_FEATURE_SIM_OPT_HAS_TPM (0)
-/* @brief The highest TPM module index. */
-#define FSL_FEATURE_SIM_OPT_MAX_TPM_INDEX (0)
-/* @brief Has TPM module with index 0. */
-#define FSL_FEATURE_SIM_OPT_HAS_TPM0 (0)
-/* @brief Has TPM0 clock selection (register bit field SOPT4[TPM0CLKSEL]). */
-#define FSL_FEATURE_SIM_OPT_HAS_TPM0_CLK_SEL (0)
-/* @brief Is TPM channels configuration in the SOPT4 (not SOPT9) register (register bits TPMnCH0SRC, TPMnCLKSEL, where n is a module instance index). */
-#define FSL_FEATURE_SIM_OPT_HAS_TPM_CHANNELS_CONFIG_IN_SOPT4_REG (0)
-/* @brief Has TPM1 channel 0 input capture source selection (register bit field SOPT4[TPM1CH0SRC] or SOPT9[TPM1CH0SRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_TPM1_CH0_SRC_SELECTION (0)
-/* @brief Has TPM1 clock selection (register bit field SOPT4[TPM1CLKSEL]). */
-#define FSL_FEATURE_SIM_OPT_HAS_TPM1_CLK_SEL (0)
-/* @brief TPM1 channel 0 input capture source selection width (width of register bit field SOPT4[TPM1CH0SRC] or SOPT9[TPM1CH0SRC]). */
-#define FSL_FEATURE_SIM_OPT_TPM1_CH0_SRC_SELECTION_WIDTH (0)
-/* @brief Has TPM2 channel 0 input capture source selection (register bit field SOPT4[TPM2CH0SRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_TPM2_CH0_SRC_SELECTION (0)
-/* @brief Has TPM2 clock selection (register bit field SOPT4[TPM2CLKSEL]). */
-#define FSL_FEATURE_SIM_OPT_HAS_TPM2_CLK_SEL (0)
-/* @brief Has PLL/FLL clock selection (register bit field SOPT2[PLLFLLSEL]). */
-#define FSL_FEATURE_SIM_OPT_HAS_PLL_FLL_SELECTION (1)
-/* @brief PLL/FLL clock selection width (width of register bit field SOPT2[PLLFLLSEL]). */
-#define FSL_FEATURE_SIM_OPT_PLL_FLL_SELECTION_WIDTH (1)
-/* @brief Has NFC clock source selection (register bit SOPT2[NFCSRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_NFCSRC (0)
-/* @brief Has eSDHC clock source selection (register bit SOPT2[ESDHCSRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_ESDHCSRC (0)
-/* @brief Has SDHC clock source selection (register bit SOPT2[SDHCSRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_SDHCSRC (1)
-/* @brief Has LCDC clock source selection (register bits SOPT2[LCDCSRC], SOPT2[LCDC_CLKSEL]). */
-#define FSL_FEATURE_SIM_OPT_HAS_LCDCSRC (0)
-/* @brief Has ENET timestamp clock source selection (register bit SOPT2[TIMESRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_TIMESRC (1)
-/* @brief Has ENET RMII clock source selection (register bit SOPT2[RMIISRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_RMIISRC (1)
-/* @brief Has USB clock source selection (register bit SOPT2[USBSRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_USBSRC (1)
-/* @brief Has USB FS clock source selection (register bit SOPT2[USBFSRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_USBFSRC (0)
-/* @brief Has USB HS clock source selection (register bit SOPT2[USBHSRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_USBHSRC (0)
-/* @brief Has LPUART clock source selection (register bit SOPT2[LPUARTSRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_LPUARTSRC (0)
-/* @brief Has LPUART0 clock source selection (register bit SOPT2[LPUART0SRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_LPUART0SRC (0)
-/* @brief Has LPUART1 clock source selection (register bit SOPT2[LPUART1SRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_LPUART1SRC (0)
-/* @brief Has FLEXIOSRC clock source selection (register bit SOPT2[FLEXIOSRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_FLEXIOSRC (0)
-/* @brief Has UART0 clock source selection (register bit SOPT2[UART0SRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_UART0SRC (0)
-/* @brief Has TPM clock source selection (register bit SOPT2[TPMSRC]). */
-#define FSL_FEATURE_SIM_OPT_HAS_TPMSRC (0)
-/* @brief Has debug trace clock selection (register bit SOPT2[TRACECLKSEL]). */
-#define FSL_FEATURE_SIM_OPT_HAS_TRACE_CLKSEL (1)
-/* @brief Number of ADC modules (register bits SOPT7[ADCnTRGSEL], SOPT7[ADCnPRETRGSEL], SOPT7[ADCnALTTRGSEL], where n is a module instance index). */
-#define FSL_FEATURE_SIM_OPT_ADC_COUNT (2)
-/* @brief ADC0 alternate trigger enable width (width of bit field ADC0ALTTRGEN of register SOPT7). */
-#define FSL_FEATURE_SIM_OPT_ADC0ALTTRGEN_WIDTH (1)
-/* @brief ADC1 alternate trigger enable width (width of bit field ADC1ALTTRGEN of register SOPT7). */
-#define FSL_FEATURE_SIM_OPT_ADC1ALTTRGEN_WIDTH (1)
-/* @brief ADC2 alternate trigger enable width (width of bit field ADC2ALTTRGEN of register SOPT7). */
-#define FSL_FEATURE_SIM_OPT_ADC2ALTTRGEN_WIDTH (0)
-/* @brief ADC3 alternate trigger enable width (width of bit field ADC3ALTTRGEN of register SOPT7). */
-#define FSL_FEATURE_SIM_OPT_ADC3ALTTRGEN_WIDTH (0)
-/* @brief HSADC0 converter A alternate trigger enable width (width of bit field HSADC0AALTTRGEN of register SOPT7). */
-#define FSL_FEATURE_SIM_OPT_HSADC0AALTTRGEN_WIDTH (0)
-/* @brief HSADC1 converter A alternate trigger enable width (width of bit field HSADC1AALTTRGEN of register SOPT7). */
-#define FSL_FEATURE_SIM_OPT_HSADC1AALTTRGEN_WIDTH (0)
-/* @brief ADC converter A alternate trigger enable width (width of bit field ADCAALTTRGEN of register SOPT7). */
-#define FSL_FEATURE_SIM_OPT_ADCAALTTRGEN_WIDTH (0)
-/* @brief HSADC0 converter B alternate trigger enable width (width of bit field HSADC0BALTTRGEN of register SOPT7). */
-#define FSL_FEATURE_SIM_OPT_HSADC0BALTTRGEN_WIDTH (0)
-/* @brief HSADC1 converter B alternate trigger enable width (width of bit field HSADC1BALTTRGEN of register SOPT7). */
-#define FSL_FEATURE_SIM_OPT_HSADC1BALTTRGEN_WIDTH (0)
-/* @brief ADC converter B alternate trigger enable width (width of bit field ADCBALTTRGEN of register SOPT7). */
-#define FSL_FEATURE_SIM_OPT_ADCBALTTRGEN_WIDTH (0)
-/* @brief Has clock 2 output divider (register bit field CLKDIV1[OUTDIV2]). */
-#define FSL_FEATURE_SIM_DIVIDER_HAS_OUTDIV2 (1)
-/* @brief Has clock 3 output divider (register bit field CLKDIV1[OUTDIV3]). */
-#define FSL_FEATURE_SIM_DIVIDER_HAS_OUTDIV3 (1)
-/* @brief Has clock 4 output divider (register bit field CLKDIV1[OUTDIV4]). */
-#define FSL_FEATURE_SIM_DIVIDER_HAS_OUTDIV4 (1)
-/* @brief Clock 4 output divider width (width of register bit field CLKDIV1[OUTDIV4]). */
-#define FSL_FEATURE_SIM_DIVIDER_OUTDIV4_WIDTH (4)
-/* @brief Has clock 5 output divider (register bit field CLKDIV1[OUTDIV5]). */
-#define FSL_FEATURE_SIM_DIVIDER_HAS_OUTDIV5 (0)
-/* @brief Has USB clock divider (register bit field CLKDIV2[USBDIV] and CLKDIV2[USBFRAC]). */
-#define FSL_FEATURE_SIM_DIVIDER_HAS_USBDIV (1)
-/* @brief Has USB FS clock divider (register bit field CLKDIV2[USBFSDIV] and CLKDIV2[USBFSFRAC]). */
-#define FSL_FEATURE_SIM_DIVIDER_HAS_USBFSDIV (0)
-/* @brief Has USB HS clock divider (register bit field CLKDIV2[USBHSDIV] and CLKDIV2[USBHSFRAC]). */
-#define FSL_FEATURE_SIM_DIVIDER_HAS_USBHSDIV (0)
-/* @brief Has PLL/FLL clock divider (register bit field CLKDIV3[PLLFLLDIV] and CLKDIV3[PLLFLLFRAC]). */
-#define FSL_FEATURE_SIM_DIVIDER_HAS_PLLFLLDIV (0)
-/* @brief Has LCDC clock divider (register bit field CLKDIV3[LCDCDIV] and CLKDIV3[LCDCFRAC]). */
-#define FSL_FEATURE_SIM_DIVIDER_HAS_LCDCDIV (0)
-/* @brief Has trace clock divider (register bit field CLKDIV4[TRACEDIV] and CLKDIV4[TRACEFRAC]). */
-#define FSL_FEATURE_SIM_DIVIDER_HAS_TRACEDIV (0)
-/* @brief Has NFC clock divider (register bit field CLKDIV4[NFCDIV] and CLKDIV4[NFCFRAC]). */
-#define FSL_FEATURE_SIM_DIVIDER_HAS_NFCDIV (0)
-/* @brief Has Kinetis family ID (register bit field SDID[FAMILYID]). */
-#define FSL_FEATURE_SIM_SDID_HAS_FAMILYID (1)
-/* @brief Has Kinetis family ID (register bit field SDID[FAMID]). */
-#define FSL_FEATURE_SIM_SDID_HAS_FAMID (1)
-/* @brief Has Kinetis sub-family ID (register bit field SDID[SUBFAMID]). */
-#define FSL_FEATURE_SIM_SDID_HAS_SUBFAMID (1)
-/* @brief Has Kinetis series ID (register bit field SDID[SERIESID]). */
-#define FSL_FEATURE_SIM_SDID_HAS_SERIESID (1)
-/* @brief Has device die ID (register bit field SDID[DIEID]). */
-#define FSL_FEATURE_SIM_SDID_HAS_DIEID (1)
-/* @brief Has system SRAM size specifier (register bit field SDID[SRAMSIZE]). */
-#define FSL_FEATURE_SIM_SDID_HAS_SRAMSIZE (0)
-/* @brief Has flash mode (register bit FCFG1[FLASHDOZE]). */
-#define FSL_FEATURE_SIM_FCFG_HAS_FLASHDOZE (1)
-/* @brief Has flash disable (register bit FCFG1[FLASHDIS]). */
-#define FSL_FEATURE_SIM_FCFG_HAS_FLASHDIS (1)
-/* @brief Has FTFE disable (register bit FCFG1[FTFDIS]). */
-#define FSL_FEATURE_SIM_FCFG_HAS_FTFDIS (0)
-/* @brief Has FlexNVM size specifier (register bit field FCFG1[NVMSIZE]). */
-#define FSL_FEATURE_SIM_FCFG_HAS_NVMSIZE (1)
-/* @brief Has EEPROM size specifier (register bit field FCFG1[EESIZE]). */
-#define FSL_FEATURE_SIM_FCFG_HAS_EESIZE (1)
-/* @brief Has FlexNVM partition (register bit field FCFG1[DEPART]). */
-#define FSL_FEATURE_SIM_FCFG_HAS_DEPART (1)
-/* @brief Maximum flash address block 0 address specifier (register bit field FCFG2[MAXADDR0]). */
-#define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR0 (1)
-/* @brief Maximum flash address block 1 address specifier (register bit field FCFG2[MAXADDR1]). */
-#define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR1 (1)
-/* @brief Maximum flash address block 0 or 1 address specifier (register bit field FCFG2[MAXADDR01]). */
-#define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR01 (0)
-/* @brief Maximum flash address block 2 or 3 address specifier (register bit field FCFG2[MAXADDR23]). */
-#define FSL_FEATURE_SIM_FCFG_HAS_MAXADDR23 (0)
-/* @brief Has program flash availability specifier (register bit FCFG2[PFLSH]). */
-#define FSL_FEATURE_SIM_FCFG_HAS_PFLSH (1)
-/* @brief Has program flash swapping (register bit FCFG2[SWAPPFLSH]). */
-#define FSL_FEATURE_SIM_FCFG_HAS_PFLSH_SWAP (0)
-/* @brief Has miscellanious control register (register MCR). */
-#define FSL_FEATURE_SIM_HAS_MISC_CONTROLS (0)
-/* @brief Has COP watchdog (registers COPC and SRVCOP). */
-#define FSL_FEATURE_SIM_HAS_COP_WATCHDOG (0)
-/* @brief Has COP watchdog stop (register bits COPC[COPSTPEN], COPC[COPDBGEN] and COPC[COPCLKSEL]). */
-#define FSL_FEATURE_SIM_HAS_COP_STOP (0)
-/* @brief Has LLWU clock gate bit (e.g SIM_SCGC4). */
-#define FSL_FEATURE_SIM_HAS_SCGC_LLWU (0)
-
-/* SMC module features */
-
-/* @brief Has partial stop option (register bit STOPCTRL[PSTOPO]). */
-#define FSL_FEATURE_SMC_HAS_PSTOPO (0)
-/* @brief Has LPO power option (register bit STOPCTRL[LPOPO]). */
-#define FSL_FEATURE_SMC_HAS_LPOPO (0)
-/* @brief Has POR power option (register bit STOPCTRL[PORPO] or VLLSCTRL[PORPO]). */
-#define FSL_FEATURE_SMC_HAS_PORPO (1)
-/* @brief Has low power wakeup on interrupt (register bit PMCTRL[LPWUI]). */
-#define FSL_FEATURE_SMC_HAS_LPWUI (1)
-/* @brief Has LLS or VLLS mode control (register bit STOPCTRL[LLSM]). */
-#define FSL_FEATURE_SMC_HAS_LLS_SUBMODE (0)
-/* @brief Has VLLS mode control (register bit VLLSCTRL[VLLSM]). */
-#define FSL_FEATURE_SMC_USE_VLLSCTRL_REG (1)
-/* @brief Has VLLS mode control (register bit STOPCTRL[VLLSM]). */
-#define FSL_FEATURE_SMC_USE_STOPCTRL_VLLSM (0)
-/* @brief Has RAM partition 2 power option (register bit STOPCTRL[RAM2PO]). */
-#define FSL_FEATURE_SMC_HAS_RAM2_POWER_OPTION (0)
-/* @brief Has high speed run mode (register bit PMPROT[AHSRUN]). */
-#define FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE (0)
-/* @brief Has low leakage stop mode (register bit PMPROT[ALLS]). */
-#define FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE (1)
-/* @brief Has very low leakage stop mode (register bit PMPROT[AVLLS]). */
-#define FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE (1)
-/* @brief Has stop submode. */
-#define FSL_FEATURE_SMC_HAS_SUB_STOP_MODE (1)
-/* @brief Has stop submode 0(VLLS0). */
-#define FSL_FEATURE_SMC_HAS_STOP_SUBMODE0 (1)
-/* @brief Has stop submode 2(VLLS2). */
-#define FSL_FEATURE_SMC_HAS_STOP_SUBMODE2 (1)
-/* @brief Has SMC_PARAM. */
-#define FSL_FEATURE_SMC_HAS_PARAM (0)
-/* @brief Has SMC_VERID. */
-#define FSL_FEATURE_SMC_HAS_VERID (0)
-
-/* DSPI module features */
-
-/* @brief Receive/transmit FIFO size in number of items. */
-#define FSL_FEATURE_DSPI_FIFO_SIZEn(x) \
-    ((x) == DSPI0 ? (4) : \
-    ((x) == DSPI1 ? (1) : \
-    ((x) == DSPI2 ? (1) : (-1))))
-/* @brief Maximum transfer data width in bits. */
-#define FSL_FEATURE_DSPI_MAX_DATA_WIDTH (16)
-/* @brief Maximum number of chip select pins. (Reflects the width of register bit field PUSHR[PCS].) */
-#define FSL_FEATURE_DSPI_MAX_CHIP_SELECT_COUNT (6)
-/* @brief Number of chip select pins. */
-#define FSL_FEATURE_DSPI_CHIP_SELECT_COUNT (6)
-/* @brief Has chip select strobe capability on the PCS5 pin. */
-#define FSL_FEATURE_DSPI_HAS_CHIP_SELECT_STROBE (1)
-/* @brief Has separated TXDATA and CMD FIFOs (register SREX). */
-#define FSL_FEATURE_DSPI_HAS_SEPARATE_TXDATA_CMD_FIFO (0)
-/* @brief Has 16-bit data transfer support. */
-#define FSL_FEATURE_DSPI_16BIT_TRANSFERS (1)
-/* @brief Has separate DMA RX and TX requests. */
-#define FSL_FEATURE_DSPI_HAS_SEPARATE_DMA_RX_TX_REQn(x) \
-    ((x) == DSPI0 ? (1) : \
-    ((x) == DSPI1 ? (0) : \
-    ((x) == DSPI2 ? (0) : (-1))))
-
-/* SysTick module features */
-
-/* @brief Systick has external reference clock. */
-#define FSL_FEATURE_SYSTICK_HAS_EXT_REF (0)
-/* @brief Systick external reference clock is core clock divided by this value. */
-#define FSL_FEATURE_SYSTICK_EXT_REF_CORE_DIV (0)
-
-/* UART module features */
-
-/* @brief Has receive FIFO overflow detection (bit field CFIFO[RXOFE]). */
-#define FSL_FEATURE_UART_HAS_IRQ_EXTENDED_FUNCTIONS (1)
-/* @brief Has low power features (can be enabled in wait mode via register bit C1[DOZEEN] or CTRL[DOZEEN] if the registers are 32-bit wide). */
-#define FSL_FEATURE_UART_HAS_LOW_POWER_UART_SUPPORT (0)
-/* @brief Has extended data register ED (or extra flags in the DATA register if the registers are 32-bit wide). */
-#define FSL_FEATURE_UART_HAS_EXTENDED_DATA_REGISTER_FLAGS (1)
-/* @brief Capacity (number of entries) of the transmit/receive FIFO (or zero if no FIFO is available). */
-#define FSL_FEATURE_UART_HAS_FIFO (1)
-/* @brief Hardware flow control (RTS, CTS) is supported. */
-#define FSL_FEATURE_UART_HAS_MODEM_SUPPORT (1)
-/* @brief Infrared (modulation) is supported. */
-#define FSL_FEATURE_UART_HAS_IR_SUPPORT (1)
-/* @brief 2 bits long stop bit is available. */
-#define FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT (1)
-/* @brief Maximal data width without parity bit. */
-#define FSL_FEATURE_UART_HAS_10BIT_DATA_SUPPORT (0)
-/* @brief Baud rate fine adjustment is available. */
-#define FSL_FEATURE_UART_HAS_BAUD_RATE_FINE_ADJUST_SUPPORT (1)
-/* @brief Baud rate oversampling is available (has bit fields C4[OSR], C5[BOTHEDGE], C5[RESYNCDIS] or BAUD[OSR], BAUD[BOTHEDGE], BAUD[RESYNCDIS] if the registers are 32-bit wide). */
-#define FSL_FEATURE_UART_HAS_BAUD_RATE_OVER_SAMPLING_SUPPORT (0)
-/* @brief Baud rate oversampling is available. */
-#define FSL_FEATURE_UART_HAS_RX_RESYNC_SUPPORT (0)
-/* @brief Baud rate oversampling is available. */
-#define FSL_FEATURE_UART_HAS_BOTH_EDGE_SAMPLING_SUPPORT (0)
-/* @brief Peripheral type. */
-#define FSL_FEATURE_UART_IS_SCI (0)
-/* @brief Capacity (number of entries) of the transmit/receive FIFO (or zero if no FIFO is available). */
-#define FSL_FEATURE_UART_FIFO_SIZEn(x) \
-    ((x) == UART0 ? (8) : \
-    ((x) == UART1 ? (8) : \
-    ((x) == UART2 ? (1) : \
-    ((x) == UART3 ? (1) : \
-    ((x) == UART4 ? (1) : \
-    ((x) == UART5 ? (1) : (-1)))))))
-/* @brief Maximal data width without parity bit. */
-#define FSL_FEATURE_UART_MAX_DATA_WIDTH_WITH_NO_PARITY (9)
-/* @brief Maximal data width with parity bit. */
-#define FSL_FEATURE_UART_MAX_DATA_WIDTH_WITH_PARITY (10)
-/* @brief Supports two match addresses to filter incoming frames. */
-#define FSL_FEATURE_UART_HAS_ADDRESS_MATCHING (1)
-/* @brief Has transmitter/receiver DMA enable bits C5[TDMAE]/C5[RDMAE] (or BAUD[TDMAE]/BAUD[RDMAE] if the registers are 32-bit wide). */
-#define FSL_FEATURE_UART_HAS_DMA_ENABLE (0)
-/* @brief Has transmitter/receiver DMA select bits C4[TDMAS]/C4[RDMAS], resp. C5[TDMAS]/C5[RDMAS] if IS_SCI = 0. */
-#define FSL_FEATURE_UART_HAS_DMA_SELECT (1)
-/* @brief Data character bit order selection is supported (bit field S2[MSBF] or STAT[MSBF] if the registers are 32-bit wide). */
-#define FSL_FEATURE_UART_HAS_BIT_ORDER_SELECT (1)
-/* @brief Has smart card (ISO7816 protocol) support and no improved smart card support. */
-#define FSL_FEATURE_UART_HAS_SMART_CARD_SUPPORT (1)
-/* @brief Has improved smart card (ISO7816 protocol) support. */
-#define FSL_FEATURE_UART_HAS_IMPROVED_SMART_CARD_SUPPORT (0)
-/* @brief Has local operation network (CEA709.1-B protocol) support. */
-#define FSL_FEATURE_UART_HAS_LOCAL_OPERATION_NETWORK_SUPPORT (0)
-/* @brief Has 32-bit registers (BAUD, STAT, CTRL, DATA, MATCH, MODIR) instead of 8-bit (BDH, BDL, C1, S1, D, etc.). */
-#define FSL_FEATURE_UART_HAS_32BIT_REGISTERS (0)
-/* @brief Lin break detect available (has bit BDH[LBKDIE]). */
-#define FSL_FEATURE_UART_HAS_LIN_BREAK_DETECT (1)
-/* @brief UART stops in Wait mode available (has bit C1[UARTSWAI]). */
-#define FSL_FEATURE_UART_HAS_WAIT_MODE_OPERATION (1)
-/* @brief Has separate DMA RX and TX requests. */
-#define FSL_FEATURE_UART_HAS_SEPARATE_DMA_RX_TX_REQn(x) \
-    ((x) == UART0 ? (1) : \
-    ((x) == UART1 ? (1) : \
-    ((x) == UART2 ? (1) : \
-    ((x) == UART3 ? (1) : \
-    ((x) == UART4 ? (0) : \
-    ((x) == UART5 ? (0) : (-1)))))))
-
-/* USB module features */
-
-/* @brief HOST mode enabled */
-#define FSL_FEATURE_USB_KHCI_HOST_ENABLED (1)
-/* @brief OTG mode enabled */
-#define FSL_FEATURE_USB_KHCI_OTG_ENABLED (1)
-/* @brief Size of the USB dedicated RAM */
-#define FSL_FEATURE_USB_KHCI_USB_RAM (0)
-/* @brief Has KEEP_ALIVE_CTRL register */
-#define FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED (0)
-/* @brief Has the Dynamic SOF threshold compare support */
-#define FSL_FEATURE_USB_KHCI_DYNAMIC_SOF_THRESHOLD_COMPARE_ENABLED (0)
-/* @brief Has the VBUS detect support */
-#define FSL_FEATURE_USB_KHCI_VBUS_DETECT_ENABLED (0)
-/* @brief Has the IRC48M module clock support */
-#define FSL_FEATURE_USB_KHCI_IRC48M_MODULE_CLOCK_ENABLED (1)
-/* @brief Number of endpoints supported */
-#define FSL_FEATURE_USB_ENDPT_COUNT (16)
-
-/* VREF module features */
-
-/* @brief Has chop oscillator (bit TRM[CHOPEN]) */
-#define FSL_FEATURE_VREF_HAS_CHOP_OSC (1)
-/* @brief Has second order curvature compensation (bit SC[ICOMPEN]) */
-#define FSL_FEATURE_VREF_HAS_COMPENSATION (1)
-/* @brief Describes the set of SC[MODE_LV] bitfield values */
-#define FSL_FEATURE_VREF_MODE_LV_TYPE (1)
-/* @brief Module has also low reference (registers VREFL/VREFH) */
-#define FSL_FEATURE_VREF_HAS_LOW_REFERENCE (0)
-/* @brief Has VREF_TRM4. */
-#define FSL_FEATURE_VREF_HAS_TRM4 (0)
-
-/* WDOG module features */
-
-/* @brief Watchdog is available. */
-#define FSL_FEATURE_WDOG_HAS_WATCHDOG (1)
-/* @brief Has Wait mode support. */
-#define FSL_FEATURE_WDOG_HAS_WAITEN (1)
-
-#endif /* _MK64F12_FEATURES_H_ */
-
--- a/targets/cmsis/TARGET_Freescale/TARGET_K64F/TOOLCHAIN_ARM_STD/MK64FN1M0xxx12.sct	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-#! armcc -E
-/*
-** ###################################################################
-**     Processors:          MK64FN1M0VDC12
-**                          MK64FN1M0VLL12
-**                          MK64FN1M0VLQ12
-**                          MK64FN1M0VMD12
-**
-**     Compiler:            Keil ARM C/C++ Compiler
-**     Reference manual:    K64P144M120SF5RM, Rev.2, January 2014
-**     Version:             rev. 2.8, 2015-02-19
-**     Build:               b151009
-**
-**     Abstract:
-**         Linker file for the Keil ARM C/C++ Compiler
-**
-**     Copyright (c) 2015 Freescale Semiconductor, Inc.
-**     All rights reserved.
-**
-**     Redistribution and use in source and binary forms, with or without modification,
-**     are permitted provided that the following conditions are met:
-**
-**     o Redistributions of source code must retain the above copyright notice, this list
-**       of conditions and the following disclaimer.
-**
-**     o Redistributions in binary form must reproduce the above copyright notice, this
-**       list of conditions and the following disclaimer in the documentation and/or
-**       other materials provided with the distribution.
-**
-**     o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-**       contributors may be used to endorse or promote products derived from this
-**       software without specific prior written permission.
-**
-**     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-**     ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-**     WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-**     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-**     ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-**     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-**     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-**     ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-**     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-**     SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-**     http:                 www.freescale.com
-**     mail:                 support@freescale.com
-**
-** ###################################################################
-*/
-#define __ram_vector_table__            1
-
-/* Heap 1/4 of ram and stack 1/8 */
-#define __stack_size__       0x8000
-#define __heap_size__        0x10000
-
-#if (defined(__ram_vector_table__))
-  #define __ram_vector_table_size__    0x00000400
-#else
-  #define __ram_vector_table_size__    0x00000000
-#endif
-
-#define m_interrupts_start             0x00000000
-#define m_interrupts_size              0x00000400
-
-#define m_flash_config_start           0x00000400
-#define m_flash_config_size            0x00000010
-
-#define m_text_start                   0x00000410
-#define m_text_size                    0x000FFBF0
-
-#define m_interrupts_ram_start         0x1FFF0000
-#define m_interrupts_ram_size          __ram_vector_table_size__
-
-#define m_data_start                   (m_interrupts_ram_start + m_interrupts_ram_size)
-#define m_data_size                    (0x00010000 - m_interrupts_ram_size)
-
-#define m_data_2_start                 0x20000000
-#define m_data_2_size                  0x00030000
-
-/* Sizes */
-#if (defined(__stack_size__))
-  #define Stack_Size                   __stack_size__
-#else
-  #define Stack_Size                   0x0400
-#endif
-
-#if (defined(__heap_size__))
-  #define Heap_Size                    __heap_size__
-#else
-  #define Heap_Size                    0x0400
-#endif
-
-LR_m_text m_interrupts_start m_text_size+m_interrupts_size+m_flash_config_size {   ; load region size_region
-  VECTOR_ROM m_interrupts_start m_interrupts_size { ; load address = execution address
-    * (RESET,+FIRST)
-  }
-  ER_m_flash_config m_flash_config_start m_flash_config_size { ; load address = execution address
-    * (FlashConfig)
-  }
-  ER_m_text m_text_start m_text_size { ; load address = execution address
-    * (InRoot$$Sections)
-    .ANY (+RO)
-  }
-  RW_m_data m_data_start m_data_size { ; RW data
-    .ANY (+RW +ZI)
-  }
-  RW_m_data_2 m_data_2_start m_data_2_size-Stack_Size-Heap_Size { ; RW data
-    .ANY (+RW +ZI)
-  }
-  RW_IRAM1 ((ImageLimit(RW_m_data_2) == m_data_2_start) ? ImageLimit(RW_m_data) : +0) EMPTY Heap_Size { ; Heap region growing up
-  }
-  VECTOR_RAM m_interrupts_ram_start EMPTY m_interrupts_ram_size {
-  }
-}
--- a/targets/cmsis/TARGET_Freescale/TARGET_K64F/TOOLCHAIN_ARM_STD/startup_MK64F12.S	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1051 +0,0 @@
-; * ---------------------------------------------------------------------------------------
-; *  @file:    startup_MK64F12.s
-; *  @purpose: CMSIS Cortex-M4 Core Device Startup File
-; *            MK64F12
-; *  @version: 2.8
-; *  @date:    2015-2-19
-; *  @build:   b151210
-; * ---------------------------------------------------------------------------------------
-; *
-; * Copyright (c) 1997 - 2015 , Freescale Semiconductor, Inc.
-; * All rights reserved.
-; *
-; * Redistribution and use in source and binary forms, with or without modification,
-; * are permitted provided that the following conditions are met:
-; *
-; * o Redistributions of source code must retain the above copyright notice, this list
-; *   of conditions and the following disclaimer.
-; *
-; * o Redistributions in binary form must reproduce the above copyright notice, this
-; *   list of conditions and the following disclaimer in the documentation and/or
-; *   other materials provided with the distribution.
-; *
-; * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-; *   contributors may be used to endorse or promote products derived from this
-; *   software without specific prior written permission.
-; *
-; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-; * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-; * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-; * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-; * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-; * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-; * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-; * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-; * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-; *
-; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------
-; *
-; *****************************************************************************/
-
-__initial_sp        EQU     0x20030000  ; Top of RAM
-                PRESERVE8
-                THUMB
-
-
-; Vector Table Mapped to Address 0 at Reset
-
-                AREA    RESET, DATA, READONLY
-                EXPORT  __Vectors
-                EXPORT  __Vectors_End
-                EXPORT  __Vectors_Size
-
-__Vectors  DCD     __initial_sp       ; Top of Stack
-                DCD     Reset_Handler  ; Reset Handler
-                DCD     NMI_Handler                         ;NMI Handler
-                DCD     HardFault_Handler                   ;Hard Fault Handler
-                DCD     MemManage_Handler                   ;MPU Fault Handler
-                DCD     BusFault_Handler                    ;Bus Fault Handler
-                DCD     UsageFault_Handler                  ;Usage Fault Handler
-                DCD     0                                   ;Reserved
-                DCD     0                                   ;Reserved
-                DCD     0                                   ;Reserved
-                DCD     0                                   ;Reserved
-                DCD     SVC_Handler                         ;SVCall Handler
-                DCD     DebugMon_Handler                    ;Debug Monitor Handler
-                DCD     0                                   ;Reserved
-                DCD     PendSV_Handler                      ;PendSV Handler
-                DCD     SysTick_Handler                     ;SysTick Handler
-
-                                                            ;External Interrupts
-                DCD     DMA0_IRQHandler                     ;DMA Channel 0 Transfer Complete
-                DCD     DMA1_IRQHandler                     ;DMA Channel 1 Transfer Complete
-                DCD     DMA2_IRQHandler                     ;DMA Channel 2 Transfer Complete
-                DCD     DMA3_IRQHandler                     ;DMA Channel 3 Transfer Complete
-                DCD     DMA4_IRQHandler                     ;DMA Channel 4 Transfer Complete
-                DCD     DMA5_IRQHandler                     ;DMA Channel 5 Transfer Complete
-                DCD     DMA6_IRQHandler                     ;DMA Channel 6 Transfer Complete
-                DCD     DMA7_IRQHandler                     ;DMA Channel 7 Transfer Complete
-                DCD     DMA8_IRQHandler                     ;DMA Channel 8 Transfer Complete
-                DCD     DMA9_IRQHandler                     ;DMA Channel 9 Transfer Complete
-                DCD     DMA10_IRQHandler                    ;DMA Channel 10 Transfer Complete
-                DCD     DMA11_IRQHandler                    ;DMA Channel 11 Transfer Complete
-                DCD     DMA12_IRQHandler                    ;DMA Channel 12 Transfer Complete
-                DCD     DMA13_IRQHandler                    ;DMA Channel 13 Transfer Complete
-                DCD     DMA14_IRQHandler                    ;DMA Channel 14 Transfer Complete
-                DCD     DMA15_IRQHandler                    ;DMA Channel 15 Transfer Complete
-                DCD     DMA_Error_IRQHandler                ;DMA Error Interrupt
-                DCD     MCM_IRQHandler                      ;Normal Interrupt
-                DCD     FTFE_IRQHandler                     ;FTFE Command complete interrupt
-                DCD     Read_Collision_IRQHandler           ;Read Collision Interrupt
-                DCD     LVD_LVW_IRQHandler                  ;Low Voltage Detect, Low Voltage Warning
-                DCD     LLWU_IRQHandler                     ;Low Leakage Wakeup Unit
-                DCD     WDOG_EWM_IRQHandler                 ;WDOG Interrupt
-                DCD     RNG_IRQHandler                      ;RNG Interrupt
-                DCD     I2C0_IRQHandler                     ;I2C0 interrupt
-                DCD     I2C1_IRQHandler                     ;I2C1 interrupt
-                DCD     SPI0_IRQHandler                     ;SPI0 Interrupt
-                DCD     SPI1_IRQHandler                     ;SPI1 Interrupt
-                DCD     I2S0_Tx_IRQHandler                  ;I2S0 transmit interrupt
-                DCD     I2S0_Rx_IRQHandler                  ;I2S0 receive interrupt
-                DCD     UART0_LON_IRQHandler                ;UART0 LON interrupt
-                DCD     UART0_RX_TX_IRQHandler              ;UART0 Receive/Transmit interrupt
-                DCD     UART0_ERR_IRQHandler                ;UART0 Error interrupt
-                DCD     UART1_RX_TX_IRQHandler              ;UART1 Receive/Transmit interrupt
-                DCD     UART1_ERR_IRQHandler                ;UART1 Error interrupt
-                DCD     UART2_RX_TX_IRQHandler              ;UART2 Receive/Transmit interrupt
-                DCD     UART2_ERR_IRQHandler                ;UART2 Error interrupt
-                DCD     UART3_RX_TX_IRQHandler              ;UART3 Receive/Transmit interrupt
-                DCD     UART3_ERR_IRQHandler                ;UART3 Error interrupt
-                DCD     ADC0_IRQHandler                     ;ADC0 interrupt
-                DCD     CMP0_IRQHandler                     ;CMP0 interrupt
-                DCD     CMP1_IRQHandler                     ;CMP1 interrupt
-                DCD     FTM0_IRQHandler                     ;FTM0 fault, overflow and channels interrupt
-                DCD     FTM1_IRQHandler                     ;FTM1 fault, overflow and channels interrupt
-                DCD     FTM2_IRQHandler                     ;FTM2 fault, overflow and channels interrupt
-                DCD     CMT_IRQHandler                      ;CMT interrupt
-                DCD     RTC_IRQHandler                      ;RTC interrupt
-                DCD     RTC_Seconds_IRQHandler              ;RTC seconds interrupt
-                DCD     PIT0_IRQHandler                     ;PIT timer channel 0 interrupt
-                DCD     PIT1_IRQHandler                     ;PIT timer channel 1 interrupt
-                DCD     PIT2_IRQHandler                     ;PIT timer channel 2 interrupt
-                DCD     PIT3_IRQHandler                     ;PIT timer channel 3 interrupt
-                DCD     PDB0_IRQHandler                     ;PDB0 Interrupt
-                DCD     USB0_IRQHandler                     ;USB0 interrupt
-                DCD     USBDCD_IRQHandler                   ;USBDCD Interrupt
-                DCD     Reserved71_IRQHandler               ;Reserved interrupt 71
-                DCD     DAC0_IRQHandler                     ;DAC0 interrupt
-                DCD     MCG_IRQHandler                      ;MCG Interrupt
-                DCD     LPTMR0_IRQHandler                   ;LPTimer interrupt
-                DCD     PORTA_IRQHandler                    ;Port A interrupt
-                DCD     PORTB_IRQHandler                    ;Port B interrupt
-                DCD     PORTC_IRQHandler                    ;Port C interrupt
-                DCD     PORTD_IRQHandler                    ;Port D interrupt
-                DCD     PORTE_IRQHandler                    ;Port E interrupt
-                DCD     SWI_IRQHandler                      ;Software interrupt
-                DCD     SPI2_IRQHandler                     ;SPI2 Interrupt
-                DCD     UART4_RX_TX_IRQHandler              ;UART4 Receive/Transmit interrupt
-                DCD     UART4_ERR_IRQHandler                ;UART4 Error interrupt
-                DCD     UART5_RX_TX_IRQHandler              ;UART5 Receive/Transmit interrupt
-                DCD     UART5_ERR_IRQHandler                ;UART5 Error interrupt
-                DCD     CMP2_IRQHandler                     ;CMP2 interrupt
-                DCD     FTM3_IRQHandler                     ;FTM3 fault, overflow and channels interrupt
-                DCD     DAC1_IRQHandler                     ;DAC1 interrupt
-                DCD     ADC1_IRQHandler                     ;ADC1 interrupt
-                DCD     I2C2_IRQHandler                     ;I2C2 interrupt
-                DCD     CAN0_ORed_Message_buffer_IRQHandler ;CAN0 OR'd message buffers interrupt
-                DCD     CAN0_Bus_Off_IRQHandler             ;CAN0 bus off interrupt
-                DCD     CAN0_Error_IRQHandler               ;CAN0 error interrupt
-                DCD     CAN0_Tx_Warning_IRQHandler          ;CAN0 Tx warning interrupt
-                DCD     CAN0_Rx_Warning_IRQHandler          ;CAN0 Rx warning interrupt
-                DCD     CAN0_Wake_Up_IRQHandler             ;CAN0 wake up interrupt
-                DCD     SDHC_IRQHandler                     ;SDHC interrupt
-                DCD     ENET_1588_Timer_IRQHandler          ;Ethernet MAC IEEE 1588 Timer Interrupt
-                DCD     ENET_Transmit_IRQHandler            ;Ethernet MAC Transmit Interrupt
-                DCD     ENET_Receive_IRQHandler             ;Ethernet MAC Receive Interrupt
-                DCD     ENET_Error_IRQHandler               ;Ethernet MAC Error and miscelaneous Interrupt
-                DCD     DefaultISR                          ;102
-                DCD     DefaultISR                          ;103
-                DCD     DefaultISR                          ;104
-                DCD     DefaultISR                          ;105
-                DCD     DefaultISR                          ;106
-                DCD     DefaultISR                          ;107
-                DCD     DefaultISR                          ;108
-                DCD     DefaultISR                          ;109
-                DCD     DefaultISR                          ;110
-                DCD     DefaultISR                          ;111
-                DCD     DefaultISR                          ;112
-                DCD     DefaultISR                          ;113
-                DCD     DefaultISR                          ;114
-                DCD     DefaultISR                          ;115
-                DCD     DefaultISR                          ;116
-                DCD     DefaultISR                          ;117
-                DCD     DefaultISR                          ;118
-                DCD     DefaultISR                          ;119
-                DCD     DefaultISR                          ;120
-                DCD     DefaultISR                          ;121
-                DCD     DefaultISR                          ;122
-                DCD     DefaultISR                          ;123
-                DCD     DefaultISR                          ;124
-                DCD     DefaultISR                          ;125
-                DCD     DefaultISR                          ;126
-                DCD     DefaultISR                          ;127
-                DCD     DefaultISR                          ;128
-                DCD     DefaultISR                          ;129
-                DCD     DefaultISR                          ;130
-                DCD     DefaultISR                          ;131
-                DCD     DefaultISR                          ;132
-                DCD     DefaultISR                          ;133
-                DCD     DefaultISR                          ;134
-                DCD     DefaultISR                          ;135
-                DCD     DefaultISR                          ;136
-                DCD     DefaultISR                          ;137
-                DCD     DefaultISR                          ;138
-                DCD     DefaultISR                          ;139
-                DCD     DefaultISR                          ;140
-                DCD     DefaultISR                          ;141
-                DCD     DefaultISR                          ;142
-                DCD     DefaultISR                          ;143
-                DCD     DefaultISR                          ;144
-                DCD     DefaultISR                          ;145
-                DCD     DefaultISR                          ;146
-                DCD     DefaultISR                          ;147
-                DCD     DefaultISR                          ;148
-                DCD     DefaultISR                          ;149
-                DCD     DefaultISR                          ;150
-                DCD     DefaultISR                          ;151
-                DCD     DefaultISR                          ;152
-                DCD     DefaultISR                          ;153
-                DCD     DefaultISR                          ;154
-                DCD     DefaultISR                          ;155
-                DCD     DefaultISR                          ;156
-                DCD     DefaultISR                          ;157
-                DCD     DefaultISR                          ;158
-                DCD     DefaultISR                          ;159
-                DCD     DefaultISR                          ;160
-                DCD     DefaultISR                          ;161
-                DCD     DefaultISR                          ;162
-                DCD     DefaultISR                          ;163
-                DCD     DefaultISR                          ;164
-                DCD     DefaultISR                          ;165
-                DCD     DefaultISR                          ;166
-                DCD     DefaultISR                          ;167
-                DCD     DefaultISR                          ;168
-                DCD     DefaultISR                          ;169
-                DCD     DefaultISR                          ;170
-                DCD     DefaultISR                          ;171
-                DCD     DefaultISR                          ;172
-                DCD     DefaultISR                          ;173
-                DCD     DefaultISR                          ;174
-                DCD     DefaultISR                          ;175
-                DCD     DefaultISR                          ;176
-                DCD     DefaultISR                          ;177
-                DCD     DefaultISR                          ;178
-                DCD     DefaultISR                          ;179
-                DCD     DefaultISR                          ;180
-                DCD     DefaultISR                          ;181
-                DCD     DefaultISR                          ;182
-                DCD     DefaultISR                          ;183
-                DCD     DefaultISR                          ;184
-                DCD     DefaultISR                          ;185
-                DCD     DefaultISR                          ;186
-                DCD     DefaultISR                          ;187
-                DCD     DefaultISR                          ;188
-                DCD     DefaultISR                          ;189
-                DCD     DefaultISR                          ;190
-                DCD     DefaultISR                          ;191
-                DCD     DefaultISR                          ;192
-                DCD     DefaultISR                          ;193
-                DCD     DefaultISR                          ;194
-                DCD     DefaultISR                          ;195
-                DCD     DefaultISR                          ;196
-                DCD     DefaultISR                          ;197
-                DCD     DefaultISR                          ;198
-                DCD     DefaultISR                          ;199
-                DCD     DefaultISR                          ;200
-                DCD     DefaultISR                          ;201
-                DCD     DefaultISR                          ;202
-                DCD     DefaultISR                          ;203
-                DCD     DefaultISR                          ;204
-                DCD     DefaultISR                          ;205
-                DCD     DefaultISR                          ;206
-                DCD     DefaultISR                          ;207
-                DCD     DefaultISR                          ;208
-                DCD     DefaultISR                          ;209
-                DCD     DefaultISR                          ;210
-                DCD     DefaultISR                          ;211
-                DCD     DefaultISR                          ;212
-                DCD     DefaultISR                          ;213
-                DCD     DefaultISR                          ;214
-                DCD     DefaultISR                          ;215
-                DCD     DefaultISR                          ;216
-                DCD     DefaultISR                          ;217
-                DCD     DefaultISR                          ;218
-                DCD     DefaultISR                          ;219
-                DCD     DefaultISR                          ;220
-                DCD     DefaultISR                          ;221
-                DCD     DefaultISR                          ;222
-                DCD     DefaultISR                          ;223
-                DCD     DefaultISR                          ;224
-                DCD     DefaultISR                          ;225
-                DCD     DefaultISR                          ;226
-                DCD     DefaultISR                          ;227
-                DCD     DefaultISR                          ;228
-                DCD     DefaultISR                          ;229
-                DCD     DefaultISR                          ;230
-                DCD     DefaultISR                          ;231
-                DCD     DefaultISR                          ;232
-                DCD     DefaultISR                          ;233
-                DCD     DefaultISR                          ;234
-                DCD     DefaultISR                          ;235
-                DCD     DefaultISR                          ;236
-                DCD     DefaultISR                          ;237
-                DCD     DefaultISR                          ;238
-                DCD     DefaultISR                          ;239
-                DCD     DefaultISR                          ;240
-                DCD     DefaultISR                          ;241
-                DCD     DefaultISR                          ;242
-                DCD     DefaultISR                          ;243
-                DCD     DefaultISR                          ;244
-                DCD     DefaultISR                          ;245
-                DCD     DefaultISR                          ;246
-                DCD     DefaultISR                          ;247
-                DCD     DefaultISR                          ;248
-                DCD     DefaultISR                          ;249
-                DCD     DefaultISR                          ;250
-                DCD     DefaultISR                          ;251
-                DCD     DefaultISR                          ;252
-                DCD     DefaultISR                          ;253
-                DCD     DefaultISR                          ;254
-                DCD     0xFFFFFFFF                          ; Reserved for user TRIM value
-__Vectors_End
-
-__Vectors_Size  EQU     __Vectors_End - __Vectors
-
-; <h> Flash Configuration
-;   <i> 16-byte flash configuration field that stores default protection settings (loaded on reset)
-;   <i> and security information that allows the MCU to restrict access to the FTFL module.
-;   <h> Backdoor Comparison Key
-;     <o0>  Backdoor Comparison Key 0.  <0x0-0xFF:2>
-;     <o1>  Backdoor Comparison Key 1.  <0x0-0xFF:2>
-;     <o2>  Backdoor Comparison Key 2.  <0x0-0xFF:2>
-;     <o3>  Backdoor Comparison Key 3.  <0x0-0xFF:2>
-;     <o4>  Backdoor Comparison Key 4.  <0x0-0xFF:2>
-;     <o5>  Backdoor Comparison Key 5.  <0x0-0xFF:2>
-;     <o6>  Backdoor Comparison Key 6.  <0x0-0xFF:2>
-;     <o7>  Backdoor Comparison Key 7.  <0x0-0xFF:2>
-BackDoorK0      EQU     0xFF
-BackDoorK1      EQU     0xFF
-BackDoorK2      EQU     0xFF
-BackDoorK3      EQU     0xFF
-BackDoorK4      EQU     0xFF
-BackDoorK5      EQU     0xFF
-BackDoorK6      EQU     0xFF
-BackDoorK7      EQU     0xFF
-;   </h>
-;   <h> Program flash protection bytes (FPROT)
-;     <i> Each program flash region can be protected from program and erase operation by setting the associated PROT bit.
-;     <i> Each bit protects a 1/32 region of the program flash memory.
-;     <h> FPROT0
-;       <i> Program Flash Region Protect Register 0
-;       <i> 1/32 - 8/32 region
-;       <o.0>   FPROT0.0
-;       <o.1>   FPROT0.1
-;       <o.2>   FPROT0.2
-;       <o.3>   FPROT0.3
-;       <o.4>   FPROT0.4
-;       <o.5>   FPROT0.5
-;       <o.6>   FPROT0.6
-;       <o.7>   FPROT0.7
-nFPROT0         EQU     0x00
-FPROT0          EQU     nFPROT0:EOR:0xFF
-;     </h>
-;     <h> FPROT1
-;       <i> Program Flash Region Protect Register 1
-;       <i> 9/32 - 16/32 region
-;       <o.0>   FPROT1.0
-;       <o.1>   FPROT1.1
-;       <o.2>   FPROT1.2
-;       <o.3>   FPROT1.3
-;       <o.4>   FPROT1.4
-;       <o.5>   FPROT1.5
-;       <o.6>   FPROT1.6
-;       <o.7>   FPROT1.7
-nFPROT1         EQU     0x00
-FPROT1          EQU     nFPROT1:EOR:0xFF
-;     </h>
-;     <h> FPROT2
-;       <i> Program Flash Region Protect Register 2
-;       <i> 17/32 - 24/32 region
-;       <o.0>   FPROT2.0
-;       <o.1>   FPROT2.1
-;       <o.2>   FPROT2.2
-;       <o.3>   FPROT2.3
-;       <o.4>   FPROT2.4
-;       <o.5>   FPROT2.5
-;       <o.6>   FPROT2.6
-;       <o.7>   FPROT2.7
-nFPROT2         EQU     0x00
-FPROT2          EQU     nFPROT2:EOR:0xFF
-;     </h>
-;     <h> FPROT3
-;       <i> Program Flash Region Protect Register 3
-;       <i> 25/32 - 32/32 region
-;       <o.0>   FPROT3.0
-;       <o.1>   FPROT3.1
-;       <o.2>   FPROT3.2
-;       <o.3>   FPROT3.3
-;       <o.4>   FPROT3.4
-;       <o.5>   FPROT3.5
-;       <o.6>   FPROT3.6
-;       <o.7>   FPROT3.7
-nFPROT3         EQU     0x00
-FPROT3          EQU     nFPROT3:EOR:0xFF
-;     </h>
-;   </h>
-;   <h> Data flash protection byte (FDPROT)
-;     <i> Each bit protects a 1/8 region of the data flash memory.
-;     <i> (Program flash only devices: Reserved)
-;       <o.0>   FDPROT.0
-;       <o.1>   FDPROT.1
-;       <o.2>   FDPROT.2
-;       <o.3>   FDPROT.3
-;       <o.4>   FDPROT.4
-;       <o.5>   FDPROT.5
-;       <o.6>   FDPROT.6
-;       <o.7>   FDPROT.7
-nFDPROT         EQU     0x00
-FDPROT          EQU     nFDPROT:EOR:0xFF
-;   </h>
-;   <h> EEPROM protection byte (FEPROT)
-;     <i> FlexNVM devices: Each bit protects a 1/8 region of the EEPROM.
-;     <i> (Program flash only devices: Reserved)
-;       <o.0>   FEPROT.0
-;       <o.1>   FEPROT.1
-;       <o.2>   FEPROT.2
-;       <o.3>   FEPROT.3
-;       <o.4>   FEPROT.4
-;       <o.5>   FEPROT.5
-;       <o.6>   FEPROT.6
-;       <o.7>   FEPROT.7
-nFEPROT         EQU     0x00
-FEPROT          EQU     nFEPROT:EOR:0xFF
-;   </h>
-;   <h> Flash nonvolatile option byte (FOPT)
-;     <i> Allows the user to customize the operation of the MCU at boot time.
-;     <o.0> LPBOOT
-;       <0=> Low-power boot
-;       <1=> Normal boot
-;     <o.1> EZPORT_DIS
-;       <0=> EzPort operation is disabled
-;       <1=> EzPort operation is enabled
-FOPT          EQU     0xFF
-;   </h>
-;   <h> Flash security byte (FSEC)
-;     <i> WARNING: If SEC field is configured as "MCU security status is secure" and MEEN field is configured as "Mass erase is disabled",
-;     <i> MCU's security status cannot be set back to unsecure state since Mass erase via the debugger is blocked !!!
-;     <o.0..1> SEC
-;       <2=> MCU security status is unsecure
-;       <3=> MCU security status is secure
-;         <i> Flash Security
-;     <o.2..3> FSLACC
-;       <2=> Freescale factory access denied
-;       <3=> Freescale factory access granted
-;         <i> Freescale Failure Analysis Access Code
-;     <o.4..5> MEEN
-;       <2=> Mass erase is disabled
-;       <3=> Mass erase is enabled
-;     <o.6..7> KEYEN
-;       <2=> Backdoor key access enabled
-;       <3=> Backdoor key access disabled
-;         <i> Backdoor Key Security Enable
-FSEC          EQU     0xFE
-;   </h>
-; </h>
-                IF      :LNOT::DEF:RAM_TARGET
-                AREA    FlashConfig, DATA, READONLY
-__FlashConfig
-                DCB     BackDoorK0, BackDoorK1, BackDoorK2, BackDoorK3
-                DCB     BackDoorK4, BackDoorK5, BackDoorK6, BackDoorK7
-                DCB     FPROT0    , FPROT1    , FPROT2    , FPROT3
-                DCB     FSEC      , FOPT      , FEPROT    , FDPROT
-                ENDIF
-
-
-                AREA    |.text|, CODE, READONLY
-
-; Reset Handler
-
-Reset_Handler   PROC
-                EXPORT  Reset_Handler             [WEAK]
-                IMPORT  SystemInit
-                IMPORT  __main
-
-                IF      :LNOT::DEF:RAM_TARGET
-                REQUIRE FlashConfig
-                ENDIF
-
-                CPSID   I               ; Mask interrupts
-                LDR     R0, =0xE000ED08
-                LDR     R1, =__Vectors
-                STR     R1, [R0]
-                LDR     R0, =SystemInit
-                BLX     R0
-                CPSIE   i               ; Unmask interrupts
-                LDR     R0, =__main
-                BX      R0
-                ENDP
-
-
-; Dummy Exception Handlers (infinite loops which can be modified)
-NMI_Handler\
-                PROC
-                EXPORT  NMI_Handler         [WEAK]
-                B       .
-                ENDP
-HardFault_Handler\
-                PROC
-                EXPORT  HardFault_Handler         [WEAK]
-                B       .
-                ENDP
-MemManage_Handler\
-                PROC
-                EXPORT  MemManage_Handler         [WEAK]
-                B       .
-                ENDP
-BusFault_Handler\
-                PROC
-                EXPORT  BusFault_Handler         [WEAK]
-                B       .
-                ENDP
-UsageFault_Handler\
-                PROC
-                EXPORT  UsageFault_Handler         [WEAK]
-                B       .
-                ENDP
-SVC_Handler\
-                PROC
-                EXPORT  SVC_Handler         [WEAK]
-                B       .
-                ENDP
-DebugMon_Handler\
-                PROC
-                EXPORT  DebugMon_Handler         [WEAK]
-                B       .
-                ENDP
-PendSV_Handler\
-                PROC
-                EXPORT  PendSV_Handler         [WEAK]
-                B       .
-                ENDP
-SysTick_Handler\
-                PROC
-                EXPORT  SysTick_Handler         [WEAK]
-                B       .
-                ENDP
-DMA0_IRQHandler\
-                PROC
-                EXPORT  DMA0_IRQHandler         [WEAK]
-                LDR     R0, =DMA0_DriverIRQHandler
-                BX      R0
-                ENDP
-
-DMA1_IRQHandler\
-                PROC
-                EXPORT  DMA1_IRQHandler         [WEAK]
-                LDR     R0, =DMA1_DriverIRQHandler
-                BX      R0
-                ENDP
-
-DMA2_IRQHandler\
-                PROC
-                EXPORT  DMA2_IRQHandler         [WEAK]
-                LDR     R0, =DMA2_DriverIRQHandler
-                BX      R0
-                ENDP
-
-DMA3_IRQHandler\
-                PROC
-                EXPORT  DMA3_IRQHandler         [WEAK]
-                LDR     R0, =DMA3_DriverIRQHandler
-                BX      R0
-                ENDP
-
-DMA4_IRQHandler\
-                PROC
-                EXPORT  DMA4_IRQHandler         [WEAK]
-                LDR     R0, =DMA4_DriverIRQHandler
-                BX      R0
-                ENDP
-
-DMA5_IRQHandler\
-                PROC
-                EXPORT  DMA5_IRQHandler         [WEAK]
-                LDR     R0, =DMA5_DriverIRQHandler
-                BX      R0
-                ENDP
-
-DMA6_IRQHandler\
-                PROC
-                EXPORT  DMA6_IRQHandler         [WEAK]
-                LDR     R0, =DMA6_DriverIRQHandler
-                BX      R0
-                ENDP
-
-DMA7_IRQHandler\
-                PROC
-                EXPORT  DMA7_IRQHandler         [WEAK]
-                LDR     R0, =DMA7_DriverIRQHandler
-                BX      R0
-                ENDP
-
-DMA8_IRQHandler\
-                PROC
-                EXPORT  DMA8_IRQHandler         [WEAK]
-                LDR     R0, =DMA8_DriverIRQHandler
-                BX      R0
-                ENDP
-
-DMA9_IRQHandler\
-                PROC
-                EXPORT  DMA9_IRQHandler         [WEAK]
-                LDR     R0, =DMA9_DriverIRQHandler
-                BX      R0
-                ENDP
-
-DMA10_IRQHandler\
-                PROC
-                EXPORT  DMA10_IRQHandler         [WEAK]
-                LDR     R0, =DMA10_DriverIRQHandler
-                BX      R0
-                ENDP
-
-DMA11_IRQHandler\
-                PROC
-                EXPORT  DMA11_IRQHandler         [WEAK]
-                LDR     R0, =DMA11_DriverIRQHandler
-                BX      R0
-                ENDP
-
-DMA12_IRQHandler\
-                PROC
-                EXPORT  DMA12_IRQHandler         [WEAK]
-                LDR     R0, =DMA12_DriverIRQHandler
-                BX      R0
-                ENDP
-
-DMA13_IRQHandler\
-                PROC
-                EXPORT  DMA13_IRQHandler         [WEAK]
-                LDR     R0, =DMA13_DriverIRQHandler
-                BX      R0
-                ENDP
-
-DMA14_IRQHandler\
-                PROC
-                EXPORT  DMA14_IRQHandler         [WEAK]
-                LDR     R0, =DMA14_DriverIRQHandler
-                BX      R0
-                ENDP
-
-DMA15_IRQHandler\
-                PROC
-                EXPORT  DMA15_IRQHandler         [WEAK]
-                LDR     R0, =DMA15_DriverIRQHandler
-                BX      R0
-                ENDP
-
-DMA_Error_IRQHandler\
-                PROC
-                EXPORT  DMA_Error_IRQHandler         [WEAK]
-                LDR     R0, =DMA_Error_DriverIRQHandler
-                BX      R0
-                ENDP
-
-I2C0_IRQHandler\
-                PROC
-                EXPORT  I2C0_IRQHandler         [WEAK]
-                LDR     R0, =I2C0_DriverIRQHandler
-                BX      R0
-                ENDP
-
-I2C1_IRQHandler\
-                PROC
-                EXPORT  I2C1_IRQHandler         [WEAK]
-                LDR     R0, =I2C1_DriverIRQHandler
-                BX      R0
-                ENDP
-
-SPI0_IRQHandler\
-                PROC
-                EXPORT  SPI0_IRQHandler         [WEAK]
-                LDR     R0, =SPI0_DriverIRQHandler
-                BX      R0
-                ENDP
-
-SPI1_IRQHandler\
-                PROC
-                EXPORT  SPI1_IRQHandler         [WEAK]
-                LDR     R0, =SPI1_DriverIRQHandler
-                BX      R0
-                ENDP
-
-I2S0_Tx_IRQHandler\
-                PROC
-                EXPORT  I2S0_Tx_IRQHandler         [WEAK]
-                LDR     R0, =I2S0_Tx_DriverIRQHandler
-                BX      R0
-                ENDP
-
-I2S0_Rx_IRQHandler\
-                PROC
-                EXPORT  I2S0_Rx_IRQHandler         [WEAK]
-                LDR     R0, =I2S0_Rx_DriverIRQHandler
-                BX      R0
-                ENDP
-
-UART0_LON_IRQHandler\
-                PROC
-                EXPORT  UART0_LON_IRQHandler         [WEAK]
-                LDR     R0, =UART0_LON_DriverIRQHandler
-                BX      R0
-                ENDP
-
-UART0_RX_TX_IRQHandler\
-                PROC
-                EXPORT  UART0_RX_TX_IRQHandler         [WEAK]
-                LDR     R0, =UART0_RX_TX_DriverIRQHandler
-                BX      R0
-                ENDP
-
-UART0_ERR_IRQHandler\
-                PROC
-                EXPORT  UART0_ERR_IRQHandler         [WEAK]
-                LDR     R0, =UART0_ERR_DriverIRQHandler
-                BX      R0
-                ENDP
-
-UART1_RX_TX_IRQHandler\
-                PROC
-                EXPORT  UART1_RX_TX_IRQHandler         [WEAK]
-                LDR     R0, =UART1_RX_TX_DriverIRQHandler
-                BX      R0
-                ENDP
-
-UART1_ERR_IRQHandler\
-                PROC
-                EXPORT  UART1_ERR_IRQHandler         [WEAK]
-                LDR     R0, =UART1_ERR_DriverIRQHandler
-                BX      R0
-                ENDP
-
-UART2_RX_TX_IRQHandler\
-                PROC
-                EXPORT  UART2_RX_TX_IRQHandler         [WEAK]
-                LDR     R0, =UART2_RX_TX_DriverIRQHandler
-                BX      R0
-                ENDP
-
-UART2_ERR_IRQHandler\
-                PROC
-                EXPORT  UART2_ERR_IRQHandler         [WEAK]
-                LDR     R0, =UART2_ERR_DriverIRQHandler
-                BX      R0
-                ENDP
-
-UART3_RX_TX_IRQHandler\
-                PROC
-                EXPORT  UART3_RX_TX_IRQHandler         [WEAK]
-                LDR     R0, =UART3_RX_TX_DriverIRQHandler
-                BX      R0
-                ENDP
-
-UART3_ERR_IRQHandler\
-                PROC
-                EXPORT  UART3_ERR_IRQHandler         [WEAK]
-                LDR     R0, =UART3_ERR_DriverIRQHandler
-                BX      R0
-                ENDP
-
-SPI2_IRQHandler\
-                PROC
-                EXPORT  SPI2_IRQHandler         [WEAK]
-                LDR     R0, =SPI2_DriverIRQHandler
-                BX      R0
-                ENDP
-
-UART4_RX_TX_IRQHandler\
-                PROC
-                EXPORT  UART4_RX_TX_IRQHandler         [WEAK]
-                LDR     R0, =UART4_RX_TX_DriverIRQHandler
-                BX      R0
-                ENDP
-
-UART4_ERR_IRQHandler\
-                PROC
-                EXPORT  UART4_ERR_IRQHandler         [WEAK]
-                LDR     R0, =UART4_ERR_DriverIRQHandler
-                BX      R0
-                ENDP
-
-UART5_RX_TX_IRQHandler\
-                PROC
-                EXPORT  UART5_RX_TX_IRQHandler         [WEAK]
-                LDR     R0, =UART5_RX_TX_DriverIRQHandler
-                BX      R0
-                ENDP
-
-UART5_ERR_IRQHandler\
-                PROC
-                EXPORT  UART5_ERR_IRQHandler         [WEAK]
-                LDR     R0, =UART5_ERR_DriverIRQHandler
-                BX      R0
-                ENDP
-
-I2C2_IRQHandler\
-                PROC
-                EXPORT  I2C2_IRQHandler         [WEAK]
-                LDR     R0, =I2C2_DriverIRQHandler
-                BX      R0
-                ENDP
-
-CAN0_ORed_Message_buffer_IRQHandler\
-                PROC
-                EXPORT  CAN0_ORed_Message_buffer_IRQHandler         [WEAK]
-                LDR     R0, =CAN0_DriverIRQHandler
-                BX      R0
-                ENDP
-
-CAN0_Bus_Off_IRQHandler\
-                PROC
-                EXPORT  CAN0_Bus_Off_IRQHandler         [WEAK]
-                LDR     R0, =CAN0_DriverIRQHandler
-                BX      R0
-                ENDP
-
-CAN0_Error_IRQHandler\
-                PROC
-                EXPORT  CAN0_Error_IRQHandler         [WEAK]
-                LDR     R0, =CAN0_DriverIRQHandler
-                BX      R0
-                ENDP
-
-CAN0_Tx_Warning_IRQHandler\
-                PROC
-                EXPORT  CAN0_Tx_Warning_IRQHandler         [WEAK]
-                LDR     R0, =CAN0_DriverIRQHandler
-                BX      R0
-                ENDP
-
-CAN0_Rx_Warning_IRQHandler\
-                PROC
-                EXPORT  CAN0_Rx_Warning_IRQHandler         [WEAK]
-                LDR     R0, =CAN0_DriverIRQHandler
-                BX      R0
-                ENDP
-
-CAN0_Wake_Up_IRQHandler\
-                PROC
-                EXPORT  CAN0_Wake_Up_IRQHandler         [WEAK]
-                LDR     R0, =CAN0_DriverIRQHandler
-                BX      R0
-                ENDP
-
-SDHC_IRQHandler\
-                PROC
-                EXPORT  SDHC_IRQHandler         [WEAK]
-                LDR     R0, =SDHC_DriverIRQHandler
-                BX      R0
-                ENDP
-
-ENET_1588_Timer_IRQHandler\
-                PROC
-                EXPORT  ENET_1588_Timer_IRQHandler         [WEAK]
-                LDR     R0, =ENET_1588_Timer_DriverIRQHandler
-                BX      R0
-                ENDP
-
-ENET_Transmit_IRQHandler\
-                PROC
-                EXPORT  ENET_Transmit_IRQHandler         [WEAK]
-                LDR     R0, =ENET_Transmit_DriverIRQHandler
-                BX      R0
-                ENDP
-
-ENET_Receive_IRQHandler\
-                PROC
-                EXPORT  ENET_Receive_IRQHandler         [WEAK]
-                LDR     R0, =ENET_Receive_DriverIRQHandler
-                BX      R0
-                ENDP
-
-ENET_Error_IRQHandler\
-                PROC
-                EXPORT  ENET_Error_IRQHandler         [WEAK]
-                LDR     R0, =ENET_Error_DriverIRQHandler
-                BX      R0
-                ENDP
-
-Default_Handler\
-                PROC
-                EXPORT  DMA0_DriverIRQHandler         [WEAK]
-                EXPORT  DMA1_DriverIRQHandler         [WEAK]
-                EXPORT  DMA2_DriverIRQHandler         [WEAK]
-                EXPORT  DMA3_DriverIRQHandler         [WEAK]
-                EXPORT  DMA4_DriverIRQHandler         [WEAK]
-                EXPORT  DMA5_DriverIRQHandler         [WEAK]
-                EXPORT  DMA6_DriverIRQHandler         [WEAK]
-                EXPORT  DMA7_DriverIRQHandler         [WEAK]
-                EXPORT  DMA8_DriverIRQHandler         [WEAK]
-                EXPORT  DMA9_DriverIRQHandler         [WEAK]
-                EXPORT  DMA10_DriverIRQHandler         [WEAK]
-                EXPORT  DMA11_DriverIRQHandler         [WEAK]
-                EXPORT  DMA12_DriverIRQHandler         [WEAK]
-                EXPORT  DMA13_DriverIRQHandler         [WEAK]
-                EXPORT  DMA14_DriverIRQHandler         [WEAK]
-                EXPORT  DMA15_DriverIRQHandler         [WEAK]
-                EXPORT  DMA_Error_DriverIRQHandler         [WEAK]
-                EXPORT  MCM_IRQHandler         [WEAK]
-                EXPORT  FTFE_IRQHandler         [WEAK]
-                EXPORT  Read_Collision_IRQHandler         [WEAK]
-                EXPORT  LVD_LVW_IRQHandler         [WEAK]
-                EXPORT  LLWU_IRQHandler         [WEAK]
-                EXPORT  WDOG_EWM_IRQHandler         [WEAK]
-                EXPORT  RNG_IRQHandler         [WEAK]
-                EXPORT  I2C0_DriverIRQHandler         [WEAK]
-                EXPORT  I2C1_DriverIRQHandler         [WEAK]
-                EXPORT  SPI0_DriverIRQHandler         [WEAK]
-                EXPORT  SPI1_DriverIRQHandler         [WEAK]
-                EXPORT  I2S0_Tx_DriverIRQHandler         [WEAK]
-                EXPORT  I2S0_Rx_DriverIRQHandler         [WEAK]
-                EXPORT  UART0_LON_DriverIRQHandler         [WEAK]
-                EXPORT  UART0_RX_TX_DriverIRQHandler         [WEAK]
-                EXPORT  UART0_ERR_DriverIRQHandler         [WEAK]
-                EXPORT  UART1_RX_TX_DriverIRQHandler         [WEAK]
-                EXPORT  UART1_ERR_DriverIRQHandler         [WEAK]
-                EXPORT  UART2_RX_TX_DriverIRQHandler         [WEAK]
-                EXPORT  UART2_ERR_DriverIRQHandler         [WEAK]
-                EXPORT  UART3_RX_TX_DriverIRQHandler         [WEAK]
-                EXPORT  UART3_ERR_DriverIRQHandler         [WEAK]
-                EXPORT  ADC0_IRQHandler         [WEAK]
-                EXPORT  CMP0_IRQHandler         [WEAK]
-                EXPORT  CMP1_IRQHandler         [WEAK]
-                EXPORT  FTM0_IRQHandler         [WEAK]
-                EXPORT  FTM1_IRQHandler         [WEAK]
-                EXPORT  FTM2_IRQHandler         [WEAK]
-                EXPORT  CMT_IRQHandler         [WEAK]
-                EXPORT  RTC_IRQHandler         [WEAK]
-                EXPORT  RTC_Seconds_IRQHandler         [WEAK]
-                EXPORT  PIT0_IRQHandler         [WEAK]
-                EXPORT  PIT1_IRQHandler         [WEAK]
-                EXPORT  PIT2_IRQHandler         [WEAK]
-                EXPORT  PIT3_IRQHandler         [WEAK]
-                EXPORT  PDB0_IRQHandler         [WEAK]
-                EXPORT  USB0_IRQHandler         [WEAK]
-                EXPORT  USBDCD_IRQHandler         [WEAK]
-                EXPORT  Reserved71_IRQHandler         [WEAK]
-                EXPORT  DAC0_IRQHandler         [WEAK]
-                EXPORT  MCG_IRQHandler         [WEAK]
-                EXPORT  LPTMR0_IRQHandler         [WEAK]
-                EXPORT  PORTA_IRQHandler         [WEAK]
-                EXPORT  PORTB_IRQHandler         [WEAK]
-                EXPORT  PORTC_IRQHandler         [WEAK]
-                EXPORT  PORTD_IRQHandler         [WEAK]
-                EXPORT  PORTE_IRQHandler         [WEAK]
-                EXPORT  SWI_IRQHandler         [WEAK]
-                EXPORT  SPI2_DriverIRQHandler         [WEAK]
-                EXPORT  UART4_RX_TX_DriverIRQHandler         [WEAK]
-                EXPORT  UART4_ERR_DriverIRQHandler         [WEAK]
-                EXPORT  UART5_RX_TX_DriverIRQHandler         [WEAK]
-                EXPORT  UART5_ERR_DriverIRQHandler         [WEAK]
-                EXPORT  CMP2_IRQHandler         [WEAK]
-                EXPORT  FTM3_IRQHandler         [WEAK]
-                EXPORT  DAC1_IRQHandler         [WEAK]
-                EXPORT  ADC1_IRQHandler         [WEAK]
-                EXPORT  I2C2_DriverIRQHandler         [WEAK]
-                EXPORT  CAN0_DriverIRQHandler         [WEAK]
-                EXPORT  SDHC_DriverIRQHandler         [WEAK]
-                EXPORT  ENET_1588_Timer_DriverIRQHandler         [WEAK]
-                EXPORT  ENET_Transmit_DriverIRQHandler         [WEAK]
-                EXPORT  ENET_Receive_DriverIRQHandler         [WEAK]
-                EXPORT  ENET_Error_DriverIRQHandler         [WEAK]
-                EXPORT  DefaultISR         [WEAK]
-DMA0_DriverIRQHandler
-DMA1_DriverIRQHandler
-DMA2_DriverIRQHandler
-DMA3_DriverIRQHandler
-DMA4_DriverIRQHandler
-DMA5_DriverIRQHandler
-DMA6_DriverIRQHandler
-DMA7_DriverIRQHandler
-DMA8_DriverIRQHandler
-DMA9_DriverIRQHandler
-DMA10_DriverIRQHandler
-DMA11_DriverIRQHandler
-DMA12_DriverIRQHandler
-DMA13_DriverIRQHandler
-DMA14_DriverIRQHandler
-DMA15_DriverIRQHandler
-DMA_Error_DriverIRQHandler
-MCM_IRQHandler
-FTFE_IRQHandler
-Read_Collision_IRQHandler
-LVD_LVW_IRQHandler
-LLWU_IRQHandler
-WDOG_EWM_IRQHandler
-RNG_IRQHandler
-I2C0_DriverIRQHandler
-I2C1_DriverIRQHandler
-SPI0_DriverIRQHandler
-SPI1_DriverIRQHandler
-I2S0_Tx_DriverIRQHandler
-I2S0_Rx_DriverIRQHandler
-UART0_LON_DriverIRQHandler
-UART0_RX_TX_DriverIRQHandler
-UART0_ERR_DriverIRQHandler
-UART1_RX_TX_DriverIRQHandler
-UART1_ERR_DriverIRQHandler
-UART2_RX_TX_DriverIRQHandler
-UART2_ERR_DriverIRQHandler
-UART3_RX_TX_DriverIRQHandler
-UART3_ERR_DriverIRQHandler
-ADC0_IRQHandler
-CMP0_IRQHandler
-CMP1_IRQHandler
-FTM0_IRQHandler
-FTM1_IRQHandler
-FTM2_IRQHandler
-CMT_IRQHandler
-RTC_IRQHandler
-RTC_Seconds_IRQHandler
-PIT0_IRQHandler
-PIT1_IRQHandler
-PIT2_IRQHandler
-PIT3_IRQHandler
-PDB0_IRQHandler
-USB0_IRQHandler
-USBDCD_IRQHandler
-Reserved71_IRQHandler
-DAC0_IRQHandler
-MCG_IRQHandler
-LPTMR0_IRQHandler
-PORTA_IRQHandler
-PORTB_IRQHandler
-PORTC_IRQHandler
-PORTD_IRQHandler
-PORTE_IRQHandler
-SWI_IRQHandler
-SPI2_DriverIRQHandler
-UART4_RX_TX_DriverIRQHandler
-UART4_ERR_DriverIRQHandler
-UART5_RX_TX_DriverIRQHandler
-UART5_ERR_DriverIRQHandler
-CMP2_IRQHandler
-FTM3_IRQHandler
-DAC1_IRQHandler
-ADC1_IRQHandler
-I2C2_DriverIRQHandler
-CAN0_DriverIRQHandler
-SDHC_DriverIRQHandler
-ENET_1588_Timer_DriverIRQHandler
-ENET_Transmit_DriverIRQHandler
-ENET_Receive_DriverIRQHandler
-ENET_Error_DriverIRQHandler
-DefaultISR
-                B      DefaultISR
-                ENDP
-                  ALIGN
-
-
-                END
--- a/targets/cmsis/TARGET_Freescale/TARGET_K64F/TOOLCHAIN_ARM_STD/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Copyright (C) 2009-2011 ARM Limited. All rights reserved.
- *
- * Setup a fixed single stack/heap memory model,
- *  between the top of the RW/ZI region and the stackpointer
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif
--- a/targets/cmsis/TARGET_Freescale/TARGET_K64F/TOOLCHAIN_GCC_ARM/MK64FN1M0xxx12.ld	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,267 +0,0 @@
-/*
-** ###################################################################
-**     Processors:          MK64FN1M0VDC12
-**                          MK64FN1M0VLL12
-**                          MK64FN1M0VLQ12
-**                          MK64FN1M0VMD12
-**
-**     Compiler:            GNU C Compiler
-**     Reference manual:    K64P144M120SF5RM, Rev.2, January 2014
-**     Version:             rev. 2.8, 2015-02-19
-**     Build:               b151217
-**
-**     Abstract:
-**         Linker file for the GNU C Compiler
-**
-**     Copyright (c) 2015 Freescale Semiconductor, Inc.
-**     All rights reserved.
-**
-**     Redistribution and use in source and binary forms, with or without modification,
-**     are permitted provided that the following conditions are met:
-**
-**     o Redistributions of source code must retain the above copyright notice, this list
-**       of conditions and the following disclaimer.
-**
-**     o Redistributions in binary form must reproduce the above copyright notice, this
-**       list of conditions and the following disclaimer in the documentation and/or
-**       other materials provided with the distribution.
-**
-**     o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-**       contributors may be used to endorse or promote products derived from this
-**       software without specific prior written permission.
-**
-**     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-**     ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-**     WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-**     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-**     ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-**     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-**     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-**     ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-**     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-**     SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-**     http:                 www.freescale.com
-**     mail:                 support@freescale.com
-**
-** ###################################################################
-*/
-
-/* Entry Point */
-ENTRY(Reset_Handler)
-
-__ram_vector_table__ = 1;
-
-/* Heap 1/4 of ram and stack 1/8 */
-__stack_size__ = 0x8000;
-__heap_size__ = 0x10000;
-
-HEAP_SIZE  = DEFINED(__heap_size__)  ? __heap_size__  : 0x0400;
-STACK_SIZE = DEFINED(__stack_size__) ? __stack_size__ : 0x0400;
-M_VECTOR_RAM_SIZE = DEFINED(__ram_vector_table__) ? 0x0400 : 0x0;
-
-/* Specify the memory areas */
-MEMORY
-{
-  m_interrupts          (RX)  : ORIGIN = 0x00000000, LENGTH = 0x00000400
-  m_flash_config        (RX)  : ORIGIN = 0x00000400, LENGTH = 0x00000010
-  m_text                (RX)  : ORIGIN = 0x00000410, LENGTH = 0x000FFBF0
-  m_data                (RW)  : ORIGIN = 0x1FFF0000, LENGTH = 0x00010000
-  m_data_2              (RW)  : ORIGIN = 0x20000000, LENGTH = 0x00030000
-}
-
-/* Define output sections */
-SECTIONS
-{
-  /* The startup code goes first into internal flash */
-  .interrupts :
-  {
-    __VECTOR_TABLE = .;
-    . = ALIGN(4);
-    KEEP(*(.isr_vector))     /* Startup code */
-    . = ALIGN(4);
-  } > m_interrupts
-
-  .flash_config :
-  {
-    . = ALIGN(4);
-    KEEP(*(.FlashConfig))    /* Flash Configuration Field (FCF) */
-    . = ALIGN(4);
-  } > m_flash_config
-
-  /* The program code and other data goes into internal flash */
-  .text :
-  {
-    . = ALIGN(4);
-    *(.text)                 /* .text sections (code) */
-    *(.text*)                /* .text* sections (code) */
-    *(.rodata)               /* .rodata sections (constants, strings, etc.) */
-    *(.rodata*)              /* .rodata* sections (constants, strings, etc.) */
-    *(.glue_7)               /* glue arm to thumb code */
-    *(.glue_7t)              /* glue thumb to arm code */
-    *(.eh_frame)
-    KEEP (*(.init))
-    KEEP (*(.fini))
-    . = ALIGN(4);
-  } > m_text
-
-  .ARM.extab :
-  {
-    *(.ARM.extab* .gnu.linkonce.armextab.*)
-  } > m_text
-
-  .ARM :
-  {
-    __exidx_start = .;
-    *(.ARM.exidx*)
-    __exidx_end = .;
-  } > m_text
-
- .ctors :
-  {
-    __CTOR_LIST__ = .;
-    /* gcc uses crtbegin.o to find the start of
-       the constructors, so we make sure it is
-       first.  Because this is a wildcard, it
-       doesn't matter if the user does not
-       actually link against crtbegin.o; the
-       linker won't look for a file to match a
-       wildcard.  The wildcard also means that it
-       doesn't matter which directory crtbegin.o
-       is in.  */
-    KEEP (*crtbegin.o(.ctors))
-    KEEP (*crtbegin?.o(.ctors))
-    /* We don't want to include the .ctor section from
-       from the crtend.o file until after the sorted ctors.
-       The .ctor section from the crtend file contains the
-       end of ctors marker and it must be last */
-    KEEP (*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors))
-    KEEP (*(SORT(.ctors.*)))
-    KEEP (*(.ctors))
-    __CTOR_END__ = .;
-  } > m_text
-
-  .dtors :
-  {
-    __DTOR_LIST__ = .;
-    KEEP (*crtbegin.o(.dtors))
-    KEEP (*crtbegin?.o(.dtors))
-    KEEP (*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors))
-    KEEP (*(SORT(.dtors.*)))
-    KEEP (*(.dtors))
-    __DTOR_END__ = .;
-  } > m_text
-
-  .preinit_array :
-  {
-    PROVIDE_HIDDEN (__preinit_array_start = .);
-    KEEP (*(.preinit_array*))
-    PROVIDE_HIDDEN (__preinit_array_end = .);
-  } > m_text
-
-  .init_array :
-  {
-    PROVIDE_HIDDEN (__init_array_start = .);
-    KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array*))
-    PROVIDE_HIDDEN (__init_array_end = .);
-  } > m_text
-
-  .fini_array :
-  {
-    PROVIDE_HIDDEN (__fini_array_start = .);
-    KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array*))
-    PROVIDE_HIDDEN (__fini_array_end = .);
-  } > m_text
-
-  __etext = .;    /* define a global symbol at end of code */
-  __DATA_ROM = .; /* Symbol is used by startup for data initialization */
-
-  .interrupts_ram :
-  {
-    . = ALIGN(4);
-    __VECTOR_RAM__ = .;
-    __interrupts_ram_start__ = .; /* Create a global symbol at data start */
-    *(.m_interrupts_ram)     /* This is a user defined section */
-    . += M_VECTOR_RAM_SIZE;
-    . = ALIGN(4);
-    __interrupts_ram_end__ = .; /* Define a global symbol at data end */
-  } > m_data
-
-  __VECTOR_RAM = DEFINED(__ram_vector_table__) ? __VECTOR_RAM__ : ORIGIN(m_interrupts);
-  __RAM_VECTOR_TABLE_SIZE_BYTES = DEFINED(__ram_vector_table__) ? (__interrupts_ram_end__ - __interrupts_ram_start__) : 0x0;
-
-  .data : AT(__DATA_ROM)
-  {
-    . = ALIGN(4);
-    __DATA_RAM = .;
-    __data_start__ = .;      /* create a global symbol at data start */
-    *(.data)                 /* .data sections */
-    *(.data*)                /* .data* sections */
-    KEEP(*(.jcr*))
-    . = ALIGN(4);
-    __data_end__ = .;        /* define a global symbol at data end */
-  } > m_data
-
-  __DATA_END = __DATA_ROM + (__data_end__ - __data_start__);
-  text_end = ORIGIN(m_text) + LENGTH(m_text);
-  ASSERT(__DATA_END <= text_end, "region m_text overflowed with text and data")
-
-  USB_RAM_GAP = DEFINED(__usb_ram_size__) ? __usb_ram_size__ : 0x800;
-  /* Uninitialized data section */
-  .bss :
-  {
-    /* This is used by the startup in order to initialize the .bss section */
-    . = ALIGN(4);
-    __START_BSS = .;
-    __bss_start__ = .;
-    *(.bss)
-    *(.bss*)
-    . = ALIGN(512);
-    USB_RAM_START = .;
-    . += USB_RAM_GAP;
-    *(COMMON)
-    . = ALIGN(4);
-    __bss_end__ = .;
-    __END_BSS = .;
-  } > m_data
-
-  .heap :
-  {
-    . = ALIGN(8);
-    __end__ = .;
-    PROVIDE(end = .);
-    __HeapBase = .;
-    . += HEAP_SIZE;
-    __HeapLimit = .;
-    __heap_limit = .; /* Add for _sbrk */
-  } > m_data_2
-
-  .stack :
-  {
-    . = ALIGN(8);
-    . += STACK_SIZE;
-  } > m_data_2
-
-  m_usb_bdt USB_RAM_START (NOLOAD) :
-  {
-    *(m_usb_bdt)
-    USB_RAM_BDT_END = .;
-  }
-
-  m_usb_global USB_RAM_BDT_END (NOLOAD) :
-  {
-    *(m_usb_global)
-  }
-
-  /* Initializes stack on the end of block */
-  __StackTop   = ORIGIN(m_data_2) + LENGTH(m_data_2);
-  __StackLimit = __StackTop - STACK_SIZE;
-  PROVIDE(__stack = __StackTop);
-
-  .ARM.attributes 0 : { *(.ARM.attributes) }
-
-  ASSERT(__StackLimit >= __HeapLimit, "region m_data_2 overflowed with stack and heap")
-}
-
--- a/targets/cmsis/TARGET_Freescale/TARGET_K64F/TOOLCHAIN_GCC_ARM/startup_MK64F12.S	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,993 +0,0 @@
-/* ---------------------------------------------------------------------------------------*/
-/*  @file:    startup_MK64F12.s                                                           */
-/*  @purpose: CMSIS Cortex-M4 Core Device Startup File                                    */
-/*            MK64F12                                                                     */
-/*  @version: 2.8                                                                         */
-/*  @date:    2015-2-19                                                                   */
-/*  @build:   b151210                                                                     */
-/* ---------------------------------------------------------------------------------------*/
-/*                                                                                        */
-/* Copyright (c) 1997 - 2015 , Freescale Semiconductor, Inc.                              */
-/* All rights reserved.                                                                   */
-/*                                                                                        */
-/* Redistribution and use in source and binary forms, with or without modification,       */
-/* are permitted provided that the following conditions are met:                          */
-/*                                                                                        */
-/* o Redistributions of source code must retain the above copyright notice, this list     */
-/*   of conditions and the following disclaimer.                                          */
-/*                                                                                        */
-/* o Redistributions in binary form must reproduce the above copyright notice, this       */
-/*   list of conditions and the following disclaimer in the documentation and/or          */
-/*   other materials provided with the distribution.                                      */
-/*                                                                                        */
-/* o Neither the name of Freescale Semiconductor, Inc. nor the names of its               */
-/*   contributors may be used to endorse or promote products derived from this            */
-/*   software without specific prior written permission.                                  */
-/*                                                                                        */
-/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND        */
-/* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED          */
-/* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE                 */
-/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR       */
-/* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES         */
-/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;           */
-/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON         */
-/* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT                */
-/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS          */
-/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                           */
-/*****************************************************************************/
-/* Version: GCC for ARM Embedded Processors                                  */
-/*****************************************************************************/
-    .syntax unified
-    .arch armv7-m
-
-    .section .isr_vector, "a"
-    .align 2
-    .globl __isr_vector
-__isr_vector:
-    .long   __StackTop                                      /* Top of Stack */
-    .long   Reset_Handler                                   /* Reset Handler */
-    .long   NMI_Handler                                     /* NMI Handler*/
-    .long   HardFault_Handler                               /* Hard Fault Handler*/
-    .long   MemManage_Handler                               /* MPU Fault Handler*/
-    .long   BusFault_Handler                                /* Bus Fault Handler*/
-    .long   UsageFault_Handler                              /* Usage Fault Handler*/
-    .long   0                                               /* Reserved*/
-    .long   0                                               /* Reserved*/
-    .long   0                                               /* Reserved*/
-    .long   0                                               /* Reserved*/
-    .long   SVC_Handler                                     /* SVCall Handler*/
-    .long   DebugMon_Handler                                /* Debug Monitor Handler*/
-    .long   0                                               /* Reserved*/
-    .long   PendSV_Handler                                  /* PendSV Handler*/
-    .long   SysTick_Handler                                 /* SysTick Handler*/
-
-                                                            /* External Interrupts*/
-    .long   DMA0_IRQHandler                                 /* DMA Channel 0 Transfer Complete*/
-    .long   DMA1_IRQHandler                                 /* DMA Channel 1 Transfer Complete*/
-    .long   DMA2_IRQHandler                                 /* DMA Channel 2 Transfer Complete*/
-    .long   DMA3_IRQHandler                                 /* DMA Channel 3 Transfer Complete*/
-    .long   DMA4_IRQHandler                                 /* DMA Channel 4 Transfer Complete*/
-    .long   DMA5_IRQHandler                                 /* DMA Channel 5 Transfer Complete*/
-    .long   DMA6_IRQHandler                                 /* DMA Channel 6 Transfer Complete*/
-    .long   DMA7_IRQHandler                                 /* DMA Channel 7 Transfer Complete*/
-    .long   DMA8_IRQHandler                                 /* DMA Channel 8 Transfer Complete*/
-    .long   DMA9_IRQHandler                                 /* DMA Channel 9 Transfer Complete*/
-    .long   DMA10_IRQHandler                                /* DMA Channel 10 Transfer Complete*/
-    .long   DMA11_IRQHandler                                /* DMA Channel 11 Transfer Complete*/
-    .long   DMA12_IRQHandler                                /* DMA Channel 12 Transfer Complete*/
-    .long   DMA13_IRQHandler                                /* DMA Channel 13 Transfer Complete*/
-    .long   DMA14_IRQHandler                                /* DMA Channel 14 Transfer Complete*/
-    .long   DMA15_IRQHandler                                /* DMA Channel 15 Transfer Complete*/
-    .long   DMA_Error_IRQHandler                            /* DMA Error Interrupt*/
-    .long   MCM_IRQHandler                                  /* Normal Interrupt*/
-    .long   FTFE_IRQHandler                                 /* FTFE Command complete interrupt*/
-    .long   Read_Collision_IRQHandler                       /* Read Collision Interrupt*/
-    .long   LVD_LVW_IRQHandler                              /* Low Voltage Detect, Low Voltage Warning*/
-    .long   LLWU_IRQHandler                                 /* Low Leakage Wakeup Unit*/
-    .long   WDOG_EWM_IRQHandler                             /* WDOG Interrupt*/
-    .long   RNG_IRQHandler                                  /* RNG Interrupt*/
-    .long   I2C0_IRQHandler                                 /* I2C0 interrupt*/
-    .long   I2C1_IRQHandler                                 /* I2C1 interrupt*/
-    .long   SPI0_IRQHandler                                 /* SPI0 Interrupt*/
-    .long   SPI1_IRQHandler                                 /* SPI1 Interrupt*/
-    .long   I2S0_Tx_IRQHandler                              /* I2S0 transmit interrupt*/
-    .long   I2S0_Rx_IRQHandler                              /* I2S0 receive interrupt*/
-    .long   UART0_LON_IRQHandler                            /* UART0 LON interrupt*/
-    .long   UART0_RX_TX_IRQHandler                          /* UART0 Receive/Transmit interrupt*/
-    .long   UART0_ERR_IRQHandler                            /* UART0 Error interrupt*/
-    .long   UART1_RX_TX_IRQHandler                          /* UART1 Receive/Transmit interrupt*/
-    .long   UART1_ERR_IRQHandler                            /* UART1 Error interrupt*/
-    .long   UART2_RX_TX_IRQHandler                          /* UART2 Receive/Transmit interrupt*/
-    .long   UART2_ERR_IRQHandler                            /* UART2 Error interrupt*/
-    .long   UART3_RX_TX_IRQHandler                          /* UART3 Receive/Transmit interrupt*/
-    .long   UART3_ERR_IRQHandler                            /* UART3 Error interrupt*/
-    .long   ADC0_IRQHandler                                 /* ADC0 interrupt*/
-    .long   CMP0_IRQHandler                                 /* CMP0 interrupt*/
-    .long   CMP1_IRQHandler                                 /* CMP1 interrupt*/
-    .long   FTM0_IRQHandler                                 /* FTM0 fault, overflow and channels interrupt*/
-    .long   FTM1_IRQHandler                                 /* FTM1 fault, overflow and channels interrupt*/
-    .long   FTM2_IRQHandler                                 /* FTM2 fault, overflow and channels interrupt*/
-    .long   CMT_IRQHandler                                  /* CMT interrupt*/
-    .long   RTC_IRQHandler                                  /* RTC interrupt*/
-    .long   RTC_Seconds_IRQHandler                          /* RTC seconds interrupt*/
-    .long   PIT0_IRQHandler                                 /* PIT timer channel 0 interrupt*/
-    .long   PIT1_IRQHandler                                 /* PIT timer channel 1 interrupt*/
-    .long   PIT2_IRQHandler                                 /* PIT timer channel 2 interrupt*/
-    .long   PIT3_IRQHandler                                 /* PIT timer channel 3 interrupt*/
-    .long   PDB0_IRQHandler                                 /* PDB0 Interrupt*/
-    .long   USB0_IRQHandler                                 /* USB0 interrupt*/
-    .long   USBDCD_IRQHandler                               /* USBDCD Interrupt*/
-    .long   Reserved71_IRQHandler                           /* Reserved interrupt 71*/
-    .long   DAC0_IRQHandler                                 /* DAC0 interrupt*/
-    .long   MCG_IRQHandler                                  /* MCG Interrupt*/
-    .long   LPTMR0_IRQHandler                               /* LPTimer interrupt*/
-    .long   PORTA_IRQHandler                                /* Port A interrupt*/
-    .long   PORTB_IRQHandler                                /* Port B interrupt*/
-    .long   PORTC_IRQHandler                                /* Port C interrupt*/
-    .long   PORTD_IRQHandler                                /* Port D interrupt*/
-    .long   PORTE_IRQHandler                                /* Port E interrupt*/
-    .long   SWI_IRQHandler                                  /* Software interrupt*/
-    .long   SPI2_IRQHandler                                 /* SPI2 Interrupt*/
-    .long   UART4_RX_TX_IRQHandler                          /* UART4 Receive/Transmit interrupt*/
-    .long   UART4_ERR_IRQHandler                            /* UART4 Error interrupt*/
-    .long   UART5_RX_TX_IRQHandler                          /* UART5 Receive/Transmit interrupt*/
-    .long   UART5_ERR_IRQHandler                            /* UART5 Error interrupt*/
-    .long   CMP2_IRQHandler                                 /* CMP2 interrupt*/
-    .long   FTM3_IRQHandler                                 /* FTM3 fault, overflow and channels interrupt*/
-    .long   DAC1_IRQHandler                                 /* DAC1 interrupt*/
-    .long   ADC1_IRQHandler                                 /* ADC1 interrupt*/
-    .long   I2C2_IRQHandler                                 /* I2C2 interrupt*/
-    .long   CAN0_ORed_Message_buffer_IRQHandler             /* CAN0 OR'd message buffers interrupt*/
-    .long   CAN0_Bus_Off_IRQHandler                         /* CAN0 bus off interrupt*/
-    .long   CAN0_Error_IRQHandler                           /* CAN0 error interrupt*/
-    .long   CAN0_Tx_Warning_IRQHandler                      /* CAN0 Tx warning interrupt*/
-    .long   CAN0_Rx_Warning_IRQHandler                      /* CAN0 Rx warning interrupt*/
-    .long   CAN0_Wake_Up_IRQHandler                         /* CAN0 wake up interrupt*/
-    .long   SDHC_IRQHandler                                 /* SDHC interrupt*/
-    .long   ENET_1588_Timer_IRQHandler                      /* Ethernet MAC IEEE 1588 Timer Interrupt*/
-    .long   ENET_Transmit_IRQHandler                        /* Ethernet MAC Transmit Interrupt*/
-    .long   ENET_Receive_IRQHandler                         /* Ethernet MAC Receive Interrupt*/
-    .long   ENET_Error_IRQHandler                           /* Ethernet MAC Error and miscelaneous Interrupt*/
-    .long   DefaultISR                                      /* 102*/
-    .long   DefaultISR                                      /* 103*/
-    .long   DefaultISR                                      /* 104*/
-    .long   DefaultISR                                      /* 105*/
-    .long   DefaultISR                                      /* 106*/
-    .long   DefaultISR                                      /* 107*/
-    .long   DefaultISR                                      /* 108*/
-    .long   DefaultISR                                      /* 109*/
-    .long   DefaultISR                                      /* 110*/
-    .long   DefaultISR                                      /* 111*/
-    .long   DefaultISR                                      /* 112*/
-    .long   DefaultISR                                      /* 113*/
-    .long   DefaultISR                                      /* 114*/
-    .long   DefaultISR                                      /* 115*/
-    .long   DefaultISR                                      /* 116*/
-    .long   DefaultISR                                      /* 117*/
-    .long   DefaultISR                                      /* 118*/
-    .long   DefaultISR                                      /* 119*/
-    .long   DefaultISR                                      /* 120*/
-    .long   DefaultISR                                      /* 121*/
-    .long   DefaultISR                                      /* 122*/
-    .long   DefaultISR                                      /* 123*/
-    .long   DefaultISR                                      /* 124*/
-    .long   DefaultISR                                      /* 125*/
-    .long   DefaultISR                                      /* 126*/
-    .long   DefaultISR                                      /* 127*/
-    .long   DefaultISR                                      /* 128*/
-    .long   DefaultISR                                      /* 129*/
-    .long   DefaultISR                                      /* 130*/
-    .long   DefaultISR                                      /* 131*/
-    .long   DefaultISR                                      /* 132*/
-    .long   DefaultISR                                      /* 133*/
-    .long   DefaultISR                                      /* 134*/
-    .long   DefaultISR                                      /* 135*/
-    .long   DefaultISR                                      /* 136*/
-    .long   DefaultISR                                      /* 137*/
-    .long   DefaultISR                                      /* 138*/
-    .long   DefaultISR                                      /* 139*/
-    .long   DefaultISR                                      /* 140*/
-    .long   DefaultISR                                      /* 141*/
-    .long   DefaultISR                                      /* 142*/
-    .long   DefaultISR                                      /* 143*/
-    .long   DefaultISR                                      /* 144*/
-    .long   DefaultISR                                      /* 145*/
-    .long   DefaultISR                                      /* 146*/
-    .long   DefaultISR                                      /* 147*/
-    .long   DefaultISR                                      /* 148*/
-    .long   DefaultISR                                      /* 149*/
-    .long   DefaultISR                                      /* 150*/
-    .long   DefaultISR                                      /* 151*/
-    .long   DefaultISR                                      /* 152*/
-    .long   DefaultISR                                      /* 153*/
-    .long   DefaultISR                                      /* 154*/
-    .long   DefaultISR                                      /* 155*/
-    .long   DefaultISR                                      /* 156*/
-    .long   DefaultISR                                      /* 157*/
-    .long   DefaultISR                                      /* 158*/
-    .long   DefaultISR                                      /* 159*/
-    .long   DefaultISR                                      /* 160*/
-    .long   DefaultISR                                      /* 161*/
-    .long   DefaultISR                                      /* 162*/
-    .long   DefaultISR                                      /* 163*/
-    .long   DefaultISR                                      /* 164*/
-    .long   DefaultISR                                      /* 165*/
-    .long   DefaultISR                                      /* 166*/
-    .long   DefaultISR                                      /* 167*/
-    .long   DefaultISR                                      /* 168*/
-    .long   DefaultISR                                      /* 169*/
-    .long   DefaultISR                                      /* 170*/
-    .long   DefaultISR                                      /* 171*/
-    .long   DefaultISR                                      /* 172*/
-    .long   DefaultISR                                      /* 173*/
-    .long   DefaultISR                                      /* 174*/
-    .long   DefaultISR                                      /* 175*/
-    .long   DefaultISR                                      /* 176*/
-    .long   DefaultISR                                      /* 177*/
-    .long   DefaultISR                                      /* 178*/
-    .long   DefaultISR                                      /* 179*/
-    .long   DefaultISR                                      /* 180*/
-    .long   DefaultISR                                      /* 181*/
-    .long   DefaultISR                                      /* 182*/
-    .long   DefaultISR                                      /* 183*/
-    .long   DefaultISR                                      /* 184*/
-    .long   DefaultISR                                      /* 185*/
-    .long   DefaultISR                                      /* 186*/
-    .long   DefaultISR                                      /* 187*/
-    .long   DefaultISR                                      /* 188*/
-    .long   DefaultISR                                      /* 189*/
-    .long   DefaultISR                                      /* 190*/
-    .long   DefaultISR                                      /* 191*/
-    .long   DefaultISR                                      /* 192*/
-    .long   DefaultISR                                      /* 193*/
-    .long   DefaultISR                                      /* 194*/
-    .long   DefaultISR                                      /* 195*/
-    .long   DefaultISR                                      /* 196*/
-    .long   DefaultISR                                      /* 197*/
-    .long   DefaultISR                                      /* 198*/
-    .long   DefaultISR                                      /* 199*/
-    .long   DefaultISR                                      /* 200*/
-    .long   DefaultISR                                      /* 201*/
-    .long   DefaultISR                                      /* 202*/
-    .long   DefaultISR                                      /* 203*/
-    .long   DefaultISR                                      /* 204*/
-    .long   DefaultISR                                      /* 205*/
-    .long   DefaultISR                                      /* 206*/
-    .long   DefaultISR                                      /* 207*/
-    .long   DefaultISR                                      /* 208*/
-    .long   DefaultISR                                      /* 209*/
-    .long   DefaultISR                                      /* 210*/
-    .long   DefaultISR                                      /* 211*/
-    .long   DefaultISR                                      /* 212*/
-    .long   DefaultISR                                      /* 213*/
-    .long   DefaultISR                                      /* 214*/
-    .long   DefaultISR                                      /* 215*/
-    .long   DefaultISR                                      /* 216*/
-    .long   DefaultISR                                      /* 217*/
-    .long   DefaultISR                                      /* 218*/
-    .long   DefaultISR                                      /* 219*/
-    .long   DefaultISR                                      /* 220*/
-    .long   DefaultISR                                      /* 221*/
-    .long   DefaultISR                                      /* 222*/
-    .long   DefaultISR                                      /* 223*/
-    .long   DefaultISR                                      /* 224*/
-    .long   DefaultISR                                      /* 225*/
-    .long   DefaultISR                                      /* 226*/
-    .long   DefaultISR                                      /* 227*/
-    .long   DefaultISR                                      /* 228*/
-    .long   DefaultISR                                      /* 229*/
-    .long   DefaultISR                                      /* 230*/
-    .long   DefaultISR                                      /* 231*/
-    .long   DefaultISR                                      /* 232*/
-    .long   DefaultISR                                      /* 233*/
-    .long   DefaultISR                                      /* 234*/
-    .long   DefaultISR                                      /* 235*/
-    .long   DefaultISR                                      /* 236*/
-    .long   DefaultISR                                      /* 237*/
-    .long   DefaultISR                                      /* 238*/
-    .long   DefaultISR                                      /* 239*/
-    .long   DefaultISR                                      /* 240*/
-    .long   DefaultISR                                      /* 241*/
-    .long   DefaultISR                                      /* 242*/
-    .long   DefaultISR                                      /* 243*/
-    .long   DefaultISR                                      /* 244*/
-    .long   DefaultISR                                      /* 245*/
-    .long   DefaultISR                                      /* 246*/
-    .long   DefaultISR                                      /* 247*/
-    .long   DefaultISR                                      /* 248*/
-    .long   DefaultISR                                      /* 249*/
-    .long   DefaultISR                                      /* 250*/
-    .long   DefaultISR                                      /* 251*/
-    .long   DefaultISR                                      /* 252*/
-    .long   DefaultISR                                      /* 253*/
-    .long   DefaultISR                                      /* 254*/
-    .long   0xFFFFFFFF                                      /*  Reserved for user TRIM value*/
-
-    .size    __isr_vector, . - __isr_vector
-
-/* Flash Configuration */
-    .section .FlashConfig, "a"
-    .long 0xFFFFFFFF
-    .long 0xFFFFFFFF
-    .long 0xFFFFFFFF
-    .long 0xFFFFFFFE
-
-    .text
-    .thumb
-
-/* Reset Handler */
-
-    .thumb_func
-    .align 2
-    .globl   Reset_Handler
-    .weak    Reset_Handler
-    .type    Reset_Handler, %function
-Reset_Handler:
-    cpsid   i               /* Mask interrupts */
-    .equ    VTOR, 0xE000ED08
-    ldr     r0, =VTOR
-    ldr     r1, =__isr_vector
-    str     r1, [r0]
-#ifndef __NO_SYSTEM_INIT
-    ldr   r0,=SystemInit
-    blx   r0
-#endif
-/*     Loop to copy data from read only memory to RAM. The ranges
- *      of copy from/to are specified by following symbols evaluated in
- *      linker script.
- *      __etext: End of code section, i.e., begin of data sections to copy from.
- *      __data_start__/__data_end__: RAM address range that data should be
- *      copied to. Both must be aligned to 4 bytes boundary.  */
-
-    ldr    r1, =__etext
-    ldr    r2, =__data_start__
-    ldr    r3, =__data_end__
-
-#if 1
-/* Here are two copies of loop implemenations. First one favors code size
- * and the second one favors performance. Default uses the first one.
- * Change to "#if 0" to use the second one */
-.LC0:
-    cmp     r2, r3
-    ittt    lt
-    ldrlt   r0, [r1], #4
-    strlt   r0, [r2], #4
-    blt    .LC0
-#else
-    subs    r3, r2
-    ble    .LC1
-.LC0:
-    subs    r3, #4
-    ldr    r0, [r1, r3]
-    str    r0, [r2, r3]
-    bgt    .LC0
-.LC1:
-#endif
-
-#ifdef __STARTUP_CLEAR_BSS
-/*     This part of work usually is done in C library startup code. Otherwise,
- *     define this macro to enable it in this startup.
- *
- *     Loop to zero out BSS section, which uses following symbols
- *     in linker script:
- *      __bss_start__: start of BSS section. Must align to 4
- *      __bss_end__: end of BSS section. Must align to 4
- */
-    ldr r1, =__bss_start__
-    ldr r2, =__bss_end__
-
-    movs    r0, 0
-.LC2:
-    cmp     r1, r2
-    itt    lt
-    strlt   r0, [r1], #4
-    blt    .LC2
-#endif /* __STARTUP_CLEAR_BSS */
-
-    cpsie   i               /* Unmask interrupts */
-#ifndef __START
-#define __START _start
-#endif
-#ifndef __ATOLLIC__
-    ldr   r0,=__START
-    blx   r0
-#else
-    ldr   r0,=__libc_init_array
-    blx   r0
-    ldr   r0,=main
-    bx    r0
-#endif
-    .pool
-    .size Reset_Handler, . - Reset_Handler
-
-    .align  1
-    .thumb_func
-    .weak DefaultISR
-    .type DefaultISR, %function
-DefaultISR:
-    b DefaultISR
-    .size DefaultISR, . - DefaultISR
-
-    .align 1
-    .thumb_func
-    .weak NMI_Handler
-    .type NMI_Handler, %function
-NMI_Handler:
-    ldr   r0,=NMI_Handler
-    bx    r0
-    .size NMI_Handler, . - NMI_Handler
-
-    .align 1
-    .thumb_func
-    .weak HardFault_Handler
-    .type HardFault_Handler, %function
-HardFault_Handler:
-    ldr   r0,=HardFault_Handler
-    bx    r0
-    .size HardFault_Handler, . - HardFault_Handler
-
-    .align 1
-    .thumb_func
-    .weak SVC_Handler
-    .type SVC_Handler, %function
-SVC_Handler:
-    ldr   r0,=SVC_Handler
-    bx    r0
-    .size SVC_Handler, . - SVC_Handler
-
-    .align 1
-    .thumb_func
-    .weak PendSV_Handler
-    .type PendSV_Handler, %function
-PendSV_Handler:
-    ldr   r0,=PendSV_Handler
-    bx    r0
-    .size PendSV_Handler, . - PendSV_Handler
-
-    .align 1
-    .thumb_func
-    .weak SysTick_Handler
-    .type SysTick_Handler, %function
-SysTick_Handler:
-    ldr   r0,=SysTick_Handler
-    bx    r0
-    .size SysTick_Handler, . - SysTick_Handler
-
-    .align 1
-    .thumb_func
-    .weak DMA0_IRQHandler
-    .type DMA0_IRQHandler, %function
-DMA0_IRQHandler:
-    ldr   r0,=DMA0_DriverIRQHandler
-    bx    r0
-    .size DMA0_IRQHandler, . - DMA0_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak DMA1_IRQHandler
-    .type DMA1_IRQHandler, %function
-DMA1_IRQHandler:
-    ldr   r0,=DMA1_DriverIRQHandler
-    bx    r0
-    .size DMA1_IRQHandler, . - DMA1_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak DMA2_IRQHandler
-    .type DMA2_IRQHandler, %function
-DMA2_IRQHandler:
-    ldr   r0,=DMA2_DriverIRQHandler
-    bx    r0
-    .size DMA2_IRQHandler, . - DMA2_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak DMA3_IRQHandler
-    .type DMA3_IRQHandler, %function
-DMA3_IRQHandler:
-    ldr   r0,=DMA3_DriverIRQHandler
-    bx    r0
-    .size DMA3_IRQHandler, . - DMA3_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak DMA4_IRQHandler
-    .type DMA4_IRQHandler, %function
-DMA4_IRQHandler:
-    ldr   r0,=DMA4_DriverIRQHandler
-    bx    r0
-    .size DMA4_IRQHandler, . - DMA4_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak DMA5_IRQHandler
-    .type DMA5_IRQHandler, %function
-DMA5_IRQHandler:
-    ldr   r0,=DMA5_DriverIRQHandler
-    bx    r0
-    .size DMA5_IRQHandler, . - DMA5_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak DMA6_IRQHandler
-    .type DMA6_IRQHandler, %function
-DMA6_IRQHandler:
-    ldr   r0,=DMA6_DriverIRQHandler
-    bx    r0
-    .size DMA6_IRQHandler, . - DMA6_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak DMA7_IRQHandler
-    .type DMA7_IRQHandler, %function
-DMA7_IRQHandler:
-    ldr   r0,=DMA7_DriverIRQHandler
-    bx    r0
-    .size DMA7_IRQHandler, . - DMA7_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak DMA8_IRQHandler
-    .type DMA8_IRQHandler, %function
-DMA8_IRQHandler:
-    ldr   r0,=DMA8_DriverIRQHandler
-    bx    r0
-    .size DMA8_IRQHandler, . - DMA8_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak DMA9_IRQHandler
-    .type DMA9_IRQHandler, %function
-DMA9_IRQHandler:
-    ldr   r0,=DMA9_DriverIRQHandler
-    bx    r0
-    .size DMA9_IRQHandler, . - DMA9_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak DMA10_IRQHandler
-    .type DMA10_IRQHandler, %function
-DMA10_IRQHandler:
-    ldr   r0,=DMA10_DriverIRQHandler
-    bx    r0
-    .size DMA10_IRQHandler, . - DMA10_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak DMA11_IRQHandler
-    .type DMA11_IRQHandler, %function
-DMA11_IRQHandler:
-    ldr   r0,=DMA11_DriverIRQHandler
-    bx    r0
-    .size DMA11_IRQHandler, . - DMA11_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak DMA12_IRQHandler
-    .type DMA12_IRQHandler, %function
-DMA12_IRQHandler:
-    ldr   r0,=DMA12_DriverIRQHandler
-    bx    r0
-    .size DMA12_IRQHandler, . - DMA12_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak DMA13_IRQHandler
-    .type DMA13_IRQHandler, %function
-DMA13_IRQHandler:
-    ldr   r0,=DMA13_DriverIRQHandler
-    bx    r0
-    .size DMA13_IRQHandler, . - DMA13_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak DMA14_IRQHandler
-    .type DMA14_IRQHandler, %function
-DMA14_IRQHandler:
-    ldr   r0,=DMA14_DriverIRQHandler
-    bx    r0
-    .size DMA14_IRQHandler, . - DMA14_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak DMA15_IRQHandler
-    .type DMA15_IRQHandler, %function
-DMA15_IRQHandler:
-    ldr   r0,=DMA15_DriverIRQHandler
-    bx    r0
-    .size DMA15_IRQHandler, . - DMA15_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak DMA_Error_IRQHandler
-    .type DMA_Error_IRQHandler, %function
-DMA_Error_IRQHandler:
-    ldr   r0,=DMA_Error_DriverIRQHandler
-    bx    r0
-    .size DMA_Error_IRQHandler, . - DMA_Error_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak I2C0_IRQHandler
-    .type I2C0_IRQHandler, %function
-I2C0_IRQHandler:
-    ldr   r0,=I2C0_DriverIRQHandler
-    bx    r0
-    .size I2C0_IRQHandler, . - I2C0_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak I2C1_IRQHandler
-    .type I2C1_IRQHandler, %function
-I2C1_IRQHandler:
-    ldr   r0,=I2C1_DriverIRQHandler
-    bx    r0
-    .size I2C1_IRQHandler, . - I2C1_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak SPI0_IRQHandler
-    .type SPI0_IRQHandler, %function
-SPI0_IRQHandler:
-    ldr   r0,=SPI0_DriverIRQHandler
-    bx    r0
-    .size SPI0_IRQHandler, . - SPI0_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak SPI1_IRQHandler
-    .type SPI1_IRQHandler, %function
-SPI1_IRQHandler:
-    ldr   r0,=SPI1_DriverIRQHandler
-    bx    r0
-    .size SPI1_IRQHandler, . - SPI1_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak I2S0_Tx_IRQHandler
-    .type I2S0_Tx_IRQHandler, %function
-I2S0_Tx_IRQHandler:
-    ldr   r0,=I2S0_Tx_DriverIRQHandler
-    bx    r0
-    .size I2S0_Tx_IRQHandler, . - I2S0_Tx_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak I2S0_Rx_IRQHandler
-    .type I2S0_Rx_IRQHandler, %function
-I2S0_Rx_IRQHandler:
-    ldr   r0,=I2S0_Rx_DriverIRQHandler
-    bx    r0
-    .size I2S0_Rx_IRQHandler, . - I2S0_Rx_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak UART0_LON_IRQHandler
-    .type UART0_LON_IRQHandler, %function
-UART0_LON_IRQHandler:
-    ldr   r0,=UART0_LON_DriverIRQHandler
-    bx    r0
-    .size UART0_LON_IRQHandler, . - UART0_LON_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak UART0_RX_TX_IRQHandler
-    .type UART0_RX_TX_IRQHandler, %function
-UART0_RX_TX_IRQHandler:
-    ldr   r0,=UART0_RX_TX_DriverIRQHandler
-    bx    r0
-    .size UART0_RX_TX_IRQHandler, . - UART0_RX_TX_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak UART0_ERR_IRQHandler
-    .type UART0_ERR_IRQHandler, %function
-UART0_ERR_IRQHandler:
-    ldr   r0,=UART0_ERR_DriverIRQHandler
-    bx    r0
-    .size UART0_ERR_IRQHandler, . - UART0_ERR_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak UART1_RX_TX_IRQHandler
-    .type UART1_RX_TX_IRQHandler, %function
-UART1_RX_TX_IRQHandler:
-    ldr   r0,=UART1_RX_TX_DriverIRQHandler
-    bx    r0
-    .size UART1_RX_TX_IRQHandler, . - UART1_RX_TX_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak UART1_ERR_IRQHandler
-    .type UART1_ERR_IRQHandler, %function
-UART1_ERR_IRQHandler:
-    ldr   r0,=UART1_ERR_DriverIRQHandler
-    bx    r0
-    .size UART1_ERR_IRQHandler, . - UART1_ERR_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak UART2_RX_TX_IRQHandler
-    .type UART2_RX_TX_IRQHandler, %function
-UART2_RX_TX_IRQHandler:
-    ldr   r0,=UART2_RX_TX_DriverIRQHandler
-    bx    r0
-    .size UART2_RX_TX_IRQHandler, . - UART2_RX_TX_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak UART2_ERR_IRQHandler
-    .type UART2_ERR_IRQHandler, %function
-UART2_ERR_IRQHandler:
-    ldr   r0,=UART2_ERR_DriverIRQHandler
-    bx    r0
-    .size UART2_ERR_IRQHandler, . - UART2_ERR_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak UART3_RX_TX_IRQHandler
-    .type UART3_RX_TX_IRQHandler, %function
-UART3_RX_TX_IRQHandler:
-    ldr   r0,=UART3_RX_TX_DriverIRQHandler
-    bx    r0
-    .size UART3_RX_TX_IRQHandler, . - UART3_RX_TX_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak UART3_ERR_IRQHandler
-    .type UART3_ERR_IRQHandler, %function
-UART3_ERR_IRQHandler:
-    ldr   r0,=UART3_ERR_DriverIRQHandler
-    bx    r0
-    .size UART3_ERR_IRQHandler, . - UART3_ERR_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak SPI2_IRQHandler
-    .type SPI2_IRQHandler, %function
-SPI2_IRQHandler:
-    ldr   r0,=SPI2_DriverIRQHandler
-    bx    r0
-    .size SPI2_IRQHandler, . - SPI2_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak UART4_RX_TX_IRQHandler
-    .type UART4_RX_TX_IRQHandler, %function
-UART4_RX_TX_IRQHandler:
-    ldr   r0,=UART4_RX_TX_DriverIRQHandler
-    bx    r0
-    .size UART4_RX_TX_IRQHandler, . - UART4_RX_TX_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak UART4_ERR_IRQHandler
-    .type UART4_ERR_IRQHandler, %function
-UART4_ERR_IRQHandler:
-    ldr   r0,=UART4_ERR_DriverIRQHandler
-    bx    r0
-    .size UART4_ERR_IRQHandler, . - UART4_ERR_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak UART5_RX_TX_IRQHandler
-    .type UART5_RX_TX_IRQHandler, %function
-UART5_RX_TX_IRQHandler:
-    ldr   r0,=UART5_RX_TX_DriverIRQHandler
-    bx    r0
-    .size UART5_RX_TX_IRQHandler, . - UART5_RX_TX_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak UART5_ERR_IRQHandler
-    .type UART5_ERR_IRQHandler, %function
-UART5_ERR_IRQHandler:
-    ldr   r0,=UART5_ERR_DriverIRQHandler
-    bx    r0
-    .size UART5_ERR_IRQHandler, . - UART5_ERR_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak I2C2_IRQHandler
-    .type I2C2_IRQHandler, %function
-I2C2_IRQHandler:
-    ldr   r0,=I2C2_DriverIRQHandler
-    bx    r0
-    .size I2C2_IRQHandler, . - I2C2_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak CAN0_ORed_Message_buffer_IRQHandler
-    .type CAN0_ORed_Message_buffer_IRQHandler, %function
-CAN0_ORed_Message_buffer_IRQHandler:
-    ldr   r0,=CAN0_DriverIRQHandler
-    bx    r0
-    .size CAN0_ORed_Message_buffer_IRQHandler, . - CAN0_ORed_Message_buffer_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak CAN0_Bus_Off_IRQHandler
-    .type CAN0_Bus_Off_IRQHandler, %function
-CAN0_Bus_Off_IRQHandler:
-    ldr   r0,=CAN0_DriverIRQHandler
-    bx    r0
-    .size CAN0_Bus_Off_IRQHandler, . - CAN0_Bus_Off_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak CAN0_Error_IRQHandler
-    .type CAN0_Error_IRQHandler, %function
-CAN0_Error_IRQHandler:
-    ldr   r0,=CAN0_DriverIRQHandler
-    bx    r0
-    .size CAN0_Error_IRQHandler, . - CAN0_Error_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak CAN0_Tx_Warning_IRQHandler
-    .type CAN0_Tx_Warning_IRQHandler, %function
-CAN0_Tx_Warning_IRQHandler:
-    ldr   r0,=CAN0_DriverIRQHandler
-    bx    r0
-    .size CAN0_Tx_Warning_IRQHandler, . - CAN0_Tx_Warning_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak CAN0_Rx_Warning_IRQHandler
-    .type CAN0_Rx_Warning_IRQHandler, %function
-CAN0_Rx_Warning_IRQHandler:
-    ldr   r0,=CAN0_DriverIRQHandler
-    bx    r0
-    .size CAN0_Rx_Warning_IRQHandler, . - CAN0_Rx_Warning_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak CAN0_Wake_Up_IRQHandler
-    .type CAN0_Wake_Up_IRQHandler, %function
-CAN0_Wake_Up_IRQHandler:
-    ldr   r0,=CAN0_DriverIRQHandler
-    bx    r0
-    .size CAN0_Wake_Up_IRQHandler, . - CAN0_Wake_Up_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak SDHC_IRQHandler
-    .type SDHC_IRQHandler, %function
-SDHC_IRQHandler:
-    ldr   r0,=SDHC_DriverIRQHandler
-    bx    r0
-    .size SDHC_IRQHandler, . - SDHC_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak ENET_1588_Timer_IRQHandler
-    .type ENET_1588_Timer_IRQHandler, %function
-ENET_1588_Timer_IRQHandler:
-    ldr   r0,=ENET_1588_Timer_DriverIRQHandler
-    bx    r0
-    .size ENET_1588_Timer_IRQHandler, . - ENET_1588_Timer_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak ENET_Transmit_IRQHandler
-    .type ENET_Transmit_IRQHandler, %function
-ENET_Transmit_IRQHandler:
-    ldr   r0,=ENET_Transmit_DriverIRQHandler
-    bx    r0
-    .size ENET_Transmit_IRQHandler, . - ENET_Transmit_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak ENET_Receive_IRQHandler
-    .type ENET_Receive_IRQHandler, %function
-ENET_Receive_IRQHandler:
-    ldr   r0,=ENET_Receive_DriverIRQHandler
-    bx    r0
-    .size ENET_Receive_IRQHandler, . - ENET_Receive_IRQHandler
-
-    .align 1
-    .thumb_func
-    .weak ENET_Error_IRQHandler
-    .type ENET_Error_IRQHandler, %function
-ENET_Error_IRQHandler:
-    ldr   r0,=ENET_Error_DriverIRQHandler
-    bx    r0
-    .size ENET_Error_IRQHandler, . - ENET_Error_IRQHandler
-
-
-/*    Macro to define default handlers. Default handler
- *    will be weak symbol and just dead loops. They can be
- *    overwritten by other handlers */
-    .macro def_irq_handler  handler_name
-    .weak \handler_name
-    .set  \handler_name, DefaultISR
-    .endm
-
-/* Exception Handlers */
-    def_irq_handler    MemManage_Handler
-    def_irq_handler    BusFault_Handler
-    def_irq_handler    UsageFault_Handler
-    def_irq_handler    DebugMon_Handler
-    def_irq_handler    DMA0_DriverIRQHandler
-    def_irq_handler    DMA1_DriverIRQHandler
-    def_irq_handler    DMA2_DriverIRQHandler
-    def_irq_handler    DMA3_DriverIRQHandler
-    def_irq_handler    DMA4_DriverIRQHandler
-    def_irq_handler    DMA5_DriverIRQHandler
-    def_irq_handler    DMA6_DriverIRQHandler
-    def_irq_handler    DMA7_DriverIRQHandler
-    def_irq_handler    DMA8_DriverIRQHandler
-    def_irq_handler    DMA9_DriverIRQHandler
-    def_irq_handler    DMA10_DriverIRQHandler
-    def_irq_handler    DMA11_DriverIRQHandler
-    def_irq_handler    DMA12_DriverIRQHandler
-    def_irq_handler    DMA13_DriverIRQHandler
-    def_irq_handler    DMA14_DriverIRQHandler
-    def_irq_handler    DMA15_DriverIRQHandler
-    def_irq_handler    DMA_Error_DriverIRQHandler
-    def_irq_handler    MCM_IRQHandler
-    def_irq_handler    FTFE_IRQHandler
-    def_irq_handler    Read_Collision_IRQHandler
-    def_irq_handler    LVD_LVW_IRQHandler
-    def_irq_handler    LLWU_IRQHandler
-    def_irq_handler    WDOG_EWM_IRQHandler
-    def_irq_handler    RNG_IRQHandler
-    def_irq_handler    I2C0_DriverIRQHandler
-    def_irq_handler    I2C1_DriverIRQHandler
-    def_irq_handler    SPI0_DriverIRQHandler
-    def_irq_handler    SPI1_DriverIRQHandler
-    def_irq_handler    I2S0_Tx_DriverIRQHandler
-    def_irq_handler    I2S0_Rx_DriverIRQHandler
-    def_irq_handler    UART0_LON_DriverIRQHandler
-    def_irq_handler    UART0_RX_TX_DriverIRQHandler
-    def_irq_handler    UART0_ERR_DriverIRQHandler
-    def_irq_handler    UART1_RX_TX_DriverIRQHandler
-    def_irq_handler    UART1_ERR_DriverIRQHandler
-    def_irq_handler    UART2_RX_TX_DriverIRQHandler
-    def_irq_handler    UART2_ERR_DriverIRQHandler
-    def_irq_handler    UART3_RX_TX_DriverIRQHandler
-    def_irq_handler    UART3_ERR_DriverIRQHandler
-    def_irq_handler    ADC0_IRQHandler
-    def_irq_handler    CMP0_IRQHandler
-    def_irq_handler    CMP1_IRQHandler
-    def_irq_handler    FTM0_IRQHandler
-    def_irq_handler    FTM1_IRQHandler
-    def_irq_handler    FTM2_IRQHandler
-    def_irq_handler    CMT_IRQHandler
-    def_irq_handler    RTC_IRQHandler
-    def_irq_handler    RTC_Seconds_IRQHandler
-    def_irq_handler    PIT0_IRQHandler
-    def_irq_handler    PIT1_IRQHandler
-    def_irq_handler    PIT2_IRQHandler
-    def_irq_handler    PIT3_IRQHandler
-    def_irq_handler    PDB0_IRQHandler
-    def_irq_handler    USB0_IRQHandler
-    def_irq_handler    USBDCD_IRQHandler
-    def_irq_handler    Reserved71_IRQHandler
-    def_irq_handler    DAC0_IRQHandler
-    def_irq_handler    MCG_IRQHandler
-    def_irq_handler    LPTMR0_IRQHandler
-    def_irq_handler    PORTA_IRQHandler
-    def_irq_handler    PORTB_IRQHandler
-    def_irq_handler    PORTC_IRQHandler
-    def_irq_handler    PORTD_IRQHandler
-    def_irq_handler    PORTE_IRQHandler
-    def_irq_handler    SWI_IRQHandler
-    def_irq_handler    SPI2_DriverIRQHandler
-    def_irq_handler    UART4_RX_TX_DriverIRQHandler
-    def_irq_handler    UART4_ERR_DriverIRQHandler
-    def_irq_handler    UART5_RX_TX_DriverIRQHandler
-    def_irq_handler    UART5_ERR_DriverIRQHandler
-    def_irq_handler    CMP2_IRQHandler
-    def_irq_handler    FTM3_IRQHandler
-    def_irq_handler    DAC1_IRQHandler
-    def_irq_handler    ADC1_IRQHandler
-    def_irq_handler    I2C2_DriverIRQHandler
-    def_irq_handler    CAN0_DriverIRQHandler
-    def_irq_handler    SDHC_DriverIRQHandler
-    def_irq_handler    ENET_1588_Timer_DriverIRQHandler
-    def_irq_handler    ENET_Transmit_DriverIRQHandler
-    def_irq_handler    ENET_Receive_DriverIRQHandler
-    def_irq_handler    ENET_Error_DriverIRQHandler
-
-    .end
--- a/targets/cmsis/TARGET_Freescale/TARGET_K64F/TOOLCHAIN_IAR/MK64FN1M0xxx12.icf	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-/*
-** ###################################################################
-**     Processors:          MK64FN1M0VDC12
-**                          MK64FN1M0VLL12
-**                          MK64FN1M0VLQ12
-**                          MK64FN1M0VMD12
-**
-**     Compiler:            IAR ANSI C/C++ Compiler for ARM
-**     Reference manual:    K64P144M120SF5RM, Rev.2, January 2014
-**     Version:             rev. 2.8, 2015-02-19
-**     Build:               b151009
-**
-**     Abstract:
-**         Linker file for the IAR ANSI C/C++ Compiler for ARM
-**
-**     Copyright (c) 2015 Freescale Semiconductor, Inc.
-**     All rights reserved.
-**
-**     Redistribution and use in source and binary forms, with or without modification,
-**     are permitted provided that the following conditions are met:
-**
-**     o Redistributions of source code must retain the above copyright notice, this list
-**       of conditions and the following disclaimer.
-**
-**     o Redistributions in binary form must reproduce the above copyright notice, this
-**       list of conditions and the following disclaimer in the documentation and/or
-**       other materials provided with the distribution.
-**
-**     o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-**       contributors may be used to endorse or promote products derived from this
-**       software without specific prior written permission.
-**
-**     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-**     ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-**     WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-**     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-**     ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-**     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-**     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-**     ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-**     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-**     SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-**     http:                 www.freescale.com
-**     mail:                 support@freescale.com
-**
-** ###################################################################
-*/
-define symbol __ram_vector_table__ = 1;
-
-/* Heap 1/4 of ram and stack 1/8 */
-define symbol __stack_size__=0x8000;
-define symbol __heap_size__=0x10000;
-
-define symbol __ram_vector_table_size__ =  isdefinedsymbol(__ram_vector_table__) ? 0x00000400 : 0;
-define symbol __ram_vector_table_offset__ =  isdefinedsymbol(__ram_vector_table__) ? 0x000003FF : 0;
-
-define symbol m_interrupts_start       = 0x00000000;
-define symbol m_interrupts_end         = 0x000003FF;
-
-define symbol m_flash_config_start     = 0x00000400;
-define symbol m_flash_config_end       = 0x0000040F;
-
-define symbol m_text_start             = 0x00000410;
-define symbol m_text_end               = 0x000FFFFF;
-
-define symbol m_interrupts_ram_start   = 0x1FFF0000;
-define symbol m_interrupts_ram_end     = 0x1FFF0000 + __ram_vector_table_offset__;
-
-define symbol m_data_start             = m_interrupts_ram_start + __ram_vector_table_size__;
-define symbol m_data_end               = 0x1FFFFFFF;
-
-define symbol m_data_2_start           = 0x20000000;
-define symbol m_data_2_end             = 0x2002FFFF;
-
-/* Sizes */
-if (isdefinedsymbol(__stack_size__)) {
-  define symbol __size_cstack__        = __stack_size__;
-} else {
-  define symbol __size_cstack__        = 0x0400;
-}
-
-if (isdefinedsymbol(__heap_size__)) {
-  define symbol __size_heap__          = __heap_size__;
-} else {
-  define symbol __size_heap__          = 0x0400;
-}
-
-define exported symbol __VECTOR_TABLE  = m_interrupts_start;
-define exported symbol __VECTOR_RAM    = isdefinedsymbol(__ram_vector_table__) ? m_interrupts_ram_start : m_interrupts_start;
-define exported symbol __RAM_VECTOR_TABLE_SIZE = __ram_vector_table_size__;
-
-define memory mem with size = 4G;
-define region m_flash_config_region = mem:[from m_flash_config_start to m_flash_config_end];
-define region TEXT_region = mem:[from m_interrupts_start to m_interrupts_end]
-                          | mem:[from m_text_start to m_text_end];
-define region DATA_region = mem:[from m_data_start to m_data_end]
-                          | mem:[from m_data_2_start to m_data_2_end-__size_cstack__];
-define region CSTACK_region = mem:[from m_data_2_end-__size_cstack__+1 to m_data_2_end];
-define region m_interrupts_ram_region = mem:[from m_interrupts_ram_start to m_interrupts_ram_end];
-
-define block CSTACK    with alignment = 8, size = __size_cstack__   { };
-define block HEAP      with alignment = 8, size = __size_heap__     { };
-define block RW        { readwrite };
-define block ZI        { zi };
-
-initialize by copy { readwrite, section .textrw };
-do not initialize  { section .noinit };
-
-place at address mem: m_interrupts_start    { readonly section .intvec };
-place in m_flash_config_region              { section FlashConfig };
-place in TEXT_region                        { readonly };
-place in DATA_region                        { block RW };
-place in DATA_region                        { block ZI };
-place in DATA_region                        { last block HEAP };
-place in CSTACK_region                      { block CSTACK };
-place in m_interrupts_ram_region            { section m_interrupts_ram };
-
--- a/targets/cmsis/TARGET_Freescale/TARGET_K64F/TOOLCHAIN_IAR/startup_MK64F12.S	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,870 +0,0 @@
-; ---------------------------------------------------------------------------------------
-;  @file:    startup_MK64F12.s
-;  @purpose: CMSIS Cortex-M4 Core Device Startup File
-;            MK64F12
-;  @version: 2.8
-;  @date:    2015-2-19
-;  @build:   b151210
-; ---------------------------------------------------------------------------------------
-;
-; Copyright (c) 1997 - 2015 , Freescale Semiconductor, Inc.
-; All rights reserved.
-;
-; Redistribution and use in source and binary forms, with or without modification,
-; are permitted provided that the following conditions are met:
-;
-; o Redistributions of source code must retain the above copyright notice, this list
-;   of conditions and the following disclaimer.
-;
-; o Redistributions in binary form must reproduce the above copyright notice, this
-;   list of conditions and the following disclaimer in the documentation and/or
-;   other materials provided with the distribution.
-;
-; o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-;   contributors may be used to endorse or promote products derived from this
-;   software without specific prior written permission.
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-; ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-; ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-;
-; The modules in this file are included in the libraries, and may be replaced
-; by any user-defined modules that define the PUBLIC symbol _program_start or
-; a user defined start symbol.
-; To override the cstartup defined in the library, simply add your modified
-; version to the workbench project.
-;
-; The vector table is normally located at address 0.
-; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
-; The name "__vector_table" has special meaning for C-SPY:
-; it is where the SP start value is found, and the NVIC vector
-; table register (VTOR) is initialized to this address if != 0.
-;
-; Cortex-M version
-;
-
-        MODULE  ?cstartup
-
-        ;; Forward declaration of sections.
-        SECTION CSTACK:DATA:NOROOT(3)
-
-        SECTION .intvec:CODE:NOROOT(2)
-
-        EXTERN  __iar_program_start
-        EXTERN  SystemInit
-        PUBLIC  __vector_table
-        PUBLIC  __vector_table_0x1c
-        PUBLIC  __Vectors
-        PUBLIC  __Vectors_End
-        PUBLIC  __Vectors_Size
-
-        DATA
-
-__vector_table
-        DCD     sfe(CSTACK)
-        DCD     Reset_Handler
-
-        DCD     NMI_Handler                                   ;NMI Handler
-        DCD     HardFault_Handler                             ;Hard Fault Handler
-        DCD     MemManage_Handler                             ;MPU Fault Handler
-        DCD     BusFault_Handler                              ;Bus Fault Handler
-        DCD     UsageFault_Handler                            ;Usage Fault Handler
-__vector_table_0x1c
-        DCD     0                                             ;Reserved
-        DCD     0                                             ;Reserved
-        DCD     0                                             ;Reserved
-        DCD     0                                             ;Reserved
-        DCD     SVC_Handler                                   ;SVCall Handler
-        DCD     DebugMon_Handler                              ;Debug Monitor Handler
-        DCD     0                                             ;Reserved
-        DCD     PendSV_Handler                                ;PendSV Handler
-        DCD     SysTick_Handler                               ;SysTick Handler
-
-                                                              ;External Interrupts
-        DCD     DMA0_IRQHandler                               ;DMA Channel 0 Transfer Complete
-        DCD     DMA1_IRQHandler                               ;DMA Channel 1 Transfer Complete
-        DCD     DMA2_IRQHandler                               ;DMA Channel 2 Transfer Complete
-        DCD     DMA3_IRQHandler                               ;DMA Channel 3 Transfer Complete
-        DCD     DMA4_IRQHandler                               ;DMA Channel 4 Transfer Complete
-        DCD     DMA5_IRQHandler                               ;DMA Channel 5 Transfer Complete
-        DCD     DMA6_IRQHandler                               ;DMA Channel 6 Transfer Complete
-        DCD     DMA7_IRQHandler                               ;DMA Channel 7 Transfer Complete
-        DCD     DMA8_IRQHandler                               ;DMA Channel 8 Transfer Complete
-        DCD     DMA9_IRQHandler                               ;DMA Channel 9 Transfer Complete
-        DCD     DMA10_IRQHandler                              ;DMA Channel 10 Transfer Complete
-        DCD     DMA11_IRQHandler                              ;DMA Channel 11 Transfer Complete
-        DCD     DMA12_IRQHandler                              ;DMA Channel 12 Transfer Complete
-        DCD     DMA13_IRQHandler                              ;DMA Channel 13 Transfer Complete
-        DCD     DMA14_IRQHandler                              ;DMA Channel 14 Transfer Complete
-        DCD     DMA15_IRQHandler                              ;DMA Channel 15 Transfer Complete
-        DCD     DMA_Error_IRQHandler                          ;DMA Error Interrupt
-        DCD     MCM_IRQHandler                                ;Normal Interrupt
-        DCD     FTFE_IRQHandler                               ;FTFE Command complete interrupt
-        DCD     Read_Collision_IRQHandler                     ;Read Collision Interrupt
-        DCD     LVD_LVW_IRQHandler                            ;Low Voltage Detect, Low Voltage Warning
-        DCD     LLWU_IRQHandler                               ;Low Leakage Wakeup Unit
-        DCD     WDOG_EWM_IRQHandler                           ;WDOG Interrupt
-        DCD     RNG_IRQHandler                                ;RNG Interrupt
-        DCD     I2C0_IRQHandler                               ;I2C0 interrupt
-        DCD     I2C1_IRQHandler                               ;I2C1 interrupt
-        DCD     SPI0_IRQHandler                               ;SPI0 Interrupt
-        DCD     SPI1_IRQHandler                               ;SPI1 Interrupt
-        DCD     I2S0_Tx_IRQHandler                            ;I2S0 transmit interrupt
-        DCD     I2S0_Rx_IRQHandler                            ;I2S0 receive interrupt
-        DCD     UART0_LON_IRQHandler                          ;UART0 LON interrupt
-        DCD     UART0_RX_TX_IRQHandler                        ;UART0 Receive/Transmit interrupt
-        DCD     UART0_ERR_IRQHandler                          ;UART0 Error interrupt
-        DCD     UART1_RX_TX_IRQHandler                        ;UART1 Receive/Transmit interrupt
-        DCD     UART1_ERR_IRQHandler                          ;UART1 Error interrupt
-        DCD     UART2_RX_TX_IRQHandler                        ;UART2 Receive/Transmit interrupt
-        DCD     UART2_ERR_IRQHandler                          ;UART2 Error interrupt
-        DCD     UART3_RX_TX_IRQHandler                        ;UART3 Receive/Transmit interrupt
-        DCD     UART3_ERR_IRQHandler                          ;UART3 Error interrupt
-        DCD     ADC0_IRQHandler                               ;ADC0 interrupt
-        DCD     CMP0_IRQHandler                               ;CMP0 interrupt
-        DCD     CMP1_IRQHandler                               ;CMP1 interrupt
-        DCD     FTM0_IRQHandler                               ;FTM0 fault, overflow and channels interrupt
-        DCD     FTM1_IRQHandler                               ;FTM1 fault, overflow and channels interrupt
-        DCD     FTM2_IRQHandler                               ;FTM2 fault, overflow and channels interrupt
-        DCD     CMT_IRQHandler                                ;CMT interrupt
-        DCD     RTC_IRQHandler                                ;RTC interrupt
-        DCD     RTC_Seconds_IRQHandler                        ;RTC seconds interrupt
-        DCD     PIT0_IRQHandler                               ;PIT timer channel 0 interrupt
-        DCD     PIT1_IRQHandler                               ;PIT timer channel 1 interrupt
-        DCD     PIT2_IRQHandler                               ;PIT timer channel 2 interrupt
-        DCD     PIT3_IRQHandler                               ;PIT timer channel 3 interrupt
-        DCD     PDB0_IRQHandler                               ;PDB0 Interrupt
-        DCD     USB0_IRQHandler                               ;USB0 interrupt
-        DCD     USBDCD_IRQHandler                             ;USBDCD Interrupt
-        DCD     Reserved71_IRQHandler                         ;Reserved interrupt 71
-        DCD     DAC0_IRQHandler                               ;DAC0 interrupt
-        DCD     MCG_IRQHandler                                ;MCG Interrupt
-        DCD     LPTMR0_IRQHandler                             ;LPTimer interrupt
-        DCD     PORTA_IRQHandler                              ;Port A interrupt
-        DCD     PORTB_IRQHandler                              ;Port B interrupt
-        DCD     PORTC_IRQHandler                              ;Port C interrupt
-        DCD     PORTD_IRQHandler                              ;Port D interrupt
-        DCD     PORTE_IRQHandler                              ;Port E interrupt
-        DCD     SWI_IRQHandler                                ;Software interrupt
-        DCD     SPI2_IRQHandler                               ;SPI2 Interrupt
-        DCD     UART4_RX_TX_IRQHandler                        ;UART4 Receive/Transmit interrupt
-        DCD     UART4_ERR_IRQHandler                          ;UART4 Error interrupt
-        DCD     UART5_RX_TX_IRQHandler                        ;UART5 Receive/Transmit interrupt
-        DCD     UART5_ERR_IRQHandler                          ;UART5 Error interrupt
-        DCD     CMP2_IRQHandler                               ;CMP2 interrupt
-        DCD     FTM3_IRQHandler                               ;FTM3 fault, overflow and channels interrupt
-        DCD     DAC1_IRQHandler                               ;DAC1 interrupt
-        DCD     ADC1_IRQHandler                               ;ADC1 interrupt
-        DCD     I2C2_IRQHandler                               ;I2C2 interrupt
-        DCD     CAN0_ORed_Message_buffer_IRQHandler           ;CAN0 OR'd message buffers interrupt
-        DCD     CAN0_Bus_Off_IRQHandler                       ;CAN0 bus off interrupt
-        DCD     CAN0_Error_IRQHandler                         ;CAN0 error interrupt
-        DCD     CAN0_Tx_Warning_IRQHandler                    ;CAN0 Tx warning interrupt
-        DCD     CAN0_Rx_Warning_IRQHandler                    ;CAN0 Rx warning interrupt
-        DCD     CAN0_Wake_Up_IRQHandler                       ;CAN0 wake up interrupt
-        DCD     SDHC_IRQHandler                               ;SDHC interrupt
-        DCD     ENET_1588_Timer_IRQHandler                    ;Ethernet MAC IEEE 1588 Timer Interrupt
-        DCD     ENET_Transmit_IRQHandler                      ;Ethernet MAC Transmit Interrupt
-        DCD     ENET_Receive_IRQHandler                       ;Ethernet MAC Receive Interrupt
-        DCD     ENET_Error_IRQHandler                         ;Ethernet MAC Error and miscelaneous Interrupt
-        DCD     DefaultISR                                    ;102
-        DCD     DefaultISR                                    ;103
-        DCD     DefaultISR                                    ;104
-        DCD     DefaultISR                                    ;105
-        DCD     DefaultISR                                    ;106
-        DCD     DefaultISR                                    ;107
-        DCD     DefaultISR                                    ;108
-        DCD     DefaultISR                                    ;109
-        DCD     DefaultISR                                    ;110
-        DCD     DefaultISR                                    ;111
-        DCD     DefaultISR                                    ;112
-        DCD     DefaultISR                                    ;113
-        DCD     DefaultISR                                    ;114
-        DCD     DefaultISR                                    ;115
-        DCD     DefaultISR                                    ;116
-        DCD     DefaultISR                                    ;117
-        DCD     DefaultISR                                    ;118
-        DCD     DefaultISR                                    ;119
-        DCD     DefaultISR                                    ;120
-        DCD     DefaultISR                                    ;121
-        DCD     DefaultISR                                    ;122
-        DCD     DefaultISR                                    ;123
-        DCD     DefaultISR                                    ;124
-        DCD     DefaultISR                                    ;125
-        DCD     DefaultISR                                    ;126
-        DCD     DefaultISR                                    ;127
-        DCD     DefaultISR                                    ;128
-        DCD     DefaultISR                                    ;129
-        DCD     DefaultISR                                    ;130
-        DCD     DefaultISR                                    ;131
-        DCD     DefaultISR                                    ;132
-        DCD     DefaultISR                                    ;133
-        DCD     DefaultISR                                    ;134
-        DCD     DefaultISR                                    ;135
-        DCD     DefaultISR                                    ;136
-        DCD     DefaultISR                                    ;137
-        DCD     DefaultISR                                    ;138
-        DCD     DefaultISR                                    ;139
-        DCD     DefaultISR                                    ;140
-        DCD     DefaultISR                                    ;141
-        DCD     DefaultISR                                    ;142
-        DCD     DefaultISR                                    ;143
-        DCD     DefaultISR                                    ;144
-        DCD     DefaultISR                                    ;145
-        DCD     DefaultISR                                    ;146
-        DCD     DefaultISR                                    ;147
-        DCD     DefaultISR                                    ;148
-        DCD     DefaultISR                                    ;149
-        DCD     DefaultISR                                    ;150
-        DCD     DefaultISR                                    ;151
-        DCD     DefaultISR                                    ;152
-        DCD     DefaultISR                                    ;153
-        DCD     DefaultISR                                    ;154
-        DCD     DefaultISR                                    ;155
-        DCD     DefaultISR                                    ;156
-        DCD     DefaultISR                                    ;157
-        DCD     DefaultISR                                    ;158
-        DCD     DefaultISR                                    ;159
-        DCD     DefaultISR                                    ;160
-        DCD     DefaultISR                                    ;161
-        DCD     DefaultISR                                    ;162
-        DCD     DefaultISR                                    ;163
-        DCD     DefaultISR                                    ;164
-        DCD     DefaultISR                                    ;165
-        DCD     DefaultISR                                    ;166
-        DCD     DefaultISR                                    ;167
-        DCD     DefaultISR                                    ;168
-        DCD     DefaultISR                                    ;169
-        DCD     DefaultISR                                    ;170
-        DCD     DefaultISR                                    ;171
-        DCD     DefaultISR                                    ;172
-        DCD     DefaultISR                                    ;173
-        DCD     DefaultISR                                    ;174
-        DCD     DefaultISR                                    ;175
-        DCD     DefaultISR                                    ;176
-        DCD     DefaultISR                                    ;177
-        DCD     DefaultISR                                    ;178
-        DCD     DefaultISR                                    ;179
-        DCD     DefaultISR                                    ;180
-        DCD     DefaultISR                                    ;181
-        DCD     DefaultISR                                    ;182
-        DCD     DefaultISR                                    ;183
-        DCD     DefaultISR                                    ;184
-        DCD     DefaultISR                                    ;185
-        DCD     DefaultISR                                    ;186
-        DCD     DefaultISR                                    ;187
-        DCD     DefaultISR                                    ;188
-        DCD     DefaultISR                                    ;189
-        DCD     DefaultISR                                    ;190
-        DCD     DefaultISR                                    ;191
-        DCD     DefaultISR                                    ;192
-        DCD     DefaultISR                                    ;193
-        DCD     DefaultISR                                    ;194
-        DCD     DefaultISR                                    ;195
-        DCD     DefaultISR                                    ;196
-        DCD     DefaultISR                                    ;197
-        DCD     DefaultISR                                    ;198
-        DCD     DefaultISR                                    ;199
-        DCD     DefaultISR                                    ;200
-        DCD     DefaultISR                                    ;201
-        DCD     DefaultISR                                    ;202
-        DCD     DefaultISR                                    ;203
-        DCD     DefaultISR                                    ;204
-        DCD     DefaultISR                                    ;205
-        DCD     DefaultISR                                    ;206
-        DCD     DefaultISR                                    ;207
-        DCD     DefaultISR                                    ;208
-        DCD     DefaultISR                                    ;209
-        DCD     DefaultISR                                    ;210
-        DCD     DefaultISR                                    ;211
-        DCD     DefaultISR                                    ;212
-        DCD     DefaultISR                                    ;213
-        DCD     DefaultISR                                    ;214
-        DCD     DefaultISR                                    ;215
-        DCD     DefaultISR                                    ;216
-        DCD     DefaultISR                                    ;217
-        DCD     DefaultISR                                    ;218
-        DCD     DefaultISR                                    ;219
-        DCD     DefaultISR                                    ;220
-        DCD     DefaultISR                                    ;221
-        DCD     DefaultISR                                    ;222
-        DCD     DefaultISR                                    ;223
-        DCD     DefaultISR                                    ;224
-        DCD     DefaultISR                                    ;225
-        DCD     DefaultISR                                    ;226
-        DCD     DefaultISR                                    ;227
-        DCD     DefaultISR                                    ;228
-        DCD     DefaultISR                                    ;229
-        DCD     DefaultISR                                    ;230
-        DCD     DefaultISR                                    ;231
-        DCD     DefaultISR                                    ;232
-        DCD     DefaultISR                                    ;233
-        DCD     DefaultISR                                    ;234
-        DCD     DefaultISR                                    ;235
-        DCD     DefaultISR                                    ;236
-        DCD     DefaultISR                                    ;237
-        DCD     DefaultISR                                    ;238
-        DCD     DefaultISR                                    ;239
-        DCD     DefaultISR                                    ;240
-        DCD     DefaultISR                                    ;241
-        DCD     DefaultISR                                    ;242
-        DCD     DefaultISR                                    ;243
-        DCD     DefaultISR                                    ;244
-        DCD     DefaultISR                                    ;245
-        DCD     DefaultISR                                    ;246
-        DCD     DefaultISR                                    ;247
-        DCD     DefaultISR                                    ;248
-        DCD     DefaultISR                                    ;249
-        DCD     DefaultISR                                    ;250
-        DCD     DefaultISR                                    ;251
-        DCD     DefaultISR                                    ;252
-        DCD     DefaultISR                                    ;253
-        DCD     DefaultISR                                    ;254
-        DCD     0xFFFFFFFF                                    ; Reserved for user TRIM value
-__Vectors_End
-
-        SECTION FlashConfig:CODE
-__FlashConfig
-        DCD 0xFFFFFFFF
-        DCD 0xFFFFFFFF
-        DCD 0xFFFFFFFF
-        DCD 0xFFFFFFFE
-__FlashConfig_End
-
-__Vectors       EQU   __vector_table
-__Vectors_Size  EQU   __Vectors_End - __Vectors
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Default interrupt handlers.
-;;
-        THUMB
-
-        PUBWEAK Reset_Handler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-Reset_Handler
-        CPSID   I               ; Mask interrupts
-        LDR     R0, =0xE000ED08
-        LDR     R1, =__vector_table
-        STR     R1, [R0]
-        LDR     R0, =SystemInit
-        BLX     R0
-        CPSIE   I               ; Unmask interrupts
-        LDR     R0, =__iar_program_start
-        BX      R0
-
-        PUBWEAK NMI_Handler
-        SECTION .text:CODE:REORDER:NOROOT(1)
-NMI_Handler
-        B .
-
-        PUBWEAK HardFault_Handler
-        SECTION .text:CODE:REORDER:NOROOT(1)
-HardFault_Handler
-        B .
-
-        PUBWEAK MemManage_Handler
-        SECTION .text:CODE:REORDER:NOROOT(1)
-MemManage_Handler
-        B .
-
-        PUBWEAK BusFault_Handler
-        SECTION .text:CODE:REORDER:NOROOT(1)
-BusFault_Handler
-        B .
-
-        PUBWEAK UsageFault_Handler
-        SECTION .text:CODE:REORDER:NOROOT(1)
-UsageFault_Handler
-        B .
-
-        PUBWEAK SVC_Handler
-        SECTION .text:CODE:REORDER:NOROOT(1)
-SVC_Handler
-        B .
-
-        PUBWEAK DebugMon_Handler
-        SECTION .text:CODE:REORDER:NOROOT(1)
-DebugMon_Handler
-        B .
-
-        PUBWEAK PendSV_Handler
-        SECTION .text:CODE:REORDER:NOROOT(1)
-PendSV_Handler
-        B .
-
-        PUBWEAK SysTick_Handler
-        SECTION .text:CODE:REORDER:NOROOT(1)
-SysTick_Handler
-        B .
-
-        PUBWEAK DMA0_IRQHandler
-        PUBWEAK DMA0_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-DMA0_IRQHandler
-        LDR     R0, =DMA0_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK DMA1_IRQHandler
-        PUBWEAK DMA1_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-DMA1_IRQHandler
-        LDR     R0, =DMA1_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK DMA2_IRQHandler
-        PUBWEAK DMA2_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-DMA2_IRQHandler
-        LDR     R0, =DMA2_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK DMA3_IRQHandler
-        PUBWEAK DMA3_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-DMA3_IRQHandler
-        LDR     R0, =DMA3_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK DMA4_IRQHandler
-        PUBWEAK DMA4_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-DMA4_IRQHandler
-        LDR     R0, =DMA4_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK DMA5_IRQHandler
-        PUBWEAK DMA5_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-DMA5_IRQHandler
-        LDR     R0, =DMA5_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK DMA6_IRQHandler
-        PUBWEAK DMA6_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-DMA6_IRQHandler
-        LDR     R0, =DMA6_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK DMA7_IRQHandler
-        PUBWEAK DMA7_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-DMA7_IRQHandler
-        LDR     R0, =DMA7_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK DMA8_IRQHandler
-        PUBWEAK DMA8_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-DMA8_IRQHandler
-        LDR     R0, =DMA8_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK DMA9_IRQHandler
-        PUBWEAK DMA9_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-DMA9_IRQHandler
-        LDR     R0, =DMA9_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK DMA10_IRQHandler
-        PUBWEAK DMA10_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-DMA10_IRQHandler
-        LDR     R0, =DMA10_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK DMA11_IRQHandler
-        PUBWEAK DMA11_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-DMA11_IRQHandler
-        LDR     R0, =DMA11_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK DMA12_IRQHandler
-        PUBWEAK DMA12_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-DMA12_IRQHandler
-        LDR     R0, =DMA12_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK DMA13_IRQHandler
-        PUBWEAK DMA13_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-DMA13_IRQHandler
-        LDR     R0, =DMA13_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK DMA14_IRQHandler
-        PUBWEAK DMA14_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-DMA14_IRQHandler
-        LDR     R0, =DMA14_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK DMA15_IRQHandler
-        PUBWEAK DMA15_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-DMA15_IRQHandler
-        LDR     R0, =DMA15_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK DMA_Error_IRQHandler
-        PUBWEAK DMA_Error_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-DMA_Error_IRQHandler
-        LDR     R0, =DMA_Error_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK MCM_IRQHandler
-        PUBWEAK FTFE_IRQHandler
-        PUBWEAK Read_Collision_IRQHandler
-        PUBWEAK LVD_LVW_IRQHandler
-        PUBWEAK LLWU_IRQHandler
-        PUBWEAK WDOG_EWM_IRQHandler
-        PUBWEAK RNG_IRQHandler
-        PUBWEAK I2C0_IRQHandler
-        PUBWEAK I2C0_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-I2C0_IRQHandler
-        LDR     R0, =I2C0_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK I2C1_IRQHandler
-        PUBWEAK I2C1_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-I2C1_IRQHandler
-        LDR     R0, =I2C1_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK SPI0_IRQHandler
-        PUBWEAK SPI0_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-SPI0_IRQHandler
-        LDR     R0, =SPI0_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK SPI1_IRQHandler
-        PUBWEAK SPI1_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-SPI1_IRQHandler
-        LDR     R0, =SPI1_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK I2S0_Tx_IRQHandler
-        PUBWEAK I2S0_Tx_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-I2S0_Tx_IRQHandler
-        LDR     R0, =I2S0_Tx_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK I2S0_Rx_IRQHandler
-        PUBWEAK I2S0_Rx_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-I2S0_Rx_IRQHandler
-        LDR     R0, =I2S0_Rx_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK UART0_LON_IRQHandler
-        PUBWEAK UART0_LON_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-UART0_LON_IRQHandler
-        LDR     R0, =UART0_LON_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK UART0_RX_TX_IRQHandler
-        PUBWEAK UART0_RX_TX_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-UART0_RX_TX_IRQHandler
-        LDR     R0, =UART0_RX_TX_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK UART0_ERR_IRQHandler
-        PUBWEAK UART0_ERR_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-UART0_ERR_IRQHandler
-        LDR     R0, =UART0_ERR_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK UART1_RX_TX_IRQHandler
-        PUBWEAK UART1_RX_TX_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-UART1_RX_TX_IRQHandler
-        LDR     R0, =UART1_RX_TX_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK UART1_ERR_IRQHandler
-        PUBWEAK UART1_ERR_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-UART1_ERR_IRQHandler
-        LDR     R0, =UART1_ERR_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK UART2_RX_TX_IRQHandler
-        PUBWEAK UART2_RX_TX_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-UART2_RX_TX_IRQHandler
-        LDR     R0, =UART2_RX_TX_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK UART2_ERR_IRQHandler
-        PUBWEAK UART2_ERR_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-UART2_ERR_IRQHandler
-        LDR     R0, =UART2_ERR_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK UART3_RX_TX_IRQHandler
-        PUBWEAK UART3_RX_TX_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-UART3_RX_TX_IRQHandler
-        LDR     R0, =UART3_RX_TX_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK UART3_ERR_IRQHandler
-        PUBWEAK UART3_ERR_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-UART3_ERR_IRQHandler
-        LDR     R0, =UART3_ERR_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK ADC0_IRQHandler
-        PUBWEAK CMP0_IRQHandler
-        PUBWEAK CMP1_IRQHandler
-        PUBWEAK FTM0_IRQHandler
-        PUBWEAK FTM1_IRQHandler
-        PUBWEAK FTM2_IRQHandler
-        PUBWEAK CMT_IRQHandler
-        PUBWEAK RTC_IRQHandler
-        PUBWEAK RTC_Seconds_IRQHandler
-        PUBWEAK PIT0_IRQHandler
-        PUBWEAK PIT1_IRQHandler
-        PUBWEAK PIT2_IRQHandler
-        PUBWEAK PIT3_IRQHandler
-        PUBWEAK PDB0_IRQHandler
-        PUBWEAK USB0_IRQHandler
-        PUBWEAK USBDCD_IRQHandler
-        PUBWEAK Reserved71_IRQHandler
-        PUBWEAK DAC0_IRQHandler
-        PUBWEAK MCG_IRQHandler
-        PUBWEAK LPTMR0_IRQHandler
-        PUBWEAK PORTA_IRQHandler
-        PUBWEAK PORTB_IRQHandler
-        PUBWEAK PORTC_IRQHandler
-        PUBWEAK PORTD_IRQHandler
-        PUBWEAK PORTE_IRQHandler
-        PUBWEAK SWI_IRQHandler
-        PUBWEAK SPI2_IRQHandler
-        PUBWEAK SPI2_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-SPI2_IRQHandler
-        LDR     R0, =SPI2_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK UART4_RX_TX_IRQHandler
-        PUBWEAK UART4_RX_TX_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-UART4_RX_TX_IRQHandler
-        LDR     R0, =UART4_RX_TX_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK UART4_ERR_IRQHandler
-        PUBWEAK UART4_ERR_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-UART4_ERR_IRQHandler
-        LDR     R0, =UART4_ERR_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK UART5_RX_TX_IRQHandler
-        PUBWEAK UART5_RX_TX_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-UART5_RX_TX_IRQHandler
-        LDR     R0, =UART5_RX_TX_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK UART5_ERR_IRQHandler
-        PUBWEAK UART5_ERR_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-UART5_ERR_IRQHandler
-        LDR     R0, =UART5_ERR_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK CMP2_IRQHandler
-        PUBWEAK FTM3_IRQHandler
-        PUBWEAK DAC1_IRQHandler
-        PUBWEAK ADC1_IRQHandler
-        PUBWEAK I2C2_IRQHandler
-        PUBWEAK I2C2_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-I2C2_IRQHandler
-        LDR     R0, =I2C2_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK CAN0_ORed_Message_buffer_IRQHandler
-        PUBWEAK CAN0_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-CAN0_ORed_Message_buffer_IRQHandler
-        LDR     R0, =CAN0_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK CAN0_Bus_Off_IRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-CAN0_Bus_Off_IRQHandler
-        LDR     R0, =CAN0_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK CAN0_Error_IRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-CAN0_Error_IRQHandler
-        LDR     R0, =CAN0_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK CAN0_Tx_Warning_IRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-CAN0_Tx_Warning_IRQHandler
-        LDR     R0, =CAN0_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK CAN0_Rx_Warning_IRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-CAN0_Rx_Warning_IRQHandler
-        LDR     R0, =CAN0_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK CAN0_Wake_Up_IRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-CAN0_Wake_Up_IRQHandler
-        LDR     R0, =CAN0_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK SDHC_IRQHandler
-        PUBWEAK SDHC_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-SDHC_IRQHandler
-        LDR     R0, =SDHC_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK ENET_1588_Timer_IRQHandler
-        PUBWEAK ENET_1588_Timer_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-ENET_1588_Timer_IRQHandler
-        LDR     R0, =ENET_1588_Timer_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK ENET_Transmit_IRQHandler
-        PUBWEAK ENET_Transmit_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-ENET_Transmit_IRQHandler
-        LDR     R0, =ENET_Transmit_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK ENET_Receive_IRQHandler
-        PUBWEAK ENET_Receive_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-ENET_Receive_IRQHandler
-        LDR     R0, =ENET_Receive_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK ENET_Error_IRQHandler
-        PUBWEAK ENET_Error_DriverIRQHandler
-        SECTION .text:CODE:REORDER:NOROOT(2)
-ENET_Error_IRQHandler
-        LDR     R0, =ENET_Error_DriverIRQHandler
-        BX      R0
-
-        PUBWEAK DefaultISR
-        SECTION .text:CODE:REORDER:NOROOT(1)
-DMA0_DriverIRQHandler
-DMA1_DriverIRQHandler
-DMA2_DriverIRQHandler
-DMA3_DriverIRQHandler
-DMA4_DriverIRQHandler
-DMA5_DriverIRQHandler
-DMA6_DriverIRQHandler
-DMA7_DriverIRQHandler
-DMA8_DriverIRQHandler
-DMA9_DriverIRQHandler
-DMA10_DriverIRQHandler
-DMA11_DriverIRQHandler
-DMA12_DriverIRQHandler
-DMA13_DriverIRQHandler
-DMA14_DriverIRQHandler
-DMA15_DriverIRQHandler
-DMA_Error_DriverIRQHandler
-MCM_IRQHandler
-FTFE_IRQHandler
-Read_Collision_IRQHandler
-LVD_LVW_IRQHandler
-LLWU_IRQHandler
-WDOG_EWM_IRQHandler
-RNG_IRQHandler
-I2C0_DriverIRQHandler
-I2C1_DriverIRQHandler
-SPI0_DriverIRQHandler
-SPI1_DriverIRQHandler
-I2S0_Tx_DriverIRQHandler
-I2S0_Rx_DriverIRQHandler
-UART0_LON_DriverIRQHandler
-UART0_RX_TX_DriverIRQHandler
-UART0_ERR_DriverIRQHandler
-UART1_RX_TX_DriverIRQHandler
-UART1_ERR_DriverIRQHandler
-UART2_RX_TX_DriverIRQHandler
-UART2_ERR_DriverIRQHandler
-UART3_RX_TX_DriverIRQHandler
-UART3_ERR_DriverIRQHandler
-ADC0_IRQHandler
-CMP0_IRQHandler
-CMP1_IRQHandler
-FTM0_IRQHandler
-FTM1_IRQHandler
-FTM2_IRQHandler
-CMT_IRQHandler
-RTC_IRQHandler
-RTC_Seconds_IRQHandler
-PIT0_IRQHandler
-PIT1_IRQHandler
-PIT2_IRQHandler
-PIT3_IRQHandler
-PDB0_IRQHandler
-USB0_IRQHandler
-USBDCD_IRQHandler
-Reserved71_IRQHandler
-DAC0_IRQHandler
-MCG_IRQHandler
-LPTMR0_IRQHandler
-PORTA_IRQHandler
-PORTB_IRQHandler
-PORTC_IRQHandler
-PORTD_IRQHandler
-PORTE_IRQHandler
-SWI_IRQHandler
-SPI2_DriverIRQHandler
-UART4_RX_TX_DriverIRQHandler
-UART4_ERR_DriverIRQHandler
-UART5_RX_TX_DriverIRQHandler
-UART5_ERR_DriverIRQHandler
-CMP2_IRQHandler
-FTM3_IRQHandler
-DAC1_IRQHandler
-ADC1_IRQHandler
-I2C2_DriverIRQHandler
-CAN0_DriverIRQHandler
-SDHC_DriverIRQHandler
-ENET_1588_Timer_DriverIRQHandler
-ENET_Transmit_DriverIRQHandler
-ENET_Receive_DriverIRQHandler
-ENET_Error_DriverIRQHandler
-DefaultISR
-        B DefaultISR
-
-        END
--- a/targets/cmsis/TARGET_Freescale/TARGET_K64F/cmsis.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-/* mbed Microcontroller Library - CMSIS
- * Copyright (C) 2009-2011 ARM Limited. All rights reserved.
- *
- * A generic CMSIS include header, pulling in LPC11U24 specifics
- */
-
-#ifndef MBED_CMSIS_H
-#define MBED_CMSIS_H
-
-#include "fsl_device_registers.h"
-#include "cmsis_nvic.h"
-
-#endif
--- a/targets/cmsis/TARGET_Freescale/TARGET_K64F/cmsis_nvic.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/* mbed Microcontroller Library
- * CMSIS-style functionality to support dynamic vectors
- *******************************************************************************
- * Copyright (c) 2011 ARM Limited. All rights reserved.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of ARM Limited nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *******************************************************************************
- */
-#include "cmsis_nvic.h"
-
-extern void InstallIRQHandler(IRQn_Type irq, uint32_t irqHandler);
-
-void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) {
-    InstallIRQHandler(IRQn, vector);
-}
-
-uint32_t NVIC_GetVector(IRQn_Type IRQn) {
-    uint32_t *vectors = (uint32_t*)SCB->VTOR;
-    return vectors[IRQn + 16];
-}
--- a/targets/cmsis/TARGET_Freescale/TARGET_K64F/cmsis_nvic.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/* mbed Microcontroller Library
- * CMSIS-style functionality to support dynamic vectors
- *******************************************************************************
- * Copyright (c) 2011 ARM Limited. All rights reserved.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of ARM Limited nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *******************************************************************************
- */
-
-#ifndef MBED_CMSIS_NVIC_H
-#define MBED_CMSIS_NVIC_H
-
-#include "cmsis.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector);
-uint32_t NVIC_GetVector(IRQn_Type IRQn);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/targets/cmsis/TARGET_Freescale/TARGET_K64F/fsl_device_registers.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2014 - 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef __FSL_DEVICE_REGISTERS_H__
-#define __FSL_DEVICE_REGISTERS_H__
-
-/*
- * Include the cpu specific register header files.
- *
- * The CPU macro should be declared in the project or makefile.
- */
-#if (defined(CPU_MK64FX512VDC12) || defined(CPU_MK64FN1M0VDC12) || defined(CPU_MK64FX512VLL12) || \
-    defined(CPU_MK64FN1M0VLL12) || defined(CPU_MK64FX512VLQ12) || defined(CPU_MK64FN1M0VLQ12) || \
-    defined(CPU_MK64FX512VMD12) || defined(CPU_MK64FN1M0VMD12))
-
-#define K64F12_SERIES
-
-/* CMSIS-style register definitions */
-#include "MK64F12.h"
-/* CPU specific feature definitions */
-#include "MK64F12_features.h"
-
-#else
-    #error "No valid CPU defined!"
-#endif
-
-#endif /* __FSL_DEVICE_REGISTERS_H__ */
-
-/*******************************************************************************
- * EOF
- ******************************************************************************/
--- a/targets/cmsis/TARGET_Freescale/TARGET_K64F/system_MK64F12.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,247 +0,0 @@
-/*
-** ###################################################################
-**     Processors:          MK64FN1M0VDC12
-**                          MK64FN1M0VLL12
-**                          MK64FN1M0VLQ12
-**                          MK64FN1M0VMD12
-**                          MK64FX512VDC12
-**                          MK64FX512VLL12
-**                          MK64FX512VLQ12
-**                          MK64FX512VMD12
-**
-**     Compilers:           Keil ARM C/C++ Compiler
-**                          Freescale C/C++ for Embedded ARM
-**                          GNU C Compiler
-**                          IAR ANSI C/C++ Compiler for ARM
-**
-**     Reference manual:    K64P144M120SF5RM, Rev.2, January 2014
-**     Version:             rev. 2.8, 2015-02-19
-**     Build:               b151216
-**
-**     Abstract:
-**         Provides a system configuration function and a global variable that
-**         contains the system frequency. It configures the device and initializes
-**         the oscillator (PLL) that is part of the microcontroller device.
-**
-**     Copyright (c) 2015 Freescale Semiconductor, Inc.
-**     All rights reserved.
-**
-**     Redistribution and use in source and binary forms, with or without modification,
-**     are permitted provided that the following conditions are met:
-**
-**     o Redistributions of source code must retain the above copyright notice, this list
-**       of conditions and the following disclaimer.
-**
-**     o Redistributions in binary form must reproduce the above copyright notice, this
-**       list of conditions and the following disclaimer in the documentation and/or
-**       other materials provided with the distribution.
-**
-**     o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-**       contributors may be used to endorse or promote products derived from this
-**       software without specific prior written permission.
-**
-**     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-**     ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-**     WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-**     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-**     ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-**     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-**     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-**     ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-**     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-**     SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-**     http:                 www.freescale.com
-**     mail:                 support@freescale.com
-**
-**     Revisions:
-**     - rev. 1.0 (2013-08-12)
-**         Initial version.
-**     - rev. 2.0 (2013-10-29)
-**         Register accessor macros added to the memory map.
-**         Symbols for Processor Expert memory map compatibility added to the memory map.
-**         Startup file for gcc has been updated according to CMSIS 3.2.
-**         System initialization updated.
-**         MCG - registers updated.
-**         PORTA, PORTB, PORTC, PORTE - registers for digital filter removed.
-**     - rev. 2.1 (2013-10-30)
-**         Definition of BITBAND macros updated to support peripherals with 32-bit acces disabled.
-**     - rev. 2.2 (2013-12-09)
-**         DMA - EARS register removed.
-**         AIPS0, AIPS1 - MPRA register updated.
-**     - rev. 2.3 (2014-01-24)
-**         Update according to reference manual rev. 2
-**         ENET, MCG, MCM, SIM, USB - registers updated
-**     - rev. 2.4 (2014-02-10)
-**         The declaration of clock configurations has been moved to separate header file system_MK64F12.h
-**         Update of SystemInit() and SystemCoreClockUpdate() functions.
-**     - rev. 2.5 (2014-02-10)
-**         The declaration of clock configurations has been moved to separate header file system_MK64F12.h
-**         Update of SystemInit() and SystemCoreClockUpdate() functions.
-**         Module access macro module_BASES replaced by module_BASE_PTRS.
-**     - rev. 2.6 (2014-08-28)
-**         Update of system files - default clock configuration changed.
-**         Update of startup files - possibility to override DefaultISR added.
-**     - rev. 2.7 (2014-10-14)
-**         Interrupt INT_LPTimer renamed to INT_LPTMR0, interrupt INT_Watchdog renamed to INT_WDOG_EWM.
-**     - rev. 2.8 (2015-02-19)
-**         Renamed interrupt vector LLW to LLWU.
-**
-** ###################################################################
-*/
-
-/*!
- * @file MK64F12
- * @version 2.8
- * @date 2015-02-19
- * @brief Device specific configuration file for MK64F12 (implementation file)
- *
- * Provides a system configuration function and a global variable that contains
- * the system frequency. It configures the device and initializes the oscillator
- * (PLL) that is part of the microcontroller device.
- */
-
-#include <stdint.h>
-#include "fsl_device_registers.h"
-
-
-
-/* ----------------------------------------------------------------------------
-   -- Core clock
-   ---------------------------------------------------------------------------- */
-
-uint32_t SystemCoreClock = DEFAULT_SYSTEM_CLOCK;
-
-/* ----------------------------------------------------------------------------
-   -- SystemInit()
-   ---------------------------------------------------------------------------- */
-
-void SystemInit (void) {
-#if ((__FPU_PRESENT == 1) && (__FPU_USED == 1))
-  SCB->CPACR |= ((3UL << 10*2) | (3UL << 11*2));    /* set CP10, CP11 Full Access */
-#endif /* ((__FPU_PRESENT == 1) && (__FPU_USED == 1)) */
-#if (DISABLE_WDOG)
-  /* WDOG->UNLOCK: WDOGUNLOCK=0xC520 */
-  WDOG->UNLOCK = WDOG_UNLOCK_WDOGUNLOCK(0xC520); /* Key 1 */
-  /* WDOG->UNLOCK: WDOGUNLOCK=0xD928 */
-  WDOG->UNLOCK = WDOG_UNLOCK_WDOGUNLOCK(0xD928); /* Key 2 */
-  /* WDOG->STCTRLH: ?=0,DISTESTWDOG=0,BYTESEL=0,TESTSEL=0,TESTWDOG=0,?=0,?=1,WAITEN=1,STOPEN=1,DBGEN=0,ALLOWUPDATE=1,WINEN=0,IRQRSTEN=0,CLKSRC=1,WDOGEN=0 */
-  WDOG->STCTRLH = WDOG_STCTRLH_BYTESEL(0x00) |
-                 WDOG_STCTRLH_WAITEN_MASK |
-                 WDOG_STCTRLH_STOPEN_MASK |
-                 WDOG_STCTRLH_ALLOWUPDATE_MASK |
-                 WDOG_STCTRLH_CLKSRC_MASK |
-                 0x0100U;
-#endif /* (DISABLE_WDOG) */
-
-}
-
-/* ----------------------------------------------------------------------------
-   -- SystemCoreClockUpdate()
-   ---------------------------------------------------------------------------- */
-
-void SystemCoreClockUpdate (void) {
-  uint32_t MCGOUTClock;                /* Variable to store output clock frequency of the MCG module */
-  uint16_t Divider;
-
-  if ((MCG->C1 & MCG_C1_CLKS_MASK) == 0x00U) {
-    /* Output of FLL or PLL is selected */
-    if ((MCG->C6 & MCG_C6_PLLS_MASK) == 0x00U) {
-      /* FLL is selected */
-      if ((MCG->C1 & MCG_C1_IREFS_MASK) == 0x00U) {
-        /* External reference clock is selected */
-        switch (MCG->C7 & MCG_C7_OSCSEL_MASK) {
-        case 0x00U:
-          MCGOUTClock = CPU_XTAL_CLK_HZ; /* System oscillator drives MCG clock */
-          break;
-        case 0x01U:
-          MCGOUTClock = CPU_XTAL32k_CLK_HZ; /* RTC 32 kHz oscillator drives MCG clock */
-          break;
-        case 0x02U:
-        default:
-          MCGOUTClock = CPU_INT_IRC_CLK_HZ; /* IRC 48MHz oscillator drives MCG clock */
-          break;
-        }
-        if (((MCG->C2 & MCG_C2_RANGE_MASK) != 0x00U) && ((MCG->C7 & MCG_C7_OSCSEL_MASK) != 0x01U)) {
-          switch (MCG->C1 & MCG_C1_FRDIV_MASK) {
-          case 0x38U:
-            Divider = 1536U;
-            break;
-          case 0x30U:
-            Divider = 1280U;
-            break;
-          default:
-            Divider = (uint16_t)(32LU << ((MCG->C1 & MCG_C1_FRDIV_MASK) >> MCG_C1_FRDIV_SHIFT));
-            break;
-          }
-        } else {/* ((MCG->C2 & MCG_C2_RANGE_MASK) != 0x00U) */
-          Divider = (uint16_t)(1LU << ((MCG->C1 & MCG_C1_FRDIV_MASK) >> MCG_C1_FRDIV_SHIFT));
-        }
-        MCGOUTClock = (MCGOUTClock / Divider); /* Calculate the divided FLL reference clock */
-      } else { /* (!((MCG->C1 & MCG_C1_IREFS_MASK) == 0x00U)) */
-        MCGOUTClock = CPU_INT_SLOW_CLK_HZ; /* The slow internal reference clock is selected */
-      } /* (!((MCG->C1 & MCG_C1_IREFS_MASK) == 0x00U)) */
-      /* Select correct multiplier to calculate the MCG output clock  */
-      switch (MCG->C4 & (MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS_MASK)) {
-        case 0x00U:
-          MCGOUTClock *= 640U;
-          break;
-        case 0x20U:
-          MCGOUTClock *= 1280U;
-          break;
-        case 0x40U:
-          MCGOUTClock *= 1920U;
-          break;
-        case 0x60U:
-          MCGOUTClock *= 2560U;
-          break;
-        case 0x80U:
-          MCGOUTClock *= 732U;
-          break;
-        case 0xA0U:
-          MCGOUTClock *= 1464U;
-          break;
-        case 0xC0U:
-          MCGOUTClock *= 2197U;
-          break;
-        case 0xE0U:
-          MCGOUTClock *= 2929U;
-          break;
-        default:
-          break;
-      }
-    } else { /* (!((MCG->C6 & MCG_C6_PLLS_MASK) == 0x00U)) */
-      /* PLL is selected */
-      Divider = (((uint16_t)MCG->C5 & MCG_C5_PRDIV0_MASK) + 0x01U);
-      MCGOUTClock = (uint32_t)(CPU_XTAL_CLK_HZ / Divider); /* Calculate the PLL reference clock */
-      Divider = (((uint16_t)MCG->C6 & MCG_C6_VDIV0_MASK) + 24U);
-      MCGOUTClock *= Divider;          /* Calculate the MCG output clock */
-    } /* (!((MCG->C6 & MCG_C6_PLLS_MASK) == 0x00U)) */
-  } else if ((MCG->C1 & MCG_C1_CLKS_MASK) == 0x40U) {
-    /* Internal reference clock is selected */
-    if ((MCG->C2 & MCG_C2_IRCS_MASK) == 0x00U) {
-      MCGOUTClock = CPU_INT_SLOW_CLK_HZ; /* Slow internal reference clock selected */
-    } else { /* (!((MCG->C2 & MCG_C2_IRCS_MASK) == 0x00U)) */
-      Divider = (uint16_t)(0x01LU << ((MCG->SC & MCG_SC_FCRDIV_MASK) >> MCG_SC_FCRDIV_SHIFT));
-      MCGOUTClock = (uint32_t) (CPU_INT_FAST_CLK_HZ / Divider); /* Fast internal reference clock selected */
-    } /* (!((MCG->C2 & MCG_C2_IRCS_MASK) == 0x00U)) */
-  } else if ((MCG->C1 & MCG_C1_CLKS_MASK) == 0x80U) {
-    /* External reference clock is selected */
-    switch (MCG->C7 & MCG_C7_OSCSEL_MASK) {
-    case 0x00U:
-      MCGOUTClock = CPU_XTAL_CLK_HZ;   /* System oscillator drives MCG clock */
-      break;
-    case 0x01U:
-      MCGOUTClock = CPU_XTAL32k_CLK_HZ; /* RTC 32 kHz oscillator drives MCG clock */
-      break;
-    case 0x02U:
-    default:
-      MCGOUTClock = CPU_INT_IRC_CLK_HZ; /* IRC 48MHz oscillator drives MCG clock */
-      break;
-    }
-  } else { /* (!((MCG->C1 & MCG_C1_CLKS_MASK) == 0x80U)) */
-    /* Reserved value */
-    return;
-  } /* (!((MCG->C1 & MCG_C1_CLKS_MASK) == 0x80U)) */
-  SystemCoreClock = (MCGOUTClock / (0x01U + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT)));
-}
--- a/targets/cmsis/TARGET_Freescale/TARGET_K64F/system_MK64F12.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,168 +0,0 @@
-/*
-** ###################################################################
-**     Processors:          MK64FN1M0VDC12
-**                          MK64FN1M0VLL12
-**                          MK64FN1M0VLQ12
-**                          MK64FN1M0VMD12
-**                          MK64FX512VDC12
-**                          MK64FX512VLL12
-**                          MK64FX512VLQ12
-**                          MK64FX512VMD12
-**
-**     Compilers:           Keil ARM C/C++ Compiler
-**                          Freescale C/C++ for Embedded ARM
-**                          GNU C Compiler
-**                          IAR ANSI C/C++ Compiler for ARM
-**
-**     Reference manual:    K64P144M120SF5RM, Rev.2, January 2014
-**     Version:             rev. 2.8, 2015-02-19
-**     Build:               b151216
-**
-**     Abstract:
-**         Provides a system configuration function and a global variable that
-**         contains the system frequency. It configures the device and initializes
-**         the oscillator (PLL) that is part of the microcontroller device.
-**
-**     Copyright (c) 2015 Freescale Semiconductor, Inc.
-**     All rights reserved.
-**
-**     Redistribution and use in source and binary forms, with or without modification,
-**     are permitted provided that the following conditions are met:
-**
-**     o Redistributions of source code must retain the above copyright notice, this list
-**       of conditions and the following disclaimer.
-**
-**     o Redistributions in binary form must reproduce the above copyright notice, this
-**       list of conditions and the following disclaimer in the documentation and/or
-**       other materials provided with the distribution.
-**
-**     o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-**       contributors may be used to endorse or promote products derived from this
-**       software without specific prior written permission.
-**
-**     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-**     ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-**     WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-**     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-**     ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-**     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-**     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-**     ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-**     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-**     SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-**     http:                 www.freescale.com
-**     mail:                 support@freescale.com
-**
-**     Revisions:
-**     - rev. 1.0 (2013-08-12)
-**         Initial version.
-**     - rev. 2.0 (2013-10-29)
-**         Register accessor macros added to the memory map.
-**         Symbols for Processor Expert memory map compatibility added to the memory map.
-**         Startup file for gcc has been updated according to CMSIS 3.2.
-**         System initialization updated.
-**         MCG - registers updated.
-**         PORTA, PORTB, PORTC, PORTE - registers for digital filter removed.
-**     - rev. 2.1 (2013-10-30)
-**         Definition of BITBAND macros updated to support peripherals with 32-bit acces disabled.
-**     - rev. 2.2 (2013-12-09)
-**         DMA - EARS register removed.
-**         AIPS0, AIPS1 - MPRA register updated.
-**     - rev. 2.3 (2014-01-24)
-**         Update according to reference manual rev. 2
-**         ENET, MCG, MCM, SIM, USB - registers updated
-**     - rev. 2.4 (2014-02-10)
-**         The declaration of clock configurations has been moved to separate header file system_MK64F12.h
-**         Update of SystemInit() and SystemCoreClockUpdate() functions.
-**     - rev. 2.5 (2014-02-10)
-**         The declaration of clock configurations has been moved to separate header file system_MK64F12.h
-**         Update of SystemInit() and SystemCoreClockUpdate() functions.
-**         Module access macro module_BASES replaced by module_BASE_PTRS.
-**     - rev. 2.6 (2014-08-28)
-**         Update of system files - default clock configuration changed.
-**         Update of startup files - possibility to override DefaultISR added.
-**     - rev. 2.7 (2014-10-14)
-**         Interrupt INT_LPTimer renamed to INT_LPTMR0, interrupt INT_Watchdog renamed to INT_WDOG_EWM.
-**     - rev. 2.8 (2015-02-19)
-**         Renamed interrupt vector LLW to LLWU.
-**
-** ###################################################################
-*/
-
-/*!
- * @file MK64F12
- * @version 2.8
- * @date 2015-02-19
- * @brief Device specific configuration file for MK64F12 (header file)
- *
- * Provides a system configuration function and a global variable that contains
- * the system frequency. It configures the device and initializes the oscillator
- * (PLL) that is part of the microcontroller device.
- */
-
-#ifndef _SYSTEM_MK64F12_H_
-#define _SYSTEM_MK64F12_H_                       /**< Symbol preventing repeated inclusion */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdint.h>
-
-
-#ifndef DISABLE_WDOG
-  #define DISABLE_WDOG                 1
-#endif
-
-#define CPU_XTAL_CLK_HZ                50000000u           /* Value of the external crystal or oscillator clock frequency in Hz */
-#define CPU_XTAL32k_CLK_HZ             32768u              /* Value of the external 32k crystal or oscillator clock frequency in Hz */
-#define CPU_INT_SLOW_CLK_HZ            32768u              /* Value of the slow internal oscillator clock frequency in Hz  */
-#define CPU_INT_FAST_CLK_HZ            4000000u            /* Value of the fast internal oscillator clock frequency in Hz  */
-#define CPU_INT_IRC_CLK_HZ             48000000u           /* Value of the 48M internal oscillator clock frequency in Hz  */
-
-/* RTC oscillator setting */
-/* RTC_CR: SC2P=0,SC4P=0,SC8P=0,SC16P=0,CLKO=1,OSCE=1,WPS=0,UM=0,SUP=0,WPE=0,SWR=0 */
-#define SYSTEM_RTC_CR_VALUE            0x0300U             /* RTC_CR */
-
-/* Low power mode enable */
-/* SMC_PMPROT: AVLP=1,ALLS=1,AVLLS=1 */
-#define SYSTEM_SMC_PMPROT_VALUE        0x2AU               /* SMC_PMPROT */
-
-#define DEFAULT_SYSTEM_CLOCK           20971520u           /* Default System clock value */
-
-
-/**
- * @brief System clock frequency (core clock)
- *
- * The system clock frequency supplied to the SysTick timer and the processor
- * core clock. This variable can be used by the user application to setup the
- * SysTick timer or configure other parameters. It may also be used by debugger to
- * query the frequency of the debug timer or configure the trace clock speed
- * SystemCoreClock is initialized with a correct predefined value.
- */
-extern uint32_t SystemCoreClock;
-
-/**
- * @brief Setup the microcontroller system.
- *
- * Typically this function configures the oscillator (PLL) that is part of the
- * microcontroller device. For systems with variable clock speed it also updates
- * the variable SystemCoreClock. SystemInit is called from startup_device file.
- */
-void SystemInit (void);
-
-/**
- * @brief Updates the SystemCoreClock variable.
- *
- * It must be called whenever the core clock is changed during program
- * execution. SystemCoreClockUpdate() evaluates the clock register settings and calculates
- * the current core clock.
- */
-void SystemCoreClockUpdate (void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* _SYSTEM_MK64F12_H_ */
--- a/targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/MKL43Z4.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8856 +0,0 @@
-/*
-** ###################################################################
-**     Processors:          MKL43Z256VLH4
-**                          MKL43Z128VLH4
-**                          MKL43Z64VLH4
-**                          MKL43Z256VMP4
-**                          MKL43Z128VMP4
-**                          MKL43Z64VMP4
-**
-**     Compilers:           Keil ARM C/C++ Compiler
-**                          Freescale C/C++ for Embedded ARM
-**                          GNU C Compiler
-**                          GNU C Compiler - CodeSourcery Sourcery G++
-**                          IAR ANSI C/C++ Compiler for ARM
-**
-**     Reference manual:    KL43P64M48SF6RM, Rev.3, Aug 2014
-**     Version:             rev. 1.5, 2014-09-05
-**     Build:               b140905
-**
-**     Abstract:
-**         CMSIS Peripheral Access Layer for MKL43Z4
-**
-**     Copyright (c) 1997 - 2014 Freescale Semiconductor, Inc.
-**     All rights reserved.
-**
-**     Redistribution and use in source and binary forms, with or without modification,
-**     are permitted provided that the following conditions are met:
-**
-**     o Redistributions of source code must retain the above copyright notice, this list
-**       of conditions and the following disclaimer.
-**
-**     o Redistributions in binary form must reproduce the above copyright notice, this
-**       list of conditions and the following disclaimer in the documentation and/or
-**       other materials provided with the distribution.
-**
-**     o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-**       contributors may be used to endorse or promote products derived from this
-**       software without specific prior written permission.
-**
-**     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-**     ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-**     WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-**     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-**     ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-**     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-**     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-**     ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-**     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-**     SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-**     http:                 www.freescale.com
-**     mail:                 support@freescale.com
-**
-**     Revisions:
-**     - rev. 1.0 (2014-03-27)
-**         Initial version.
-**     - rev. 1.1 (2014-05-26)
-**         I2S registers TCR2/RCR2 and others were changed.
-**         FLEXIO register FLEXIO_VERID has now bitfields: FEATURE, MINOR, MAJOR.
-**         Names of the bitfields of the FLEXIO_SHIFTBUF have been changed to the appropriate register name e.g.: FLEXIO_SHIFTBUFBBS_SHIFTBUFBBS.
-**         Peripheral_BASES macros has been changed to Peripheral_BASE_PTRS, e.g.: ADC_BASES to ADC_BASE_PTRS.
-**         Clock configuration for high range external oscillator has been added.
-**         RFSYS module access has been added.
-**     - rev. 1.2 (2014-07-10)
-**         GPIO - Renamed modules PTA,PTB,PTC,PTD,PTE to GPIOA,GPIOB,GPIOC,GPIOD,GPIOE.
-**         UART0 - UART0 module renamed to UART2.
-**         I2S - removed MDR register.
-**     - rev. 1.3 (2014-08-21)
-**         UART2 - Removed ED register.
-**         UART2 - Removed MODEM register.
-**         UART2 - Removed IR register.
-**         UART2 - Removed PFIFO register.
-**         UART2 - Removed CFIFO register.
-**         UART2 - Removed SFIFO register.
-**         UART2 - Removed TWFIFO register.
-**         UART2 - Removed TCFIFO register.
-**         UART2 - Removed RWFIFO register.
-**         UART2 - Removed RCFIFO register.
-**         USB - Removed bitfield REG_EN in CLK_RECOVER_IRC_EN register.
-**         SIM - Changed bitfield value MCGIRCLK to LIRC_CLK of bitfield CLKOUTSEL in SOPT2 register.
-**         SIM - Removed bitfield DIEID in SDID register.
-**     - rev. 1.4 (2014-09-01)
-**         USB - USB0_CTL0 was renamed to USB0_OTGCTL register.
-**         USB - USB0_CTL1 was renamed to USB0_CTL register.
-**     - rev. 1.5 (2014-09-05)
-**         USB - USBEN bitfield of the USB0_CTL renamed to USBENSOFEN.
-**
-** ###################################################################
-*/
-
-/*!
- * @file MKL43Z4.h
- * @version 1.5
- * @date 2014-09-05
- * @brief CMSIS Peripheral Access Layer for MKL43Z4
- *
- * CMSIS Peripheral Access Layer for MKL43Z4
- */
-
-
-/* ----------------------------------------------------------------------------
-   -- MCU activation
-   ---------------------------------------------------------------------------- */
-
-/* Prevention from multiple including the same memory map */
-#if !defined(MKL43Z4_H_)  /* Check if memory map has not been already included */
-#define MKL43Z4_H_
-#define MCU_MKL43Z4
-
-/* Check if another memory map has not been also included */
-#if (defined(MCU_ACTIVE))
-  #error MKL43Z4 memory map: There is already included another memory map. Only one memory map can be included.
-#endif /* (defined(MCU_ACTIVE)) */
-#define MCU_ACTIVE
-
-#include <stdint.h>
-
-/** Memory map major version (memory maps with equal major version number are
- * compatible) */
-#define MCU_MEM_MAP_VERSION 0x0100u
-/** Memory map minor version */
-#define MCU_MEM_MAP_VERSION_MINOR 0x0005u
-
-
-/* ----------------------------------------------------------------------------
-   -- Interrupt vector numbers
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup Interrupt_vector_numbers Interrupt vector numbers
- * @{
- */
-
-/** Interrupt Number Definitions */
-#define NUMBER_OF_INT_VECTORS 48                 /**< Number of interrupts in the Vector table */
-
-typedef enum IRQn {
-  /* Auxiliary constants */
-  NotAvail_IRQn                = -128,             /**< Not available device specific interrupt */
-
-  /* Core interrupts */
-  NonMaskableInt_IRQn          = -14,              /**< Non Maskable Interrupt */
-  HardFault_IRQn               = -13,              /**< Cortex-M0 SV Hard Fault Interrupt */
-  SVCall_IRQn                  = -5,               /**< Cortex-M0 SV Call Interrupt */
-  PendSV_IRQn                  = -2,               /**< Cortex-M0 Pend SV Interrupt */
-  SysTick_IRQn                 = -1,               /**< Cortex-M0 System Tick Interrupt */
-
-  /* Device specific interrupts */
-  DMA0_IRQn                    = 0,                /**< DMA channel 0 transfer complete */
-  DMA1_IRQn                    = 1,                /**< DMA channel 1 transfer complete */
-  DMA2_IRQn                    = 2,                /**< DMA channel 2 transfer complete */
-  DMA3_IRQn                    = 3,                /**< DMA channel 3 transfer complete */
-  Reserved20_IRQn              = 4,                /**< Reserved interrupt */
-  FTFA_IRQn                    = 5,                /**< Command complete and read collision */
-  PMC_IRQn                     = 6,                /**< Low-voltage detect, low-voltage warning */
-  LLWU_IRQn                    = 7,                /**< Low leakage wakeup */
-  I2C0_IRQn                    = 8,                /**< I2C0 interrupt */
-  I2C1_IRQn                    = 9,                /**< I2C1 interrupt */
-  SPI0_IRQn                    = 10,               /**< SPI0 single interrupt vector for all sources */
-  SPI1_IRQn                    = 11,               /**< SPI1 single interrupt vector for all sources */
-  LPUART0_IRQn                 = 12,               /**< LPUART0 status and error */
-  LPUART1_IRQn                 = 13,               /**< LPUART1 status and error */
-  UART2_FLEXIO_IRQn            = 14,               /**< UART2 or FLEXIO */
-  ADC0_IRQn                    = 15,               /**< ADC0 interrupt */
-  CMP0_IRQn                    = 16,               /**< CMP0 interrupt */
-  TPM0_IRQn                    = 17,               /**< TPM0 single interrupt vector for all sources */
-  TPM1_IRQn                    = 18,               /**< TPM1 single interrupt vector for all sources */
-  TPM2_IRQn                    = 19,               /**< TPM2 single interrupt vector for all sources */
-  RTC_IRQn                     = 20,               /**< RTC alarm */
-  RTC_Seconds_IRQn             = 21,               /**< RTC seconds */
-  PIT_IRQn                     = 22,               /**< PIT interrupt */
-  I2S0_IRQn                    = 23,               /**< I2S0 interrupt */
-  USB0_IRQn                    = 24,               /**< USB0 interrupt */
-  DAC0_IRQn                    = 25,               /**< DAC0 interrupt */
-  Reserved42_IRQn              = 26,               /**< Reserved interrupt */
-  Reserved43_IRQn              = 27,               /**< Reserved interrupt */
-  LPTMR0_IRQn                  = 28,               /**< LPTMR0 interrupt */
-  LCD_IRQn                     = 29,               /**< LCD interrupt */
-  PORTA_IRQn                   = 30,               /**< PORTA Pin detect */
-  PORTCD_IRQn                  = 31                /**< Single interrupt vector for PORTC; PORTD Pin detect */
-} IRQn_Type;
-
-/*!
- * @}
- */ /* end of group Interrupt_vector_numbers */
-
-
-/* ----------------------------------------------------------------------------
-   -- Cortex M0 Core Configuration
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup Cortex_Core_Configuration Cortex M0 Core Configuration
- * @{
- */
-
-#define __CM0PLUS_REV                  0x0000    /**< Core revision r0p0 */
-#define __MPU_PRESENT                  0         /**< Defines if an MPU is present or not */
-#define __VTOR_PRESENT                 1         /**< Defines if an MPU is present or not */
-#define __NVIC_PRIO_BITS               2         /**< Number of priority bits implemented in the NVIC */
-#define __Vendor_SysTickConfig         0         /**< Vendor specific implementation of SysTickConfig is defined */
-
-#include "core_cm0plus.h"              /* Core Peripheral Access Layer */
-#include "system_MKL43Z4.h"            /* Device specific configuration file */
-
-/*!
- * @}
- */ /* end of group Cortex_Core_Configuration */
-
-
-/* ----------------------------------------------------------------------------
-   -- Device Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup Peripheral_access_layer Device Peripheral Access Layer
- * @{
- */
-
-
-/*
-** Start of section using anonymous unions
-*/
-
-#if defined(__ARMCC_VERSION)
-  #pragma push
-  #pragma anon_unions
-#elif defined(__CWCC__)
-  #pragma push
-  #pragma cpp_extensions on
-#elif defined(__GNUC__)
-  /* anonymous unions are enabled by default */
-#elif defined(__IAR_SYSTEMS_ICC__)
-  #pragma language=extended
-#else
-  #error Not supported compiler type
-#endif
-
-/* ----------------------------------------------------------------------------
-   -- ADC Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup ADC_Peripheral_Access_Layer ADC Peripheral Access Layer
- * @{
- */
-
-/** ADC - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t SC1[2];                            /**< ADC Status and Control Registers 1, array offset: 0x0, array step: 0x4 */
-  __IO uint32_t CFG1;                              /**< ADC Configuration Register 1, offset: 0x8 */
-  __IO uint32_t CFG2;                              /**< ADC Configuration Register 2, offset: 0xC */
-  __I  uint32_t R[2];                              /**< ADC Data Result Register, array offset: 0x10, array step: 0x4 */
-  __IO uint32_t CV1;                               /**< Compare Value Registers, offset: 0x18 */
-  __IO uint32_t CV2;                               /**< Compare Value Registers, offset: 0x1C */
-  __IO uint32_t SC2;                               /**< Status and Control Register 2, offset: 0x20 */
-  __IO uint32_t SC3;                               /**< Status and Control Register 3, offset: 0x24 */
-  __IO uint32_t OFS;                               /**< ADC Offset Correction Register, offset: 0x28 */
-  __IO uint32_t PG;                                /**< ADC Plus-Side Gain Register, offset: 0x2C */
-  __IO uint32_t MG;                                /**< ADC Minus-Side Gain Register, offset: 0x30 */
-  __IO uint32_t CLPD;                              /**< ADC Plus-Side General Calibration Value Register, offset: 0x34 */
-  __IO uint32_t CLPS;                              /**< ADC Plus-Side General Calibration Value Register, offset: 0x38 */
-  __IO uint32_t CLP4;                              /**< ADC Plus-Side General Calibration Value Register, offset: 0x3C */
-  __IO uint32_t CLP3;                              /**< ADC Plus-Side General Calibration Value Register, offset: 0x40 */
-  __IO uint32_t CLP2;                              /**< ADC Plus-Side General Calibration Value Register, offset: 0x44 */
-  __IO uint32_t CLP1;                              /**< ADC Plus-Side General Calibration Value Register, offset: 0x48 */
-  __IO uint32_t CLP0;                              /**< ADC Plus-Side General Calibration Value Register, offset: 0x4C */
-       uint8_t RESERVED_0[4];
-  __IO uint32_t CLMD;                              /**< ADC Minus-Side General Calibration Value Register, offset: 0x54 */
-  __IO uint32_t CLMS;                              /**< ADC Minus-Side General Calibration Value Register, offset: 0x58 */
-  __IO uint32_t CLM4;                              /**< ADC Minus-Side General Calibration Value Register, offset: 0x5C */
-  __IO uint32_t CLM3;                              /**< ADC Minus-Side General Calibration Value Register, offset: 0x60 */
-  __IO uint32_t CLM2;                              /**< ADC Minus-Side General Calibration Value Register, offset: 0x64 */
-  __IO uint32_t CLM1;                              /**< ADC Minus-Side General Calibration Value Register, offset: 0x68 */
-  __IO uint32_t CLM0;                              /**< ADC Minus-Side General Calibration Value Register, offset: 0x6C */
-} ADC_Type, *ADC_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- ADC - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup ADC_Register_Accessor_Macros ADC - Register accessor macros
- * @{
- */
-
-
-/* ADC - Register accessors */
-#define ADC_SC1_REG(base,index)                  ((base)->SC1[index])
-#define ADC_CFG1_REG(base)                       ((base)->CFG1)
-#define ADC_CFG2_REG(base)                       ((base)->CFG2)
-#define ADC_R_REG(base,index)                    ((base)->R[index])
-#define ADC_CV1_REG(base)                        ((base)->CV1)
-#define ADC_CV2_REG(base)                        ((base)->CV2)
-#define ADC_SC2_REG(base)                        ((base)->SC2)
-#define ADC_SC3_REG(base)                        ((base)->SC3)
-#define ADC_OFS_REG(base)                        ((base)->OFS)
-#define ADC_PG_REG(base)                         ((base)->PG)
-#define ADC_MG_REG(base)                         ((base)->MG)
-#define ADC_CLPD_REG(base)                       ((base)->CLPD)
-#define ADC_CLPS_REG(base)                       ((base)->CLPS)
-#define ADC_CLP4_REG(base)                       ((base)->CLP4)
-#define ADC_CLP3_REG(base)                       ((base)->CLP3)
-#define ADC_CLP2_REG(base)                       ((base)->CLP2)
-#define ADC_CLP1_REG(base)                       ((base)->CLP1)
-#define ADC_CLP0_REG(base)                       ((base)->CLP0)
-#define ADC_CLMD_REG(base)                       ((base)->CLMD)
-#define ADC_CLMS_REG(base)                       ((base)->CLMS)
-#define ADC_CLM4_REG(base)                       ((base)->CLM4)
-#define ADC_CLM3_REG(base)                       ((base)->CLM3)
-#define ADC_CLM2_REG(base)                       ((base)->CLM2)
-#define ADC_CLM1_REG(base)                       ((base)->CLM1)
-#define ADC_CLM0_REG(base)                       ((base)->CLM0)
-
-/*!
- * @}
- */ /* end of group ADC_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- ADC Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup ADC_Register_Masks ADC Register Masks
- * @{
- */
-
-/* SC1 Bit Fields */
-#define ADC_SC1_ADCH_MASK                        0x1Fu
-#define ADC_SC1_ADCH_SHIFT                       0
-#define ADC_SC1_ADCH(x)                          (((uint32_t)(((uint32_t)(x))<<ADC_SC1_ADCH_SHIFT))&ADC_SC1_ADCH_MASK)
-#define ADC_SC1_DIFF_MASK                        0x20u
-#define ADC_SC1_DIFF_SHIFT                       5
-#define ADC_SC1_AIEN_MASK                        0x40u
-#define ADC_SC1_AIEN_SHIFT                       6
-#define ADC_SC1_COCO_MASK                        0x80u
-#define ADC_SC1_COCO_SHIFT                       7
-/* CFG1 Bit Fields */
-#define ADC_CFG1_ADICLK_MASK                     0x3u
-#define ADC_CFG1_ADICLK_SHIFT                    0
-#define ADC_CFG1_ADICLK(x)                       (((uint32_t)(((uint32_t)(x))<<ADC_CFG1_ADICLK_SHIFT))&ADC_CFG1_ADICLK_MASK)
-#define ADC_CFG1_MODE_MASK                       0xCu
-#define ADC_CFG1_MODE_SHIFT                      2
-#define ADC_CFG1_MODE(x)                         (((uint32_t)(((uint32_t)(x))<<ADC_CFG1_MODE_SHIFT))&ADC_CFG1_MODE_MASK)
-#define ADC_CFG1_ADLSMP_MASK                     0x10u
-#define ADC_CFG1_ADLSMP_SHIFT                    4
-#define ADC_CFG1_ADIV_MASK                       0x60u
-#define ADC_CFG1_ADIV_SHIFT                      5
-#define ADC_CFG1_ADIV(x)                         (((uint32_t)(((uint32_t)(x))<<ADC_CFG1_ADIV_SHIFT))&ADC_CFG1_ADIV_MASK)
-#define ADC_CFG1_ADLPC_MASK                      0x80u
-#define ADC_CFG1_ADLPC_SHIFT                     7
-/* CFG2 Bit Fields */
-#define ADC_CFG2_ADLSTS_MASK                     0x3u
-#define ADC_CFG2_ADLSTS_SHIFT                    0
-#define ADC_CFG2_ADLSTS(x)                       (((uint32_t)(((uint32_t)(x))<<ADC_CFG2_ADLSTS_SHIFT))&ADC_CFG2_ADLSTS_MASK)
-#define ADC_CFG2_ADHSC_MASK                      0x4u
-#define ADC_CFG2_ADHSC_SHIFT                     2
-#define ADC_CFG2_ADACKEN_MASK                    0x8u
-#define ADC_CFG2_ADACKEN_SHIFT                   3
-#define ADC_CFG2_MUXSEL_MASK                     0x10u
-#define ADC_CFG2_MUXSEL_SHIFT                    4
-/* R Bit Fields */
-#define ADC_R_D_MASK                             0xFFFFu
-#define ADC_R_D_SHIFT                            0
-#define ADC_R_D(x)                               (((uint32_t)(((uint32_t)(x))<<ADC_R_D_SHIFT))&ADC_R_D_MASK)
-/* CV1 Bit Fields */
-#define ADC_CV1_CV_MASK                          0xFFFFu
-#define ADC_CV1_CV_SHIFT                         0
-#define ADC_CV1_CV(x)                            (((uint32_t)(((uint32_t)(x))<<ADC_CV1_CV_SHIFT))&ADC_CV1_CV_MASK)
-/* CV2 Bit Fields */
-#define ADC_CV2_CV_MASK                          0xFFFFu
-#define ADC_CV2_CV_SHIFT                         0
-#define ADC_CV2_CV(x)                            (((uint32_t)(((uint32_t)(x))<<ADC_CV2_CV_SHIFT))&ADC_CV2_CV_MASK)
-/* SC2 Bit Fields */
-#define ADC_SC2_REFSEL_MASK                      0x3u
-#define ADC_SC2_REFSEL_SHIFT                     0
-#define ADC_SC2_REFSEL(x)                        (((uint32_t)(((uint32_t)(x))<<ADC_SC2_REFSEL_SHIFT))&ADC_SC2_REFSEL_MASK)
-#define ADC_SC2_DMAEN_MASK                       0x4u
-#define ADC_SC2_DMAEN_SHIFT                      2
-#define ADC_SC2_ACREN_MASK                       0x8u
-#define ADC_SC2_ACREN_SHIFT                      3
-#define ADC_SC2_ACFGT_MASK                       0x10u
-#define ADC_SC2_ACFGT_SHIFT                      4
-#define ADC_SC2_ACFE_MASK                        0x20u
-#define ADC_SC2_ACFE_SHIFT                       5
-#define ADC_SC2_ADTRG_MASK                       0x40u
-#define ADC_SC2_ADTRG_SHIFT                      6
-#define ADC_SC2_ADACT_MASK                       0x80u
-#define ADC_SC2_ADACT_SHIFT                      7
-/* SC3 Bit Fields */
-#define ADC_SC3_AVGS_MASK                        0x3u
-#define ADC_SC3_AVGS_SHIFT                       0
-#define ADC_SC3_AVGS(x)                          (((uint32_t)(((uint32_t)(x))<<ADC_SC3_AVGS_SHIFT))&ADC_SC3_AVGS_MASK)
-#define ADC_SC3_AVGE_MASK                        0x4u
-#define ADC_SC3_AVGE_SHIFT                       2
-#define ADC_SC3_ADCO_MASK                        0x8u
-#define ADC_SC3_ADCO_SHIFT                       3
-#define ADC_SC3_CALF_MASK                        0x40u
-#define ADC_SC3_CALF_SHIFT                       6
-#define ADC_SC3_CAL_MASK                         0x80u
-#define ADC_SC3_CAL_SHIFT                        7
-/* OFS Bit Fields */
-#define ADC_OFS_OFS_MASK                         0xFFFFu
-#define ADC_OFS_OFS_SHIFT                        0
-#define ADC_OFS_OFS(x)                           (((uint32_t)(((uint32_t)(x))<<ADC_OFS_OFS_SHIFT))&ADC_OFS_OFS_MASK)
-/* PG Bit Fields */
-#define ADC_PG_PG_MASK                           0xFFFFu
-#define ADC_PG_PG_SHIFT                          0
-#define ADC_PG_PG(x)                             (((uint32_t)(((uint32_t)(x))<<ADC_PG_PG_SHIFT))&ADC_PG_PG_MASK)
-/* MG Bit Fields */
-#define ADC_MG_MG_MASK                           0xFFFFu
-#define ADC_MG_MG_SHIFT                          0
-#define ADC_MG_MG(x)                             (((uint32_t)(((uint32_t)(x))<<ADC_MG_MG_SHIFT))&ADC_MG_MG_MASK)
-/* CLPD Bit Fields */
-#define ADC_CLPD_CLPD_MASK                       0x3Fu
-#define ADC_CLPD_CLPD_SHIFT                      0
-#define ADC_CLPD_CLPD(x)                         (((uint32_t)(((uint32_t)(x))<<ADC_CLPD_CLPD_SHIFT))&ADC_CLPD_CLPD_MASK)
-/* CLPS Bit Fields */
-#define ADC_CLPS_CLPS_MASK                       0x3Fu
-#define ADC_CLPS_CLPS_SHIFT                      0
-#define ADC_CLPS_CLPS(x)                         (((uint32_t)(((uint32_t)(x))<<ADC_CLPS_CLPS_SHIFT))&ADC_CLPS_CLPS_MASK)
-/* CLP4 Bit Fields */
-#define ADC_CLP4_CLP4_MASK                       0x3FFu
-#define ADC_CLP4_CLP4_SHIFT                      0
-#define ADC_CLP4_CLP4(x)                         (((uint32_t)(((uint32_t)(x))<<ADC_CLP4_CLP4_SHIFT))&ADC_CLP4_CLP4_MASK)
-/* CLP3 Bit Fields */
-#define ADC_CLP3_CLP3_MASK                       0x1FFu
-#define ADC_CLP3_CLP3_SHIFT                      0
-#define ADC_CLP3_CLP3(x)                         (((uint32_t)(((uint32_t)(x))<<ADC_CLP3_CLP3_SHIFT))&ADC_CLP3_CLP3_MASK)
-/* CLP2 Bit Fields */
-#define ADC_CLP2_CLP2_MASK                       0xFFu
-#define ADC_CLP2_CLP2_SHIFT                      0
-#define ADC_CLP2_CLP2(x)                         (((uint32_t)(((uint32_t)(x))<<ADC_CLP2_CLP2_SHIFT))&ADC_CLP2_CLP2_MASK)
-/* CLP1 Bit Fields */
-#define ADC_CLP1_CLP1_MASK                       0x7Fu
-#define ADC_CLP1_CLP1_SHIFT                      0
-#define ADC_CLP1_CLP1(x)                         (((uint32_t)(((uint32_t)(x))<<ADC_CLP1_CLP1_SHIFT))&ADC_CLP1_CLP1_MASK)
-/* CLP0 Bit Fields */
-#define ADC_CLP0_CLP0_MASK                       0x3Fu
-#define ADC_CLP0_CLP0_SHIFT                      0
-#define ADC_CLP0_CLP0(x)                         (((uint32_t)(((uint32_t)(x))<<ADC_CLP0_CLP0_SHIFT))&ADC_CLP0_CLP0_MASK)
-/* CLMD Bit Fields */
-#define ADC_CLMD_CLMD_MASK                       0x3Fu
-#define ADC_CLMD_CLMD_SHIFT                      0
-#define ADC_CLMD_CLMD(x)                         (((uint32_t)(((uint32_t)(x))<<ADC_CLMD_CLMD_SHIFT))&ADC_CLMD_CLMD_MASK)
-/* CLMS Bit Fields */
-#define ADC_CLMS_CLMS_MASK                       0x3Fu
-#define ADC_CLMS_CLMS_SHIFT                      0
-#define ADC_CLMS_CLMS(x)                         (((uint32_t)(((uint32_t)(x))<<ADC_CLMS_CLMS_SHIFT))&ADC_CLMS_CLMS_MASK)
-/* CLM4 Bit Fields */
-#define ADC_CLM4_CLM4_MASK                       0x3FFu
-#define ADC_CLM4_CLM4_SHIFT                      0
-#define ADC_CLM4_CLM4(x)                         (((uint32_t)(((uint32_t)(x))<<ADC_CLM4_CLM4_SHIFT))&ADC_CLM4_CLM4_MASK)
-/* CLM3 Bit Fields */
-#define ADC_CLM3_CLM3_MASK                       0x1FFu
-#define ADC_CLM3_CLM3_SHIFT                      0
-#define ADC_CLM3_CLM3(x)                         (((uint32_t)(((uint32_t)(x))<<ADC_CLM3_CLM3_SHIFT))&ADC_CLM3_CLM3_MASK)
-/* CLM2 Bit Fields */
-#define ADC_CLM2_CLM2_MASK                       0xFFu
-#define ADC_CLM2_CLM2_SHIFT                      0
-#define ADC_CLM2_CLM2(x)                         (((uint32_t)(((uint32_t)(x))<<ADC_CLM2_CLM2_SHIFT))&ADC_CLM2_CLM2_MASK)
-/* CLM1 Bit Fields */
-#define ADC_CLM1_CLM1_MASK                       0x7Fu
-#define ADC_CLM1_CLM1_SHIFT                      0
-#define ADC_CLM1_CLM1(x)                         (((uint32_t)(((uint32_t)(x))<<ADC_CLM1_CLM1_SHIFT))&ADC_CLM1_CLM1_MASK)
-/* CLM0 Bit Fields */
-#define ADC_CLM0_CLM0_MASK                       0x3Fu
-#define ADC_CLM0_CLM0_SHIFT                      0
-#define ADC_CLM0_CLM0(x)                         (((uint32_t)(((uint32_t)(x))<<ADC_CLM0_CLM0_SHIFT))&ADC_CLM0_CLM0_MASK)
-
-/*!
- * @}
- */ /* end of group ADC_Register_Masks */
-
-
-/* ADC - Peripheral instance base addresses */
-/** Peripheral ADC0 base address */
-#define ADC0_BASE                                (0x4003B000u)
-/** Peripheral ADC0 base pointer */
-#define ADC0                                     ((ADC_Type *)ADC0_BASE)
-#define ADC0_BASE_PTR                            (ADC0)
-/** Array initializer of ADC peripheral base addresses */
-#define ADC_BASE_ADDRS                           { ADC0_BASE }
-/** Array initializer of ADC peripheral base pointers */
-#define ADC_BASE_PTRS                            { ADC0 }
-/** Interrupt vectors for the ADC peripheral type */
-#define ADC_IRQS                                 { ADC0_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- ADC - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup ADC_Register_Accessor_Macros ADC - Register accessor macros
- * @{
- */
-
-
-/* ADC - Register instance definitions */
-/* ADC0 */
-#define ADC0_SC1A                                ADC_SC1_REG(ADC0,0)
-#define ADC0_SC1B                                ADC_SC1_REG(ADC0,1)
-#define ADC0_CFG1                                ADC_CFG1_REG(ADC0)
-#define ADC0_CFG2                                ADC_CFG2_REG(ADC0)
-#define ADC0_RA                                  ADC_R_REG(ADC0,0)
-#define ADC0_RB                                  ADC_R_REG(ADC0,1)
-#define ADC0_CV1                                 ADC_CV1_REG(ADC0)
-#define ADC0_CV2                                 ADC_CV2_REG(ADC0)
-#define ADC0_SC2                                 ADC_SC2_REG(ADC0)
-#define ADC0_SC3                                 ADC_SC3_REG(ADC0)
-#define ADC0_OFS                                 ADC_OFS_REG(ADC0)
-#define ADC0_PG                                  ADC_PG_REG(ADC0)
-#define ADC0_MG                                  ADC_MG_REG(ADC0)
-#define ADC0_CLPD                                ADC_CLPD_REG(ADC0)
-#define ADC0_CLPS                                ADC_CLPS_REG(ADC0)
-#define ADC0_CLP4                                ADC_CLP4_REG(ADC0)
-#define ADC0_CLP3                                ADC_CLP3_REG(ADC0)
-#define ADC0_CLP2                                ADC_CLP2_REG(ADC0)
-#define ADC0_CLP1                                ADC_CLP1_REG(ADC0)
-#define ADC0_CLP0                                ADC_CLP0_REG(ADC0)
-#define ADC0_CLMD                                ADC_CLMD_REG(ADC0)
-#define ADC0_CLMS                                ADC_CLMS_REG(ADC0)
-#define ADC0_CLM4                                ADC_CLM4_REG(ADC0)
-#define ADC0_CLM3                                ADC_CLM3_REG(ADC0)
-#define ADC0_CLM2                                ADC_CLM2_REG(ADC0)
-#define ADC0_CLM1                                ADC_CLM1_REG(ADC0)
-#define ADC0_CLM0                                ADC_CLM0_REG(ADC0)
-
-/* ADC - Register array accessors */
-#define ADC0_SC1(index)                          ADC_SC1_REG(ADC0,index)
-#define ADC0_R(index)                            ADC_R_REG(ADC0,index)
-
-/*!
- * @}
- */ /* end of group ADC_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group ADC_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- CMP Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup CMP_Peripheral_Access_Layer CMP Peripheral Access Layer
- * @{
- */
-
-/** CMP - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t CR0;                                /**< CMP Control Register 0, offset: 0x0 */
-  __IO uint8_t CR1;                                /**< CMP Control Register 1, offset: 0x1 */
-  __IO uint8_t FPR;                                /**< CMP Filter Period Register, offset: 0x2 */
-  __IO uint8_t SCR;                                /**< CMP Status and Control Register, offset: 0x3 */
-  __IO uint8_t DACCR;                              /**< DAC Control Register, offset: 0x4 */
-  __IO uint8_t MUXCR;                              /**< MUX Control Register, offset: 0x5 */
-} CMP_Type, *CMP_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- CMP - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup CMP_Register_Accessor_Macros CMP - Register accessor macros
- * @{
- */
-
-
-/* CMP - Register accessors */
-#define CMP_CR0_REG(base)                        ((base)->CR0)
-#define CMP_CR1_REG(base)                        ((base)->CR1)
-#define CMP_FPR_REG(base)                        ((base)->FPR)
-#define CMP_SCR_REG(base)                        ((base)->SCR)
-#define CMP_DACCR_REG(base)                      ((base)->DACCR)
-#define CMP_MUXCR_REG(base)                      ((base)->MUXCR)
-
-/*!
- * @}
- */ /* end of group CMP_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- CMP Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup CMP_Register_Masks CMP Register Masks
- * @{
- */
-
-/* CR0 Bit Fields */
-#define CMP_CR0_HYSTCTR_MASK                     0x3u
-#define CMP_CR0_HYSTCTR_SHIFT                    0
-#define CMP_CR0_HYSTCTR(x)                       (((uint8_t)(((uint8_t)(x))<<CMP_CR0_HYSTCTR_SHIFT))&CMP_CR0_HYSTCTR_MASK)
-#define CMP_CR0_FILTER_CNT_MASK                  0x70u
-#define CMP_CR0_FILTER_CNT_SHIFT                 4
-#define CMP_CR0_FILTER_CNT(x)                    (((uint8_t)(((uint8_t)(x))<<CMP_CR0_FILTER_CNT_SHIFT))&CMP_CR0_FILTER_CNT_MASK)
-/* CR1 Bit Fields */
-#define CMP_CR1_EN_MASK                          0x1u
-#define CMP_CR1_EN_SHIFT                         0
-#define CMP_CR1_OPE_MASK                         0x2u
-#define CMP_CR1_OPE_SHIFT                        1
-#define CMP_CR1_COS_MASK                         0x4u
-#define CMP_CR1_COS_SHIFT                        2
-#define CMP_CR1_INV_MASK                         0x8u
-#define CMP_CR1_INV_SHIFT                        3
-#define CMP_CR1_PMODE_MASK                       0x10u
-#define CMP_CR1_PMODE_SHIFT                      4
-#define CMP_CR1_TRIGM_MASK                       0x20u
-#define CMP_CR1_TRIGM_SHIFT                      5
-#define CMP_CR1_WE_MASK                          0x40u
-#define CMP_CR1_WE_SHIFT                         6
-#define CMP_CR1_SE_MASK                          0x80u
-#define CMP_CR1_SE_SHIFT                         7
-/* FPR Bit Fields */
-#define CMP_FPR_FILT_PER_MASK                    0xFFu
-#define CMP_FPR_FILT_PER_SHIFT                   0
-#define CMP_FPR_FILT_PER(x)                      (((uint8_t)(((uint8_t)(x))<<CMP_FPR_FILT_PER_SHIFT))&CMP_FPR_FILT_PER_MASK)
-/* SCR Bit Fields */
-#define CMP_SCR_COUT_MASK                        0x1u
-#define CMP_SCR_COUT_SHIFT                       0
-#define CMP_SCR_CFF_MASK                         0x2u
-#define CMP_SCR_CFF_SHIFT                        1
-#define CMP_SCR_CFR_MASK                         0x4u
-#define CMP_SCR_CFR_SHIFT                        2
-#define CMP_SCR_IEF_MASK                         0x8u
-#define CMP_SCR_IEF_SHIFT                        3
-#define CMP_SCR_IER_MASK                         0x10u
-#define CMP_SCR_IER_SHIFT                        4
-#define CMP_SCR_DMAEN_MASK                       0x40u
-#define CMP_SCR_DMAEN_SHIFT                      6
-/* DACCR Bit Fields */
-#define CMP_DACCR_VOSEL_MASK                     0x3Fu
-#define CMP_DACCR_VOSEL_SHIFT                    0
-#define CMP_DACCR_VOSEL(x)                       (((uint8_t)(((uint8_t)(x))<<CMP_DACCR_VOSEL_SHIFT))&CMP_DACCR_VOSEL_MASK)
-#define CMP_DACCR_VRSEL_MASK                     0x40u
-#define CMP_DACCR_VRSEL_SHIFT                    6
-#define CMP_DACCR_DACEN_MASK                     0x80u
-#define CMP_DACCR_DACEN_SHIFT                    7
-/* MUXCR Bit Fields */
-#define CMP_MUXCR_MSEL_MASK                      0x7u
-#define CMP_MUXCR_MSEL_SHIFT                     0
-#define CMP_MUXCR_MSEL(x)                        (((uint8_t)(((uint8_t)(x))<<CMP_MUXCR_MSEL_SHIFT))&CMP_MUXCR_MSEL_MASK)
-#define CMP_MUXCR_PSEL_MASK                      0x38u
-#define CMP_MUXCR_PSEL_SHIFT                     3
-#define CMP_MUXCR_PSEL(x)                        (((uint8_t)(((uint8_t)(x))<<CMP_MUXCR_PSEL_SHIFT))&CMP_MUXCR_PSEL_MASK)
-#define CMP_MUXCR_PSTM_MASK                      0x80u
-#define CMP_MUXCR_PSTM_SHIFT                     7
-
-/*!
- * @}
- */ /* end of group CMP_Register_Masks */
-
-
-/* CMP - Peripheral instance base addresses */
-/** Peripheral CMP0 base address */
-#define CMP0_BASE                                (0x40073000u)
-/** Peripheral CMP0 base pointer */
-#define CMP0                                     ((CMP_Type *)CMP0_BASE)
-#define CMP0_BASE_PTR                            (CMP0)
-/** Array initializer of CMP peripheral base addresses */
-#define CMP_BASE_ADDRS                           { CMP0_BASE }
-/** Array initializer of CMP peripheral base pointers */
-#define CMP_BASE_PTRS                            { CMP0 }
-/** Interrupt vectors for the CMP peripheral type */
-#define CMP_IRQS                                 { CMP0_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- CMP - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup CMP_Register_Accessor_Macros CMP - Register accessor macros
- * @{
- */
-
-
-/* CMP - Register instance definitions */
-/* CMP0 */
-#define CMP0_CR0                                 CMP_CR0_REG(CMP0)
-#define CMP0_CR1                                 CMP_CR1_REG(CMP0)
-#define CMP0_FPR                                 CMP_FPR_REG(CMP0)
-#define CMP0_SCR                                 CMP_SCR_REG(CMP0)
-#define CMP0_DACCR                               CMP_DACCR_REG(CMP0)
-#define CMP0_MUXCR                               CMP_MUXCR_REG(CMP0)
-
-/*!
- * @}
- */ /* end of group CMP_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group CMP_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- DAC Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup DAC_Peripheral_Access_Layer DAC Peripheral Access Layer
- * @{
- */
-
-/** DAC - Register Layout Typedef */
-typedef struct {
-  struct {                                         /* offset: 0x0, array step: 0x2 */
-    __IO uint8_t DATL;                               /**< DAC Data Low Register, array offset: 0x0, array step: 0x2 */
-    __IO uint8_t DATH;                               /**< DAC Data High Register, array offset: 0x1, array step: 0x2 */
-  } DAT[2];
-       uint8_t RESERVED_0[28];
-  __IO uint8_t SR;                                 /**< DAC Status Register, offset: 0x20 */
-  __IO uint8_t C0;                                 /**< DAC Control Register, offset: 0x21 */
-  __IO uint8_t C1;                                 /**< DAC Control Register 1, offset: 0x22 */
-  __IO uint8_t C2;                                 /**< DAC Control Register 2, offset: 0x23 */
-} DAC_Type, *DAC_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- DAC - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup DAC_Register_Accessor_Macros DAC - Register accessor macros
- * @{
- */
-
-
-/* DAC - Register accessors */
-#define DAC_DATL_REG(base,index)                 ((base)->DAT[index].DATL)
-#define DAC_DATH_REG(base,index)                 ((base)->DAT[index].DATH)
-#define DAC_SR_REG(base)                         ((base)->SR)
-#define DAC_C0_REG(base)                         ((base)->C0)
-#define DAC_C1_REG(base)                         ((base)->C1)
-#define DAC_C2_REG(base)                         ((base)->C2)
-
-/*!
- * @}
- */ /* end of group DAC_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- DAC Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup DAC_Register_Masks DAC Register Masks
- * @{
- */
-
-/* DATL Bit Fields */
-#define DAC_DATL_DATA0_MASK                      0xFFu
-#define DAC_DATL_DATA0_SHIFT                     0
-#define DAC_DATL_DATA0(x)                        (((uint8_t)(((uint8_t)(x))<<DAC_DATL_DATA0_SHIFT))&DAC_DATL_DATA0_MASK)
-/* DATH Bit Fields */
-#define DAC_DATH_DATA1_MASK                      0xFu
-#define DAC_DATH_DATA1_SHIFT                     0
-#define DAC_DATH_DATA1(x)                        (((uint8_t)(((uint8_t)(x))<<DAC_DATH_DATA1_SHIFT))&DAC_DATH_DATA1_MASK)
-/* SR Bit Fields */
-#define DAC_SR_DACBFRPBF_MASK                    0x1u
-#define DAC_SR_DACBFRPBF_SHIFT                   0
-#define DAC_SR_DACBFRPTF_MASK                    0x2u
-#define DAC_SR_DACBFRPTF_SHIFT                   1
-/* C0 Bit Fields */
-#define DAC_C0_DACBBIEN_MASK                     0x1u
-#define DAC_C0_DACBBIEN_SHIFT                    0
-#define DAC_C0_DACBTIEN_MASK                     0x2u
-#define DAC_C0_DACBTIEN_SHIFT                    1
-#define DAC_C0_LPEN_MASK                         0x8u
-#define DAC_C0_LPEN_SHIFT                        3
-#define DAC_C0_DACSWTRG_MASK                     0x10u
-#define DAC_C0_DACSWTRG_SHIFT                    4
-#define DAC_C0_DACTRGSEL_MASK                    0x20u
-#define DAC_C0_DACTRGSEL_SHIFT                   5
-#define DAC_C0_DACRFS_MASK                       0x40u
-#define DAC_C0_DACRFS_SHIFT                      6
-#define DAC_C0_DACEN_MASK                        0x80u
-#define DAC_C0_DACEN_SHIFT                       7
-/* C1 Bit Fields */
-#define DAC_C1_DACBFEN_MASK                      0x1u
-#define DAC_C1_DACBFEN_SHIFT                     0
-#define DAC_C1_DACBFMD_MASK                      0x6u
-#define DAC_C1_DACBFMD_SHIFT                     1
-#define DAC_C1_DACBFMD(x)                        (((uint8_t)(((uint8_t)(x))<<DAC_C1_DACBFMD_SHIFT))&DAC_C1_DACBFMD_MASK)
-#define DAC_C1_DMAEN_MASK                        0x80u
-#define DAC_C1_DMAEN_SHIFT                       7
-/* C2 Bit Fields */
-#define DAC_C2_DACBFUP_MASK                      0x1u
-#define DAC_C2_DACBFUP_SHIFT                     0
-#define DAC_C2_DACBFRP_MASK                      0x10u
-#define DAC_C2_DACBFRP_SHIFT                     4
-
-/*!
- * @}
- */ /* end of group DAC_Register_Masks */
-
-
-/* DAC - Peripheral instance base addresses */
-/** Peripheral DAC0 base address */
-#define DAC0_BASE                                (0x4003F000u)
-/** Peripheral DAC0 base pointer */
-#define DAC0                                     ((DAC_Type *)DAC0_BASE)
-#define DAC0_BASE_PTR                            (DAC0)
-/** Array initializer of DAC peripheral base addresses */
-#define DAC_BASE_ADDRS                           { DAC0_BASE }
-/** Array initializer of DAC peripheral base pointers */
-#define DAC_BASE_PTRS                            { DAC0 }
-/** Interrupt vectors for the DAC peripheral type */
-#define DAC_IRQS                                 { DAC0_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- DAC - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup DAC_Register_Accessor_Macros DAC - Register accessor macros
- * @{
- */
-
-
-/* DAC - Register instance definitions */
-/* DAC0 */
-#define DAC0_DAT0L                               DAC_DATL_REG(DAC0,0)
-#define DAC0_DAT0H                               DAC_DATH_REG(DAC0,0)
-#define DAC0_DAT1L                               DAC_DATL_REG(DAC0,1)
-#define DAC0_DAT1H                               DAC_DATH_REG(DAC0,1)
-#define DAC0_SR                                  DAC_SR_REG(DAC0)
-#define DAC0_C0                                  DAC_C0_REG(DAC0)
-#define DAC0_C1                                  DAC_C1_REG(DAC0)
-#define DAC0_C2                                  DAC_C2_REG(DAC0)
-
-/* DAC - Register array accessors */
-#define DAC0_DATL(index)                         DAC_DATL_REG(DAC0,index)
-#define DAC0_DATH(index)                         DAC_DATH_REG(DAC0,index)
-
-/*!
- * @}
- */ /* end of group DAC_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group DAC_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- DMA Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup DMA_Peripheral_Access_Layer DMA Peripheral Access Layer
- * @{
- */
-
-/** DMA - Register Layout Typedef */
-typedef struct {
-       uint8_t RESERVED_0[256];
-  struct {                                         /* offset: 0x100, array step: 0x10 */
-    __IO uint32_t SAR;                               /**< Source Address Register, array offset: 0x100, array step: 0x10 */
-    __IO uint32_t DAR;                               /**< Destination Address Register, array offset: 0x104, array step: 0x10 */
-    union {                                          /* offset: 0x108, array step: 0x10 */
-      __IO uint32_t DSR_BCR;                           /**< DMA Status Register / Byte Count Register, array offset: 0x108, array step: 0x10 */
-      struct {                                         /* offset: 0x108, array step: 0x10 */
-             uint8_t RESERVED_0[3];
-        __IO uint8_t DSR;                                /**< DMA_DSR0 register...DMA_DSR3 register., array offset: 0x10B, array step: 0x10 */
-      } DMA_DSR_ACCESS8BIT;
-    };
-    __IO uint32_t DCR;                               /**< DMA Control Register, array offset: 0x10C, array step: 0x10 */
-  } DMA[4];
-} DMA_Type, *DMA_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- DMA - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup DMA_Register_Accessor_Macros DMA - Register accessor macros
- * @{
- */
-
-
-/* DMA - Register accessors */
-#define DMA_SAR_REG(base,index)                  ((base)->DMA[index].SAR)
-#define DMA_DAR_REG(base,index)                  ((base)->DMA[index].DAR)
-#define DMA_DSR_BCR_REG(base,index)              ((base)->DMA[index].DSR_BCR)
-#define DMA_DSR_REG(base,index)                  ((base)->DMA[index].DMA_DSR_ACCESS8BIT.DSR)
-#define DMA_DCR_REG(base,index)                  ((base)->DMA[index].DCR)
-
-/*!
- * @}
- */ /* end of group DMA_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- DMA Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup DMA_Register_Masks DMA Register Masks
- * @{
- */
-
-/* SAR Bit Fields */
-#define DMA_SAR_SAR_MASK                         0xFFFFFFFFu
-#define DMA_SAR_SAR_SHIFT                        0
-#define DMA_SAR_SAR(x)                           (((uint32_t)(((uint32_t)(x))<<DMA_SAR_SAR_SHIFT))&DMA_SAR_SAR_MASK)
-/* DAR Bit Fields */
-#define DMA_DAR_DAR_MASK                         0xFFFFFFFFu
-#define DMA_DAR_DAR_SHIFT                        0
-#define DMA_DAR_DAR(x)                           (((uint32_t)(((uint32_t)(x))<<DMA_DAR_DAR_SHIFT))&DMA_DAR_DAR_MASK)
-/* DSR_BCR Bit Fields */
-#define DMA_DSR_BCR_BCR_MASK                     0xFFFFFFu
-#define DMA_DSR_BCR_BCR_SHIFT                    0
-#define DMA_DSR_BCR_BCR(x)                       (((uint32_t)(((uint32_t)(x))<<DMA_DSR_BCR_BCR_SHIFT))&DMA_DSR_BCR_BCR_MASK)
-#define DMA_DSR_BCR_DONE_MASK                    0x1000000u
-#define DMA_DSR_BCR_DONE_SHIFT                   24
-#define DMA_DSR_BCR_BSY_MASK                     0x2000000u
-#define DMA_DSR_BCR_BSY_SHIFT                    25
-#define DMA_DSR_BCR_REQ_MASK                     0x4000000u
-#define DMA_DSR_BCR_REQ_SHIFT                    26
-#define DMA_DSR_BCR_BED_MASK                     0x10000000u
-#define DMA_DSR_BCR_BED_SHIFT                    28
-#define DMA_DSR_BCR_BES_MASK                     0x20000000u
-#define DMA_DSR_BCR_BES_SHIFT                    29
-#define DMA_DSR_BCR_CE_MASK                      0x40000000u
-#define DMA_DSR_BCR_CE_SHIFT                     30
-/* DCR Bit Fields */
-#define DMA_DCR_LCH2_MASK                        0x3u
-#define DMA_DCR_LCH2_SHIFT                       0
-#define DMA_DCR_LCH2(x)                          (((uint32_t)(((uint32_t)(x))<<DMA_DCR_LCH2_SHIFT))&DMA_DCR_LCH2_MASK)
-#define DMA_DCR_LCH1_MASK                        0xCu
-#define DMA_DCR_LCH1_SHIFT                       2
-#define DMA_DCR_LCH1(x)                          (((uint32_t)(((uint32_t)(x))<<DMA_DCR_LCH1_SHIFT))&DMA_DCR_LCH1_MASK)
-#define DMA_DCR_LINKCC_MASK                      0x30u
-#define DMA_DCR_LINKCC_SHIFT                     4
-#define DMA_DCR_LINKCC(x)                        (((uint32_t)(((uint32_t)(x))<<DMA_DCR_LINKCC_SHIFT))&DMA_DCR_LINKCC_MASK)
-#define DMA_DCR_D_REQ_MASK                       0x80u
-#define DMA_DCR_D_REQ_SHIFT                      7
-#define DMA_DCR_DMOD_MASK                        0xF00u
-#define DMA_DCR_DMOD_SHIFT                       8
-#define DMA_DCR_DMOD(x)                          (((uint32_t)(((uint32_t)(x))<<DMA_DCR_DMOD_SHIFT))&DMA_DCR_DMOD_MASK)
-#define DMA_DCR_SMOD_MASK                        0xF000u
-#define DMA_DCR_SMOD_SHIFT                       12
-#define DMA_DCR_SMOD(x)                          (((uint32_t)(((uint32_t)(x))<<DMA_DCR_SMOD_SHIFT))&DMA_DCR_SMOD_MASK)
-#define DMA_DCR_START_MASK                       0x10000u
-#define DMA_DCR_START_SHIFT                      16
-#define DMA_DCR_DSIZE_MASK                       0x60000u
-#define DMA_DCR_DSIZE_SHIFT                      17
-#define DMA_DCR_DSIZE(x)                         (((uint32_t)(((uint32_t)(x))<<DMA_DCR_DSIZE_SHIFT))&DMA_DCR_DSIZE_MASK)
-#define DMA_DCR_DINC_MASK                        0x80000u
-#define DMA_DCR_DINC_SHIFT                       19
-#define DMA_DCR_SSIZE_MASK                       0x300000u
-#define DMA_DCR_SSIZE_SHIFT                      20
-#define DMA_DCR_SSIZE(x)                         (((uint32_t)(((uint32_t)(x))<<DMA_DCR_SSIZE_SHIFT))&DMA_DCR_SSIZE_MASK)
-#define DMA_DCR_SINC_MASK                        0x400000u
-#define DMA_DCR_SINC_SHIFT                       22
-#define DMA_DCR_EADREQ_MASK                      0x800000u
-#define DMA_DCR_EADREQ_SHIFT                     23
-#define DMA_DCR_AA_MASK                          0x10000000u
-#define DMA_DCR_AA_SHIFT                         28
-#define DMA_DCR_CS_MASK                          0x20000000u
-#define DMA_DCR_CS_SHIFT                         29
-#define DMA_DCR_ERQ_MASK                         0x40000000u
-#define DMA_DCR_ERQ_SHIFT                        30
-#define DMA_DCR_EINT_MASK                        0x80000000u
-#define DMA_DCR_EINT_SHIFT                       31
-
-/*!
- * @}
- */ /* end of group DMA_Register_Masks */
-
-
-/* DMA - Peripheral instance base addresses */
-/** Peripheral DMA base address */
-#define DMA_BASE                                 (0x40008000u)
-/** Peripheral DMA base pointer */
-#define DMA0                                     ((DMA_Type *)DMA_BASE)
-#define DMA_BASE_PTR                             (DMA0)
-/** Array initializer of DMA peripheral base addresses */
-#define DMA_BASE_ADDRS                           { DMA_BASE }
-/** Array initializer of DMA peripheral base pointers */
-#define DMA_BASE_PTRS                            { DMA0 }
-/** Interrupt vectors for the DMA peripheral type */
-#define DMA_CHN_IRQS                             { DMA0_IRQn, DMA1_IRQn, DMA2_IRQn, DMA3_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- DMA - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup DMA_Register_Accessor_Macros DMA - Register accessor macros
- * @{
- */
-
-
-/* DMA - Register instance definitions */
-/* DMA */
-#define DMA_SAR0                                 DMA_SAR_REG(DMA0,0)
-#define DMA_DAR0                                 DMA_DAR_REG(DMA0,0)
-#define DMA_DSR_BCR0                             DMA_DSR_BCR_REG(DMA0,0)
-#define DMA_DSR0                                 DMA_DSR_REG(DMA0,0)
-#define DMA_DCR0                                 DMA_DCR_REG(DMA0,0)
-#define DMA_SAR1                                 DMA_SAR_REG(DMA0,1)
-#define DMA_DAR1                                 DMA_DAR_REG(DMA0,1)
-#define DMA_DSR_BCR1                             DMA_DSR_BCR_REG(DMA0,1)
-#define DMA_DSR1                                 DMA_DSR_REG(DMA0,1)
-#define DMA_DCR1                                 DMA_DCR_REG(DMA0,1)
-#define DMA_SAR2                                 DMA_SAR_REG(DMA0,2)
-#define DMA_DAR2                                 DMA_DAR_REG(DMA0,2)
-#define DMA_DSR_BCR2                             DMA_DSR_BCR_REG(DMA0,2)
-#define DMA_DSR2                                 DMA_DSR_REG(DMA0,2)
-#define DMA_DCR2                                 DMA_DCR_REG(DMA0,2)
-#define DMA_SAR3                                 DMA_SAR_REG(DMA0,3)
-#define DMA_DAR3                                 DMA_DAR_REG(DMA0,3)
-#define DMA_DSR_BCR3                             DMA_DSR_BCR_REG(DMA0,3)
-#define DMA_DSR3                                 DMA_DSR_REG(DMA0,3)
-#define DMA_DCR3                                 DMA_DCR_REG(DMA0,3)
-
-/* DMA - Register array accessors */
-#define DMA_SAR(index)                           DMA_SAR_REG(DMA0,index)
-#define DMA_DAR(index)                           DMA_DAR_REG(DMA0,index)
-#define DMA_DSR_BCR(index)                       DMA_DSR_BCR_REG(DMA0,index)
-#define DMA_DSR(index)                           DMA_DSR_REG(DMA0,index)
-#define DMA_DCR(index)                           DMA_DCR_REG(DMA0,index)
-
-/*!
- * @}
- */ /* end of group DMA_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group DMA_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- DMAMUX Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup DMAMUX_Peripheral_Access_Layer DMAMUX Peripheral Access Layer
- * @{
- */
-
-/** DMAMUX - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t CHCFG[4];                           /**< Channel Configuration register, array offset: 0x0, array step: 0x1 */
-} DMAMUX_Type, *DMAMUX_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- DMAMUX - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup DMAMUX_Register_Accessor_Macros DMAMUX - Register accessor macros
- * @{
- */
-
-
-/* DMAMUX - Register accessors */
-#define DMAMUX_CHCFG_REG(base,index)             ((base)->CHCFG[index])
-
-/*!
- * @}
- */ /* end of group DMAMUX_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- DMAMUX Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup DMAMUX_Register_Masks DMAMUX Register Masks
- * @{
- */
-
-/* CHCFG Bit Fields */
-#define DMAMUX_CHCFG_SOURCE_MASK                 0x3Fu
-#define DMAMUX_CHCFG_SOURCE_SHIFT                0
-#define DMAMUX_CHCFG_SOURCE(x)                   (((uint8_t)(((uint8_t)(x))<<DMAMUX_CHCFG_SOURCE_SHIFT))&DMAMUX_CHCFG_SOURCE_MASK)
-#define DMAMUX_CHCFG_TRIG_MASK                   0x40u
-#define DMAMUX_CHCFG_TRIG_SHIFT                  6
-#define DMAMUX_CHCFG_ENBL_MASK                   0x80u
-#define DMAMUX_CHCFG_ENBL_SHIFT                  7
-
-/*!
- * @}
- */ /* end of group DMAMUX_Register_Masks */
-
-
-/* DMAMUX - Peripheral instance base addresses */
-/** Peripheral DMAMUX0 base address */
-#define DMAMUX0_BASE                             (0x40021000u)
-/** Peripheral DMAMUX0 base pointer */
-#define DMAMUX0                                  ((DMAMUX_Type *)DMAMUX0_BASE)
-#define DMAMUX0_BASE_PTR                         (DMAMUX0)
-/** Array initializer of DMAMUX peripheral base addresses */
-#define DMAMUX_BASE_ADDRS                        { DMAMUX0_BASE }
-/** Array initializer of DMAMUX peripheral base pointers */
-#define DMAMUX_BASE_PTRS                         { DMAMUX0 }
-
-/* ----------------------------------------------------------------------------
-   -- DMAMUX - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup DMAMUX_Register_Accessor_Macros DMAMUX - Register accessor macros
- * @{
- */
-
-
-/* DMAMUX - Register instance definitions */
-/* DMAMUX0 */
-#define DMAMUX0_CHCFG0                           DMAMUX_CHCFG_REG(DMAMUX0,0)
-#define DMAMUX0_CHCFG1                           DMAMUX_CHCFG_REG(DMAMUX0,1)
-#define DMAMUX0_CHCFG2                           DMAMUX_CHCFG_REG(DMAMUX0,2)
-#define DMAMUX0_CHCFG3                           DMAMUX_CHCFG_REG(DMAMUX0,3)
-
-/* DMAMUX - Register array accessors */
-#define DMAMUX0_CHCFG(index)                     DMAMUX_CHCFG_REG(DMAMUX0,index)
-
-/*!
- * @}
- */ /* end of group DMAMUX_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group DMAMUX_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- FLEXIO Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup FLEXIO_Peripheral_Access_Layer FLEXIO Peripheral Access Layer
- * @{
- */
-
-/** FLEXIO - Register Layout Typedef */
-typedef struct {
-  __I  uint32_t VERID;                             /**< Version ID Register, offset: 0x0 */
-  __I  uint32_t PARAM;                             /**< Parameter Register, offset: 0x4 */
-  __IO uint32_t CTRL;                              /**< FlexIO Control Register, offset: 0x8 */
-       uint8_t RESERVED_0[4];
-  __IO uint32_t SHIFTSTAT;                         /**< Shifter Status Register, offset: 0x10 */
-  __IO uint32_t SHIFTERR;                          /**< Shifter Error Register, offset: 0x14 */
-  __IO uint32_t TIMSTAT;                           /**< Timer Status Register, offset: 0x18 */
-       uint8_t RESERVED_1[4];
-  __IO uint32_t SHIFTSIEN;                         /**< Shifter Status Interrupt Enable, offset: 0x20 */
-  __IO uint32_t SHIFTEIEN;                         /**< Shifter Error Interrupt Enable, offset: 0x24 */
-  __IO uint32_t TIMIEN;                            /**< Timer Interrupt Enable Register, offset: 0x28 */
-       uint8_t RESERVED_2[4];
-  __IO uint32_t SHIFTSDEN;                         /**< Shifter Status DMA Enable, offset: 0x30 */
-       uint8_t RESERVED_3[76];
-  __IO uint32_t SHIFTCTL[4];                       /**< Shifter Control N Register, array offset: 0x80, array step: 0x4 */
-       uint8_t RESERVED_4[112];
-  __IO uint32_t SHIFTCFG[4];                       /**< Shifter Configuration N Register, array offset: 0x100, array step: 0x4 */
-       uint8_t RESERVED_5[240];
-  __IO uint32_t SHIFTBUF[4];                       /**< Shifter Buffer N Register, array offset: 0x200, array step: 0x4 */
-       uint8_t RESERVED_6[112];
-  __IO uint32_t SHIFTBUFBBS[4];                    /**< Shifter Buffer N Bit Byte Swapped Register, array offset: 0x280, array step: 0x4 */
-       uint8_t RESERVED_7[112];
-  __IO uint32_t SHIFTBUFBYS[4];                    /**< Shifter Buffer N Byte Swapped Register, array offset: 0x300, array step: 0x4 */
-       uint8_t RESERVED_8[112];
-  __IO uint32_t SHIFTBUFBIS[4];                    /**< Shifter Buffer N Bit Swapped Register, array offset: 0x380, array step: 0x4 */
-       uint8_t RESERVED_9[112];
-  __IO uint32_t TIMCTL[4];                         /**< Timer Control N Register, array offset: 0x400, array step: 0x4 */
-       uint8_t RESERVED_10[112];
-  __IO uint32_t TIMCFG[4];                         /**< Timer Configuration N Register, array offset: 0x480, array step: 0x4 */
-       uint8_t RESERVED_11[112];
-  __IO uint32_t TIMCMP[4];                         /**< Timer Compare N Register, array offset: 0x500, array step: 0x4 */
-} FLEXIO_Type, *FLEXIO_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- FLEXIO - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup FLEXIO_Register_Accessor_Macros FLEXIO - Register accessor macros
- * @{
- */
-
-
-/* FLEXIO - Register accessors */
-#define FLEXIO_VERID_REG(base)                   ((base)->VERID)
-#define FLEXIO_PARAM_REG(base)                   ((base)->PARAM)
-#define FLEXIO_CTRL_REG(base)                    ((base)->CTRL)
-#define FLEXIO_SHIFTSTAT_REG(base)               ((base)->SHIFTSTAT)
-#define FLEXIO_SHIFTERR_REG(base)                ((base)->SHIFTERR)
-#define FLEXIO_TIMSTAT_REG(base)                 ((base)->TIMSTAT)
-#define FLEXIO_SHIFTSIEN_REG(base)               ((base)->SHIFTSIEN)
-#define FLEXIO_SHIFTEIEN_REG(base)               ((base)->SHIFTEIEN)
-#define FLEXIO_TIMIEN_REG(base)                  ((base)->TIMIEN)
-#define FLEXIO_SHIFTSDEN_REG(base)               ((base)->SHIFTSDEN)
-#define FLEXIO_SHIFTCTL_REG(base,index)          ((base)->SHIFTCTL[index])
-#define FLEXIO_SHIFTCFG_REG(base,index)          ((base)->SHIFTCFG[index])
-#define FLEXIO_SHIFTBUF_REG(base,index)          ((base)->SHIFTBUF[index])
-#define FLEXIO_SHIFTBUFBBS_REG(base,index)       ((base)->SHIFTBUFBBS[index])
-#define FLEXIO_SHIFTBUFBYS_REG(base,index)       ((base)->SHIFTBUFBYS[index])
-#define FLEXIO_SHIFTBUFBIS_REG(base,index)       ((base)->SHIFTBUFBIS[index])
-#define FLEXIO_TIMCTL_REG(base,index)            ((base)->TIMCTL[index])
-#define FLEXIO_TIMCFG_REG(base,index)            ((base)->TIMCFG[index])
-#define FLEXIO_TIMCMP_REG(base,index)            ((base)->TIMCMP[index])
-
-/*!
- * @}
- */ /* end of group FLEXIO_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- FLEXIO Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup FLEXIO_Register_Masks FLEXIO Register Masks
- * @{
- */
-
-/* VERID Bit Fields */
-#define FLEXIO_VERID_FEATURE_MASK                0xFFFFu
-#define FLEXIO_VERID_FEATURE_SHIFT               0
-#define FLEXIO_VERID_FEATURE(x)                  (((uint32_t)(((uint32_t)(x))<<FLEXIO_VERID_FEATURE_SHIFT))&FLEXIO_VERID_FEATURE_MASK)
-#define FLEXIO_VERID_MINOR_MASK                  0xFF0000u
-#define FLEXIO_VERID_MINOR_SHIFT                 16
-#define FLEXIO_VERID_MINOR(x)                    (((uint32_t)(((uint32_t)(x))<<FLEXIO_VERID_MINOR_SHIFT))&FLEXIO_VERID_MINOR_MASK)
-#define FLEXIO_VERID_MAJOR_MASK                  0xFF000000u
-#define FLEXIO_VERID_MAJOR_SHIFT                 24
-#define FLEXIO_VERID_MAJOR(x)                    (((uint32_t)(((uint32_t)(x))<<FLEXIO_VERID_MAJOR_SHIFT))&FLEXIO_VERID_MAJOR_MASK)
-/* PARAM Bit Fields */
-#define FLEXIO_PARAM_SHIFTER_MASK                0xFFu
-#define FLEXIO_PARAM_SHIFTER_SHIFT               0
-#define FLEXIO_PARAM_SHIFTER(x)                  (((uint32_t)(((uint32_t)(x))<<FLEXIO_PARAM_SHIFTER_SHIFT))&FLEXIO_PARAM_SHIFTER_MASK)
-#define FLEXIO_PARAM_TIMER_MASK                  0xFF00u
-#define FLEXIO_PARAM_TIMER_SHIFT                 8
-#define FLEXIO_PARAM_TIMER(x)                    (((uint32_t)(((uint32_t)(x))<<FLEXIO_PARAM_TIMER_SHIFT))&FLEXIO_PARAM_TIMER_MASK)
-#define FLEXIO_PARAM_PIN_MASK                    0xFF0000u
-#define FLEXIO_PARAM_PIN_SHIFT                   16
-#define FLEXIO_PARAM_PIN(x)                      (((uint32_t)(((uint32_t)(x))<<FLEXIO_PARAM_PIN_SHIFT))&FLEXIO_PARAM_PIN_MASK)
-#define FLEXIO_PARAM_TRIGGER_MASK                0xFF000000u
-#define FLEXIO_PARAM_TRIGGER_SHIFT               24
-#define FLEXIO_PARAM_TRIGGER(x)                  (((uint32_t)(((uint32_t)(x))<<FLEXIO_PARAM_TRIGGER_SHIFT))&FLEXIO_PARAM_TRIGGER_MASK)
-/* CTRL Bit Fields */
-#define FLEXIO_CTRL_FLEXEN_MASK                  0x1u
-#define FLEXIO_CTRL_FLEXEN_SHIFT                 0
-#define FLEXIO_CTRL_SWRST_MASK                   0x2u
-#define FLEXIO_CTRL_SWRST_SHIFT                  1
-#define FLEXIO_CTRL_FASTACC_MASK                 0x4u
-#define FLEXIO_CTRL_FASTACC_SHIFT                2
-#define FLEXIO_CTRL_DBGE_MASK                    0x40000000u
-#define FLEXIO_CTRL_DBGE_SHIFT                   30
-#define FLEXIO_CTRL_DOZEN_MASK                   0x80000000u
-#define FLEXIO_CTRL_DOZEN_SHIFT                  31
-/* SHIFTSTAT Bit Fields */
-#define FLEXIO_SHIFTSTAT_SSF_MASK                0xFu
-#define FLEXIO_SHIFTSTAT_SSF_SHIFT               0
-#define FLEXIO_SHIFTSTAT_SSF(x)                  (((uint32_t)(((uint32_t)(x))<<FLEXIO_SHIFTSTAT_SSF_SHIFT))&FLEXIO_SHIFTSTAT_SSF_MASK)
-/* SHIFTERR Bit Fields */
-#define FLEXIO_SHIFTERR_SEF_MASK                 0xFu
-#define FLEXIO_SHIFTERR_SEF_SHIFT                0
-#define FLEXIO_SHIFTERR_SEF(x)                   (((uint32_t)(((uint32_t)(x))<<FLEXIO_SHIFTERR_SEF_SHIFT))&FLEXIO_SHIFTERR_SEF_MASK)
-/* TIMSTAT Bit Fields */
-#define FLEXIO_TIMSTAT_TSF_MASK                  0xFu
-#define FLEXIO_TIMSTAT_TSF_SHIFT                 0
-#define FLEXIO_TIMSTAT_TSF(x)                    (((uint32_t)(((uint32_t)(x))<<FLEXIO_TIMSTAT_TSF_SHIFT))&FLEXIO_TIMSTAT_TSF_MASK)
-/* SHIFTSIEN Bit Fields */
-#define FLEXIO_SHIFTSIEN_SSIE_MASK               0xFu
-#define FLEXIO_SHIFTSIEN_SSIE_SHIFT              0
-#define FLEXIO_SHIFTSIEN_SSIE(x)                 (((uint32_t)(((uint32_t)(x))<<FLEXIO_SHIFTSIEN_SSIE_SHIFT))&FLEXIO_SHIFTSIEN_SSIE_MASK)
-/* SHIFTEIEN Bit Fields */
-#define FLEXIO_SHIFTEIEN_SEIE_MASK               0xFu
-#define FLEXIO_SHIFTEIEN_SEIE_SHIFT              0
-#define FLEXIO_SHIFTEIEN_SEIE(x)                 (((uint32_t)(((uint32_t)(x))<<FLEXIO_SHIFTEIEN_SEIE_SHIFT))&FLEXIO_SHIFTEIEN_SEIE_MASK)
-/* TIMIEN Bit Fields */
-#define FLEXIO_TIMIEN_TEIE_MASK                  0xFu
-#define FLEXIO_TIMIEN_TEIE_SHIFT                 0
-#define FLEXIO_TIMIEN_TEIE(x)                    (((uint32_t)(((uint32_t)(x))<<FLEXIO_TIMIEN_TEIE_SHIFT))&FLEXIO_TIMIEN_TEIE_MASK)
-/* SHIFTSDEN Bit Fields */
-#define FLEXIO_SHIFTSDEN_SSDE_MASK               0xFu
-#define FLEXIO_SHIFTSDEN_SSDE_SHIFT              0
-#define FLEXIO_SHIFTSDEN_SSDE(x)                 (((uint32_t)(((uint32_t)(x))<<FLEXIO_SHIFTSDEN_SSDE_SHIFT))&FLEXIO_SHIFTSDEN_SSDE_MASK)
-/* SHIFTCTL Bit Fields */
-#define FLEXIO_SHIFTCTL_SMOD_MASK                0x7u
-#define FLEXIO_SHIFTCTL_SMOD_SHIFT               0
-#define FLEXIO_SHIFTCTL_SMOD(x)                  (((uint32_t)(((uint32_t)(x))<<FLEXIO_SHIFTCTL_SMOD_SHIFT))&FLEXIO_SHIFTCTL_SMOD_MASK)
-#define FLEXIO_SHIFTCTL_PINPOL_MASK              0x80u
-#define FLEXIO_SHIFTCTL_PINPOL_SHIFT             7
-#define FLEXIO_SHIFTCTL_PINSEL_MASK              0x700u
-#define FLEXIO_SHIFTCTL_PINSEL_SHIFT             8
-#define FLEXIO_SHIFTCTL_PINSEL(x)                (((uint32_t)(((uint32_t)(x))<<FLEXIO_SHIFTCTL_PINSEL_SHIFT))&FLEXIO_SHIFTCTL_PINSEL_MASK)
-#define FLEXIO_SHIFTCTL_PINCFG_MASK              0x30000u
-#define FLEXIO_SHIFTCTL_PINCFG_SHIFT             16
-#define FLEXIO_SHIFTCTL_PINCFG(x)                (((uint32_t)(((uint32_t)(x))<<FLEXIO_SHIFTCTL_PINCFG_SHIFT))&FLEXIO_SHIFTCTL_PINCFG_MASK)
-#define FLEXIO_SHIFTCTL_TIMPOL_MASK              0x800000u
-#define FLEXIO_SHIFTCTL_TIMPOL_SHIFT             23
-#define FLEXIO_SHIFTCTL_TIMSEL_MASK              0x3000000u
-#define FLEXIO_SHIFTCTL_TIMSEL_SHIFT             24
-#define FLEXIO_SHIFTCTL_TIMSEL(x)                (((uint32_t)(((uint32_t)(x))<<FLEXIO_SHIFTCTL_TIMSEL_SHIFT))&FLEXIO_SHIFTCTL_TIMSEL_MASK)
-/* SHIFTCFG Bit Fields */
-#define FLEXIO_SHIFTCFG_SSTART_MASK              0x3u
-#define FLEXIO_SHIFTCFG_SSTART_SHIFT             0
-#define FLEXIO_SHIFTCFG_SSTART(x)                (((uint32_t)(((uint32_t)(x))<<FLEXIO_SHIFTCFG_SSTART_SHIFT))&FLEXIO_SHIFTCFG_SSTART_MASK)
-#define FLEXIO_SHIFTCFG_SSTOP_MASK               0x30u
-#define FLEXIO_SHIFTCFG_SSTOP_SHIFT              4
-#define FLEXIO_SHIFTCFG_SSTOP(x)                 (((uint32_t)(((uint32_t)(x))<<FLEXIO_SHIFTCFG_SSTOP_SHIFT))&FLEXIO_SHIFTCFG_SSTOP_MASK)
-#define FLEXIO_SHIFTCFG_INSRC_MASK               0x100u
-#define FLEXIO_SHIFTCFG_INSRC_SHIFT              8
-/* SHIFTBUF Bit Fields */
-#define FLEXIO_SHIFTBUF_SHIFTBUF_MASK            0xFFFFFFFFu
-#define FLEXIO_SHIFTBUF_SHIFTBUF_SHIFT           0
-#define FLEXIO_SHIFTBUF_SHIFTBUF(x)              (((uint32_t)(((uint32_t)(x))<<FLEXIO_SHIFTBUF_SHIFTBUF_SHIFT))&FLEXIO_SHIFTBUF_SHIFTBUF_MASK)
-/* SHIFTBUFBBS Bit Fields */
-#define FLEXIO_SHIFTBUFBBS_SHIFTBUFBBS_MASK      0xFFFFFFFFu
-#define FLEXIO_SHIFTBUFBBS_SHIFTBUFBBS_SHIFT     0
-#define FLEXIO_SHIFTBUFBBS_SHIFTBUFBBS(x)        (((uint32_t)(((uint32_t)(x))<<FLEXIO_SHIFTBUFBBS_SHIFTBUFBBS_SHIFT))&FLEXIO_SHIFTBUFBBS_SHIFTBUFBBS_MASK)
-/* SHIFTBUFBYS Bit Fields */
-#define FLEXIO_SHIFTBUFBYS_SHIFTBUFBYS_MASK      0xFFFFFFFFu
-#define FLEXIO_SHIFTBUFBYS_SHIFTBUFBYS_SHIFT     0
-#define FLEXIO_SHIFTBUFBYS_SHIFTBUFBYS(x)        (((uint32_t)(((uint32_t)(x))<<FLEXIO_SHIFTBUFBYS_SHIFTBUFBYS_SHIFT))&FLEXIO_SHIFTBUFBYS_SHIFTBUFBYS_MASK)
-/* SHIFTBUFBIS Bit Fields */
-#define FLEXIO_SHIFTBUFBIS_SHIFTBUFBIS_MASK      0xFFFFFFFFu
-#define FLEXIO_SHIFTBUFBIS_SHIFTBUFBIS_SHIFT     0
-#define FLEXIO_SHIFTBUFBIS_SHIFTBUFBIS(x)        (((uint32_t)(((uint32_t)(x))<<FLEXIO_SHIFTBUFBIS_SHIFTBUFBIS_SHIFT))&FLEXIO_SHIFTBUFBIS_SHIFTBUFBIS_MASK)
-/* TIMCTL Bit Fields */
-#define FLEXIO_TIMCTL_TIMOD_MASK                 0x3u
-#define FLEXIO_TIMCTL_TIMOD_SHIFT                0
-#define FLEXIO_TIMCTL_TIMOD(x)                   (((uint32_t)(((uint32_t)(x))<<FLEXIO_TIMCTL_TIMOD_SHIFT))&FLEXIO_TIMCTL_TIMOD_MASK)
-#define FLEXIO_TIMCTL_PINPOL_MASK                0x80u
-#define FLEXIO_TIMCTL_PINPOL_SHIFT               7
-#define FLEXIO_TIMCTL_PINSEL_MASK                0x700u
-#define FLEXIO_TIMCTL_PINSEL_SHIFT               8
-#define FLEXIO_TIMCTL_PINSEL(x)                  (((uint32_t)(((uint32_t)(x))<<FLEXIO_TIMCTL_PINSEL_SHIFT))&FLEXIO_TIMCTL_PINSEL_MASK)
-#define FLEXIO_TIMCTL_PINCFG_MASK                0x30000u
-#define FLEXIO_TIMCTL_PINCFG_SHIFT               16
-#define FLEXIO_TIMCTL_PINCFG(x)                  (((uint32_t)(((uint32_t)(x))<<FLEXIO_TIMCTL_PINCFG_SHIFT))&FLEXIO_TIMCTL_PINCFG_MASK)
-#define FLEXIO_TIMCTL_TRGSRC_MASK                0x400000u
-#define FLEXIO_TIMCTL_TRGSRC_SHIFT               22
-#define FLEXIO_TIMCTL_TRGPOL_MASK                0x800000u
-#define FLEXIO_TIMCTL_TRGPOL_SHIFT               23
-#define FLEXIO_TIMCTL_TRGSEL_MASK                0xF000000u
-#define FLEXIO_TIMCTL_TRGSEL_SHIFT               24
-#define FLEXIO_TIMCTL_TRGSEL(x)                  (((uint32_t)(((uint32_t)(x))<<FLEXIO_TIMCTL_TRGSEL_SHIFT))&FLEXIO_TIMCTL_TRGSEL_MASK)
-/* TIMCFG Bit Fields */
-#define FLEXIO_TIMCFG_TSTART_MASK                0x2u
-#define FLEXIO_TIMCFG_TSTART_SHIFT               1
-#define FLEXIO_TIMCFG_TSTOP_MASK                 0x30u
-#define FLEXIO_TIMCFG_TSTOP_SHIFT                4
-#define FLEXIO_TIMCFG_TSTOP(x)                   (((uint32_t)(((uint32_t)(x))<<FLEXIO_TIMCFG_TSTOP_SHIFT))&FLEXIO_TIMCFG_TSTOP_MASK)
-#define FLEXIO_TIMCFG_TIMENA_MASK                0x700u
-#define FLEXIO_TIMCFG_TIMENA_SHIFT               8
-#define FLEXIO_TIMCFG_TIMENA(x)                  (((uint32_t)(((uint32_t)(x))<<FLEXIO_TIMCFG_TIMENA_SHIFT))&FLEXIO_TIMCFG_TIMENA_MASK)
-#define FLEXIO_TIMCFG_TIMDIS_MASK                0x7000u
-#define FLEXIO_TIMCFG_TIMDIS_SHIFT               12
-#define FLEXIO_TIMCFG_TIMDIS(x)                  (((uint32_t)(((uint32_t)(x))<<FLEXIO_TIMCFG_TIMDIS_SHIFT))&FLEXIO_TIMCFG_TIMDIS_MASK)
-#define FLEXIO_TIMCFG_TIMRST_MASK                0x70000u
-#define FLEXIO_TIMCFG_TIMRST_SHIFT               16
-#define FLEXIO_TIMCFG_TIMRST(x)                  (((uint32_t)(((uint32_t)(x))<<FLEXIO_TIMCFG_TIMRST_SHIFT))&FLEXIO_TIMCFG_TIMRST_MASK)
-#define FLEXIO_TIMCFG_TIMDEC_MASK                0x300000u
-#define FLEXIO_TIMCFG_TIMDEC_SHIFT               20
-#define FLEXIO_TIMCFG_TIMDEC(x)                  (((uint32_t)(((uint32_t)(x))<<FLEXIO_TIMCFG_TIMDEC_SHIFT))&FLEXIO_TIMCFG_TIMDEC_MASK)
-#define FLEXIO_TIMCFG_TIMOUT_MASK                0x3000000u
-#define FLEXIO_TIMCFG_TIMOUT_SHIFT               24
-#define FLEXIO_TIMCFG_TIMOUT(x)                  (((uint32_t)(((uint32_t)(x))<<FLEXIO_TIMCFG_TIMOUT_SHIFT))&FLEXIO_TIMCFG_TIMOUT_MASK)
-/* TIMCMP Bit Fields */
-#define FLEXIO_TIMCMP_CMP_MASK                   0xFFFFu
-#define FLEXIO_TIMCMP_CMP_SHIFT                  0
-#define FLEXIO_TIMCMP_CMP(x)                     (((uint32_t)(((uint32_t)(x))<<FLEXIO_TIMCMP_CMP_SHIFT))&FLEXIO_TIMCMP_CMP_MASK)
-
-/*!
- * @}
- */ /* end of group FLEXIO_Register_Masks */
-
-
-/* FLEXIO - Peripheral instance base addresses */
-/** Peripheral FLEXIO base address */
-#define FLEXIO_BASE                              (0x4005F000u)
-/** Peripheral FLEXIO base pointer */
-#define FLEXIO                                   ((FLEXIO_Type *)FLEXIO_BASE)
-#define FLEXIO_BASE_PTR                          (FLEXIO)
-/** Array initializer of FLEXIO peripheral base addresses */
-#define FLEXIO_BASE_ADDRS                        { FLEXIO_BASE }
-/** Array initializer of FLEXIO peripheral base pointers */
-#define FLEXIO_BASE_PTRS                         { FLEXIO }
-
-/* ----------------------------------------------------------------------------
-   -- FLEXIO - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup FLEXIO_Register_Accessor_Macros FLEXIO - Register accessor macros
- * @{
- */
-
-
-/* FLEXIO - Register instance definitions */
-/* FLEXIO */
-#define FLEXIO_VERID                             FLEXIO_VERID_REG(FLEXIO)
-#define FLEXIO_PARAM                             FLEXIO_PARAM_REG(FLEXIO)
-#define FLEXIO_CTRL                              FLEXIO_CTRL_REG(FLEXIO)
-#define FLEXIO_SHIFTSTAT                         FLEXIO_SHIFTSTAT_REG(FLEXIO)
-#define FLEXIO_SHIFTERR                          FLEXIO_SHIFTERR_REG(FLEXIO)
-#define FLEXIO_TIMSTAT                           FLEXIO_TIMSTAT_REG(FLEXIO)
-#define FLEXIO_SHIFTSIEN                         FLEXIO_SHIFTSIEN_REG(FLEXIO)
-#define FLEXIO_SHIFTEIEN                         FLEXIO_SHIFTEIEN_REG(FLEXIO)
-#define FLEXIO_TIMIEN                            FLEXIO_TIMIEN_REG(FLEXIO)
-#define FLEXIO_SHIFTSDEN                         FLEXIO_SHIFTSDEN_REG(FLEXIO)
-#define FLEXIO_SHIFTCTL0                         FLEXIO_SHIFTCTL_REG(FLEXIO,0)
-#define FLEXIO_SHIFTCTL1                         FLEXIO_SHIFTCTL_REG(FLEXIO,1)
-#define FLEXIO_SHIFTCTL2                         FLEXIO_SHIFTCTL_REG(FLEXIO,2)
-#define FLEXIO_SHIFTCTL3                         FLEXIO_SHIFTCTL_REG(FLEXIO,3)
-#define FLEXIO_SHIFTCFG0                         FLEXIO_SHIFTCFG_REG(FLEXIO,0)
-#define FLEXIO_SHIFTCFG1                         FLEXIO_SHIFTCFG_REG(FLEXIO,1)
-#define FLEXIO_SHIFTCFG2                         FLEXIO_SHIFTCFG_REG(FLEXIO,2)
-#define FLEXIO_SHIFTCFG3                         FLEXIO_SHIFTCFG_REG(FLEXIO,3)
-#define FLEXIO_SHIFTBUF0                         FLEXIO_SHIFTBUF_REG(FLEXIO,0)
-#define FLEXIO_SHIFTBUF1                         FLEXIO_SHIFTBUF_REG(FLEXIO,1)
-#define FLEXIO_SHIFTBUF2                         FLEXIO_SHIFTBUF_REG(FLEXIO,2)
-#define FLEXIO_SHIFTBUF3                         FLEXIO_SHIFTBUF_REG(FLEXIO,3)
-#define FLEXIO_SHIFTBUFBBS0                      FLEXIO_SHIFTBUFBBS_REG(FLEXIO,0)
-#define FLEXIO_SHIFTBUFBBS1                      FLEXIO_SHIFTBUFBBS_REG(FLEXIO,1)
-#define FLEXIO_SHIFTBUFBBS2                      FLEXIO_SHIFTBUFBBS_REG(FLEXIO,2)
-#define FLEXIO_SHIFTBUFBBS3                      FLEXIO_SHIFTBUFBBS_REG(FLEXIO,3)
-#define FLEXIO_SHIFTBUFBYS0                      FLEXIO_SHIFTBUFBYS_REG(FLEXIO,0)
-#define FLEXIO_SHIFTBUFBYS1                      FLEXIO_SHIFTBUFBYS_REG(FLEXIO,1)
-#define FLEXIO_SHIFTBUFBYS2                      FLEXIO_SHIFTBUFBYS_REG(FLEXIO,2)
-#define FLEXIO_SHIFTBUFBYS3                      FLEXIO_SHIFTBUFBYS_REG(FLEXIO,3)
-#define FLEXIO_SHIFTBUFBIS0                      FLEXIO_SHIFTBUFBIS_REG(FLEXIO,0)
-#define FLEXIO_SHIFTBUFBIS1                      FLEXIO_SHIFTBUFBIS_REG(FLEXIO,1)
-#define FLEXIO_SHIFTBUFBIS2                      FLEXIO_SHIFTBUFBIS_REG(FLEXIO,2)
-#define FLEXIO_SHIFTBUFBIS3                      FLEXIO_SHIFTBUFBIS_REG(FLEXIO,3)
-#define FLEXIO_TIMCTL0                           FLEXIO_TIMCTL_REG(FLEXIO,0)
-#define FLEXIO_TIMCTL1                           FLEXIO_TIMCTL_REG(FLEXIO,1)
-#define FLEXIO_TIMCTL2                           FLEXIO_TIMCTL_REG(FLEXIO,2)
-#define FLEXIO_TIMCTL3                           FLEXIO_TIMCTL_REG(FLEXIO,3)
-#define FLEXIO_TIMCFG0                           FLEXIO_TIMCFG_REG(FLEXIO,0)
-#define FLEXIO_TIMCFG1                           FLEXIO_TIMCFG_REG(FLEXIO,1)
-#define FLEXIO_TIMCFG2                           FLEXIO_TIMCFG_REG(FLEXIO,2)
-#define FLEXIO_TIMCFG3                           FLEXIO_TIMCFG_REG(FLEXIO,3)
-#define FLEXIO_TIMCMP0                           FLEXIO_TIMCMP_REG(FLEXIO,0)
-#define FLEXIO_TIMCMP1                           FLEXIO_TIMCMP_REG(FLEXIO,1)
-#define FLEXIO_TIMCMP2                           FLEXIO_TIMCMP_REG(FLEXIO,2)
-#define FLEXIO_TIMCMP3                           FLEXIO_TIMCMP_REG(FLEXIO,3)
-
-/* FLEXIO - Register array accessors */
-#define FLEXIO_SHIFTCTL(index)                   FLEXIO_SHIFTCTL_REG(FLEXIO,index)
-#define FLEXIO_SHIFTCFG(index)                   FLEXIO_SHIFTCFG_REG(FLEXIO,index)
-#define FLEXIO_SHIFTBUF(index)                   FLEXIO_SHIFTBUF_REG(FLEXIO,index)
-#define FLEXIO_SHIFTBUFBBS(index)                FLEXIO_SHIFTBUFBBS_REG(FLEXIO,index)
-#define FLEXIO_SHIFTBUFBYS(index)                FLEXIO_SHIFTBUFBYS_REG(FLEXIO,index)
-#define FLEXIO_SHIFTBUFBIS(index)                FLEXIO_SHIFTBUFBIS_REG(FLEXIO,index)
-#define FLEXIO_TIMCTL(index)                     FLEXIO_TIMCTL_REG(FLEXIO,index)
-#define FLEXIO_TIMCFG(index)                     FLEXIO_TIMCFG_REG(FLEXIO,index)
-#define FLEXIO_TIMCMP(index)                     FLEXIO_TIMCMP_REG(FLEXIO,index)
-
-/*!
- * @}
- */ /* end of group FLEXIO_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group FLEXIO_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- FTFA Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup FTFA_Peripheral_Access_Layer FTFA Peripheral Access Layer
- * @{
- */
-
-/** FTFA - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t FSTAT;                              /**< Flash Status Register, offset: 0x0 */
-  __IO uint8_t FCNFG;                              /**< Flash Configuration Register, offset: 0x1 */
-  __I  uint8_t FSEC;                               /**< Flash Security Register, offset: 0x2 */
-  __I  uint8_t FOPT;                               /**< Flash Option Register, offset: 0x3 */
-  __IO uint8_t FCCOB3;                             /**< Flash Common Command Object Registers, offset: 0x4 */
-  __IO uint8_t FCCOB2;                             /**< Flash Common Command Object Registers, offset: 0x5 */
-  __IO uint8_t FCCOB1;                             /**< Flash Common Command Object Registers, offset: 0x6 */
-  __IO uint8_t FCCOB0;                             /**< Flash Common Command Object Registers, offset: 0x7 */
-  __IO uint8_t FCCOB7;                             /**< Flash Common Command Object Registers, offset: 0x8 */
-  __IO uint8_t FCCOB6;                             /**< Flash Common Command Object Registers, offset: 0x9 */
-  __IO uint8_t FCCOB5;                             /**< Flash Common Command Object Registers, offset: 0xA */
-  __IO uint8_t FCCOB4;                             /**< Flash Common Command Object Registers, offset: 0xB */
-  __IO uint8_t FCCOBB;                             /**< Flash Common Command Object Registers, offset: 0xC */
-  __IO uint8_t FCCOBA;                             /**< Flash Common Command Object Registers, offset: 0xD */
-  __IO uint8_t FCCOB9;                             /**< Flash Common Command Object Registers, offset: 0xE */
-  __IO uint8_t FCCOB8;                             /**< Flash Common Command Object Registers, offset: 0xF */
-  __IO uint8_t FPROT3;                             /**< Program Flash Protection Registers, offset: 0x10 */
-  __IO uint8_t FPROT2;                             /**< Program Flash Protection Registers, offset: 0x11 */
-  __IO uint8_t FPROT1;                             /**< Program Flash Protection Registers, offset: 0x12 */
-  __IO uint8_t FPROT0;                             /**< Program Flash Protection Registers, offset: 0x13 */
-} FTFA_Type, *FTFA_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- FTFA - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup FTFA_Register_Accessor_Macros FTFA - Register accessor macros
- * @{
- */
-
-
-/* FTFA - Register accessors */
-#define FTFA_FSTAT_REG(base)                     ((base)->FSTAT)
-#define FTFA_FCNFG_REG(base)                     ((base)->FCNFG)
-#define FTFA_FSEC_REG(base)                      ((base)->FSEC)
-#define FTFA_FOPT_REG(base)                      ((base)->FOPT)
-#define FTFA_FCCOB3_REG(base)                    ((base)->FCCOB3)
-#define FTFA_FCCOB2_REG(base)                    ((base)->FCCOB2)
-#define FTFA_FCCOB1_REG(base)                    ((base)->FCCOB1)
-#define FTFA_FCCOB0_REG(base)                    ((base)->FCCOB0)
-#define FTFA_FCCOB7_REG(base)                    ((base)->FCCOB7)
-#define FTFA_FCCOB6_REG(base)                    ((base)->FCCOB6)
-#define FTFA_FCCOB5_REG(base)                    ((base)->FCCOB5)
-#define FTFA_FCCOB4_REG(base)                    ((base)->FCCOB4)
-#define FTFA_FCCOBB_REG(base)                    ((base)->FCCOBB)
-#define FTFA_FCCOBA_REG(base)                    ((base)->FCCOBA)
-#define FTFA_FCCOB9_REG(base)                    ((base)->FCCOB9)
-#define FTFA_FCCOB8_REG(base)                    ((base)->FCCOB8)
-#define FTFA_FPROT3_REG(base)                    ((base)->FPROT3)
-#define FTFA_FPROT2_REG(base)                    ((base)->FPROT2)
-#define FTFA_FPROT1_REG(base)                    ((base)->FPROT1)
-#define FTFA_FPROT0_REG(base)                    ((base)->FPROT0)
-
-/*!
- * @}
- */ /* end of group FTFA_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- FTFA Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup FTFA_Register_Masks FTFA Register Masks
- * @{
- */
-
-/* FSTAT Bit Fields */
-#define FTFA_FSTAT_MGSTAT0_MASK                  0x1u
-#define FTFA_FSTAT_MGSTAT0_SHIFT                 0
-#define FTFA_FSTAT_FPVIOL_MASK                   0x10u
-#define FTFA_FSTAT_FPVIOL_SHIFT                  4
-#define FTFA_FSTAT_ACCERR_MASK                   0x20u
-#define FTFA_FSTAT_ACCERR_SHIFT                  5
-#define FTFA_FSTAT_RDCOLERR_MASK                 0x40u
-#define FTFA_FSTAT_RDCOLERR_SHIFT                6
-#define FTFA_FSTAT_CCIF_MASK                     0x80u
-#define FTFA_FSTAT_CCIF_SHIFT                    7
-/* FCNFG Bit Fields */
-#define FTFA_FCNFG_ERSSUSP_MASK                  0x10u
-#define FTFA_FCNFG_ERSSUSP_SHIFT                 4
-#define FTFA_FCNFG_ERSAREQ_MASK                  0x20u
-#define FTFA_FCNFG_ERSAREQ_SHIFT                 5
-#define FTFA_FCNFG_RDCOLLIE_MASK                 0x40u
-#define FTFA_FCNFG_RDCOLLIE_SHIFT                6
-#define FTFA_FCNFG_CCIE_MASK                     0x80u
-#define FTFA_FCNFG_CCIE_SHIFT                    7
-/* FSEC Bit Fields */
-#define FTFA_FSEC_SEC_MASK                       0x3u
-#define FTFA_FSEC_SEC_SHIFT                      0
-#define FTFA_FSEC_SEC(x)                         (((uint8_t)(((uint8_t)(x))<<FTFA_FSEC_SEC_SHIFT))&FTFA_FSEC_SEC_MASK)
-#define FTFA_FSEC_FSLACC_MASK                    0xCu
-#define FTFA_FSEC_FSLACC_SHIFT                   2
-#define FTFA_FSEC_FSLACC(x)                      (((uint8_t)(((uint8_t)(x))<<FTFA_FSEC_FSLACC_SHIFT))&FTFA_FSEC_FSLACC_MASK)
-#define FTFA_FSEC_MEEN_MASK                      0x30u
-#define FTFA_FSEC_MEEN_SHIFT                     4
-#define FTFA_FSEC_MEEN(x)                        (((uint8_t)(((uint8_t)(x))<<FTFA_FSEC_MEEN_SHIFT))&FTFA_FSEC_MEEN_MASK)
-#define FTFA_FSEC_KEYEN_MASK                     0xC0u
-#define FTFA_FSEC_KEYEN_SHIFT                    6
-#define FTFA_FSEC_KEYEN(x)                       (((uint8_t)(((uint8_t)(x))<<FTFA_FSEC_KEYEN_SHIFT))&FTFA_FSEC_KEYEN_MASK)
-/* FOPT Bit Fields */
-#define FTFA_FOPT_OPT_MASK                       0xFFu
-#define FTFA_FOPT_OPT_SHIFT                      0
-#define FTFA_FOPT_OPT(x)                         (((uint8_t)(((uint8_t)(x))<<FTFA_FOPT_OPT_SHIFT))&FTFA_FOPT_OPT_MASK)
-/* FCCOB3 Bit Fields */
-#define FTFA_FCCOB3_CCOBn_MASK                   0xFFu
-#define FTFA_FCCOB3_CCOBn_SHIFT                  0
-#define FTFA_FCCOB3_CCOBn(x)                     (((uint8_t)(((uint8_t)(x))<<FTFA_FCCOB3_CCOBn_SHIFT))&FTFA_FCCOB3_CCOBn_MASK)
-/* FCCOB2 Bit Fields */
-#define FTFA_FCCOB2_CCOBn_MASK                   0xFFu
-#define FTFA_FCCOB2_CCOBn_SHIFT                  0
-#define FTFA_FCCOB2_CCOBn(x)                     (((uint8_t)(((uint8_t)(x))<<FTFA_FCCOB2_CCOBn_SHIFT))&FTFA_FCCOB2_CCOBn_MASK)
-/* FCCOB1 Bit Fields */
-#define FTFA_FCCOB1_CCOBn_MASK                   0xFFu
-#define FTFA_FCCOB1_CCOBn_SHIFT                  0
-#define FTFA_FCCOB1_CCOBn(x)                     (((uint8_t)(((uint8_t)(x))<<FTFA_FCCOB1_CCOBn_SHIFT))&FTFA_FCCOB1_CCOBn_MASK)
-/* FCCOB0 Bit Fields */
-#define FTFA_FCCOB0_CCOBn_MASK                   0xFFu
-#define FTFA_FCCOB0_CCOBn_SHIFT                  0
-#define FTFA_FCCOB0_CCOBn(x)                     (((uint8_t)(((uint8_t)(x))<<FTFA_FCCOB0_CCOBn_SHIFT))&FTFA_FCCOB0_CCOBn_MASK)
-/* FCCOB7 Bit Fields */
-#define FTFA_FCCOB7_CCOBn_MASK                   0xFFu
-#define FTFA_FCCOB7_CCOBn_SHIFT                  0
-#define FTFA_FCCOB7_CCOBn(x)                     (((uint8_t)(((uint8_t)(x))<<FTFA_FCCOB7_CCOBn_SHIFT))&FTFA_FCCOB7_CCOBn_MASK)
-/* FCCOB6 Bit Fields */
-#define FTFA_FCCOB6_CCOBn_MASK                   0xFFu
-#define FTFA_FCCOB6_CCOBn_SHIFT                  0
-#define FTFA_FCCOB6_CCOBn(x)                     (((uint8_t)(((uint8_t)(x))<<FTFA_FCCOB6_CCOBn_SHIFT))&FTFA_FCCOB6_CCOBn_MASK)
-/* FCCOB5 Bit Fields */
-#define FTFA_FCCOB5_CCOBn_MASK                   0xFFu
-#define FTFA_FCCOB5_CCOBn_SHIFT                  0
-#define FTFA_FCCOB5_CCOBn(x)                     (((uint8_t)(((uint8_t)(x))<<FTFA_FCCOB5_CCOBn_SHIFT))&FTFA_FCCOB5_CCOBn_MASK)
-/* FCCOB4 Bit Fields */
-#define FTFA_FCCOB4_CCOBn_MASK                   0xFFu
-#define FTFA_FCCOB4_CCOBn_SHIFT                  0
-#define FTFA_FCCOB4_CCOBn(x)                     (((uint8_t)(((uint8_t)(x))<<FTFA_FCCOB4_CCOBn_SHIFT))&FTFA_FCCOB4_CCOBn_MASK)
-/* FCCOBB Bit Fields */
-#define FTFA_FCCOBB_CCOBn_MASK                   0xFFu
-#define FTFA_FCCOBB_CCOBn_SHIFT                  0
-#define FTFA_FCCOBB_CCOBn(x)                     (((uint8_t)(((uint8_t)(x))<<FTFA_FCCOBB_CCOBn_SHIFT))&FTFA_FCCOBB_CCOBn_MASK)
-/* FCCOBA Bit Fields */
-#define FTFA_FCCOBA_CCOBn_MASK                   0xFFu
-#define FTFA_FCCOBA_CCOBn_SHIFT                  0
-#define FTFA_FCCOBA_CCOBn(x)                     (((uint8_t)(((uint8_t)(x))<<FTFA_FCCOBA_CCOBn_SHIFT))&FTFA_FCCOBA_CCOBn_MASK)
-/* FCCOB9 Bit Fields */
-#define FTFA_FCCOB9_CCOBn_MASK                   0xFFu
-#define FTFA_FCCOB9_CCOBn_SHIFT                  0
-#define FTFA_FCCOB9_CCOBn(x)                     (((uint8_t)(((uint8_t)(x))<<FTFA_FCCOB9_CCOBn_SHIFT))&FTFA_FCCOB9_CCOBn_MASK)
-/* FCCOB8 Bit Fields */
-#define FTFA_FCCOB8_CCOBn_MASK                   0xFFu
-#define FTFA_FCCOB8_CCOBn_SHIFT                  0
-#define FTFA_FCCOB8_CCOBn(x)                     (((uint8_t)(((uint8_t)(x))<<FTFA_FCCOB8_CCOBn_SHIFT))&FTFA_FCCOB8_CCOBn_MASK)
-/* FPROT3 Bit Fields */
-#define FTFA_FPROT3_PROT_MASK                    0xFFu
-#define FTFA_FPROT3_PROT_SHIFT                   0
-#define FTFA_FPROT3_PROT(x)                      (((uint8_t)(((uint8_t)(x))<<FTFA_FPROT3_PROT_SHIFT))&FTFA_FPROT3_PROT_MASK)
-/* FPROT2 Bit Fields */
-#define FTFA_FPROT2_PROT_MASK                    0xFFu
-#define FTFA_FPROT2_PROT_SHIFT                   0
-#define FTFA_FPROT2_PROT(x)                      (((uint8_t)(((uint8_t)(x))<<FTFA_FPROT2_PROT_SHIFT))&FTFA_FPROT2_PROT_MASK)
-/* FPROT1 Bit Fields */
-#define FTFA_FPROT1_PROT_MASK                    0xFFu
-#define FTFA_FPROT1_PROT_SHIFT                   0
-#define FTFA_FPROT1_PROT(x)                      (((uint8_t)(((uint8_t)(x))<<FTFA_FPROT1_PROT_SHIFT))&FTFA_FPROT1_PROT_MASK)
-/* FPROT0 Bit Fields */
-#define FTFA_FPROT0_PROT_MASK                    0xFFu
-#define FTFA_FPROT0_PROT_SHIFT                   0
-#define FTFA_FPROT0_PROT(x)                      (((uint8_t)(((uint8_t)(x))<<FTFA_FPROT0_PROT_SHIFT))&FTFA_FPROT0_PROT_MASK)
-
-/*!
- * @}
- */ /* end of group FTFA_Register_Masks */
-
-
-/* FTFA - Peripheral instance base addresses */
-/** Peripheral FTFA base address */
-#define FTFA_BASE                                (0x40020000u)
-/** Peripheral FTFA base pointer */
-#define FTFA                                     ((FTFA_Type *)FTFA_BASE)
-#define FTFA_BASE_PTR                            (FTFA)
-/** Array initializer of FTFA peripheral base addresses */
-#define FTFA_BASE_ADDRS                          { FTFA_BASE }
-/** Array initializer of FTFA peripheral base pointers */
-#define FTFA_BASE_PTRS                           { FTFA }
-/** Interrupt vectors for the FTFA peripheral type */
-#define FTFA_COMMAND_COMPLETE_IRQS               { FTFA_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- FTFA - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup FTFA_Register_Accessor_Macros FTFA - Register accessor macros
- * @{
- */
-
-
-/* FTFA - Register instance definitions */
-/* FTFA */
-#define FTFA_FSTAT                               FTFA_FSTAT_REG(FTFA)
-#define FTFA_FCNFG                               FTFA_FCNFG_REG(FTFA)
-#define FTFA_FSEC                                FTFA_FSEC_REG(FTFA)
-#define FTFA_FOPT                                FTFA_FOPT_REG(FTFA)
-#define FTFA_FCCOB3                              FTFA_FCCOB3_REG(FTFA)
-#define FTFA_FCCOB2                              FTFA_FCCOB2_REG(FTFA)
-#define FTFA_FCCOB1                              FTFA_FCCOB1_REG(FTFA)
-#define FTFA_FCCOB0                              FTFA_FCCOB0_REG(FTFA)
-#define FTFA_FCCOB7                              FTFA_FCCOB7_REG(FTFA)
-#define FTFA_FCCOB6                              FTFA_FCCOB6_REG(FTFA)
-#define FTFA_FCCOB5                              FTFA_FCCOB5_REG(FTFA)
-#define FTFA_FCCOB4                              FTFA_FCCOB4_REG(FTFA)
-#define FTFA_FCCOBB                              FTFA_FCCOBB_REG(FTFA)
-#define FTFA_FCCOBA                              FTFA_FCCOBA_REG(FTFA)
-#define FTFA_FCCOB9                              FTFA_FCCOB9_REG(FTFA)
-#define FTFA_FCCOB8                              FTFA_FCCOB8_REG(FTFA)
-#define FTFA_FPROT3                              FTFA_FPROT3_REG(FTFA)
-#define FTFA_FPROT2                              FTFA_FPROT2_REG(FTFA)
-#define FTFA_FPROT1                              FTFA_FPROT1_REG(FTFA)
-#define FTFA_FPROT0                              FTFA_FPROT0_REG(FTFA)
-
-/*!
- * @}
- */ /* end of group FTFA_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group FTFA_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- GPIO Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup GPIO_Peripheral_Access_Layer GPIO Peripheral Access Layer
- * @{
- */
-
-/** GPIO - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t PDOR;                              /**< Port Data Output Register, offset: 0x0 */
-  __O  uint32_t PSOR;                              /**< Port Set Output Register, offset: 0x4 */
-  __O  uint32_t PCOR;                              /**< Port Clear Output Register, offset: 0x8 */
-  __O  uint32_t PTOR;                              /**< Port Toggle Output Register, offset: 0xC */
-  __I  uint32_t PDIR;                              /**< Port Data Input Register, offset: 0x10 */
-  __IO uint32_t PDDR;                              /**< Port Data Direction Register, offset: 0x14 */
-} GPIO_Type, *GPIO_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- GPIO - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup GPIO_Register_Accessor_Macros GPIO - Register accessor macros
- * @{
- */
-
-
-/* GPIO - Register accessors */
-#define GPIO_PDOR_REG(base)                      ((base)->PDOR)
-#define GPIO_PSOR_REG(base)                      ((base)->PSOR)
-#define GPIO_PCOR_REG(base)                      ((base)->PCOR)
-#define GPIO_PTOR_REG(base)                      ((base)->PTOR)
-#define GPIO_PDIR_REG(base)                      ((base)->PDIR)
-#define GPIO_PDDR_REG(base)                      ((base)->PDDR)
-
-/*!
- * @}
- */ /* end of group GPIO_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- GPIO Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup GPIO_Register_Masks GPIO Register Masks
- * @{
- */
-
-/* PDOR Bit Fields */
-#define GPIO_PDOR_PDO_MASK                       0xFFFFFFFFu
-#define GPIO_PDOR_PDO_SHIFT                      0
-#define GPIO_PDOR_PDO(x)                         (((uint32_t)(((uint32_t)(x))<<GPIO_PDOR_PDO_SHIFT))&GPIO_PDOR_PDO_MASK)
-/* PSOR Bit Fields */
-#define GPIO_PSOR_PTSO_MASK                      0xFFFFFFFFu
-#define GPIO_PSOR_PTSO_SHIFT                     0
-#define GPIO_PSOR_PTSO(x)                        (((uint32_t)(((uint32_t)(x))<<GPIO_PSOR_PTSO_SHIFT))&GPIO_PSOR_PTSO_MASK)
-/* PCOR Bit Fields */
-#define GPIO_PCOR_PTCO_MASK                      0xFFFFFFFFu
-#define GPIO_PCOR_PTCO_SHIFT                     0
-#define GPIO_PCOR_PTCO(x)                        (((uint32_t)(((uint32_t)(x))<<GPIO_PCOR_PTCO_SHIFT))&GPIO_PCOR_PTCO_MASK)
-/* PTOR Bit Fields */
-#define GPIO_PTOR_PTTO_MASK                      0xFFFFFFFFu
-#define GPIO_PTOR_PTTO_SHIFT                     0
-#define GPIO_PTOR_PTTO(x)                        (((uint32_t)(((uint32_t)(x))<<GPIO_PTOR_PTTO_SHIFT))&GPIO_PTOR_PTTO_MASK)
-/* PDIR Bit Fields */
-#define GPIO_PDIR_PDI_MASK                       0xFFFFFFFFu
-#define GPIO_PDIR_PDI_SHIFT                      0
-#define GPIO_PDIR_PDI(x)                         (((uint32_t)(((uint32_t)(x))<<GPIO_PDIR_PDI_SHIFT))&GPIO_PDIR_PDI_MASK)
-/* PDDR Bit Fields */
-#define GPIO_PDDR_PDD_MASK                       0xFFFFFFFFu
-#define GPIO_PDDR_PDD_SHIFT                      0
-#define GPIO_PDDR_PDD(x)                         (((uint32_t)(((uint32_t)(x))<<GPIO_PDDR_PDD_SHIFT))&GPIO_PDDR_PDD_MASK)
-
-/*!
- * @}
- */ /* end of group GPIO_Register_Masks */
-
-
-/* GPIO - Peripheral instance base addresses */
-/** Peripheral GPIOA base address */
-#define GPIOA_BASE                               (0x400FF000u)
-/** Peripheral GPIOA base pointer */
-#define GPIOA                                    ((GPIO_Type *)GPIOA_BASE)
-#define GPIOA_BASE_PTR                           (GPIOA)
-/** Peripheral GPIOB base address */
-#define GPIOB_BASE                               (0x400FF040u)
-/** Peripheral GPIOB base pointer */
-#define GPIOB                                    ((GPIO_Type *)GPIOB_BASE)
-#define GPIOB_BASE_PTR                           (GPIOB)
-/** Peripheral GPIOC base address */
-#define GPIOC_BASE                               (0x400FF080u)
-/** Peripheral GPIOC base pointer */
-#define GPIOC                                    ((GPIO_Type *)GPIOC_BASE)
-#define GPIOC_BASE_PTR                           (GPIOC)
-/** Peripheral GPIOD base address */
-#define GPIOD_BASE                               (0x400FF0C0u)
-/** Peripheral GPIOD base pointer */
-#define GPIOD                                    ((GPIO_Type *)GPIOD_BASE)
-#define GPIOD_BASE_PTR                           (GPIOD)
-/** Peripheral GPIOE base address */
-#define GPIOE_BASE                               (0x400FF100u)
-/** Peripheral GPIOE base pointer */
-#define GPIOE                                    ((GPIO_Type *)GPIOE_BASE)
-#define GPIOE_BASE_PTR                           (GPIOE)
-/** Array initializer of GPIO peripheral base addresses */
-#define GPIO_BASE_ADDRS                          { GPIOA_BASE, GPIOB_BASE, GPIOC_BASE, GPIOD_BASE, GPIOE_BASE }
-/** Array initializer of GPIO peripheral base pointers */
-#define GPIO_BASE_PTRS                           { GPIOA, GPIOB, GPIOC, GPIOD, GPIOE }
-
-/* ----------------------------------------------------------------------------
-   -- GPIO - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup GPIO_Register_Accessor_Macros GPIO - Register accessor macros
- * @{
- */
-
-
-/* GPIO - Register instance definitions */
-/* GPIOA */
-#define GPIOA_PDOR                               GPIO_PDOR_REG(GPIOA)
-#define GPIOA_PSOR                               GPIO_PSOR_REG(GPIOA)
-#define GPIOA_PCOR                               GPIO_PCOR_REG(GPIOA)
-#define GPIOA_PTOR                               GPIO_PTOR_REG(GPIOA)
-#define GPIOA_PDIR                               GPIO_PDIR_REG(GPIOA)
-#define GPIOA_PDDR                               GPIO_PDDR_REG(GPIOA)
-/* GPIOB */
-#define GPIOB_PDOR                               GPIO_PDOR_REG(GPIOB)
-#define GPIOB_PSOR                               GPIO_PSOR_REG(GPIOB)
-#define GPIOB_PCOR                               GPIO_PCOR_REG(GPIOB)
-#define GPIOB_PTOR                               GPIO_PTOR_REG(GPIOB)
-#define GPIOB_PDIR                               GPIO_PDIR_REG(GPIOB)
-#define GPIOB_PDDR                               GPIO_PDDR_REG(GPIOB)
-/* GPIOC */
-#define GPIOC_PDOR                               GPIO_PDOR_REG(GPIOC)
-#define GPIOC_PSOR                               GPIO_PSOR_REG(GPIOC)
-#define GPIOC_PCOR                               GPIO_PCOR_REG(GPIOC)
-#define GPIOC_PTOR                               GPIO_PTOR_REG(GPIOC)
-#define GPIOC_PDIR                               GPIO_PDIR_REG(GPIOC)
-#define GPIOC_PDDR                               GPIO_PDDR_REG(GPIOC)
-/* GPIOD */
-#define GPIOD_PDOR                               GPIO_PDOR_REG(GPIOD)
-#define GPIOD_PSOR                               GPIO_PSOR_REG(GPIOD)
-#define GPIOD_PCOR                               GPIO_PCOR_REG(GPIOD)
-#define GPIOD_PTOR                               GPIO_PTOR_REG(GPIOD)
-#define GPIOD_PDIR                               GPIO_PDIR_REG(GPIOD)
-#define GPIOD_PDDR                               GPIO_PDDR_REG(GPIOD)
-/* GPIOE */
-#define GPIOE_PDOR                               GPIO_PDOR_REG(GPIOE)
-#define GPIOE_PSOR                               GPIO_PSOR_REG(GPIOE)
-#define GPIOE_PCOR                               GPIO_PCOR_REG(GPIOE)
-#define GPIOE_PTOR                               GPIO_PTOR_REG(GPIOE)
-#define GPIOE_PDIR                               GPIO_PDIR_REG(GPIOE)
-#define GPIOE_PDDR                               GPIO_PDDR_REG(GPIOE)
-
-/*!
- * @}
- */ /* end of group GPIO_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group GPIO_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- I2C Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup I2C_Peripheral_Access_Layer I2C Peripheral Access Layer
- * @{
- */
-
-/** I2C - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t A1;                                 /**< I2C Address Register 1, offset: 0x0 */
-  __IO uint8_t F;                                  /**< I2C Frequency Divider register, offset: 0x1 */
-  __IO uint8_t C1;                                 /**< I2C Control Register 1, offset: 0x2 */
-  __IO uint8_t S;                                  /**< I2C Status register, offset: 0x3 */
-  __IO uint8_t D;                                  /**< I2C Data I/O register, offset: 0x4 */
-  __IO uint8_t C2;                                 /**< I2C Control Register 2, offset: 0x5 */
-  __IO uint8_t FLT;                                /**< I2C Programmable Input Glitch Filter Register, offset: 0x6 */
-  __IO uint8_t RA;                                 /**< I2C Range Address register, offset: 0x7 */
-  __IO uint8_t SMB;                                /**< I2C SMBus Control and Status register, offset: 0x8 */
-  __IO uint8_t A2;                                 /**< I2C Address Register 2, offset: 0x9 */
-  __IO uint8_t SLTH;                               /**< I2C SCL Low Timeout Register High, offset: 0xA */
-  __IO uint8_t SLTL;                               /**< I2C SCL Low Timeout Register Low, offset: 0xB */
-  __IO uint8_t S2;                                 /**< I2C Status register 2, offset: 0xC */
-} I2C_Type, *I2C_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- I2C - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup I2C_Register_Accessor_Macros I2C - Register accessor macros
- * @{
- */
-
-
-/* I2C - Register accessors */
-#define I2C_A1_REG(base)                         ((base)->A1)
-#define I2C_F_REG(base)                          ((base)->F)
-#define I2C_C1_REG(base)                         ((base)->C1)
-#define I2C_S_REG(base)                          ((base)->S)
-#define I2C_D_REG(base)                          ((base)->D)
-#define I2C_C2_REG(base)                         ((base)->C2)
-#define I2C_FLT_REG(base)                        ((base)->FLT)
-#define I2C_RA_REG(base)                         ((base)->RA)
-#define I2C_SMB_REG(base)                        ((base)->SMB)
-#define I2C_A2_REG(base)                         ((base)->A2)
-#define I2C_SLTH_REG(base)                       ((base)->SLTH)
-#define I2C_SLTL_REG(base)                       ((base)->SLTL)
-#define I2C_S2_REG(base)                         ((base)->S2)
-
-/*!
- * @}
- */ /* end of group I2C_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- I2C Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup I2C_Register_Masks I2C Register Masks
- * @{
- */
-
-/* A1 Bit Fields */
-#define I2C_A1_AD_MASK                           0xFEu
-#define I2C_A1_AD_SHIFT                          1
-#define I2C_A1_AD(x)                             (((uint8_t)(((uint8_t)(x))<<I2C_A1_AD_SHIFT))&I2C_A1_AD_MASK)
-/* F Bit Fields */
-#define I2C_F_ICR_MASK                           0x3Fu
-#define I2C_F_ICR_SHIFT                          0
-#define I2C_F_ICR(x)                             (((uint8_t)(((uint8_t)(x))<<I2C_F_ICR_SHIFT))&I2C_F_ICR_MASK)
-#define I2C_F_MULT_MASK                          0xC0u
-#define I2C_F_MULT_SHIFT                         6
-#define I2C_F_MULT(x)                            (((uint8_t)(((uint8_t)(x))<<I2C_F_MULT_SHIFT))&I2C_F_MULT_MASK)
-/* C1 Bit Fields */
-#define I2C_C1_DMAEN_MASK                        0x1u
-#define I2C_C1_DMAEN_SHIFT                       0
-#define I2C_C1_WUEN_MASK                         0x2u
-#define I2C_C1_WUEN_SHIFT                        1
-#define I2C_C1_RSTA_MASK                         0x4u
-#define I2C_C1_RSTA_SHIFT                        2
-#define I2C_C1_TXAK_MASK                         0x8u
-#define I2C_C1_TXAK_SHIFT                        3
-#define I2C_C1_TX_MASK                           0x10u
-#define I2C_C1_TX_SHIFT                          4
-#define I2C_C1_MST_MASK                          0x20u
-#define I2C_C1_MST_SHIFT                         5
-#define I2C_C1_IICIE_MASK                        0x40u
-#define I2C_C1_IICIE_SHIFT                       6
-#define I2C_C1_IICEN_MASK                        0x80u
-#define I2C_C1_IICEN_SHIFT                       7
-/* S Bit Fields */
-#define I2C_S_RXAK_MASK                          0x1u
-#define I2C_S_RXAK_SHIFT                         0
-#define I2C_S_IICIF_MASK                         0x2u
-#define I2C_S_IICIF_SHIFT                        1
-#define I2C_S_SRW_MASK                           0x4u
-#define I2C_S_SRW_SHIFT                          2
-#define I2C_S_RAM_MASK                           0x8u
-#define I2C_S_RAM_SHIFT                          3
-#define I2C_S_ARBL_MASK                          0x10u
-#define I2C_S_ARBL_SHIFT                         4
-#define I2C_S_BUSY_MASK                          0x20u
-#define I2C_S_BUSY_SHIFT                         5
-#define I2C_S_IAAS_MASK                          0x40u
-#define I2C_S_IAAS_SHIFT                         6
-#define I2C_S_TCF_MASK                           0x80u
-#define I2C_S_TCF_SHIFT                          7
-/* D Bit Fields */
-#define I2C_D_DATA_MASK                          0xFFu
-#define I2C_D_DATA_SHIFT                         0
-#define I2C_D_DATA(x)                            (((uint8_t)(((uint8_t)(x))<<I2C_D_DATA_SHIFT))&I2C_D_DATA_MASK)
-/* C2 Bit Fields */
-#define I2C_C2_AD_MASK                           0x7u
-#define I2C_C2_AD_SHIFT                          0
-#define I2C_C2_AD(x)                             (((uint8_t)(((uint8_t)(x))<<I2C_C2_AD_SHIFT))&I2C_C2_AD_MASK)
-#define I2C_C2_RMEN_MASK                         0x8u
-#define I2C_C2_RMEN_SHIFT                        3
-#define I2C_C2_SBRC_MASK                         0x10u
-#define I2C_C2_SBRC_SHIFT                        4
-#define I2C_C2_HDRS_MASK                         0x20u
-#define I2C_C2_HDRS_SHIFT                        5
-#define I2C_C2_ADEXT_MASK                        0x40u
-#define I2C_C2_ADEXT_SHIFT                       6
-#define I2C_C2_GCAEN_MASK                        0x80u
-#define I2C_C2_GCAEN_SHIFT                       7
-/* FLT Bit Fields */
-#define I2C_FLT_FLT_MASK                         0xFu
-#define I2C_FLT_FLT_SHIFT                        0
-#define I2C_FLT_FLT(x)                           (((uint8_t)(((uint8_t)(x))<<I2C_FLT_FLT_SHIFT))&I2C_FLT_FLT_MASK)
-#define I2C_FLT_STARTF_MASK                      0x10u
-#define I2C_FLT_STARTF_SHIFT                     4
-#define I2C_FLT_SSIE_MASK                        0x20u
-#define I2C_FLT_SSIE_SHIFT                       5
-#define I2C_FLT_STOPF_MASK                       0x40u
-#define I2C_FLT_STOPF_SHIFT                      6
-#define I2C_FLT_SHEN_MASK                        0x80u
-#define I2C_FLT_SHEN_SHIFT                       7
-/* RA Bit Fields */
-#define I2C_RA_RAD_MASK                          0xFEu
-#define I2C_RA_RAD_SHIFT                         1
-#define I2C_RA_RAD(x)                            (((uint8_t)(((uint8_t)(x))<<I2C_RA_RAD_SHIFT))&I2C_RA_RAD_MASK)
-/* SMB Bit Fields */
-#define I2C_SMB_SHTF2IE_MASK                     0x1u
-#define I2C_SMB_SHTF2IE_SHIFT                    0
-#define I2C_SMB_SHTF2_MASK                       0x2u
-#define I2C_SMB_SHTF2_SHIFT                      1
-#define I2C_SMB_SHTF1_MASK                       0x4u
-#define I2C_SMB_SHTF1_SHIFT                      2
-#define I2C_SMB_SLTF_MASK                        0x8u
-#define I2C_SMB_SLTF_SHIFT                       3
-#define I2C_SMB_TCKSEL_MASK                      0x10u
-#define I2C_SMB_TCKSEL_SHIFT                     4
-#define I2C_SMB_SIICAEN_MASK                     0x20u
-#define I2C_SMB_SIICAEN_SHIFT                    5
-#define I2C_SMB_ALERTEN_MASK                     0x40u
-#define I2C_SMB_ALERTEN_SHIFT                    6
-#define I2C_SMB_FACK_MASK                        0x80u
-#define I2C_SMB_FACK_SHIFT                       7
-/* A2 Bit Fields */
-#define I2C_A2_SAD_MASK                          0xFEu
-#define I2C_A2_SAD_SHIFT                         1
-#define I2C_A2_SAD(x)                            (((uint8_t)(((uint8_t)(x))<<I2C_A2_SAD_SHIFT))&I2C_A2_SAD_MASK)
-/* SLTH Bit Fields */
-#define I2C_SLTH_SSLT_MASK                       0xFFu
-#define I2C_SLTH_SSLT_SHIFT                      0
-#define I2C_SLTH_SSLT(x)                         (((uint8_t)(((uint8_t)(x))<<I2C_SLTH_SSLT_SHIFT))&I2C_SLTH_SSLT_MASK)
-/* SLTL Bit Fields */
-#define I2C_SLTL_SSLT_MASK                       0xFFu
-#define I2C_SLTL_SSLT_SHIFT                      0
-#define I2C_SLTL_SSLT(x)                         (((uint8_t)(((uint8_t)(x))<<I2C_SLTL_SSLT_SHIFT))&I2C_SLTL_SSLT_MASK)
-/* S2 Bit Fields */
-#define I2C_S2_EMPTY_MASK                        0x1u
-#define I2C_S2_EMPTY_SHIFT                       0
-#define I2C_S2_ERROR_MASK                        0x2u
-#define I2C_S2_ERROR_SHIFT                       1
-
-/*!
- * @}
- */ /* end of group I2C_Register_Masks */
-
-
-/* I2C - Peripheral instance base addresses */
-/** Peripheral I2C0 base address */
-#define I2C0_BASE                                (0x40066000u)
-/** Peripheral I2C0 base pointer */
-#define I2C0                                     ((I2C_Type *)I2C0_BASE)
-#define I2C0_BASE_PTR                            (I2C0)
-/** Peripheral I2C1 base address */
-#define I2C1_BASE                                (0x40067000u)
-/** Peripheral I2C1 base pointer */
-#define I2C1                                     ((I2C_Type *)I2C1_BASE)
-#define I2C1_BASE_PTR                            (I2C1)
-/** Array initializer of I2C peripheral base addresses */
-#define I2C_BASE_ADDRS                           { I2C0_BASE, I2C1_BASE }
-/** Array initializer of I2C peripheral base pointers */
-#define I2C_BASE_PTRS                            { I2C0, I2C1 }
-/** Interrupt vectors for the I2C peripheral type */
-#define I2C_IRQS                                 { I2C0_IRQn, I2C1_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- I2C - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup I2C_Register_Accessor_Macros I2C - Register accessor macros
- * @{
- */
-
-
-/* I2C - Register instance definitions */
-/* I2C0 */
-#define I2C0_A1                                  I2C_A1_REG(I2C0)
-#define I2C0_F                                   I2C_F_REG(I2C0)
-#define I2C0_C1                                  I2C_C1_REG(I2C0)
-#define I2C0_S                                   I2C_S_REG(I2C0)
-#define I2C0_D                                   I2C_D_REG(I2C0)
-#define I2C0_C2                                  I2C_C2_REG(I2C0)
-#define I2C0_FLT                                 I2C_FLT_REG(I2C0)
-#define I2C0_RA                                  I2C_RA_REG(I2C0)
-#define I2C0_SMB                                 I2C_SMB_REG(I2C0)
-#define I2C0_A2                                  I2C_A2_REG(I2C0)
-#define I2C0_SLTH                                I2C_SLTH_REG(I2C0)
-#define I2C0_SLTL                                I2C_SLTL_REG(I2C0)
-#define I2C0_S2                                  I2C_S2_REG(I2C0)
-/* I2C1 */
-#define I2C1_A1                                  I2C_A1_REG(I2C1)
-#define I2C1_F                                   I2C_F_REG(I2C1)
-#define I2C1_C1                                  I2C_C1_REG(I2C1)
-#define I2C1_S                                   I2C_S_REG(I2C1)
-#define I2C1_D                                   I2C_D_REG(I2C1)
-#define I2C1_C2                                  I2C_C2_REG(I2C1)
-#define I2C1_FLT                                 I2C_FLT_REG(I2C1)
-#define I2C1_RA                                  I2C_RA_REG(I2C1)
-#define I2C1_SMB                                 I2C_SMB_REG(I2C1)
-#define I2C1_A2                                  I2C_A2_REG(I2C1)
-#define I2C1_SLTH                                I2C_SLTH_REG(I2C1)
-#define I2C1_SLTL                                I2C_SLTL_REG(I2C1)
-#define I2C1_S2                                  I2C_S2_REG(I2C1)
-
-/*!
- * @}
- */ /* end of group I2C_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group I2C_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- I2S Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup I2S_Peripheral_Access_Layer I2S Peripheral Access Layer
- * @{
- */
-
-/** I2S - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t TCSR;                              /**< SAI Transmit Control Register, offset: 0x0 */
-       uint8_t RESERVED_0[4];
-  __IO uint32_t TCR2;                              /**< SAI Transmit Configuration 2 Register, offset: 0x8 */
-  __IO uint32_t TCR3;                              /**< SAI Transmit Configuration 3 Register, offset: 0xC */
-  __IO uint32_t TCR4;                              /**< SAI Transmit Configuration 4 Register, offset: 0x10 */
-  __IO uint32_t TCR5;                              /**< SAI Transmit Configuration 5 Register, offset: 0x14 */
-       uint8_t RESERVED_1[8];
-  __O  uint32_t TDR[1];                            /**< SAI Transmit Data Register, array offset: 0x20, array step: 0x4 */
-       uint8_t RESERVED_2[60];
-  __IO uint32_t TMR;                               /**< SAI Transmit Mask Register, offset: 0x60 */
-       uint8_t RESERVED_3[28];
-  __IO uint32_t RCSR;                              /**< SAI Receive Control Register, offset: 0x80 */
-       uint8_t RESERVED_4[4];
-  __IO uint32_t RCR2;                              /**< SAI Receive Configuration 2 Register, offset: 0x88 */
-  __IO uint32_t RCR3;                              /**< SAI Receive Configuration 3 Register, offset: 0x8C */
-  __IO uint32_t RCR4;                              /**< SAI Receive Configuration 4 Register, offset: 0x90 */
-  __IO uint32_t RCR5;                              /**< SAI Receive Configuration 5 Register, offset: 0x94 */
-       uint8_t RESERVED_5[8];
-  __I  uint32_t RDR[1];                            /**< SAI Receive Data Register, array offset: 0xA0, array step: 0x4 */
-       uint8_t RESERVED_6[60];
-  __IO uint32_t RMR;                               /**< SAI Receive Mask Register, offset: 0xE0 */
-       uint8_t RESERVED_7[28];
-  __IO uint32_t MCR;                               /**< SAI MCLK Control Register, offset: 0x100 */
-} I2S_Type, *I2S_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- I2S - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup I2S_Register_Accessor_Macros I2S - Register accessor macros
- * @{
- */
-
-
-/* I2S - Register accessors */
-#define I2S_TCSR_REG(base)                       ((base)->TCSR)
-#define I2S_TCR2_REG(base)                       ((base)->TCR2)
-#define I2S_TCR3_REG(base)                       ((base)->TCR3)
-#define I2S_TCR4_REG(base)                       ((base)->TCR4)
-#define I2S_TCR5_REG(base)                       ((base)->TCR5)
-#define I2S_TDR_REG(base,index)                  ((base)->TDR[index])
-#define I2S_TMR_REG(base)                        ((base)->TMR)
-#define I2S_RCSR_REG(base)                       ((base)->RCSR)
-#define I2S_RCR2_REG(base)                       ((base)->RCR2)
-#define I2S_RCR3_REG(base)                       ((base)->RCR3)
-#define I2S_RCR4_REG(base)                       ((base)->RCR4)
-#define I2S_RCR5_REG(base)                       ((base)->RCR5)
-#define I2S_RDR_REG(base,index)                  ((base)->RDR[index])
-#define I2S_RMR_REG(base)                        ((base)->RMR)
-#define I2S_MCR_REG(base)                        ((base)->MCR)
-
-/*!
- * @}
- */ /* end of group I2S_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- I2S Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup I2S_Register_Masks I2S Register Masks
- * @{
- */
-
-/* TCSR Bit Fields */
-#define I2S_TCSR_FWDE_MASK                       0x2u
-#define I2S_TCSR_FWDE_SHIFT                      1
-#define I2S_TCSR_FWIE_MASK                       0x200u
-#define I2S_TCSR_FWIE_SHIFT                      9
-#define I2S_TCSR_FEIE_MASK                       0x400u
-#define I2S_TCSR_FEIE_SHIFT                      10
-#define I2S_TCSR_SEIE_MASK                       0x800u
-#define I2S_TCSR_SEIE_SHIFT                      11
-#define I2S_TCSR_WSIE_MASK                       0x1000u
-#define I2S_TCSR_WSIE_SHIFT                      12
-#define I2S_TCSR_FWF_MASK                        0x20000u
-#define I2S_TCSR_FWF_SHIFT                       17
-#define I2S_TCSR_FEF_MASK                        0x40000u
-#define I2S_TCSR_FEF_SHIFT                       18
-#define I2S_TCSR_SEF_MASK                        0x80000u
-#define I2S_TCSR_SEF_SHIFT                       19
-#define I2S_TCSR_WSF_MASK                        0x100000u
-#define I2S_TCSR_WSF_SHIFT                       20
-#define I2S_TCSR_SR_MASK                         0x1000000u
-#define I2S_TCSR_SR_SHIFT                        24
-#define I2S_TCSR_FR_MASK                         0x2000000u
-#define I2S_TCSR_FR_SHIFT                        25
-#define I2S_TCSR_BCE_MASK                        0x10000000u
-#define I2S_TCSR_BCE_SHIFT                       28
-#define I2S_TCSR_DBGE_MASK                       0x20000000u
-#define I2S_TCSR_DBGE_SHIFT                      29
-#define I2S_TCSR_STOPE_MASK                      0x40000000u
-#define I2S_TCSR_STOPE_SHIFT                     30
-#define I2S_TCSR_TE_MASK                         0x80000000u
-#define I2S_TCSR_TE_SHIFT                        31
-/* TCR2 Bit Fields */
-#define I2S_TCR2_DIV_MASK                        0xFFu
-#define I2S_TCR2_DIV_SHIFT                       0
-#define I2S_TCR2_DIV(x)                          (((uint32_t)(((uint32_t)(x))<<I2S_TCR2_DIV_SHIFT))&I2S_TCR2_DIV_MASK)
-#define I2S_TCR2_BCD_MASK                        0x1000000u
-#define I2S_TCR2_BCD_SHIFT                       24
-#define I2S_TCR2_BCP_MASK                        0x2000000u
-#define I2S_TCR2_BCP_SHIFT                       25
-#define I2S_TCR2_MSEL_MASK                       0xC000000u
-#define I2S_TCR2_MSEL_SHIFT                      26
-#define I2S_TCR2_MSEL(x)                         (((uint32_t)(((uint32_t)(x))<<I2S_TCR2_MSEL_SHIFT))&I2S_TCR2_MSEL_MASK)
-#define I2S_TCR2_BCI_MASK                        0x10000000u
-#define I2S_TCR2_BCI_SHIFT                       28
-#define I2S_TCR2_BCS_MASK                        0x20000000u
-#define I2S_TCR2_BCS_SHIFT                       29
-#define I2S_TCR2_SYNC_MASK                       0xC0000000u
-#define I2S_TCR2_SYNC_SHIFT                      30
-#define I2S_TCR2_SYNC(x)                         (((uint32_t)(((uint32_t)(x))<<I2S_TCR2_SYNC_SHIFT))&I2S_TCR2_SYNC_MASK)
-/* TCR3 Bit Fields */
-#define I2S_TCR3_WDFL_MASK                       0x1u
-#define I2S_TCR3_WDFL_SHIFT                      0
-#define I2S_TCR3_TCE_MASK                        0x10000u
-#define I2S_TCR3_TCE_SHIFT                       16
-/* TCR4 Bit Fields */
-#define I2S_TCR4_FSD_MASK                        0x1u
-#define I2S_TCR4_FSD_SHIFT                       0
-#define I2S_TCR4_FSP_MASK                        0x2u
-#define I2S_TCR4_FSP_SHIFT                       1
-#define I2S_TCR4_ONDEM_MASK                      0x4u
-#define I2S_TCR4_ONDEM_SHIFT                     2
-#define I2S_TCR4_FSE_MASK                        0x8u
-#define I2S_TCR4_FSE_SHIFT                       3
-#define I2S_TCR4_MF_MASK                         0x10u
-#define I2S_TCR4_MF_SHIFT                        4
-#define I2S_TCR4_SYWD_MASK                       0x1F00u
-#define I2S_TCR4_SYWD_SHIFT                      8
-#define I2S_TCR4_SYWD(x)                         (((uint32_t)(((uint32_t)(x))<<I2S_TCR4_SYWD_SHIFT))&I2S_TCR4_SYWD_MASK)
-#define I2S_TCR4_FRSZ_MASK                       0x10000u
-#define I2S_TCR4_FRSZ_SHIFT                      16
-#define I2S_TCR4_FPACK_MASK                      0x3000000u
-#define I2S_TCR4_FPACK_SHIFT                     24
-#define I2S_TCR4_FPACK(x)                        (((uint32_t)(((uint32_t)(x))<<I2S_TCR4_FPACK_SHIFT))&I2S_TCR4_FPACK_MASK)
-#define I2S_TCR4_FCONT_MASK                      0x10000000u
-#define I2S_TCR4_FCONT_SHIFT                     28
-/* TCR5 Bit Fields */
-#define I2S_TCR5_FBT_MASK                        0x1F00u
-#define I2S_TCR5_FBT_SHIFT                       8
-#define I2S_TCR5_FBT(x)                          (((uint32_t)(((uint32_t)(x))<<I2S_TCR5_FBT_SHIFT))&I2S_TCR5_FBT_MASK)
-#define I2S_TCR5_W0W_MASK                        0x1F0000u
-#define I2S_TCR5_W0W_SHIFT                       16
-#define I2S_TCR5_W0W(x)                          (((uint32_t)(((uint32_t)(x))<<I2S_TCR5_W0W_SHIFT))&I2S_TCR5_W0W_MASK)
-#define I2S_TCR5_WNW_MASK                        0x1F000000u
-#define I2S_TCR5_WNW_SHIFT                       24
-#define I2S_TCR5_WNW(x)                          (((uint32_t)(((uint32_t)(x))<<I2S_TCR5_WNW_SHIFT))&I2S_TCR5_WNW_MASK)
-/* TDR Bit Fields */
-#define I2S_TDR_TDR_MASK                         0xFFFFFFFFu
-#define I2S_TDR_TDR_SHIFT                        0
-#define I2S_TDR_TDR(x)                           (((uint32_t)(((uint32_t)(x))<<I2S_TDR_TDR_SHIFT))&I2S_TDR_TDR_MASK)
-/* TMR Bit Fields */
-#define I2S_TMR_TWM_MASK                         0x3u
-#define I2S_TMR_TWM_SHIFT                        0
-#define I2S_TMR_TWM(x)                           (((uint32_t)(((uint32_t)(x))<<I2S_TMR_TWM_SHIFT))&I2S_TMR_TWM_MASK)
-/* RCSR Bit Fields */
-#define I2S_RCSR_FWDE_MASK                       0x2u
-#define I2S_RCSR_FWDE_SHIFT                      1
-#define I2S_RCSR_FWIE_MASK                       0x200u
-#define I2S_RCSR_FWIE_SHIFT                      9
-#define I2S_RCSR_FEIE_MASK                       0x400u
-#define I2S_RCSR_FEIE_SHIFT                      10
-#define I2S_RCSR_SEIE_MASK                       0x800u
-#define I2S_RCSR_SEIE_SHIFT                      11
-#define I2S_RCSR_WSIE_MASK                       0x1000u
-#define I2S_RCSR_WSIE_SHIFT                      12
-#define I2S_RCSR_FWF_MASK                        0x20000u
-#define I2S_RCSR_FWF_SHIFT                       17
-#define I2S_RCSR_FEF_MASK                        0x40000u
-#define I2S_RCSR_FEF_SHIFT                       18
-#define I2S_RCSR_SEF_MASK                        0x80000u
-#define I2S_RCSR_SEF_SHIFT                       19
-#define I2S_RCSR_WSF_MASK                        0x100000u
-#define I2S_RCSR_WSF_SHIFT                       20
-#define I2S_RCSR_SR_MASK                         0x1000000u
-#define I2S_RCSR_SR_SHIFT                        24
-#define I2S_RCSR_FR_MASK                         0x2000000u
-#define I2S_RCSR_FR_SHIFT                        25
-#define I2S_RCSR_BCE_MASK                        0x10000000u
-#define I2S_RCSR_BCE_SHIFT                       28
-#define I2S_RCSR_DBGE_MASK                       0x20000000u
-#define I2S_RCSR_DBGE_SHIFT                      29
-#define I2S_RCSR_STOPE_MASK                      0x40000000u
-#define I2S_RCSR_STOPE_SHIFT                     30
-#define I2S_RCSR_RE_MASK                         0x80000000u
-#define I2S_RCSR_RE_SHIFT                        31
-/* RCR2 Bit Fields */
-#define I2S_RCR2_DIV_MASK                        0xFFu
-#define I2S_RCR2_DIV_SHIFT                       0
-#define I2S_RCR2_DIV(x)                          (((uint32_t)(((uint32_t)(x))<<I2S_RCR2_DIV_SHIFT))&I2S_RCR2_DIV_MASK)
-#define I2S_RCR2_BCD_MASK                        0x1000000u
-#define I2S_RCR2_BCD_SHIFT                       24
-#define I2S_RCR2_BCP_MASK                        0x2000000u
-#define I2S_RCR2_BCP_SHIFT                       25
-#define I2S_RCR2_MSEL_MASK                       0xC000000u
-#define I2S_RCR2_MSEL_SHIFT                      26
-#define I2S_RCR2_MSEL(x)                         (((uint32_t)(((uint32_t)(x))<<I2S_RCR2_MSEL_SHIFT))&I2S_RCR2_MSEL_MASK)
-#define I2S_RCR2_BCI_MASK                        0x10000000u
-#define I2S_RCR2_BCI_SHIFT                       28
-#define I2S_RCR2_BCS_MASK                        0x20000000u
-#define I2S_RCR2_BCS_SHIFT                       29
-#define I2S_RCR2_SYNC_MASK                       0xC0000000u
-#define I2S_RCR2_SYNC_SHIFT                      30
-#define I2S_RCR2_SYNC(x)                         (((uint32_t)(((uint32_t)(x))<<I2S_RCR2_SYNC_SHIFT))&I2S_RCR2_SYNC_MASK)
-/* RCR3 Bit Fields */
-#define I2S_RCR3_WDFL_MASK                       0x1u
-#define I2S_RCR3_WDFL_SHIFT                      0
-#define I2S_RCR3_RCE_MASK                        0x10000u
-#define I2S_RCR3_RCE_SHIFT                       16
-/* RCR4 Bit Fields */
-#define I2S_RCR4_FSD_MASK                        0x1u
-#define I2S_RCR4_FSD_SHIFT                       0
-#define I2S_RCR4_FSP_MASK                        0x2u
-#define I2S_RCR4_FSP_SHIFT                       1
-#define I2S_RCR4_ONDEM_MASK                      0x4u
-#define I2S_RCR4_ONDEM_SHIFT                     2
-#define I2S_RCR4_FSE_MASK                        0x8u
-#define I2S_RCR4_FSE_SHIFT                       3
-#define I2S_RCR4_MF_MASK                         0x10u
-#define I2S_RCR4_MF_SHIFT                        4
-#define I2S_RCR4_SYWD_MASK                       0x1F00u
-#define I2S_RCR4_SYWD_SHIFT                      8
-#define I2S_RCR4_SYWD(x)                         (((uint32_t)(((uint32_t)(x))<<I2S_RCR4_SYWD_SHIFT))&I2S_RCR4_SYWD_MASK)
-#define I2S_RCR4_FRSZ_MASK                       0x10000u
-#define I2S_RCR4_FRSZ_SHIFT                      16
-#define I2S_RCR4_FPACK_MASK                      0x3000000u
-#define I2S_RCR4_FPACK_SHIFT                     24
-#define I2S_RCR4_FPACK(x)                        (((uint32_t)(((uint32_t)(x))<<I2S_RCR4_FPACK_SHIFT))&I2S_RCR4_FPACK_MASK)
-#define I2S_RCR4_FCONT_MASK                      0x10000000u
-#define I2S_RCR4_FCONT_SHIFT                     28
-/* RCR5 Bit Fields */
-#define I2S_RCR5_FBT_MASK                        0x1F00u
-#define I2S_RCR5_FBT_SHIFT                       8
-#define I2S_RCR5_FBT(x)                          (((uint32_t)(((uint32_t)(x))<<I2S_RCR5_FBT_SHIFT))&I2S_RCR5_FBT_MASK)
-#define I2S_RCR5_W0W_MASK                        0x1F0000u
-#define I2S_RCR5_W0W_SHIFT                       16
-#define I2S_RCR5_W0W(x)                          (((uint32_t)(((uint32_t)(x))<<I2S_RCR5_W0W_SHIFT))&I2S_RCR5_W0W_MASK)
-#define I2S_RCR5_WNW_MASK                        0x1F000000u
-#define I2S_RCR5_WNW_SHIFT                       24
-#define I2S_RCR5_WNW(x)                          (((uint32_t)(((uint32_t)(x))<<I2S_RCR5_WNW_SHIFT))&I2S_RCR5_WNW_MASK)
-/* RDR Bit Fields */
-#define I2S_RDR_RDR_MASK                         0xFFFFFFFFu
-#define I2S_RDR_RDR_SHIFT                        0
-#define I2S_RDR_RDR(x)                           (((uint32_t)(((uint32_t)(x))<<I2S_RDR_RDR_SHIFT))&I2S_RDR_RDR_MASK)
-/* RMR Bit Fields */
-#define I2S_RMR_RWM_MASK                         0x3u
-#define I2S_RMR_RWM_SHIFT                        0
-#define I2S_RMR_RWM(x)                           (((uint32_t)(((uint32_t)(x))<<I2S_RMR_RWM_SHIFT))&I2S_RMR_RWM_MASK)
-/* MCR Bit Fields */
-#define I2S_MCR_MICS_MASK                        0x3000000u
-#define I2S_MCR_MICS_SHIFT                       24
-#define I2S_MCR_MICS(x)                          (((uint32_t)(((uint32_t)(x))<<I2S_MCR_MICS_SHIFT))&I2S_MCR_MICS_MASK)
-#define I2S_MCR_MOE_MASK                         0x40000000u
-#define I2S_MCR_MOE_SHIFT                        30
-#define I2S_MCR_DUF_MASK                         0x80000000u
-#define I2S_MCR_DUF_SHIFT                        31
-
-/*!
- * @}
- */ /* end of group I2S_Register_Masks */
-
-
-/* I2S - Peripheral instance base addresses */
-/** Peripheral I2S0 base address */
-#define I2S0_BASE                                (0x4002F000u)
-/** Peripheral I2S0 base pointer */
-#define I2S0                                     ((I2S_Type *)I2S0_BASE)
-#define I2S0_BASE_PTR                            (I2S0)
-/** Array initializer of I2S peripheral base addresses */
-#define I2S_BASE_ADDRS                           { I2S0_BASE }
-/** Array initializer of I2S peripheral base pointers */
-#define I2S_BASE_PTRS                            { I2S0 }
-/** Interrupt vectors for the I2S peripheral type */
-#define I2S_RX_IRQS                              { I2S0_IRQn }
-#define I2S_TX_IRQS                              { I2S0_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- I2S - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup I2S_Register_Accessor_Macros I2S - Register accessor macros
- * @{
- */
-
-
-/* I2S - Register instance definitions */
-/* I2S0 */
-#define I2S0_TCSR                                I2S_TCSR_REG(I2S0)
-#define I2S0_TCR2                                I2S_TCR2_REG(I2S0)
-#define I2S0_TCR3                                I2S_TCR3_REG(I2S0)
-#define I2S0_TCR4                                I2S_TCR4_REG(I2S0)
-#define I2S0_TCR5                                I2S_TCR5_REG(I2S0)
-#define I2S0_TDR0                                I2S_TDR_REG(I2S0,0)
-#define I2S0_TMR                                 I2S_TMR_REG(I2S0)
-#define I2S0_RCSR                                I2S_RCSR_REG(I2S0)
-#define I2S0_RCR2                                I2S_RCR2_REG(I2S0)
-#define I2S0_RCR3                                I2S_RCR3_REG(I2S0)
-#define I2S0_RCR4                                I2S_RCR4_REG(I2S0)
-#define I2S0_RCR5                                I2S_RCR5_REG(I2S0)
-#define I2S0_RDR0                                I2S_RDR_REG(I2S0,0)
-#define I2S0_RMR                                 I2S_RMR_REG(I2S0)
-#define I2S0_MCR                                 I2S_MCR_REG(I2S0)
-
-/* I2S - Register array accessors */
-#define I2S0_TDR(index)                          I2S_TDR_REG(I2S0,index)
-#define I2S0_RDR(index)                          I2S_RDR_REG(I2S0,index)
-
-/*!
- * @}
- */ /* end of group I2S_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group I2S_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- LCD Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LCD_Peripheral_Access_Layer LCD Peripheral Access Layer
- * @{
- */
-
-/** LCD - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t GCR;                               /**< LCD General Control Register, offset: 0x0 */
-  __IO uint32_t AR;                                /**< LCD Auxiliary Register, offset: 0x4 */
-  __IO uint32_t FDCR;                              /**< LCD Fault Detect Control Register, offset: 0x8 */
-  __IO uint32_t FDSR;                              /**< LCD Fault Detect Status Register, offset: 0xC */
-  __IO uint32_t PEN[2];                            /**< LCD Pin Enable register, array offset: 0x10, array step: 0x4 */
-  __IO uint32_t BPEN[2];                           /**< LCD Back Plane Enable register, array offset: 0x18, array step: 0x4 */
-  union {                                          /* offset: 0x20 */
-    __IO uint32_t WF[16];                            /**< LCD Waveform register, array offset: 0x20, array step: 0x4 */
-    __IO uint8_t WF8B[64];                           /**< LCD Waveform Register 0...LCD Waveform Register 63., array offset: 0x20, array step: 0x1 */
-  };
-} LCD_Type, *LCD_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- LCD - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LCD_Register_Accessor_Macros LCD - Register accessor macros
- * @{
- */
-
-
-/* LCD - Register accessors */
-#define LCD_GCR_REG(base)                        ((base)->GCR)
-#define LCD_AR_REG(base)                         ((base)->AR)
-#define LCD_FDCR_REG(base)                       ((base)->FDCR)
-#define LCD_FDSR_REG(base)                       ((base)->FDSR)
-#define LCD_PEN_REG(base,index)                  ((base)->PEN[index])
-#define LCD_BPEN_REG(base,index)                 ((base)->BPEN[index])
-#define LCD_WF_REG(base,index2)                  ((base)->WF[index2])
-#define LCD_WF8B_REG(base,index2)                ((base)->WF8B[index2])
-
-/*!
- * @}
- */ /* end of group LCD_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- LCD Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LCD_Register_Masks LCD Register Masks
- * @{
- */
-
-/* GCR Bit Fields */
-#define LCD_GCR_DUTY_MASK                        0x7u
-#define LCD_GCR_DUTY_SHIFT                       0
-#define LCD_GCR_DUTY(x)                          (((uint32_t)(((uint32_t)(x))<<LCD_GCR_DUTY_SHIFT))&LCD_GCR_DUTY_MASK)
-#define LCD_GCR_LCLK_MASK                        0x38u
-#define LCD_GCR_LCLK_SHIFT                       3
-#define LCD_GCR_LCLK(x)                          (((uint32_t)(((uint32_t)(x))<<LCD_GCR_LCLK_SHIFT))&LCD_GCR_LCLK_MASK)
-#define LCD_GCR_SOURCE_MASK                      0x40u
-#define LCD_GCR_SOURCE_SHIFT                     6
-#define LCD_GCR_LCDEN_MASK                       0x80u
-#define LCD_GCR_LCDEN_SHIFT                      7
-#define LCD_GCR_LCDSTP_MASK                      0x100u
-#define LCD_GCR_LCDSTP_SHIFT                     8
-#define LCD_GCR_LCDDOZE_MASK                     0x200u
-#define LCD_GCR_LCDDOZE_SHIFT                    9
-#define LCD_GCR_FFR_MASK                         0x400u
-#define LCD_GCR_FFR_SHIFT                        10
-#define LCD_GCR_ALTSOURCE_MASK                   0x800u
-#define LCD_GCR_ALTSOURCE_SHIFT                  11
-#define LCD_GCR_ALTDIV_MASK                      0x3000u
-#define LCD_GCR_ALTDIV_SHIFT                     12
-#define LCD_GCR_ALTDIV(x)                        (((uint32_t)(((uint32_t)(x))<<LCD_GCR_ALTDIV_SHIFT))&LCD_GCR_ALTDIV_MASK)
-#define LCD_GCR_FDCIEN_MASK                      0x4000u
-#define LCD_GCR_FDCIEN_SHIFT                     14
-#define LCD_GCR_PADSAFE_MASK                     0x8000u
-#define LCD_GCR_PADSAFE_SHIFT                    15
-#define LCD_GCR_VSUPPLY_MASK                     0x20000u
-#define LCD_GCR_VSUPPLY_SHIFT                    17
-#define LCD_GCR_LADJ_MASK                        0x300000u
-#define LCD_GCR_LADJ_SHIFT                       20
-#define LCD_GCR_LADJ(x)                          (((uint32_t)(((uint32_t)(x))<<LCD_GCR_LADJ_SHIFT))&LCD_GCR_LADJ_MASK)
-#define LCD_GCR_CPSEL_MASK                       0x800000u
-#define LCD_GCR_CPSEL_SHIFT                      23
-#define LCD_GCR_RVTRIM_MASK                      0xF000000u
-#define LCD_GCR_RVTRIM_SHIFT                     24
-#define LCD_GCR_RVTRIM(x)                        (((uint32_t)(((uint32_t)(x))<<LCD_GCR_RVTRIM_SHIFT))&LCD_GCR_RVTRIM_MASK)
-#define LCD_GCR_RVEN_MASK                        0x80000000u
-#define LCD_GCR_RVEN_SHIFT                       31
-/* AR Bit Fields */
-#define LCD_AR_BRATE_MASK                        0x7u
-#define LCD_AR_BRATE_SHIFT                       0
-#define LCD_AR_BRATE(x)                          (((uint32_t)(((uint32_t)(x))<<LCD_AR_BRATE_SHIFT))&LCD_AR_BRATE_MASK)
-#define LCD_AR_BMODE_MASK                        0x8u
-#define LCD_AR_BMODE_SHIFT                       3
-#define LCD_AR_BLANK_MASK                        0x20u
-#define LCD_AR_BLANK_SHIFT                       5
-#define LCD_AR_ALT_MASK                          0x40u
-#define LCD_AR_ALT_SHIFT                         6
-#define LCD_AR_BLINK_MASK                        0x80u
-#define LCD_AR_BLINK_SHIFT                       7
-/* FDCR Bit Fields */
-#define LCD_FDCR_FDPINID_MASK                    0x3Fu
-#define LCD_FDCR_FDPINID_SHIFT                   0
-#define LCD_FDCR_FDPINID(x)                      (((uint32_t)(((uint32_t)(x))<<LCD_FDCR_FDPINID_SHIFT))&LCD_FDCR_FDPINID_MASK)
-#define LCD_FDCR_FDBPEN_MASK                     0x40u
-#define LCD_FDCR_FDBPEN_SHIFT                    6
-#define LCD_FDCR_FDEN_MASK                       0x80u
-#define LCD_FDCR_FDEN_SHIFT                      7
-#define LCD_FDCR_FDSWW_MASK                      0xE00u
-#define LCD_FDCR_FDSWW_SHIFT                     9
-#define LCD_FDCR_FDSWW(x)                        (((uint32_t)(((uint32_t)(x))<<LCD_FDCR_FDSWW_SHIFT))&LCD_FDCR_FDSWW_MASK)
-#define LCD_FDCR_FDPRS_MASK                      0x7000u
-#define LCD_FDCR_FDPRS_SHIFT                     12
-#define LCD_FDCR_FDPRS(x)                        (((uint32_t)(((uint32_t)(x))<<LCD_FDCR_FDPRS_SHIFT))&LCD_FDCR_FDPRS_MASK)
-/* FDSR Bit Fields */
-#define LCD_FDSR_FDCNT_MASK                      0xFFu
-#define LCD_FDSR_FDCNT_SHIFT                     0
-#define LCD_FDSR_FDCNT(x)                        (((uint32_t)(((uint32_t)(x))<<LCD_FDSR_FDCNT_SHIFT))&LCD_FDSR_FDCNT_MASK)
-#define LCD_FDSR_FDCF_MASK                       0x8000u
-#define LCD_FDSR_FDCF_SHIFT                      15
-/* PEN Bit Fields */
-#define LCD_PEN_PEN_MASK                         0xFFFFFFFFu
-#define LCD_PEN_PEN_SHIFT                        0
-#define LCD_PEN_PEN(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_PEN_PEN_SHIFT))&LCD_PEN_PEN_MASK)
-/* BPEN Bit Fields */
-#define LCD_BPEN_BPEN_MASK                       0xFFFFFFFFu
-#define LCD_BPEN_BPEN_SHIFT                      0
-#define LCD_BPEN_BPEN(x)                         (((uint32_t)(((uint32_t)(x))<<LCD_BPEN_BPEN_SHIFT))&LCD_BPEN_BPEN_MASK)
-/* WF Bit Fields */
-#define LCD_WF_WF0_MASK                          0xFFu
-#define LCD_WF_WF0_SHIFT                         0
-#define LCD_WF_WF0(x)                            (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF0_SHIFT))&LCD_WF_WF0_MASK)
-#define LCD_WF_WF60_MASK                         0xFFu
-#define LCD_WF_WF60_SHIFT                        0
-#define LCD_WF_WF60(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF60_SHIFT))&LCD_WF_WF60_MASK)
-#define LCD_WF_WF56_MASK                         0xFFu
-#define LCD_WF_WF56_SHIFT                        0
-#define LCD_WF_WF56(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF56_SHIFT))&LCD_WF_WF56_MASK)
-#define LCD_WF_WF52_MASK                         0xFFu
-#define LCD_WF_WF52_SHIFT                        0
-#define LCD_WF_WF52(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF52_SHIFT))&LCD_WF_WF52_MASK)
-#define LCD_WF_WF4_MASK                          0xFFu
-#define LCD_WF_WF4_SHIFT                         0
-#define LCD_WF_WF4(x)                            (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF4_SHIFT))&LCD_WF_WF4_MASK)
-#define LCD_WF_WF48_MASK                         0xFFu
-#define LCD_WF_WF48_SHIFT                        0
-#define LCD_WF_WF48(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF48_SHIFT))&LCD_WF_WF48_MASK)
-#define LCD_WF_WF44_MASK                         0xFFu
-#define LCD_WF_WF44_SHIFT                        0
-#define LCD_WF_WF44(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF44_SHIFT))&LCD_WF_WF44_MASK)
-#define LCD_WF_WF40_MASK                         0xFFu
-#define LCD_WF_WF40_SHIFT                        0
-#define LCD_WF_WF40(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF40_SHIFT))&LCD_WF_WF40_MASK)
-#define LCD_WF_WF8_MASK                          0xFFu
-#define LCD_WF_WF8_SHIFT                         0
-#define LCD_WF_WF8(x)                            (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF8_SHIFT))&LCD_WF_WF8_MASK)
-#define LCD_WF_WF36_MASK                         0xFFu
-#define LCD_WF_WF36_SHIFT                        0
-#define LCD_WF_WF36(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF36_SHIFT))&LCD_WF_WF36_MASK)
-#define LCD_WF_WF32_MASK                         0xFFu
-#define LCD_WF_WF32_SHIFT                        0
-#define LCD_WF_WF32(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF32_SHIFT))&LCD_WF_WF32_MASK)
-#define LCD_WF_WF28_MASK                         0xFFu
-#define LCD_WF_WF28_SHIFT                        0
-#define LCD_WF_WF28(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF28_SHIFT))&LCD_WF_WF28_MASK)
-#define LCD_WF_WF12_MASK                         0xFFu
-#define LCD_WF_WF12_SHIFT                        0
-#define LCD_WF_WF12(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF12_SHIFT))&LCD_WF_WF12_MASK)
-#define LCD_WF_WF24_MASK                         0xFFu
-#define LCD_WF_WF24_SHIFT                        0
-#define LCD_WF_WF24(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF24_SHIFT))&LCD_WF_WF24_MASK)
-#define LCD_WF_WF20_MASK                         0xFFu
-#define LCD_WF_WF20_SHIFT                        0
-#define LCD_WF_WF20(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF20_SHIFT))&LCD_WF_WF20_MASK)
-#define LCD_WF_WF16_MASK                         0xFFu
-#define LCD_WF_WF16_SHIFT                        0
-#define LCD_WF_WF16(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF16_SHIFT))&LCD_WF_WF16_MASK)
-#define LCD_WF_WF5_MASK                          0xFF00u
-#define LCD_WF_WF5_SHIFT                         8
-#define LCD_WF_WF5(x)                            (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF5_SHIFT))&LCD_WF_WF5_MASK)
-#define LCD_WF_WF49_MASK                         0xFF00u
-#define LCD_WF_WF49_SHIFT                        8
-#define LCD_WF_WF49(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF49_SHIFT))&LCD_WF_WF49_MASK)
-#define LCD_WF_WF45_MASK                         0xFF00u
-#define LCD_WF_WF45_SHIFT                        8
-#define LCD_WF_WF45(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF45_SHIFT))&LCD_WF_WF45_MASK)
-#define LCD_WF_WF61_MASK                         0xFF00u
-#define LCD_WF_WF61_SHIFT                        8
-#define LCD_WF_WF61(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF61_SHIFT))&LCD_WF_WF61_MASK)
-#define LCD_WF_WF25_MASK                         0xFF00u
-#define LCD_WF_WF25_SHIFT                        8
-#define LCD_WF_WF25(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF25_SHIFT))&LCD_WF_WF25_MASK)
-#define LCD_WF_WF17_MASK                         0xFF00u
-#define LCD_WF_WF17_SHIFT                        8
-#define LCD_WF_WF17(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF17_SHIFT))&LCD_WF_WF17_MASK)
-#define LCD_WF_WF41_MASK                         0xFF00u
-#define LCD_WF_WF41_SHIFT                        8
-#define LCD_WF_WF41(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF41_SHIFT))&LCD_WF_WF41_MASK)
-#define LCD_WF_WF13_MASK                         0xFF00u
-#define LCD_WF_WF13_SHIFT                        8
-#define LCD_WF_WF13(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF13_SHIFT))&LCD_WF_WF13_MASK)
-#define LCD_WF_WF57_MASK                         0xFF00u
-#define LCD_WF_WF57_SHIFT                        8
-#define LCD_WF_WF57(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF57_SHIFT))&LCD_WF_WF57_MASK)
-#define LCD_WF_WF53_MASK                         0xFF00u
-#define LCD_WF_WF53_SHIFT                        8
-#define LCD_WF_WF53(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF53_SHIFT))&LCD_WF_WF53_MASK)
-#define LCD_WF_WF37_MASK                         0xFF00u
-#define LCD_WF_WF37_SHIFT                        8
-#define LCD_WF_WF37(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF37_SHIFT))&LCD_WF_WF37_MASK)
-#define LCD_WF_WF9_MASK                          0xFF00u
-#define LCD_WF_WF9_SHIFT                         8
-#define LCD_WF_WF9(x)                            (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF9_SHIFT))&LCD_WF_WF9_MASK)
-#define LCD_WF_WF1_MASK                          0xFF00u
-#define LCD_WF_WF1_SHIFT                         8
-#define LCD_WF_WF1(x)                            (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF1_SHIFT))&LCD_WF_WF1_MASK)
-#define LCD_WF_WF29_MASK                         0xFF00u
-#define LCD_WF_WF29_SHIFT                        8
-#define LCD_WF_WF29(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF29_SHIFT))&LCD_WF_WF29_MASK)
-#define LCD_WF_WF33_MASK                         0xFF00u
-#define LCD_WF_WF33_SHIFT                        8
-#define LCD_WF_WF33(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF33_SHIFT))&LCD_WF_WF33_MASK)
-#define LCD_WF_WF21_MASK                         0xFF00u
-#define LCD_WF_WF21_SHIFT                        8
-#define LCD_WF_WF21(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF21_SHIFT))&LCD_WF_WF21_MASK)
-#define LCD_WF_WF26_MASK                         0xFF0000u
-#define LCD_WF_WF26_SHIFT                        16
-#define LCD_WF_WF26(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF26_SHIFT))&LCD_WF_WF26_MASK)
-#define LCD_WF_WF46_MASK                         0xFF0000u
-#define LCD_WF_WF46_SHIFT                        16
-#define LCD_WF_WF46(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF46_SHIFT))&LCD_WF_WF46_MASK)
-#define LCD_WF_WF6_MASK                          0xFF0000u
-#define LCD_WF_WF6_SHIFT                         16
-#define LCD_WF_WF6(x)                            (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF6_SHIFT))&LCD_WF_WF6_MASK)
-#define LCD_WF_WF42_MASK                         0xFF0000u
-#define LCD_WF_WF42_SHIFT                        16
-#define LCD_WF_WF42(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF42_SHIFT))&LCD_WF_WF42_MASK)
-#define LCD_WF_WF18_MASK                         0xFF0000u
-#define LCD_WF_WF18_SHIFT                        16
-#define LCD_WF_WF18(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF18_SHIFT))&LCD_WF_WF18_MASK)
-#define LCD_WF_WF38_MASK                         0xFF0000u
-#define LCD_WF_WF38_SHIFT                        16
-#define LCD_WF_WF38(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF38_SHIFT))&LCD_WF_WF38_MASK)
-#define LCD_WF_WF22_MASK                         0xFF0000u
-#define LCD_WF_WF22_SHIFT                        16
-#define LCD_WF_WF22(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF22_SHIFT))&LCD_WF_WF22_MASK)
-#define LCD_WF_WF34_MASK                         0xFF0000u
-#define LCD_WF_WF34_SHIFT                        16
-#define LCD_WF_WF34(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF34_SHIFT))&LCD_WF_WF34_MASK)
-#define LCD_WF_WF50_MASK                         0xFF0000u
-#define LCD_WF_WF50_SHIFT                        16
-#define LCD_WF_WF50(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF50_SHIFT))&LCD_WF_WF50_MASK)
-#define LCD_WF_WF14_MASK                         0xFF0000u
-#define LCD_WF_WF14_SHIFT                        16
-#define LCD_WF_WF14(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF14_SHIFT))&LCD_WF_WF14_MASK)
-#define LCD_WF_WF54_MASK                         0xFF0000u
-#define LCD_WF_WF54_SHIFT                        16
-#define LCD_WF_WF54(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF54_SHIFT))&LCD_WF_WF54_MASK)
-#define LCD_WF_WF2_MASK                          0xFF0000u
-#define LCD_WF_WF2_SHIFT                         16
-#define LCD_WF_WF2(x)                            (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF2_SHIFT))&LCD_WF_WF2_MASK)
-#define LCD_WF_WF58_MASK                         0xFF0000u
-#define LCD_WF_WF58_SHIFT                        16
-#define LCD_WF_WF58(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF58_SHIFT))&LCD_WF_WF58_MASK)
-#define LCD_WF_WF30_MASK                         0xFF0000u
-#define LCD_WF_WF30_SHIFT                        16
-#define LCD_WF_WF30(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF30_SHIFT))&LCD_WF_WF30_MASK)
-#define LCD_WF_WF62_MASK                         0xFF0000u
-#define LCD_WF_WF62_SHIFT                        16
-#define LCD_WF_WF62(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF62_SHIFT))&LCD_WF_WF62_MASK)
-#define LCD_WF_WF10_MASK                         0xFF0000u
-#define LCD_WF_WF10_SHIFT                        16
-#define LCD_WF_WF10(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF10_SHIFT))&LCD_WF_WF10_MASK)
-#define LCD_WF_WF63_MASK                         0xFF000000u
-#define LCD_WF_WF63_SHIFT                        24
-#define LCD_WF_WF63(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF63_SHIFT))&LCD_WF_WF63_MASK)
-#define LCD_WF_WF59_MASK                         0xFF000000u
-#define LCD_WF_WF59_SHIFT                        24
-#define LCD_WF_WF59(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF59_SHIFT))&LCD_WF_WF59_MASK)
-#define LCD_WF_WF55_MASK                         0xFF000000u
-#define LCD_WF_WF55_SHIFT                        24
-#define LCD_WF_WF55(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF55_SHIFT))&LCD_WF_WF55_MASK)
-#define LCD_WF_WF3_MASK                          0xFF000000u
-#define LCD_WF_WF3_SHIFT                         24
-#define LCD_WF_WF3(x)                            (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF3_SHIFT))&LCD_WF_WF3_MASK)
-#define LCD_WF_WF51_MASK                         0xFF000000u
-#define LCD_WF_WF51_SHIFT                        24
-#define LCD_WF_WF51(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF51_SHIFT))&LCD_WF_WF51_MASK)
-#define LCD_WF_WF47_MASK                         0xFF000000u
-#define LCD_WF_WF47_SHIFT                        24
-#define LCD_WF_WF47(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF47_SHIFT))&LCD_WF_WF47_MASK)
-#define LCD_WF_WF43_MASK                         0xFF000000u
-#define LCD_WF_WF43_SHIFT                        24
-#define LCD_WF_WF43(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF43_SHIFT))&LCD_WF_WF43_MASK)
-#define LCD_WF_WF7_MASK                          0xFF000000u
-#define LCD_WF_WF7_SHIFT                         24
-#define LCD_WF_WF7(x)                            (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF7_SHIFT))&LCD_WF_WF7_MASK)
-#define LCD_WF_WF39_MASK                         0xFF000000u
-#define LCD_WF_WF39_SHIFT                        24
-#define LCD_WF_WF39(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF39_SHIFT))&LCD_WF_WF39_MASK)
-#define LCD_WF_WF35_MASK                         0xFF000000u
-#define LCD_WF_WF35_SHIFT                        24
-#define LCD_WF_WF35(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF35_SHIFT))&LCD_WF_WF35_MASK)
-#define LCD_WF_WF31_MASK                         0xFF000000u
-#define LCD_WF_WF31_SHIFT                        24
-#define LCD_WF_WF31(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF31_SHIFT))&LCD_WF_WF31_MASK)
-#define LCD_WF_WF11_MASK                         0xFF000000u
-#define LCD_WF_WF11_SHIFT                        24
-#define LCD_WF_WF11(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF11_SHIFT))&LCD_WF_WF11_MASK)
-#define LCD_WF_WF27_MASK                         0xFF000000u
-#define LCD_WF_WF27_SHIFT                        24
-#define LCD_WF_WF27(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF27_SHIFT))&LCD_WF_WF27_MASK)
-#define LCD_WF_WF23_MASK                         0xFF000000u
-#define LCD_WF_WF23_SHIFT                        24
-#define LCD_WF_WF23(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF23_SHIFT))&LCD_WF_WF23_MASK)
-#define LCD_WF_WF19_MASK                         0xFF000000u
-#define LCD_WF_WF19_SHIFT                        24
-#define LCD_WF_WF19(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF19_SHIFT))&LCD_WF_WF19_MASK)
-#define LCD_WF_WF15_MASK                         0xFF000000u
-#define LCD_WF_WF15_SHIFT                        24
-#define LCD_WF_WF15(x)                           (((uint32_t)(((uint32_t)(x))<<LCD_WF_WF15_SHIFT))&LCD_WF_WF15_MASK)
-/* WF8B Bit Fields */
-#define LCD_WF8B_BPALCD0_MASK                    0x1u
-#define LCD_WF8B_BPALCD0_SHIFT                   0
-#define LCD_WF8B_BPALCD63_MASK                   0x1u
-#define LCD_WF8B_BPALCD63_SHIFT                  0
-#define LCD_WF8B_BPALCD62_MASK                   0x1u
-#define LCD_WF8B_BPALCD62_SHIFT                  0
-#define LCD_WF8B_BPALCD61_MASK                   0x1u
-#define LCD_WF8B_BPALCD61_SHIFT                  0
-#define LCD_WF8B_BPALCD60_MASK                   0x1u
-#define LCD_WF8B_BPALCD60_SHIFT                  0
-#define LCD_WF8B_BPALCD59_MASK                   0x1u
-#define LCD_WF8B_BPALCD59_SHIFT                  0
-#define LCD_WF8B_BPALCD58_MASK                   0x1u
-#define LCD_WF8B_BPALCD58_SHIFT                  0
-#define LCD_WF8B_BPALCD57_MASK                   0x1u
-#define LCD_WF8B_BPALCD57_SHIFT                  0
-#define LCD_WF8B_BPALCD1_MASK                    0x1u
-#define LCD_WF8B_BPALCD1_SHIFT                   0
-#define LCD_WF8B_BPALCD56_MASK                   0x1u
-#define LCD_WF8B_BPALCD56_SHIFT                  0
-#define LCD_WF8B_BPALCD55_MASK                   0x1u
-#define LCD_WF8B_BPALCD55_SHIFT                  0
-#define LCD_WF8B_BPALCD54_MASK                   0x1u
-#define LCD_WF8B_BPALCD54_SHIFT                  0
-#define LCD_WF8B_BPALCD53_MASK                   0x1u
-#define LCD_WF8B_BPALCD53_SHIFT                  0
-#define LCD_WF8B_BPALCD52_MASK                   0x1u
-#define LCD_WF8B_BPALCD52_SHIFT                  0
-#define LCD_WF8B_BPALCD51_MASK                   0x1u
-#define LCD_WF8B_BPALCD51_SHIFT                  0
-#define LCD_WF8B_BPALCD50_MASK                   0x1u
-#define LCD_WF8B_BPALCD50_SHIFT                  0
-#define LCD_WF8B_BPALCD2_MASK                    0x1u
-#define LCD_WF8B_BPALCD2_SHIFT                   0
-#define LCD_WF8B_BPALCD49_MASK                   0x1u
-#define LCD_WF8B_BPALCD49_SHIFT                  0
-#define LCD_WF8B_BPALCD48_MASK                   0x1u
-#define LCD_WF8B_BPALCD48_SHIFT                  0
-#define LCD_WF8B_BPALCD47_MASK                   0x1u
-#define LCD_WF8B_BPALCD47_SHIFT                  0
-#define LCD_WF8B_BPALCD46_MASK                   0x1u
-#define LCD_WF8B_BPALCD46_SHIFT                  0
-#define LCD_WF8B_BPALCD45_MASK                   0x1u
-#define LCD_WF8B_BPALCD45_SHIFT                  0
-#define LCD_WF8B_BPALCD44_MASK                   0x1u
-#define LCD_WF8B_BPALCD44_SHIFT                  0
-#define LCD_WF8B_BPALCD43_MASK                   0x1u
-#define LCD_WF8B_BPALCD43_SHIFT                  0
-#define LCD_WF8B_BPALCD3_MASK                    0x1u
-#define LCD_WF8B_BPALCD3_SHIFT                   0
-#define LCD_WF8B_BPALCD42_MASK                   0x1u
-#define LCD_WF8B_BPALCD42_SHIFT                  0
-#define LCD_WF8B_BPALCD41_MASK                   0x1u
-#define LCD_WF8B_BPALCD41_SHIFT                  0
-#define LCD_WF8B_BPALCD40_MASK                   0x1u
-#define LCD_WF8B_BPALCD40_SHIFT                  0
-#define LCD_WF8B_BPALCD39_MASK                   0x1u
-#define LCD_WF8B_BPALCD39_SHIFT                  0
-#define LCD_WF8B_BPALCD38_MASK                   0x1u
-#define LCD_WF8B_BPALCD38_SHIFT                  0
-#define LCD_WF8B_BPALCD37_MASK                   0x1u
-#define LCD_WF8B_BPALCD37_SHIFT                  0
-#define LCD_WF8B_BPALCD36_MASK                   0x1u
-#define LCD_WF8B_BPALCD36_SHIFT                  0
-#define LCD_WF8B_BPALCD4_MASK                    0x1u
-#define LCD_WF8B_BPALCD4_SHIFT                   0
-#define LCD_WF8B_BPALCD35_MASK                   0x1u
-#define LCD_WF8B_BPALCD35_SHIFT                  0
-#define LCD_WF8B_BPALCD34_MASK                   0x1u
-#define LCD_WF8B_BPALCD34_SHIFT                  0
-#define LCD_WF8B_BPALCD33_MASK                   0x1u
-#define LCD_WF8B_BPALCD33_SHIFT                  0
-#define LCD_WF8B_BPALCD32_MASK                   0x1u
-#define LCD_WF8B_BPALCD32_SHIFT                  0
-#define LCD_WF8B_BPALCD31_MASK                   0x1u
-#define LCD_WF8B_BPALCD31_SHIFT                  0
-#define LCD_WF8B_BPALCD30_MASK                   0x1u
-#define LCD_WF8B_BPALCD30_SHIFT                  0
-#define LCD_WF8B_BPALCD29_MASK                   0x1u
-#define LCD_WF8B_BPALCD29_SHIFT                  0
-#define LCD_WF8B_BPALCD5_MASK                    0x1u
-#define LCD_WF8B_BPALCD5_SHIFT                   0
-#define LCD_WF8B_BPALCD28_MASK                   0x1u
-#define LCD_WF8B_BPALCD28_SHIFT                  0
-#define LCD_WF8B_BPALCD27_MASK                   0x1u
-#define LCD_WF8B_BPALCD27_SHIFT                  0
-#define LCD_WF8B_BPALCD26_MASK                   0x1u
-#define LCD_WF8B_BPALCD26_SHIFT                  0
-#define LCD_WF8B_BPALCD25_MASK                   0x1u
-#define LCD_WF8B_BPALCD25_SHIFT                  0
-#define LCD_WF8B_BPALCD24_MASK                   0x1u
-#define LCD_WF8B_BPALCD24_SHIFT                  0
-#define LCD_WF8B_BPALCD23_MASK                   0x1u
-#define LCD_WF8B_BPALCD23_SHIFT                  0
-#define LCD_WF8B_BPALCD22_MASK                   0x1u
-#define LCD_WF8B_BPALCD22_SHIFT                  0
-#define LCD_WF8B_BPALCD6_MASK                    0x1u
-#define LCD_WF8B_BPALCD6_SHIFT                   0
-#define LCD_WF8B_BPALCD21_MASK                   0x1u
-#define LCD_WF8B_BPALCD21_SHIFT                  0
-#define LCD_WF8B_BPALCD20_MASK                   0x1u
-#define LCD_WF8B_BPALCD20_SHIFT                  0
-#define LCD_WF8B_BPALCD19_MASK                   0x1u
-#define LCD_WF8B_BPALCD19_SHIFT                  0
-#define LCD_WF8B_BPALCD18_MASK                   0x1u
-#define LCD_WF8B_BPALCD18_SHIFT                  0
-#define LCD_WF8B_BPALCD17_MASK                   0x1u
-#define LCD_WF8B_BPALCD17_SHIFT                  0
-#define LCD_WF8B_BPALCD16_MASK                   0x1u
-#define LCD_WF8B_BPALCD16_SHIFT                  0
-#define LCD_WF8B_BPALCD15_MASK                   0x1u
-#define LCD_WF8B_BPALCD15_SHIFT                  0
-#define LCD_WF8B_BPALCD7_MASK                    0x1u
-#define LCD_WF8B_BPALCD7_SHIFT                   0
-#define LCD_WF8B_BPALCD14_MASK                   0x1u
-#define LCD_WF8B_BPALCD14_SHIFT                  0
-#define LCD_WF8B_BPALCD13_MASK                   0x1u
-#define LCD_WF8B_BPALCD13_SHIFT                  0
-#define LCD_WF8B_BPALCD12_MASK                   0x1u
-#define LCD_WF8B_BPALCD12_SHIFT                  0
-#define LCD_WF8B_BPALCD11_MASK                   0x1u
-#define LCD_WF8B_BPALCD11_SHIFT                  0
-#define LCD_WF8B_BPALCD10_MASK                   0x1u
-#define LCD_WF8B_BPALCD10_SHIFT                  0
-#define LCD_WF8B_BPALCD9_MASK                    0x1u
-#define LCD_WF8B_BPALCD9_SHIFT                   0
-#define LCD_WF8B_BPALCD8_MASK                    0x1u
-#define LCD_WF8B_BPALCD8_SHIFT                   0
-#define LCD_WF8B_BPBLCD1_MASK                    0x2u
-#define LCD_WF8B_BPBLCD1_SHIFT                   1
-#define LCD_WF8B_BPBLCD32_MASK                   0x2u
-#define LCD_WF8B_BPBLCD32_SHIFT                  1
-#define LCD_WF8B_BPBLCD30_MASK                   0x2u
-#define LCD_WF8B_BPBLCD30_SHIFT                  1
-#define LCD_WF8B_BPBLCD60_MASK                   0x2u
-#define LCD_WF8B_BPBLCD60_SHIFT                  1
-#define LCD_WF8B_BPBLCD24_MASK                   0x2u
-#define LCD_WF8B_BPBLCD24_SHIFT                  1
-#define LCD_WF8B_BPBLCD28_MASK                   0x2u
-#define LCD_WF8B_BPBLCD28_SHIFT                  1
-#define LCD_WF8B_BPBLCD23_MASK                   0x2u
-#define LCD_WF8B_BPBLCD23_SHIFT                  1
-#define LCD_WF8B_BPBLCD48_MASK                   0x2u
-#define LCD_WF8B_BPBLCD48_SHIFT                  1
-#define LCD_WF8B_BPBLCD10_MASK                   0x2u
-#define LCD_WF8B_BPBLCD10_SHIFT                  1
-#define LCD_WF8B_BPBLCD15_MASK                   0x2u
-#define LCD_WF8B_BPBLCD15_SHIFT                  1
-#define LCD_WF8B_BPBLCD36_MASK                   0x2u
-#define LCD_WF8B_BPBLCD36_SHIFT                  1
-#define LCD_WF8B_BPBLCD44_MASK                   0x2u
-#define LCD_WF8B_BPBLCD44_SHIFT                  1
-#define LCD_WF8B_BPBLCD62_MASK                   0x2u
-#define LCD_WF8B_BPBLCD62_SHIFT                  1
-#define LCD_WF8B_BPBLCD53_MASK                   0x2u
-#define LCD_WF8B_BPBLCD53_SHIFT                  1
-#define LCD_WF8B_BPBLCD22_MASK                   0x2u
-#define LCD_WF8B_BPBLCD22_SHIFT                  1
-#define LCD_WF8B_BPBLCD47_MASK                   0x2u
-#define LCD_WF8B_BPBLCD47_SHIFT                  1
-#define LCD_WF8B_BPBLCD33_MASK                   0x2u
-#define LCD_WF8B_BPBLCD33_SHIFT                  1
-#define LCD_WF8B_BPBLCD2_MASK                    0x2u
-#define LCD_WF8B_BPBLCD2_SHIFT                   1
-#define LCD_WF8B_BPBLCD49_MASK                   0x2u
-#define LCD_WF8B_BPBLCD49_SHIFT                  1
-#define LCD_WF8B_BPBLCD0_MASK                    0x2u
-#define LCD_WF8B_BPBLCD0_SHIFT                   1
-#define LCD_WF8B_BPBLCD55_MASK                   0x2u
-#define LCD_WF8B_BPBLCD55_SHIFT                  1
-#define LCD_WF8B_BPBLCD56_MASK                   0x2u
-#define LCD_WF8B_BPBLCD56_SHIFT                  1
-#define LCD_WF8B_BPBLCD21_MASK                   0x2u
-#define LCD_WF8B_BPBLCD21_SHIFT                  1
-#define LCD_WF8B_BPBLCD6_MASK                    0x2u
-#define LCD_WF8B_BPBLCD6_SHIFT                   1
-#define LCD_WF8B_BPBLCD29_MASK                   0x2u
-#define LCD_WF8B_BPBLCD29_SHIFT                  1
-#define LCD_WF8B_BPBLCD25_MASK                   0x2u
-#define LCD_WF8B_BPBLCD25_SHIFT                  1
-#define LCD_WF8B_BPBLCD8_MASK                    0x2u
-#define LCD_WF8B_BPBLCD8_SHIFT                   1
-#define LCD_WF8B_BPBLCD54_MASK                   0x2u
-#define LCD_WF8B_BPBLCD54_SHIFT                  1
-#define LCD_WF8B_BPBLCD38_MASK                   0x2u
-#define LCD_WF8B_BPBLCD38_SHIFT                  1
-#define LCD_WF8B_BPBLCD43_MASK                   0x2u
-#define LCD_WF8B_BPBLCD43_SHIFT                  1
-#define LCD_WF8B_BPBLCD20_MASK                   0x2u
-#define LCD_WF8B_BPBLCD20_SHIFT                  1
-#define LCD_WF8B_BPBLCD9_MASK                    0x2u
-#define LCD_WF8B_BPBLCD9_SHIFT                   1
-#define LCD_WF8B_BPBLCD7_MASK                    0x2u
-#define LCD_WF8B_BPBLCD7_SHIFT                   1
-#define LCD_WF8B_BPBLCD50_MASK                   0x2u
-#define LCD_WF8B_BPBLCD50_SHIFT                  1
-#define LCD_WF8B_BPBLCD40_MASK                   0x2u
-#define LCD_WF8B_BPBLCD40_SHIFT                  1
-#define LCD_WF8B_BPBLCD63_MASK                   0x2u
-#define LCD_WF8B_BPBLCD63_SHIFT                  1
-#define LCD_WF8B_BPBLCD26_MASK                   0x2u
-#define LCD_WF8B_BPBLCD26_SHIFT                  1
-#define LCD_WF8B_BPBLCD12_MASK                   0x2u
-#define LCD_WF8B_BPBLCD12_SHIFT                  1
-#define LCD_WF8B_BPBLCD19_MASK                   0x2u
-#define LCD_WF8B_BPBLCD19_SHIFT                  1
-#define LCD_WF8B_BPBLCD34_MASK                   0x2u
-#define LCD_WF8B_BPBLCD34_SHIFT                  1
-#define LCD_WF8B_BPBLCD39_MASK                   0x2u
-#define LCD_WF8B_BPBLCD39_SHIFT                  1
-#define LCD_WF8B_BPBLCD59_MASK                   0x2u
-#define LCD_WF8B_BPBLCD59_SHIFT                  1
-#define LCD_WF8B_BPBLCD61_MASK                   0x2u
-#define LCD_WF8B_BPBLCD61_SHIFT                  1
-#define LCD_WF8B_BPBLCD37_MASK                   0x2u
-#define LCD_WF8B_BPBLCD37_SHIFT                  1
-#define LCD_WF8B_BPBLCD31_MASK                   0x2u
-#define LCD_WF8B_BPBLCD31_SHIFT                  1
-#define LCD_WF8B_BPBLCD58_MASK                   0x2u
-#define LCD_WF8B_BPBLCD58_SHIFT                  1
-#define LCD_WF8B_BPBLCD18_MASK                   0x2u
-#define LCD_WF8B_BPBLCD18_SHIFT                  1
-#define LCD_WF8B_BPBLCD45_MASK                   0x2u
-#define LCD_WF8B_BPBLCD45_SHIFT                  1
-#define LCD_WF8B_BPBLCD27_MASK                   0x2u
-#define LCD_WF8B_BPBLCD27_SHIFT                  1
-#define LCD_WF8B_BPBLCD14_MASK                   0x2u
-#define LCD_WF8B_BPBLCD14_SHIFT                  1
-#define LCD_WF8B_BPBLCD51_MASK                   0x2u
-#define LCD_WF8B_BPBLCD51_SHIFT                  1
-#define LCD_WF8B_BPBLCD52_MASK                   0x2u
-#define LCD_WF8B_BPBLCD52_SHIFT                  1
-#define LCD_WF8B_BPBLCD4_MASK                    0x2u
-#define LCD_WF8B_BPBLCD4_SHIFT                   1
-#define LCD_WF8B_BPBLCD35_MASK                   0x2u
-#define LCD_WF8B_BPBLCD35_SHIFT                  1
-#define LCD_WF8B_BPBLCD17_MASK                   0x2u
-#define LCD_WF8B_BPBLCD17_SHIFT                  1
-#define LCD_WF8B_BPBLCD41_MASK                   0x2u
-#define LCD_WF8B_BPBLCD41_SHIFT                  1
-#define LCD_WF8B_BPBLCD11_MASK                   0x2u
-#define LCD_WF8B_BPBLCD11_SHIFT                  1
-#define LCD_WF8B_BPBLCD46_MASK                   0x2u
-#define LCD_WF8B_BPBLCD46_SHIFT                  1
-#define LCD_WF8B_BPBLCD57_MASK                   0x2u
-#define LCD_WF8B_BPBLCD57_SHIFT                  1
-#define LCD_WF8B_BPBLCD42_MASK                   0x2u
-#define LCD_WF8B_BPBLCD42_SHIFT                  1
-#define LCD_WF8B_BPBLCD5_MASK                    0x2u
-#define LCD_WF8B_BPBLCD5_SHIFT                   1
-#define LCD_WF8B_BPBLCD3_MASK                    0x2u
-#define LCD_WF8B_BPBLCD3_SHIFT                   1
-#define LCD_WF8B_BPBLCD16_MASK                   0x2u
-#define LCD_WF8B_BPBLCD16_SHIFT                  1
-#define LCD_WF8B_BPBLCD13_MASK                   0x2u
-#define LCD_WF8B_BPBLCD13_SHIFT                  1
-#define LCD_WF8B_BPCLCD10_MASK                   0x4u
-#define LCD_WF8B_BPCLCD10_SHIFT                  2
-#define LCD_WF8B_BPCLCD55_MASK                   0x4u
-#define LCD_WF8B_BPCLCD55_SHIFT                  2
-#define LCD_WF8B_BPCLCD2_MASK                    0x4u
-#define LCD_WF8B_BPCLCD2_SHIFT                   2
-#define LCD_WF8B_BPCLCD23_MASK                   0x4u
-#define LCD_WF8B_BPCLCD23_SHIFT                  2
-#define LCD_WF8B_BPCLCD48_MASK                   0x4u
-#define LCD_WF8B_BPCLCD48_SHIFT                  2
-#define LCD_WF8B_BPCLCD24_MASK                   0x4u
-#define LCD_WF8B_BPCLCD24_SHIFT                  2
-#define LCD_WF8B_BPCLCD60_MASK                   0x4u
-#define LCD_WF8B_BPCLCD60_SHIFT                  2
-#define LCD_WF8B_BPCLCD47_MASK                   0x4u
-#define LCD_WF8B_BPCLCD47_SHIFT                  2
-#define LCD_WF8B_BPCLCD22_MASK                   0x4u
-#define LCD_WF8B_BPCLCD22_SHIFT                  2
-#define LCD_WF8B_BPCLCD8_MASK                    0x4u
-#define LCD_WF8B_BPCLCD8_SHIFT                   2
-#define LCD_WF8B_BPCLCD21_MASK                   0x4u
-#define LCD_WF8B_BPCLCD21_SHIFT                  2
-#define LCD_WF8B_BPCLCD49_MASK                   0x4u
-#define LCD_WF8B_BPCLCD49_SHIFT                  2
-#define LCD_WF8B_BPCLCD25_MASK                   0x4u
-#define LCD_WF8B_BPCLCD25_SHIFT                  2
-#define LCD_WF8B_BPCLCD1_MASK                    0x4u
-#define LCD_WF8B_BPCLCD1_SHIFT                   2
-#define LCD_WF8B_BPCLCD20_MASK                   0x4u
-#define LCD_WF8B_BPCLCD20_SHIFT                  2
-#define LCD_WF8B_BPCLCD50_MASK                   0x4u
-#define LCD_WF8B_BPCLCD50_SHIFT                  2
-#define LCD_WF8B_BPCLCD19_MASK                   0x4u
-#define LCD_WF8B_BPCLCD19_SHIFT                  2
-#define LCD_WF8B_BPCLCD26_MASK                   0x4u
-#define LCD_WF8B_BPCLCD26_SHIFT                  2
-#define LCD_WF8B_BPCLCD59_MASK                   0x4u
-#define LCD_WF8B_BPCLCD59_SHIFT                  2
-#define LCD_WF8B_BPCLCD61_MASK                   0x4u
-#define LCD_WF8B_BPCLCD61_SHIFT                  2
-#define LCD_WF8B_BPCLCD46_MASK                   0x4u
-#define LCD_WF8B_BPCLCD46_SHIFT                  2
-#define LCD_WF8B_BPCLCD18_MASK                   0x4u
-#define LCD_WF8B_BPCLCD18_SHIFT                  2
-#define LCD_WF8B_BPCLCD5_MASK                    0x4u
-#define LCD_WF8B_BPCLCD5_SHIFT                   2
-#define LCD_WF8B_BPCLCD63_MASK                   0x4u
-#define LCD_WF8B_BPCLCD63_SHIFT                  2
-#define LCD_WF8B_BPCLCD27_MASK                   0x4u
-#define LCD_WF8B_BPCLCD27_SHIFT                  2
-#define LCD_WF8B_BPCLCD17_MASK                   0x4u
-#define LCD_WF8B_BPCLCD17_SHIFT                  2
-#define LCD_WF8B_BPCLCD51_MASK                   0x4u
-#define LCD_WF8B_BPCLCD51_SHIFT                  2
-#define LCD_WF8B_BPCLCD9_MASK                    0x4u
-#define LCD_WF8B_BPCLCD9_SHIFT                   2
-#define LCD_WF8B_BPCLCD54_MASK                   0x4u
-#define LCD_WF8B_BPCLCD54_SHIFT                  2
-#define LCD_WF8B_BPCLCD15_MASK                   0x4u
-#define LCD_WF8B_BPCLCD15_SHIFT                  2
-#define LCD_WF8B_BPCLCD16_MASK                   0x4u
-#define LCD_WF8B_BPCLCD16_SHIFT                  2
-#define LCD_WF8B_BPCLCD14_MASK                   0x4u
-#define LCD_WF8B_BPCLCD14_SHIFT                  2
-#define LCD_WF8B_BPCLCD32_MASK                   0x4u
-#define LCD_WF8B_BPCLCD32_SHIFT                  2
-#define LCD_WF8B_BPCLCD28_MASK                   0x4u
-#define LCD_WF8B_BPCLCD28_SHIFT                  2
-#define LCD_WF8B_BPCLCD53_MASK                   0x4u
-#define LCD_WF8B_BPCLCD53_SHIFT                  2
-#define LCD_WF8B_BPCLCD33_MASK                   0x4u
-#define LCD_WF8B_BPCLCD33_SHIFT                  2
-#define LCD_WF8B_BPCLCD0_MASK                    0x4u
-#define LCD_WF8B_BPCLCD0_SHIFT                   2
-#define LCD_WF8B_BPCLCD43_MASK                   0x4u
-#define LCD_WF8B_BPCLCD43_SHIFT                  2
-#define LCD_WF8B_BPCLCD7_MASK                    0x4u
-#define LCD_WF8B_BPCLCD7_SHIFT                   2
-#define LCD_WF8B_BPCLCD4_MASK                    0x4u
-#define LCD_WF8B_BPCLCD4_SHIFT                   2
-#define LCD_WF8B_BPCLCD34_MASK                   0x4u
-#define LCD_WF8B_BPCLCD34_SHIFT                  2
-#define LCD_WF8B_BPCLCD29_MASK                   0x4u
-#define LCD_WF8B_BPCLCD29_SHIFT                  2
-#define LCD_WF8B_BPCLCD45_MASK                   0x4u
-#define LCD_WF8B_BPCLCD45_SHIFT                  2
-#define LCD_WF8B_BPCLCD57_MASK                   0x4u
-#define LCD_WF8B_BPCLCD57_SHIFT                  2
-#define LCD_WF8B_BPCLCD42_MASK                   0x4u
-#define LCD_WF8B_BPCLCD42_SHIFT                  2
-#define LCD_WF8B_BPCLCD35_MASK                   0x4u
-#define LCD_WF8B_BPCLCD35_SHIFT                  2
-#define LCD_WF8B_BPCLCD13_MASK                   0x4u
-#define LCD_WF8B_BPCLCD13_SHIFT                  2
-#define LCD_WF8B_BPCLCD36_MASK                   0x4u
-#define LCD_WF8B_BPCLCD36_SHIFT                  2
-#define LCD_WF8B_BPCLCD30_MASK                   0x4u
-#define LCD_WF8B_BPCLCD30_SHIFT                  2
-#define LCD_WF8B_BPCLCD52_MASK                   0x4u
-#define LCD_WF8B_BPCLCD52_SHIFT                  2
-#define LCD_WF8B_BPCLCD58_MASK                   0x4u
-#define LCD_WF8B_BPCLCD58_SHIFT                  2
-#define LCD_WF8B_BPCLCD41_MASK                   0x4u
-#define LCD_WF8B_BPCLCD41_SHIFT                  2
-#define LCD_WF8B_BPCLCD37_MASK                   0x4u
-#define LCD_WF8B_BPCLCD37_SHIFT                  2
-#define LCD_WF8B_BPCLCD3_MASK                    0x4u
-#define LCD_WF8B_BPCLCD3_SHIFT                   2
-#define LCD_WF8B_BPCLCD12_MASK                   0x4u
-#define LCD_WF8B_BPCLCD12_SHIFT                  2
-#define LCD_WF8B_BPCLCD11_MASK                   0x4u
-#define LCD_WF8B_BPCLCD11_SHIFT                  2
-#define LCD_WF8B_BPCLCD38_MASK                   0x4u
-#define LCD_WF8B_BPCLCD38_SHIFT                  2
-#define LCD_WF8B_BPCLCD44_MASK                   0x4u
-#define LCD_WF8B_BPCLCD44_SHIFT                  2
-#define LCD_WF8B_BPCLCD31_MASK                   0x4u
-#define LCD_WF8B_BPCLCD31_SHIFT                  2
-#define LCD_WF8B_BPCLCD40_MASK                   0x4u
-#define LCD_WF8B_BPCLCD40_SHIFT                  2
-#define LCD_WF8B_BPCLCD62_MASK                   0x4u
-#define LCD_WF8B_BPCLCD62_SHIFT                  2
-#define LCD_WF8B_BPCLCD56_MASK                   0x4u
-#define LCD_WF8B_BPCLCD56_SHIFT                  2
-#define LCD_WF8B_BPCLCD39_MASK                   0x4u
-#define LCD_WF8B_BPCLCD39_SHIFT                  2
-#define LCD_WF8B_BPCLCD6_MASK                    0x4u
-#define LCD_WF8B_BPCLCD6_SHIFT                   2
-#define LCD_WF8B_BPDLCD47_MASK                   0x8u
-#define LCD_WF8B_BPDLCD47_SHIFT                  3
-#define LCD_WF8B_BPDLCD23_MASK                   0x8u
-#define LCD_WF8B_BPDLCD23_SHIFT                  3
-#define LCD_WF8B_BPDLCD48_MASK                   0x8u
-#define LCD_WF8B_BPDLCD48_SHIFT                  3
-#define LCD_WF8B_BPDLCD24_MASK                   0x8u
-#define LCD_WF8B_BPDLCD24_SHIFT                  3
-#define LCD_WF8B_BPDLCD15_MASK                   0x8u
-#define LCD_WF8B_BPDLCD15_SHIFT                  3
-#define LCD_WF8B_BPDLCD22_MASK                   0x8u
-#define LCD_WF8B_BPDLCD22_SHIFT                  3
-#define LCD_WF8B_BPDLCD60_MASK                   0x8u
-#define LCD_WF8B_BPDLCD60_SHIFT                  3
-#define LCD_WF8B_BPDLCD10_MASK                   0x8u
-#define LCD_WF8B_BPDLCD10_SHIFT                  3
-#define LCD_WF8B_BPDLCD21_MASK                   0x8u
-#define LCD_WF8B_BPDLCD21_SHIFT                  3
-#define LCD_WF8B_BPDLCD49_MASK                   0x8u
-#define LCD_WF8B_BPDLCD49_SHIFT                  3
-#define LCD_WF8B_BPDLCD1_MASK                    0x8u
-#define LCD_WF8B_BPDLCD1_SHIFT                   3
-#define LCD_WF8B_BPDLCD25_MASK                   0x8u
-#define LCD_WF8B_BPDLCD25_SHIFT                  3
-#define LCD_WF8B_BPDLCD20_MASK                   0x8u
-#define LCD_WF8B_BPDLCD20_SHIFT                  3
-#define LCD_WF8B_BPDLCD2_MASK                    0x8u
-#define LCD_WF8B_BPDLCD2_SHIFT                   3
-#define LCD_WF8B_BPDLCD55_MASK                   0x8u
-#define LCD_WF8B_BPDLCD55_SHIFT                  3
-#define LCD_WF8B_BPDLCD59_MASK                   0x8u
-#define LCD_WF8B_BPDLCD59_SHIFT                  3
-#define LCD_WF8B_BPDLCD5_MASK                    0x8u
-#define LCD_WF8B_BPDLCD5_SHIFT                   3
-#define LCD_WF8B_BPDLCD19_MASK                   0x8u
-#define LCD_WF8B_BPDLCD19_SHIFT                  3
-#define LCD_WF8B_BPDLCD6_MASK                    0x8u
-#define LCD_WF8B_BPDLCD6_SHIFT                   3
-#define LCD_WF8B_BPDLCD26_MASK                   0x8u
-#define LCD_WF8B_BPDLCD26_SHIFT                  3
-#define LCD_WF8B_BPDLCD0_MASK                    0x8u
-#define LCD_WF8B_BPDLCD0_SHIFT                   3
-#define LCD_WF8B_BPDLCD50_MASK                   0x8u
-#define LCD_WF8B_BPDLCD50_SHIFT                  3
-#define LCD_WF8B_BPDLCD46_MASK                   0x8u
-#define LCD_WF8B_BPDLCD46_SHIFT                  3
-#define LCD_WF8B_BPDLCD18_MASK                   0x8u
-#define LCD_WF8B_BPDLCD18_SHIFT                  3
-#define LCD_WF8B_BPDLCD61_MASK                   0x8u
-#define LCD_WF8B_BPDLCD61_SHIFT                  3
-#define LCD_WF8B_BPDLCD9_MASK                    0x8u
-#define LCD_WF8B_BPDLCD9_SHIFT                   3
-#define LCD_WF8B_BPDLCD17_MASK                   0x8u
-#define LCD_WF8B_BPDLCD17_SHIFT                  3
-#define LCD_WF8B_BPDLCD27_MASK                   0x8u
-#define LCD_WF8B_BPDLCD27_SHIFT                  3
-#define LCD_WF8B_BPDLCD53_MASK                   0x8u
-#define LCD_WF8B_BPDLCD53_SHIFT                  3
-#define LCD_WF8B_BPDLCD51_MASK                   0x8u
-#define LCD_WF8B_BPDLCD51_SHIFT                  3
-#define LCD_WF8B_BPDLCD54_MASK                   0x8u
-#define LCD_WF8B_BPDLCD54_SHIFT                  3
-#define LCD_WF8B_BPDLCD13_MASK                   0x8u
-#define LCD_WF8B_BPDLCD13_SHIFT                  3
-#define LCD_WF8B_BPDLCD16_MASK                   0x8u
-#define LCD_WF8B_BPDLCD16_SHIFT                  3
-#define LCD_WF8B_BPDLCD32_MASK                   0x8u
-#define LCD_WF8B_BPDLCD32_SHIFT                  3
-#define LCD_WF8B_BPDLCD14_MASK                   0x8u
-#define LCD_WF8B_BPDLCD14_SHIFT                  3
-#define LCD_WF8B_BPDLCD28_MASK                   0x8u
-#define LCD_WF8B_BPDLCD28_SHIFT                  3
-#define LCD_WF8B_BPDLCD43_MASK                   0x8u
-#define LCD_WF8B_BPDLCD43_SHIFT                  3
-#define LCD_WF8B_BPDLCD4_MASK                    0x8u
-#define LCD_WF8B_BPDLCD4_SHIFT                   3
-#define LCD_WF8B_BPDLCD45_MASK                   0x8u
-#define LCD_WF8B_BPDLCD45_SHIFT                  3
-#define LCD_WF8B_BPDLCD8_MASK                    0x8u
-#define LCD_WF8B_BPDLCD8_SHIFT                   3
-#define LCD_WF8B_BPDLCD62_MASK                   0x8u
-#define LCD_WF8B_BPDLCD62_SHIFT                  3
-#define LCD_WF8B_BPDLCD33_MASK                   0x8u
-#define LCD_WF8B_BPDLCD33_SHIFT                  3
-#define LCD_WF8B_BPDLCD34_MASK                   0x8u
-#define LCD_WF8B_BPDLCD34_SHIFT                  3
-#define LCD_WF8B_BPDLCD29_MASK                   0x8u
-#define LCD_WF8B_BPDLCD29_SHIFT                  3
-#define LCD_WF8B_BPDLCD58_MASK                   0x8u
-#define LCD_WF8B_BPDLCD58_SHIFT                  3
-#define LCD_WF8B_BPDLCD57_MASK                   0x8u
-#define LCD_WF8B_BPDLCD57_SHIFT                  3
-#define LCD_WF8B_BPDLCD42_MASK                   0x8u
-#define LCD_WF8B_BPDLCD42_SHIFT                  3
-#define LCD_WF8B_BPDLCD35_MASK                   0x8u
-#define LCD_WF8B_BPDLCD35_SHIFT                  3
-#define LCD_WF8B_BPDLCD52_MASK                   0x8u
-#define LCD_WF8B_BPDLCD52_SHIFT                  3
-#define LCD_WF8B_BPDLCD7_MASK                    0x8u
-#define LCD_WF8B_BPDLCD7_SHIFT                   3
-#define LCD_WF8B_BPDLCD36_MASK                   0x8u
-#define LCD_WF8B_BPDLCD36_SHIFT                  3
-#define LCD_WF8B_BPDLCD30_MASK                   0x8u
-#define LCD_WF8B_BPDLCD30_SHIFT                  3
-#define LCD_WF8B_BPDLCD41_MASK                   0x8u
-#define LCD_WF8B_BPDLCD41_SHIFT                  3
-#define LCD_WF8B_BPDLCD37_MASK                   0x8u
-#define LCD_WF8B_BPDLCD37_SHIFT                  3
-#define LCD_WF8B_BPDLCD44_MASK                   0x8u
-#define LCD_WF8B_BPDLCD44_SHIFT                  3
-#define LCD_WF8B_BPDLCD63_MASK                   0x8u
-#define LCD_WF8B_BPDLCD63_SHIFT                  3
-#define LCD_WF8B_BPDLCD38_MASK                   0x8u
-#define LCD_WF8B_BPDLCD38_SHIFT                  3
-#define LCD_WF8B_BPDLCD56_MASK                   0x8u
-#define LCD_WF8B_BPDLCD56_SHIFT                  3
-#define LCD_WF8B_BPDLCD40_MASK                   0x8u
-#define LCD_WF8B_BPDLCD40_SHIFT                  3
-#define LCD_WF8B_BPDLCD31_MASK                   0x8u
-#define LCD_WF8B_BPDLCD31_SHIFT                  3
-#define LCD_WF8B_BPDLCD12_MASK                   0x8u
-#define LCD_WF8B_BPDLCD12_SHIFT                  3
-#define LCD_WF8B_BPDLCD39_MASK                   0x8u
-#define LCD_WF8B_BPDLCD39_SHIFT                  3
-#define LCD_WF8B_BPDLCD3_MASK                    0x8u
-#define LCD_WF8B_BPDLCD3_SHIFT                   3
-#define LCD_WF8B_BPDLCD11_MASK                   0x8u
-#define LCD_WF8B_BPDLCD11_SHIFT                  3
-#define LCD_WF8B_BPELCD12_MASK                   0x10u
-#define LCD_WF8B_BPELCD12_SHIFT                  4
-#define LCD_WF8B_BPELCD39_MASK                   0x10u
-#define LCD_WF8B_BPELCD39_SHIFT                  4
-#define LCD_WF8B_BPELCD3_MASK                    0x10u
-#define LCD_WF8B_BPELCD3_SHIFT                   4
-#define LCD_WF8B_BPELCD38_MASK                   0x10u
-#define LCD_WF8B_BPELCD38_SHIFT                  4
-#define LCD_WF8B_BPELCD40_MASK                   0x10u
-#define LCD_WF8B_BPELCD40_SHIFT                  4
-#define LCD_WF8B_BPELCD37_MASK                   0x10u
-#define LCD_WF8B_BPELCD37_SHIFT                  4
-#define LCD_WF8B_BPELCD41_MASK                   0x10u
-#define LCD_WF8B_BPELCD41_SHIFT                  4
-#define LCD_WF8B_BPELCD36_MASK                   0x10u
-#define LCD_WF8B_BPELCD36_SHIFT                  4
-#define LCD_WF8B_BPELCD8_MASK                    0x10u
-#define LCD_WF8B_BPELCD8_SHIFT                   4
-#define LCD_WF8B_BPELCD35_MASK                   0x10u
-#define LCD_WF8B_BPELCD35_SHIFT                  4
-#define LCD_WF8B_BPELCD42_MASK                   0x10u
-#define LCD_WF8B_BPELCD42_SHIFT                  4
-#define LCD_WF8B_BPELCD34_MASK                   0x10u
-#define LCD_WF8B_BPELCD34_SHIFT                  4
-#define LCD_WF8B_BPELCD33_MASK                   0x10u
-#define LCD_WF8B_BPELCD33_SHIFT                  4
-#define LCD_WF8B_BPELCD11_MASK                   0x10u
-#define LCD_WF8B_BPELCD11_SHIFT                  4
-#define LCD_WF8B_BPELCD43_MASK                   0x10u
-#define LCD_WF8B_BPELCD43_SHIFT                  4
-#define LCD_WF8B_BPELCD32_MASK                   0x10u
-#define LCD_WF8B_BPELCD32_SHIFT                  4
-#define LCD_WF8B_BPELCD31_MASK                   0x10u
-#define LCD_WF8B_BPELCD31_SHIFT                  4
-#define LCD_WF8B_BPELCD44_MASK                   0x10u
-#define LCD_WF8B_BPELCD44_SHIFT                  4
-#define LCD_WF8B_BPELCD30_MASK                   0x10u
-#define LCD_WF8B_BPELCD30_SHIFT                  4
-#define LCD_WF8B_BPELCD29_MASK                   0x10u
-#define LCD_WF8B_BPELCD29_SHIFT                  4
-#define LCD_WF8B_BPELCD7_MASK                    0x10u
-#define LCD_WF8B_BPELCD7_SHIFT                   4
-#define LCD_WF8B_BPELCD45_MASK                   0x10u
-#define LCD_WF8B_BPELCD45_SHIFT                  4
-#define LCD_WF8B_BPELCD28_MASK                   0x10u
-#define LCD_WF8B_BPELCD28_SHIFT                  4
-#define LCD_WF8B_BPELCD2_MASK                    0x10u
-#define LCD_WF8B_BPELCD2_SHIFT                   4
-#define LCD_WF8B_BPELCD27_MASK                   0x10u
-#define LCD_WF8B_BPELCD27_SHIFT                  4
-#define LCD_WF8B_BPELCD46_MASK                   0x10u
-#define LCD_WF8B_BPELCD46_SHIFT                  4
-#define LCD_WF8B_BPELCD26_MASK                   0x10u
-#define LCD_WF8B_BPELCD26_SHIFT                  4
-#define LCD_WF8B_BPELCD10_MASK                   0x10u
-#define LCD_WF8B_BPELCD10_SHIFT                  4
-#define LCD_WF8B_BPELCD13_MASK                   0x10u
-#define LCD_WF8B_BPELCD13_SHIFT                  4
-#define LCD_WF8B_BPELCD25_MASK                   0x10u
-#define LCD_WF8B_BPELCD25_SHIFT                  4
-#define LCD_WF8B_BPELCD5_MASK                    0x10u
-#define LCD_WF8B_BPELCD5_SHIFT                   4
-#define LCD_WF8B_BPELCD24_MASK                   0x10u
-#define LCD_WF8B_BPELCD24_SHIFT                  4
-#define LCD_WF8B_BPELCD47_MASK                   0x10u
-#define LCD_WF8B_BPELCD47_SHIFT                  4
-#define LCD_WF8B_BPELCD23_MASK                   0x10u
-#define LCD_WF8B_BPELCD23_SHIFT                  4
-#define LCD_WF8B_BPELCD22_MASK                   0x10u
-#define LCD_WF8B_BPELCD22_SHIFT                  4
-#define LCD_WF8B_BPELCD48_MASK                   0x10u
-#define LCD_WF8B_BPELCD48_SHIFT                  4
-#define LCD_WF8B_BPELCD21_MASK                   0x10u
-#define LCD_WF8B_BPELCD21_SHIFT                  4
-#define LCD_WF8B_BPELCD49_MASK                   0x10u
-#define LCD_WF8B_BPELCD49_SHIFT                  4
-#define LCD_WF8B_BPELCD20_MASK                   0x10u
-#define LCD_WF8B_BPELCD20_SHIFT                  4
-#define LCD_WF8B_BPELCD19_MASK                   0x10u
-#define LCD_WF8B_BPELCD19_SHIFT                  4
-#define LCD_WF8B_BPELCD9_MASK                    0x10u
-#define LCD_WF8B_BPELCD9_SHIFT                   4
-#define LCD_WF8B_BPELCD50_MASK                   0x10u
-#define LCD_WF8B_BPELCD50_SHIFT                  4
-#define LCD_WF8B_BPELCD18_MASK                   0x10u
-#define LCD_WF8B_BPELCD18_SHIFT                  4
-#define LCD_WF8B_BPELCD6_MASK                    0x10u
-#define LCD_WF8B_BPELCD6_SHIFT                   4
-#define LCD_WF8B_BPELCD17_MASK                   0x10u
-#define LCD_WF8B_BPELCD17_SHIFT                  4
-#define LCD_WF8B_BPELCD51_MASK                   0x10u
-#define LCD_WF8B_BPELCD51_SHIFT                  4
-#define LCD_WF8B_BPELCD16_MASK                   0x10u
-#define LCD_WF8B_BPELCD16_SHIFT                  4
-#define LCD_WF8B_BPELCD56_MASK                   0x10u
-#define LCD_WF8B_BPELCD56_SHIFT                  4
-#define LCD_WF8B_BPELCD57_MASK                   0x10u
-#define LCD_WF8B_BPELCD57_SHIFT                  4
-#define LCD_WF8B_BPELCD52_MASK                   0x10u
-#define LCD_WF8B_BPELCD52_SHIFT                  4
-#define LCD_WF8B_BPELCD1_MASK                    0x10u
-#define LCD_WF8B_BPELCD1_SHIFT                   4
-#define LCD_WF8B_BPELCD58_MASK                   0x10u
-#define LCD_WF8B_BPELCD58_SHIFT                  4
-#define LCD_WF8B_BPELCD59_MASK                   0x10u
-#define LCD_WF8B_BPELCD59_SHIFT                  4
-#define LCD_WF8B_BPELCD53_MASK                   0x10u
-#define LCD_WF8B_BPELCD53_SHIFT                  4
-#define LCD_WF8B_BPELCD14_MASK                   0x10u
-#define LCD_WF8B_BPELCD14_SHIFT                  4
-#define LCD_WF8B_BPELCD0_MASK                    0x10u
-#define LCD_WF8B_BPELCD0_SHIFT                   4
-#define LCD_WF8B_BPELCD60_MASK                   0x10u
-#define LCD_WF8B_BPELCD60_SHIFT                  4
-#define LCD_WF8B_BPELCD15_MASK                   0x10u
-#define LCD_WF8B_BPELCD15_SHIFT                  4
-#define LCD_WF8B_BPELCD61_MASK                   0x10u
-#define LCD_WF8B_BPELCD61_SHIFT                  4
-#define LCD_WF8B_BPELCD54_MASK                   0x10u
-#define LCD_WF8B_BPELCD54_SHIFT                  4
-#define LCD_WF8B_BPELCD62_MASK                   0x10u
-#define LCD_WF8B_BPELCD62_SHIFT                  4
-#define LCD_WF8B_BPELCD63_MASK                   0x10u
-#define LCD_WF8B_BPELCD63_SHIFT                  4
-#define LCD_WF8B_BPELCD55_MASK                   0x10u
-#define LCD_WF8B_BPELCD55_SHIFT                  4
-#define LCD_WF8B_BPELCD4_MASK                    0x10u
-#define LCD_WF8B_BPELCD4_SHIFT                   4
-#define LCD_WF8B_BPFLCD13_MASK                   0x20u
-#define LCD_WF8B_BPFLCD13_SHIFT                  5
-#define LCD_WF8B_BPFLCD39_MASK                   0x20u
-#define LCD_WF8B_BPFLCD39_SHIFT                  5
-#define LCD_WF8B_BPFLCD55_MASK                   0x20u
-#define LCD_WF8B_BPFLCD55_SHIFT                  5
-#define LCD_WF8B_BPFLCD47_MASK                   0x20u
-#define LCD_WF8B_BPFLCD47_SHIFT                  5
-#define LCD_WF8B_BPFLCD63_MASK                   0x20u
-#define LCD_WF8B_BPFLCD63_SHIFT                  5
-#define LCD_WF8B_BPFLCD43_MASK                   0x20u
-#define LCD_WF8B_BPFLCD43_SHIFT                  5
-#define LCD_WF8B_BPFLCD5_MASK                    0x20u
-#define LCD_WF8B_BPFLCD5_SHIFT                   5
-#define LCD_WF8B_BPFLCD62_MASK                   0x20u
-#define LCD_WF8B_BPFLCD62_SHIFT                  5
-#define LCD_WF8B_BPFLCD14_MASK                   0x20u
-#define LCD_WF8B_BPFLCD14_SHIFT                  5
-#define LCD_WF8B_BPFLCD24_MASK                   0x20u
-#define LCD_WF8B_BPFLCD24_SHIFT                  5
-#define LCD_WF8B_BPFLCD54_MASK                   0x20u
-#define LCD_WF8B_BPFLCD54_SHIFT                  5
-#define LCD_WF8B_BPFLCD15_MASK                   0x20u
-#define LCD_WF8B_BPFLCD15_SHIFT                  5
-#define LCD_WF8B_BPFLCD32_MASK                   0x20u
-#define LCD_WF8B_BPFLCD32_SHIFT                  5
-#define LCD_WF8B_BPFLCD61_MASK                   0x20u
-#define LCD_WF8B_BPFLCD61_SHIFT                  5
-#define LCD_WF8B_BPFLCD25_MASK                   0x20u
-#define LCD_WF8B_BPFLCD25_SHIFT                  5
-#define LCD_WF8B_BPFLCD60_MASK                   0x20u
-#define LCD_WF8B_BPFLCD60_SHIFT                  5
-#define LCD_WF8B_BPFLCD41_MASK                   0x20u
-#define LCD_WF8B_BPFLCD41_SHIFT                  5
-#define LCD_WF8B_BPFLCD33_MASK                   0x20u
-#define LCD_WF8B_BPFLCD33_SHIFT                  5
-#define LCD_WF8B_BPFLCD53_MASK                   0x20u
-#define LCD_WF8B_BPFLCD53_SHIFT                  5
-#define LCD_WF8B_BPFLCD59_MASK                   0x20u
-#define LCD_WF8B_BPFLCD59_SHIFT                  5
-#define LCD_WF8B_BPFLCD0_MASK                    0x20u
-#define LCD_WF8B_BPFLCD0_SHIFT                   5
-#define LCD_WF8B_BPFLCD46_MASK                   0x20u
-#define LCD_WF8B_BPFLCD46_SHIFT                  5
-#define LCD_WF8B_BPFLCD58_MASK                   0x20u
-#define LCD_WF8B_BPFLCD58_SHIFT                  5
-#define LCD_WF8B_BPFLCD26_MASK                   0x20u
-#define LCD_WF8B_BPFLCD26_SHIFT                  5
-#define LCD_WF8B_BPFLCD36_MASK                   0x20u
-#define LCD_WF8B_BPFLCD36_SHIFT                  5
-#define LCD_WF8B_BPFLCD10_MASK                   0x20u
-#define LCD_WF8B_BPFLCD10_SHIFT                  5
-#define LCD_WF8B_BPFLCD52_MASK                   0x20u
-#define LCD_WF8B_BPFLCD52_SHIFT                  5
-#define LCD_WF8B_BPFLCD57_MASK                   0x20u
-#define LCD_WF8B_BPFLCD57_SHIFT                  5
-#define LCD_WF8B_BPFLCD27_MASK                   0x20u
-#define LCD_WF8B_BPFLCD27_SHIFT                  5
-#define LCD_WF8B_BPFLCD11_MASK                   0x20u
-#define LCD_WF8B_BPFLCD11_SHIFT                  5
-#define LCD_WF8B_BPFLCD56_MASK                   0x20u
-#define LCD_WF8B_BPFLCD56_SHIFT                  5
-#define LCD_WF8B_BPFLCD1_MASK                    0x20u
-#define LCD_WF8B_BPFLCD1_SHIFT                   5
-#define LCD_WF8B_BPFLCD8_MASK                    0x20u
-#define LCD_WF8B_BPFLCD8_SHIFT                   5
-#define LCD_WF8B_BPFLCD40_MASK                   0x20u
-#define LCD_WF8B_BPFLCD40_SHIFT                  5
-#define LCD_WF8B_BPFLCD51_MASK                   0x20u
-#define LCD_WF8B_BPFLCD51_SHIFT                  5
-#define LCD_WF8B_BPFLCD16_MASK                   0x20u
-#define LCD_WF8B_BPFLCD16_SHIFT                  5
-#define LCD_WF8B_BPFLCD45_MASK                   0x20u
-#define LCD_WF8B_BPFLCD45_SHIFT                  5
-#define LCD_WF8B_BPFLCD6_MASK                    0x20u
-#define LCD_WF8B_BPFLCD6_SHIFT                   5
-#define LCD_WF8B_BPFLCD17_MASK                   0x20u
-#define LCD_WF8B_BPFLCD17_SHIFT                  5
-#define LCD_WF8B_BPFLCD28_MASK                   0x20u
-#define LCD_WF8B_BPFLCD28_SHIFT                  5
-#define LCD_WF8B_BPFLCD42_MASK                   0x20u
-#define LCD_WF8B_BPFLCD42_SHIFT                  5
-#define LCD_WF8B_BPFLCD29_MASK                   0x20u
-#define LCD_WF8B_BPFLCD29_SHIFT                  5
-#define LCD_WF8B_BPFLCD50_MASK                   0x20u
-#define LCD_WF8B_BPFLCD50_SHIFT                  5
-#define LCD_WF8B_BPFLCD18_MASK                   0x20u
-#define LCD_WF8B_BPFLCD18_SHIFT                  5
-#define LCD_WF8B_BPFLCD34_MASK                   0x20u
-#define LCD_WF8B_BPFLCD34_SHIFT                  5
-#define LCD_WF8B_BPFLCD19_MASK                   0x20u
-#define LCD_WF8B_BPFLCD19_SHIFT                  5
-#define LCD_WF8B_BPFLCD2_MASK                    0x20u
-#define LCD_WF8B_BPFLCD2_SHIFT                   5
-#define LCD_WF8B_BPFLCD9_MASK                    0x20u
-#define LCD_WF8B_BPFLCD9_SHIFT                   5
-#define LCD_WF8B_BPFLCD3_MASK                    0x20u
-#define LCD_WF8B_BPFLCD3_SHIFT                   5
-#define LCD_WF8B_BPFLCD37_MASK                   0x20u
-#define LCD_WF8B_BPFLCD37_SHIFT                  5
-#define LCD_WF8B_BPFLCD49_MASK                   0x20u
-#define LCD_WF8B_BPFLCD49_SHIFT                  5
-#define LCD_WF8B_BPFLCD20_MASK                   0x20u
-#define LCD_WF8B_BPFLCD20_SHIFT                  5
-#define LCD_WF8B_BPFLCD44_MASK                   0x20u
-#define LCD_WF8B_BPFLCD44_SHIFT                  5
-#define LCD_WF8B_BPFLCD30_MASK                   0x20u
-#define LCD_WF8B_BPFLCD30_SHIFT                  5
-#define LCD_WF8B_BPFLCD21_MASK                   0x20u
-#define LCD_WF8B_BPFLCD21_SHIFT                  5
-#define LCD_WF8B_BPFLCD35_MASK                   0x20u
-#define LCD_WF8B_BPFLCD35_SHIFT                  5
-#define LCD_WF8B_BPFLCD4_MASK                    0x20u
-#define LCD_WF8B_BPFLCD4_SHIFT                   5
-#define LCD_WF8B_BPFLCD31_MASK                   0x20u
-#define LCD_WF8B_BPFLCD31_SHIFT                  5
-#define LCD_WF8B_BPFLCD48_MASK                   0x20u
-#define LCD_WF8B_BPFLCD48_SHIFT                  5
-#define LCD_WF8B_BPFLCD7_MASK                    0x20u
-#define LCD_WF8B_BPFLCD7_SHIFT                   5
-#define LCD_WF8B_BPFLCD22_MASK                   0x20u
-#define LCD_WF8B_BPFLCD22_SHIFT                  5
-#define LCD_WF8B_BPFLCD38_MASK                   0x20u
-#define LCD_WF8B_BPFLCD38_SHIFT                  5
-#define LCD_WF8B_BPFLCD12_MASK                   0x20u
-#define LCD_WF8B_BPFLCD12_SHIFT                  5
-#define LCD_WF8B_BPFLCD23_MASK                   0x20u
-#define LCD_WF8B_BPFLCD23_SHIFT                  5
-#define LCD_WF8B_BPGLCD14_MASK                   0x40u
-#define LCD_WF8B_BPGLCD14_SHIFT                  6
-#define LCD_WF8B_BPGLCD55_MASK                   0x40u
-#define LCD_WF8B_BPGLCD55_SHIFT                  6
-#define LCD_WF8B_BPGLCD63_MASK                   0x40u
-#define LCD_WF8B_BPGLCD63_SHIFT                  6
-#define LCD_WF8B_BPGLCD15_MASK                   0x40u
-#define LCD_WF8B_BPGLCD15_SHIFT                  6
-#define LCD_WF8B_BPGLCD62_MASK                   0x40u
-#define LCD_WF8B_BPGLCD62_SHIFT                  6
-#define LCD_WF8B_BPGLCD54_MASK                   0x40u
-#define LCD_WF8B_BPGLCD54_SHIFT                  6
-#define LCD_WF8B_BPGLCD61_MASK                   0x40u
-#define LCD_WF8B_BPGLCD61_SHIFT                  6
-#define LCD_WF8B_BPGLCD60_MASK                   0x40u
-#define LCD_WF8B_BPGLCD60_SHIFT                  6
-#define LCD_WF8B_BPGLCD59_MASK                   0x40u
-#define LCD_WF8B_BPGLCD59_SHIFT                  6
-#define LCD_WF8B_BPGLCD53_MASK                   0x40u
-#define LCD_WF8B_BPGLCD53_SHIFT                  6
-#define LCD_WF8B_BPGLCD58_MASK                   0x40u
-#define LCD_WF8B_BPGLCD58_SHIFT                  6
-#define LCD_WF8B_BPGLCD0_MASK                    0x40u
-#define LCD_WF8B_BPGLCD0_SHIFT                   6
-#define LCD_WF8B_BPGLCD57_MASK                   0x40u
-#define LCD_WF8B_BPGLCD57_SHIFT                  6
-#define LCD_WF8B_BPGLCD52_MASK                   0x40u
-#define LCD_WF8B_BPGLCD52_SHIFT                  6
-#define LCD_WF8B_BPGLCD7_MASK                    0x40u
-#define LCD_WF8B_BPGLCD7_SHIFT                   6
-#define LCD_WF8B_BPGLCD56_MASK                   0x40u
-#define LCD_WF8B_BPGLCD56_SHIFT                  6
-#define LCD_WF8B_BPGLCD6_MASK                    0x40u
-#define LCD_WF8B_BPGLCD6_SHIFT                   6
-#define LCD_WF8B_BPGLCD51_MASK                   0x40u
-#define LCD_WF8B_BPGLCD51_SHIFT                  6
-#define LCD_WF8B_BPGLCD16_MASK                   0x40u
-#define LCD_WF8B_BPGLCD16_SHIFT                  6
-#define LCD_WF8B_BPGLCD1_MASK                    0x40u
-#define LCD_WF8B_BPGLCD1_SHIFT                   6
-#define LCD_WF8B_BPGLCD17_MASK                   0x40u
-#define LCD_WF8B_BPGLCD17_SHIFT                  6
-#define LCD_WF8B_BPGLCD50_MASK                   0x40u
-#define LCD_WF8B_BPGLCD50_SHIFT                  6
-#define LCD_WF8B_BPGLCD18_MASK                   0x40u
-#define LCD_WF8B_BPGLCD18_SHIFT                  6
-#define LCD_WF8B_BPGLCD19_MASK                   0x40u
-#define LCD_WF8B_BPGLCD19_SHIFT                  6
-#define LCD_WF8B_BPGLCD8_MASK                    0x40u
-#define LCD_WF8B_BPGLCD8_SHIFT                   6
-#define LCD_WF8B_BPGLCD49_MASK                   0x40u
-#define LCD_WF8B_BPGLCD49_SHIFT                  6
-#define LCD_WF8B_BPGLCD20_MASK                   0x40u
-#define LCD_WF8B_BPGLCD20_SHIFT                  6
-#define LCD_WF8B_BPGLCD9_MASK                    0x40u
-#define LCD_WF8B_BPGLCD9_SHIFT                   6
-#define LCD_WF8B_BPGLCD21_MASK                   0x40u
-#define LCD_WF8B_BPGLCD21_SHIFT                  6
-#define LCD_WF8B_BPGLCD13_MASK                   0x40u
-#define LCD_WF8B_BPGLCD13_SHIFT                  6
-#define LCD_WF8B_BPGLCD48_MASK                   0x40u
-#define LCD_WF8B_BPGLCD48_SHIFT                  6
-#define LCD_WF8B_BPGLCD22_MASK                   0x40u
-#define LCD_WF8B_BPGLCD22_SHIFT                  6
-#define LCD_WF8B_BPGLCD5_MASK                    0x40u
-#define LCD_WF8B_BPGLCD5_SHIFT                   6
-#define LCD_WF8B_BPGLCD47_MASK                   0x40u
-#define LCD_WF8B_BPGLCD47_SHIFT                  6
-#define LCD_WF8B_BPGLCD23_MASK                   0x40u
-#define LCD_WF8B_BPGLCD23_SHIFT                  6
-#define LCD_WF8B_BPGLCD24_MASK                   0x40u
-#define LCD_WF8B_BPGLCD24_SHIFT                  6
-#define LCD_WF8B_BPGLCD25_MASK                   0x40u
-#define LCD_WF8B_BPGLCD25_SHIFT                  6
-#define LCD_WF8B_BPGLCD46_MASK                   0x40u
-#define LCD_WF8B_BPGLCD46_SHIFT                  6
-#define LCD_WF8B_BPGLCD26_MASK                   0x40u
-#define LCD_WF8B_BPGLCD26_SHIFT                  6
-#define LCD_WF8B_BPGLCD27_MASK                   0x40u
-#define LCD_WF8B_BPGLCD27_SHIFT                  6
-#define LCD_WF8B_BPGLCD10_MASK                   0x40u
-#define LCD_WF8B_BPGLCD10_SHIFT                  6
-#define LCD_WF8B_BPGLCD45_MASK                   0x40u
-#define LCD_WF8B_BPGLCD45_SHIFT                  6
-#define LCD_WF8B_BPGLCD28_MASK                   0x40u
-#define LCD_WF8B_BPGLCD28_SHIFT                  6
-#define LCD_WF8B_BPGLCD29_MASK                   0x40u
-#define LCD_WF8B_BPGLCD29_SHIFT                  6
-#define LCD_WF8B_BPGLCD4_MASK                    0x40u
-#define LCD_WF8B_BPGLCD4_SHIFT                   6
-#define LCD_WF8B_BPGLCD44_MASK                   0x40u
-#define LCD_WF8B_BPGLCD44_SHIFT                  6
-#define LCD_WF8B_BPGLCD30_MASK                   0x40u
-#define LCD_WF8B_BPGLCD30_SHIFT                  6
-#define LCD_WF8B_BPGLCD2_MASK                    0x40u
-#define LCD_WF8B_BPGLCD2_SHIFT                   6
-#define LCD_WF8B_BPGLCD31_MASK                   0x40u
-#define LCD_WF8B_BPGLCD31_SHIFT                  6
-#define LCD_WF8B_BPGLCD43_MASK                   0x40u
-#define LCD_WF8B_BPGLCD43_SHIFT                  6
-#define LCD_WF8B_BPGLCD32_MASK                   0x40u
-#define LCD_WF8B_BPGLCD32_SHIFT                  6
-#define LCD_WF8B_BPGLCD33_MASK                   0x40u
-#define LCD_WF8B_BPGLCD33_SHIFT                  6
-#define LCD_WF8B_BPGLCD42_MASK                   0x40u
-#define LCD_WF8B_BPGLCD42_SHIFT                  6
-#define LCD_WF8B_BPGLCD34_MASK                   0x40u
-#define LCD_WF8B_BPGLCD34_SHIFT                  6
-#define LCD_WF8B_BPGLCD11_MASK                   0x40u
-#define LCD_WF8B_BPGLCD11_SHIFT                  6
-#define LCD_WF8B_BPGLCD35_MASK                   0x40u
-#define LCD_WF8B_BPGLCD35_SHIFT                  6
-#define LCD_WF8B_BPGLCD12_MASK                   0x40u
-#define LCD_WF8B_BPGLCD12_SHIFT                  6
-#define LCD_WF8B_BPGLCD41_MASK                   0x40u
-#define LCD_WF8B_BPGLCD41_SHIFT                  6
-#define LCD_WF8B_BPGLCD36_MASK                   0x40u
-#define LCD_WF8B_BPGLCD36_SHIFT                  6
-#define LCD_WF8B_BPGLCD3_MASK                    0x40u
-#define LCD_WF8B_BPGLCD3_SHIFT                   6
-#define LCD_WF8B_BPGLCD37_MASK                   0x40u
-#define LCD_WF8B_BPGLCD37_SHIFT                  6
-#define LCD_WF8B_BPGLCD40_MASK                   0x40u
-#define LCD_WF8B_BPGLCD40_SHIFT                  6
-#define LCD_WF8B_BPGLCD38_MASK                   0x40u
-#define LCD_WF8B_BPGLCD38_SHIFT                  6
-#define LCD_WF8B_BPGLCD39_MASK                   0x40u
-#define LCD_WF8B_BPGLCD39_SHIFT                  6
-#define LCD_WF8B_BPHLCD63_MASK                   0x80u
-#define LCD_WF8B_BPHLCD63_SHIFT                  7
-#define LCD_WF8B_BPHLCD62_MASK                   0x80u
-#define LCD_WF8B_BPHLCD62_SHIFT                  7
-#define LCD_WF8B_BPHLCD61_MASK                   0x80u
-#define LCD_WF8B_BPHLCD61_SHIFT                  7
-#define LCD_WF8B_BPHLCD60_MASK                   0x80u
-#define LCD_WF8B_BPHLCD60_SHIFT                  7
-#define LCD_WF8B_BPHLCD59_MASK                   0x80u
-#define LCD_WF8B_BPHLCD59_SHIFT                  7
-#define LCD_WF8B_BPHLCD58_MASK                   0x80u
-#define LCD_WF8B_BPHLCD58_SHIFT                  7
-#define LCD_WF8B_BPHLCD57_MASK                   0x80u
-#define LCD_WF8B_BPHLCD57_SHIFT                  7
-#define LCD_WF8B_BPHLCD0_MASK                    0x80u
-#define LCD_WF8B_BPHLCD0_SHIFT                   7
-#define LCD_WF8B_BPHLCD56_MASK                   0x80u
-#define LCD_WF8B_BPHLCD56_SHIFT                  7
-#define LCD_WF8B_BPHLCD55_MASK                   0x80u
-#define LCD_WF8B_BPHLCD55_SHIFT                  7
-#define LCD_WF8B_BPHLCD54_MASK                   0x80u
-#define LCD_WF8B_BPHLCD54_SHIFT                  7
-#define LCD_WF8B_BPHLCD53_MASK                   0x80u
-#define LCD_WF8B_BPHLCD53_SHIFT                  7
-#define LCD_WF8B_BPHLCD52_MASK                   0x80u
-#define LCD_WF8B_BPHLCD52_SHIFT                  7
-#define LCD_WF8B_BPHLCD51_MASK                   0x80u
-#define LCD_WF8B_BPHLCD51_SHIFT                  7
-#define LCD_WF8B_BPHLCD50_MASK                   0x80u
-#define LCD_WF8B_BPHLCD50_SHIFT                  7
-#define LCD_WF8B_BPHLCD1_MASK                    0x80u
-#define LCD_WF8B_BPHLCD1_SHIFT                   7
-#define LCD_WF8B_BPHLCD49_MASK                   0x80u
-#define LCD_WF8B_BPHLCD49_SHIFT                  7
-#define LCD_WF8B_BPHLCD48_MASK                   0x80u
-#define LCD_WF8B_BPHLCD48_SHIFT                  7
-#define LCD_WF8B_BPHLCD47_MASK                   0x80u
-#define LCD_WF8B_BPHLCD47_SHIFT                  7
-#define LCD_WF8B_BPHLCD46_MASK                   0x80u
-#define LCD_WF8B_BPHLCD46_SHIFT                  7
-#define LCD_WF8B_BPHLCD45_MASK                   0x80u
-#define LCD_WF8B_BPHLCD45_SHIFT                  7
-#define LCD_WF8B_BPHLCD44_MASK                   0x80u
-#define LCD_WF8B_BPHLCD44_SHIFT                  7
-#define LCD_WF8B_BPHLCD43_MASK                   0x80u
-#define LCD_WF8B_BPHLCD43_SHIFT                  7
-#define LCD_WF8B_BPHLCD2_MASK                    0x80u
-#define LCD_WF8B_BPHLCD2_SHIFT                   7
-#define LCD_WF8B_BPHLCD42_MASK                   0x80u
-#define LCD_WF8B_BPHLCD42_SHIFT                  7
-#define LCD_WF8B_BPHLCD41_MASK                   0x80u
-#define LCD_WF8B_BPHLCD41_SHIFT                  7
-#define LCD_WF8B_BPHLCD40_MASK                   0x80u
-#define LCD_WF8B_BPHLCD40_SHIFT                  7
-#define LCD_WF8B_BPHLCD39_MASK                   0x80u
-#define LCD_WF8B_BPHLCD39_SHIFT                  7
-#define LCD_WF8B_BPHLCD38_MASK                   0x80u
-#define LCD_WF8B_BPHLCD38_SHIFT                  7
-#define LCD_WF8B_BPHLCD37_MASK                   0x80u
-#define LCD_WF8B_BPHLCD37_SHIFT                  7
-#define LCD_WF8B_BPHLCD36_MASK                   0x80u
-#define LCD_WF8B_BPHLCD36_SHIFT                  7
-#define LCD_WF8B_BPHLCD3_MASK                    0x80u
-#define LCD_WF8B_BPHLCD3_SHIFT                   7
-#define LCD_WF8B_BPHLCD35_MASK                   0x80u
-#define LCD_WF8B_BPHLCD35_SHIFT                  7
-#define LCD_WF8B_BPHLCD34_MASK                   0x80u
-#define LCD_WF8B_BPHLCD34_SHIFT                  7
-#define LCD_WF8B_BPHLCD33_MASK                   0x80u
-#define LCD_WF8B_BPHLCD33_SHIFT                  7
-#define LCD_WF8B_BPHLCD32_MASK                   0x80u
-#define LCD_WF8B_BPHLCD32_SHIFT                  7
-#define LCD_WF8B_BPHLCD31_MASK                   0x80u
-#define LCD_WF8B_BPHLCD31_SHIFT                  7
-#define LCD_WF8B_BPHLCD30_MASK                   0x80u
-#define LCD_WF8B_BPHLCD30_SHIFT                  7
-#define LCD_WF8B_BPHLCD29_MASK                   0x80u
-#define LCD_WF8B_BPHLCD29_SHIFT                  7
-#define LCD_WF8B_BPHLCD4_MASK                    0x80u
-#define LCD_WF8B_BPHLCD4_SHIFT                   7
-#define LCD_WF8B_BPHLCD28_MASK                   0x80u
-#define LCD_WF8B_BPHLCD28_SHIFT                  7
-#define LCD_WF8B_BPHLCD27_MASK                   0x80u
-#define LCD_WF8B_BPHLCD27_SHIFT                  7
-#define LCD_WF8B_BPHLCD26_MASK                   0x80u
-#define LCD_WF8B_BPHLCD26_SHIFT                  7
-#define LCD_WF8B_BPHLCD25_MASK                   0x80u
-#define LCD_WF8B_BPHLCD25_SHIFT                  7
-#define LCD_WF8B_BPHLCD24_MASK                   0x80u
-#define LCD_WF8B_BPHLCD24_SHIFT                  7
-#define LCD_WF8B_BPHLCD23_MASK                   0x80u
-#define LCD_WF8B_BPHLCD23_SHIFT                  7
-#define LCD_WF8B_BPHLCD22_MASK                   0x80u
-#define LCD_WF8B_BPHLCD22_SHIFT                  7
-#define LCD_WF8B_BPHLCD5_MASK                    0x80u
-#define LCD_WF8B_BPHLCD5_SHIFT                   7
-#define LCD_WF8B_BPHLCD21_MASK                   0x80u
-#define LCD_WF8B_BPHLCD21_SHIFT                  7
-#define LCD_WF8B_BPHLCD20_MASK                   0x80u
-#define LCD_WF8B_BPHLCD20_SHIFT                  7
-#define LCD_WF8B_BPHLCD19_MASK                   0x80u
-#define LCD_WF8B_BPHLCD19_SHIFT                  7
-#define LCD_WF8B_BPHLCD18_MASK                   0x80u
-#define LCD_WF8B_BPHLCD18_SHIFT                  7
-#define LCD_WF8B_BPHLCD17_MASK                   0x80u
-#define LCD_WF8B_BPHLCD17_SHIFT                  7
-#define LCD_WF8B_BPHLCD16_MASK                   0x80u
-#define LCD_WF8B_BPHLCD16_SHIFT                  7
-#define LCD_WF8B_BPHLCD15_MASK                   0x80u
-#define LCD_WF8B_BPHLCD15_SHIFT                  7
-#define LCD_WF8B_BPHLCD6_MASK                    0x80u
-#define LCD_WF8B_BPHLCD6_SHIFT                   7
-#define LCD_WF8B_BPHLCD14_MASK                   0x80u
-#define LCD_WF8B_BPHLCD14_SHIFT                  7
-#define LCD_WF8B_BPHLCD13_MASK                   0x80u
-#define LCD_WF8B_BPHLCD13_SHIFT                  7
-#define LCD_WF8B_BPHLCD12_MASK                   0x80u
-#define LCD_WF8B_BPHLCD12_SHIFT                  7
-#define LCD_WF8B_BPHLCD11_MASK                   0x80u
-#define LCD_WF8B_BPHLCD11_SHIFT                  7
-#define LCD_WF8B_BPHLCD10_MASK                   0x80u
-#define LCD_WF8B_BPHLCD10_SHIFT                  7
-#define LCD_WF8B_BPHLCD9_MASK                    0x80u
-#define LCD_WF8B_BPHLCD9_SHIFT                   7
-#define LCD_WF8B_BPHLCD8_MASK                    0x80u
-#define LCD_WF8B_BPHLCD8_SHIFT                   7
-#define LCD_WF8B_BPHLCD7_MASK                    0x80u
-#define LCD_WF8B_BPHLCD7_SHIFT                   7
-
-/*!
- * @}
- */ /* end of group LCD_Register_Masks */
-
-
-/* LCD - Peripheral instance base addresses */
-/** Peripheral LCD base address */
-#define LCD_BASE                                 (0x40053000u)
-/** Peripheral LCD base pointer */
-#define LCD                                      ((LCD_Type *)LCD_BASE)
-#define LCD_BASE_PTR                             (LCD)
-/** Array initializer of LCD peripheral base addresses */
-#define LCD_BASE_ADDRS                           { LCD_BASE }
-/** Array initializer of LCD peripheral base pointers */
-#define LCD_BASE_PTRS                            { LCD }
-/** Interrupt vectors for the LCD peripheral type */
-#define LCD_LCD_IRQS                             { LCD_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- LCD - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LCD_Register_Accessor_Macros LCD - Register accessor macros
- * @{
- */
-
-
-/* LCD - Register instance definitions */
-/* LCD */
-#define LCD_GCR                                  LCD_GCR_REG(LCD)
-#define LCD_AR                                   LCD_AR_REG(LCD)
-#define LCD_FDCR                                 LCD_FDCR_REG(LCD)
-#define LCD_FDSR                                 LCD_FDSR_REG(LCD)
-#define LCD_PENL                                 LCD_PEN_REG(LCD,0)
-#define LCD_PENH                                 LCD_PEN_REG(LCD,1)
-#define LCD_BPENL                                LCD_BPEN_REG(LCD,0)
-#define LCD_BPENH                                LCD_BPEN_REG(LCD,1)
-#define LCD_WF0                                  LCD_WF8B_REG(LCD,0)
-#define LCD_WF3TO0                               LCD_WF_REG(LCD,0)
-#define LCD_WF1                                  LCD_WF8B_REG(LCD,1)
-#define LCD_WF2                                  LCD_WF8B_REG(LCD,2)
-#define LCD_WF3                                  LCD_WF8B_REG(LCD,3)
-#define LCD_WF4                                  LCD_WF8B_REG(LCD,4)
-#define LCD_WF7TO4                               LCD_WF_REG(LCD,1)
-#define LCD_WF5                                  LCD_WF8B_REG(LCD,5)
-#define LCD_WF6                                  LCD_WF8B_REG(LCD,6)
-#define LCD_WF7                                  LCD_WF8B_REG(LCD,7)
-#define LCD_WF11TO8                              LCD_WF_REG(LCD,2)
-#define LCD_WF8                                  LCD_WF8B_REG(LCD,8)
-#define LCD_WF9                                  LCD_WF8B_REG(LCD,9)
-#define LCD_WF10                                 LCD_WF8B_REG(LCD,10)
-#define LCD_WF11                                 LCD_WF8B_REG(LCD,11)
-#define LCD_WF12                                 LCD_WF8B_REG(LCD,12)
-#define LCD_WF15TO12                             LCD_WF_REG(LCD,3)
-#define LCD_WF13                                 LCD_WF8B_REG(LCD,13)
-#define LCD_WF14                                 LCD_WF8B_REG(LCD,14)
-#define LCD_WF15                                 LCD_WF8B_REG(LCD,15)
-#define LCD_WF16                                 LCD_WF8B_REG(LCD,16)
-#define LCD_WF19TO16                             LCD_WF_REG(LCD,4)
-#define LCD_WF17                                 LCD_WF8B_REG(LCD,17)
-#define LCD_WF18                                 LCD_WF8B_REG(LCD,18)
-#define LCD_WF19                                 LCD_WF8B_REG(LCD,19)
-#define LCD_WF20                                 LCD_WF8B_REG(LCD,20)
-#define LCD_WF23TO20                             LCD_WF_REG(LCD,5)
-#define LCD_WF21                                 LCD_WF8B_REG(LCD,21)
-#define LCD_WF22                                 LCD_WF8B_REG(LCD,22)
-#define LCD_WF23                                 LCD_WF8B_REG(LCD,23)
-#define LCD_WF24                                 LCD_WF8B_REG(LCD,24)
-#define LCD_WF27TO24                             LCD_WF_REG(LCD,6)
-#define LCD_WF25                                 LCD_WF8B_REG(LCD,25)
-#define LCD_WF26                                 LCD_WF8B_REG(LCD,26)
-#define LCD_WF27                                 LCD_WF8B_REG(LCD,27)
-#define LCD_WF28                                 LCD_WF8B_REG(LCD,28)
-#define LCD_WF31TO28                             LCD_WF_REG(LCD,7)
-#define LCD_WF29                                 LCD_WF8B_REG(LCD,29)
-#define LCD_WF30                                 LCD_WF8B_REG(LCD,30)
-#define LCD_WF31                                 LCD_WF8B_REG(LCD,31)
-#define LCD_WF32                                 LCD_WF8B_REG(LCD,32)
-#define LCD_WF35TO32                             LCD_WF_REG(LCD,8)
-#define LCD_WF33                                 LCD_WF8B_REG(LCD,33)
-#define LCD_WF34                                 LCD_WF8B_REG(LCD,34)
-#define LCD_WF35                                 LCD_WF8B_REG(LCD,35)
-#define LCD_WF36                                 LCD_WF8B_REG(LCD,36)
-#define LCD_WF39TO36                             LCD_WF_REG(LCD,9)
-#define LCD_WF37                                 LCD_WF8B_REG(LCD,37)
-#define LCD_WF38                                 LCD_WF8B_REG(LCD,38)
-#define LCD_WF39                                 LCD_WF8B_REG(LCD,39)
-#define LCD_WF40                                 LCD_WF8B_REG(LCD,40)
-#define LCD_WF43TO40                             LCD_WF_REG(LCD,10)
-#define LCD_WF41                                 LCD_WF8B_REG(LCD,41)
-#define LCD_WF42                                 LCD_WF8B_REG(LCD,42)
-#define LCD_WF43                                 LCD_WF8B_REG(LCD,43)
-#define LCD_WF44                                 LCD_WF8B_REG(LCD,44)
-#define LCD_WF47TO44                             LCD_WF_REG(LCD,11)
-#define LCD_WF45                                 LCD_WF8B_REG(LCD,45)
-#define LCD_WF46                                 LCD_WF8B_REG(LCD,46)
-#define LCD_WF47                                 LCD_WF8B_REG(LCD,47)
-#define LCD_WF48                                 LCD_WF8B_REG(LCD,48)
-#define LCD_WF51TO48                             LCD_WF_REG(LCD,12)
-#define LCD_WF49                                 LCD_WF8B_REG(LCD,49)
-#define LCD_WF50                                 LCD_WF8B_REG(LCD,50)
-#define LCD_WF51                                 LCD_WF8B_REG(LCD,51)
-#define LCD_WF52                                 LCD_WF8B_REG(LCD,52)
-#define LCD_WF55TO52                             LCD_WF_REG(LCD,13)
-#define LCD_WF53                                 LCD_WF8B_REG(LCD,53)
-#define LCD_WF54                                 LCD_WF8B_REG(LCD,54)
-#define LCD_WF55                                 LCD_WF8B_REG(LCD,55)
-#define LCD_WF56                                 LCD_WF8B_REG(LCD,56)
-#define LCD_WF59TO56                             LCD_WF_REG(LCD,14)
-#define LCD_WF57                                 LCD_WF8B_REG(LCD,57)
-#define LCD_WF58                                 LCD_WF8B_REG(LCD,58)
-#define LCD_WF59                                 LCD_WF8B_REG(LCD,59)
-#define LCD_WF60                                 LCD_WF8B_REG(LCD,60)
-#define LCD_WF63TO60                             LCD_WF_REG(LCD,15)
-#define LCD_WF61                                 LCD_WF8B_REG(LCD,61)
-#define LCD_WF62                                 LCD_WF8B_REG(LCD,62)
-#define LCD_WF63                                 LCD_WF8B_REG(LCD,63)
-
-/* LCD - Register array accessors */
-#define LCD_PEN(index)                           LCD_PEN_REG(LCD,index)
-#define LCD_BPEN(index)                          LCD_BPEN_REG(LCD,index)
-#define LCD_WF(index2)                           LCD_WF_REG(LCD,index2)
-#define LCD_WF8B(index2)                         LCD_WF8B_REG(LCD,index2)
-
-/*!
- * @}
- */ /* end of group LCD_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group LCD_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- LLWU Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LLWU_Peripheral_Access_Layer LLWU Peripheral Access Layer
- * @{
- */
-
-/** LLWU - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t PE1;                                /**< LLWU Pin Enable 1 register, offset: 0x0 */
-  __IO uint8_t PE2;                                /**< LLWU Pin Enable 2 register, offset: 0x1 */
-  __IO uint8_t PE3;                                /**< LLWU Pin Enable 3 register, offset: 0x2 */
-  __IO uint8_t PE4;                                /**< LLWU Pin Enable 4 register, offset: 0x3 */
-  __IO uint8_t ME;                                 /**< LLWU Module Enable register, offset: 0x4 */
-  __IO uint8_t F1;                                 /**< LLWU Flag 1 register, offset: 0x5 */
-  __IO uint8_t F2;                                 /**< LLWU Flag 2 register, offset: 0x6 */
-  __I  uint8_t F3;                                 /**< LLWU Flag 3 register, offset: 0x7 */
-  __IO uint8_t FILT1;                              /**< LLWU Pin Filter 1 register, offset: 0x8 */
-  __IO uint8_t FILT2;                              /**< LLWU Pin Filter 2 register, offset: 0x9 */
-} LLWU_Type, *LLWU_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- LLWU - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LLWU_Register_Accessor_Macros LLWU - Register accessor macros
- * @{
- */
-
-
-/* LLWU - Register accessors */
-#define LLWU_PE1_REG(base)                       ((base)->PE1)
-#define LLWU_PE2_REG(base)                       ((base)->PE2)
-#define LLWU_PE3_REG(base)                       ((base)->PE3)
-#define LLWU_PE4_REG(base)                       ((base)->PE4)
-#define LLWU_ME_REG(base)                        ((base)->ME)
-#define LLWU_F1_REG(base)                        ((base)->F1)
-#define LLWU_F2_REG(base)                        ((base)->F2)
-#define LLWU_F3_REG(base)                        ((base)->F3)
-#define LLWU_FILT1_REG(base)                     ((base)->FILT1)
-#define LLWU_FILT2_REG(base)                     ((base)->FILT2)
-
-/*!
- * @}
- */ /* end of group LLWU_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- LLWU Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LLWU_Register_Masks LLWU Register Masks
- * @{
- */
-
-/* PE1 Bit Fields */
-#define LLWU_PE1_WUPE0_MASK                      0x3u
-#define LLWU_PE1_WUPE0_SHIFT                     0
-#define LLWU_PE1_WUPE0(x)                        (((uint8_t)(((uint8_t)(x))<<LLWU_PE1_WUPE0_SHIFT))&LLWU_PE1_WUPE0_MASK)
-#define LLWU_PE1_WUPE1_MASK                      0xCu
-#define LLWU_PE1_WUPE1_SHIFT                     2
-#define LLWU_PE1_WUPE1(x)                        (((uint8_t)(((uint8_t)(x))<<LLWU_PE1_WUPE1_SHIFT))&LLWU_PE1_WUPE1_MASK)
-#define LLWU_PE1_WUPE2_MASK                      0x30u
-#define LLWU_PE1_WUPE2_SHIFT                     4
-#define LLWU_PE1_WUPE2(x)                        (((uint8_t)(((uint8_t)(x))<<LLWU_PE1_WUPE2_SHIFT))&LLWU_PE1_WUPE2_MASK)
-#define LLWU_PE1_WUPE3_MASK                      0xC0u
-#define LLWU_PE1_WUPE3_SHIFT                     6
-#define LLWU_PE1_WUPE3(x)                        (((uint8_t)(((uint8_t)(x))<<LLWU_PE1_WUPE3_SHIFT))&LLWU_PE1_WUPE3_MASK)
-/* PE2 Bit Fields */
-#define LLWU_PE2_WUPE4_MASK                      0x3u
-#define LLWU_PE2_WUPE4_SHIFT                     0
-#define LLWU_PE2_WUPE4(x)                        (((uint8_t)(((uint8_t)(x))<<LLWU_PE2_WUPE4_SHIFT))&LLWU_PE2_WUPE4_MASK)
-#define LLWU_PE2_WUPE5_MASK                      0xCu
-#define LLWU_PE2_WUPE5_SHIFT                     2
-#define LLWU_PE2_WUPE5(x)                        (((uint8_t)(((uint8_t)(x))<<LLWU_PE2_WUPE5_SHIFT))&LLWU_PE2_WUPE5_MASK)
-#define LLWU_PE2_WUPE6_MASK                      0x30u
-#define LLWU_PE2_WUPE6_SHIFT                     4
-#define LLWU_PE2_WUPE6(x)                        (((uint8_t)(((uint8_t)(x))<<LLWU_PE2_WUPE6_SHIFT))&LLWU_PE2_WUPE6_MASK)
-#define LLWU_PE2_WUPE7_MASK                      0xC0u
-#define LLWU_PE2_WUPE7_SHIFT                     6
-#define LLWU_PE2_WUPE7(x)                        (((uint8_t)(((uint8_t)(x))<<LLWU_PE2_WUPE7_SHIFT))&LLWU_PE2_WUPE7_MASK)
-/* PE3 Bit Fields */
-#define LLWU_PE3_WUPE8_MASK                      0x3u
-#define LLWU_PE3_WUPE8_SHIFT                     0
-#define LLWU_PE3_WUPE8(x)                        (((uint8_t)(((uint8_t)(x))<<LLWU_PE3_WUPE8_SHIFT))&LLWU_PE3_WUPE8_MASK)
-#define LLWU_PE3_WUPE9_MASK                      0xCu
-#define LLWU_PE3_WUPE9_SHIFT                     2
-#define LLWU_PE3_WUPE9(x)                        (((uint8_t)(((uint8_t)(x))<<LLWU_PE3_WUPE9_SHIFT))&LLWU_PE3_WUPE9_MASK)
-#define LLWU_PE3_WUPE10_MASK                     0x30u
-#define LLWU_PE3_WUPE10_SHIFT                    4
-#define LLWU_PE3_WUPE10(x)                       (((uint8_t)(((uint8_t)(x))<<LLWU_PE3_WUPE10_SHIFT))&LLWU_PE3_WUPE10_MASK)
-#define LLWU_PE3_WUPE11_MASK                     0xC0u
-#define LLWU_PE3_WUPE11_SHIFT                    6
-#define LLWU_PE3_WUPE11(x)                       (((uint8_t)(((uint8_t)(x))<<LLWU_PE3_WUPE11_SHIFT))&LLWU_PE3_WUPE11_MASK)
-/* PE4 Bit Fields */
-#define LLWU_PE4_WUPE12_MASK                     0x3u
-#define LLWU_PE4_WUPE12_SHIFT                    0
-#define LLWU_PE4_WUPE12(x)                       (((uint8_t)(((uint8_t)(x))<<LLWU_PE4_WUPE12_SHIFT))&LLWU_PE4_WUPE12_MASK)
-#define LLWU_PE4_WUPE13_MASK                     0xCu
-#define LLWU_PE4_WUPE13_SHIFT                    2
-#define LLWU_PE4_WUPE13(x)                       (((uint8_t)(((uint8_t)(x))<<LLWU_PE4_WUPE13_SHIFT))&LLWU_PE4_WUPE13_MASK)
-#define LLWU_PE4_WUPE14_MASK                     0x30u
-#define LLWU_PE4_WUPE14_SHIFT                    4
-#define LLWU_PE4_WUPE14(x)                       (((uint8_t)(((uint8_t)(x))<<LLWU_PE4_WUPE14_SHIFT))&LLWU_PE4_WUPE14_MASK)
-#define LLWU_PE4_WUPE15_MASK                     0xC0u
-#define LLWU_PE4_WUPE15_SHIFT                    6
-#define LLWU_PE4_WUPE15(x)                       (((uint8_t)(((uint8_t)(x))<<LLWU_PE4_WUPE15_SHIFT))&LLWU_PE4_WUPE15_MASK)
-/* ME Bit Fields */
-#define LLWU_ME_WUME0_MASK                       0x1u
-#define LLWU_ME_WUME0_SHIFT                      0
-#define LLWU_ME_WUME1_MASK                       0x2u
-#define LLWU_ME_WUME1_SHIFT                      1
-#define LLWU_ME_WUME2_MASK                       0x4u
-#define LLWU_ME_WUME2_SHIFT                      2
-#define LLWU_ME_WUME3_MASK                       0x8u
-#define LLWU_ME_WUME3_SHIFT                      3
-#define LLWU_ME_WUME4_MASK                       0x10u
-#define LLWU_ME_WUME4_SHIFT                      4
-#define LLWU_ME_WUME5_MASK                       0x20u
-#define LLWU_ME_WUME5_SHIFT                      5
-#define LLWU_ME_WUME6_MASK                       0x40u
-#define LLWU_ME_WUME6_SHIFT                      6
-#define LLWU_ME_WUME7_MASK                       0x80u
-#define LLWU_ME_WUME7_SHIFT                      7
-/* F1 Bit Fields */
-#define LLWU_F1_WUF0_MASK                        0x1u
-#define LLWU_F1_WUF0_SHIFT                       0
-#define LLWU_F1_WUF1_MASK                        0x2u
-#define LLWU_F1_WUF1_SHIFT                       1
-#define LLWU_F1_WUF2_MASK                        0x4u
-#define LLWU_F1_WUF2_SHIFT                       2
-#define LLWU_F1_WUF3_MASK                        0x8u
-#define LLWU_F1_WUF3_SHIFT                       3
-#define LLWU_F1_WUF4_MASK                        0x10u
-#define LLWU_F1_WUF4_SHIFT                       4
-#define LLWU_F1_WUF5_MASK                        0x20u
-#define LLWU_F1_WUF5_SHIFT                       5
-#define LLWU_F1_WUF6_MASK                        0x40u
-#define LLWU_F1_WUF6_SHIFT                       6
-#define LLWU_F1_WUF7_MASK                        0x80u
-#define LLWU_F1_WUF7_SHIFT                       7
-/* F2 Bit Fields */
-#define LLWU_F2_WUF8_MASK                        0x1u
-#define LLWU_F2_WUF8_SHIFT                       0
-#define LLWU_F2_WUF9_MASK                        0x2u
-#define LLWU_F2_WUF9_SHIFT                       1
-#define LLWU_F2_WUF10_MASK                       0x4u
-#define LLWU_F2_WUF10_SHIFT                      2
-#define LLWU_F2_WUF11_MASK                       0x8u
-#define LLWU_F2_WUF11_SHIFT                      3
-#define LLWU_F2_WUF12_MASK                       0x10u
-#define LLWU_F2_WUF12_SHIFT                      4
-#define LLWU_F2_WUF13_MASK                       0x20u
-#define LLWU_F2_WUF13_SHIFT                      5
-#define LLWU_F2_WUF14_MASK                       0x40u
-#define LLWU_F2_WUF14_SHIFT                      6
-#define LLWU_F2_WUF15_MASK                       0x80u
-#define LLWU_F2_WUF15_SHIFT                      7
-/* F3 Bit Fields */
-#define LLWU_F3_MWUF0_MASK                       0x1u
-#define LLWU_F3_MWUF0_SHIFT                      0
-#define LLWU_F3_MWUF1_MASK                       0x2u
-#define LLWU_F3_MWUF1_SHIFT                      1
-#define LLWU_F3_MWUF2_MASK                       0x4u
-#define LLWU_F3_MWUF2_SHIFT                      2
-#define LLWU_F3_MWUF3_MASK                       0x8u
-#define LLWU_F3_MWUF3_SHIFT                      3
-#define LLWU_F3_MWUF4_MASK                       0x10u
-#define LLWU_F3_MWUF4_SHIFT                      4
-#define LLWU_F3_MWUF5_MASK                       0x20u
-#define LLWU_F3_MWUF5_SHIFT                      5
-#define LLWU_F3_MWUF6_MASK                       0x40u
-#define LLWU_F3_MWUF6_SHIFT                      6
-#define LLWU_F3_MWUF7_MASK                       0x80u
-#define LLWU_F3_MWUF7_SHIFT                      7
-/* FILT1 Bit Fields */
-#define LLWU_FILT1_FILTSEL_MASK                  0xFu
-#define LLWU_FILT1_FILTSEL_SHIFT                 0
-#define LLWU_FILT1_FILTSEL(x)                    (((uint8_t)(((uint8_t)(x))<<LLWU_FILT1_FILTSEL_SHIFT))&LLWU_FILT1_FILTSEL_MASK)
-#define LLWU_FILT1_FILTE_MASK                    0x60u
-#define LLWU_FILT1_FILTE_SHIFT                   5
-#define LLWU_FILT1_FILTE(x)                      (((uint8_t)(((uint8_t)(x))<<LLWU_FILT1_FILTE_SHIFT))&LLWU_FILT1_FILTE_MASK)
-#define LLWU_FILT1_FILTF_MASK                    0x80u
-#define LLWU_FILT1_FILTF_SHIFT                   7
-/* FILT2 Bit Fields */
-#define LLWU_FILT2_FILTSEL_MASK                  0xFu
-#define LLWU_FILT2_FILTSEL_SHIFT                 0
-#define LLWU_FILT2_FILTSEL(x)                    (((uint8_t)(((uint8_t)(x))<<LLWU_FILT2_FILTSEL_SHIFT))&LLWU_FILT2_FILTSEL_MASK)
-#define LLWU_FILT2_FILTE_MASK                    0x60u
-#define LLWU_FILT2_FILTE_SHIFT                   5
-#define LLWU_FILT2_FILTE(x)                      (((uint8_t)(((uint8_t)(x))<<LLWU_FILT2_FILTE_SHIFT))&LLWU_FILT2_FILTE_MASK)
-#define LLWU_FILT2_FILTF_MASK                    0x80u
-#define LLWU_FILT2_FILTF_SHIFT                   7
-
-/*!
- * @}
- */ /* end of group LLWU_Register_Masks */
-
-
-/* LLWU - Peripheral instance base addresses */
-/** Peripheral LLWU base address */
-#define LLWU_BASE                                (0x4007C000u)
-/** Peripheral LLWU base pointer */
-#define LLWU                                     ((LLWU_Type *)LLWU_BASE)
-#define LLWU_BASE_PTR                            (LLWU)
-/** Array initializer of LLWU peripheral base addresses */
-#define LLWU_BASE_ADDRS                          { LLWU_BASE }
-/** Array initializer of LLWU peripheral base pointers */
-#define LLWU_BASE_PTRS                           { LLWU }
-/** Interrupt vectors for the LLWU peripheral type */
-#define LLWU_IRQS                                { LLWU_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- LLWU - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LLWU_Register_Accessor_Macros LLWU - Register accessor macros
- * @{
- */
-
-
-/* LLWU - Register instance definitions */
-/* LLWU */
-#define LLWU_PE1                                 LLWU_PE1_REG(LLWU)
-#define LLWU_PE2                                 LLWU_PE2_REG(LLWU)
-#define LLWU_PE3                                 LLWU_PE3_REG(LLWU)
-#define LLWU_PE4                                 LLWU_PE4_REG(LLWU)
-#define LLWU_ME                                  LLWU_ME_REG(LLWU)
-#define LLWU_F1                                  LLWU_F1_REG(LLWU)
-#define LLWU_F2                                  LLWU_F2_REG(LLWU)
-#define LLWU_F3                                  LLWU_F3_REG(LLWU)
-#define LLWU_FILT1                               LLWU_FILT1_REG(LLWU)
-#define LLWU_FILT2                               LLWU_FILT2_REG(LLWU)
-
-/*!
- * @}
- */ /* end of group LLWU_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group LLWU_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- LPTMR Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LPTMR_Peripheral_Access_Layer LPTMR Peripheral Access Layer
- * @{
- */
-
-/** LPTMR - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t CSR;                               /**< Low Power Timer Control Status Register, offset: 0x0 */
-  __IO uint32_t PSR;                               /**< Low Power Timer Prescale Register, offset: 0x4 */
-  __IO uint32_t CMR;                               /**< Low Power Timer Compare Register, offset: 0x8 */
-  __IO uint32_t CNR;                               /**< Low Power Timer Counter Register, offset: 0xC */
-} LPTMR_Type, *LPTMR_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- LPTMR - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LPTMR_Register_Accessor_Macros LPTMR - Register accessor macros
- * @{
- */
-
-
-/* LPTMR - Register accessors */
-#define LPTMR_CSR_REG(base)                      ((base)->CSR)
-#define LPTMR_PSR_REG(base)                      ((base)->PSR)
-#define LPTMR_CMR_REG(base)                      ((base)->CMR)
-#define LPTMR_CNR_REG(base)                      ((base)->CNR)
-
-/*!
- * @}
- */ /* end of group LPTMR_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- LPTMR Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LPTMR_Register_Masks LPTMR Register Masks
- * @{
- */
-
-/* CSR Bit Fields */
-#define LPTMR_CSR_TEN_MASK                       0x1u
-#define LPTMR_CSR_TEN_SHIFT                      0
-#define LPTMR_CSR_TMS_MASK                       0x2u
-#define LPTMR_CSR_TMS_SHIFT                      1
-#define LPTMR_CSR_TFC_MASK                       0x4u
-#define LPTMR_CSR_TFC_SHIFT                      2
-#define LPTMR_CSR_TPP_MASK                       0x8u
-#define LPTMR_CSR_TPP_SHIFT                      3
-#define LPTMR_CSR_TPS_MASK                       0x30u
-#define LPTMR_CSR_TPS_SHIFT                      4
-#define LPTMR_CSR_TPS(x)                         (((uint32_t)(((uint32_t)(x))<<LPTMR_CSR_TPS_SHIFT))&LPTMR_CSR_TPS_MASK)
-#define LPTMR_CSR_TIE_MASK                       0x40u
-#define LPTMR_CSR_TIE_SHIFT                      6
-#define LPTMR_CSR_TCF_MASK                       0x80u
-#define LPTMR_CSR_TCF_SHIFT                      7
-/* PSR Bit Fields */
-#define LPTMR_PSR_PCS_MASK                       0x3u
-#define LPTMR_PSR_PCS_SHIFT                      0
-#define LPTMR_PSR_PCS(x)                         (((uint32_t)(((uint32_t)(x))<<LPTMR_PSR_PCS_SHIFT))&LPTMR_PSR_PCS_MASK)
-#define LPTMR_PSR_PBYP_MASK                      0x4u
-#define LPTMR_PSR_PBYP_SHIFT                     2
-#define LPTMR_PSR_PRESCALE_MASK                  0x78u
-#define LPTMR_PSR_PRESCALE_SHIFT                 3
-#define LPTMR_PSR_PRESCALE(x)                    (((uint32_t)(((uint32_t)(x))<<LPTMR_PSR_PRESCALE_SHIFT))&LPTMR_PSR_PRESCALE_MASK)
-/* CMR Bit Fields */
-#define LPTMR_CMR_COMPARE_MASK                   0xFFFFu
-#define LPTMR_CMR_COMPARE_SHIFT                  0
-#define LPTMR_CMR_COMPARE(x)                     (((uint32_t)(((uint32_t)(x))<<LPTMR_CMR_COMPARE_SHIFT))&LPTMR_CMR_COMPARE_MASK)
-/* CNR Bit Fields */
-#define LPTMR_CNR_COUNTER_MASK                   0xFFFFu
-#define LPTMR_CNR_COUNTER_SHIFT                  0
-#define LPTMR_CNR_COUNTER(x)                     (((uint32_t)(((uint32_t)(x))<<LPTMR_CNR_COUNTER_SHIFT))&LPTMR_CNR_COUNTER_MASK)
-
-/*!
- * @}
- */ /* end of group LPTMR_Register_Masks */
-
-
-/* LPTMR - Peripheral instance base addresses */
-/** Peripheral LPTMR0 base address */
-#define LPTMR0_BASE                              (0x40040000u)
-/** Peripheral LPTMR0 base pointer */
-#define LPTMR0                                   ((LPTMR_Type *)LPTMR0_BASE)
-#define LPTMR0_BASE_PTR                          (LPTMR0)
-/** Array initializer of LPTMR peripheral base addresses */
-#define LPTMR_BASE_ADDRS                         { LPTMR0_BASE }
-/** Array initializer of LPTMR peripheral base pointers */
-#define LPTMR_BASE_PTRS                          { LPTMR0 }
-/** Interrupt vectors for the LPTMR peripheral type */
-#define LPTMR_IRQS                               { LPTMR0_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- LPTMR - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LPTMR_Register_Accessor_Macros LPTMR - Register accessor macros
- * @{
- */
-
-
-/* LPTMR - Register instance definitions */
-/* LPTMR0 */
-#define LPTMR0_CSR                               LPTMR_CSR_REG(LPTMR0)
-#define LPTMR0_PSR                               LPTMR_PSR_REG(LPTMR0)
-#define LPTMR0_CMR                               LPTMR_CMR_REG(LPTMR0)
-#define LPTMR0_CNR                               LPTMR_CNR_REG(LPTMR0)
-
-/*!
- * @}
- */ /* end of group LPTMR_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group LPTMR_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- LPUART Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LPUART_Peripheral_Access_Layer LPUART Peripheral Access Layer
- * @{
- */
-
-/** LPUART - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t BAUD;                              /**< LPUART Baud Rate Register, offset: 0x0 */
-  __IO uint32_t STAT;                              /**< LPUART Status Register, offset: 0x4 */
-  __IO uint32_t CTRL;                              /**< LPUART Control Register, offset: 0x8 */
-  __IO uint32_t DATA;                              /**< LPUART Data Register, offset: 0xC */
-  __IO uint32_t MATCH;                             /**< LPUART Match Address Register, offset: 0x10 */
-} LPUART_Type, *LPUART_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- LPUART - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LPUART_Register_Accessor_Macros LPUART - Register accessor macros
- * @{
- */
-
-
-/* LPUART - Register accessors */
-#define LPUART_BAUD_REG(base)                    ((base)->BAUD)
-#define LPUART_STAT_REG(base)                    ((base)->STAT)
-#define LPUART_CTRL_REG(base)                    ((base)->CTRL)
-#define LPUART_DATA_REG(base)                    ((base)->DATA)
-#define LPUART_MATCH_REG(base)                   ((base)->MATCH)
-
-/*!
- * @}
- */ /* end of group LPUART_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- LPUART Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LPUART_Register_Masks LPUART Register Masks
- * @{
- */
-
-/* BAUD Bit Fields */
-#define LPUART_BAUD_SBR_MASK                     0x1FFFu
-#define LPUART_BAUD_SBR_SHIFT                    0
-#define LPUART_BAUD_SBR(x)                       (((uint32_t)(((uint32_t)(x))<<LPUART_BAUD_SBR_SHIFT))&LPUART_BAUD_SBR_MASK)
-#define LPUART_BAUD_SBNS_MASK                    0x2000u
-#define LPUART_BAUD_SBNS_SHIFT                   13
-#define LPUART_BAUD_RXEDGIE_MASK                 0x4000u
-#define LPUART_BAUD_RXEDGIE_SHIFT                14
-#define LPUART_BAUD_LBKDIE_MASK                  0x8000u
-#define LPUART_BAUD_LBKDIE_SHIFT                 15
-#define LPUART_BAUD_RESYNCDIS_MASK               0x10000u
-#define LPUART_BAUD_RESYNCDIS_SHIFT              16
-#define LPUART_BAUD_BOTHEDGE_MASK                0x20000u
-#define LPUART_BAUD_BOTHEDGE_SHIFT               17
-#define LPUART_BAUD_MATCFG_MASK                  0xC0000u
-#define LPUART_BAUD_MATCFG_SHIFT                 18
-#define LPUART_BAUD_MATCFG(x)                    (((uint32_t)(((uint32_t)(x))<<LPUART_BAUD_MATCFG_SHIFT))&LPUART_BAUD_MATCFG_MASK)
-#define LPUART_BAUD_RDMAE_MASK                   0x200000u
-#define LPUART_BAUD_RDMAE_SHIFT                  21
-#define LPUART_BAUD_TDMAE_MASK                   0x800000u
-#define LPUART_BAUD_TDMAE_SHIFT                  23
-#define LPUART_BAUD_OSR_MASK                     0x1F000000u
-#define LPUART_BAUD_OSR_SHIFT                    24
-#define LPUART_BAUD_OSR(x)                       (((uint32_t)(((uint32_t)(x))<<LPUART_BAUD_OSR_SHIFT))&LPUART_BAUD_OSR_MASK)
-#define LPUART_BAUD_M10_MASK                     0x20000000u
-#define LPUART_BAUD_M10_SHIFT                    29
-#define LPUART_BAUD_MAEN2_MASK                   0x40000000u
-#define LPUART_BAUD_MAEN2_SHIFT                  30
-#define LPUART_BAUD_MAEN1_MASK                   0x80000000u
-#define LPUART_BAUD_MAEN1_SHIFT                  31
-/* STAT Bit Fields */
-#define LPUART_STAT_MA2F_MASK                    0x4000u
-#define LPUART_STAT_MA2F_SHIFT                   14
-#define LPUART_STAT_MA1F_MASK                    0x8000u
-#define LPUART_STAT_MA1F_SHIFT                   15
-#define LPUART_STAT_PF_MASK                      0x10000u
-#define LPUART_STAT_PF_SHIFT                     16
-#define LPUART_STAT_FE_MASK                      0x20000u
-#define LPUART_STAT_FE_SHIFT                     17
-#define LPUART_STAT_NF_MASK                      0x40000u
-#define LPUART_STAT_NF_SHIFT                     18
-#define LPUART_STAT_OR_MASK                      0x80000u
-#define LPUART_STAT_OR_SHIFT                     19
-#define LPUART_STAT_IDLE_MASK                    0x100000u
-#define LPUART_STAT_IDLE_SHIFT                   20
-#define LPUART_STAT_RDRF_MASK                    0x200000u
-#define LPUART_STAT_RDRF_SHIFT                   21
-#define LPUART_STAT_TC_MASK                      0x400000u
-#define LPUART_STAT_TC_SHIFT                     22
-#define LPUART_STAT_TDRE_MASK                    0x800000u
-#define LPUART_STAT_TDRE_SHIFT                   23
-#define LPUART_STAT_RAF_MASK                     0x1000000u
-#define LPUART_STAT_RAF_SHIFT                    24
-#define LPUART_STAT_LBKDE_MASK                   0x2000000u
-#define LPUART_STAT_LBKDE_SHIFT                  25
-#define LPUART_STAT_BRK13_MASK                   0x4000000u
-#define LPUART_STAT_BRK13_SHIFT                  26
-#define LPUART_STAT_RWUID_MASK                   0x8000000u
-#define LPUART_STAT_RWUID_SHIFT                  27
-#define LPUART_STAT_RXINV_MASK                   0x10000000u
-#define LPUART_STAT_RXINV_SHIFT                  28
-#define LPUART_STAT_MSBF_MASK                    0x20000000u
-#define LPUART_STAT_MSBF_SHIFT                   29
-#define LPUART_STAT_RXEDGIF_MASK                 0x40000000u
-#define LPUART_STAT_RXEDGIF_SHIFT                30
-#define LPUART_STAT_LBKDIF_MASK                  0x80000000u
-#define LPUART_STAT_LBKDIF_SHIFT                 31
-/* CTRL Bit Fields */
-#define LPUART_CTRL_PT_MASK                      0x1u
-#define LPUART_CTRL_PT_SHIFT                     0
-#define LPUART_CTRL_PE_MASK                      0x2u
-#define LPUART_CTRL_PE_SHIFT                     1
-#define LPUART_CTRL_ILT_MASK                     0x4u
-#define LPUART_CTRL_ILT_SHIFT                    2
-#define LPUART_CTRL_WAKE_MASK                    0x8u
-#define LPUART_CTRL_WAKE_SHIFT                   3
-#define LPUART_CTRL_M_MASK                       0x10u
-#define LPUART_CTRL_M_SHIFT                      4
-#define LPUART_CTRL_RSRC_MASK                    0x20u
-#define LPUART_CTRL_RSRC_SHIFT                   5
-#define LPUART_CTRL_DOZEEN_MASK                  0x40u
-#define LPUART_CTRL_DOZEEN_SHIFT                 6
-#define LPUART_CTRL_LOOPS_MASK                   0x80u
-#define LPUART_CTRL_LOOPS_SHIFT                  7
-#define LPUART_CTRL_IDLECFG_MASK                 0x700u
-#define LPUART_CTRL_IDLECFG_SHIFT                8
-#define LPUART_CTRL_IDLECFG(x)                   (((uint32_t)(((uint32_t)(x))<<LPUART_CTRL_IDLECFG_SHIFT))&LPUART_CTRL_IDLECFG_MASK)
-#define LPUART_CTRL_MA2IE_MASK                   0x4000u
-#define LPUART_CTRL_MA2IE_SHIFT                  14
-#define LPUART_CTRL_MA1IE_MASK                   0x8000u
-#define LPUART_CTRL_MA1IE_SHIFT                  15
-#define LPUART_CTRL_SBK_MASK                     0x10000u
-#define LPUART_CTRL_SBK_SHIFT                    16
-#define LPUART_CTRL_RWU_MASK                     0x20000u
-#define LPUART_CTRL_RWU_SHIFT                    17
-#define LPUART_CTRL_RE_MASK                      0x40000u
-#define LPUART_CTRL_RE_SHIFT                     18
-#define LPUART_CTRL_TE_MASK                      0x80000u
-#define LPUART_CTRL_TE_SHIFT                     19
-#define LPUART_CTRL_ILIE_MASK                    0x100000u
-#define LPUART_CTRL_ILIE_SHIFT                   20
-#define LPUART_CTRL_RIE_MASK                     0x200000u
-#define LPUART_CTRL_RIE_SHIFT                    21
-#define LPUART_CTRL_TCIE_MASK                    0x400000u
-#define LPUART_CTRL_TCIE_SHIFT                   22
-#define LPUART_CTRL_TIE_MASK                     0x800000u
-#define LPUART_CTRL_TIE_SHIFT                    23
-#define LPUART_CTRL_PEIE_MASK                    0x1000000u
-#define LPUART_CTRL_PEIE_SHIFT                   24
-#define LPUART_CTRL_FEIE_MASK                    0x2000000u
-#define LPUART_CTRL_FEIE_SHIFT                   25
-#define LPUART_CTRL_NEIE_MASK                    0x4000000u
-#define LPUART_CTRL_NEIE_SHIFT                   26
-#define LPUART_CTRL_ORIE_MASK                    0x8000000u
-#define LPUART_CTRL_ORIE_SHIFT                   27
-#define LPUART_CTRL_TXINV_MASK                   0x10000000u
-#define LPUART_CTRL_TXINV_SHIFT                  28
-#define LPUART_CTRL_TXDIR_MASK                   0x20000000u
-#define LPUART_CTRL_TXDIR_SHIFT                  29
-#define LPUART_CTRL_R9T8_MASK                    0x40000000u
-#define LPUART_CTRL_R9T8_SHIFT                   30
-#define LPUART_CTRL_R8T9_MASK                    0x80000000u
-#define LPUART_CTRL_R8T9_SHIFT                   31
-/* DATA Bit Fields */
-#define LPUART_DATA_R0T0_MASK                    0x1u
-#define LPUART_DATA_R0T0_SHIFT                   0
-#define LPUART_DATA_R1T1_MASK                    0x2u
-#define LPUART_DATA_R1T1_SHIFT                   1
-#define LPUART_DATA_R2T2_MASK                    0x4u
-#define LPUART_DATA_R2T2_SHIFT                   2
-#define LPUART_DATA_R3T3_MASK                    0x8u
-#define LPUART_DATA_R3T3_SHIFT                   3
-#define LPUART_DATA_R4T4_MASK                    0x10u
-#define LPUART_DATA_R4T4_SHIFT                   4
-#define LPUART_DATA_R5T5_MASK                    0x20u
-#define LPUART_DATA_R5T5_SHIFT                   5
-#define LPUART_DATA_R6T6_MASK                    0x40u
-#define LPUART_DATA_R6T6_SHIFT                   6
-#define LPUART_DATA_R7T7_MASK                    0x80u
-#define LPUART_DATA_R7T7_SHIFT                   7
-#define LPUART_DATA_R8T8_MASK                    0x100u
-#define LPUART_DATA_R8T8_SHIFT                   8
-#define LPUART_DATA_R9T9_MASK                    0x200u
-#define LPUART_DATA_R9T9_SHIFT                   9
-#define LPUART_DATA_IDLINE_MASK                  0x800u
-#define LPUART_DATA_IDLINE_SHIFT                 11
-#define LPUART_DATA_RXEMPT_MASK                  0x1000u
-#define LPUART_DATA_RXEMPT_SHIFT                 12
-#define LPUART_DATA_FRETSC_MASK                  0x2000u
-#define LPUART_DATA_FRETSC_SHIFT                 13
-#define LPUART_DATA_PARITYE_MASK                 0x4000u
-#define LPUART_DATA_PARITYE_SHIFT                14
-#define LPUART_DATA_NOISY_MASK                   0x8000u
-#define LPUART_DATA_NOISY_SHIFT                  15
-/* MATCH Bit Fields */
-#define LPUART_MATCH_MA1_MASK                    0x3FFu
-#define LPUART_MATCH_MA1_SHIFT                   0
-#define LPUART_MATCH_MA1(x)                      (((uint32_t)(((uint32_t)(x))<<LPUART_MATCH_MA1_SHIFT))&LPUART_MATCH_MA1_MASK)
-#define LPUART_MATCH_MA2_MASK                    0x3FF0000u
-#define LPUART_MATCH_MA2_SHIFT                   16
-#define LPUART_MATCH_MA2(x)                      (((uint32_t)(((uint32_t)(x))<<LPUART_MATCH_MA2_SHIFT))&LPUART_MATCH_MA2_MASK)
-
-/*!
- * @}
- */ /* end of group LPUART_Register_Masks */
-
-
-/* LPUART - Peripheral instance base addresses */
-/** Peripheral LPUART0 base address */
-#define LPUART0_BASE                             (0x40054000u)
-/** Peripheral LPUART0 base pointer */
-#define LPUART0                                  ((LPUART_Type *)LPUART0_BASE)
-#define LPUART0_BASE_PTR                         (LPUART0)
-/** Peripheral LPUART1 base address */
-#define LPUART1_BASE                             (0x40055000u)
-/** Peripheral LPUART1 base pointer */
-#define LPUART1                                  ((LPUART_Type *)LPUART1_BASE)
-#define LPUART1_BASE_PTR                         (LPUART1)
-/** Array initializer of LPUART peripheral base addresses */
-#define LPUART_BASE_ADDRS                        { LPUART0_BASE, LPUART1_BASE }
-/** Array initializer of LPUART peripheral base pointers */
-#define LPUART_BASE_PTRS                         { LPUART0, LPUART1 }
-/** Interrupt vectors for the LPUART peripheral type */
-#define LPUART_RX_TX_IRQS                        { LPUART0_IRQn, LPUART1_IRQn }
-#define LPUART_ERR_IRQS                          { LPUART0_IRQn, LPUART1_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- LPUART - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup LPUART_Register_Accessor_Macros LPUART - Register accessor macros
- * @{
- */
-
-
-/* LPUART - Register instance definitions */
-/* LPUART0 */
-#define LPUART0_BAUD                             LPUART_BAUD_REG(LPUART0)
-#define LPUART0_STAT                             LPUART_STAT_REG(LPUART0)
-#define LPUART0_CTRL                             LPUART_CTRL_REG(LPUART0)
-#define LPUART0_DATA                             LPUART_DATA_REG(LPUART0)
-#define LPUART0_MATCH                            LPUART_MATCH_REG(LPUART0)
-/* LPUART1 */
-#define LPUART1_BAUD                             LPUART_BAUD_REG(LPUART1)
-#define LPUART1_STAT                             LPUART_STAT_REG(LPUART1)
-#define LPUART1_CTRL                             LPUART_CTRL_REG(LPUART1)
-#define LPUART1_DATA                             LPUART_DATA_REG(LPUART1)
-#define LPUART1_MATCH                            LPUART_MATCH_REG(LPUART1)
-
-/*!
- * @}
- */ /* end of group LPUART_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group LPUART_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- MCG Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MCG_Peripheral_Access_Layer MCG Peripheral Access Layer
- * @{
- */
-
-/** MCG - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t C1;                                 /**< MCG Control Register 1, offset: 0x0 */
-  __IO uint8_t C2;                                 /**< MCG Control Register 2, offset: 0x1 */
-       uint8_t RESERVED_0[4];
-  __I  uint8_t S;                                  /**< MCG Status Register, offset: 0x6 */
-       uint8_t RESERVED_1[1];
-  __IO uint8_t SC;                                 /**< MCG Status and Control Register, offset: 0x8 */
-       uint8_t RESERVED_2[11];
-  __I  uint8_t HCTRIM;                             /**< MCG High-frequency IRC Coarse Trim Register, offset: 0x14 */
-  __I  uint8_t HTTRIM;                             /**< MCG High-frequency IRC Tempco (Temperature Coefficient) Trim Register, offset: 0x15 */
-  __I  uint8_t HFTRIM;                             /**< MCG High-frequency IRC Fine Trim Register, offset: 0x16 */
-       uint8_t RESERVED_3[1];
-  __IO uint8_t MC;                                 /**< MCG Miscellaneous Control Register, offset: 0x18 */
-  __I  uint8_t LTRIMRNG;                           /**< MCG Low-frequency IRC Trim Range Register, offset: 0x19 */
-  __I  uint8_t LFTRIM;                             /**< MCG Low-frequency IRC8M Trim Register, offset: 0x1A */
-  __I  uint8_t LSTRIM;                             /**< MCG Low-frequency IRC2M Trim Register, offset: 0x1B */
-} MCG_Type, *MCG_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- MCG - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MCG_Register_Accessor_Macros MCG - Register accessor macros
- * @{
- */
-
-
-/* MCG - Register accessors */
-#define MCG_C1_REG(base)                         ((base)->C1)
-#define MCG_C2_REG(base)                         ((base)->C2)
-#define MCG_S_REG(base)                          ((base)->S)
-#define MCG_SC_REG(base)                         ((base)->SC)
-#define MCG_HCTRIM_REG(base)                     ((base)->HCTRIM)
-#define MCG_HTTRIM_REG(base)                     ((base)->HTTRIM)
-#define MCG_HFTRIM_REG(base)                     ((base)->HFTRIM)
-#define MCG_MC_REG(base)                         ((base)->MC)
-#define MCG_LTRIMRNG_REG(base)                   ((base)->LTRIMRNG)
-#define MCG_LFTRIM_REG(base)                     ((base)->LFTRIM)
-#define MCG_LSTRIM_REG(base)                     ((base)->LSTRIM)
-
-/*!
- * @}
- */ /* end of group MCG_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- MCG Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MCG_Register_Masks MCG Register Masks
- * @{
- */
-
-/* C1 Bit Fields */
-#define MCG_C1_IREFSTEN_MASK                     0x1u
-#define MCG_C1_IREFSTEN_SHIFT                    0
-#define MCG_C1_IRCLKEN_MASK                      0x2u
-#define MCG_C1_IRCLKEN_SHIFT                     1
-#define MCG_C1_CLKS_MASK                         0xC0u
-#define MCG_C1_CLKS_SHIFT                        6
-#define MCG_C1_CLKS(x)                           (((uint8_t)(((uint8_t)(x))<<MCG_C1_CLKS_SHIFT))&MCG_C1_CLKS_MASK)
-/* C2 Bit Fields */
-#define MCG_C2_IRCS_MASK                         0x1u
-#define MCG_C2_IRCS_SHIFT                        0
-#define MCG_C2_EREFS0_MASK                       0x4u
-#define MCG_C2_EREFS0_SHIFT                      2
-#define MCG_C2_HGO0_MASK                         0x8u
-#define MCG_C2_HGO0_SHIFT                        3
-#define MCG_C2_RANGE0_MASK                       0x30u
-#define MCG_C2_RANGE0_SHIFT                      4
-#define MCG_C2_RANGE0(x)                         (((uint8_t)(((uint8_t)(x))<<MCG_C2_RANGE0_SHIFT))&MCG_C2_RANGE0_MASK)
-/* S Bit Fields */
-#define MCG_S_OSCINIT0_MASK                      0x2u
-#define MCG_S_OSCINIT0_SHIFT                     1
-#define MCG_S_CLKST_MASK                         0xCu
-#define MCG_S_CLKST_SHIFT                        2
-#define MCG_S_CLKST(x)                           (((uint8_t)(((uint8_t)(x))<<MCG_S_CLKST_SHIFT))&MCG_S_CLKST_MASK)
-/* SC Bit Fields */
-#define MCG_SC_FCRDIV_MASK                       0xEu
-#define MCG_SC_FCRDIV_SHIFT                      1
-#define MCG_SC_FCRDIV(x)                         (((uint8_t)(((uint8_t)(x))<<MCG_SC_FCRDIV_SHIFT))&MCG_SC_FCRDIV_MASK)
-/* HCTRIM Bit Fields */
-#define MCG_HCTRIM_COARSE_TRIM_MASK              0x3Fu
-#define MCG_HCTRIM_COARSE_TRIM_SHIFT             0
-#define MCG_HCTRIM_COARSE_TRIM(x)                (((uint8_t)(((uint8_t)(x))<<MCG_HCTRIM_COARSE_TRIM_SHIFT))&MCG_HCTRIM_COARSE_TRIM_MASK)
-/* HTTRIM Bit Fields */
-#define MCG_HTTRIM_TEMPCO_TRIM_MASK              0x1Fu
-#define MCG_HTTRIM_TEMPCO_TRIM_SHIFT             0
-#define MCG_HTTRIM_TEMPCO_TRIM(x)                (((uint8_t)(((uint8_t)(x))<<MCG_HTTRIM_TEMPCO_TRIM_SHIFT))&MCG_HTTRIM_TEMPCO_TRIM_MASK)
-/* HFTRIM Bit Fields */
-#define MCG_HFTRIM_FINE_TRIM_MASK                0x7Fu
-#define MCG_HFTRIM_FINE_TRIM_SHIFT               0
-#define MCG_HFTRIM_FINE_TRIM(x)                  (((uint8_t)(((uint8_t)(x))<<MCG_HFTRIM_FINE_TRIM_SHIFT))&MCG_HFTRIM_FINE_TRIM_MASK)
-/* MC Bit Fields */
-#define MCG_MC_LIRC_DIV2_MASK                    0x7u
-#define MCG_MC_LIRC_DIV2_SHIFT                   0
-#define MCG_MC_LIRC_DIV2(x)                      (((uint8_t)(((uint8_t)(x))<<MCG_MC_LIRC_DIV2_SHIFT))&MCG_MC_LIRC_DIV2_MASK)
-#define MCG_MC_HIRCEN_MASK                       0x80u
-#define MCG_MC_HIRCEN_SHIFT                      7
-/* LTRIMRNG Bit Fields */
-#define MCG_LTRIMRNG_STRIMRNG_MASK               0x3u
-#define MCG_LTRIMRNG_STRIMRNG_SHIFT              0
-#define MCG_LTRIMRNG_STRIMRNG(x)                 (((uint8_t)(((uint8_t)(x))<<MCG_LTRIMRNG_STRIMRNG_SHIFT))&MCG_LTRIMRNG_STRIMRNG_MASK)
-#define MCG_LTRIMRNG_FTRIMRNG_MASK               0xCu
-#define MCG_LTRIMRNG_FTRIMRNG_SHIFT              2
-#define MCG_LTRIMRNG_FTRIMRNG(x)                 (((uint8_t)(((uint8_t)(x))<<MCG_LTRIMRNG_FTRIMRNG_SHIFT))&MCG_LTRIMRNG_FTRIMRNG_MASK)
-/* LFTRIM Bit Fields */
-#define MCG_LFTRIM_LIRC_FTRIM_MASK               0x7Fu
-#define MCG_LFTRIM_LIRC_FTRIM_SHIFT              0
-#define MCG_LFTRIM_LIRC_FTRIM(x)                 (((uint8_t)(((uint8_t)(x))<<MCG_LFTRIM_LIRC_FTRIM_SHIFT))&MCG_LFTRIM_LIRC_FTRIM_MASK)
-/* LSTRIM Bit Fields */
-#define MCG_LSTRIM_LIRC_STRIM_MASK               0x7Fu
-#define MCG_LSTRIM_LIRC_STRIM_SHIFT              0
-#define MCG_LSTRIM_LIRC_STRIM(x)                 (((uint8_t)(((uint8_t)(x))<<MCG_LSTRIM_LIRC_STRIM_SHIFT))&MCG_LSTRIM_LIRC_STRIM_MASK)
-
-/*!
- * @}
- */ /* end of group MCG_Register_Masks */
-
-
-/* MCG - Peripheral instance base addresses */
-/** Peripheral MCG base address */
-#define MCG_BASE                                 (0x40064000u)
-/** Peripheral MCG base pointer */
-#define MCG                                      ((MCG_Type *)MCG_BASE)
-#define MCG_BASE_PTR                             (MCG)
-/** Array initializer of MCG peripheral base addresses */
-#define MCG_BASE_ADDRS                           { MCG_BASE }
-/** Array initializer of MCG peripheral base pointers */
-#define MCG_BASE_PTRS                            { MCG }
-
-/* ----------------------------------------------------------------------------
-   -- MCG - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MCG_Register_Accessor_Macros MCG - Register accessor macros
- * @{
- */
-
-
-/* MCG - Register instance definitions */
-/* MCG */
-#define MCG_C1                                   MCG_C1_REG(MCG)
-#define MCG_C2                                   MCG_C2_REG(MCG)
-#define MCG_S                                    MCG_S_REG(MCG)
-#define MCG_SC                                   MCG_SC_REG(MCG)
-#define MCG_HCTRIM                               MCG_HCTRIM_REG(MCG)
-#define MCG_HTTRIM                               MCG_HTTRIM_REG(MCG)
-#define MCG_HFTRIM                               MCG_HFTRIM_REG(MCG)
-#define MCG_MC                                   MCG_MC_REG(MCG)
-#define MCG_LTRIMRNG                             MCG_LTRIMRNG_REG(MCG)
-#define MCG_LFTRIM                               MCG_LFTRIM_REG(MCG)
-#define MCG_LSTRIM                               MCG_LSTRIM_REG(MCG)
-
-/*!
- * @}
- */ /* end of group MCG_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group MCG_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- MCM Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MCM_Peripheral_Access_Layer MCM Peripheral Access Layer
- * @{
- */
-
-/** MCM - Register Layout Typedef */
-typedef struct {
-       uint8_t RESERVED_0[8];
-  __I  uint16_t PLASC;                             /**< Crossbar Switch (AXBS) Slave Configuration, offset: 0x8 */
-  __I  uint16_t PLAMC;                             /**< Crossbar Switch (AXBS) Master Configuration, offset: 0xA */
-  __IO uint32_t PLACR;                             /**< Platform Control Register, offset: 0xC */
-       uint8_t RESERVED_1[48];
-  __IO uint32_t CPO;                               /**< Compute Operation Control Register, offset: 0x40 */
-} MCM_Type, *MCM_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- MCM - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MCM_Register_Accessor_Macros MCM - Register accessor macros
- * @{
- */
-
-
-/* MCM - Register accessors */
-#define MCM_PLASC_REG(base)                      ((base)->PLASC)
-#define MCM_PLAMC_REG(base)                      ((base)->PLAMC)
-#define MCM_PLACR_REG(base)                      ((base)->PLACR)
-#define MCM_CPO_REG(base)                        ((base)->CPO)
-
-/*!
- * @}
- */ /* end of group MCM_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- MCM Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MCM_Register_Masks MCM Register Masks
- * @{
- */
-
-/* PLASC Bit Fields */
-#define MCM_PLASC_ASC_MASK                       0xFFu
-#define MCM_PLASC_ASC_SHIFT                      0
-#define MCM_PLASC_ASC(x)                         (((uint16_t)(((uint16_t)(x))<<MCM_PLASC_ASC_SHIFT))&MCM_PLASC_ASC_MASK)
-/* PLAMC Bit Fields */
-#define MCM_PLAMC_AMC_MASK                       0xFFu
-#define MCM_PLAMC_AMC_SHIFT                      0
-#define MCM_PLAMC_AMC(x)                         (((uint16_t)(((uint16_t)(x))<<MCM_PLAMC_AMC_SHIFT))&MCM_PLAMC_AMC_MASK)
-/* PLACR Bit Fields */
-#define MCM_PLACR_ARB_MASK                       0x200u
-#define MCM_PLACR_ARB_SHIFT                      9
-#define MCM_PLACR_CFCC_MASK                      0x400u
-#define MCM_PLACR_CFCC_SHIFT                     10
-#define MCM_PLACR_DFCDA_MASK                     0x800u
-#define MCM_PLACR_DFCDA_SHIFT                    11
-#define MCM_PLACR_DFCIC_MASK                     0x1000u
-#define MCM_PLACR_DFCIC_SHIFT                    12
-#define MCM_PLACR_DFCC_MASK                      0x2000u
-#define MCM_PLACR_DFCC_SHIFT                     13
-#define MCM_PLACR_EFDS_MASK                      0x4000u
-#define MCM_PLACR_EFDS_SHIFT                     14
-#define MCM_PLACR_DFCS_MASK                      0x8000u
-#define MCM_PLACR_DFCS_SHIFT                     15
-#define MCM_PLACR_ESFC_MASK                      0x10000u
-#define MCM_PLACR_ESFC_SHIFT                     16
-/* CPO Bit Fields */
-#define MCM_CPO_CPOREQ_MASK                      0x1u
-#define MCM_CPO_CPOREQ_SHIFT                     0
-#define MCM_CPO_CPOACK_MASK                      0x2u
-#define MCM_CPO_CPOACK_SHIFT                     1
-#define MCM_CPO_CPOWOI_MASK                      0x4u
-#define MCM_CPO_CPOWOI_SHIFT                     2
-
-/*!
- * @}
- */ /* end of group MCM_Register_Masks */
-
-
-/* MCM - Peripheral instance base addresses */
-/** Peripheral MCM base address */
-#define MCM_BASE                                 (0xF0003000u)
-/** Peripheral MCM base pointer */
-#define MCM                                      ((MCM_Type *)MCM_BASE)
-#define MCM_BASE_PTR                             (MCM)
-/** Array initializer of MCM peripheral base addresses */
-#define MCM_BASE_ADDRS                           { MCM_BASE }
-/** Array initializer of MCM peripheral base pointers */
-#define MCM_BASE_PTRS                            { MCM }
-
-/* ----------------------------------------------------------------------------
-   -- MCM - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MCM_Register_Accessor_Macros MCM - Register accessor macros
- * @{
- */
-
-
-/* MCM - Register instance definitions */
-/* MCM */
-#define MCM_PLASC                                MCM_PLASC_REG(MCM)
-#define MCM_PLAMC                                MCM_PLAMC_REG(MCM)
-#define MCM_PLACR                                MCM_PLACR_REG(MCM)
-#define MCM_CPO                                  MCM_CPO_REG(MCM)
-
-/*!
- * @}
- */ /* end of group MCM_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group MCM_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- MTB Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MTB_Peripheral_Access_Layer MTB Peripheral Access Layer
- * @{
- */
-
-/** MTB - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t POSITION;                          /**< MTB Position Register, offset: 0x0 */
-  __IO uint32_t MASTER;                            /**< MTB Master Register, offset: 0x4 */
-  __IO uint32_t FLOW;                              /**< MTB Flow Register, offset: 0x8 */
-  __I  uint32_t BASE;                              /**< MTB Base Register, offset: 0xC */
-       uint8_t RESERVED_0[3824];
-  __I  uint32_t MODECTRL;                          /**< Integration Mode Control Register, offset: 0xF00 */
-       uint8_t RESERVED_1[156];
-  __I  uint32_t TAGSET;                            /**< Claim TAG Set Register, offset: 0xFA0 */
-  __I  uint32_t TAGCLEAR;                          /**< Claim TAG Clear Register, offset: 0xFA4 */
-       uint8_t RESERVED_2[8];
-  __I  uint32_t LOCKACCESS;                        /**< Lock Access Register, offset: 0xFB0 */
-  __I  uint32_t LOCKSTAT;                          /**< Lock Status Register, offset: 0xFB4 */
-  __I  uint32_t AUTHSTAT;                          /**< Authentication Status Register, offset: 0xFB8 */
-  __I  uint32_t DEVICEARCH;                        /**< Device Architecture Register, offset: 0xFBC */
-       uint8_t RESERVED_3[8];
-  __I  uint32_t DEVICECFG;                         /**< Device Configuration Register, offset: 0xFC8 */
-  __I  uint32_t DEVICETYPID;                       /**< Device Type Identifier Register, offset: 0xFCC */
-  __I  uint32_t PERIPHID[8];                       /**< Peripheral ID Register, array offset: 0xFD0, array step: 0x4 */
-  __I  uint32_t COMPID[4];                         /**< Component ID Register, array offset: 0xFF0, array step: 0x4 */
-} MTB_Type, *MTB_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- MTB - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MTB_Register_Accessor_Macros MTB - Register accessor macros
- * @{
- */
-
-
-/* MTB - Register accessors */
-#define MTB_POSITION_REG(base)                   ((base)->POSITION)
-#define MTB_MASTER_REG(base)                     ((base)->MASTER)
-#define MTB_FLOW_REG(base)                       ((base)->FLOW)
-#define MTB_BASE_REG(base)                       ((base)->BASE)
-#define MTB_MODECTRL_REG(base)                   ((base)->MODECTRL)
-#define MTB_TAGSET_REG(base)                     ((base)->TAGSET)
-#define MTB_TAGCLEAR_REG(base)                   ((base)->TAGCLEAR)
-#define MTB_LOCKACCESS_REG(base)                 ((base)->LOCKACCESS)
-#define MTB_LOCKSTAT_REG(base)                   ((base)->LOCKSTAT)
-#define MTB_AUTHSTAT_REG(base)                   ((base)->AUTHSTAT)
-#define MTB_DEVICEARCH_REG(base)                 ((base)->DEVICEARCH)
-#define MTB_DEVICECFG_REG(base)                  ((base)->DEVICECFG)
-#define MTB_DEVICETYPID_REG(base)                ((base)->DEVICETYPID)
-#define MTB_PERIPHID_REG(base,index)             ((base)->PERIPHID[index])
-#define MTB_COMPID_REG(base,index)               ((base)->COMPID[index])
-
-/*!
- * @}
- */ /* end of group MTB_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- MTB Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MTB_Register_Masks MTB Register Masks
- * @{
- */
-
-/* POSITION Bit Fields */
-#define MTB_POSITION_WRAP_MASK                   0x4u
-#define MTB_POSITION_WRAP_SHIFT                  2
-#define MTB_POSITION_POINTER_MASK                0xFFFFFFF8u
-#define MTB_POSITION_POINTER_SHIFT               3
-#define MTB_POSITION_POINTER(x)                  (((uint32_t)(((uint32_t)(x))<<MTB_POSITION_POINTER_SHIFT))&MTB_POSITION_POINTER_MASK)
-/* MASTER Bit Fields */
-#define MTB_MASTER_MASK_MASK                     0x1Fu
-#define MTB_MASTER_MASK_SHIFT                    0
-#define MTB_MASTER_MASK(x)                       (((uint32_t)(((uint32_t)(x))<<MTB_MASTER_MASK_SHIFT))&MTB_MASTER_MASK_MASK)
-#define MTB_MASTER_TSTARTEN_MASK                 0x20u
-#define MTB_MASTER_TSTARTEN_SHIFT                5
-#define MTB_MASTER_TSTOPEN_MASK                  0x40u
-#define MTB_MASTER_TSTOPEN_SHIFT                 6
-#define MTB_MASTER_SFRWPRIV_MASK                 0x80u
-#define MTB_MASTER_SFRWPRIV_SHIFT                7
-#define MTB_MASTER_RAMPRIV_MASK                  0x100u
-#define MTB_MASTER_RAMPRIV_SHIFT                 8
-#define MTB_MASTER_HALTREQ_MASK                  0x200u
-#define MTB_MASTER_HALTREQ_SHIFT                 9
-#define MTB_MASTER_EN_MASK                       0x80000000u
-#define MTB_MASTER_EN_SHIFT                      31
-/* FLOW Bit Fields */
-#define MTB_FLOW_AUTOSTOP_MASK                   0x1u
-#define MTB_FLOW_AUTOSTOP_SHIFT                  0
-#define MTB_FLOW_AUTOHALT_MASK                   0x2u
-#define MTB_FLOW_AUTOHALT_SHIFT                  1
-#define MTB_FLOW_WATERMARK_MASK                  0xFFFFFFF8u
-#define MTB_FLOW_WATERMARK_SHIFT                 3
-#define MTB_FLOW_WATERMARK(x)                    (((uint32_t)(((uint32_t)(x))<<MTB_FLOW_WATERMARK_SHIFT))&MTB_FLOW_WATERMARK_MASK)
-/* BASE Bit Fields */
-#define MTB_BASE_BASEADDR_MASK                   0xFFFFFFFFu
-#define MTB_BASE_BASEADDR_SHIFT                  0
-#define MTB_BASE_BASEADDR(x)                     (((uint32_t)(((uint32_t)(x))<<MTB_BASE_BASEADDR_SHIFT))&MTB_BASE_BASEADDR_MASK)
-/* MODECTRL Bit Fields */
-#define MTB_MODECTRL_MODECTRL_MASK               0xFFFFFFFFu
-#define MTB_MODECTRL_MODECTRL_SHIFT              0
-#define MTB_MODECTRL_MODECTRL(x)                 (((uint32_t)(((uint32_t)(x))<<MTB_MODECTRL_MODECTRL_SHIFT))&MTB_MODECTRL_MODECTRL_MASK)
-/* TAGSET Bit Fields */
-#define MTB_TAGSET_TAGSET_MASK                   0xFFFFFFFFu
-#define MTB_TAGSET_TAGSET_SHIFT                  0
-#define MTB_TAGSET_TAGSET(x)                     (((uint32_t)(((uint32_t)(x))<<MTB_TAGSET_TAGSET_SHIFT))&MTB_TAGSET_TAGSET_MASK)
-/* TAGCLEAR Bit Fields */
-#define MTB_TAGCLEAR_TAGCLEAR_MASK               0xFFFFFFFFu
-#define MTB_TAGCLEAR_TAGCLEAR_SHIFT              0
-#define MTB_TAGCLEAR_TAGCLEAR(x)                 (((uint32_t)(((uint32_t)(x))<<MTB_TAGCLEAR_TAGCLEAR_SHIFT))&MTB_TAGCLEAR_TAGCLEAR_MASK)
-/* LOCKACCESS Bit Fields */
-#define MTB_LOCKACCESS_LOCKACCESS_MASK           0xFFFFFFFFu
-#define MTB_LOCKACCESS_LOCKACCESS_SHIFT          0
-#define MTB_LOCKACCESS_LOCKACCESS(x)             (((uint32_t)(((uint32_t)(x))<<MTB_LOCKACCESS_LOCKACCESS_SHIFT))&MTB_LOCKACCESS_LOCKACCESS_MASK)
-/* LOCKSTAT Bit Fields */
-#define MTB_LOCKSTAT_LOCKSTAT_MASK               0xFFFFFFFFu
-#define MTB_LOCKSTAT_LOCKSTAT_SHIFT              0
-#define MTB_LOCKSTAT_LOCKSTAT(x)                 (((uint32_t)(((uint32_t)(x))<<MTB_LOCKSTAT_LOCKSTAT_SHIFT))&MTB_LOCKSTAT_LOCKSTAT_MASK)
-/* AUTHSTAT Bit Fields */
-#define MTB_AUTHSTAT_BIT0_MASK                   0x1u
-#define MTB_AUTHSTAT_BIT0_SHIFT                  0
-#define MTB_AUTHSTAT_BIT1_MASK                   0x2u
-#define MTB_AUTHSTAT_BIT1_SHIFT                  1
-#define MTB_AUTHSTAT_BIT2_MASK                   0x4u
-#define MTB_AUTHSTAT_BIT2_SHIFT                  2
-#define MTB_AUTHSTAT_BIT3_MASK                   0x8u
-#define MTB_AUTHSTAT_BIT3_SHIFT                  3
-/* DEVICEARCH Bit Fields */
-#define MTB_DEVICEARCH_DEVICEARCH_MASK           0xFFFFFFFFu
-#define MTB_DEVICEARCH_DEVICEARCH_SHIFT          0
-#define MTB_DEVICEARCH_DEVICEARCH(x)             (((uint32_t)(((uint32_t)(x))<<MTB_DEVICEARCH_DEVICEARCH_SHIFT))&MTB_DEVICEARCH_DEVICEARCH_MASK)
-/* DEVICECFG Bit Fields */
-#define MTB_DEVICECFG_DEVICECFG_MASK             0xFFFFFFFFu
-#define MTB_DEVICECFG_DEVICECFG_SHIFT            0
-#define MTB_DEVICECFG_DEVICECFG(x)               (((uint32_t)(((uint32_t)(x))<<MTB_DEVICECFG_DEVICECFG_SHIFT))&MTB_DEVICECFG_DEVICECFG_MASK)
-/* DEVICETYPID Bit Fields */
-#define MTB_DEVICETYPID_DEVICETYPID_MASK         0xFFFFFFFFu
-#define MTB_DEVICETYPID_DEVICETYPID_SHIFT        0
-#define MTB_DEVICETYPID_DEVICETYPID(x)           (((uint32_t)(((uint32_t)(x))<<MTB_DEVICETYPID_DEVICETYPID_SHIFT))&MTB_DEVICETYPID_DEVICETYPID_MASK)
-/* PERIPHID Bit Fields */
-#define MTB_PERIPHID_PERIPHID_MASK               0xFFFFFFFFu
-#define MTB_PERIPHID_PERIPHID_SHIFT              0
-#define MTB_PERIPHID_PERIPHID(x)                 (((uint32_t)(((uint32_t)(x))<<MTB_PERIPHID_PERIPHID_SHIFT))&MTB_PERIPHID_PERIPHID_MASK)
-/* COMPID Bit Fields */
-#define MTB_COMPID_COMPID_MASK                   0xFFFFFFFFu
-#define MTB_COMPID_COMPID_SHIFT                  0
-#define MTB_COMPID_COMPID(x)                     (((uint32_t)(((uint32_t)(x))<<MTB_COMPID_COMPID_SHIFT))&MTB_COMPID_COMPID_MASK)
-
-/*!
- * @}
- */ /* end of group MTB_Register_Masks */
-
-
-/* MTB - Peripheral instance base addresses */
-/** Peripheral MTB base address */
-#define MTB_BASE                                 (0xF0000000u)
-/** Peripheral MTB base pointer */
-#define MTB                                      ((MTB_Type *)MTB_BASE)
-#define MTB_BASE_PTR                             (MTB)
-/** Array initializer of MTB peripheral base addresses */
-#define MTB_BASE_ADDRS                           { MTB_BASE }
-/** Array initializer of MTB peripheral base pointers */
-#define MTB_BASE_PTRS                            { MTB }
-
-/* ----------------------------------------------------------------------------
-   -- MTB - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MTB_Register_Accessor_Macros MTB - Register accessor macros
- * @{
- */
-
-
-/* MTB - Register instance definitions */
-/* MTB */
-#define MTB_POSITION                             MTB_POSITION_REG(MTB)
-#define MTB_MASTER                               MTB_MASTER_REG(MTB)
-#define MTB_FLOW                                 MTB_FLOW_REG(MTB)
-#define MTB_BASEr                                MTB_BASE_REG(MTB)
-#define MTB_MODECTRL                             MTB_MODECTRL_REG(MTB)
-#define MTB_TAGSET                               MTB_TAGSET_REG(MTB)
-#define MTB_TAGCLEAR                             MTB_TAGCLEAR_REG(MTB)
-#define MTB_LOCKACCESS                           MTB_LOCKACCESS_REG(MTB)
-#define MTB_LOCKSTAT                             MTB_LOCKSTAT_REG(MTB)
-#define MTB_AUTHSTAT                             MTB_AUTHSTAT_REG(MTB)
-#define MTB_DEVICEARCH                           MTB_DEVICEARCH_REG(MTB)
-#define MTB_DEVICECFG                            MTB_DEVICECFG_REG(MTB)
-#define MTB_DEVICETYPID                          MTB_DEVICETYPID_REG(MTB)
-#define MTB_PERIPHID4                            MTB_PERIPHID_REG(MTB,0)
-#define MTB_PERIPHID5                            MTB_PERIPHID_REG(MTB,1)
-#define MTB_PERIPHID6                            MTB_PERIPHID_REG(MTB,2)
-#define MTB_PERIPHID7                            MTB_PERIPHID_REG(MTB,3)
-#define MTB_PERIPHID0                            MTB_PERIPHID_REG(MTB,4)
-#define MTB_PERIPHID1                            MTB_PERIPHID_REG(MTB,5)
-#define MTB_PERIPHID2                            MTB_PERIPHID_REG(MTB,6)
-#define MTB_PERIPHID3                            MTB_PERIPHID_REG(MTB,7)
-#define MTB_COMPID0                              MTB_COMPID_REG(MTB,0)
-#define MTB_COMPID1                              MTB_COMPID_REG(MTB,1)
-#define MTB_COMPID2                              MTB_COMPID_REG(MTB,2)
-#define MTB_COMPID3                              MTB_COMPID_REG(MTB,3)
-
-/* MTB - Register array accessors */
-#define MTB_PERIPHID(index)                      MTB_PERIPHID_REG(MTB,index)
-#define MTB_COMPID(index)                        MTB_COMPID_REG(MTB,index)
-
-/*!
- * @}
- */ /* end of group MTB_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group MTB_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- MTBDWT Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MTBDWT_Peripheral_Access_Layer MTBDWT Peripheral Access Layer
- * @{
- */
-
-/** MTBDWT - Register Layout Typedef */
-typedef struct {
-  __I  uint32_t CTRL;                              /**< MTB DWT Control Register, offset: 0x0 */
-       uint8_t RESERVED_0[28];
-  struct {                                         /* offset: 0x20, array step: 0x10 */
-    __IO uint32_t COMP;                              /**< MTB_DWT Comparator Register, array offset: 0x20, array step: 0x10 */
-    __IO uint32_t MASK;                              /**< MTB_DWT Comparator Mask Register, array offset: 0x24, array step: 0x10 */
-    __IO uint32_t FCT;                               /**< MTB_DWT Comparator Function Register 0..MTB_DWT Comparator Function Register 1, array offset: 0x28, array step: 0x10 */
-         uint8_t RESERVED_0[4];
-  } COMPARATOR[2];
-       uint8_t RESERVED_1[448];
-  __IO uint32_t TBCTRL;                            /**< MTB_DWT Trace Buffer Control Register, offset: 0x200 */
-       uint8_t RESERVED_2[3524];
-  __I  uint32_t DEVICECFG;                         /**< Device Configuration Register, offset: 0xFC8 */
-  __I  uint32_t DEVICETYPID;                       /**< Device Type Identifier Register, offset: 0xFCC */
-  __I  uint32_t PERIPHID[8];                       /**< Peripheral ID Register, array offset: 0xFD0, array step: 0x4 */
-  __I  uint32_t COMPID[4];                         /**< Component ID Register, array offset: 0xFF0, array step: 0x4 */
-} MTBDWT_Type, *MTBDWT_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- MTBDWT - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MTBDWT_Register_Accessor_Macros MTBDWT - Register accessor macros
- * @{
- */
-
-
-/* MTBDWT - Register accessors */
-#define MTBDWT_CTRL_REG(base)                    ((base)->CTRL)
-#define MTBDWT_COMP_REG(base,index)              ((base)->COMPARATOR[index].COMP)
-#define MTBDWT_MASK_REG(base,index)              ((base)->COMPARATOR[index].MASK)
-#define MTBDWT_FCT_REG(base,index)               ((base)->COMPARATOR[index].FCT)
-#define MTBDWT_TBCTRL_REG(base)                  ((base)->TBCTRL)
-#define MTBDWT_DEVICECFG_REG(base)               ((base)->DEVICECFG)
-#define MTBDWT_DEVICETYPID_REG(base)             ((base)->DEVICETYPID)
-#define MTBDWT_PERIPHID_REG(base,index)          ((base)->PERIPHID[index])
-#define MTBDWT_COMPID_REG(base,index)            ((base)->COMPID[index])
-
-/*!
- * @}
- */ /* end of group MTBDWT_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- MTBDWT Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MTBDWT_Register_Masks MTBDWT Register Masks
- * @{
- */
-
-/* CTRL Bit Fields */
-#define MTBDWT_CTRL_DWTCFGCTRL_MASK              0xFFFFFFFu
-#define MTBDWT_CTRL_DWTCFGCTRL_SHIFT             0
-#define MTBDWT_CTRL_DWTCFGCTRL(x)                (((uint32_t)(((uint32_t)(x))<<MTBDWT_CTRL_DWTCFGCTRL_SHIFT))&MTBDWT_CTRL_DWTCFGCTRL_MASK)
-#define MTBDWT_CTRL_NUMCMP_MASK                  0xF0000000u
-#define MTBDWT_CTRL_NUMCMP_SHIFT                 28
-#define MTBDWT_CTRL_NUMCMP(x)                    (((uint32_t)(((uint32_t)(x))<<MTBDWT_CTRL_NUMCMP_SHIFT))&MTBDWT_CTRL_NUMCMP_MASK)
-/* COMP Bit Fields */
-#define MTBDWT_COMP_COMP_MASK                    0xFFFFFFFFu
-#define MTBDWT_COMP_COMP_SHIFT                   0
-#define MTBDWT_COMP_COMP(x)                      (((uint32_t)(((uint32_t)(x))<<MTBDWT_COMP_COMP_SHIFT))&MTBDWT_COMP_COMP_MASK)
-/* MASK Bit Fields */
-#define MTBDWT_MASK_MASK_MASK                    0x1Fu
-#define MTBDWT_MASK_MASK_SHIFT                   0
-#define MTBDWT_MASK_MASK(x)                      (((uint32_t)(((uint32_t)(x))<<MTBDWT_MASK_MASK_SHIFT))&MTBDWT_MASK_MASK_MASK)
-/* FCT Bit Fields */
-#define MTBDWT_FCT_FUNCTION_MASK                 0xFu
-#define MTBDWT_FCT_FUNCTION_SHIFT                0
-#define MTBDWT_FCT_FUNCTION(x)                   (((uint32_t)(((uint32_t)(x))<<MTBDWT_FCT_FUNCTION_SHIFT))&MTBDWT_FCT_FUNCTION_MASK)
-#define MTBDWT_FCT_DATAVMATCH_MASK               0x100u
-#define MTBDWT_FCT_DATAVMATCH_SHIFT              8
-#define MTBDWT_FCT_DATAVSIZE_MASK                0xC00u
-#define MTBDWT_FCT_DATAVSIZE_SHIFT               10
-#define MTBDWT_FCT_DATAVSIZE(x)                  (((uint32_t)(((uint32_t)(x))<<MTBDWT_FCT_DATAVSIZE_SHIFT))&MTBDWT_FCT_DATAVSIZE_MASK)
-#define MTBDWT_FCT_DATAVADDR0_MASK               0xF000u
-#define MTBDWT_FCT_DATAVADDR0_SHIFT              12
-#define MTBDWT_FCT_DATAVADDR0(x)                 (((uint32_t)(((uint32_t)(x))<<MTBDWT_FCT_DATAVADDR0_SHIFT))&MTBDWT_FCT_DATAVADDR0_MASK)
-#define MTBDWT_FCT_MATCHED_MASK                  0x1000000u
-#define MTBDWT_FCT_MATCHED_SHIFT                 24
-/* TBCTRL Bit Fields */
-#define MTBDWT_TBCTRL_ACOMP0_MASK                0x1u
-#define MTBDWT_TBCTRL_ACOMP0_SHIFT               0
-#define MTBDWT_TBCTRL_ACOMP1_MASK                0x2u
-#define MTBDWT_TBCTRL_ACOMP1_SHIFT               1
-#define MTBDWT_TBCTRL_NUMCOMP_MASK               0xF0000000u
-#define MTBDWT_TBCTRL_NUMCOMP_SHIFT              28
-#define MTBDWT_TBCTRL_NUMCOMP(x)                 (((uint32_t)(((uint32_t)(x))<<MTBDWT_TBCTRL_NUMCOMP_SHIFT))&MTBDWT_TBCTRL_NUMCOMP_MASK)
-/* DEVICECFG Bit Fields */
-#define MTBDWT_DEVICECFG_DEVICECFG_MASK          0xFFFFFFFFu
-#define MTBDWT_DEVICECFG_DEVICECFG_SHIFT         0
-#define MTBDWT_DEVICECFG_DEVICECFG(x)            (((uint32_t)(((uint32_t)(x))<<MTBDWT_DEVICECFG_DEVICECFG_SHIFT))&MTBDWT_DEVICECFG_DEVICECFG_MASK)
-/* DEVICETYPID Bit Fields */
-#define MTBDWT_DEVICETYPID_DEVICETYPID_MASK      0xFFFFFFFFu
-#define MTBDWT_DEVICETYPID_DEVICETYPID_SHIFT     0
-#define MTBDWT_DEVICETYPID_DEVICETYPID(x)        (((uint32_t)(((uint32_t)(x))<<MTBDWT_DEVICETYPID_DEVICETYPID_SHIFT))&MTBDWT_DEVICETYPID_DEVICETYPID_MASK)
-/* PERIPHID Bit Fields */
-#define MTBDWT_PERIPHID_PERIPHID_MASK            0xFFFFFFFFu
-#define MTBDWT_PERIPHID_PERIPHID_SHIFT           0
-#define MTBDWT_PERIPHID_PERIPHID(x)              (((uint32_t)(((uint32_t)(x))<<MTBDWT_PERIPHID_PERIPHID_SHIFT))&MTBDWT_PERIPHID_PERIPHID_MASK)
-/* COMPID Bit Fields */
-#define MTBDWT_COMPID_COMPID_MASK                0xFFFFFFFFu
-#define MTBDWT_COMPID_COMPID_SHIFT               0
-#define MTBDWT_COMPID_COMPID(x)                  (((uint32_t)(((uint32_t)(x))<<MTBDWT_COMPID_COMPID_SHIFT))&MTBDWT_COMPID_COMPID_MASK)
-
-/*!
- * @}
- */ /* end of group MTBDWT_Register_Masks */
-
-
-/* MTBDWT - Peripheral instance base addresses */
-/** Peripheral MTBDWT base address */
-#define MTBDWT_BASE                              (0xF0001000u)
-/** Peripheral MTBDWT base pointer */
-#define MTBDWT                                   ((MTBDWT_Type *)MTBDWT_BASE)
-#define MTBDWT_BASE_PTR                          (MTBDWT)
-/** Array initializer of MTBDWT peripheral base addresses */
-#define MTBDWT_BASE_ADDRS                        { MTBDWT_BASE }
-/** Array initializer of MTBDWT peripheral base pointers */
-#define MTBDWT_BASE_PTRS                         { MTBDWT }
-
-/* ----------------------------------------------------------------------------
-   -- MTBDWT - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup MTBDWT_Register_Accessor_Macros MTBDWT - Register accessor macros
- * @{
- */
-
-
-/* MTBDWT - Register instance definitions */
-/* MTBDWT */
-#define MTBDWT_CTRL                              MTBDWT_CTRL_REG(MTBDWT)
-#define MTBDWT_COMP0                             MTBDWT_COMP_REG(MTBDWT,0)
-#define MTBDWT_MASK0                             MTBDWT_MASK_REG(MTBDWT,0)
-#define MTBDWT_FCT0                              MTBDWT_FCT_REG(MTBDWT,0)
-#define MTBDWT_COMP1                             MTBDWT_COMP_REG(MTBDWT,1)
-#define MTBDWT_MASK1                             MTBDWT_MASK_REG(MTBDWT,1)
-#define MTBDWT_FCT1                              MTBDWT_FCT_REG(MTBDWT,1)
-#define MTBDWT_TBCTRL                            MTBDWT_TBCTRL_REG(MTBDWT)
-#define MTBDWT_DEVICECFG                         MTBDWT_DEVICECFG_REG(MTBDWT)
-#define MTBDWT_DEVICETYPID                       MTBDWT_DEVICETYPID_REG(MTBDWT)
-#define MTBDWT_PERIPHID4                         MTBDWT_PERIPHID_REG(MTBDWT,0)
-#define MTBDWT_PERIPHID5                         MTBDWT_PERIPHID_REG(MTBDWT,1)
-#define MTBDWT_PERIPHID6                         MTBDWT_PERIPHID_REG(MTBDWT,2)
-#define MTBDWT_PERIPHID7                         MTBDWT_PERIPHID_REG(MTBDWT,3)
-#define MTBDWT_PERIPHID0                         MTBDWT_PERIPHID_REG(MTBDWT,4)
-#define MTBDWT_PERIPHID1                         MTBDWT_PERIPHID_REG(MTBDWT,5)
-#define MTBDWT_PERIPHID2                         MTBDWT_PERIPHID_REG(MTBDWT,6)
-#define MTBDWT_PERIPHID3                         MTBDWT_PERIPHID_REG(MTBDWT,7)
-#define MTBDWT_COMPID0                           MTBDWT_COMPID_REG(MTBDWT,0)
-#define MTBDWT_COMPID1                           MTBDWT_COMPID_REG(MTBDWT,1)
-#define MTBDWT_COMPID2                           MTBDWT_COMPID_REG(MTBDWT,2)
-#define MTBDWT_COMPID3                           MTBDWT_COMPID_REG(MTBDWT,3)
-
-/* MTBDWT - Register array accessors */
-#define MTBDWT_COMP(index)                       MTBDWT_COMP_REG(MTBDWT,index)
-#define MTBDWT_MASK(index)                       MTBDWT_MASK_REG(MTBDWT,index)
-#define MTBDWT_FCT(index)                        MTBDWT_FCT_REG(MTBDWT,index)
-#define MTBDWT_PERIPHID(index)                   MTBDWT_PERIPHID_REG(MTBDWT,index)
-#define MTBDWT_COMPID(index)                     MTBDWT_COMPID_REG(MTBDWT,index)
-
-/*!
- * @}
- */ /* end of group MTBDWT_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group MTBDWT_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- NV Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup NV_Peripheral_Access_Layer NV Peripheral Access Layer
- * @{
- */
-
-/** NV - Register Layout Typedef */
-typedef struct {
-  __I  uint8_t BACKKEY3;                           /**< Backdoor Comparison Key 3., offset: 0x0 */
-  __I  uint8_t BACKKEY2;                           /**< Backdoor Comparison Key 2., offset: 0x1 */
-  __I  uint8_t BACKKEY1;                           /**< Backdoor Comparison Key 1., offset: 0x2 */
-  __I  uint8_t BACKKEY0;                           /**< Backdoor Comparison Key 0., offset: 0x3 */
-  __I  uint8_t BACKKEY7;                           /**< Backdoor Comparison Key 7., offset: 0x4 */
-  __I  uint8_t BACKKEY6;                           /**< Backdoor Comparison Key 6., offset: 0x5 */
-  __I  uint8_t BACKKEY5;                           /**< Backdoor Comparison Key 5., offset: 0x6 */
-  __I  uint8_t BACKKEY4;                           /**< Backdoor Comparison Key 4., offset: 0x7 */
-  __I  uint8_t FPROT3;                             /**< Non-volatile P-Flash Protection 1 - Low Register, offset: 0x8 */
-  __I  uint8_t FPROT2;                             /**< Non-volatile P-Flash Protection 1 - High Register, offset: 0x9 */
-  __I  uint8_t FPROT1;                             /**< Non-volatile P-Flash Protection 0 - Low Register, offset: 0xA */
-  __I  uint8_t FPROT0;                             /**< Non-volatile P-Flash Protection 0 - High Register, offset: 0xB */
-  __I  uint8_t FSEC;                               /**< Non-volatile Flash Security Register, offset: 0xC */
-  __I  uint8_t FOPT;                               /**< Non-volatile Flash Option Register, offset: 0xD */
-} NV_Type, *NV_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- NV - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup NV_Register_Accessor_Macros NV - Register accessor macros
- * @{
- */
-
-
-/* NV - Register accessors */
-#define NV_BACKKEY3_REG(base)                    ((base)->BACKKEY3)
-#define NV_BACKKEY2_REG(base)                    ((base)->BACKKEY2)
-#define NV_BACKKEY1_REG(base)                    ((base)->BACKKEY1)
-#define NV_BACKKEY0_REG(base)                    ((base)->BACKKEY0)
-#define NV_BACKKEY7_REG(base)                    ((base)->BACKKEY7)
-#define NV_BACKKEY6_REG(base)                    ((base)->BACKKEY6)
-#define NV_BACKKEY5_REG(base)                    ((base)->BACKKEY5)
-#define NV_BACKKEY4_REG(base)                    ((base)->BACKKEY4)
-#define NV_FPROT3_REG(base)                      ((base)->FPROT3)
-#define NV_FPROT2_REG(base)                      ((base)->FPROT2)
-#define NV_FPROT1_REG(base)                      ((base)->FPROT1)
-#define NV_FPROT0_REG(base)                      ((base)->FPROT0)
-#define NV_FSEC_REG(base)                        ((base)->FSEC)
-#define NV_FOPT_REG(base)                        ((base)->FOPT)
-
-/*!
- * @}
- */ /* end of group NV_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- NV Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup NV_Register_Masks NV Register Masks
- * @{
- */
-
-/* BACKKEY3 Bit Fields */
-#define NV_BACKKEY3_KEY_MASK                     0xFFu
-#define NV_BACKKEY3_KEY_SHIFT                    0
-#define NV_BACKKEY3_KEY(x)                       (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY3_KEY_SHIFT))&NV_BACKKEY3_KEY_MASK)
-/* BACKKEY2 Bit Fields */
-#define NV_BACKKEY2_KEY_MASK                     0xFFu
-#define NV_BACKKEY2_KEY_SHIFT                    0
-#define NV_BACKKEY2_KEY(x)                       (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY2_KEY_SHIFT))&NV_BACKKEY2_KEY_MASK)
-/* BACKKEY1 Bit Fields */
-#define NV_BACKKEY1_KEY_MASK                     0xFFu
-#define NV_BACKKEY1_KEY_SHIFT                    0
-#define NV_BACKKEY1_KEY(x)                       (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY1_KEY_SHIFT))&NV_BACKKEY1_KEY_MASK)
-/* BACKKEY0 Bit Fields */
-#define NV_BACKKEY0_KEY_MASK                     0xFFu
-#define NV_BACKKEY0_KEY_SHIFT                    0
-#define NV_BACKKEY0_KEY(x)                       (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY0_KEY_SHIFT))&NV_BACKKEY0_KEY_MASK)
-/* BACKKEY7 Bit Fields */
-#define NV_BACKKEY7_KEY_MASK                     0xFFu
-#define NV_BACKKEY7_KEY_SHIFT                    0
-#define NV_BACKKEY7_KEY(x)                       (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY7_KEY_SHIFT))&NV_BACKKEY7_KEY_MASK)
-/* BACKKEY6 Bit Fields */
-#define NV_BACKKEY6_KEY_MASK                     0xFFu
-#define NV_BACKKEY6_KEY_SHIFT                    0
-#define NV_BACKKEY6_KEY(x)                       (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY6_KEY_SHIFT))&NV_BACKKEY6_KEY_MASK)
-/* BACKKEY5 Bit Fields */
-#define NV_BACKKEY5_KEY_MASK                     0xFFu
-#define NV_BACKKEY5_KEY_SHIFT                    0
-#define NV_BACKKEY5_KEY(x)                       (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY5_KEY_SHIFT))&NV_BACKKEY5_KEY_MASK)
-/* BACKKEY4 Bit Fields */
-#define NV_BACKKEY4_KEY_MASK                     0xFFu
-#define NV_BACKKEY4_KEY_SHIFT                    0
-#define NV_BACKKEY4_KEY(x)                       (((uint8_t)(((uint8_t)(x))<<NV_BACKKEY4_KEY_SHIFT))&NV_BACKKEY4_KEY_MASK)
-/* FPROT3 Bit Fields */
-#define NV_FPROT3_PROT_MASK                      0xFFu
-#define NV_FPROT3_PROT_SHIFT                     0
-#define NV_FPROT3_PROT(x)                        (((uint8_t)(((uint8_t)(x))<<NV_FPROT3_PROT_SHIFT))&NV_FPROT3_PROT_MASK)
-/* FPROT2 Bit Fields */
-#define NV_FPROT2_PROT_MASK                      0xFFu
-#define NV_FPROT2_PROT_SHIFT                     0
-#define NV_FPROT2_PROT(x)                        (((uint8_t)(((uint8_t)(x))<<NV_FPROT2_PROT_SHIFT))&NV_FPROT2_PROT_MASK)
-/* FPROT1 Bit Fields */
-#define NV_FPROT1_PROT_MASK                      0xFFu
-#define NV_FPROT1_PROT_SHIFT                     0
-#define NV_FPROT1_PROT(x)                        (((uint8_t)(((uint8_t)(x))<<NV_FPROT1_PROT_SHIFT))&NV_FPROT1_PROT_MASK)
-/* FPROT0 Bit Fields */
-#define NV_FPROT0_PROT_MASK                      0xFFu
-#define NV_FPROT0_PROT_SHIFT                     0
-#define NV_FPROT0_PROT(x)                        (((uint8_t)(((uint8_t)(x))<<NV_FPROT0_PROT_SHIFT))&NV_FPROT0_PROT_MASK)
-/* FSEC Bit Fields */
-#define NV_FSEC_SEC_MASK                         0x3u
-#define NV_FSEC_SEC_SHIFT                        0
-#define NV_FSEC_SEC(x)                           (((uint8_t)(((uint8_t)(x))<<NV_FSEC_SEC_SHIFT))&NV_FSEC_SEC_MASK)
-#define NV_FSEC_FSLACC_MASK                      0xCu
-#define NV_FSEC_FSLACC_SHIFT                     2
-#define NV_FSEC_FSLACC(x)                        (((uint8_t)(((uint8_t)(x))<<NV_FSEC_FSLACC_SHIFT))&NV_FSEC_FSLACC_MASK)
-#define NV_FSEC_MEEN_MASK                        0x30u
-#define NV_FSEC_MEEN_SHIFT                       4
-#define NV_FSEC_MEEN(x)                          (((uint8_t)(((uint8_t)(x))<<NV_FSEC_MEEN_SHIFT))&NV_FSEC_MEEN_MASK)
-#define NV_FSEC_KEYEN_MASK                       0xC0u
-#define NV_FSEC_KEYEN_SHIFT                      6
-#define NV_FSEC_KEYEN(x)                         (((uint8_t)(((uint8_t)(x))<<NV_FSEC_KEYEN_SHIFT))&NV_FSEC_KEYEN_MASK)
-/* FOPT Bit Fields */
-#define NV_FOPT_LPBOOT0_MASK                     0x1u
-#define NV_FOPT_LPBOOT0_SHIFT                    0
-#define NV_FOPT_BOOTPIN_OPT_MASK                 0x2u
-#define NV_FOPT_BOOTPIN_OPT_SHIFT                1
-#define NV_FOPT_NMI_DIS_MASK                     0x4u
-#define NV_FOPT_NMI_DIS_SHIFT                    2
-#define NV_FOPT_RESET_PIN_CFG_MASK               0x8u
-#define NV_FOPT_RESET_PIN_CFG_SHIFT              3
-#define NV_FOPT_LPBOOT1_MASK                     0x10u
-#define NV_FOPT_LPBOOT1_SHIFT                    4
-#define NV_FOPT_FAST_INIT_MASK                   0x20u
-#define NV_FOPT_FAST_INIT_SHIFT                  5
-#define NV_FOPT_BOOTSRC_SEL_MASK                 0xC0u
-#define NV_FOPT_BOOTSRC_SEL_SHIFT                6
-#define NV_FOPT_BOOTSRC_SEL(x)                   (((uint8_t)(((uint8_t)(x))<<NV_FOPT_BOOTSRC_SEL_SHIFT))&NV_FOPT_BOOTSRC_SEL_MASK)
-
-/*!
- * @}
- */ /* end of group NV_Register_Masks */
-
-
-/* NV - Peripheral instance base addresses */
-/** Peripheral FTFA_FlashConfig base address */
-#define FTFA_FlashConfig_BASE                    (0x400u)
-/** Peripheral FTFA_FlashConfig base pointer */
-#define FTFA_FlashConfig                         ((NV_Type *)FTFA_FlashConfig_BASE)
-#define FTFA_FlashConfig_BASE_PTR                (FTFA_FlashConfig)
-/** Array initializer of NV peripheral base addresses */
-#define NV_BASE_ADDRS                            { FTFA_FlashConfig_BASE }
-/** Array initializer of NV peripheral base pointers */
-#define NV_BASE_PTRS                             { FTFA_FlashConfig }
-
-/* ----------------------------------------------------------------------------
-   -- NV - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup NV_Register_Accessor_Macros NV - Register accessor macros
- * @{
- */
-
-
-/* NV - Register instance definitions */
-/* FTFA_FlashConfig */
-#define NV_BACKKEY3                              NV_BACKKEY3_REG(FTFA_FlashConfig)
-#define NV_BACKKEY2                              NV_BACKKEY2_REG(FTFA_FlashConfig)
-#define NV_BACKKEY1                              NV_BACKKEY1_REG(FTFA_FlashConfig)
-#define NV_BACKKEY0                              NV_BACKKEY0_REG(FTFA_FlashConfig)
-#define NV_BACKKEY7                              NV_BACKKEY7_REG(FTFA_FlashConfig)
-#define NV_BACKKEY6                              NV_BACKKEY6_REG(FTFA_FlashConfig)
-#define NV_BACKKEY5                              NV_BACKKEY5_REG(FTFA_FlashConfig)
-#define NV_BACKKEY4                              NV_BACKKEY4_REG(FTFA_FlashConfig)
-#define NV_FPROT3                                NV_FPROT3_REG(FTFA_FlashConfig)
-#define NV_FPROT2                                NV_FPROT2_REG(FTFA_FlashConfig)
-#define NV_FPROT1                                NV_FPROT1_REG(FTFA_FlashConfig)
-#define NV_FPROT0                                NV_FPROT0_REG(FTFA_FlashConfig)
-#define NV_FSEC                                  NV_FSEC_REG(FTFA_FlashConfig)
-#define NV_FOPT                                  NV_FOPT_REG(FTFA_FlashConfig)
-
-/*!
- * @}
- */ /* end of group NV_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group NV_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- OSC Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup OSC_Peripheral_Access_Layer OSC Peripheral Access Layer
- * @{
- */
-
-/** OSC - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t CR;                                 /**< OSC Control Register, offset: 0x0 */
-} OSC_Type, *OSC_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- OSC - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup OSC_Register_Accessor_Macros OSC - Register accessor macros
- * @{
- */
-
-
-/* OSC - Register accessors */
-#define OSC_CR_REG(base)                         ((base)->CR)
-
-/*!
- * @}
- */ /* end of group OSC_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- OSC Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup OSC_Register_Masks OSC Register Masks
- * @{
- */
-
-/* CR Bit Fields */
-#define OSC_CR_SC16P_MASK                        0x1u
-#define OSC_CR_SC16P_SHIFT                       0
-#define OSC_CR_SC8P_MASK                         0x2u
-#define OSC_CR_SC8P_SHIFT                        1
-#define OSC_CR_SC4P_MASK                         0x4u
-#define OSC_CR_SC4P_SHIFT                        2
-#define OSC_CR_SC2P_MASK                         0x8u
-#define OSC_CR_SC2P_SHIFT                        3
-#define OSC_CR_EREFSTEN_MASK                     0x20u
-#define OSC_CR_EREFSTEN_SHIFT                    5
-#define OSC_CR_ERCLKEN_MASK                      0x80u
-#define OSC_CR_ERCLKEN_SHIFT                     7
-
-/*!
- * @}
- */ /* end of group OSC_Register_Masks */
-
-
-/* OSC - Peripheral instance base addresses */
-/** Peripheral OSC0 base address */
-#define OSC0_BASE                                (0x40065000u)
-/** Peripheral OSC0 base pointer */
-#define OSC0                                     ((OSC_Type *)OSC0_BASE)
-#define OSC0_BASE_PTR                            (OSC0)
-/** Array initializer of OSC peripheral base addresses */
-#define OSC_BASE_ADDRS                           { OSC0_BASE }
-/** Array initializer of OSC peripheral base pointers */
-#define OSC_BASE_PTRS                            { OSC0 }
-
-/* ----------------------------------------------------------------------------
-   -- OSC - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup OSC_Register_Accessor_Macros OSC - Register accessor macros
- * @{
- */
-
-
-/* OSC - Register instance definitions */
-/* OSC0 */
-#define OSC0_CR                                  OSC_CR_REG(OSC0)
-
-/*!
- * @}
- */ /* end of group OSC_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group OSC_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- PIT Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PIT_Peripheral_Access_Layer PIT Peripheral Access Layer
- * @{
- */
-
-/** PIT - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t MCR;                               /**< PIT Module Control Register, offset: 0x0 */
-       uint8_t RESERVED_0[220];
-  __I  uint32_t LTMR64H;                           /**< PIT Upper Lifetime Timer Register, offset: 0xE0 */
-  __I  uint32_t LTMR64L;                           /**< PIT Lower Lifetime Timer Register, offset: 0xE4 */
-       uint8_t RESERVED_1[24];
-  struct {                                         /* offset: 0x100, array step: 0x10 */
-    __IO uint32_t LDVAL;                             /**< Timer Load Value Register, array offset: 0x100, array step: 0x10 */
-    __I  uint32_t CVAL;                              /**< Current Timer Value Register, array offset: 0x104, array step: 0x10 */
-    __IO uint32_t TCTRL;                             /**< Timer Control Register, array offset: 0x108, array step: 0x10 */
-    __IO uint32_t TFLG;                              /**< Timer Flag Register, array offset: 0x10C, array step: 0x10 */
-  } CHANNEL[2];
-} PIT_Type, *PIT_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- PIT - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PIT_Register_Accessor_Macros PIT - Register accessor macros
- * @{
- */
-
-
-/* PIT - Register accessors */
-#define PIT_MCR_REG(base)                        ((base)->MCR)
-#define PIT_LTMR64H_REG(base)                    ((base)->LTMR64H)
-#define PIT_LTMR64L_REG(base)                    ((base)->LTMR64L)
-#define PIT_LDVAL_REG(base,index)                ((base)->CHANNEL[index].LDVAL)
-#define PIT_CVAL_REG(base,index)                 ((base)->CHANNEL[index].CVAL)
-#define PIT_TCTRL_REG(base,index)                ((base)->CHANNEL[index].TCTRL)
-#define PIT_TFLG_REG(base,index)                 ((base)->CHANNEL[index].TFLG)
-
-/*!
- * @}
- */ /* end of group PIT_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- PIT Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PIT_Register_Masks PIT Register Masks
- * @{
- */
-
-/* MCR Bit Fields */
-#define PIT_MCR_FRZ_MASK                         0x1u
-#define PIT_MCR_FRZ_SHIFT                        0
-#define PIT_MCR_MDIS_MASK                        0x2u
-#define PIT_MCR_MDIS_SHIFT                       1
-/* LTMR64H Bit Fields */
-#define PIT_LTMR64H_LTH_MASK                     0xFFFFFFFFu
-#define PIT_LTMR64H_LTH_SHIFT                    0
-#define PIT_LTMR64H_LTH(x)                       (((uint32_t)(((uint32_t)(x))<<PIT_LTMR64H_LTH_SHIFT))&PIT_LTMR64H_LTH_MASK)
-/* LTMR64L Bit Fields */
-#define PIT_LTMR64L_LTL_MASK                     0xFFFFFFFFu
-#define PIT_LTMR64L_LTL_SHIFT                    0
-#define PIT_LTMR64L_LTL(x)                       (((uint32_t)(((uint32_t)(x))<<PIT_LTMR64L_LTL_SHIFT))&PIT_LTMR64L_LTL_MASK)
-/* LDVAL Bit Fields */
-#define PIT_LDVAL_TSV_MASK                       0xFFFFFFFFu
-#define PIT_LDVAL_TSV_SHIFT                      0
-#define PIT_LDVAL_TSV(x)                         (((uint32_t)(((uint32_t)(x))<<PIT_LDVAL_TSV_SHIFT))&PIT_LDVAL_TSV_MASK)
-/* CVAL Bit Fields */
-#define PIT_CVAL_TVL_MASK                        0xFFFFFFFFu
-#define PIT_CVAL_TVL_SHIFT                       0
-#define PIT_CVAL_TVL(x)                          (((uint32_t)(((uint32_t)(x))<<PIT_CVAL_TVL_SHIFT))&PIT_CVAL_TVL_MASK)
-/* TCTRL Bit Fields */
-#define PIT_TCTRL_TEN_MASK                       0x1u
-#define PIT_TCTRL_TEN_SHIFT                      0
-#define PIT_TCTRL_TIE_MASK                       0x2u
-#define PIT_TCTRL_TIE_SHIFT                      1
-#define PIT_TCTRL_CHN_MASK                       0x4u
-#define PIT_TCTRL_CHN_SHIFT                      2
-/* TFLG Bit Fields */
-#define PIT_TFLG_TIF_MASK                        0x1u
-#define PIT_TFLG_TIF_SHIFT                       0
-
-/*!
- * @}
- */ /* end of group PIT_Register_Masks */
-
-
-/* PIT - Peripheral instance base addresses */
-/** Peripheral PIT base address */
-#define PIT_BASE                                 (0x40037000u)
-/** Peripheral PIT base pointer */
-#define PIT                                      ((PIT_Type *)PIT_BASE)
-#define PIT_BASE_PTR                             (PIT)
-/** Array initializer of PIT peripheral base addresses */
-#define PIT_BASE_ADDRS                           { PIT_BASE }
-/** Array initializer of PIT peripheral base pointers */
-#define PIT_BASE_PTRS                            { PIT }
-/** Interrupt vectors for the PIT peripheral type */
-#define PIT_IRQS                                 { PIT_IRQn, PIT_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- PIT - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PIT_Register_Accessor_Macros PIT - Register accessor macros
- * @{
- */
-
-
-/* PIT - Register instance definitions */
-/* PIT */
-#define PIT_MCR                                  PIT_MCR_REG(PIT)
-#define PIT_LTMR64H                              PIT_LTMR64H_REG(PIT)
-#define PIT_LTMR64L                              PIT_LTMR64L_REG(PIT)
-#define PIT_LDVAL0                               PIT_LDVAL_REG(PIT,0)
-#define PIT_CVAL0                                PIT_CVAL_REG(PIT,0)
-#define PIT_TCTRL0                               PIT_TCTRL_REG(PIT,0)
-#define PIT_TFLG0                                PIT_TFLG_REG(PIT,0)
-#define PIT_LDVAL1                               PIT_LDVAL_REG(PIT,1)
-#define PIT_CVAL1                                PIT_CVAL_REG(PIT,1)
-#define PIT_TCTRL1                               PIT_TCTRL_REG(PIT,1)
-#define PIT_TFLG1                                PIT_TFLG_REG(PIT,1)
-
-/* PIT - Register array accessors */
-#define PIT_LDVAL(index)                         PIT_LDVAL_REG(PIT,index)
-#define PIT_CVAL(index)                          PIT_CVAL_REG(PIT,index)
-#define PIT_TCTRL(index)                         PIT_TCTRL_REG(PIT,index)
-#define PIT_TFLG(index)                          PIT_TFLG_REG(PIT,index)
-
-/*!
- * @}
- */ /* end of group PIT_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group PIT_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- PMC Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PMC_Peripheral_Access_Layer PMC Peripheral Access Layer
- * @{
- */
-
-/** PMC - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t LVDSC1;                             /**< Low Voltage Detect Status And Control 1 register, offset: 0x0 */
-  __IO uint8_t LVDSC2;                             /**< Low Voltage Detect Status And Control 2 register, offset: 0x1 */
-  __IO uint8_t REGSC;                              /**< Regulator Status And Control register, offset: 0x2 */
-} PMC_Type, *PMC_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- PMC - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PMC_Register_Accessor_Macros PMC - Register accessor macros
- * @{
- */
-
-
-/* PMC - Register accessors */
-#define PMC_LVDSC1_REG(base)                     ((base)->LVDSC1)
-#define PMC_LVDSC2_REG(base)                     ((base)->LVDSC2)
-#define PMC_REGSC_REG(base)                      ((base)->REGSC)
-
-/*!
- * @}
- */ /* end of group PMC_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- PMC Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PMC_Register_Masks PMC Register Masks
- * @{
- */
-
-/* LVDSC1 Bit Fields */
-#define PMC_LVDSC1_LVDV_MASK                     0x3u
-#define PMC_LVDSC1_LVDV_SHIFT                    0
-#define PMC_LVDSC1_LVDV(x)                       (((uint8_t)(((uint8_t)(x))<<PMC_LVDSC1_LVDV_SHIFT))&PMC_LVDSC1_LVDV_MASK)
-#define PMC_LVDSC1_LVDRE_MASK                    0x10u
-#define PMC_LVDSC1_LVDRE_SHIFT                   4
-#define PMC_LVDSC1_LVDIE_MASK                    0x20u
-#define PMC_LVDSC1_LVDIE_SHIFT                   5
-#define PMC_LVDSC1_LVDACK_MASK                   0x40u
-#define PMC_LVDSC1_LVDACK_SHIFT                  6
-#define PMC_LVDSC1_LVDF_MASK                     0x80u
-#define PMC_LVDSC1_LVDF_SHIFT                    7
-/* LVDSC2 Bit Fields */
-#define PMC_LVDSC2_LVWV_MASK                     0x3u
-#define PMC_LVDSC2_LVWV_SHIFT                    0
-#define PMC_LVDSC2_LVWV(x)                       (((uint8_t)(((uint8_t)(x))<<PMC_LVDSC2_LVWV_SHIFT))&PMC_LVDSC2_LVWV_MASK)
-#define PMC_LVDSC2_LVWIE_MASK                    0x20u
-#define PMC_LVDSC2_LVWIE_SHIFT                   5
-#define PMC_LVDSC2_LVWACK_MASK                   0x40u
-#define PMC_LVDSC2_LVWACK_SHIFT                  6
-#define PMC_LVDSC2_LVWF_MASK                     0x80u
-#define PMC_LVDSC2_LVWF_SHIFT                    7
-/* REGSC Bit Fields */
-#define PMC_REGSC_BGBE_MASK                      0x1u
-#define PMC_REGSC_BGBE_SHIFT                     0
-#define PMC_REGSC_REGONS_MASK                    0x4u
-#define PMC_REGSC_REGONS_SHIFT                   2
-#define PMC_REGSC_ACKISO_MASK                    0x8u
-#define PMC_REGSC_ACKISO_SHIFT                   3
-#define PMC_REGSC_BGEN_MASK                      0x10u
-#define PMC_REGSC_BGEN_SHIFT                     4
-
-/*!
- * @}
- */ /* end of group PMC_Register_Masks */
-
-
-/* PMC - Peripheral instance base addresses */
-/** Peripheral PMC base address */
-#define PMC_BASE                                 (0x4007D000u)
-/** Peripheral PMC base pointer */
-#define PMC                                      ((PMC_Type *)PMC_BASE)
-#define PMC_BASE_PTR                             (PMC)
-/** Array initializer of PMC peripheral base addresses */
-#define PMC_BASE_ADDRS                           { PMC_BASE }
-/** Array initializer of PMC peripheral base pointers */
-#define PMC_BASE_PTRS                            { PMC }
-/** Interrupt vectors for the PMC peripheral type */
-#define PMC_IRQS                                 { PMC_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- PMC - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PMC_Register_Accessor_Macros PMC - Register accessor macros
- * @{
- */
-
-
-/* PMC - Register instance definitions */
-/* PMC */
-#define PMC_LVDSC1                               PMC_LVDSC1_REG(PMC)
-#define PMC_LVDSC2                               PMC_LVDSC2_REG(PMC)
-#define PMC_REGSC                                PMC_REGSC_REG(PMC)
-
-/*!
- * @}
- */ /* end of group PMC_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group PMC_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- PORT Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PORT_Peripheral_Access_Layer PORT Peripheral Access Layer
- * @{
- */
-
-/** PORT - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t PCR[32];                           /**< Pin Control Register n, array offset: 0x0, array step: 0x4 */
-  __O  uint32_t GPCLR;                             /**< Global Pin Control Low Register, offset: 0x80 */
-  __O  uint32_t GPCHR;                             /**< Global Pin Control High Register, offset: 0x84 */
-       uint8_t RESERVED_0[24];
-  __IO uint32_t ISFR;                              /**< Interrupt Status Flag Register, offset: 0xA0 */
-} PORT_Type, *PORT_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- PORT - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PORT_Register_Accessor_Macros PORT - Register accessor macros
- * @{
- */
-
-
-/* PORT - Register accessors */
-#define PORT_PCR_REG(base,index)                 ((base)->PCR[index])
-#define PORT_GPCLR_REG(base)                     ((base)->GPCLR)
-#define PORT_GPCHR_REG(base)                     ((base)->GPCHR)
-#define PORT_ISFR_REG(base)                      ((base)->ISFR)
-
-/*!
- * @}
- */ /* end of group PORT_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- PORT Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PORT_Register_Masks PORT Register Masks
- * @{
- */
-
-/* PCR Bit Fields */
-#define PORT_PCR_PS_MASK                         0x1u
-#define PORT_PCR_PS_SHIFT                        0
-#define PORT_PCR_PE_MASK                         0x2u
-#define PORT_PCR_PE_SHIFT                        1
-#define PORT_PCR_SRE_MASK                        0x4u
-#define PORT_PCR_SRE_SHIFT                       2
-#define PORT_PCR_PFE_MASK                        0x10u
-#define PORT_PCR_PFE_SHIFT                       4
-#define PORT_PCR_DSE_MASK                        0x40u
-#define PORT_PCR_DSE_SHIFT                       6
-#define PORT_PCR_MUX_MASK                        0x700u
-#define PORT_PCR_MUX_SHIFT                       8
-#define PORT_PCR_MUX(x)                          (((uint32_t)(((uint32_t)(x))<<PORT_PCR_MUX_SHIFT))&PORT_PCR_MUX_MASK)
-#define PORT_PCR_IRQC_MASK                       0xF0000u
-#define PORT_PCR_IRQC_SHIFT                      16
-#define PORT_PCR_IRQC(x)                         (((uint32_t)(((uint32_t)(x))<<PORT_PCR_IRQC_SHIFT))&PORT_PCR_IRQC_MASK)
-#define PORT_PCR_ISF_MASK                        0x1000000u
-#define PORT_PCR_ISF_SHIFT                       24
-/* GPCLR Bit Fields */
-#define PORT_GPCLR_GPWD_MASK                     0xFFFFu
-#define PORT_GPCLR_GPWD_SHIFT                    0
-#define PORT_GPCLR_GPWD(x)                       (((uint32_t)(((uint32_t)(x))<<PORT_GPCLR_GPWD_SHIFT))&PORT_GPCLR_GPWD_MASK)
-#define PORT_GPCLR_GPWE_MASK                     0xFFFF0000u
-#define PORT_GPCLR_GPWE_SHIFT                    16
-#define PORT_GPCLR_GPWE(x)                       (((uint32_t)(((uint32_t)(x))<<PORT_GPCLR_GPWE_SHIFT))&PORT_GPCLR_GPWE_MASK)
-/* GPCHR Bit Fields */
-#define PORT_GPCHR_GPWD_MASK                     0xFFFFu
-#define PORT_GPCHR_GPWD_SHIFT                    0
-#define PORT_GPCHR_GPWD(x)                       (((uint32_t)(((uint32_t)(x))<<PORT_GPCHR_GPWD_SHIFT))&PORT_GPCHR_GPWD_MASK)
-#define PORT_GPCHR_GPWE_MASK                     0xFFFF0000u
-#define PORT_GPCHR_GPWE_SHIFT                    16
-#define PORT_GPCHR_GPWE(x)                       (((uint32_t)(((uint32_t)(x))<<PORT_GPCHR_GPWE_SHIFT))&PORT_GPCHR_GPWE_MASK)
-/* ISFR Bit Fields */
-#define PORT_ISFR_ISF_MASK                       0xFFFFFFFFu
-#define PORT_ISFR_ISF_SHIFT                      0
-#define PORT_ISFR_ISF(x)                         (((uint32_t)(((uint32_t)(x))<<PORT_ISFR_ISF_SHIFT))&PORT_ISFR_ISF_MASK)
-
-/*!
- * @}
- */ /* end of group PORT_Register_Masks */
-
-
-/* PORT - Peripheral instance base addresses */
-/** Peripheral PORTA base address */
-#define PORTA_BASE                               (0x40049000u)
-/** Peripheral PORTA base pointer */
-#define PORTA                                    ((PORT_Type *)PORTA_BASE)
-#define PORTA_BASE_PTR                           (PORTA)
-/** Peripheral PORTB base address */
-#define PORTB_BASE                               (0x4004A000u)
-/** Peripheral PORTB base pointer */
-#define PORTB                                    ((PORT_Type *)PORTB_BASE)
-#define PORTB_BASE_PTR                           (PORTB)
-/** Peripheral PORTC base address */
-#define PORTC_BASE                               (0x4004B000u)
-/** Peripheral PORTC base pointer */
-#define PORTC                                    ((PORT_Type *)PORTC_BASE)
-#define PORTC_BASE_PTR                           (PORTC)
-/** Peripheral PORTD base address */
-#define PORTD_BASE                               (0x4004C000u)
-/** Peripheral PORTD base pointer */
-#define PORTD                                    ((PORT_Type *)PORTD_BASE)
-#define PORTD_BASE_PTR                           (PORTD)
-/** Peripheral PORTE base address */
-#define PORTE_BASE                               (0x4004D000u)
-/** Peripheral PORTE base pointer */
-#define PORTE                                    ((PORT_Type *)PORTE_BASE)
-#define PORTE_BASE_PTR                           (PORTE)
-/** Array initializer of PORT peripheral base addresses */
-#define PORT_BASE_ADDRS                          { PORTA_BASE, PORTB_BASE, PORTC_BASE, PORTD_BASE, PORTE_BASE }
-/** Array initializer of PORT peripheral base pointers */
-#define PORT_BASE_PTRS                           { PORTA, PORTB, PORTC, PORTD, PORTE }
-/** Interrupt vectors for the PORT peripheral type */
-#define PORT_IRQS                                { PORTA_IRQn, NotAvail_IRQn, PORTCD_IRQn, PORTCD_IRQn, NotAvail_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- PORT - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup PORT_Register_Accessor_Macros PORT - Register accessor macros
- * @{
- */
-
-
-/* PORT - Register instance definitions */
-/* PORTA */
-#define PORTA_PCR0                               PORT_PCR_REG(PORTA,0)
-#define PORTA_PCR1                               PORT_PCR_REG(PORTA,1)
-#define PORTA_PCR2                               PORT_PCR_REG(PORTA,2)
-#define PORTA_PCR3                               PORT_PCR_REG(PORTA,3)
-#define PORTA_PCR4                               PORT_PCR_REG(PORTA,4)
-#define PORTA_PCR5                               PORT_PCR_REG(PORTA,5)
-#define PORTA_PCR6                               PORT_PCR_REG(PORTA,6)
-#define PORTA_PCR7                               PORT_PCR_REG(PORTA,7)
-#define PORTA_PCR8                               PORT_PCR_REG(PORTA,8)
-#define PORTA_PCR9                               PORT_PCR_REG(PORTA,9)
-#define PORTA_PCR10                              PORT_PCR_REG(PORTA,10)
-#define PORTA_PCR11                              PORT_PCR_REG(PORTA,11)
-#define PORTA_PCR12                              PORT_PCR_REG(PORTA,12)
-#define PORTA_PCR13                              PORT_PCR_REG(PORTA,13)
-#define PORTA_PCR14                              PORT_PCR_REG(PORTA,14)
-#define PORTA_PCR15                              PORT_PCR_REG(PORTA,15)
-#define PORTA_PCR16                              PORT_PCR_REG(PORTA,16)
-#define PORTA_PCR17                              PORT_PCR_REG(PORTA,17)
-#define PORTA_PCR18                              PORT_PCR_REG(PORTA,18)
-#define PORTA_PCR19                              PORT_PCR_REG(PORTA,19)
-#define PORTA_PCR20                              PORT_PCR_REG(PORTA,20)
-#define PORTA_PCR21                              PORT_PCR_REG(PORTA,21)
-#define PORTA_PCR22                              PORT_PCR_REG(PORTA,22)
-#define PORTA_PCR23                              PORT_PCR_REG(PORTA,23)
-#define PORTA_PCR24                              PORT_PCR_REG(PORTA,24)
-#define PORTA_PCR25                              PORT_PCR_REG(PORTA,25)
-#define PORTA_PCR26                              PORT_PCR_REG(PORTA,26)
-#define PORTA_PCR27                              PORT_PCR_REG(PORTA,27)
-#define PORTA_PCR28                              PORT_PCR_REG(PORTA,28)
-#define PORTA_PCR29                              PORT_PCR_REG(PORTA,29)
-#define PORTA_PCR30                              PORT_PCR_REG(PORTA,30)
-#define PORTA_PCR31                              PORT_PCR_REG(PORTA,31)
-#define PORTA_GPCLR                              PORT_GPCLR_REG(PORTA)
-#define PORTA_GPCHR                              PORT_GPCHR_REG(PORTA)
-#define PORTA_ISFR                               PORT_ISFR_REG(PORTA)
-/* PORTB */
-#define PORTB_PCR0                               PORT_PCR_REG(PORTB,0)
-#define PORTB_PCR1                               PORT_PCR_REG(PORTB,1)
-#define PORTB_PCR2                               PORT_PCR_REG(PORTB,2)
-#define PORTB_PCR3                               PORT_PCR_REG(PORTB,3)
-#define PORTB_PCR4                               PORT_PCR_REG(PORTB,4)
-#define PORTB_PCR5                               PORT_PCR_REG(PORTB,5)
-#define PORTB_PCR6                               PORT_PCR_REG(PORTB,6)
-#define PORTB_PCR7                               PORT_PCR_REG(PORTB,7)
-#define PORTB_PCR8                               PORT_PCR_REG(PORTB,8)
-#define PORTB_PCR9                               PORT_PCR_REG(PORTB,9)
-#define PORTB_PCR10                              PORT_PCR_REG(PORTB,10)
-#define PORTB_PCR11                              PORT_PCR_REG(PORTB,11)
-#define PORTB_PCR12                              PORT_PCR_REG(PORTB,12)
-#define PORTB_PCR13                              PORT_PCR_REG(PORTB,13)
-#define PORTB_PCR14                              PORT_PCR_REG(PORTB,14)
-#define PORTB_PCR15                              PORT_PCR_REG(PORTB,15)
-#define PORTB_PCR16                              PORT_PCR_REG(PORTB,16)
-#define PORTB_PCR17                              PORT_PCR_REG(PORTB,17)
-#define PORTB_PCR18                              PORT_PCR_REG(PORTB,18)
-#define PORTB_PCR19                              PORT_PCR_REG(PORTB,19)
-#define PORTB_PCR20                              PORT_PCR_REG(PORTB,20)
-#define PORTB_PCR21                              PORT_PCR_REG(PORTB,21)
-#define PORTB_PCR22                              PORT_PCR_REG(PORTB,22)
-#define PORTB_PCR23                              PORT_PCR_REG(PORTB,23)
-#define PORTB_PCR24                              PORT_PCR_REG(PORTB,24)
-#define PORTB_PCR25                              PORT_PCR_REG(PORTB,25)
-#define PORTB_PCR26                              PORT_PCR_REG(PORTB,26)
-#define PORTB_PCR27                              PORT_PCR_REG(PORTB,27)
-#define PORTB_PCR28                              PORT_PCR_REG(PORTB,28)
-#define PORTB_PCR29                              PORT_PCR_REG(PORTB,29)
-#define PORTB_PCR30                              PORT_PCR_REG(PORTB,30)
-#define PORTB_PCR31                              PORT_PCR_REG(PORTB,31)
-#define PORTB_GPCLR                              PORT_GPCLR_REG(PORTB)
-#define PORTB_GPCHR                              PORT_GPCHR_REG(PORTB)
-#define PORTB_ISFR                               PORT_ISFR_REG(PORTB)
-/* PORTC */
-#define PORTC_PCR0                               PORT_PCR_REG(PORTC,0)
-#define PORTC_PCR1                               PORT_PCR_REG(PORTC,1)
-#define PORTC_PCR2                               PORT_PCR_REG(PORTC,2)
-#define PORTC_PCR3                               PORT_PCR_REG(PORTC,3)
-#define PORTC_PCR4                               PORT_PCR_REG(PORTC,4)
-#define PORTC_PCR5                               PORT_PCR_REG(PORTC,5)
-#define PORTC_PCR6                               PORT_PCR_REG(PORTC,6)
-#define PORTC_PCR7                               PORT_PCR_REG(PORTC,7)
-#define PORTC_PCR8                               PORT_PCR_REG(PORTC,8)
-#define PORTC_PCR9                               PORT_PCR_REG(PORTC,9)
-#define PORTC_PCR10                              PORT_PCR_REG(PORTC,10)
-#define PORTC_PCR11                              PORT_PCR_REG(PORTC,11)
-#define PORTC_PCR12                              PORT_PCR_REG(PORTC,12)
-#define PORTC_PCR13                              PORT_PCR_REG(PORTC,13)
-#define PORTC_PCR14                              PORT_PCR_REG(PORTC,14)
-#define PORTC_PCR15                              PORT_PCR_REG(PORTC,15)
-#define PORTC_PCR16                              PORT_PCR_REG(PORTC,16)
-#define PORTC_PCR17                              PORT_PCR_REG(PORTC,17)
-#define PORTC_PCR18                              PORT_PCR_REG(PORTC,18)
-#define PORTC_PCR19                              PORT_PCR_REG(PORTC,19)
-#define PORTC_PCR20                              PORT_PCR_REG(PORTC,20)
-#define PORTC_PCR21                              PORT_PCR_REG(PORTC,21)
-#define PORTC_PCR22                              PORT_PCR_REG(PORTC,22)
-#define PORTC_PCR23                              PORT_PCR_REG(PORTC,23)
-#define PORTC_PCR24                              PORT_PCR_REG(PORTC,24)
-#define PORTC_PCR25                              PORT_PCR_REG(PORTC,25)
-#define PORTC_PCR26                              PORT_PCR_REG(PORTC,26)
-#define PORTC_PCR27                              PORT_PCR_REG(PORTC,27)
-#define PORTC_PCR28                              PORT_PCR_REG(PORTC,28)
-#define PORTC_PCR29                              PORT_PCR_REG(PORTC,29)
-#define PORTC_PCR30                              PORT_PCR_REG(PORTC,30)
-#define PORTC_PCR31                              PORT_PCR_REG(PORTC,31)
-#define PORTC_GPCLR                              PORT_GPCLR_REG(PORTC)
-#define PORTC_GPCHR                              PORT_GPCHR_REG(PORTC)
-#define PORTC_ISFR                               PORT_ISFR_REG(PORTC)
-/* PORTD */
-#define PORTD_PCR0                               PORT_PCR_REG(PORTD,0)
-#define PORTD_PCR1                               PORT_PCR_REG(PORTD,1)
-#define PORTD_PCR2                               PORT_PCR_REG(PORTD,2)
-#define PORTD_PCR3                               PORT_PCR_REG(PORTD,3)
-#define PORTD_PCR4                               PORT_PCR_REG(PORTD,4)
-#define PORTD_PCR5                               PORT_PCR_REG(PORTD,5)
-#define PORTD_PCR6                               PORT_PCR_REG(PORTD,6)
-#define PORTD_PCR7                               PORT_PCR_REG(PORTD,7)
-#define PORTD_PCR8                               PORT_PCR_REG(PORTD,8)
-#define PORTD_PCR9                               PORT_PCR_REG(PORTD,9)
-#define PORTD_PCR10                              PORT_PCR_REG(PORTD,10)
-#define PORTD_PCR11                              PORT_PCR_REG(PORTD,11)
-#define PORTD_PCR12                              PORT_PCR_REG(PORTD,12)
-#define PORTD_PCR13                              PORT_PCR_REG(PORTD,13)
-#define PORTD_PCR14                              PORT_PCR_REG(PORTD,14)
-#define PORTD_PCR15                              PORT_PCR_REG(PORTD,15)
-#define PORTD_PCR16                              PORT_PCR_REG(PORTD,16)
-#define PORTD_PCR17                              PORT_PCR_REG(PORTD,17)
-#define PORTD_PCR18                              PORT_PCR_REG(PORTD,18)
-#define PORTD_PCR19                              PORT_PCR_REG(PORTD,19)
-#define PORTD_PCR20                              PORT_PCR_REG(PORTD,20)
-#define PORTD_PCR21                              PORT_PCR_REG(PORTD,21)
-#define PORTD_PCR22                              PORT_PCR_REG(PORTD,22)
-#define PORTD_PCR23                              PORT_PCR_REG(PORTD,23)
-#define PORTD_PCR24                              PORT_PCR_REG(PORTD,24)
-#define PORTD_PCR25                              PORT_PCR_REG(PORTD,25)
-#define PORTD_PCR26                              PORT_PCR_REG(PORTD,26)
-#define PORTD_PCR27                              PORT_PCR_REG(PORTD,27)
-#define PORTD_PCR28                              PORT_PCR_REG(PORTD,28)
-#define PORTD_PCR29                              PORT_PCR_REG(PORTD,29)
-#define PORTD_PCR30                              PORT_PCR_REG(PORTD,30)
-#define PORTD_PCR31                              PORT_PCR_REG(PORTD,31)
-#define PORTD_GPCLR                              PORT_GPCLR_REG(PORTD)
-#define PORTD_GPCHR                              PORT_GPCHR_REG(PORTD)
-#define PORTD_ISFR                               PORT_ISFR_REG(PORTD)
-/* PORTE */
-#define PORTE_PCR0                               PORT_PCR_REG(PORTE,0)
-#define PORTE_PCR1                               PORT_PCR_REG(PORTE,1)
-#define PORTE_PCR2                               PORT_PCR_REG(PORTE,2)
-#define PORTE_PCR3                               PORT_PCR_REG(PORTE,3)
-#define PORTE_PCR4                               PORT_PCR_REG(PORTE,4)
-#define PORTE_PCR5                               PORT_PCR_REG(PORTE,5)
-#define PORTE_PCR6                               PORT_PCR_REG(PORTE,6)
-#define PORTE_PCR7                               PORT_PCR_REG(PORTE,7)
-#define PORTE_PCR8                               PORT_PCR_REG(PORTE,8)
-#define PORTE_PCR9                               PORT_PCR_REG(PORTE,9)
-#define PORTE_PCR10                              PORT_PCR_REG(PORTE,10)
-#define PORTE_PCR11                              PORT_PCR_REG(PORTE,11)
-#define PORTE_PCR12                              PORT_PCR_REG(PORTE,12)
-#define PORTE_PCR13                              PORT_PCR_REG(PORTE,13)
-#define PORTE_PCR14                              PORT_PCR_REG(PORTE,14)
-#define PORTE_PCR15                              PORT_PCR_REG(PORTE,15)
-#define PORTE_PCR16                              PORT_PCR_REG(PORTE,16)
-#define PORTE_PCR17                              PORT_PCR_REG(PORTE,17)
-#define PORTE_PCR18                              PORT_PCR_REG(PORTE,18)
-#define PORTE_PCR19                              PORT_PCR_REG(PORTE,19)
-#define PORTE_PCR20                              PORT_PCR_REG(PORTE,20)
-#define PORTE_PCR21                              PORT_PCR_REG(PORTE,21)
-#define PORTE_PCR22                              PORT_PCR_REG(PORTE,22)
-#define PORTE_PCR23                              PORT_PCR_REG(PORTE,23)
-#define PORTE_PCR24                              PORT_PCR_REG(PORTE,24)
-#define PORTE_PCR25                              PORT_PCR_REG(PORTE,25)
-#define PORTE_PCR26                              PORT_PCR_REG(PORTE,26)
-#define PORTE_PCR27                              PORT_PCR_REG(PORTE,27)
-#define PORTE_PCR28                              PORT_PCR_REG(PORTE,28)
-#define PORTE_PCR29                              PORT_PCR_REG(PORTE,29)
-#define PORTE_PCR30                              PORT_PCR_REG(PORTE,30)
-#define PORTE_PCR31                              PORT_PCR_REG(PORTE,31)
-#define PORTE_GPCLR                              PORT_GPCLR_REG(PORTE)
-#define PORTE_GPCHR                              PORT_GPCHR_REG(PORTE)
-#define PORTE_ISFR                               PORT_ISFR_REG(PORTE)
-
-/* PORT - Register array accessors */
-#define PORTA_PCR(index)                         PORT_PCR_REG(PORTA,index)
-#define PORTB_PCR(index)                         PORT_PCR_REG(PORTB,index)
-#define PORTC_PCR(index)                         PORT_PCR_REG(PORTC,index)
-#define PORTD_PCR(index)                         PORT_PCR_REG(PORTD,index)
-#define PORTE_PCR(index)                         PORT_PCR_REG(PORTE,index)
-
-/*!
- * @}
- */ /* end of group PORT_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group PORT_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- RCM Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RCM_Peripheral_Access_Layer RCM Peripheral Access Layer
- * @{
- */
-
-/** RCM - Register Layout Typedef */
-typedef struct {
-  __I  uint8_t SRS0;                               /**< System Reset Status Register 0, offset: 0x0 */
-  __I  uint8_t SRS1;                               /**< System Reset Status Register 1, offset: 0x1 */
-       uint8_t RESERVED_0[2];
-  __IO uint8_t RPFC;                               /**< Reset Pin Filter Control register, offset: 0x4 */
-  __IO uint8_t RPFW;                               /**< Reset Pin Filter Width register, offset: 0x5 */
-  __IO uint8_t FM;                                 /**< Force Mode Register, offset: 0x6 */
-  __IO uint8_t MR;                                 /**< Mode Register, offset: 0x7 */
-  __IO uint8_t SSRS0;                              /**< Sticky System Reset Status Register 0, offset: 0x8 */
-  __IO uint8_t SSRS1;                              /**< Sticky System Reset Status Register 1, offset: 0x9 */
-} RCM_Type, *RCM_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- RCM - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RCM_Register_Accessor_Macros RCM - Register accessor macros
- * @{
- */
-
-
-/* RCM - Register accessors */
-#define RCM_SRS0_REG(base)                       ((base)->SRS0)
-#define RCM_SRS1_REG(base)                       ((base)->SRS1)
-#define RCM_RPFC_REG(base)                       ((base)->RPFC)
-#define RCM_RPFW_REG(base)                       ((base)->RPFW)
-#define RCM_FM_REG(base)                         ((base)->FM)
-#define RCM_MR_REG(base)                         ((base)->MR)
-#define RCM_SSRS0_REG(base)                      ((base)->SSRS0)
-#define RCM_SSRS1_REG(base)                      ((base)->SSRS1)
-
-/*!
- * @}
- */ /* end of group RCM_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- RCM Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RCM_Register_Masks RCM Register Masks
- * @{
- */
-
-/* SRS0 Bit Fields */
-#define RCM_SRS0_WAKEUP_MASK                     0x1u
-#define RCM_SRS0_WAKEUP_SHIFT                    0
-#define RCM_SRS0_LVD_MASK                        0x2u
-#define RCM_SRS0_LVD_SHIFT                       1
-#define RCM_SRS0_WDOG_MASK                       0x20u
-#define RCM_SRS0_WDOG_SHIFT                      5
-#define RCM_SRS0_PIN_MASK                        0x40u
-#define RCM_SRS0_PIN_SHIFT                       6
-#define RCM_SRS0_POR_MASK                        0x80u
-#define RCM_SRS0_POR_SHIFT                       7
-/* SRS1 Bit Fields */
-#define RCM_SRS1_LOCKUP_MASK                     0x2u
-#define RCM_SRS1_LOCKUP_SHIFT                    1
-#define RCM_SRS1_SW_MASK                         0x4u
-#define RCM_SRS1_SW_SHIFT                        2
-#define RCM_SRS1_MDM_AP_MASK                     0x8u
-#define RCM_SRS1_MDM_AP_SHIFT                    3
-#define RCM_SRS1_SACKERR_MASK                    0x20u
-#define RCM_SRS1_SACKERR_SHIFT                   5
-/* RPFC Bit Fields */
-#define RCM_RPFC_RSTFLTSRW_MASK                  0x3u
-#define RCM_RPFC_RSTFLTSRW_SHIFT                 0
-#define RCM_RPFC_RSTFLTSRW(x)                    (((uint8_t)(((uint8_t)(x))<<RCM_RPFC_RSTFLTSRW_SHIFT))&RCM_RPFC_RSTFLTSRW_MASK)
-#define RCM_RPFC_RSTFLTSS_MASK                   0x4u
-#define RCM_RPFC_RSTFLTSS_SHIFT                  2
-/* RPFW Bit Fields */
-#define RCM_RPFW_RSTFLTSEL_MASK                  0x1Fu
-#define RCM_RPFW_RSTFLTSEL_SHIFT                 0
-#define RCM_RPFW_RSTFLTSEL(x)                    (((uint8_t)(((uint8_t)(x))<<RCM_RPFW_RSTFLTSEL_SHIFT))&RCM_RPFW_RSTFLTSEL_MASK)
-/* FM Bit Fields */
-#define RCM_FM_FORCEROM_MASK                     0x6u
-#define RCM_FM_FORCEROM_SHIFT                    1
-#define RCM_FM_FORCEROM(x)                       (((uint8_t)(((uint8_t)(x))<<RCM_FM_FORCEROM_SHIFT))&RCM_FM_FORCEROM_MASK)
-/* MR Bit Fields */
-#define RCM_MR_BOOTROM_MASK                      0x6u
-#define RCM_MR_BOOTROM_SHIFT                     1
-#define RCM_MR_BOOTROM(x)                        (((uint8_t)(((uint8_t)(x))<<RCM_MR_BOOTROM_SHIFT))&RCM_MR_BOOTROM_MASK)
-/* SSRS0 Bit Fields */
-#define RCM_SSRS0_SWAKEUP_MASK                   0x1u
-#define RCM_SSRS0_SWAKEUP_SHIFT                  0
-#define RCM_SSRS0_SLVD_MASK                      0x2u
-#define RCM_SSRS0_SLVD_SHIFT                     1
-#define RCM_SSRS0_SWDOG_MASK                     0x20u
-#define RCM_SSRS0_SWDOG_SHIFT                    5
-#define RCM_SSRS0_SPIN_MASK                      0x40u
-#define RCM_SSRS0_SPIN_SHIFT                     6
-#define RCM_SSRS0_SPOR_MASK                      0x80u
-#define RCM_SSRS0_SPOR_SHIFT                     7
-/* SSRS1 Bit Fields */
-#define RCM_SSRS1_SLOCKUP_MASK                   0x2u
-#define RCM_SSRS1_SLOCKUP_SHIFT                  1
-#define RCM_SSRS1_SSW_MASK                       0x4u
-#define RCM_SSRS1_SSW_SHIFT                      2
-#define RCM_SSRS1_SMDM_AP_MASK                   0x8u
-#define RCM_SSRS1_SMDM_AP_SHIFT                  3
-#define RCM_SSRS1_SSACKERR_MASK                  0x20u
-#define RCM_SSRS1_SSACKERR_SHIFT                 5
-
-/*!
- * @}
- */ /* end of group RCM_Register_Masks */
-
-
-/* RCM - Peripheral instance base addresses */
-/** Peripheral RCM base address */
-#define RCM_BASE                                 (0x4007F000u)
-/** Peripheral RCM base pointer */
-#define RCM                                      ((RCM_Type *)RCM_BASE)
-#define RCM_BASE_PTR                             (RCM)
-/** Array initializer of RCM peripheral base addresses */
-#define RCM_BASE_ADDRS                           { RCM_BASE }
-/** Array initializer of RCM peripheral base pointers */
-#define RCM_BASE_PTRS                            { RCM }
-
-/* ----------------------------------------------------------------------------
-   -- RCM - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RCM_Register_Accessor_Macros RCM - Register accessor macros
- * @{
- */
-
-
-/* RCM - Register instance definitions */
-/* RCM */
-#define RCM_SRS0                                 RCM_SRS0_REG(RCM)
-#define RCM_SRS1                                 RCM_SRS1_REG(RCM)
-#define RCM_RPFC                                 RCM_RPFC_REG(RCM)
-#define RCM_RPFW                                 RCM_RPFW_REG(RCM)
-#define RCM_FM                                   RCM_FM_REG(RCM)
-#define RCM_MR                                   RCM_MR_REG(RCM)
-#define RCM_SSRS0                                RCM_SSRS0_REG(RCM)
-#define RCM_SSRS1                                RCM_SSRS1_REG(RCM)
-
-/*!
- * @}
- */ /* end of group RCM_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group RCM_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- RFSYS Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RFSYS_Peripheral_Access_Layer RFSYS Peripheral Access Layer
- * @{
- */
-
-/** RFSYS - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t REG[8];                            /**< Register file register, array offset: 0x0, array step: 0x4 */
-} RFSYS_Type, *RFSYS_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- RFSYS - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RFSYS_Register_Accessor_Macros RFSYS - Register accessor macros
- * @{
- */
-
-
-/* RFSYS - Register accessors */
-#define RFSYS_REG_REG(base,index)                ((base)->REG[index])
-
-/*!
- * @}
- */ /* end of group RFSYS_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- RFSYS Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RFSYS_Register_Masks RFSYS Register Masks
- * @{
- */
-
-/* REG Bit Fields */
-#define RFSYS_REG_LL_MASK                        0xFFu
-#define RFSYS_REG_LL_SHIFT                       0
-#define RFSYS_REG_LL(x)                          (((uint32_t)(((uint32_t)(x))<<RFSYS_REG_LL_SHIFT))&RFSYS_REG_LL_MASK)
-#define RFSYS_REG_LH_MASK                        0xFF00u
-#define RFSYS_REG_LH_SHIFT                       8
-#define RFSYS_REG_LH(x)                          (((uint32_t)(((uint32_t)(x))<<RFSYS_REG_LH_SHIFT))&RFSYS_REG_LH_MASK)
-#define RFSYS_REG_HL_MASK                        0xFF0000u
-#define RFSYS_REG_HL_SHIFT                       16
-#define RFSYS_REG_HL(x)                          (((uint32_t)(((uint32_t)(x))<<RFSYS_REG_HL_SHIFT))&RFSYS_REG_HL_MASK)
-#define RFSYS_REG_HH_MASK                        0xFF000000u
-#define RFSYS_REG_HH_SHIFT                       24
-#define RFSYS_REG_HH(x)                          (((uint32_t)(((uint32_t)(x))<<RFSYS_REG_HH_SHIFT))&RFSYS_REG_HH_MASK)
-
-/*!
- * @}
- */ /* end of group RFSYS_Register_Masks */
-
-
-/* RFSYS - Peripheral instance base addresses */
-/** Peripheral RFSYS base address */
-#define RFSYS_BASE                               (0x40041000u)
-/** Peripheral RFSYS base pointer */
-#define RFSYS                                    ((RFSYS_Type *)RFSYS_BASE)
-#define RFSYS_BASE_PTR                           (RFSYS)
-/** Array initializer of RFSYS peripheral base addresses */
-#define RFSYS_BASE_ADDRS                         { RFSYS_BASE }
-/** Array initializer of RFSYS peripheral base pointers */
-#define RFSYS_BASE_PTRS                          { RFSYS }
-
-/* ----------------------------------------------------------------------------
-   -- RFSYS - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RFSYS_Register_Accessor_Macros RFSYS - Register accessor macros
- * @{
- */
-
-
-/* RFSYS - Register instance definitions */
-/* RFSYS */
-#define RFSYS_REG0                               RFSYS_REG_REG(RFSYS,0)
-#define RFSYS_REG1                               RFSYS_REG_REG(RFSYS,1)
-#define RFSYS_REG2                               RFSYS_REG_REG(RFSYS,2)
-#define RFSYS_REG3                               RFSYS_REG_REG(RFSYS,3)
-#define RFSYS_REG4                               RFSYS_REG_REG(RFSYS,4)
-#define RFSYS_REG5                               RFSYS_REG_REG(RFSYS,5)
-#define RFSYS_REG6                               RFSYS_REG_REG(RFSYS,6)
-#define RFSYS_REG7                               RFSYS_REG_REG(RFSYS,7)
-
-/* RFSYS - Register array accessors */
-#define RFSYS_REG(index)                         RFSYS_REG_REG(RFSYS,index)
-
-/*!
- * @}
- */ /* end of group RFSYS_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group RFSYS_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- ROM Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup ROM_Peripheral_Access_Layer ROM Peripheral Access Layer
- * @{
- */
-
-/** ROM - Register Layout Typedef */
-typedef struct {
-  __I  uint32_t ENTRY[3];                          /**< Entry, array offset: 0x0, array step: 0x4 */
-  __I  uint32_t TABLEMARK;                         /**< End of Table Marker Register, offset: 0xC */
-       uint8_t RESERVED_0[4028];
-  __I  uint32_t SYSACCESS;                         /**< System Access Register, offset: 0xFCC */
-  __I  uint32_t PERIPHID4;                         /**< Peripheral ID Register, offset: 0xFD0 */
-  __I  uint32_t PERIPHID5;                         /**< Peripheral ID Register, offset: 0xFD4 */
-  __I  uint32_t PERIPHID6;                         /**< Peripheral ID Register, offset: 0xFD8 */
-  __I  uint32_t PERIPHID7;                         /**< Peripheral ID Register, offset: 0xFDC */
-  __I  uint32_t PERIPHID0;                         /**< Peripheral ID Register, offset: 0xFE0 */
-  __I  uint32_t PERIPHID1;                         /**< Peripheral ID Register, offset: 0xFE4 */
-  __I  uint32_t PERIPHID2;                         /**< Peripheral ID Register, offset: 0xFE8 */
-  __I  uint32_t PERIPHID3;                         /**< Peripheral ID Register, offset: 0xFEC */
-  __I  uint32_t COMPID[4];                         /**< Component ID Register, array offset: 0xFF0, array step: 0x4 */
-} ROM_Type, *ROM_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- ROM - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup ROM_Register_Accessor_Macros ROM - Register accessor macros
- * @{
- */
-
-
-/* ROM - Register accessors */
-#define ROM_ENTRY_REG(base,index)                ((base)->ENTRY[index])
-#define ROM_TABLEMARK_REG(base)                  ((base)->TABLEMARK)
-#define ROM_SYSACCESS_REG(base)                  ((base)->SYSACCESS)
-#define ROM_PERIPHID4_REG(base)                  ((base)->PERIPHID4)
-#define ROM_PERIPHID5_REG(base)                  ((base)->PERIPHID5)
-#define ROM_PERIPHID6_REG(base)                  ((base)->PERIPHID6)
-#define ROM_PERIPHID7_REG(base)                  ((base)->PERIPHID7)
-#define ROM_PERIPHID0_REG(base)                  ((base)->PERIPHID0)
-#define ROM_PERIPHID1_REG(base)                  ((base)->PERIPHID1)
-#define ROM_PERIPHID2_REG(base)                  ((base)->PERIPHID2)
-#define ROM_PERIPHID3_REG(base)                  ((base)->PERIPHID3)
-#define ROM_COMPID_REG(base,index)               ((base)->COMPID[index])
-
-/*!
- * @}
- */ /* end of group ROM_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- ROM Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup ROM_Register_Masks ROM Register Masks
- * @{
- */
-
-/* ENTRY Bit Fields */
-#define ROM_ENTRY_ENTRY_MASK                     0xFFFFFFFFu
-#define ROM_ENTRY_ENTRY_SHIFT                    0
-#define ROM_ENTRY_ENTRY(x)                       (((uint32_t)(((uint32_t)(x))<<ROM_ENTRY_ENTRY_SHIFT))&ROM_ENTRY_ENTRY_MASK)
-/* TABLEMARK Bit Fields */
-#define ROM_TABLEMARK_MARK_MASK                  0xFFFFFFFFu
-#define ROM_TABLEMARK_MARK_SHIFT                 0
-#define ROM_TABLEMARK_MARK(x)                    (((uint32_t)(((uint32_t)(x))<<ROM_TABLEMARK_MARK_SHIFT))&ROM_TABLEMARK_MARK_MASK)
-/* SYSACCESS Bit Fields */
-#define ROM_SYSACCESS_SYSACCESS_MASK             0xFFFFFFFFu
-#define ROM_SYSACCESS_SYSACCESS_SHIFT            0
-#define ROM_SYSACCESS_SYSACCESS(x)               (((uint32_t)(((uint32_t)(x))<<ROM_SYSACCESS_SYSACCESS_SHIFT))&ROM_SYSACCESS_SYSACCESS_MASK)
-/* PERIPHID4 Bit Fields */
-#define ROM_PERIPHID4_PERIPHID_MASK              0xFFFFFFFFu
-#define ROM_PERIPHID4_PERIPHID_SHIFT             0
-#define ROM_PERIPHID4_PERIPHID(x)                (((uint32_t)(((uint32_t)(x))<<ROM_PERIPHID4_PERIPHID_SHIFT))&ROM_PERIPHID4_PERIPHID_MASK)
-/* PERIPHID5 Bit Fields */
-#define ROM_PERIPHID5_PERIPHID_MASK              0xFFFFFFFFu
-#define ROM_PERIPHID5_PERIPHID_SHIFT             0
-#define ROM_PERIPHID5_PERIPHID(x)                (((uint32_t)(((uint32_t)(x))<<ROM_PERIPHID5_PERIPHID_SHIFT))&ROM_PERIPHID5_PERIPHID_MASK)
-/* PERIPHID6 Bit Fields */
-#define ROM_PERIPHID6_PERIPHID_MASK              0xFFFFFFFFu
-#define ROM_PERIPHID6_PERIPHID_SHIFT             0
-#define ROM_PERIPHID6_PERIPHID(x)                (((uint32_t)(((uint32_t)(x))<<ROM_PERIPHID6_PERIPHID_SHIFT))&ROM_PERIPHID6_PERIPHID_MASK)
-/* PERIPHID7 Bit Fields */
-#define ROM_PERIPHID7_PERIPHID_MASK              0xFFFFFFFFu
-#define ROM_PERIPHID7_PERIPHID_SHIFT             0
-#define ROM_PERIPHID7_PERIPHID(x)                (((uint32_t)(((uint32_t)(x))<<ROM_PERIPHID7_PERIPHID_SHIFT))&ROM_PERIPHID7_PERIPHID_MASK)
-/* PERIPHID0 Bit Fields */
-#define ROM_PERIPHID0_PERIPHID_MASK              0xFFFFFFFFu
-#define ROM_PERIPHID0_PERIPHID_SHIFT             0
-#define ROM_PERIPHID0_PERIPHID(x)                (((uint32_t)(((uint32_t)(x))<<ROM_PERIPHID0_PERIPHID_SHIFT))&ROM_PERIPHID0_PERIPHID_MASK)
-/* PERIPHID1 Bit Fields */
-#define ROM_PERIPHID1_PERIPHID_MASK              0xFFFFFFFFu
-#define ROM_PERIPHID1_PERIPHID_SHIFT             0
-#define ROM_PERIPHID1_PERIPHID(x)                (((uint32_t)(((uint32_t)(x))<<ROM_PERIPHID1_PERIPHID_SHIFT))&ROM_PERIPHID1_PERIPHID_MASK)
-/* PERIPHID2 Bit Fields */
-#define ROM_PERIPHID2_PERIPHID_MASK              0xFFFFFFFFu
-#define ROM_PERIPHID2_PERIPHID_SHIFT             0
-#define ROM_PERIPHID2_PERIPHID(x)                (((uint32_t)(((uint32_t)(x))<<ROM_PERIPHID2_PERIPHID_SHIFT))&ROM_PERIPHID2_PERIPHID_MASK)
-/* PERIPHID3 Bit Fields */
-#define ROM_PERIPHID3_PERIPHID_MASK              0xFFFFFFFFu
-#define ROM_PERIPHID3_PERIPHID_SHIFT             0
-#define ROM_PERIPHID3_PERIPHID(x)                (((uint32_t)(((uint32_t)(x))<<ROM_PERIPHID3_PERIPHID_SHIFT))&ROM_PERIPHID3_PERIPHID_MASK)
-/* COMPID Bit Fields */
-#define ROM_COMPID_COMPID_MASK                   0xFFFFFFFFu
-#define ROM_COMPID_COMPID_SHIFT                  0
-#define ROM_COMPID_COMPID(x)                     (((uint32_t)(((uint32_t)(x))<<ROM_COMPID_COMPID_SHIFT))&ROM_COMPID_COMPID_MASK)
-
-/*!
- * @}
- */ /* end of group ROM_Register_Masks */
-
-
-/* ROM - Peripheral instance base addresses */
-/** Peripheral ROM base address */
-#define ROM_BASE                                 (0xF0002000u)
-/** Peripheral ROM base pointer */
-#define ROM                                      ((ROM_Type *)ROM_BASE)
-#define ROM_BASE_PTR                             (ROM)
-/** Array initializer of ROM peripheral base addresses */
-#define ROM_BASE_ADDRS                           { ROM_BASE }
-/** Array initializer of ROM peripheral base pointers */
-#define ROM_BASE_PTRS                            { ROM }
-
-/* ----------------------------------------------------------------------------
-   -- ROM - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup ROM_Register_Accessor_Macros ROM - Register accessor macros
- * @{
- */
-
-
-/* ROM - Register instance definitions */
-/* ROM */
-#define ROM_ENTRY0                               ROM_ENTRY_REG(ROM,0)
-#define ROM_ENTRY1                               ROM_ENTRY_REG(ROM,1)
-#define ROM_ENTRY2                               ROM_ENTRY_REG(ROM,2)
-#define ROM_TABLEMARK                            ROM_TABLEMARK_REG(ROM)
-#define ROM_SYSACCESS                            ROM_SYSACCESS_REG(ROM)
-#define ROM_PERIPHID4                            ROM_PERIPHID4_REG(ROM)
-#define ROM_PERIPHID5                            ROM_PERIPHID5_REG(ROM)
-#define ROM_PERIPHID6                            ROM_PERIPHID6_REG(ROM)
-#define ROM_PERIPHID7                            ROM_PERIPHID7_REG(ROM)
-#define ROM_PERIPHID0                            ROM_PERIPHID0_REG(ROM)
-#define ROM_PERIPHID1                            ROM_PERIPHID1_REG(ROM)
-#define ROM_PERIPHID2                            ROM_PERIPHID2_REG(ROM)
-#define ROM_PERIPHID3                            ROM_PERIPHID3_REG(ROM)
-#define ROM_COMPID0                              ROM_COMPID_REG(ROM,0)
-#define ROM_COMPID1                              ROM_COMPID_REG(ROM,1)
-#define ROM_COMPID2                              ROM_COMPID_REG(ROM,2)
-#define ROM_COMPID3                              ROM_COMPID_REG(ROM,3)
-
-/* ROM - Register array accessors */
-#define ROM_ENTRY(index)                         ROM_ENTRY_REG(ROM,index)
-#define ROM_COMPID(index)                        ROM_COMPID_REG(ROM,index)
-
-/*!
- * @}
- */ /* end of group ROM_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group ROM_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- RTC Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RTC_Peripheral_Access_Layer RTC Peripheral Access Layer
- * @{
- */
-
-/** RTC - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t TSR;                               /**< RTC Time Seconds Register, offset: 0x0 */
-  __IO uint32_t TPR;                               /**< RTC Time Prescaler Register, offset: 0x4 */
-  __IO uint32_t TAR;                               /**< RTC Time Alarm Register, offset: 0x8 */
-  __IO uint32_t TCR;                               /**< RTC Time Compensation Register, offset: 0xC */
-  __IO uint32_t CR;                                /**< RTC Control Register, offset: 0x10 */
-  __IO uint32_t SR;                                /**< RTC Status Register, offset: 0x14 */
-  __IO uint32_t LR;                                /**< RTC Lock Register, offset: 0x18 */
-  __IO uint32_t IER;                               /**< RTC Interrupt Enable Register, offset: 0x1C */
-} RTC_Type, *RTC_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- RTC - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RTC_Register_Accessor_Macros RTC - Register accessor macros
- * @{
- */
-
-
-/* RTC - Register accessors */
-#define RTC_TSR_REG(base)                        ((base)->TSR)
-#define RTC_TPR_REG(base)                        ((base)->TPR)
-#define RTC_TAR_REG(base)                        ((base)->TAR)
-#define RTC_TCR_REG(base)                        ((base)->TCR)
-#define RTC_CR_REG(base)                         ((base)->CR)
-#define RTC_SR_REG(base)                         ((base)->SR)
-#define RTC_LR_REG(base)                         ((base)->LR)
-#define RTC_IER_REG(base)                        ((base)->IER)
-
-/*!
- * @}
- */ /* end of group RTC_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- RTC Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RTC_Register_Masks RTC Register Masks
- * @{
- */
-
-/* TSR Bit Fields */
-#define RTC_TSR_TSR_MASK                         0xFFFFFFFFu
-#define RTC_TSR_TSR_SHIFT                        0
-#define RTC_TSR_TSR(x)                           (((uint32_t)(((uint32_t)(x))<<RTC_TSR_TSR_SHIFT))&RTC_TSR_TSR_MASK)
-/* TPR Bit Fields */
-#define RTC_TPR_TPR_MASK                         0xFFFFu
-#define RTC_TPR_TPR_SHIFT                        0
-#define RTC_TPR_TPR(x)                           (((uint32_t)(((uint32_t)(x))<<RTC_TPR_TPR_SHIFT))&RTC_TPR_TPR_MASK)
-/* TAR Bit Fields */
-#define RTC_TAR_TAR_MASK                         0xFFFFFFFFu
-#define RTC_TAR_TAR_SHIFT                        0
-#define RTC_TAR_TAR(x)                           (((uint32_t)(((uint32_t)(x))<<RTC_TAR_TAR_SHIFT))&RTC_TAR_TAR_MASK)
-/* TCR Bit Fields */
-#define RTC_TCR_TCR_MASK                         0xFFu
-#define RTC_TCR_TCR_SHIFT                        0
-#define RTC_TCR_TCR(x)                           (((uint32_t)(((uint32_t)(x))<<RTC_TCR_TCR_SHIFT))&RTC_TCR_TCR_MASK)
-#define RTC_TCR_CIR_MASK                         0xFF00u
-#define RTC_TCR_CIR_SHIFT                        8
-#define RTC_TCR_CIR(x)                           (((uint32_t)(((uint32_t)(x))<<RTC_TCR_CIR_SHIFT))&RTC_TCR_CIR_MASK)
-#define RTC_TCR_TCV_MASK                         0xFF0000u
-#define RTC_TCR_TCV_SHIFT                        16
-#define RTC_TCR_TCV(x)                           (((uint32_t)(((uint32_t)(x))<<RTC_TCR_TCV_SHIFT))&RTC_TCR_TCV_MASK)
-#define RTC_TCR_CIC_MASK                         0xFF000000u
-#define RTC_TCR_CIC_SHIFT                        24
-#define RTC_TCR_CIC(x)                           (((uint32_t)(((uint32_t)(x))<<RTC_TCR_CIC_SHIFT))&RTC_TCR_CIC_MASK)
-/* CR Bit Fields */
-#define RTC_CR_SWR_MASK                          0x1u
-#define RTC_CR_SWR_SHIFT                         0
-#define RTC_CR_WPE_MASK                          0x2u
-#define RTC_CR_WPE_SHIFT                         1
-#define RTC_CR_SUP_MASK                          0x4u
-#define RTC_CR_SUP_SHIFT                         2
-#define RTC_CR_UM_MASK                           0x8u
-#define RTC_CR_UM_SHIFT                          3
-#define RTC_CR_WPS_MASK                          0x10u
-#define RTC_CR_WPS_SHIFT                         4
-#define RTC_CR_OSCE_MASK                         0x100u
-#define RTC_CR_OSCE_SHIFT                        8
-#define RTC_CR_CLKO_MASK                         0x200u
-#define RTC_CR_CLKO_SHIFT                        9
-#define RTC_CR_SC16P_MASK                        0x400u
-#define RTC_CR_SC16P_SHIFT                       10
-#define RTC_CR_SC8P_MASK                         0x800u
-#define RTC_CR_SC8P_SHIFT                        11
-#define RTC_CR_SC4P_MASK                         0x1000u
-#define RTC_CR_SC4P_SHIFT                        12
-#define RTC_CR_SC2P_MASK                         0x2000u
-#define RTC_CR_SC2P_SHIFT                        13
-/* SR Bit Fields */
-#define RTC_SR_TIF_MASK                          0x1u
-#define RTC_SR_TIF_SHIFT                         0
-#define RTC_SR_TOF_MASK                          0x2u
-#define RTC_SR_TOF_SHIFT                         1
-#define RTC_SR_TAF_MASK                          0x4u
-#define RTC_SR_TAF_SHIFT                         2
-#define RTC_SR_TCE_MASK                          0x10u
-#define RTC_SR_TCE_SHIFT                         4
-/* LR Bit Fields */
-#define RTC_LR_TCL_MASK                          0x8u
-#define RTC_LR_TCL_SHIFT                         3
-#define RTC_LR_CRL_MASK                          0x10u
-#define RTC_LR_CRL_SHIFT                         4
-#define RTC_LR_SRL_MASK                          0x20u
-#define RTC_LR_SRL_SHIFT                         5
-#define RTC_LR_LRL_MASK                          0x40u
-#define RTC_LR_LRL_SHIFT                         6
-/* IER Bit Fields */
-#define RTC_IER_TIIE_MASK                        0x1u
-#define RTC_IER_TIIE_SHIFT                       0
-#define RTC_IER_TOIE_MASK                        0x2u
-#define RTC_IER_TOIE_SHIFT                       1
-#define RTC_IER_TAIE_MASK                        0x4u
-#define RTC_IER_TAIE_SHIFT                       2
-#define RTC_IER_TSIE_MASK                        0x10u
-#define RTC_IER_TSIE_SHIFT                       4
-#define RTC_IER_WPON_MASK                        0x80u
-#define RTC_IER_WPON_SHIFT                       7
-
-/*!
- * @}
- */ /* end of group RTC_Register_Masks */
-
-
-/* RTC - Peripheral instance base addresses */
-/** Peripheral RTC base address */
-#define RTC_BASE                                 (0x4003D000u)
-/** Peripheral RTC base pointer */
-#define RTC                                      ((RTC_Type *)RTC_BASE)
-#define RTC_BASE_PTR                             (RTC)
-/** Array initializer of RTC peripheral base addresses */
-#define RTC_BASE_ADDRS                           { RTC_BASE }
-/** Array initializer of RTC peripheral base pointers */
-#define RTC_BASE_PTRS                            { RTC }
-/** Interrupt vectors for the RTC peripheral type */
-#define RTC_IRQS                                 { RTC_IRQn }
-#define RTC_SECONDS_IRQS                         { RTC_Seconds_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- RTC - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup RTC_Register_Accessor_Macros RTC - Register accessor macros
- * @{
- */
-
-
-/* RTC - Register instance definitions */
-/* RTC */
-#define RTC_TSR                                  RTC_TSR_REG(RTC)
-#define RTC_TPR                                  RTC_TPR_REG(RTC)
-#define RTC_TAR                                  RTC_TAR_REG(RTC)
-#define RTC_TCR                                  RTC_TCR_REG(RTC)
-#define RTC_CR                                   RTC_CR_REG(RTC)
-#define RTC_SR                                   RTC_SR_REG(RTC)
-#define RTC_LR                                   RTC_LR_REG(RTC)
-#define RTC_IER                                  RTC_IER_REG(RTC)
-
-/*!
- * @}
- */ /* end of group RTC_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group RTC_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- SIM Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SIM_Peripheral_Access_Layer SIM Peripheral Access Layer
- * @{
- */
-
-/** SIM - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t SOPT1;                             /**< System Options Register 1, offset: 0x0 */
-  __IO uint32_t SOPT1CFG;                          /**< SOPT1 Configuration Register, offset: 0x4 */
-       uint8_t RESERVED_0[4092];
-  __IO uint32_t SOPT2;                             /**< System Options Register 2, offset: 0x1004 */
-       uint8_t RESERVED_1[4];
-  __IO uint32_t SOPT4;                             /**< System Options Register 4, offset: 0x100C */
-  __IO uint32_t SOPT5;                             /**< System Options Register 5, offset: 0x1010 */
-       uint8_t RESERVED_2[4];
-  __IO uint32_t SOPT7;                             /**< System Options Register 7, offset: 0x1018 */
-       uint8_t RESERVED_3[8];
-  __I  uint32_t SDID;                              /**< System Device Identification Register, offset: 0x1024 */
-       uint8_t RESERVED_4[12];
-  __IO uint32_t SCGC4;                             /**< System Clock Gating Control Register 4, offset: 0x1034 */
-  __IO uint32_t SCGC5;                             /**< System Clock Gating Control Register 5, offset: 0x1038 */
-  __IO uint32_t SCGC6;                             /**< System Clock Gating Control Register 6, offset: 0x103C */
-  __IO uint32_t SCGC7;                             /**< System Clock Gating Control Register 7, offset: 0x1040 */
-  __IO uint32_t CLKDIV1;                           /**< System Clock Divider Register 1, offset: 0x1044 */
-       uint8_t RESERVED_5[4];
-  __IO uint32_t FCFG1;                             /**< Flash Configuration Register 1, offset: 0x104C */
-  __I  uint32_t FCFG2;                             /**< Flash Configuration Register 2, offset: 0x1050 */
-       uint8_t RESERVED_6[4];
-  __I  uint32_t UIDMH;                             /**< Unique Identification Register Mid-High, offset: 0x1058 */
-  __I  uint32_t UIDML;                             /**< Unique Identification Register Mid Low, offset: 0x105C */
-  __I  uint32_t UIDL;                              /**< Unique Identification Register Low, offset: 0x1060 */
-       uint8_t RESERVED_7[156];
-  __IO uint32_t COPC;                              /**< COP Control Register, offset: 0x1100 */
-  __O  uint32_t SRVCOP;                            /**< Service COP, offset: 0x1104 */
-} SIM_Type, *SIM_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- SIM - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SIM_Register_Accessor_Macros SIM - Register accessor macros
- * @{
- */
-
-
-/* SIM - Register accessors */
-#define SIM_SOPT1_REG(base)                      ((base)->SOPT1)
-#define SIM_SOPT1CFG_REG(base)                   ((base)->SOPT1CFG)
-#define SIM_SOPT2_REG(base)                      ((base)->SOPT2)
-#define SIM_SOPT4_REG(base)                      ((base)->SOPT4)
-#define SIM_SOPT5_REG(base)                      ((base)->SOPT5)
-#define SIM_SOPT7_REG(base)                      ((base)->SOPT7)
-#define SIM_SDID_REG(base)                       ((base)->SDID)
-#define SIM_SCGC4_REG(base)                      ((base)->SCGC4)
-#define SIM_SCGC5_REG(base)                      ((base)->SCGC5)
-#define SIM_SCGC6_REG(base)                      ((base)->SCGC6)
-#define SIM_SCGC7_REG(base)                      ((base)->SCGC7)
-#define SIM_CLKDIV1_REG(base)                    ((base)->CLKDIV1)
-#define SIM_FCFG1_REG(base)                      ((base)->FCFG1)
-#define SIM_FCFG2_REG(base)                      ((base)->FCFG2)
-#define SIM_UIDMH_REG(base)                      ((base)->UIDMH)
-#define SIM_UIDML_REG(base)                      ((base)->UIDML)
-#define SIM_UIDL_REG(base)                       ((base)->UIDL)
-#define SIM_COPC_REG(base)                       ((base)->COPC)
-#define SIM_SRVCOP_REG(base)                     ((base)->SRVCOP)
-
-/*!
- * @}
- */ /* end of group SIM_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- SIM Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SIM_Register_Masks SIM Register Masks
- * @{
- */
-
-/* SOPT1 Bit Fields */
-#define SIM_SOPT1_OSC32KOUT_MASK                 0x30000u
-#define SIM_SOPT1_OSC32KOUT_SHIFT                16
-#define SIM_SOPT1_OSC32KOUT(x)                   (((uint32_t)(((uint32_t)(x))<<SIM_SOPT1_OSC32KOUT_SHIFT))&SIM_SOPT1_OSC32KOUT_MASK)
-#define SIM_SOPT1_OSC32KSEL_MASK                 0xC0000u
-#define SIM_SOPT1_OSC32KSEL_SHIFT                18
-#define SIM_SOPT1_OSC32KSEL(x)                   (((uint32_t)(((uint32_t)(x))<<SIM_SOPT1_OSC32KSEL_SHIFT))&SIM_SOPT1_OSC32KSEL_MASK)
-#define SIM_SOPT1_USBVSTBY_MASK                  0x20000000u
-#define SIM_SOPT1_USBVSTBY_SHIFT                 29
-#define SIM_SOPT1_USBSSTBY_MASK                  0x40000000u
-#define SIM_SOPT1_USBSSTBY_SHIFT                 30
-#define SIM_SOPT1_USBREGEN_MASK                  0x80000000u
-#define SIM_SOPT1_USBREGEN_SHIFT                 31
-/* SOPT1CFG Bit Fields */
-#define SIM_SOPT1CFG_URWE_MASK                   0x1000000u
-#define SIM_SOPT1CFG_URWE_SHIFT                  24
-#define SIM_SOPT1CFG_UVSWE_MASK                  0x2000000u
-#define SIM_SOPT1CFG_UVSWE_SHIFT                 25
-#define SIM_SOPT1CFG_USSWE_MASK                  0x4000000u
-#define SIM_SOPT1CFG_USSWE_SHIFT                 26
-/* SOPT2 Bit Fields */
-#define SIM_SOPT2_RTCCLKOUTSEL_MASK              0x10u
-#define SIM_SOPT2_RTCCLKOUTSEL_SHIFT             4
-#define SIM_SOPT2_CLKOUTSEL_MASK                 0xE0u
-#define SIM_SOPT2_CLKOUTSEL_SHIFT                5
-#define SIM_SOPT2_CLKOUTSEL(x)                   (((uint32_t)(((uint32_t)(x))<<SIM_SOPT2_CLKOUTSEL_SHIFT))&SIM_SOPT2_CLKOUTSEL_MASK)
-#define SIM_SOPT2_USBSRC_MASK                    0x40000u
-#define SIM_SOPT2_USBSRC_SHIFT                   18
-#define SIM_SOPT2_FLEXIOSRC_MASK                 0xC00000u
-#define SIM_SOPT2_FLEXIOSRC_SHIFT                22
-#define SIM_SOPT2_FLEXIOSRC(x)                   (((uint32_t)(((uint32_t)(x))<<SIM_SOPT2_FLEXIOSRC_SHIFT))&SIM_SOPT2_FLEXIOSRC_MASK)
-#define SIM_SOPT2_TPMSRC_MASK                    0x3000000u
-#define SIM_SOPT2_TPMSRC_SHIFT                   24
-#define SIM_SOPT2_TPMSRC(x)                      (((uint32_t)(((uint32_t)(x))<<SIM_SOPT2_TPMSRC_SHIFT))&SIM_SOPT2_TPMSRC_MASK)
-#define SIM_SOPT2_LPUART0SRC_MASK                0xC000000u
-#define SIM_SOPT2_LPUART0SRC_SHIFT               26
-#define SIM_SOPT2_LPUART0SRC(x)                  (((uint32_t)(((uint32_t)(x))<<SIM_SOPT2_LPUART0SRC_SHIFT))&SIM_SOPT2_LPUART0SRC_MASK)
-#define SIM_SOPT2_LPUART1SRC_MASK                0x30000000u
-#define SIM_SOPT2_LPUART1SRC_SHIFT               28
-#define SIM_SOPT2_LPUART1SRC(x)                  (((uint32_t)(((uint32_t)(x))<<SIM_SOPT2_LPUART1SRC_SHIFT))&SIM_SOPT2_LPUART1SRC_MASK)
-/* SOPT4 Bit Fields */
-#define SIM_SOPT4_TPM1CH0SRC_MASK                0xC0000u
-#define SIM_SOPT4_TPM1CH0SRC_SHIFT               18
-#define SIM_SOPT4_TPM1CH0SRC(x)                  (((uint32_t)(((uint32_t)(x))<<SIM_SOPT4_TPM1CH0SRC_SHIFT))&SIM_SOPT4_TPM1CH0SRC_MASK)
-#define SIM_SOPT4_TPM2CH0SRC_MASK                0x100000u
-#define SIM_SOPT4_TPM2CH0SRC_SHIFT               20
-#define SIM_SOPT4_TPM0CLKSEL_MASK                0x1000000u
-#define SIM_SOPT4_TPM0CLKSEL_SHIFT               24
-#define SIM_SOPT4_TPM1CLKSEL_MASK                0x2000000u
-#define SIM_SOPT4_TPM1CLKSEL_SHIFT               25
-#define SIM_SOPT4_TPM2CLKSEL_MASK                0x4000000u
-#define SIM_SOPT4_TPM2CLKSEL_SHIFT               26
-/* SOPT5 Bit Fields */
-#define SIM_SOPT5_LPUART0TXSRC_MASK              0x3u
-#define SIM_SOPT5_LPUART0TXSRC_SHIFT             0
-#define SIM_SOPT5_LPUART0TXSRC(x)                (((uint32_t)(((uint32_t)(x))<<SIM_SOPT5_LPUART0TXSRC_SHIFT))&SIM_SOPT5_LPUART0TXSRC_MASK)
-#define SIM_SOPT5_LPUART0RXSRC_MASK              0x4u
-#define SIM_SOPT5_LPUART0RXSRC_SHIFT             2
-#define SIM_SOPT5_LPUART1TXSRC_MASK              0x30u
-#define SIM_SOPT5_LPUART1TXSRC_SHIFT             4
-#define SIM_SOPT5_LPUART1TXSRC(x)                (((uint32_t)(((uint32_t)(x))<<SIM_SOPT5_LPUART1TXSRC_SHIFT))&SIM_SOPT5_LPUART1TXSRC_MASK)
-#define SIM_SOPT5_LPUART1RXSRC_MASK              0x40u
-#define SIM_SOPT5_LPUART1RXSRC_SHIFT             6
-#define SIM_SOPT5_LPUART0ODE_MASK                0x10000u
-#define SIM_SOPT5_LPUART0ODE_SHIFT               16
-#define SIM_SOPT5_LPUART1ODE_MASK                0x20000u
-#define SIM_SOPT5_LPUART1ODE_SHIFT               17
-#define SIM_SOPT5_UART2ODE_MASK                  0x40000u
-#define SIM_SOPT5_UART2ODE_SHIFT                 18
-/* SOPT7 Bit Fields */
-#define SIM_SOPT7_ADC0TRGSEL_MASK                0xFu
-#define SIM_SOPT7_ADC0TRGSEL_SHIFT               0
-#define SIM_SOPT7_ADC0TRGSEL(x)                  (((uint32_t)(((uint32_t)(x))<<SIM_SOPT7_ADC0TRGSEL_SHIFT))&SIM_SOPT7_ADC0TRGSEL_MASK)
-#define SIM_SOPT7_ADC0PRETRGSEL_MASK             0x10u
-#define SIM_SOPT7_ADC0PRETRGSEL_SHIFT            4
-#define SIM_SOPT7_ADC0ALTTRGEN_MASK              0x80u
-#define SIM_SOPT7_ADC0ALTTRGEN_SHIFT             7
-/* SDID Bit Fields */
-#define SIM_SDID_PINID_MASK                      0xFu
-#define SIM_SDID_PINID_SHIFT                     0
-#define SIM_SDID_PINID(x)                        (((uint32_t)(((uint32_t)(x))<<SIM_SDID_PINID_SHIFT))&SIM_SDID_PINID_MASK)
-#define SIM_SDID_REVID_MASK                      0xF000u
-#define SIM_SDID_REVID_SHIFT                     12
-#define SIM_SDID_REVID(x)                        (((uint32_t)(((uint32_t)(x))<<SIM_SDID_REVID_SHIFT))&SIM_SDID_REVID_MASK)
-#define SIM_SDID_SRAMSIZE_MASK                   0xF0000u
-#define SIM_SDID_SRAMSIZE_SHIFT                  16
-#define SIM_SDID_SRAMSIZE(x)                     (((uint32_t)(((uint32_t)(x))<<SIM_SDID_SRAMSIZE_SHIFT))&SIM_SDID_SRAMSIZE_MASK)
-#define SIM_SDID_SERIESID_MASK                   0xF00000u
-#define SIM_SDID_SERIESID_SHIFT                  20
-#define SIM_SDID_SERIESID(x)                     (((uint32_t)(((uint32_t)(x))<<SIM_SDID_SERIESID_SHIFT))&SIM_SDID_SERIESID_MASK)
-#define SIM_SDID_SUBFAMID_MASK                   0xF000000u
-#define SIM_SDID_SUBFAMID_SHIFT                  24
-#define SIM_SDID_SUBFAMID(x)                     (((uint32_t)(((uint32_t)(x))<<SIM_SDID_SUBFAMID_SHIFT))&SIM_SDID_SUBFAMID_MASK)
-#define SIM_SDID_FAMID_MASK                      0xF0000000u
-#define SIM_SDID_FAMID_SHIFT                     28
-#define SIM_SDID_FAMID(x)                        (((uint32_t)(((uint32_t)(x))<<SIM_SDID_FAMID_SHIFT))&SIM_SDID_FAMID_MASK)
-/* SCGC4 Bit Fields */
-#define SIM_SCGC4_I2C0_MASK                      0x40u
-#define SIM_SCGC4_I2C0_SHIFT                     6
-#define SIM_SCGC4_I2C1_MASK                      0x80u
-#define SIM_SCGC4_I2C1_SHIFT                     7
-#define SIM_SCGC4_UART2_MASK                     0x1000u
-#define SIM_SCGC4_UART2_SHIFT                    12
-#define SIM_SCGC4_USBFS_MASK                     0x40000u
-#define SIM_SCGC4_USBFS_SHIFT                    18
-#define SIM_SCGC4_CMP0_MASK                      0x80000u
-#define SIM_SCGC4_CMP0_SHIFT                     19
-#define SIM_SCGC4_VREF_MASK                      0x100000u
-#define SIM_SCGC4_VREF_SHIFT                     20
-#define SIM_SCGC4_SPI0_MASK                      0x400000u
-#define SIM_SCGC4_SPI0_SHIFT                     22
-#define SIM_SCGC4_SPI1_MASK                      0x800000u
-#define SIM_SCGC4_SPI1_SHIFT                     23
-/* SCGC5 Bit Fields */
-#define SIM_SCGC5_LPTMR_MASK                     0x1u
-#define SIM_SCGC5_LPTMR_SHIFT                    0
-#define SIM_SCGC5_PORTA_MASK                     0x200u
-#define SIM_SCGC5_PORTA_SHIFT                    9
-#define SIM_SCGC5_PORTB_MASK                     0x400u
-#define SIM_SCGC5_PORTB_SHIFT                    10
-#define SIM_SCGC5_PORTC_MASK                     0x800u
-#define SIM_SCGC5_PORTC_SHIFT                    11
-#define SIM_SCGC5_PORTD_MASK                     0x1000u
-#define SIM_SCGC5_PORTD_SHIFT                    12
-#define SIM_SCGC5_PORTE_MASK                     0x2000u
-#define SIM_SCGC5_PORTE_SHIFT                    13
-#define SIM_SCGC5_SLCD_MASK                      0x80000u
-#define SIM_SCGC5_SLCD_SHIFT                     19
-#define SIM_SCGC5_LPUART0_MASK                   0x100000u
-#define SIM_SCGC5_LPUART0_SHIFT                  20
-#define SIM_SCGC5_LPUART1_MASK                   0x200000u
-#define SIM_SCGC5_LPUART1_SHIFT                  21
-#define SIM_SCGC5_FLEXIO_MASK                    0x80000000u
-#define SIM_SCGC5_FLEXIO_SHIFT                   31
-/* SCGC6 Bit Fields */
-#define SIM_SCGC6_FTF_MASK                       0x1u
-#define SIM_SCGC6_FTF_SHIFT                      0
-#define SIM_SCGC6_DMAMUX_MASK                    0x2u
-#define SIM_SCGC6_DMAMUX_SHIFT                   1
-#define SIM_SCGC6_I2S_MASK                       0x8000u
-#define SIM_SCGC6_I2S_SHIFT                      15
-#define SIM_SCGC6_PIT_MASK                       0x800000u
-#define SIM_SCGC6_PIT_SHIFT                      23
-#define SIM_SCGC6_TPM0_MASK                      0x1000000u
-#define SIM_SCGC6_TPM0_SHIFT                     24
-#define SIM_SCGC6_TPM1_MASK                      0x2000000u
-#define SIM_SCGC6_TPM1_SHIFT                     25
-#define SIM_SCGC6_TPM2_MASK                      0x4000000u
-#define SIM_SCGC6_TPM2_SHIFT                     26
-#define SIM_SCGC6_ADC0_MASK                      0x8000000u
-#define SIM_SCGC6_ADC0_SHIFT                     27
-#define SIM_SCGC6_RTC_MASK                       0x20000000u
-#define SIM_SCGC6_RTC_SHIFT                      29
-#define SIM_SCGC6_DAC0_MASK                      0x80000000u
-#define SIM_SCGC6_DAC0_SHIFT                     31
-/* SCGC7 Bit Fields */
-#define SIM_SCGC7_DMA_MASK                       0x100u
-#define SIM_SCGC7_DMA_SHIFT                      8
-/* CLKDIV1 Bit Fields */
-#define SIM_CLKDIV1_OUTDIV4_MASK                 0x70000u
-#define SIM_CLKDIV1_OUTDIV4_SHIFT                16
-#define SIM_CLKDIV1_OUTDIV4(x)                   (((uint32_t)(((uint32_t)(x))<<SIM_CLKDIV1_OUTDIV4_SHIFT))&SIM_CLKDIV1_OUTDIV4_MASK)
-#define SIM_CLKDIV1_OUTDIV1_MASK                 0xF0000000u
-#define SIM_CLKDIV1_OUTDIV1_SHIFT                28
-#define SIM_CLKDIV1_OUTDIV1(x)                   (((uint32_t)(((uint32_t)(x))<<SIM_CLKDIV1_OUTDIV1_SHIFT))&SIM_CLKDIV1_OUTDIV1_MASK)
-/* FCFG1 Bit Fields */
-#define SIM_FCFG1_FLASHDIS_MASK                  0x1u
-#define SIM_FCFG1_FLASHDIS_SHIFT                 0
-#define SIM_FCFG1_FLASHDOZE_MASK                 0x2u
-#define SIM_FCFG1_FLASHDOZE_SHIFT                1
-#define SIM_FCFG1_PFSIZE_MASK                    0xF000000u
-#define SIM_FCFG1_PFSIZE_SHIFT                   24
-#define SIM_FCFG1_PFSIZE(x)                      (((uint32_t)(((uint32_t)(x))<<SIM_FCFG1_PFSIZE_SHIFT))&SIM_FCFG1_PFSIZE_MASK)
-/* FCFG2 Bit Fields */
-#define SIM_FCFG2_MAXADDR1_MASK                  0x7F0000u
-#define SIM_FCFG2_MAXADDR1_SHIFT                 16
-#define SIM_FCFG2_MAXADDR1(x)                    (((uint32_t)(((uint32_t)(x))<<SIM_FCFG2_MAXADDR1_SHIFT))&SIM_FCFG2_MAXADDR1_MASK)
-#define SIM_FCFG2_MAXADDR0_MASK                  0x7F000000u
-#define SIM_FCFG2_MAXADDR0_SHIFT                 24
-#define SIM_FCFG2_MAXADDR0(x)                    (((uint32_t)(((uint32_t)(x))<<SIM_FCFG2_MAXADDR0_SHIFT))&SIM_FCFG2_MAXADDR0_MASK)
-/* UIDMH Bit Fields */
-#define SIM_UIDMH_UID_MASK                       0xFFFFu
-#define SIM_UIDMH_UID_SHIFT                      0
-#define SIM_UIDMH_UID(x)                         (((uint32_t)(((uint32_t)(x))<<SIM_UIDMH_UID_SHIFT))&SIM_UIDMH_UID_MASK)
-/* UIDML Bit Fields */
-#define SIM_UIDML_UID_MASK                       0xFFFFFFFFu
-#define SIM_UIDML_UID_SHIFT                      0
-#define SIM_UIDML_UID(x)                         (((uint32_t)(((uint32_t)(x))<<SIM_UIDML_UID_SHIFT))&SIM_UIDML_UID_MASK)
-/* UIDL Bit Fields */
-#define SIM_UIDL_UID_MASK                        0xFFFFFFFFu
-#define SIM_UIDL_UID_SHIFT                       0
-#define SIM_UIDL_UID(x)                          (((uint32_t)(((uint32_t)(x))<<SIM_UIDL_UID_SHIFT))&SIM_UIDL_UID_MASK)
-/* COPC Bit Fields */
-#define SIM_COPC_COPW_MASK                       0x1u
-#define SIM_COPC_COPW_SHIFT                      0
-#define SIM_COPC_COPCLKS_MASK                    0x2u
-#define SIM_COPC_COPCLKS_SHIFT                   1
-#define SIM_COPC_COPT_MASK                       0xCu
-#define SIM_COPC_COPT_SHIFT                      2
-#define SIM_COPC_COPT(x)                         (((uint32_t)(((uint32_t)(x))<<SIM_COPC_COPT_SHIFT))&SIM_COPC_COPT_MASK)
-#define SIM_COPC_COPSTPEN_MASK                   0x10u
-#define SIM_COPC_COPSTPEN_SHIFT                  4
-#define SIM_COPC_COPDBGEN_MASK                   0x20u
-#define SIM_COPC_COPDBGEN_SHIFT                  5
-#define SIM_COPC_COPCLKSEL_MASK                  0xC0u
-#define SIM_COPC_COPCLKSEL_SHIFT                 6
-#define SIM_COPC_COPCLKSEL(x)                    (((uint32_t)(((uint32_t)(x))<<SIM_COPC_COPCLKSEL_SHIFT))&SIM_COPC_COPCLKSEL_MASK)
-/* SRVCOP Bit Fields */
-#define SIM_SRVCOP_SRVCOP_MASK                   0xFFu
-#define SIM_SRVCOP_SRVCOP_SHIFT                  0
-#define SIM_SRVCOP_SRVCOP(x)                     (((uint32_t)(((uint32_t)(x))<<SIM_SRVCOP_SRVCOP_SHIFT))&SIM_SRVCOP_SRVCOP_MASK)
-
-/*!
- * @}
- */ /* end of group SIM_Register_Masks */
-
-
-/* SIM - Peripheral instance base addresses */
-/** Peripheral SIM base address */
-#define SIM_BASE                                 (0x40047000u)
-/** Peripheral SIM base pointer */
-#define SIM                                      ((SIM_Type *)SIM_BASE)
-#define SIM_BASE_PTR                             (SIM)
-/** Array initializer of SIM peripheral base addresses */
-#define SIM_BASE_ADDRS                           { SIM_BASE }
-/** Array initializer of SIM peripheral base pointers */
-#define SIM_BASE_PTRS                            { SIM }
-
-/* ----------------------------------------------------------------------------
-   -- SIM - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SIM_Register_Accessor_Macros SIM - Register accessor macros
- * @{
- */
-
-
-/* SIM - Register instance definitions */
-/* SIM */
-#define SIM_SOPT1                                SIM_SOPT1_REG(SIM)
-#define SIM_SOPT1CFG                             SIM_SOPT1CFG_REG(SIM)
-#define SIM_SOPT2                                SIM_SOPT2_REG(SIM)
-#define SIM_SOPT4                                SIM_SOPT4_REG(SIM)
-#define SIM_SOPT5                                SIM_SOPT5_REG(SIM)
-#define SIM_SOPT7                                SIM_SOPT7_REG(SIM)
-#define SIM_SDID                                 SIM_SDID_REG(SIM)
-#define SIM_SCGC4                                SIM_SCGC4_REG(SIM)
-#define SIM_SCGC5                                SIM_SCGC5_REG(SIM)
-#define SIM_SCGC6                                SIM_SCGC6_REG(SIM)
-#define SIM_SCGC7                                SIM_SCGC7_REG(SIM)
-#define SIM_CLKDIV1                              SIM_CLKDIV1_REG(SIM)
-#define SIM_FCFG1                                SIM_FCFG1_REG(SIM)
-#define SIM_FCFG2                                SIM_FCFG2_REG(SIM)
-#define SIM_UIDMH                                SIM_UIDMH_REG(SIM)
-#define SIM_UIDML                                SIM_UIDML_REG(SIM)
-#define SIM_UIDL                                 SIM_UIDL_REG(SIM)
-#define SIM_COPC                                 SIM_COPC_REG(SIM)
-#define SIM_SRVCOP                               SIM_SRVCOP_REG(SIM)
-
-/*!
- * @}
- */ /* end of group SIM_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group SIM_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- SMC Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SMC_Peripheral_Access_Layer SMC Peripheral Access Layer
- * @{
- */
-
-/** SMC - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t PMPROT;                             /**< Power Mode Protection register, offset: 0x0 */
-  __IO uint8_t PMCTRL;                             /**< Power Mode Control register, offset: 0x1 */
-  __IO uint8_t STOPCTRL;                           /**< Stop Control Register, offset: 0x2 */
-  __I  uint8_t PMSTAT;                             /**< Power Mode Status register, offset: 0x3 */
-} SMC_Type, *SMC_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- SMC - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SMC_Register_Accessor_Macros SMC - Register accessor macros
- * @{
- */
-
-
-/* SMC - Register accessors */
-#define SMC_PMPROT_REG(base)                     ((base)->PMPROT)
-#define SMC_PMCTRL_REG(base)                     ((base)->PMCTRL)
-#define SMC_STOPCTRL_REG(base)                   ((base)->STOPCTRL)
-#define SMC_PMSTAT_REG(base)                     ((base)->PMSTAT)
-
-/*!
- * @}
- */ /* end of group SMC_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- SMC Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SMC_Register_Masks SMC Register Masks
- * @{
- */
-
-/* PMPROT Bit Fields */
-#define SMC_PMPROT_AVLLS_MASK                    0x2u
-#define SMC_PMPROT_AVLLS_SHIFT                   1
-#define SMC_PMPROT_ALLS_MASK                     0x8u
-#define SMC_PMPROT_ALLS_SHIFT                    3
-#define SMC_PMPROT_AVLP_MASK                     0x20u
-#define SMC_PMPROT_AVLP_SHIFT                    5
-/* PMCTRL Bit Fields */
-#define SMC_PMCTRL_STOPM_MASK                    0x7u
-#define SMC_PMCTRL_STOPM_SHIFT                   0
-#define SMC_PMCTRL_STOPM(x)                      (((uint8_t)(((uint8_t)(x))<<SMC_PMCTRL_STOPM_SHIFT))&SMC_PMCTRL_STOPM_MASK)
-#define SMC_PMCTRL_STOPA_MASK                    0x8u
-#define SMC_PMCTRL_STOPA_SHIFT                   3
-#define SMC_PMCTRL_RUNM_MASK                     0x60u
-#define SMC_PMCTRL_RUNM_SHIFT                    5
-#define SMC_PMCTRL_RUNM(x)                       (((uint8_t)(((uint8_t)(x))<<SMC_PMCTRL_RUNM_SHIFT))&SMC_PMCTRL_RUNM_MASK)
-/* STOPCTRL Bit Fields */
-#define SMC_STOPCTRL_VLLSM_MASK                  0x7u
-#define SMC_STOPCTRL_VLLSM_SHIFT                 0
-#define SMC_STOPCTRL_VLLSM(x)                    (((uint8_t)(((uint8_t)(x))<<SMC_STOPCTRL_VLLSM_SHIFT))&SMC_STOPCTRL_VLLSM_MASK)
-#define SMC_STOPCTRL_PORPO_MASK                  0x20u
-#define SMC_STOPCTRL_PORPO_SHIFT                 5
-#define SMC_STOPCTRL_PSTOPO_MASK                 0xC0u
-#define SMC_STOPCTRL_PSTOPO_SHIFT                6
-#define SMC_STOPCTRL_PSTOPO(x)                   (((uint8_t)(((uint8_t)(x))<<SMC_STOPCTRL_PSTOPO_SHIFT))&SMC_STOPCTRL_PSTOPO_MASK)
-/* PMSTAT Bit Fields */
-#define SMC_PMSTAT_PMSTAT_MASK                   0xFFu
-#define SMC_PMSTAT_PMSTAT_SHIFT                  0
-#define SMC_PMSTAT_PMSTAT(x)                     (((uint8_t)(((uint8_t)(x))<<SMC_PMSTAT_PMSTAT_SHIFT))&SMC_PMSTAT_PMSTAT_MASK)
-
-/*!
- * @}
- */ /* end of group SMC_Register_Masks */
-
-
-/* SMC - Peripheral instance base addresses */
-/** Peripheral SMC base address */
-#define SMC_BASE                                 (0x4007E000u)
-/** Peripheral SMC base pointer */
-#define SMC                                      ((SMC_Type *)SMC_BASE)
-#define SMC_BASE_PTR                             (SMC)
-/** Array initializer of SMC peripheral base addresses */
-#define SMC_BASE_ADDRS                           { SMC_BASE }
-/** Array initializer of SMC peripheral base pointers */
-#define SMC_BASE_PTRS                            { SMC }
-
-/* ----------------------------------------------------------------------------
-   -- SMC - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SMC_Register_Accessor_Macros SMC - Register accessor macros
- * @{
- */
-
-
-/* SMC - Register instance definitions */
-/* SMC */
-#define SMC_PMPROT                               SMC_PMPROT_REG(SMC)
-#define SMC_PMCTRL                               SMC_PMCTRL_REG(SMC)
-#define SMC_STOPCTRL                             SMC_STOPCTRL_REG(SMC)
-#define SMC_PMSTAT                               SMC_PMSTAT_REG(SMC)
-
-/*!
- * @}
- */ /* end of group SMC_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group SMC_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- SPI Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SPI_Peripheral_Access_Layer SPI Peripheral Access Layer
- * @{
- */
-
-/** SPI - Register Layout Typedef */
-typedef struct {
-  __I  uint8_t S;                                  /**< SPI Status Register, offset: 0x0 */
-  __IO uint8_t BR;                                 /**< SPI Baud Rate Register, offset: 0x1 */
-  __IO uint8_t C2;                                 /**< SPI Control Register 2, offset: 0x2 */
-  __IO uint8_t C1;                                 /**< SPI Control Register 1, offset: 0x3 */
-  __IO uint8_t ML;                                 /**< SPI Match Register low, offset: 0x4 */
-  __IO uint8_t MH;                                 /**< SPI match register high, offset: 0x5 */
-  __IO uint8_t DL;                                 /**< SPI Data Register low, offset: 0x6 */
-  __IO uint8_t DH;                                 /**< SPI data register high, offset: 0x7 */
-       uint8_t RESERVED_0[2];
-  __IO uint8_t CI;                                 /**< SPI clear interrupt register, offset: 0xA */
-  __IO uint8_t C3;                                 /**< SPI control register 3, offset: 0xB */
-} SPI_Type, *SPI_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- SPI - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SPI_Register_Accessor_Macros SPI - Register accessor macros
- * @{
- */
-
-
-/* SPI - Register accessors */
-#define SPI_S_REG(base)                          ((base)->S)
-#define SPI_BR_REG(base)                         ((base)->BR)
-#define SPI_C2_REG(base)                         ((base)->C2)
-#define SPI_C1_REG(base)                         ((base)->C1)
-#define SPI_ML_REG(base)                         ((base)->ML)
-#define SPI_MH_REG(base)                         ((base)->MH)
-#define SPI_DL_REG(base)                         ((base)->DL)
-#define SPI_DH_REG(base)                         ((base)->DH)
-#define SPI_CI_REG(base)                         ((base)->CI)
-#define SPI_C3_REG(base)                         ((base)->C3)
-
-/*!
- * @}
- */ /* end of group SPI_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- SPI Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SPI_Register_Masks SPI Register Masks
- * @{
- */
-
-/* S Bit Fields */
-#define SPI_S_RFIFOEF_MASK                       0x1u
-#define SPI_S_RFIFOEF_SHIFT                      0
-#define SPI_S_TXFULLF_MASK                       0x2u
-#define SPI_S_TXFULLF_SHIFT                      1
-#define SPI_S_TNEAREF_MASK                       0x4u
-#define SPI_S_TNEAREF_SHIFT                      2
-#define SPI_S_RNFULLF_MASK                       0x8u
-#define SPI_S_RNFULLF_SHIFT                      3
-#define SPI_S_MODF_MASK                          0x10u
-#define SPI_S_MODF_SHIFT                         4
-#define SPI_S_SPTEF_MASK                         0x20u
-#define SPI_S_SPTEF_SHIFT                        5
-#define SPI_S_SPMF_MASK                          0x40u
-#define SPI_S_SPMF_SHIFT                         6
-#define SPI_S_SPRF_MASK                          0x80u
-#define SPI_S_SPRF_SHIFT                         7
-/* BR Bit Fields */
-#define SPI_BR_SPR_MASK                          0xFu
-#define SPI_BR_SPR_SHIFT                         0
-#define SPI_BR_SPR(x)                            (((uint8_t)(((uint8_t)(x))<<SPI_BR_SPR_SHIFT))&SPI_BR_SPR_MASK)
-#define SPI_BR_SPPR_MASK                         0x70u
-#define SPI_BR_SPPR_SHIFT                        4
-#define SPI_BR_SPPR(x)                           (((uint8_t)(((uint8_t)(x))<<SPI_BR_SPPR_SHIFT))&SPI_BR_SPPR_MASK)
-/* C2 Bit Fields */
-#define SPI_C2_SPC0_MASK                         0x1u
-#define SPI_C2_SPC0_SHIFT                        0
-#define SPI_C2_SPISWAI_MASK                      0x2u
-#define SPI_C2_SPISWAI_SHIFT                     1
-#define SPI_C2_RXDMAE_MASK                       0x4u
-#define SPI_C2_RXDMAE_SHIFT                      2
-#define SPI_C2_BIDIROE_MASK                      0x8u
-#define SPI_C2_BIDIROE_SHIFT                     3
-#define SPI_C2_MODFEN_MASK                       0x10u
-#define SPI_C2_MODFEN_SHIFT                      4
-#define SPI_C2_TXDMAE_MASK                       0x20u
-#define SPI_C2_TXDMAE_SHIFT                      5
-#define SPI_C2_SPIMODE_MASK                      0x40u
-#define SPI_C2_SPIMODE_SHIFT                     6
-#define SPI_C2_SPMIE_MASK                        0x80u
-#define SPI_C2_SPMIE_SHIFT                       7
-/* C1 Bit Fields */
-#define SPI_C1_LSBFE_MASK                        0x1u
-#define SPI_C1_LSBFE_SHIFT                       0
-#define SPI_C1_SSOE_MASK                         0x2u
-#define SPI_C1_SSOE_SHIFT                        1
-#define SPI_C1_CPHA_MASK                         0x4u
-#define SPI_C1_CPHA_SHIFT                        2
-#define SPI_C1_CPOL_MASK                         0x8u
-#define SPI_C1_CPOL_SHIFT                        3
-#define SPI_C1_MSTR_MASK                         0x10u
-#define SPI_C1_MSTR_SHIFT                        4
-#define SPI_C1_SPTIE_MASK                        0x20u
-#define SPI_C1_SPTIE_SHIFT                       5
-#define SPI_C1_SPE_MASK                          0x40u
-#define SPI_C1_SPE_SHIFT                         6
-#define SPI_C1_SPIE_MASK                         0x80u
-#define SPI_C1_SPIE_SHIFT                        7
-/* ML Bit Fields */
-#define SPI_ML_Bits_MASK                         0xFFu
-#define SPI_ML_Bits_SHIFT                        0
-#define SPI_ML_Bits(x)                           (((uint8_t)(((uint8_t)(x))<<SPI_ML_Bits_SHIFT))&SPI_ML_Bits_MASK)
-/* MH Bit Fields */
-#define SPI_MH_Bits_MASK                         0xFFu
-#define SPI_MH_Bits_SHIFT                        0
-#define SPI_MH_Bits(x)                           (((uint8_t)(((uint8_t)(x))<<SPI_MH_Bits_SHIFT))&SPI_MH_Bits_MASK)
-/* DL Bit Fields */
-#define SPI_DL_Bits_MASK                         0xFFu
-#define SPI_DL_Bits_SHIFT                        0
-#define SPI_DL_Bits(x)                           (((uint8_t)(((uint8_t)(x))<<SPI_DL_Bits_SHIFT))&SPI_DL_Bits_MASK)
-/* DH Bit Fields */
-#define SPI_DH_Bits_MASK                         0xFFu
-#define SPI_DH_Bits_SHIFT                        0
-#define SPI_DH_Bits(x)                           (((uint8_t)(((uint8_t)(x))<<SPI_DH_Bits_SHIFT))&SPI_DH_Bits_MASK)
-/* CI Bit Fields */
-#define SPI_CI_SPRFCI_MASK                       0x1u
-#define SPI_CI_SPRFCI_SHIFT                      0
-#define SPI_CI_SPTEFCI_MASK                      0x2u
-#define SPI_CI_SPTEFCI_SHIFT                     1
-#define SPI_CI_RNFULLFCI_MASK                    0x4u
-#define SPI_CI_RNFULLFCI_SHIFT                   2
-#define SPI_CI_TNEAREFCI_MASK                    0x8u
-#define SPI_CI_TNEAREFCI_SHIFT                   3
-#define SPI_CI_RXFOF_MASK                        0x10u
-#define SPI_CI_RXFOF_SHIFT                       4
-#define SPI_CI_TXFOF_MASK                        0x20u
-#define SPI_CI_TXFOF_SHIFT                       5
-#define SPI_CI_RXFERR_MASK                       0x40u
-#define SPI_CI_RXFERR_SHIFT                      6
-#define SPI_CI_TXFERR_MASK                       0x80u
-#define SPI_CI_TXFERR_SHIFT                      7
-/* C3 Bit Fields */
-#define SPI_C3_FIFOMODE_MASK                     0x1u
-#define SPI_C3_FIFOMODE_SHIFT                    0
-#define SPI_C3_RNFULLIEN_MASK                    0x2u
-#define SPI_C3_RNFULLIEN_SHIFT                   1
-#define SPI_C3_TNEARIEN_MASK                     0x4u
-#define SPI_C3_TNEARIEN_SHIFT                    2
-#define SPI_C3_INTCLR_MASK                       0x8u
-#define SPI_C3_INTCLR_SHIFT                      3
-#define SPI_C3_RNFULLF_MARK_MASK                 0x10u
-#define SPI_C3_RNFULLF_MARK_SHIFT                4
-#define SPI_C3_TNEAREF_MARK_MASK                 0x20u
-#define SPI_C3_TNEAREF_MARK_SHIFT                5
-
-/*!
- * @}
- */ /* end of group SPI_Register_Masks */
-
-
-/* SPI - Peripheral instance base addresses */
-/** Peripheral SPI0 base address */
-#define SPI0_BASE                                (0x40076000u)
-/** Peripheral SPI0 base pointer */
-#define SPI0                                     ((SPI_Type *)SPI0_BASE)
-#define SPI0_BASE_PTR                            (SPI0)
-/** Peripheral SPI1 base address */
-#define SPI1_BASE                                (0x40077000u)
-/** Peripheral SPI1 base pointer */
-#define SPI1                                     ((SPI_Type *)SPI1_BASE)
-#define SPI1_BASE_PTR                            (SPI1)
-/** Array initializer of SPI peripheral base addresses */
-#define SPI_BASE_ADDRS                           { SPI0_BASE, SPI1_BASE }
-/** Array initializer of SPI peripheral base pointers */
-#define SPI_BASE_PTRS                            { SPI0, SPI1 }
-/** Interrupt vectors for the SPI peripheral type */
-#define SPI_IRQS                                 { SPI0_IRQn, SPI1_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- SPI - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup SPI_Register_Accessor_Macros SPI - Register accessor macros
- * @{
- */
-
-
-/* SPI - Register instance definitions */
-/* SPI0 */
-#define SPI0_S                                   SPI_S_REG(SPI0)
-#define SPI0_BR                                  SPI_BR_REG(SPI0)
-#define SPI0_C2                                  SPI_C2_REG(SPI0)
-#define SPI0_C1                                  SPI_C1_REG(SPI0)
-#define SPI0_ML                                  SPI_ML_REG(SPI0)
-#define SPI0_MH                                  SPI_MH_REG(SPI0)
-#define SPI0_DL                                  SPI_DL_REG(SPI0)
-#define SPI0_DH                                  SPI_DH_REG(SPI0)
-/* SPI1 */
-#define SPI1_S                                   SPI_S_REG(SPI1)
-#define SPI1_BR                                  SPI_BR_REG(SPI1)
-#define SPI1_C2                                  SPI_C2_REG(SPI1)
-#define SPI1_C1                                  SPI_C1_REG(SPI1)
-#define SPI1_ML                                  SPI_ML_REG(SPI1)
-#define SPI1_MH                                  SPI_MH_REG(SPI1)
-#define SPI1_DL                                  SPI_DL_REG(SPI1)
-#define SPI1_DH                                  SPI_DH_REG(SPI1)
-#define SPI1_CI                                  SPI_CI_REG(SPI1)
-#define SPI1_C3                                  SPI_C3_REG(SPI1)
-
-/*!
- * @}
- */ /* end of group SPI_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group SPI_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- TPM Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup TPM_Peripheral_Access_Layer TPM Peripheral Access Layer
- * @{
- */
-
-/** TPM - Register Layout Typedef */
-typedef struct {
-  __IO uint32_t SC;                                /**< Status and Control, offset: 0x0 */
-  __IO uint32_t CNT;                               /**< Counter, offset: 0x4 */
-  __IO uint32_t MOD;                               /**< Modulo, offset: 0x8 */
-  struct {                                         /* offset: 0xC, array step: 0x8 */
-    __IO uint32_t CnSC;                              /**< Channel (n) Status and Control, array offset: 0xC, array step: 0x8 */
-    __IO uint32_t CnV;                               /**< Channel (n) Value, array offset: 0x10, array step: 0x8 */
-  } CONTROLS[6];
-       uint8_t RESERVED_0[20];
-  __IO uint32_t STATUS;                            /**< Capture and Compare Status, offset: 0x50 */
-       uint8_t RESERVED_1[28];
-  __IO uint32_t POL;                               /**< Channel Polarity, offset: 0x70 */
-       uint8_t RESERVED_2[16];
-  __IO uint32_t CONF;                              /**< Configuration, offset: 0x84 */
-} TPM_Type, *TPM_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- TPM - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup TPM_Register_Accessor_Macros TPM - Register accessor macros
- * @{
- */
-
-
-/* TPM - Register accessors */
-#define TPM_SC_REG(base)                         ((base)->SC)
-#define TPM_CNT_REG(base)                        ((base)->CNT)
-#define TPM_MOD_REG(base)                        ((base)->MOD)
-#define TPM_CnSC_REG(base,index)                 ((base)->CONTROLS[index].CnSC)
-#define TPM_CnV_REG(base,index)                  ((base)->CONTROLS[index].CnV)
-#define TPM_STATUS_REG(base)                     ((base)->STATUS)
-#define TPM_POL_REG(base)                        ((base)->POL)
-#define TPM_CONF_REG(base)                       ((base)->CONF)
-
-/*!
- * @}
- */ /* end of group TPM_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- TPM Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup TPM_Register_Masks TPM Register Masks
- * @{
- */
-
-/* SC Bit Fields */
-#define TPM_SC_PS_MASK                           0x7u
-#define TPM_SC_PS_SHIFT                          0
-#define TPM_SC_PS(x)                             (((uint32_t)(((uint32_t)(x))<<TPM_SC_PS_SHIFT))&TPM_SC_PS_MASK)
-#define TPM_SC_CMOD_MASK                         0x18u
-#define TPM_SC_CMOD_SHIFT                        3
-#define TPM_SC_CMOD(x)                           (((uint32_t)(((uint32_t)(x))<<TPM_SC_CMOD_SHIFT))&TPM_SC_CMOD_MASK)
-#define TPM_SC_CPWMS_MASK                        0x20u
-#define TPM_SC_CPWMS_SHIFT                       5
-#define TPM_SC_TOIE_MASK                         0x40u
-#define TPM_SC_TOIE_SHIFT                        6
-#define TPM_SC_TOF_MASK                          0x80u
-#define TPM_SC_TOF_SHIFT                         7
-#define TPM_SC_DMA_MASK                          0x100u
-#define TPM_SC_DMA_SHIFT                         8
-/* CNT Bit Fields */
-#define TPM_CNT_COUNT_MASK                       0xFFFFu
-#define TPM_CNT_COUNT_SHIFT                      0
-#define TPM_CNT_COUNT(x)                         (((uint32_t)(((uint32_t)(x))<<TPM_CNT_COUNT_SHIFT))&TPM_CNT_COUNT_MASK)
-/* MOD Bit Fields */
-#define TPM_MOD_MOD_MASK                         0xFFFFu
-#define TPM_MOD_MOD_SHIFT                        0
-#define TPM_MOD_MOD(x)                           (((uint32_t)(((uint32_t)(x))<<TPM_MOD_MOD_SHIFT))&TPM_MOD_MOD_MASK)
-/* CnSC Bit Fields */
-#define TPM_CnSC_DMA_MASK                        0x1u
-#define TPM_CnSC_DMA_SHIFT                       0
-#define TPM_CnSC_ELSA_MASK                       0x4u
-#define TPM_CnSC_ELSA_SHIFT                      2
-#define TPM_CnSC_ELSB_MASK                       0x8u
-#define TPM_CnSC_ELSB_SHIFT                      3
-#define TPM_CnSC_MSA_MASK                        0x10u
-#define TPM_CnSC_MSA_SHIFT                       4
-#define TPM_CnSC_MSB_MASK                        0x20u
-#define TPM_CnSC_MSB_SHIFT                       5
-#define TPM_CnSC_CHIE_MASK                       0x40u
-#define TPM_CnSC_CHIE_SHIFT                      6
-#define TPM_CnSC_CHF_MASK                        0x80u
-#define TPM_CnSC_CHF_SHIFT                       7
-/* CnV Bit Fields */
-#define TPM_CnV_VAL_MASK                         0xFFFFu
-#define TPM_CnV_VAL_SHIFT                        0
-#define TPM_CnV_VAL(x)                           (((uint32_t)(((uint32_t)(x))<<TPM_CnV_VAL_SHIFT))&TPM_CnV_VAL_MASK)
-/* STATUS Bit Fields */
-#define TPM_STATUS_CH0F_MASK                     0x1u
-#define TPM_STATUS_CH0F_SHIFT                    0
-#define TPM_STATUS_CH1F_MASK                     0x2u
-#define TPM_STATUS_CH1F_SHIFT                    1
-#define TPM_STATUS_CH2F_MASK                     0x4u
-#define TPM_STATUS_CH2F_SHIFT                    2
-#define TPM_STATUS_CH3F_MASK                     0x8u
-#define TPM_STATUS_CH3F_SHIFT                    3
-#define TPM_STATUS_CH4F_MASK                     0x10u
-#define TPM_STATUS_CH4F_SHIFT                    4
-#define TPM_STATUS_CH5F_MASK                     0x20u
-#define TPM_STATUS_CH5F_SHIFT                    5
-#define TPM_STATUS_TOF_MASK                      0x100u
-#define TPM_STATUS_TOF_SHIFT                     8
-/* POL Bit Fields */
-#define TPM_POL_POL0_MASK                        0x1u
-#define TPM_POL_POL0_SHIFT                       0
-#define TPM_POL_POL1_MASK                        0x2u
-#define TPM_POL_POL1_SHIFT                       1
-#define TPM_POL_POL2_MASK                        0x4u
-#define TPM_POL_POL2_SHIFT                       2
-#define TPM_POL_POL3_MASK                        0x8u
-#define TPM_POL_POL3_SHIFT                       3
-#define TPM_POL_POL4_MASK                        0x10u
-#define TPM_POL_POL4_SHIFT                       4
-#define TPM_POL_POL5_MASK                        0x20u
-#define TPM_POL_POL5_SHIFT                       5
-/* CONF Bit Fields */
-#define TPM_CONF_DOZEEN_MASK                     0x20u
-#define TPM_CONF_DOZEEN_SHIFT                    5
-#define TPM_CONF_DBGMODE_MASK                    0xC0u
-#define TPM_CONF_DBGMODE_SHIFT                   6
-#define TPM_CONF_DBGMODE(x)                      (((uint32_t)(((uint32_t)(x))<<TPM_CONF_DBGMODE_SHIFT))&TPM_CONF_DBGMODE_MASK)
-#define TPM_CONF_GTBSYNC_MASK                    0x100u
-#define TPM_CONF_GTBSYNC_SHIFT                   8
-#define TPM_CONF_GTBEEN_MASK                     0x200u
-#define TPM_CONF_GTBEEN_SHIFT                    9
-#define TPM_CONF_CSOT_MASK                       0x10000u
-#define TPM_CONF_CSOT_SHIFT                      16
-#define TPM_CONF_CSOO_MASK                       0x20000u
-#define TPM_CONF_CSOO_SHIFT                      17
-#define TPM_CONF_CROT_MASK                       0x40000u
-#define TPM_CONF_CROT_SHIFT                      18
-#define TPM_CONF_CPOT_MASK                       0x80000u
-#define TPM_CONF_CPOT_SHIFT                      19
-#define TPM_CONF_TRGPOL_MASK                     0x400000u
-#define TPM_CONF_TRGPOL_SHIFT                    22
-#define TPM_CONF_TRGSRC_MASK                     0x800000u
-#define TPM_CONF_TRGSRC_SHIFT                    23
-#define TPM_CONF_TRGSEL_MASK                     0xF000000u
-#define TPM_CONF_TRGSEL_SHIFT                    24
-#define TPM_CONF_TRGSEL(x)                       (((uint32_t)(((uint32_t)(x))<<TPM_CONF_TRGSEL_SHIFT))&TPM_CONF_TRGSEL_MASK)
-
-/*!
- * @}
- */ /* end of group TPM_Register_Masks */
-
-
-/* TPM - Peripheral instance base addresses */
-/** Peripheral TPM0 base address */
-#define TPM0_BASE                                (0x40038000u)
-/** Peripheral TPM0 base pointer */
-#define TPM0                                     ((TPM_Type *)TPM0_BASE)
-#define TPM0_BASE_PTR                            (TPM0)
-/** Peripheral TPM1 base address */
-#define TPM1_BASE                                (0x40039000u)
-/** Peripheral TPM1 base pointer */
-#define TPM1                                     ((TPM_Type *)TPM1_BASE)
-#define TPM1_BASE_PTR                            (TPM1)
-/** Peripheral TPM2 base address */
-#define TPM2_BASE                                (0x4003A000u)
-/** Peripheral TPM2 base pointer */
-#define TPM2                                     ((TPM_Type *)TPM2_BASE)
-#define TPM2_BASE_PTR                            (TPM2)
-/** Array initializer of TPM peripheral base addresses */
-#define TPM_BASE_ADDRS                           { TPM0_BASE, TPM1_BASE, TPM2_BASE }
-/** Array initializer of TPM peripheral base pointers */
-#define TPM_BASE_PTRS                            { TPM0, TPM1, TPM2 }
-/** Interrupt vectors for the TPM peripheral type */
-#define TPM_IRQS                                 { TPM0_IRQn, TPM1_IRQn, TPM2_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- TPM - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup TPM_Register_Accessor_Macros TPM - Register accessor macros
- * @{
- */
-
-
-/* TPM - Register instance definitions */
-/* TPM0 */
-#define TPM0_SC                                  TPM_SC_REG(TPM0)
-#define TPM0_CNT                                 TPM_CNT_REG(TPM0)
-#define TPM0_MOD                                 TPM_MOD_REG(TPM0)
-#define TPM0_C0SC                                TPM_CnSC_REG(TPM0,0)
-#define TPM0_C0V                                 TPM_CnV_REG(TPM0,0)
-#define TPM0_C1SC                                TPM_CnSC_REG(TPM0,1)
-#define TPM0_C1V                                 TPM_CnV_REG(TPM0,1)
-#define TPM0_C2SC                                TPM_CnSC_REG(TPM0,2)
-#define TPM0_C2V                                 TPM_CnV_REG(TPM0,2)
-#define TPM0_C3SC                                TPM_CnSC_REG(TPM0,3)
-#define TPM0_C3V                                 TPM_CnV_REG(TPM0,3)
-#define TPM0_C4SC                                TPM_CnSC_REG(TPM0,4)
-#define TPM0_C4V                                 TPM_CnV_REG(TPM0,4)
-#define TPM0_C5SC                                TPM_CnSC_REG(TPM0,5)
-#define TPM0_C5V                                 TPM_CnV_REG(TPM0,5)
-#define TPM0_STATUS                              TPM_STATUS_REG(TPM0)
-#define TPM0_POL                                 TPM_POL_REG(TPM0)
-#define TPM0_CONF                                TPM_CONF_REG(TPM0)
-/* TPM1 */
-#define TPM1_SC                                  TPM_SC_REG(TPM1)
-#define TPM1_CNT                                 TPM_CNT_REG(TPM1)
-#define TPM1_MOD                                 TPM_MOD_REG(TPM1)
-#define TPM1_C0SC                                TPM_CnSC_REG(TPM1,0)
-#define TPM1_C0V                                 TPM_CnV_REG(TPM1,0)
-#define TPM1_C1SC                                TPM_CnSC_REG(TPM1,1)
-#define TPM1_C1V                                 TPM_CnV_REG(TPM1,1)
-#define TPM1_STATUS                              TPM_STATUS_REG(TPM1)
-#define TPM1_POL                                 TPM_POL_REG(TPM1)
-#define TPM1_CONF                                TPM_CONF_REG(TPM1)
-/* TPM2 */
-#define TPM2_SC                                  TPM_SC_REG(TPM2)
-#define TPM2_CNT                                 TPM_CNT_REG(TPM2)
-#define TPM2_MOD                                 TPM_MOD_REG(TPM2)
-#define TPM2_C0SC                                TPM_CnSC_REG(TPM2,0)
-#define TPM2_C0V                                 TPM_CnV_REG(TPM2,0)
-#define TPM2_C1SC                                TPM_CnSC_REG(TPM2,1)
-#define TPM2_C1V                                 TPM_CnV_REG(TPM2,1)
-#define TPM2_STATUS                              TPM_STATUS_REG(TPM2)
-#define TPM2_POL                                 TPM_POL_REG(TPM2)
-#define TPM2_CONF                                TPM_CONF_REG(TPM2)
-
-/* TPM - Register array accessors */
-#define TPM0_CnSC(index)                         TPM_CnSC_REG(TPM0,index)
-#define TPM1_CnSC(index)                         TPM_CnSC_REG(TPM1,index)
-#define TPM2_CnSC(index)                         TPM_CnSC_REG(TPM2,index)
-#define TPM0_CnV(index)                          TPM_CnV_REG(TPM0,index)
-#define TPM1_CnV(index)                          TPM_CnV_REG(TPM1,index)
-#define TPM2_CnV(index)                          TPM_CnV_REG(TPM2,index)
-
-/*!
- * @}
- */ /* end of group TPM_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group TPM_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- UART Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup UART_Peripheral_Access_Layer UART Peripheral Access Layer
- * @{
- */
-
-/** UART - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t BDH;                                /**< UART Baud Rate Registers: High, offset: 0x0 */
-  __IO uint8_t BDL;                                /**< UART Baud Rate Registers: Low, offset: 0x1 */
-  __IO uint8_t C1;                                 /**< UART Control Register 1, offset: 0x2 */
-  __IO uint8_t C2;                                 /**< UART Control Register 2, offset: 0x3 */
-  __I  uint8_t S1;                                 /**< UART Status Register 1, offset: 0x4 */
-  __IO uint8_t S2;                                 /**< UART Status Register 2, offset: 0x5 */
-  __IO uint8_t C3;                                 /**< UART Control Register 3, offset: 0x6 */
-  __IO uint8_t D;                                  /**< UART Data Register, offset: 0x7 */
-  __IO uint8_t MA1;                                /**< UART Match Address Registers 1, offset: 0x8 */
-  __IO uint8_t MA2;                                /**< UART Match Address Registers 2, offset: 0x9 */
-  __IO uint8_t C4;                                 /**< UART Control Register 4, offset: 0xA */
-  __IO uint8_t C5;                                 /**< UART Control Register 5, offset: 0xB */
-       uint8_t RESERVED_0[12];
-  __IO uint8_t C7816;                              /**< UART 7816 Control Register, offset: 0x18 */
-  __IO uint8_t IE7816;                             /**< UART 7816 Interrupt Enable Register, offset: 0x19 */
-  __IO uint8_t IS7816;                             /**< UART 7816 Interrupt Status Register, offset: 0x1A */
-  __IO uint8_t WP7816;                             /**< UART 7816 Wait Parameter Register, offset: 0x1B */
-  __IO uint8_t WN7816;                             /**< UART 7816 Wait N Register, offset: 0x1C */
-  __IO uint8_t WF7816;                             /**< UART 7816 Wait FD Register, offset: 0x1D */
-  __IO uint8_t ET7816;                             /**< UART 7816 Error Threshold Register, offset: 0x1E */
-  __IO uint8_t TL7816;                             /**< UART 7816 Transmit Length Register, offset: 0x1F */
-       uint8_t RESERVED_1[26];
-  __IO uint8_t AP7816A_T0;                         /**< UART 7816 ATR Duration Timer Register A, offset: 0x3A */
-  __IO uint8_t AP7816B_T0;                         /**< UART 7816 ATR Duration Timer Register B, offset: 0x3B */
-  union {                                          /* offset: 0x3C */
-    struct {                                         /* offset: 0x3C */
-      __IO uint8_t WP7816A_T0;                         /**< UART 7816 Wait Parameter Register A, offset: 0x3C */
-      __IO uint8_t WP7816B_T0;                         /**< UART 7816 Wait Parameter Register B, offset: 0x3D */
-    } TYPE0;
-    struct {                                         /* offset: 0x3C */
-      __IO uint8_t WP7816A_T1;                         /**< UART 7816 Wait Parameter Register A, offset: 0x3C */
-      __IO uint8_t WP7816B_T1;                         /**< UART 7816 Wait Parameter Register B, offset: 0x3D */
-    } TYPE1;
-  };
-  __IO uint8_t WGP7816_T1;                         /**< UART 7816 Wait and Guard Parameter Register, offset: 0x3E */
-  __IO uint8_t WP7816C_T1;                         /**< UART 7816 Wait Parameter Register C, offset: 0x3F */
-} UART_Type, *UART_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- UART - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup UART_Register_Accessor_Macros UART - Register accessor macros
- * @{
- */
-
-
-/* UART - Register accessors */
-#define UART_BDH_REG(base)                       ((base)->BDH)
-#define UART_BDL_REG(base)                       ((base)->BDL)
-#define UART_C1_REG(base)                        ((base)->C1)
-#define UART_C2_REG(base)                        ((base)->C2)
-#define UART_S1_REG(base)                        ((base)->S1)
-#define UART_S2_REG(base)                        ((base)->S2)
-#define UART_C3_REG(base)                        ((base)->C3)
-#define UART_D_REG(base)                         ((base)->D)
-#define UART_MA1_REG(base)                       ((base)->MA1)
-#define UART_MA2_REG(base)                       ((base)->MA2)
-#define UART_C4_REG(base)                        ((base)->C4)
-#define UART_C5_REG(base)                        ((base)->C5)
-#define UART_C7816_REG(base)                     ((base)->C7816)
-#define UART_IE7816_REG(base)                    ((base)->IE7816)
-#define UART_IS7816_REG(base)                    ((base)->IS7816)
-#define UART_WP7816_REG(base)                    ((base)->WP7816)
-#define UART_WN7816_REG(base)                    ((base)->WN7816)
-#define UART_WF7816_REG(base)                    ((base)->WF7816)
-#define UART_ET7816_REG(base)                    ((base)->ET7816)
-#define UART_TL7816_REG(base)                    ((base)->TL7816)
-#define UART_AP7816A_T0_REG(base)                ((base)->AP7816A_T0)
-#define UART_AP7816B_T0_REG(base)                ((base)->AP7816B_T0)
-#define UART_WP7816A_T0_REG(base)                ((base)->TYPE0.WP7816A_T0)
-#define UART_WP7816B_T0_REG(base)                ((base)->TYPE0.WP7816B_T0)
-#define UART_WP7816A_T1_REG(base)                ((base)->TYPE1.WP7816A_T1)
-#define UART_WP7816B_T1_REG(base)                ((base)->TYPE1.WP7816B_T1)
-#define UART_WGP7816_T1_REG(base)                ((base)->WGP7816_T1)
-#define UART_WP7816C_T1_REG(base)                ((base)->WP7816C_T1)
-
-/*!
- * @}
- */ /* end of group UART_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- UART Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup UART_Register_Masks UART Register Masks
- * @{
- */
-
-/* BDH Bit Fields */
-#define UART_BDH_SBR_MASK                        0x1Fu
-#define UART_BDH_SBR_SHIFT                       0
-#define UART_BDH_SBR(x)                          (((uint8_t)(((uint8_t)(x))<<UART_BDH_SBR_SHIFT))&UART_BDH_SBR_MASK)
-#define UART_BDH_RXEDGIE_MASK                    0x40u
-#define UART_BDH_RXEDGIE_SHIFT                   6
-/* BDL Bit Fields */
-#define UART_BDL_SBR_MASK                        0xFFu
-#define UART_BDL_SBR_SHIFT                       0
-#define UART_BDL_SBR(x)                          (((uint8_t)(((uint8_t)(x))<<UART_BDL_SBR_SHIFT))&UART_BDL_SBR_MASK)
-/* C1 Bit Fields */
-#define UART_C1_PT_MASK                          0x1u
-#define UART_C1_PT_SHIFT                         0
-#define UART_C1_PE_MASK                          0x2u
-#define UART_C1_PE_SHIFT                         1
-#define UART_C1_ILT_MASK                         0x4u
-#define UART_C1_ILT_SHIFT                        2
-#define UART_C1_WAKE_MASK                        0x8u
-#define UART_C1_WAKE_SHIFT                       3
-#define UART_C1_M_MASK                           0x10u
-#define UART_C1_M_SHIFT                          4
-#define UART_C1_RSRC_MASK                        0x20u
-#define UART_C1_RSRC_SHIFT                       5
-#define UART_C1_LOOPS_MASK                       0x80u
-#define UART_C1_LOOPS_SHIFT                      7
-/* C2 Bit Fields */
-#define UART_C2_SBK_MASK                         0x1u
-#define UART_C2_SBK_SHIFT                        0
-#define UART_C2_RWU_MASK                         0x2u
-#define UART_C2_RWU_SHIFT                        1
-#define UART_C2_RE_MASK                          0x4u
-#define UART_C2_RE_SHIFT                         2
-#define UART_C2_TE_MASK                          0x8u
-#define UART_C2_TE_SHIFT                         3
-#define UART_C2_ILIE_MASK                        0x10u
-#define UART_C2_ILIE_SHIFT                       4
-#define UART_C2_RIE_MASK                         0x20u
-#define UART_C2_RIE_SHIFT                        5
-#define UART_C2_TCIE_MASK                        0x40u
-#define UART_C2_TCIE_SHIFT                       6
-#define UART_C2_TIE_MASK                         0x80u
-#define UART_C2_TIE_SHIFT                        7
-/* S1 Bit Fields */
-#define UART_S1_PF_MASK                          0x1u
-#define UART_S1_PF_SHIFT                         0
-#define UART_S1_FE_MASK                          0x2u
-#define UART_S1_FE_SHIFT                         1
-#define UART_S1_NF_MASK                          0x4u
-#define UART_S1_NF_SHIFT                         2
-#define UART_S1_OR_MASK                          0x8u
-#define UART_S1_OR_SHIFT                         3
-#define UART_S1_IDLE_MASK                        0x10u
-#define UART_S1_IDLE_SHIFT                       4
-#define UART_S1_RDRF_MASK                        0x20u
-#define UART_S1_RDRF_SHIFT                       5
-#define UART_S1_TC_MASK                          0x40u
-#define UART_S1_TC_SHIFT                         6
-#define UART_S1_TDRE_MASK                        0x80u
-#define UART_S1_TDRE_SHIFT                       7
-/* S2 Bit Fields */
-#define UART_S2_RAF_MASK                         0x1u
-#define UART_S2_RAF_SHIFT                        0
-#define UART_S2_BRK13_MASK                       0x4u
-#define UART_S2_BRK13_SHIFT                      2
-#define UART_S2_RWUID_MASK                       0x8u
-#define UART_S2_RWUID_SHIFT                      3
-#define UART_S2_RXINV_MASK                       0x10u
-#define UART_S2_RXINV_SHIFT                      4
-#define UART_S2_MSBF_MASK                        0x20u
-#define UART_S2_MSBF_SHIFT                       5
-#define UART_S2_RXEDGIF_MASK                     0x40u
-#define UART_S2_RXEDGIF_SHIFT                    6
-/* C3 Bit Fields */
-#define UART_C3_PEIE_MASK                        0x1u
-#define UART_C3_PEIE_SHIFT                       0
-#define UART_C3_FEIE_MASK                        0x2u
-#define UART_C3_FEIE_SHIFT                       1
-#define UART_C3_NEIE_MASK                        0x4u
-#define UART_C3_NEIE_SHIFT                       2
-#define UART_C3_ORIE_MASK                        0x8u
-#define UART_C3_ORIE_SHIFT                       3
-#define UART_C3_TXINV_MASK                       0x10u
-#define UART_C3_TXINV_SHIFT                      4
-#define UART_C3_TXDIR_MASK                       0x20u
-#define UART_C3_TXDIR_SHIFT                      5
-#define UART_C3_T8_MASK                          0x40u
-#define UART_C3_T8_SHIFT                         6
-#define UART_C3_R8_MASK                          0x80u
-#define UART_C3_R8_SHIFT                         7
-/* D Bit Fields */
-#define UART_D_RT_MASK                           0xFFu
-#define UART_D_RT_SHIFT                          0
-#define UART_D_RT(x)                             (((uint8_t)(((uint8_t)(x))<<UART_D_RT_SHIFT))&UART_D_RT_MASK)
-/* MA1 Bit Fields */
-#define UART_MA1_MA_MASK                         0xFFu
-#define UART_MA1_MA_SHIFT                        0
-#define UART_MA1_MA(x)                           (((uint8_t)(((uint8_t)(x))<<UART_MA1_MA_SHIFT))&UART_MA1_MA_MASK)
-/* MA2 Bit Fields */
-#define UART_MA2_MA_MASK                         0xFFu
-#define UART_MA2_MA_SHIFT                        0
-#define UART_MA2_MA(x)                           (((uint8_t)(((uint8_t)(x))<<UART_MA2_MA_SHIFT))&UART_MA2_MA_MASK)
-/* C4 Bit Fields */
-#define UART_C4_BRFA_MASK                        0x1Fu
-#define UART_C4_BRFA_SHIFT                       0
-#define UART_C4_BRFA(x)                          (((uint8_t)(((uint8_t)(x))<<UART_C4_BRFA_SHIFT))&UART_C4_BRFA_MASK)
-#define UART_C4_M10_MASK                         0x20u
-#define UART_C4_M10_SHIFT                        5
-#define UART_C4_MAEN2_MASK                       0x40u
-#define UART_C4_MAEN2_SHIFT                      6
-#define UART_C4_MAEN1_MASK                       0x80u
-#define UART_C4_MAEN1_SHIFT                      7
-/* C5 Bit Fields */
-#define UART_C5_RDMAS_MASK                       0x20u
-#define UART_C5_RDMAS_SHIFT                      5
-#define UART_C5_TDMAS_MASK                       0x80u
-#define UART_C5_TDMAS_SHIFT                      7
-/* C7816 Bit Fields */
-#define UART_C7816_ISO_7816E_MASK                0x1u
-#define UART_C7816_ISO_7816E_SHIFT               0
-#define UART_C7816_TTYPE_MASK                    0x2u
-#define UART_C7816_TTYPE_SHIFT                   1
-#define UART_C7816_INIT_MASK                     0x4u
-#define UART_C7816_INIT_SHIFT                    2
-#define UART_C7816_ANACK_MASK                    0x8u
-#define UART_C7816_ANACK_SHIFT                   3
-#define UART_C7816_ONACK_MASK                    0x10u
-#define UART_C7816_ONACK_SHIFT                   4
-/* IE7816 Bit Fields */
-#define UART_IE7816_RXTE_MASK                    0x1u
-#define UART_IE7816_RXTE_SHIFT                   0
-#define UART_IE7816_TXTE_MASK                    0x2u
-#define UART_IE7816_TXTE_SHIFT                   1
-#define UART_IE7816_GTVE_MASK                    0x4u
-#define UART_IE7816_GTVE_SHIFT                   2
-#define UART_IE7816_ADTE_MASK                    0x8u
-#define UART_IE7816_ADTE_SHIFT                   3
-#define UART_IE7816_INITDE_MASK                  0x10u
-#define UART_IE7816_INITDE_SHIFT                 4
-#define UART_IE7816_BWTE_MASK                    0x20u
-#define UART_IE7816_BWTE_SHIFT                   5
-#define UART_IE7816_CWTE_MASK                    0x40u
-#define UART_IE7816_CWTE_SHIFT                   6
-#define UART_IE7816_WTE_MASK                     0x80u
-#define UART_IE7816_WTE_SHIFT                    7
-/* IS7816 Bit Fields */
-#define UART_IS7816_RXT_MASK                     0x1u
-#define UART_IS7816_RXT_SHIFT                    0
-#define UART_IS7816_TXT_MASK                     0x2u
-#define UART_IS7816_TXT_SHIFT                    1
-#define UART_IS7816_GTV_MASK                     0x4u
-#define UART_IS7816_GTV_SHIFT                    2
-#define UART_IS7816_ADT_MASK                     0x8u
-#define UART_IS7816_ADT_SHIFT                    3
-#define UART_IS7816_INITD_MASK                   0x10u
-#define UART_IS7816_INITD_SHIFT                  4
-#define UART_IS7816_BWT_MASK                     0x20u
-#define UART_IS7816_BWT_SHIFT                    5
-#define UART_IS7816_CWT_MASK                     0x40u
-#define UART_IS7816_CWT_SHIFT                    6
-#define UART_IS7816_WT_MASK                      0x80u
-#define UART_IS7816_WT_SHIFT                     7
-/* WP7816 Bit Fields */
-#define UART_WP7816_WTX_MASK                     0xFFu
-#define UART_WP7816_WTX_SHIFT                    0
-#define UART_WP7816_WTX(x)                       (((uint8_t)(((uint8_t)(x))<<UART_WP7816_WTX_SHIFT))&UART_WP7816_WTX_MASK)
-/* WN7816 Bit Fields */
-#define UART_WN7816_GTN_MASK                     0xFFu
-#define UART_WN7816_GTN_SHIFT                    0
-#define UART_WN7816_GTN(x)                       (((uint8_t)(((uint8_t)(x))<<UART_WN7816_GTN_SHIFT))&UART_WN7816_GTN_MASK)
-/* WF7816 Bit Fields */
-#define UART_WF7816_GTFD_MASK                    0xFFu
-#define UART_WF7816_GTFD_SHIFT                   0
-#define UART_WF7816_GTFD(x)                      (((uint8_t)(((uint8_t)(x))<<UART_WF7816_GTFD_SHIFT))&UART_WF7816_GTFD_MASK)
-/* ET7816 Bit Fields */
-#define UART_ET7816_RXTHRESHOLD_MASK             0xFu
-#define UART_ET7816_RXTHRESHOLD_SHIFT            0
-#define UART_ET7816_RXTHRESHOLD(x)               (((uint8_t)(((uint8_t)(x))<<UART_ET7816_RXTHRESHOLD_SHIFT))&UART_ET7816_RXTHRESHOLD_MASK)
-#define UART_ET7816_TXTHRESHOLD_MASK             0xF0u
-#define UART_ET7816_TXTHRESHOLD_SHIFT            4
-#define UART_ET7816_TXTHRESHOLD(x)               (((uint8_t)(((uint8_t)(x))<<UART_ET7816_TXTHRESHOLD_SHIFT))&UART_ET7816_TXTHRESHOLD_MASK)
-/* TL7816 Bit Fields */
-#define UART_TL7816_TLEN_MASK                    0xFFu
-#define UART_TL7816_TLEN_SHIFT                   0
-#define UART_TL7816_TLEN(x)                      (((uint8_t)(((uint8_t)(x))<<UART_TL7816_TLEN_SHIFT))&UART_TL7816_TLEN_MASK)
-/* AP7816A_T0 Bit Fields */
-#define UART_AP7816A_T0_ADTI_H_MASK              0xFFu
-#define UART_AP7816A_T0_ADTI_H_SHIFT             0
-#define UART_AP7816A_T0_ADTI_H(x)                (((uint8_t)(((uint8_t)(x))<<UART_AP7816A_T0_ADTI_H_SHIFT))&UART_AP7816A_T0_ADTI_H_MASK)
-/* AP7816B_T0 Bit Fields */
-#define UART_AP7816B_T0_ADTI_L_MASK              0xFFu
-#define UART_AP7816B_T0_ADTI_L_SHIFT             0
-#define UART_AP7816B_T0_ADTI_L(x)                (((uint8_t)(((uint8_t)(x))<<UART_AP7816B_T0_ADTI_L_SHIFT))&UART_AP7816B_T0_ADTI_L_MASK)
-/* WP7816A_T0 Bit Fields */
-#define UART_WP7816A_T0_WI_H_MASK                0xFFu
-#define UART_WP7816A_T0_WI_H_SHIFT               0
-#define UART_WP7816A_T0_WI_H(x)                  (((uint8_t)(((uint8_t)(x))<<UART_WP7816A_T0_WI_H_SHIFT))&UART_WP7816A_T0_WI_H_MASK)
-/* WP7816B_T0 Bit Fields */
-#define UART_WP7816B_T0_WI_L_MASK                0xFFu
-#define UART_WP7816B_T0_WI_L_SHIFT               0
-#define UART_WP7816B_T0_WI_L(x)                  (((uint8_t)(((uint8_t)(x))<<UART_WP7816B_T0_WI_L_SHIFT))&UART_WP7816B_T0_WI_L_MASK)
-/* WP7816A_T1 Bit Fields */
-#define UART_WP7816A_T1_BWI_H_MASK               0xFFu
-#define UART_WP7816A_T1_BWI_H_SHIFT              0
-#define UART_WP7816A_T1_BWI_H(x)                 (((uint8_t)(((uint8_t)(x))<<UART_WP7816A_T1_BWI_H_SHIFT))&UART_WP7816A_T1_BWI_H_MASK)
-/* WP7816B_T1 Bit Fields */
-#define UART_WP7816B_T1_BWI_L_MASK               0xFFu
-#define UART_WP7816B_T1_BWI_L_SHIFT              0
-#define UART_WP7816B_T1_BWI_L(x)                 (((uint8_t)(((uint8_t)(x))<<UART_WP7816B_T1_BWI_L_SHIFT))&UART_WP7816B_T1_BWI_L_MASK)
-/* WGP7816_T1 Bit Fields */
-#define UART_WGP7816_T1_BGI_MASK                 0xFu
-#define UART_WGP7816_T1_BGI_SHIFT                0
-#define UART_WGP7816_T1_BGI(x)                   (((uint8_t)(((uint8_t)(x))<<UART_WGP7816_T1_BGI_SHIFT))&UART_WGP7816_T1_BGI_MASK)
-#define UART_WGP7816_T1_CWI1_MASK                0xF0u
-#define UART_WGP7816_T1_CWI1_SHIFT               4
-#define UART_WGP7816_T1_CWI1(x)                  (((uint8_t)(((uint8_t)(x))<<UART_WGP7816_T1_CWI1_SHIFT))&UART_WGP7816_T1_CWI1_MASK)
-/* WP7816C_T1 Bit Fields */
-#define UART_WP7816C_T1_CWI2_MASK                0x1Fu
-#define UART_WP7816C_T1_CWI2_SHIFT               0
-#define UART_WP7816C_T1_CWI2(x)                  (((uint8_t)(((uint8_t)(x))<<UART_WP7816C_T1_CWI2_SHIFT))&UART_WP7816C_T1_CWI2_MASK)
-
-/*!
- * @}
- */ /* end of group UART_Register_Masks */
-
-
-/* UART - Peripheral instance base addresses */
-/** Peripheral UART2 base address */
-#define UART2_BASE                               (0x4006C000u)
-/** Peripheral UART2 base pointer */
-#define UART2                                    ((UART_Type *)UART2_BASE)
-#define UART2_BASE_PTR                           (UART2)
-/** Array initializer of UART peripheral base addresses */
-#define UART_BASE_ADDRS                          { UART2_BASE }
-/** Array initializer of UART peripheral base pointers */
-#define UART_BASE_PTRS                           { UART2 }
-/** Interrupt vectors for the UART peripheral type */
-#define UART_RX_TX_IRQS                          { UART2_FLEXIO_IRQn }
-#define UART_ERR_IRQS                            { UART2_FLEXIO_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- UART - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup UART_Register_Accessor_Macros UART - Register accessor macros
- * @{
- */
-
-
-/* UART - Register instance definitions */
-/* UART2 */
-#define UART2_BDH                                UART_BDH_REG(UART2)
-#define UART2_BDL                                UART_BDL_REG(UART2)
-#define UART2_C1                                 UART_C1_REG(UART2)
-#define UART2_C2                                 UART_C2_REG(UART2)
-#define UART2_S1                                 UART_S1_REG(UART2)
-#define UART2_S2                                 UART_S2_REG(UART2)
-#define UART2_C3                                 UART_C3_REG(UART2)
-#define UART2_D                                  UART_D_REG(UART2)
-#define UART2_MA1                                UART_MA1_REG(UART2)
-#define UART2_MA2                                UART_MA2_REG(UART2)
-#define UART2_C4                                 UART_C4_REG(UART2)
-#define UART2_C5                                 UART_C5_REG(UART2)
-#define UART2_C7816                              UART_C7816_REG(UART2)
-#define UART2_IE7816                             UART_IE7816_REG(UART2)
-#define UART2_IS7816                             UART_IS7816_REG(UART2)
-#define UART2_WP7816                             UART_WP7816_REG(UART2)
-#define UART2_WN7816                             UART_WN7816_REG(UART2)
-#define UART2_WF7816                             UART_WF7816_REG(UART2)
-#define UART2_ET7816                             UART_ET7816_REG(UART2)
-#define UART2_TL7816                             UART_TL7816_REG(UART2)
-#define UART2_AP7816A_T0                         UART_AP7816A_T0_REG(UART2)
-#define UART2_AP7816B_T0                         UART_AP7816B_T0_REG(UART2)
-#define UART2_WP7816A_T0                         UART_WP7816A_T0_REG(UART2)
-#define UART2_WP7816A_T1                         UART_WP7816A_T1_REG(UART2)
-#define UART2_WP7816B_T0                         UART_WP7816B_T0_REG(UART2)
-#define UART2_WP7816B_T1                         UART_WP7816B_T1_REG(UART2)
-#define UART2_WGP7816_T1                         UART_WGP7816_T1_REG(UART2)
-#define UART2_WP7816C_T1                         UART_WP7816C_T1_REG(UART2)
-
-/*!
- * @}
- */ /* end of group UART_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group UART_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- USB Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup USB_Peripheral_Access_Layer USB Peripheral Access Layer
- * @{
- */
-
-/** USB - Register Layout Typedef */
-typedef struct {
-  __I  uint8_t PERID;                              /**< Peripheral ID register, offset: 0x0 */
-       uint8_t RESERVED_0[3];
-  __I  uint8_t IDCOMP;                             /**< Peripheral ID Complement register, offset: 0x4 */
-       uint8_t RESERVED_1[3];
-  __I  uint8_t REV;                                /**< Peripheral Revision register, offset: 0x8 */
-       uint8_t RESERVED_2[3];
-  __I  uint8_t ADDINFO;                            /**< Peripheral Additional Info register, offset: 0xC */
-       uint8_t RESERVED_3[15];
-  __IO uint8_t OTGCTL;                             /**< OTG Control register, offset: 0x1C */
-       uint8_t RESERVED_4[99];
-  __IO uint8_t ISTAT;                              /**< Interrupt Status register, offset: 0x80 */
-       uint8_t RESERVED_5[3];
-  __IO uint8_t INTEN;                              /**< Interrupt Enable register, offset: 0x84 */
-       uint8_t RESERVED_6[3];
-  __IO uint8_t ERRSTAT;                            /**< Error Interrupt Status register, offset: 0x88 */
-       uint8_t RESERVED_7[3];
-  __IO uint8_t ERREN;                              /**< Error Interrupt Enable register, offset: 0x8C */
-       uint8_t RESERVED_8[3];
-  __I  uint8_t STAT;                               /**< Status register, offset: 0x90 */
-       uint8_t RESERVED_9[3];
-  __IO uint8_t CTL;                                /**< Control register, offset: 0x94 */
-       uint8_t RESERVED_10[3];
-  __IO uint8_t ADDR;                               /**< Address register, offset: 0x98 */
-       uint8_t RESERVED_11[3];
-  __IO uint8_t BDTPAGE1;                           /**< BDT Page register 1, offset: 0x9C */
-       uint8_t RESERVED_12[3];
-  __IO uint8_t FRMNUML;                            /**< Frame Number register Low, offset: 0xA0 */
-       uint8_t RESERVED_13[3];
-  __IO uint8_t FRMNUMH;                            /**< Frame Number register High, offset: 0xA4 */
-       uint8_t RESERVED_14[11];
-  __IO uint8_t BDTPAGE2;                           /**< BDT Page Register 2, offset: 0xB0 */
-       uint8_t RESERVED_15[3];
-  __IO uint8_t BDTPAGE3;                           /**< BDT Page Register 3, offset: 0xB4 */
-       uint8_t RESERVED_16[11];
-  struct {                                         /* offset: 0xC0, array step: 0x4 */
-    __IO uint8_t ENDPT;                              /**< Endpoint Control register, array offset: 0xC0, array step: 0x4 */
-         uint8_t RESERVED_0[3];
-  } ENDPOINT[16];
-  __IO uint8_t USBCTRL;                            /**< USB Control register, offset: 0x100 */
-       uint8_t RESERVED_17[3];
-  __I  uint8_t OBSERVE;                            /**< USB OTG Observe register, offset: 0x104 */
-       uint8_t RESERVED_18[3];
-  __IO uint8_t CONTROL;                            /**< USB OTG Control register, offset: 0x108 */
-       uint8_t RESERVED_19[3];
-  __IO uint8_t USBTRC0;                            /**< USB Transceiver Control register 0, offset: 0x10C */
-       uint8_t RESERVED_20[7];
-  __IO uint8_t USBFRMADJUST;                       /**< Frame Adjust Register, offset: 0x114 */
-       uint8_t RESERVED_21[43];
-  __IO uint8_t CLK_RECOVER_CTRL;                   /**< USB Clock recovery control, offset: 0x140 */
-       uint8_t RESERVED_22[3];
-  __IO uint8_t CLK_RECOVER_IRC_EN;                 /**< IRC48M oscillator enable register, offset: 0x144 */
-       uint8_t RESERVED_23[15];
-  __IO uint8_t CLK_RECOVER_INT_EN;                 /**< Clock recovery combined interrupt enable, offset: 0x154 */
-       uint8_t RESERVED_24[7];
-  __IO uint8_t CLK_RECOVER_INT_STATUS;             /**< Clock recovery separated interrupt status, offset: 0x15C */
-} USB_Type, *USB_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- USB - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup USB_Register_Accessor_Macros USB - Register accessor macros
- * @{
- */
-
-
-/* USB - Register accessors */
-#define USB_PERID_REG(base)                      ((base)->PERID)
-#define USB_IDCOMP_REG(base)                     ((base)->IDCOMP)
-#define USB_REV_REG(base)                        ((base)->REV)
-#define USB_ADDINFO_REG(base)                    ((base)->ADDINFO)
-#define USB_OTGCTL_REG(base)                     ((base)->OTGCTL)
-#define USB_ISTAT_REG(base)                      ((base)->ISTAT)
-#define USB_INTEN_REG(base)                      ((base)->INTEN)
-#define USB_ERRSTAT_REG(base)                    ((base)->ERRSTAT)
-#define USB_ERREN_REG(base)                      ((base)->ERREN)
-#define USB_STAT_REG(base)                       ((base)->STAT)
-#define USB_CTL_REG(base)                        ((base)->CTL)
-#define USB_ADDR_REG(base)                       ((base)->ADDR)
-#define USB_BDTPAGE1_REG(base)                   ((base)->BDTPAGE1)
-#define USB_FRMNUML_REG(base)                    ((base)->FRMNUML)
-#define USB_FRMNUMH_REG(base)                    ((base)->FRMNUMH)
-#define USB_BDTPAGE2_REG(base)                   ((base)->BDTPAGE2)
-#define USB_BDTPAGE3_REG(base)                   ((base)->BDTPAGE3)
-#define USB_ENDPT_REG(base,index)                ((base)->ENDPOINT[index].ENDPT)
-#define USB_USBCTRL_REG(base)                    ((base)->USBCTRL)
-#define USB_OBSERVE_REG(base)                    ((base)->OBSERVE)
-#define USB_CONTROL_REG(base)                    ((base)->CONTROL)
-#define USB_USBTRC0_REG(base)                    ((base)->USBTRC0)
-#define USB_USBFRMADJUST_REG(base)               ((base)->USBFRMADJUST)
-#define USB_CLK_RECOVER_CTRL_REG(base)           ((base)->CLK_RECOVER_CTRL)
-#define USB_CLK_RECOVER_IRC_EN_REG(base)         ((base)->CLK_RECOVER_IRC_EN)
-#define USB_CLK_RECOVER_INT_EN_REG(base)         ((base)->CLK_RECOVER_INT_EN)
-#define USB_CLK_RECOVER_INT_STATUS_REG(base)     ((base)->CLK_RECOVER_INT_STATUS)
-
-/*!
- * @}
- */ /* end of group USB_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- USB Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup USB_Register_Masks USB Register Masks
- * @{
- */
-
-/* PERID Bit Fields */
-#define USB_PERID_ID_MASK                        0x3Fu
-#define USB_PERID_ID_SHIFT                       0
-#define USB_PERID_ID(x)                          (((uint8_t)(((uint8_t)(x))<<USB_PERID_ID_SHIFT))&USB_PERID_ID_MASK)
-/* IDCOMP Bit Fields */
-#define USB_IDCOMP_NID_MASK                      0x3Fu
-#define USB_IDCOMP_NID_SHIFT                     0
-#define USB_IDCOMP_NID(x)                        (((uint8_t)(((uint8_t)(x))<<USB_IDCOMP_NID_SHIFT))&USB_IDCOMP_NID_MASK)
-/* REV Bit Fields */
-#define USB_REV_REV_MASK                         0xFFu
-#define USB_REV_REV_SHIFT                        0
-#define USB_REV_REV(x)                           (((uint8_t)(((uint8_t)(x))<<USB_REV_REV_SHIFT))&USB_REV_REV_MASK)
-/* ADDINFO Bit Fields */
-#define USB_ADDINFO_IEHOST_MASK                  0x1u
-#define USB_ADDINFO_IEHOST_SHIFT                 0
-/* OTGCTL Bit Fields */
-#define USB_OTGCTL_DPHIGH_MASK                   0x80u
-#define USB_OTGCTL_DPHIGH_SHIFT                  7
-/* ISTAT Bit Fields */
-#define USB_ISTAT_USBRST_MASK                    0x1u
-#define USB_ISTAT_USBRST_SHIFT                   0
-#define USB_ISTAT_ERROR_MASK                     0x2u
-#define USB_ISTAT_ERROR_SHIFT                    1
-#define USB_ISTAT_SOFTOK_MASK                    0x4u
-#define USB_ISTAT_SOFTOK_SHIFT                   2
-#define USB_ISTAT_TOKDNE_MASK                    0x8u
-#define USB_ISTAT_TOKDNE_SHIFT                   3
-#define USB_ISTAT_SLEEP_MASK                     0x10u
-#define USB_ISTAT_SLEEP_SHIFT                    4
-#define USB_ISTAT_RESUME_MASK                    0x20u
-#define USB_ISTAT_RESUME_SHIFT                   5
-#define USB_ISTAT_STALL_MASK                     0x80u
-#define USB_ISTAT_STALL_SHIFT                    7
-/* INTEN Bit Fields */
-#define USB_INTEN_USBRSTEN_MASK                  0x1u
-#define USB_INTEN_USBRSTEN_SHIFT                 0
-#define USB_INTEN_ERROREN_MASK                   0x2u
-#define USB_INTEN_ERROREN_SHIFT                  1
-#define USB_INTEN_SOFTOKEN_MASK                  0x4u
-#define USB_INTEN_SOFTOKEN_SHIFT                 2
-#define USB_INTEN_TOKDNEEN_MASK                  0x8u
-#define USB_INTEN_TOKDNEEN_SHIFT                 3
-#define USB_INTEN_SLEEPEN_MASK                   0x10u
-#define USB_INTEN_SLEEPEN_SHIFT                  4
-#define USB_INTEN_RESUMEEN_MASK                  0x20u
-#define USB_INTEN_RESUMEEN_SHIFT                 5
-#define USB_INTEN_STALLEN_MASK                   0x80u
-#define USB_INTEN_STALLEN_SHIFT                  7
-/* ERRSTAT Bit Fields */
-#define USB_ERRSTAT_PIDERR_MASK                  0x1u
-#define USB_ERRSTAT_PIDERR_SHIFT                 0
-#define USB_ERRSTAT_CRC5_MASK                    0x2u
-#define USB_ERRSTAT_CRC5_SHIFT                   1
-#define USB_ERRSTAT_CRC16_MASK                   0x4u
-#define USB_ERRSTAT_CRC16_SHIFT                  2
-#define USB_ERRSTAT_DFN8_MASK                    0x8u
-#define USB_ERRSTAT_DFN8_SHIFT                   3
-#define USB_ERRSTAT_BTOERR_MASK                  0x10u
-#define USB_ERRSTAT_BTOERR_SHIFT                 4
-#define USB_ERRSTAT_DMAERR_MASK                  0x20u
-#define USB_ERRSTAT_DMAERR_SHIFT                 5
-#define USB_ERRSTAT_BTSERR_MASK                  0x80u
-#define USB_ERRSTAT_BTSERR_SHIFT                 7
-/* ERREN Bit Fields */
-#define USB_ERREN_PIDERREN_MASK                  0x1u
-#define USB_ERREN_PIDERREN_SHIFT                 0
-#define USB_ERREN_CRC5EOFEN_MASK                 0x2u
-#define USB_ERREN_CRC5EOFEN_SHIFT                1
-#define USB_ERREN_CRC16EN_MASK                   0x4u
-#define USB_ERREN_CRC16EN_SHIFT                  2
-#define USB_ERREN_DFN8EN_MASK                    0x8u
-#define USB_ERREN_DFN8EN_SHIFT                   3
-#define USB_ERREN_BTOERREN_MASK                  0x10u
-#define USB_ERREN_BTOERREN_SHIFT                 4
-#define USB_ERREN_DMAERREN_MASK                  0x20u
-#define USB_ERREN_DMAERREN_SHIFT                 5
-#define USB_ERREN_BTSERREN_MASK                  0x80u
-#define USB_ERREN_BTSERREN_SHIFT                 7
-/* STAT Bit Fields */
-#define USB_STAT_ODD_MASK                        0x4u
-#define USB_STAT_ODD_SHIFT                       2
-#define USB_STAT_TX_MASK                         0x8u
-#define USB_STAT_TX_SHIFT                        3
-#define USB_STAT_ENDP_MASK                       0xF0u
-#define USB_STAT_ENDP_SHIFT                      4
-#define USB_STAT_ENDP(x)                         (((uint8_t)(((uint8_t)(x))<<USB_STAT_ENDP_SHIFT))&USB_STAT_ENDP_MASK)
-/* CTL Bit Fields */
-#define USB_CTL_USBENSOFEN_MASK                  0x1u
-#define USB_CTL_USBENSOFEN_SHIFT                 0
-#define USB_CTL_ODDRST_MASK                      0x2u
-#define USB_CTL_ODDRST_SHIFT                     1
-#define USB_CTL_TXSUSPENDTOKENBUSY_MASK          0x20u
-#define USB_CTL_TXSUSPENDTOKENBUSY_SHIFT         5
-#define USB_CTL_SE0_MASK                         0x40u
-#define USB_CTL_SE0_SHIFT                        6
-#define USB_CTL_JSTATE_MASK                      0x80u
-#define USB_CTL_JSTATE_SHIFT                     7
-/* ADDR Bit Fields */
-#define USB_ADDR_ADDR_MASK                       0x7Fu
-#define USB_ADDR_ADDR_SHIFT                      0
-#define USB_ADDR_ADDR(x)                         (((uint8_t)(((uint8_t)(x))<<USB_ADDR_ADDR_SHIFT))&USB_ADDR_ADDR_MASK)
-/* BDTPAGE1 Bit Fields */
-#define USB_BDTPAGE1_BDTBA_MASK                  0xFEu
-#define USB_BDTPAGE1_BDTBA_SHIFT                 1
-#define USB_BDTPAGE1_BDTBA(x)                    (((uint8_t)(((uint8_t)(x))<<USB_BDTPAGE1_BDTBA_SHIFT))&USB_BDTPAGE1_BDTBA_MASK)
-/* FRMNUML Bit Fields */
-#define USB_FRMNUML_FRM_MASK                     0xFFu
-#define USB_FRMNUML_FRM_SHIFT                    0
-#define USB_FRMNUML_FRM(x)                       (((uint8_t)(((uint8_t)(x))<<USB_FRMNUML_FRM_SHIFT))&USB_FRMNUML_FRM_MASK)
-/* FRMNUMH Bit Fields */
-#define USB_FRMNUMH_FRM_MASK                     0x7u
-#define USB_FRMNUMH_FRM_SHIFT                    0
-#define USB_FRMNUMH_FRM(x)                       (((uint8_t)(((uint8_t)(x))<<USB_FRMNUMH_FRM_SHIFT))&USB_FRMNUMH_FRM_MASK)
-/* BDTPAGE2 Bit Fields */
-#define USB_BDTPAGE2_BDTBA_MASK                  0xFFu
-#define USB_BDTPAGE2_BDTBA_SHIFT                 0
-#define USB_BDTPAGE2_BDTBA(x)                    (((uint8_t)(((uint8_t)(x))<<USB_BDTPAGE2_BDTBA_SHIFT))&USB_BDTPAGE2_BDTBA_MASK)
-/* BDTPAGE3 Bit Fields */
-#define USB_BDTPAGE3_BDTBA_MASK                  0xFFu
-#define USB_BDTPAGE3_BDTBA_SHIFT                 0
-#define USB_BDTPAGE3_BDTBA(x)                    (((uint8_t)(((uint8_t)(x))<<USB_BDTPAGE3_BDTBA_SHIFT))&USB_BDTPAGE3_BDTBA_MASK)
-/* ENDPT Bit Fields */
-#define USB_ENDPT_EPHSHK_MASK                    0x1u
-#define USB_ENDPT_EPHSHK_SHIFT                   0
-#define USB_ENDPT_EPSTALL_MASK                   0x2u
-#define USB_ENDPT_EPSTALL_SHIFT                  1
-#define USB_ENDPT_EPTXEN_MASK                    0x4u
-#define USB_ENDPT_EPTXEN_SHIFT                   2
-#define USB_ENDPT_EPRXEN_MASK                    0x8u
-#define USB_ENDPT_EPRXEN_SHIFT                   3
-#define USB_ENDPT_EPCTLDIS_MASK                  0x10u
-#define USB_ENDPT_EPCTLDIS_SHIFT                 4
-/* USBCTRL Bit Fields */
-#define USB_USBCTRL_PDE_MASK                     0x40u
-#define USB_USBCTRL_PDE_SHIFT                    6
-#define USB_USBCTRL_SUSP_MASK                    0x80u
-#define USB_USBCTRL_SUSP_SHIFT                   7
-/* OBSERVE Bit Fields */
-#define USB_OBSERVE_DMPD_MASK                    0x10u
-#define USB_OBSERVE_DMPD_SHIFT                   4
-#define USB_OBSERVE_DPPD_MASK                    0x40u
-#define USB_OBSERVE_DPPD_SHIFT                   6
-#define USB_OBSERVE_DPPU_MASK                    0x80u
-#define USB_OBSERVE_DPPU_SHIFT                   7
-/* CONTROL Bit Fields */
-#define USB_CONTROL_DPPULLUPNONOTG_MASK          0x10u
-#define USB_CONTROL_DPPULLUPNONOTG_SHIFT         4
-/* USBTRC0 Bit Fields */
-#define USB_USBTRC0_USB_RESUME_INT_MASK          0x1u
-#define USB_USBTRC0_USB_RESUME_INT_SHIFT         0
-#define USB_USBTRC0_SYNC_DET_MASK                0x2u
-#define USB_USBTRC0_SYNC_DET_SHIFT               1
-#define USB_USBTRC0_USB_CLK_RECOVERY_INT_MASK    0x4u
-#define USB_USBTRC0_USB_CLK_RECOVERY_INT_SHIFT   2
-#define USB_USBTRC0_USBRESMEN_MASK               0x20u
-#define USB_USBTRC0_USBRESMEN_SHIFT              5
-#define USB_USBTRC0_USBRESET_MASK                0x80u
-#define USB_USBTRC0_USBRESET_SHIFT               7
-/* USBFRMADJUST Bit Fields */
-#define USB_USBFRMADJUST_ADJ_MASK                0xFFu
-#define USB_USBFRMADJUST_ADJ_SHIFT               0
-#define USB_USBFRMADJUST_ADJ(x)                  (((uint8_t)(((uint8_t)(x))<<USB_USBFRMADJUST_ADJ_SHIFT))&USB_USBFRMADJUST_ADJ_MASK)
-/* CLK_RECOVER_CTRL Bit Fields */
-#define USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN_MASK 0x20u
-#define USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN_SHIFT 5
-#define USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN_MASK 0x40u
-#define USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN_SHIFT 6
-#define USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN_MASK 0x80u
-#define USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN_SHIFT 7
-/* CLK_RECOVER_IRC_EN Bit Fields */
-#define USB_CLK_RECOVER_IRC_EN_IRC_EN_MASK       0x2u
-#define USB_CLK_RECOVER_IRC_EN_IRC_EN_SHIFT      1
-/* CLK_RECOVER_INT_EN Bit Fields */
-#define USB_CLK_RECOVER_INT_EN_OVF_ERROR_EN_MASK 0x10u
-#define USB_CLK_RECOVER_INT_EN_OVF_ERROR_EN_SHIFT 4
-/* CLK_RECOVER_INT_STATUS Bit Fields */
-#define USB_CLK_RECOVER_INT_STATUS_OVF_ERROR_MASK 0x10u
-#define USB_CLK_RECOVER_INT_STATUS_OVF_ERROR_SHIFT 4
-
-/*!
- * @}
- */ /* end of group USB_Register_Masks */
-
-
-/* USB - Peripheral instance base addresses */
-/** Peripheral USB0 base address */
-#define USB0_BASE                                (0x40072000u)
-/** Peripheral USB0 base pointer */
-#define USB0                                     ((USB_Type *)USB0_BASE)
-#define USB0_BASE_PTR                            (USB0)
-/** Array initializer of USB peripheral base addresses */
-#define USB_BASE_ADDRS                           { USB0_BASE }
-/** Array initializer of USB peripheral base pointers */
-#define USB_BASE_PTRS                            { USB0 }
-/** Interrupt vectors for the USB peripheral type */
-#define USB_IRQS                                 { USB0_IRQn }
-
-/* ----------------------------------------------------------------------------
-   -- USB - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup USB_Register_Accessor_Macros USB - Register accessor macros
- * @{
- */
-
-
-/* USB - Register instance definitions */
-/* USB0 */
-#define USB0_PERID                               USB_PERID_REG(USB0)
-#define USB0_IDCOMP                              USB_IDCOMP_REG(USB0)
-#define USB0_REV                                 USB_REV_REG(USB0)
-#define USB0_ADDINFO                             USB_ADDINFO_REG(USB0)
-#define USB0_OTGCTL                              USB_OTGCTL_REG(USB0)
-#define USB0_ISTAT                               USB_ISTAT_REG(USB0)
-#define USB0_INTEN                               USB_INTEN_REG(USB0)
-#define USB0_ERRSTAT                             USB_ERRSTAT_REG(USB0)
-#define USB0_ERREN                               USB_ERREN_REG(USB0)
-#define USB0_STAT                                USB_STAT_REG(USB0)
-#define USB0_CTL                                 USB_CTL_REG(USB0)
-#define USB0_ADDR                                USB_ADDR_REG(USB0)
-#define USB0_BDTPAGE1                            USB_BDTPAGE1_REG(USB0)
-#define USB0_FRMNUML                             USB_FRMNUML_REG(USB0)
-#define USB0_FRMNUMH                             USB_FRMNUMH_REG(USB0)
-#define USB0_BDTPAGE2                            USB_BDTPAGE2_REG(USB0)
-#define USB0_BDTPAGE3                            USB_BDTPAGE3_REG(USB0)
-#define USB0_ENDPT0                              USB_ENDPT_REG(USB0,0)
-#define USB0_ENDPT1                              USB_ENDPT_REG(USB0,1)
-#define USB0_ENDPT2                              USB_ENDPT_REG(USB0,2)
-#define USB0_ENDPT3                              USB_ENDPT_REG(USB0,3)
-#define USB0_ENDPT4                              USB_ENDPT_REG(USB0,4)
-#define USB0_ENDPT5                              USB_ENDPT_REG(USB0,5)
-#define USB0_ENDPT6                              USB_ENDPT_REG(USB0,6)
-#define USB0_ENDPT7                              USB_ENDPT_REG(USB0,7)
-#define USB0_ENDPT8                              USB_ENDPT_REG(USB0,8)
-#define USB0_ENDPT9                              USB_ENDPT_REG(USB0,9)
-#define USB0_ENDPT10                             USB_ENDPT_REG(USB0,10)
-#define USB0_ENDPT11                             USB_ENDPT_REG(USB0,11)
-#define USB0_ENDPT12                             USB_ENDPT_REG(USB0,12)
-#define USB0_ENDPT13                             USB_ENDPT_REG(USB0,13)
-#define USB0_ENDPT14                             USB_ENDPT_REG(USB0,14)
-#define USB0_ENDPT15                             USB_ENDPT_REG(USB0,15)
-#define USB0_USBCTRL                             USB_USBCTRL_REG(USB0)
-#define USB0_OBSERVE                             USB_OBSERVE_REG(USB0)
-#define USB0_CONTROL                             USB_CONTROL_REG(USB0)
-#define USB0_USBTRC0                             USB_USBTRC0_REG(USB0)
-#define USB0_USBFRMADJUST                        USB_USBFRMADJUST_REG(USB0)
-#define USB0_CLK_RECOVER_CTRL                    USB_CLK_RECOVER_CTRL_REG(USB0)
-#define USB0_CLK_RECOVER_IRC_EN                  USB_CLK_RECOVER_IRC_EN_REG(USB0)
-#define USB0_CLK_RECOVER_INT_EN                  USB_CLK_RECOVER_INT_EN_REG(USB0)
-#define USB0_CLK_RECOVER_INT_STATUS              USB_CLK_RECOVER_INT_STATUS_REG(USB0)
-
-/* USB - Register array accessors */
-#define USB0_ENDPT(index)                        USB_ENDPT_REG(USB0,index)
-
-/*!
- * @}
- */ /* end of group USB_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group USB_Peripheral_Access_Layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- VREF Peripheral Access Layer
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup VREF_Peripheral_Access_Layer VREF Peripheral Access Layer
- * @{
- */
-
-/** VREF - Register Layout Typedef */
-typedef struct {
-  __IO uint8_t TRM;                                /**< VREF Trim Register, offset: 0x0 */
-  __IO uint8_t SC;                                 /**< VREF Status and Control Register, offset: 0x1 */
-} VREF_Type, *VREF_MemMapPtr;
-
-/* ----------------------------------------------------------------------------
-   -- VREF - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup VREF_Register_Accessor_Macros VREF - Register accessor macros
- * @{
- */
-
-
-/* VREF - Register accessors */
-#define VREF_TRM_REG(base)                       ((base)->TRM)
-#define VREF_SC_REG(base)                        ((base)->SC)
-
-/*!
- * @}
- */ /* end of group VREF_Register_Accessor_Macros */
-
-
-/* ----------------------------------------------------------------------------
-   -- VREF Register Masks
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup VREF_Register_Masks VREF Register Masks
- * @{
- */
-
-/* TRM Bit Fields */
-#define VREF_TRM_TRIM_MASK                       0x3Fu
-#define VREF_TRM_TRIM_SHIFT                      0
-#define VREF_TRM_TRIM(x)                         (((uint8_t)(((uint8_t)(x))<<VREF_TRM_TRIM_SHIFT))&VREF_TRM_TRIM_MASK)
-#define VREF_TRM_CHOPEN_MASK                     0x40u
-#define VREF_TRM_CHOPEN_SHIFT                    6
-/* SC Bit Fields */
-#define VREF_SC_MODE_LV_MASK                     0x3u
-#define VREF_SC_MODE_LV_SHIFT                    0
-#define VREF_SC_MODE_LV(x)                       (((uint8_t)(((uint8_t)(x))<<VREF_SC_MODE_LV_SHIFT))&VREF_SC_MODE_LV_MASK)
-#define VREF_SC_VREFST_MASK                      0x4u
-#define VREF_SC_VREFST_SHIFT                     2
-#define VREF_SC_ICOMPEN_MASK                     0x20u
-#define VREF_SC_ICOMPEN_SHIFT                    5
-#define VREF_SC_REGEN_MASK                       0x40u
-#define VREF_SC_REGEN_SHIFT                      6
-#define VREF_SC_VREFEN_MASK                      0x80u
-#define VREF_SC_VREFEN_SHIFT                     7
-
-/*!
- * @}
- */ /* end of group VREF_Register_Masks */
-
-
-/* VREF - Peripheral instance base addresses */
-/** Peripheral VREF base address */
-#define VREF_BASE                                (0x40074000u)
-/** Peripheral VREF base pointer */
-#define VREF                                     ((VREF_Type *)VREF_BASE)
-#define VREF_BASE_PTR                            (VREF)
-/** Array initializer of VREF peripheral base addresses */
-#define VREF_BASE_ADDRS                          { VREF_BASE }
-/** Array initializer of VREF peripheral base pointers */
-#define VREF_BASE_PTRS                           { VREF }
-
-/* ----------------------------------------------------------------------------
-   -- VREF - Register accessor macros
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup VREF_Register_Accessor_Macros VREF - Register accessor macros
- * @{
- */
-
-
-/* VREF - Register instance definitions */
-/* VREF */
-#define VREF_TRM                                 VREF_TRM_REG(VREF)
-#define VREF_SC                                  VREF_SC_REG(VREF)
-
-/*!
- * @}
- */ /* end of group VREF_Register_Accessor_Macros */
-
-
-/*!
- * @}
- */ /* end of group VREF_Peripheral_Access_Layer */
-
-
-/*
-** End of section using anonymous unions
-*/
-
-#if defined(__ARMCC_VERSION)
-  #pragma pop
-#elif defined(__CWCC__)
-  #pragma pop
-#elif defined(__GNUC__)
-  /* leave anonymous unions enabled */
-#elif defined(__IAR_SYSTEMS_ICC__)
-  #pragma language=default
-#else
-  #error Not supported compiler type
-#endif
-
-/*!
- * @}
- */ /* end of group Peripheral_access_layer */
-
-
-/* ----------------------------------------------------------------------------
-   -- Backward Compatibility
-   ---------------------------------------------------------------------------- */
-
-/*!
- * @addtogroup Backward_Compatibility_Symbols Backward Compatibility
- * @{
- */
-
-#define I2C_S1_RXAK_MASK                       I2C_S_RXAK_MASK
-#define I2C_S1_RXAK_SHIFT                      I2C_S_RXAK_SHIFT
-#define I2C_S1_IICIF_MASK                      I2C_S_IICIF_MASK
-#define I2C_S1_IICIF_SHIFT                     I2C_S_IICIF_SHIFTFT
-#define I2C_S1_SRW_MASK                        I2C_S_SRW_MASK
-#define I2C_S1_SRW_SHIFT                       I2C_S_SRW_SHIFT
-#define I2C_S1_RAM_MASK                        I2C_S_RAM_MASK
-#define I2C_S1_RAM_SHIFT                       I2C_S_RAM_SHIFT
-#define I2C_S1_ARBL_MASK                       I2C_S_ARBL_MASK
-#define I2C_S1_ARBL_SHIFT                      I2C_S_ARBL_SHIFT
-#define I2C_S1_BUSY_MASK                       I2C_S_BUSY_MASK
-#define I2C_S1_BUSY_SHIFT                      I2C_S_BUSY_SHIFT
-#define I2C_S1_IAAS_MASK                       I2C_S_IAAS_MASK
-#define I2C_S1_IAAS_SHIFT                      I2C_S_IAAS_SHIFT
-#define I2C_S1_TCF_MASK                        I2C_S_TCF_MASK
-#define I2C_S1_TCF_SHIFT                       I2C_S_TCF_SHIFT
-#define I2C_S1_REG(base)                       I2C_S_REG(base)
-#define I2C0_S1                                I2C0_S
-#define I2C1_S1                                I2C1_S
-#define ADC_BASES                              ADC_BASE_PTRS
-#define CMP_BASES                              CMP_BASE_PTRS
-#define DAC_BASES                              DAC_BASE_PTRS
-#define DMA_BASES                              DMA_BASE_PTRS
-#define DMAMUX_BASES                           DMAMUX_BASE_PTRS
-#define FLEXIO_BASES                           FLEXIO_BASE_PTRS
-#define FTFA_BASES                             FTFA_BASE_PTRS
-#define GPIO_BASES                             GPIO_BASE_PTRS
-#define I2C_BASES                              I2C_BASE_PTRS
-#define I2S_BASES                              I2S_BASE_PTRS
-#define LCD_BASES                              LCD_BASE_PTRS
-#define LLWU_BASES                             LLWU_BASE_PTRS
-#define LPTMR_BASES                            LPTMR_BASE_PTRS
-#define LPUART_BASES                           LPUART_BASE_PTRS
-#define MCG_BASES                              MCG_BASE_PTRS
-#define MCM_BASES                              MCM_BASE_PTRS
-#define MTB_BASES                              MTB_BASE_PTRS
-#define MTBDWT_BASES                           MTBDWT_BASE_PTRS
-#define NV_BASES                               NV_BASE_PTRS
-#define OSC_BASES                              OSC_BASE_PTRS
-#define PIT_BASES                              PIT_BASE_PTRS
-#define PMC_BASES                              PMC_BASE_PTRS
-#define PORT_BASES                             PORT_BASE_PTRS
-#define RCM_BASES                              RCM_BASE_PTRS
-#define ROM_BASES                              ROM_BASE_PTRS
-#define RTC_BASES                              RTC_BASE_PTRS
-#define SIM_BASES                              SIM_BASE_PTRS
-#define SMC_BASES                              SMC_BASE_PTRS
-#define SPI_BASES                              SPI_BASE_PTRS
-#define TPM_BASES                              TPM_BASE_PTRS
-#define UART_BASES                             UART_BASE_PTRS
-#define USB_BASES                              USB_BASE_PTRS
-#define VREF_BASES                             VREF_BASE_PTRS
-#define PTA_BASE_PTR                           GPIOA_BASE_PTR
-#define PTB_BASE_PTR                           GPIOB_BASE_PTR
-#define PTC_BASE_PTR                           GPIOC_BASE_PTR
-#define PTD_BASE_PTR                           GPIOD_BASE_PTR
-#define PTE_BASE_PTR                           GPIOE_BASE_PTR
-#define PTA_BASE                               GPIOA_BASE
-#define PTB_BASE                               GPIOB_BASE
-#define PTC_BASE                               GPIOC_BASE
-#define PTD_BASE                               GPIOD_BASE
-#define PTE_BASE                               GPIOE_BASE
-#define PTA                                    GPIOA
-#define PTB                                    GPIOB
-#define PTC                                    GPIOC
-#define PTD                                    GPIOD
-#define PTE                                    GPIOE
-#define UART0_FLEXIO_IRQn                      UART2_FLEXIO_IRQn
-#define SIM_SOPT5_UART0ODE_MASK                SIM_SOPT5_UART2ODE_MASK
-#define SIM_SOPT5_UART0ODE_SHIFT               SIM_SOPT5_UART2ODE_SHIFT
-#define SIM_SCGC4_UART0_MASK                   SIM_SCGC4_UART2_MASK
-#define SIM_SCGC4_UART0_SHIFT                  SIM_SCGC4_UART2_SHIFT
-#define UART0_BASE                             UART2_BASE
-#define UART0                                  UART2
-#define UART0_BASE_PTR                         UART2_BASE_PTR
-#define UART0_BDH                              UART2_BDH
-#define UART0_BDL                              UART2_BDL
-#define UART0_C1                               UART2_C1
-#define UART0_C2                               UART2_C2
-#define UART0_S1                               UART2_S1
-#define UART0_S2                               UART2_S2
-#define UART0_C3                               UART2_C3
-#define UART0_D                                UART2_D
-#define UART0_MA1                              UART2_MA1
-#define UART0_MA2                              UART2_MA2
-#define UART0_C4                               UART2_C4
-#define UART0_C5                               UART2_C5
-#define UART0_ED                               UART2_ED
-#define UART0_MODEM                            UART2_MODEM
-#define UART0_IR                               UART2_IR
-#define UART0_PFIFO                            UART2_PFIFO
-#define UART0_CFIFO                            UART2_CFIFO
-#define UART0_SFIFO                            UART2_SFIFO
-#define UART0_TWFIFO                           UART2_TWFIFO
-#define UART0_TCFIFO                           UART2_TCFIFO
-#define UART0_RWFIFO                           UART2_RWFIFO
-#define UART0_RCFIFO                           UART2_RCFIFO
-#define UART0_C7816                            UART2_C7816
-#define UART0_IE7816                           UART2_IE7816
-#define UART0_IS7816                           UART2_IS7816
-#define UART0_WP7816                           UART2_WP7816
-#define UART0_WN7816                           UART2_WN7816
-#define UART0_WF7816                           UART2_WF7816
-#define UART0_ET7816                           UART2_ET7816
-#define UART0_TL7816                           UART2_TL7816
-#define UART0_AP7816A_T0                       UART2_AP7816A_T0
-#define UART0_AP7816B_T0                       UART2_AP7816B_T0
-#define UART0_WP7816A_T0                       UART2_WP7816A_T0
-#define UART0_WP7816A_T1                       UART2_WP7816A_T1
-#define UART0_WP7816B_T0                       UART2_WP7816B_T0
-#define UART0_WP7816B_T1                       UART2_WP7816B_T1
-#define UART0_WGP7816_T1                       UART2_WGP7816_T1
-#define UART0_WP7816C_T1                       UART2_WP7816C_T1
-#define I2S0_MDR                               This_symb_has_been_deprecated
-#define I2S_MDR_DIVIDE_MASK                    This_symb_has_been_deprecated
-#define I2S_MDR_DIVIDE_SHIFT                   This_symb_has_been_deprecated
-#define I2S_MDR_DIVIDE(x)                      This_symb_has_been_deprecated
-#define I2S_MDR_FRACT_MASK                     This_symb_has_been_deprecated
-#define I2S_MDR_FRACT_SHIFT                    This_symb_has_been_deprecated
-#define I2S_MDR_FRACT(x)                       This_symb_has_been_deprecated
-#define I2S_MDR_REG(base)                      This_symb_has_been_deprecated
-#define CTL0                                   OTGCTL
-#define USB0_CTL0                              USB0_OTGCTL
-#define USB_CTL0_REG(base)                     USB_OTGCTL_REG(base)
-#define USB_CTL0_DPHIGH_MASK                   USB_OTGCTL_DPHIGH_MASK
-#define USB_CTL0_DPHIGH_SHIFT                  USB_OTGCTL_DPHIGH_SHIFT
-#define CTL1                                   CTL
-#define USB0_CTL1                              USB0_CTL
-#define USB_CTL1_REG(base)                     USB_CTL_REG(base)
-#define USB_CTL1_USBEN_MASK                    USB_CTL_USBEN_MASK
-#define USB_CTL1_USBEN_SHIFT                   USB_CTL_USBEN_SHIFT
-#define USB_CTL1_ODDRST_MASK                   USB_CTL_ODDRST_MASK
-#define USB_CTL1_ODDRST_SHIFT                  USB_CTL_ODDRST_SHIFT
-#define USB_CTL1_TXSUSPENDTOKENBUSY_MASK       USB_CTL_TXSUSPENDTOKENBUSY_MASK
-#define USB_CTL1_TXSUSPENDTOKENBUSY_SHIFT      USB_CTL_TXSUSPENDTOKENBUSY_SHIFT
-#define USB_CTL1_SE0_MASK                      USB_CTL_SE0_MASK
-#define USB_CTL1_SE0_SHIFT                     USB_CTL_SE0_SHIFT
-#define USB_CTL1_JSTATE_MASK                   USB_CTL_JSTATE_MASK
-#define USB_CTL1_JSTATE_SHIFT                  USB_CTL_JSTATE_SHIFT
-#define USB_CTL_USBEN_MASK                     USB_CTL_USBENSOFEN_MASK
-#define USB_CTL_USBEN_SHIFT                    USB_CTL_USBENSOFEN_SHIFT
-
-/*!
- * @}
- */ /* end of group Backward_Compatibility_Symbols */
-
-
-#else /* #if !defined(MKL43Z4_H_) */
-  /* There is already included the same memory map. Check if it is compatible (has the same major version) */
-  #if (MCU_MEM_MAP_VERSION != 0x0100u)
-    #if (!defined(MCU_MEM_MAP_SUPPRESS_VERSION_WARNING))
-      #warning There are included two not compatible versions of memory maps. Please check possible differences.
-    #endif /* (!defined(MCU_MEM_MAP_SUPPRESS_VERSION_WARNING)) */
-  #endif /* (MCU_MEM_MAP_VERSION != 0x0100u) */
-#endif  /* #if !defined(MKL43Z4_H_) */
-
-/* MKL43Z4.h, eof. */
--- a/targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/TOOLCHAIN_ARM_STD/MKL43Z4.sct	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-
-LR_IROM1 0x00000000 0x40000  {    ; load region size_region (256k)
-  ER_IROM1 0x00000000 0x40000  {  ; load address = execution address
-   *.o (RESET, +First)
-   *(InRoot$$Sections)
-   .ANY (+RO)
-  }
-  ; 8_byte_aligned(48 vect * 4 bytes) =  8_byte_aligned(0xC0) = 0xC0
-  ; 0x8000 - 0xC0 = 0x7F40
-  RW_IRAM1 0x1FFFE0C0 0x7F40 {
-   .ANY (+RW +ZI)
-  }
-}
-
--- a/targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/TOOLCHAIN_ARM_STD/startup_MKL43Z4.S	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,362 +0,0 @@
-; * ---------------------------------------------------------------------------------------
-; *  @file:    startup_MKL43Z4.s
-; *  @purpose: CMSIS Cortex-M0P Core Device Startup File
-; *            MKL43Z4
-; *  @version: 1.3
-; *  @date:    2014-8-21
-; *  @build:   b140821
-; * ---------------------------------------------------------------------------------------
-; *
-; * Copyright (c) 1997 - 2014 , Freescale Semiconductor, Inc.
-; * All rights reserved.
-; *
-; * Redistribution and use in source and binary forms, with or without modification,
-; * are permitted provided that the following conditions are met:
-; *
-; * o Redistributions of source code must retain the above copyright notice, this list
-; *   of conditions and the following disclaimer.
-; *
-; * o Redistributions in binary form must reproduce the above copyright notice, this
-; *   list of conditions and the following disclaimer in the documentation and/or
-; *   other materials provided with the distribution.
-; *
-; * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-; *   contributors may be used to endorse or promote products derived from this
-; *   software without specific prior written permission.
-; *
-; * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-; * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-; * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-; * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-; * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-; * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-; * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-; * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-; * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-; *
-; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------
-; *
-; *****************************************************************************/
-
-
-__initial_sp    EQU     0x20006000  ; Top of RAM
-
-                PRESERVE8
-                THUMB
-
-
-; Vector Table Mapped to Address 0 at Reset
-
-                AREA    RESET, DATA, READONLY
-                EXPORT  __Vectors
-                EXPORT  __Vectors_End
-                EXPORT  __Vectors_Size
-
-__Vectors       DCD     __initial_sp ; Top of Stack
-                DCD     Reset_Handler  ; Reset Handler
-                DCD     NMI_Handler                         ;NMI Handler
-                DCD     HardFault_Handler                   ;Hard Fault Handler
-                DCD     0                                   ;Reserved
-                DCD     0                                   ;Reserved
-                DCD     0                                   ;Reserved
-                DCD     0                                   ;Reserved
-                DCD     0                                   ;Reserved
-                DCD     0                                   ;Reserved
-                DCD     0                                   ;Reserved
-                DCD     SVC_Handler                         ;SVCall Handler
-                DCD     0                                   ;Reserved
-                DCD     0                                   ;Reserved
-                DCD     PendSV_Handler                      ;PendSV Handler
-                DCD     SysTick_Handler                     ;SysTick Handler
-
-                                                            ;External Interrupts
-                DCD     DMA0_IRQHandler                     ;DMA channel 0 transfer complete
-                DCD     DMA1_IRQHandler                     ;DMA channel 1 transfer complete
-                DCD     DMA2_IRQHandler                     ;DMA channel 2 transfer complete
-                DCD     DMA3_IRQHandler                     ;DMA channel 3 transfer complete
-                DCD     Reserved20_IRQHandler               ;Reserved interrupt
-                DCD     FTFA_IRQHandler                     ;Command complete and read collision
-                DCD     PMC_IRQHandler                      ;Low-voltage detect, low-voltage warning
-                DCD     LLWU_IRQHandler                     ;Low leakage wakeup
-                DCD     I2C0_IRQHandler                     ;I2C0 interrupt
-                DCD     I2C1_IRQHandler                     ;I2C1 interrupt
-                DCD     SPI0_IRQHandler                     ;SPI0 single interrupt vector for all sources
-                DCD     SPI1_IRQHandler                     ;SPI1 single interrupt vector for all sources
-                DCD     LPUART0_IRQHandler                  ;LPUART0 status and error
-                DCD     LPUART1_IRQHandler                  ;LPUART1 status and error
-                DCD     UART2_FLEXIO_IRQHandler             ;UART2 or FLEXIO
-                DCD     ADC0_IRQHandler                     ;ADC0 interrupt
-                DCD     CMP0_IRQHandler                     ;CMP0 interrupt
-                DCD     TPM0_IRQHandler                     ;TPM0 single interrupt vector for all sources
-                DCD     TPM1_IRQHandler                     ;TPM1 single interrupt vector for all sources
-                DCD     TPM2_IRQHandler                     ;TPM2 single interrupt vector for all sources
-                DCD     RTC_IRQHandler                      ;RTC alarm
-                DCD     RTC_Seconds_IRQHandler              ;RTC seconds
-                DCD     PIT_IRQHandler                      ;PIT interrupt
-                DCD     I2S0_IRQHandler                     ;I2S0 interrupt
-                DCD     USB0_IRQHandler                     ;USB0 interrupt
-                DCD     DAC0_IRQHandler                     ;DAC0 interrupt
-                DCD     Reserved42_IRQHandler               ;Reserved interrupt
-                DCD     Reserved43_IRQHandler               ;Reserved interrupt
-                DCD     LPTMR0_IRQHandler                   ;LPTMR0 interrupt
-                DCD     LCD_IRQHandler                      ;LCD interrupt
-                DCD     PORTA_IRQHandler                    ;PORTA Pin detect
-                DCD     PORTCD_IRQHandler                   ;Single interrupt vector for PORTC; PORTD Pin detect
-__Vectors_End
-
-__Vectors_Size 	EQU     __Vectors_End - __Vectors
-
-; <h> Flash Configuration
-;   <i> 16-byte flash configuration field that stores default protection settings (loaded on reset)
-;   <i> and security information that allows the MCU to restrict access to the FTFL module.
-;   <h> Backdoor Comparison Key
-;     <o0>  Backdoor Comparison Key 0.  <0x0-0xFF:2>
-;     <o1>  Backdoor Comparison Key 1.  <0x0-0xFF:2>
-;     <o2>  Backdoor Comparison Key 2.  <0x0-0xFF:2>
-;     <o3>  Backdoor Comparison Key 3.  <0x0-0xFF:2>
-;     <o4>  Backdoor Comparison Key 4.  <0x0-0xFF:2>
-;     <o5>  Backdoor Comparison Key 5.  <0x0-0xFF:2>
-;     <o6>  Backdoor Comparison Key 6.  <0x0-0xFF:2>
-;     <o7>  Backdoor Comparison Key 7.  <0x0-0xFF:2>
-BackDoorK0      EQU     0xFF
-BackDoorK1      EQU     0xFF
-BackDoorK2      EQU     0xFF
-BackDoorK3      EQU     0xFF
-BackDoorK4      EQU     0xFF
-BackDoorK5      EQU     0xFF
-BackDoorK6      EQU     0xFF
-BackDoorK7      EQU     0xFF
-;   </h>
-;   <h> Program flash protection bytes (FPROT)
-;     <i> Each program flash region can be protected from program and erase operation by setting the associated PROT bit.
-;     <i> Each bit protects a 1/32 region of the program flash memory.
-;     <h> FPROT0
-;       <i> Program Flash Region Protect Register 0
-;       <i> 1/32 - 8/32 region
-;       <o.0>   FPROT0.0
-;       <o.1>   FPROT0.1
-;       <o.2>   FPROT0.2
-;       <o.3>   FPROT0.3
-;       <o.4>   FPROT0.4
-;       <o.5>   FPROT0.5
-;       <o.6>   FPROT0.6
-;       <o.7>   FPROT0.7
-nFPROT0         EQU     0x00
-FPROT0          EQU     nFPROT0:EOR:0xFF
-;     </h>
-;     <h> FPROT1
-;       <i> Program Flash Region Protect Register 1
-;       <i> 9/32 - 16/32 region
-;       <o.0>   FPROT1.0
-;       <o.1>   FPROT1.1
-;       <o.2>   FPROT1.2
-;       <o.3>   FPROT1.3
-;       <o.4>   FPROT1.4
-;       <o.5>   FPROT1.5
-;       <o.6>   FPROT1.6
-;       <o.7>   FPROT1.7
-nFPROT1         EQU     0x00
-FPROT1          EQU     nFPROT1:EOR:0xFF
-;     </h>
-;     <h> FPROT2
-;       <i> Program Flash Region Protect Register 2
-;       <i> 17/32 - 24/32 region
-;       <o.0>   FPROT2.0
-;       <o.1>   FPROT2.1
-;       <o.2>   FPROT2.2
-;       <o.3>   FPROT2.3
-;       <o.4>   FPROT2.4
-;       <o.5>   FPROT2.5
-;       <o.6>   FPROT2.6
-;       <o.7>   FPROT2.7
-nFPROT2         EQU     0x00
-FPROT2          EQU     nFPROT2:EOR:0xFF
-;     </h>
-;     <h> FPROT3
-;       <i> Program Flash Region Protect Register 3
-;       <i> 25/32 - 32/32 region
-;       <o.0>   FPROT3.0
-;       <o.1>   FPROT3.1
-;       <o.2>   FPROT3.2
-;       <o.3>   FPROT3.3
-;       <o.4>   FPROT3.4
-;       <o.5>   FPROT3.5
-;       <o.6>   FPROT3.6
-;       <o.7>   FPROT3.7
-nFPROT3         EQU     0x00
-FPROT3          EQU     nFPROT3:EOR:0xFF
-;     </h>
-;   </h>
-;   <h> Flash nonvolatile option byte (FOPT)
-;     <i> Allows the user to customize the operation of the MCU at boot time.
-;     <o.0> LPBOOT0
-;       <0=> Core and system clock divider (OUTDIV1) is 0x7 (divide by 8) when LPBOOT1=0 or 0x1 (divide by 2) when LPBOOT1=1.
-;       <1=> Core and system clock divider (OUTDIV1) is 0x3 (divide by 4) when LPBOOT1=0 or 0x0 (divide by 1) when LPBOOT1=1.
-;     <o.1> BOOTPIN_OPT
-;       <0=> Force Boot from ROM if BOOTCFG0 asserted, where BOOTCFG0 is the boot config function which is muxed with NMI pin
-;       <1=> Boot source configured by FOPT (BOOTSRC_SEL) bits
-;     <o.2> NMI_DIS
-;       <0=> NMI interrupts are always blocked
-;       <1=> NMI_b pin/interrupts reset default to enabled
-;     <o.3> RESET_PIN_CFG
-;       <0=> RESET pin is disabled following a POR and cannot be enabled as reset function
-;       <1=> RESET_b pin is dedicated
-;     <o.4> LPBOOT1
-;       <0=> Core and system clock divider (OUTDIV1) is 0x7 (divide by 8) when LPBOOT0=0 or 0x3 (divide by 4) when LPBOOT0=1.
-;       <1=> Core and system clock divider (OUTDIV1) is 0x1 (divide by 2) when LPBOOT0=0 or 0x0 (divide by 1) when LPBOOT0=1.
-;     <o.5> FAST_INIT
-;       <0=> Slower initialization
-;       <1=> Fast Initialization
-;     <o.6..7> BOOTSRC_SEL
-;       <0=> Boot from Flash
-;       <2=> Boot from ROM
-;       <3=> Boot from ROM
-;         <i> Boot source selection
-FOPT          EQU     0x3F
-;   </h>
-;   <h> Flash security byte (FSEC)
-;     <i> WARNING: If SEC field is configured as "MCU security status is secure" and MEEN field is configured as "Mass erase is disabled",
-;     <i> MCU's security status cannot be set back to unsecure state since Mass erase via the debugger is blocked !!!
-;     <o.0..1> SEC
-;       <2=> MCU security status is unsecure
-;       <3=> MCU security status is secure
-;         <i> Flash Security
-;     <o.2..3> FSLACC
-;       <2=> Freescale factory access denied
-;       <3=> Freescale factory access granted
-;         <i> Freescale Failure Analysis Access Code
-;     <o.4..5> MEEN
-;       <2=> Mass erase is disabled
-;       <3=> Mass erase is enabled
-;     <o.6..7> KEYEN
-;       <2=> Backdoor key access enabled
-;       <3=> Backdoor key access disabled
-;         <i> Backdoor Key Security Enable
-FSEC          EQU     0xFE
-;   </h>
-; </h>
-                IF      :LNOT::DEF:RAM_TARGET
-                AREA    |.ARM.__at_0x400|, DATA, READONLY
-__FlashConfig
-                DCB     BackDoorK0, BackDoorK1, BackDoorK2, BackDoorK3
-                DCB     BackDoorK4, BackDoorK5, BackDoorK6, BackDoorK7
-                DCB     FPROT0    , FPROT1    , FPROT2    , FPROT3
-                DCB     FSEC      , FOPT      , 0xFF      , 0xFF
-                ENDIF
-
-                AREA    |.text|, CODE, READONLY
-
-; Reset Handler
-
-Reset_Handler   PROC
-                EXPORT  Reset_Handler             [WEAK]
-                IMPORT  SystemInit
-                IMPORT  __main
-                LDR     R0, =SystemInit
-                BLX     R0
-                LDR     R0, =__main
-                BX      R0
-                ENDP
-
-
-; Dummy Exception Handlers (infinite loops which can be modified)
-NMI_Handler\
-                PROC
-                EXPORT  NMI_Handler         [WEAK]
-                B       .
-                ENDP
-HardFault_Handler\
-                PROC
-                EXPORT  HardFault_Handler         [WEAK]
-                B       .
-                ENDP
-SVC_Handler\
-                PROC
-                EXPORT  SVC_Handler         [WEAK]
-                B       .
-                ENDP
-PendSV_Handler\
-                PROC
-                EXPORT  PendSV_Handler         [WEAK]
-                B       .
-                ENDP
-SysTick_Handler\
-                PROC
-                EXPORT  SysTick_Handler         [WEAK]
-                B       .
-                ENDP
-Default_Handler\
-                PROC
-                EXPORT  DMA0_IRQHandler         [WEAK]
-                EXPORT  DMA1_IRQHandler         [WEAK]
-                EXPORT  DMA2_IRQHandler         [WEAK]
-                EXPORT  DMA3_IRQHandler         [WEAK]
-                EXPORT  Reserved20_IRQHandler         [WEAK]
-                EXPORT  FTFA_IRQHandler         [WEAK]
-                EXPORT  PMC_IRQHandler         [WEAK]
-                EXPORT  LLWU_IRQHandler         [WEAK]
-                EXPORT  I2C0_IRQHandler         [WEAK]
-                EXPORT  I2C1_IRQHandler         [WEAK]
-                EXPORT  SPI0_IRQHandler         [WEAK]
-                EXPORT  SPI1_IRQHandler         [WEAK]
-                EXPORT  LPUART0_IRQHandler         [WEAK]
-                EXPORT  LPUART1_IRQHandler         [WEAK]
-                EXPORT  UART2_FLEXIO_IRQHandler         [WEAK]
-                EXPORT  ADC0_IRQHandler         [WEAK]
-                EXPORT  CMP0_IRQHandler         [WEAK]
-                EXPORT  TPM0_IRQHandler         [WEAK]
-                EXPORT  TPM1_IRQHandler         [WEAK]
-                EXPORT  TPM2_IRQHandler         [WEAK]
-                EXPORT  RTC_IRQHandler         [WEAK]
-                EXPORT  RTC_Seconds_IRQHandler         [WEAK]
-                EXPORT  PIT_IRQHandler         [WEAK]
-                EXPORT  I2S0_IRQHandler         [WEAK]
-                EXPORT  USB0_IRQHandler         [WEAK]
-                EXPORT  DAC0_IRQHandler         [WEAK]
-                EXPORT  Reserved42_IRQHandler         [WEAK]
-                EXPORT  Reserved43_IRQHandler         [WEAK]
-                EXPORT  LPTMR0_IRQHandler         [WEAK]
-                EXPORT  LCD_IRQHandler         [WEAK]
-                EXPORT  PORTA_IRQHandler         [WEAK]
-                EXPORT  PORTCD_IRQHandler         [WEAK]
-                EXPORT  DefaultISR         [WEAK]
-DMA0_IRQHandler
-DMA1_IRQHandler
-DMA2_IRQHandler
-DMA3_IRQHandler
-Reserved20_IRQHandler
-FTFA_IRQHandler
-PMC_IRQHandler
-LLWU_IRQHandler
-I2C0_IRQHandler
-I2C1_IRQHandler
-SPI0_IRQHandler
-SPI1_IRQHandler
-LPUART0_IRQHandler
-LPUART1_IRQHandler
-UART2_FLEXIO_IRQHandler
-ADC0_IRQHandler
-CMP0_IRQHandler
-TPM0_IRQHandler
-TPM1_IRQHandler
-TPM2_IRQHandler
-RTC_IRQHandler
-RTC_Seconds_IRQHandler
-PIT_IRQHandler
-I2S0_IRQHandler
-USB0_IRQHandler
-DAC0_IRQHandler
-Reserved42_IRQHandler
-Reserved43_IRQHandler
-LPTMR0_IRQHandler
-LCD_IRQHandler
-PORTA_IRQHandler
-PORTCD_IRQHandler
-DefaultISR
-                B       .
-                ENDP
-                  ALIGN
-
-
-                END
--- a/targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/TOOLCHAIN_ARM_STD/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Copyright (C) 2009-2011 ARM Limited. All rights reserved.
- * 
- * Setup a fixed single stack/heap memory model, 
- *  between the top of the RW/ZI region and the stackpointer
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/TOOLCHAIN_GCC_ARM/MKL43Z4.ld	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,163 +0,0 @@
-/*
- * KL43Z ARM GCC linker script file
- */
-
-MEMORY
-{
-  VECTORS (rx) : ORIGIN = 0x00000000, LENGTH = 0x00000400
-  FLASH_PROTECTION (rx) : ORIGIN = 0x00000400, LENGTH = 0x00000010
-  FLASH (rx) : ORIGIN = 0x00000410, LENGTH = 256K - 0x00000410
-  RAM (rwx) : ORIGIN = 0x1FFFE0C0, LENGTH = 32K - 0xC0
-}
-
-/* Linker script to place sections and symbol values. Should be used together
- * with other linker script that defines memory regions FLASH and RAM.
- * It references following symbols, which must be defined in code:
- * _reset_init : Entry of reset handler
- *
- * It defines following symbols, which code can use without definition:
- * __exidx_start
- * __exidx_end
- * __etext
- * __data_start__
- * __preinit_array_start
- * __preinit_array_end
- * __init_array_start
- * __init_array_end
- * __fini_array_start
- * __fini_array_end
- * __data_end__
- * __bss_start__
- * __bss_end__
- * __end__
- * end
- * __HeapLimit
- * __StackLimit
- * __StackTop
- * __stack
- */
-ENTRY(Reset_Handler)
-
-SECTIONS
-{
-    .isr_vector :
-    {
-        __vector_table = .;
-        KEEP(*(.vector_table))
-        *(.text.Reset_Handler)
-        *(.text.System_Init)
-         . = ALIGN(4);
-    } > VECTORS
-
-    .flash_protect :
-    {
-        KEEP(*(.kinetis_flash_config_field))
-         . = ALIGN(4);
-    } > FLASH_PROTECTION
-
-    .text :
-    {
-        *(.text*)
-
-        KEEP(*(.init))
-        KEEP(*(.fini))
-
-        /* .ctors */
-        *crtbegin.o(.ctors)
-        *crtbegin?.o(.ctors)
-        *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
-        *(SORT(.ctors.*))
-        *(.ctors)
-
-        /* .dtors */
-        *crtbegin.o(.dtors)
-        *crtbegin?.o(.dtors)
-        *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
-        *(SORT(.dtors.*))
-        *(.dtors)
-
-        *(.rodata*)
-
-        KEEP(*(.eh_frame*))
-    } > FLASH
-
-    .ARM.extab :
-    {
-        *(.ARM.extab* .gnu.linkonce.armextab.*)
-    } > FLASH
-
-    __exidx_start = .;
-    .ARM.exidx :
-    {
-        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
-    } > FLASH
-    __exidx_end = .;
-
-    __etext = .;
-
-    .data : AT (__etext)
-    {
-        __data_start__ = .;
-        *(vtable)
-        *(.data*)
-
-        . = ALIGN(4);
-        /* preinit data */
-        PROVIDE_HIDDEN (__preinit_array_start = .);
-        KEEP(*(.preinit_array))
-        PROVIDE_HIDDEN (__preinit_array_end = .);
-
-        . = ALIGN(4);
-        /* init data */
-        PROVIDE_HIDDEN (__init_array_start = .);
-        KEEP(*(SORT(.init_array.*)))
-        KEEP(*(.init_array))
-        PROVIDE_HIDDEN (__init_array_end = .);
-
-
-        . = ALIGN(4);
-        /* finit data */
-        PROVIDE_HIDDEN (__fini_array_start = .);
-        KEEP(*(SORT(.fini_array.*)))
-        KEEP(*(.fini_array))
-        PROVIDE_HIDDEN (__fini_array_end = .);
-
-        . = ALIGN(4);
-        /* All data end */
-        __data_end__ = .;
-
-    } > RAM
-
-    .bss :
-    {
-        __bss_start__ = .;
-        *(.bss*)
-        *(COMMON)
-        __bss_end__ = .;
-    } > RAM
-
-    .heap :
-    {
-        __end__ = .;
-        end = __end__;
-        *(.heap*)
-        __HeapLimit = .;
-    } > RAM
-
-    /* .stack_dummy section doesn't contains any symbols. It is only
-     * used for linker to calculate size of stack sections, and assign
-     * values to stack symbols later */
-    .stack_dummy :
-    {
-        *(.stack)
-    } > RAM
-
-    /* Set stack top to end of RAM, and stack limit move down by
-     * size of stack_dummy section */
-    __StackTop = ORIGIN(RAM) + LENGTH(RAM);
-    __StackLimit = __StackTop - SIZEOF(.stack_dummy);
-    PROVIDE(__stack = __StackTop);
-
-    /* Check if data + heap + stack exceeds RAM limit */
-    ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
-}
--- a/targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/TOOLCHAIN_GCC_ARM/startup_MKL43Z4.S	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,243 +0,0 @@
-/* KL43Z startup ARM GCC
- * Purpose: startup file for Cortex-M0 devices. Should use with
- *   GCC for ARM Embedded Processors
- * Version: V1.3
- * Date: 10 Nov 2014
- *
- * Copyright (c) 2011, ARM Limited
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-    * Neither the name of the ARM Limited nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ARM LIMITED BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-    .syntax unified
-    .arch armv6-m
-
-/* Memory Model
-   The HEAP starts at the end of the DATA section and grows upward.
-
-   The STACK starts at the end of the RAM and grows downward.
-
-   The HEAP and stack STACK are only checked at compile time:
-   (DATA_SIZE + HEAP_SIZE + STACK_SIZE) < RAM_SIZE
-
-   This is just a check for the bare minimum for the Heap+Stack area before
-   aborting compilation, it is not the run time limit:
-   Heap_Size + Stack_Size = 0x200 + 0x400 = 0x600
- */
-    .section .stack
-    .align 3
-#ifdef __STACK_SIZE
-    .equ    Stack_Size, __STACK_SIZE
-#else
-    .equ    Stack_Size, 0x400
-#endif
-    .globl    __StackTop
-    .globl    __StackLimit
-__StackLimit:
-    .space    Stack_Size
-    .size __StackLimit, . - __StackLimit
-__StackTop:
-    .size __StackTop, . - __StackTop
-
-    .section .heap
-    .align 3
-#ifdef __HEAP_SIZE
-    .equ    Heap_Size, __HEAP_SIZE
-#else
-    .equ    Heap_Size, 0x200
-#endif
-    .globl    __HeapBase
-    .globl    __HeapLimit
-__HeapBase:
-    .space    Heap_Size
-    .size __HeapBase, . - __HeapBase
-__HeapLimit:
-    .size __HeapLimit, . - __HeapLimit
-
-    .section .vector_table,"a",%progbits
-    .align 2
-    .globl __isr_vector
-__isr_vector:
-    .long    __StackTop            /* Top of Stack */
-    .long    Reset_Handler         /* Reset Handler */
-    .long    NMI_Handler           /* NMI Handler */
-    .long    HardFault_Handler     /* Hard Fault Handler */
-    .long    0                     /* Reserved */
-    .long    0                     /* Reserved */
-    .long    0                     /* Reserved */
-    .long    0                     /* Reserved */
-    .long    0                     /* Reserved */
-    .long    0                     /* Reserved */
-    .long    0                     /* Reserved */
-    .long    SVC_Handler           /* SVCall Handler */
-    .long    0                     /* Reserved */
-    .long    0                     /* Reserved */
-    .long    PendSV_Handler        /* PendSV Handler */
-    .long    SysTick_Handler       /* SysTick Handler */
-
-    /* External interrupts */
-    .long   DMA0_IRQHandler         /* DMA channel 0 transfer complete interrupt */
-    .long   DMA1_IRQHandler         /* DMA channel 1 transfer complete interrupt */
-    .long   DMA2_IRQHandler         /* DMA channel 2 transfer complete interrupt */
-    .long   DMA3_IRQHandler         /* DMA channel 3 transfer complete interrupt */
-    .long   Default_Handler         /* Reserved interrupt 20 */
-    .long   FTFA_IRQHandler         /* FTFA interrupt */
-    .long   PMC_IRQHandler          /* Low-voltage detect, low-voltage warning*/
-    .long   LLWU_IRQHandler         /* Low leakage wakeup*/
-    .long   I2C0_IRQHandler         /* I2C0 interrupt*/
-    .long   I2C1_IRQHandler         /* I2C1 interrupt*/
-    .long   SPI0_IRQHandler         /* SPI0 single interrupt vector for all sources*/
-    .long   SPI1_IRQHandler         /* SPI1 single interrupt vector for all sources*/
-    .long   LPUART0_IRQHandler      /* LPUART0 status and error*/
-    .long   LPUART1_IRQHandler      /* LPUART1 status and error*/
-    .long   UART2_FLEXIO_IRQHandler /* UART2 or FLEXIO*/
-    .long   ADC0_IRQHandler         /* ADC0 interrupt*/
-    .long   CMP0_IRQHandler         /* CMP0 interrupt*/
-    .long   TPM0_IRQHandler         /* TPM0 single interrupt vector for all sources*/
-    .long   TPM1_IRQHandler         /* TPM1 single interrupt vector for all sources*/
-    .long   TPM2_IRQHandler         /* TPM2 single interrupt vector for all sources*/
-    .long   RTC_IRQHandler          /* RTC alarm*/
-    .long   RTC_Seconds_IRQHandler  /* RTC seconds*/
-    .long   PIT_IRQHandler          /* PIT interrupt*/
-    .long   I2S0_IRQHandler         /* I2S0 interrupt*/
-    .long   USB0_IRQHandler         /* USB0 interrupt*/
-    .long   DAC0_IRQHandler         /* DAC0 interrupt*/
-    .long   Reserved42_IRQHandler   /* Reserved interrupt*/
-    .long   Reserved43_IRQHandler   /* Reserved interrupt*/
-    .long   LPTMR0_IRQHandler       /* LPTMR0 interrupt*/
-    .long   LCD_IRQHandler          /* LCD interrupt*/
-    .long   PORTA_IRQHandler        /* PORTA Pin detect*/
-    .long   PORTCD_IRQHandler       /* Single interrupt vector for PORTC; PORTD Pin detect*/
-
-    .size    __isr_vector, . - __isr_vector
-
-    /* Reset Handler */
-    .section .text.Reset_Handler
-    .thumb
-    .thumb_func
-    .align  2
-    .globl   Reset_Handler
-    .type    Reset_Handler, %function
-Reset_Handler:
-    /*     Loop to copy data from read only memory to RAM. The ranges
-     *     of copy from/to are specified by following symbols evaluated in
-     *     linker script.
-     *     __etext: End of code section, i.e., begin of data sections to copy from.
-     *     __data_start__/__data_end__: RAM address range that data should be
-     *     copied to. Both must be aligned to 4 bytes boundary.  */
-    ldr    r1, =__etext
-    ldr    r2, =__data_start__
-    ldr    r3, =__data_end__
-
-    subs   r3, r2
-    ble    .Lflash_to_ram_loop_end
-
-    movs    r4, 0
-.Lflash_to_ram_loop:
-    ldr    r0, [r1,r4]
-    str    r0, [r2,r4]
-    adds   r4, 4
-    cmp    r4, r3
-    blt    .Lflash_to_ram_loop
-.Lflash_to_ram_loop_end:
-
-    ldr   r0, =SystemInit
-    blx   r0
-    ldr   r0, =_start
-    bx    r0
-    .pool
-    .size Reset_Handler, . - Reset_Handler
-
-
-    .text
-/*    Macro to define default handlers. Default handler
- *    will be weak symbol and just dead loops. They can be
- *    overwritten by other handlers */
-    .macro    def_default_handler    handler_name
-    .align 1
-    .thumb_func
-    .weak    \handler_name
-    .type    \handler_name, %function
-\handler_name :
-    b    .
-    .size    \handler_name, . - \handler_name
-    .endm
-
-    def_default_handler     NMI_Handler
-    def_default_handler     HardFault_Handler
-    def_default_handler     SVC_Handler
-    def_default_handler     PendSV_Handler
-    def_default_handler     SysTick_Handler
-    def_default_handler     Default_Handler    
-
-    .macro    def_irq_default_handler    handler_name
-    .weak     \handler_name
-    .set      \handler_name, Default_Handler
-    .endm
-
-    def_irq_default_handler    DMA0_IRQHandler
-    def_irq_default_handler    DMA1_IRQHandler
-    def_irq_default_handler    DMA2_IRQHandler
-    def_irq_default_handler    DMA3_IRQHandler
-    def_irq_default_handler    Reserved20_IRQHandler
-    def_irq_default_handler    FTFA_IRQHandler
-    def_irq_default_handler    PMC_IRQHandler
-    def_irq_default_handler    LLWU_IRQHandler
-    def_irq_default_handler    I2C0_IRQHandler
-    def_irq_default_handler    I2C1_IRQHandler
-    def_irq_default_handler    SPI0_IRQHandler
-    def_irq_default_handler    SPI1_IRQHandler
-    def_irq_default_handler    LPUART0_IRQHandler
-    def_irq_default_handler    LPUART1_IRQHandler
-    def_irq_default_handler    UART2_FLEXIO_IRQHandler
-    def_irq_default_handler    ADC0_IRQHandler
-    def_irq_default_handler    CMP0_IRQHandler
-    def_irq_default_handler    TPM0_IRQHandler
-    def_irq_default_handler    TPM1_IRQHandler
-    def_irq_default_handler    TPM2_IRQHandler
-    def_irq_default_handler    RTC_IRQHandler
-    def_irq_default_handler    RTC_Seconds_IRQHandler
-    def_irq_default_handler    PIT_IRQHandler
-    def_irq_default_handler    I2S0_IRQHandler
-    def_irq_default_handler    USB0_IRQHandler
-    def_irq_default_handler    DAC0_IRQHandler
-    def_irq_default_handler    Reserved42_IRQHandler
-    def_irq_default_handler    Reserved43_IRQHandler
-    def_irq_default_handler    LPTMR0_IRQHandler
-    def_irq_default_handler    LCD_IRQHandler
-    def_irq_default_handler    PORTA_IRQHandler
-    def_irq_default_handler    PORTCD_IRQHandler
-    def_irq_default_handler    DefaultISR
-
-    /* Flash protection region, placed at 0x400 */
-    .text
-    .thumb
-    .align 2
-    .section .kinetis_flash_config_field,"a",%progbits
-kinetis_flash_config:
-    .long 0xFFFFFFFF
-    .long 0xFFFFFFFF
-    .long 0xFFFFFFFF
-    .long 0xFFFF3FFE
-
-    .end
--- a/targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/cmsis.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-/* mbed Microcontroller Library - CMSIS
- * Copyright (C) 2009-2011 ARM Limited. All rights reserved.
- * 
- * A generic CMSIS include header, pulling in LPC11U24 specifics
- */
-
-#ifndef MBED_CMSIS_H
-#define MBED_CMSIS_H
-
-#include "MKL43Z4.h"
-#include "cmsis_nvic.h"
-
-#endif
--- a/targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/cmsis_nvic.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/* mbed Microcontroller Library - cmsis_nvic for LPC11U24
- * Copyright (c) 2011 ARM Limited. All rights reserved.
- *
- * CMSIS-style functionality to support dynamic vectors
- */
-#include "cmsis_nvic.h"
-
-#define NVIC_RAM_VECTOR_ADDRESS (0x1FFFE000)  // Vectors positioned at start of RAM
-#define NVIC_FLASH_VECTOR_ADDRESS (0x0)       // Initial vector position in flash
-
-void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) {
-    uint32_t *vectors = (uint32_t*)SCB->VTOR;
-    uint32_t i;
-
-    // Copy and switch to dynamic vectors if the first time called
-    if (SCB->VTOR == NVIC_FLASH_VECTOR_ADDRESS) {
-        uint32_t *old_vectors = vectors;
-        vectors = (uint32_t*)NVIC_RAM_VECTOR_ADDRESS;
-        for (i=0; i<NVIC_NUM_VECTORS; i++) {
-            vectors[i] = old_vectors[i];
-        }
-        SCB->VTOR = (uint32_t)NVIC_RAM_VECTOR_ADDRESS;
-    }
-    vectors[IRQn + 16] = vector;
-}
-
-uint32_t NVIC_GetVector(IRQn_Type IRQn) {
-    uint32_t *vectors = (uint32_t*)SCB->VTOR;
-    return vectors[IRQn + 16];
-}
--- a/targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/cmsis_nvic.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/* mbed Microcontroller Library - cmsis_nvic
- * Copyright (c) 2009-2011 ARM Limited. All rights reserved.
- *
- * CMSIS-style functionality to support dynamic vectors
- */ 
-
-#ifndef MBED_CMSIS_NVIC_H
-#define MBED_CMSIS_NVIC_H
-
-#define NVIC_NUM_VECTORS      (16 + 32)   // CORE + MCU Peripherals
-#define NVIC_USER_IRQ_OFFSET  16
-
-#include "cmsis.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector);
-uint32_t NVIC_GetVector(IRQn_Type IRQn);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/system_MKL43Z4.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,224 +0,0 @@
-/*
-** ###################################################################
-**     Processors:          MKL43Z256VLH4
-**                          MKL43Z128VLH4
-**                          MKL43Z64VLH4
-**                          MKL43Z256VMP4
-**                          MKL43Z128VMP4
-**                          MKL43Z64VMP4
-**
-**     Compilers:           Keil ARM C/C++ Compiler
-**                          Freescale C/C++ for Embedded ARM
-**                          GNU C Compiler
-**                          GNU C Compiler - CodeSourcery Sourcery G++
-**                          IAR ANSI C/C++ Compiler for ARM
-**
-**     Reference manual:    KL43P64M48SF6RM, Rev.3, Aug 2014
-**     Version:             rev. 1.4, 2014-09-01
-**     Build:               b140904
-**
-**     Abstract:
-**         Provides a system configuration function and a global variable that
-**         contains the system frequency. It configures the device and initializes
-**         the oscillator (PLL) that is part of the microcontroller device.
-**
-**     Copyright (c) 2014 Freescale Semiconductor, Inc.
-**     All rights reserved.
-**
-**     Redistribution and use in source and binary forms, with or without modification,
-**     are permitted provided that the following conditions are met:
-**
-**     o Redistributions of source code must retain the above copyright notice, this list
-**       of conditions and the following disclaimer.
-**
-**     o Redistributions in binary form must reproduce the above copyright notice, this
-**       list of conditions and the following disclaimer in the documentation and/or
-**       other materials provided with the distribution.
-**
-**     o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-**       contributors may be used to endorse or promote products derived from this
-**       software without specific prior written permission.
-**
-**     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-**     ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-**     WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-**     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-**     ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-**     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-**     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-**     ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-**     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-**     SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-**     http:                 www.freescale.com
-**     mail:                 support@freescale.com
-**
-**     Revisions:
-**     - rev. 1.0 (2014-03-27)
-**         Initial version.
-**     - rev. 1.1 (2014-05-26)
-**         I2S registers TCR2/RCR2 and others were changed.
-**         FLEXIO register FLEXIO_VERID has now bitfields: FEATURE, MINOR, MAJOR.
-**         Names of the bitfields of the FLEXIO_SHIFTBUF have been changed to the appropriate register name e.g.: FLEXIO_SHIFTBUFBBS_SHIFTBUFBBS.
-**         Peripheral_BASES macros has been changed to Peripheral_BASE_PTRS, e.g.: ADC_BASES to ADC_BASE_PTRS.
-**         Clock configuration for high range external oscillator has been added.
-**         RFSYS module access has been added.
-**     - rev. 1.2 (2014-07-10)
-**         GPIO - Renamed modules PTA,PTB,PTC,PTD,PTE to GPIOA,GPIOB,GPIOC,GPIOD,GPIOE.
-**         UART0 - UART0 module renamed to UART2.
-**         I2S - removed MDR register.
-**     - rev. 1.3 (2014-08-21)
-**         UART2 - Removed ED register.
-**         UART2 - Removed MODEM register.
-**         UART2 - Removed IR register.
-**         UART2 - Removed PFIFO register.
-**         UART2 - Removed CFIFO register.
-**         UART2 - Removed SFIFO register.
-**         UART2 - Removed TWFIFO register.
-**         UART2 - Removed TCFIFO register.
-**         UART2 - Removed RWFIFO register.
-**         UART2 - Removed RCFIFO register.
-**         USB - Removed bitfield REG_EN in CLK_RECOVER_IRC_EN register.
-**         SIM - Changed bitfield value MCGIRCLK to LIRC_CLK of bitfield CLKOUTSEL in SOPT2 register.
-**         SIM - Removed bitfield DIEID in SDID register.
-**     - rev. 1.4 (2014-09-01)
-**         USB - USB0_CTL0 was renamed to USB0_OTGCTL register.
-**         USB - USB0_CTL1 was renamed to USB0_CTL register.
-**
-** ###################################################################
-*/
-
-/*!
- * @file MKL43Z4
- * @version 1.4
- * @date 2014-09-01
- * @brief Device specific configuration file for MKL43Z4 (implementation file)
- *
- * Provides a system configuration function and a global variable that contains
- * the system frequency. It configures the device and initializes the oscillator
- * (PLL) that is part of the microcontroller device.
- */
-
-#include <stdint.h>
-#include "MKL43Z4.h"
-
-
-
-/* ----------------------------------------------------------------------------
-   -- Core clock
-   ---------------------------------------------------------------------------- */
-
-uint32_t SystemCoreClock = DEFAULT_SYSTEM_CLOCK;
-
-/* ----------------------------------------------------------------------------
-   -- SystemInit()
-   ---------------------------------------------------------------------------- */
-
-void SystemInit (void) {
-
-#if (ACK_ISOLATION)
-  if(PMC->REGSC &  PMC_REGSC_ACKISO_MASK) {
-    PMC->REGSC |= PMC_REGSC_ACKISO_MASK; /* VLLSx recovery */
-  }
-#endif
-
-#if (DISABLE_WDOG)
-  /* SIM->COPC: ?=0,COPCLKSEL=0,COPDBGEN=0,COPSTPEN=0,COPT=0,COPCLKS=0,COPW=0 */
-  SIM->COPC = (uint32_t)0x00u;
-#endif /* (DISABLE_WDOG) */
-
-  /* Power mode protection initialization */
-#ifdef SMC_PMPROT_VALUE
-  SMC->PMPROT = SMC_PMPROT_VALUE;
-#endif
-
-  /* System clock initialization */
-
-  /* Set system prescalers and clock sources */
-  SIM->CLKDIV1 = SYSTEM_SIM_CLKDIV1_VALUE;    /* Set system prescalers */
-  SIM->SOPT1 = ((SIM->SOPT1) & (uint32_t)(~(SIM_SOPT1_OSC32KSEL_MASK))) | ((SYSTEM_SIM_SOPT1_VALUE) & (SIM_SOPT1_OSC32KSEL_MASK)); /* Set 32 kHz clock source (ERCLK32K) */
-#define SOPT2_WRITE_MASK ((SIM_SOPT2_USBSRC_MASK) | (SIM_SOPT2_TPMSRC_MASK) | (SIM_SOPT2_LPUART0SRC_MASK) | (SIM_SOPT2_LPUART1SRC_MASK)) /* define mask of written bits. */
-  SIM->SOPT2 = ((SIM->SOPT2) & (uint32_t)(~SOPT2_WRITE_MASK)) | ((SYSTEM_SIM_SOPT2_VALUE) & SOPT2_WRITE_MASK); /* Selects the clock source for the TPM counter clock. */
-#if (MCG_MODE == MCG_MODE_LIRC_2M || MCG_MODE == MCG_MODE_LIRC_8M || MCG_MODE == MCG_MODE_HIRC)
-  /* Set MCG and OSC0 */
-#if  (((OSC0_CR_VALUE) & OSC_CR_ERCLKEN_MASK) != 0x00U)
-  /* SIM_SCGC5: PORTA=1 */
-  SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
-  /* PORTA_PCR3: ISF=0,MUX=0 */
-  PORTA_PCR18 &= (uint32_t)~(uint32_t)((PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x07)));
-  if (((MCG_C2_VALUE) & MCG_C2_EREFS0_MASK) != 0x00U) {
-    PORTA_PCR19 &= (uint32_t)~(uint32_t)((PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x07)));
-  }
-#endif
-  MCG->SC = MCG_SC_VALUE;              /* Set SC (internal reference clock divider) */
-  MCG->MC = MCG_MC_VALUE;              /* Set MC (high-frequency IRC enable, second LIRC divider) */
-  MCG->C1 = MCG_C1_VALUE;              /* Set C1 (clock source selection, int. reference enable etc.) */
-  MCG->C2 = MCG_C2_VALUE;              /* Set C2 (ext. and int. reference clock selection) */
-  OSC0->CR = OSC0_CR_VALUE;            /* Set OSC0_CR (OSCERCLK enable, oscillator capacitor load) */
-
-#else /* MCG_MODE */
-  /* Set MCG and OSC0 */
-  /* SIM_SCGC5: PORTA=1 */
-  SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
-  /* PORTA_PCR3: ISF=0,MUX=0 */
-  PORTA_PCR18 &= (uint32_t)~(uint32_t)((PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x07)));
-  if (((MCG_C2_VALUE) & MCG_C2_EREFS0_MASK) != 0x00U) {
-    PORTA_PCR19 &= (uint32_t)~(uint32_t)((PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x07)));
-  }
-  MCG->SC = MCG_SC_VALUE;              /* Set SC (internal reference clock divider) */
-  MCG->C2 = MCG_C2_VALUE;              /* Set C2 (ext. and int. reference clock selection) */
-  OSC0->CR = OSC0_CR_VALUE;            /* Set OSC0_CR (OSCERCLK enable, oscillator capacitor load) */
-  MCG->C1 = MCG_C1_VALUE;              /* Set C1 (clock source selection, int. reference enable etc.) */
-  MCG->MC = MCG_MC_VALUE;              /* Set MC (high-frequency IRC enable, second LIRC divider) */
-  if (((MCG_C2_VALUE) & MCG_C2_EREFS0_MASK) != 0U) {
-    while((MCG->S & MCG_S_OSCINIT0_MASK) == 0x00U) { /* Check that the oscillator is running */
-    }
-  }
-#endif /* MCG_MODE */
-
-  /* Common for all MCG modes */
-
-#if (MCG_MODE == MCG_MODE_HIRC)
-  while((MCG->S & MCG_S_CLKST_MASK) != 0x00U) { /* Wait until high internal reference clock is selected as MCG_Lite output */
-  }
-#elif (MCG_MODE == MCG_MODE_LIRC_2M || MCG_MODE == MCG_MODE_LIRC_8M)
-  while((MCG->S & MCG_S_CLKST_MASK) != 0x04U) { /* Wait until low internal reference clock is selected as MCG_Lite output */
-  }
-#elif (MCG_MODE == MCG_MODE_EXT)
-  while((MCG->S & MCG_S_CLKST_MASK) != 0x08U) { /* Wait until external reference clock is selected as MCG_Lite output */
-  }
-#endif
-  if (((SMC_PMCTRL_VALUE) & SMC_PMCTRL_RUNM_MASK) == SMC_PMCTRL_RUNM(0x02U)) {
-    SMC->PMCTRL = (uint8_t)((SMC_PMCTRL_VALUE) & (SMC_PMCTRL_RUNM_MASK)); /* Enable VLPR mode */
-    while(SMC->PMSTAT != 0x04U) {      /* Wait until the system is in VLPR mode */
-    }
-  }
-
-}
-
-/* ----------------------------------------------------------------------------
-   -- SystemCoreClockUpdate()
-   ---------------------------------------------------------------------------- */
-
-void SystemCoreClockUpdate (void) {
-
-  uint32_t MCGOUTClock;                                 /* Variable to store output clock frequency of the MCG module */
-  uint16_t Divider;
-
-  if ((MCG->S & MCG_S_CLKST_MASK) == 0x00U) {
-    /* High internal reference clock is selected */
-    MCGOUTClock = CPU_INT_FAST_CLK_HZ;                                  /* Fast internal reference clock selected */
-  } else if ((MCG->S & MCG_S_CLKST_MASK) == 0x04U) {
-    /* Internal reference clock is selected */
-    Divider = (uint16_t)(0x01LU << ((MCG->SC & MCG_SC_FCRDIV_MASK) >> MCG_SC_FCRDIV_SHIFT));
-    MCGOUTClock = (uint32_t) (CPU_INT_SLOW_CLK_HZ / Divider);           /* Slow internal reference clock 8MHz selected */
-  } else if ((MCG->S & MCG_S_CLKST_MASK) == 0x08U) {
-    /* External reference clock is selected */
-    MCGOUTClock = CPU_XTAL_CLK_HZ;
-  } else {
-    /* Reserved value */
-    return;
-  } /* (!((MCG->S & MCG_S_CLKST_MASK) == 0x08U)) */
-  SystemCoreClock = (MCGOUTClock / (0x01U + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT)));
-
-}
--- a/targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/system_MKL43Z4.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,335 +0,0 @@
-/*
-** ###################################################################
-**     Processors:          MKL43Z256VLH4
-**                          MKL43Z128VLH4
-**                          MKL43Z64VLH4
-**                          MKL43Z256VMP4
-**                          MKL43Z128VMP4
-**                          MKL43Z64VMP4
-**
-**     Compilers:           Keil ARM C/C++ Compiler
-**                          Freescale C/C++ for Embedded ARM
-**                          GNU C Compiler
-**                          GNU C Compiler - CodeSourcery Sourcery G++
-**                          IAR ANSI C/C++ Compiler for ARM
-**
-**     Reference manual:    KL43P64M48SF6RM, Rev.3, Aug 2014
-**     Version:             rev. 1.4, 2014-09-01
-**     Build:               b140904
-**
-**     Abstract:
-**         Provides a system configuration function and a global variable that
-**         contains the system frequency. It configures the device and initializes
-**         the oscillator (PLL) that is part of the microcontroller device.
-**
-**     Copyright (c) 2014 Freescale Semiconductor, Inc.
-**     All rights reserved.
-**
-**     Redistribution and use in source and binary forms, with or without modification,
-**     are permitted provided that the following conditions are met:
-**
-**     o Redistributions of source code must retain the above copyright notice, this list
-**       of conditions and the following disclaimer.
-**
-**     o Redistributions in binary form must reproduce the above copyright notice, this
-**       list of conditions and the following disclaimer in the documentation and/or
-**       other materials provided with the distribution.
-**
-**     o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-**       contributors may be used to endorse or promote products derived from this
-**       software without specific prior written permission.
-**
-**     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-**     ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-**     WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-**     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-**     ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-**     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-**     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-**     ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-**     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-**     SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-**     http:                 www.freescale.com
-**     mail:                 support@freescale.com
-**
-**     Revisions:
-**     - rev. 1.0 (2014-03-27)
-**         Initial version.
-**     - rev. 1.1 (2014-05-26)
-**         I2S registers TCR2/RCR2 and others were changed.
-**         FLEXIO register FLEXIO_VERID has now bitfields: FEATURE, MINOR, MAJOR.
-**         Names of the bitfields of the FLEXIO_SHIFTBUF have been changed to the appropriate register name e.g.: FLEXIO_SHIFTBUFBBS_SHIFTBUFBBS.
-**         Peripheral_BASES macros has been changed to Peripheral_BASE_PTRS, e.g.: ADC_BASES to ADC_BASE_PTRS.
-**         Clock configuration for high range external oscillator has been added.
-**         RFSYS module access has been added.
-**     - rev. 1.2 (2014-07-10)
-**         GPIO - Renamed modules PTA,PTB,PTC,PTD,PTE to GPIOA,GPIOB,GPIOC,GPIOD,GPIOE.
-**         UART0 - UART0 module renamed to UART2.
-**         I2S - removed MDR register.
-**     - rev. 1.3 (2014-08-21)
-**         UART2 - Removed ED register.
-**         UART2 - Removed MODEM register.
-**         UART2 - Removed IR register.
-**         UART2 - Removed PFIFO register.
-**         UART2 - Removed CFIFO register.
-**         UART2 - Removed SFIFO register.
-**         UART2 - Removed TWFIFO register.
-**         UART2 - Removed TCFIFO register.
-**         UART2 - Removed RWFIFO register.
-**         UART2 - Removed RCFIFO register.
-**         USB - Removed bitfield REG_EN in CLK_RECOVER_IRC_EN register.
-**         SIM - Changed bitfield value MCGIRCLK to LIRC_CLK of bitfield CLKOUTSEL in SOPT2 register.
-**         SIM - Removed bitfield DIEID in SDID register.
-**     - rev. 1.4 (2014-09-01)
-**         USB - USB0_CTL0 was renamed to USB0_OTGCTL register.
-**         USB - USB0_CTL1 was renamed to USB0_CTL register.
-**
-** ###################################################################
-*/
-
-/*!
- * @file MKL43Z4
- * @version 1.4
- * @date 2014-09-01
- * @brief Device specific configuration file for MKL43Z4 (header file)
- *
- * Provides a system configuration function and a global variable that contains
- * the system frequency. It configures the device and initializes the oscillator
- * (PLL) that is part of the microcontroller device.
- */
-
-#ifndef SYSTEM_MKL43Z4_H_
-#define SYSTEM_MKL43Z4_H_                        /**< Symbol preventing repeated inclusion */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdint.h>
-
-
-#ifndef DISABLE_WDOG
-  #define DISABLE_WDOG  1
-#endif
-
-#define ACK_ISOLATION   1
-
-#ifndef CLOCK_SETUP
-  #define CLOCK_SETUP   1
-#endif
-
-/* MCG_Lite mode constants */
-
-#define MCG_MODE_LIRC_8M               0U
-#define MCG_MODE_HIRC                  1U
-#define MCG_MODE_LIRC_2M               2U
-#define MCG_MODE_EXT                   3U
-
-/* Predefined clock setups
-   0 ... Multipurpose Clock Generator Lite (MCG_Lite) in Low-frequency Internal Reference Clock 8 MHz (LIRC 8 MHz) mode
-         Default part configuration.
-         Core clock/Bus clock derived from the internal clock source 8 MHz
-         Core clock = 4MHz, BusClock = 2MHz, USB FS clock derived from external clock USB_CLKIN (applicable only for derivatived with USB)
-   1 ... Multipurpose Clock Generator Lite (MCG_Lite) in High-frequency Internal Reference Clock (HIRC) mode
-         Maximum achievable clock frequency configuration using internal clock.
-         Core clock/Bus clock derived from the internal clock source 48MHz
-         Core clock = 48MHz, BusClock = 24MHz, USB FS clock derived from external clock USB_CLKIN (applicable only for derivatived with USB)
-   2 ... Multipurpose Clock Generator Lite (MCG_Lite) in External Oscillator (EXT) mode
-         Core clock/Bus clock derived directly from the external crystal 32.768kHz
-         The clock settings is ready for Very Low Power Run mode.
-         Core clock = 32.768kHz, BusClock = 32.768kHz, USB FS clock derived from external clock USB_CLKIN (applicable only for derivatived with USB)
-   3 ... Multipurpose Clock Generator Lite (MCG_Lite) in Low-frequency Internal Reference Clock 2 MHz (LIRC 2 MHz) mode
-         Core clock/Bus clock derived from the internal clock source 2 MHz
-         The clock settings is ready for Very Low Power Run mode.
-         Core clock = 2MHz, BusClock = 1MHz, USB FS clock derived from external clock USB_CLKIN (applicable only for derivatived with USB)
-   4 ... Multipurpose Clock Generator Lite (MCG_Lite) in High-frequency Internal Reference Clock (HIRC) mode
-         USB clock setup - for USB to receive internal 48MHz clock derived from HIRC.
-         Core clock/Bus clock derived from the internal clock source 48MHz
-         Core clock = 48MHz, BusClock = 24MHz, USB FS clock derived from HIRC (MCGPCLK)
-   5 ... Multipurpose Clock Generator Lite (MCG_Lite) in External Oscillator (EXT) mode
-         Core clock/Bus clock derived directly from the external crystal 8 MHz
-         Core clock = 8MHz, BusClock = 4MHz, USB FS clock derived from external clock USB_CLKIN (applicable only for derivatived with USB)
-*/
-
-/* Define clock source values */
-
-#define CPU_XTAL_CLK_HZ                32768u              /* Value of the external crystal or oscillator clock frequency in Hz */
-#define CPU_INT_FAST_CLK_HZ            48000000u           /* Value of the fast internal oscillator clock frequency in Hz  */
-#define CPU_INT_IRC_CLK_HZ             48000000u           /* Value of the 48M internal oscillator clock frequency in Hz  */
-
-/* Low power mode enable */
-/* SMC_PMPROT: AVLP=1,AVLLS=1 */
-#define SMC_PMPROT_VALUE               0x22u               /* SMC_PMPROT */
-
-#if (CLOCK_SETUP == 0)
-  #define DEFAULT_SYSTEM_CLOCK         4000000u            /* Default System clock value */
-  #define CPU_INT_SLOW_CLK_HZ          8000000u            /* Value of the slow internal oscillator clock frequency in Hz  */
-  #define MCG_MODE                     MCG_MODE_LIRC_8M    /* Clock generator mode */
-  /* MCG_C1: CLKS=1,IRCLKEN=1,IREFSTEN=0 */
-  #define MCG_C1_VALUE                 0x42u               /* MCG_C1 */
-  /* MCG_C2: RANGE0=0,HGO0=0,EREFS0=0,IRCS=1 */
-  #define MCG_C2_VALUE                 0x01u               /* MCG_C2 */
-  /* MCG_SC: FCRDIV=0 */
-  #define MCG_SC_VALUE                 0x00u               /* MCG_SC */
-  /* MCG_MC: HIRCEN=0 LIRC_DIV2=0 */
-  #define MCG_MC_VALUE                 0x00u               /* MCG_MC */
-  /* OSC0_CR: ERCLKEN=0,EREFSTEN=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
-  #define OSC0_CR_VALUE                0x00u               /* OSC0_CR */
-  /* SMC_PMCTRL: RUNM=0,STOPA=0,STOPM=0 */
-  #define SMC_PMCTRL_VALUE             0x00u               /* SMC_PMCTRL */
-  /* SIM_CLKDIV1: OUTDIV1=1,OUTDIV4=1 */
-  #define SYSTEM_SIM_CLKDIV1_VALUE     0x10010000u         /* SIM_CLKDIV1 */
-  /* SIM_SOPT1: OSC32KSEL=0,OSC32KOUT=0 */
-  #define SYSTEM_SIM_SOPT1_VALUE       0x00000000u         /* SIM_SOPT1 */
-  /* SIM_SOPT2: LPUART1SRC=0,LPUART0SRC=0,TPMSRC=3,FLEXIOSRC=0,USBSRC=0,CLKOUTSEL=0,RTCCLKOUTSEL=0 */
-  #define SYSTEM_SIM_SOPT2_VALUE       0x03000000u         /* SIM_SOPT2 */
-#elif (CLOCK_SETUP == 1)
-  #define DEFAULT_SYSTEM_CLOCK         48000000u           /* Default System clock value */
-  #define CPU_INT_SLOW_CLK_HZ          8000000u            /* Value of the slow internal oscillator clock frequency in Hz  */
-  #define MCG_MODE                     MCG_MODE_HIRC       /* Clock generator mode */
-  /* MCG_C1: CLKS=0,IRCLKEN=0,IREFSTEN=0 */
-  #define MCG_C1_VALUE                 0x00u               /* MCG_C1 */
-  /* MCG_C2: RANGE0=0,HGO0=0,EREFS0=0,IRCS=1 */
-  #define MCG_C2_VALUE                 0x01u               /* MCG_C2 */
-  /* MCG_SC: FCRDIV=0 */
-  #define MCG_SC_VALUE                 0x00u               /* MCG_SC */
-  /* MCG_MC: HIRCEN=1 LIRC_DIV2=0 */
-  #define MCG_MC_VALUE                 0x80u               /* MCG_MC */
-  /* OSC0_CR: ERCLKEN=0,EREFSTEN=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
-  #define OSC0_CR_VALUE                0x00u               /* OSC0_CR */
-  /* SMC_PMCTRL: RUNM=0,STOPA=0,STOPM=0 */
-  #define SMC_PMCTRL_VALUE             0x00u               /* SMC_PMCTRL */
-  /* SIM_CLKDIV1: OUTDIV1=0,OUTDIV4=1 */
-  #define SYSTEM_SIM_CLKDIV1_VALUE     0x10000u            /* SIM_CLKDIV1 */
-  /* SIM_SOPT1: OSC32KSEL=0,OSC32KOUT=0 */
-  #define SYSTEM_SIM_SOPT1_VALUE       0x00000000u         /* SIM_SOPT1 */
-  /* SIM_SOPT2: LPUART1SRC=0,LPUART0SRC=0,TPMSRC=3,FLEXIOSRC=0,USBSRC=0,CLKOUTSEL=0,RTCCLKOUTSEL=0 */
-  #define SYSTEM_SIM_SOPT2_VALUE       0x03000000U         /* SIM_SOPT2 */
-#elif (CLOCK_SETUP == 2)
-  #define DEFAULT_SYSTEM_CLOCK         32768u              /* Default System clock value */
-  #define CPU_INT_SLOW_CLK_HZ          8000000u            /* Value of the slow internal oscillator clock frequency in Hz  */
-  #define MCG_MODE                     MCG_MODE_EXT        /* Clock generator mode */
-  /* MCG_C1: CLKS=2,IRCLKEN=1,IREFSTEN=0 */
-  #define MCG_C1_VALUE                 0x82u               /* MCG_C1 */
-  /* MCG_C2: RANGE0=0,HGO0=0,EREFS0=1,IRCS=1 */
-  #define MCG_C2_VALUE                 0x05u               /* MCG_C2 */
-  /* MCG_SC: FCRDIV=0 */
-  #define MCG_SC_VALUE                 0x00u               /* MCG_SC */
-  /* MCG_MC: HIRCEN=0 LIRC_DIV2=0 */
-  #define MCG_MC_VALUE                 0x00u               /* MCG_MC */
-  /* OSC0_CR: ERCLKEN=1,EREFSTEN=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
-  #define OSC0_CR_VALUE                0x80u               /* OSC0_CR */
-  /* SMC_PMCTRL: RUNM=0,STOPA=0,STOPM=0 */
-  #define SMC_PMCTRL_VALUE             0x00u               /* SMC_PMCTRL */
-  /* SIM_CLKDIV1: OUTDIV1=0,OUTDIV4=0 */
-  #define SYSTEM_SIM_CLKDIV1_VALUE     0x00u               /* SIM_CLKDIV1 */
-  /* SIM_SOPT1: OSC32KSEL=0,OSC32KOUT=0 */
-  #define SYSTEM_SIM_SOPT1_VALUE       0x00000000u         /* SIM_SOPT1 */
-  /* SIM_SOPT2: LPUART1SRC=0,LPUART0SRC=0,TPMSRC=2,FLEXIOSRC=0,USBSRC=0,CLKOUTSEL=0,RTCCLKOUTSEL=0 */
-  #define SYSTEM_SIM_SOPT2_VALUE       0x02000000u         /* SIM_SOPT2 */
-#elif (CLOCK_SETUP == 3)
-  #define DEFAULT_SYSTEM_CLOCK         2000000u            /* Default System clock value */
-  #define CPU_INT_SLOW_CLK_HZ          2000000u            /* Value of the slow internal oscillator clock frequency in Hz  */
-  #define MCG_MODE                     MCG_MODE_LIRC_2M    /* Clock generator mode */
-  /* MCG_C1: CLKS=1,IRCLKEN=1,IREFSTEN=0 */
-  #define MCG_C1_VALUE                 0x42u               /* MCG_C1 */
-  /* MCG_C2: RANGE0=0,HGO0=0,EREFS0=0,IRCS=0 */
-  #define MCG_C2_VALUE                 0x00u               /* MCG_C2 */
-  /* MCG_SC: FCRDIV=0 */
-  #define MCG_SC_VALUE                 0x00u               /* MCG_SC */
-  /* MCG_MC: HIRCEN=0 LIRC_DIV2=0 */
-  #define MCG_MC_VALUE                 0x00u               /* MCG_MC */
-  /* OSC0_CR: ERCLKEN=0,EREFSTEN=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
-  #define OSC0_CR_VALUE                0x00u               /* OSC0_CR */
-  /* SMC_PMCTRL: RUNM=0,STOPA=0,STOPM=0 */
-  #define SMC_PMCTRL_VALUE             0x00u               /* SMC_PMCTRL */
-  /* SIM_CLKDIV1: OUTDIV1=0,OUTDIV4=1 */
-  #define SYSTEM_SIM_CLKDIV1_VALUE     0x10000u            /* SIM_CLKDIV1 */
-  /* SIM_SOPT1: OSC32KSEL=0,OSC32KOUT=0 */
-  #define SYSTEM_SIM_SOPT1_VALUE       0x00000000u         /* SIM_SOPT1 */
-  /* SIM_SOPT2: LPUART1SRC=0,LPUART0SRC=0,TPMSRC=3,FLEXIOSRC=0,USBSRC=0,CLKOUTSEL=0,RTCCLKOUTSEL=0 */
-  #define SYSTEM_SIM_SOPT2_VALUE       0x03000000u         /* SIM_SOPT2 */
-#elif (CLOCK_SETUP == 4)
-  #define DEFAULT_SYSTEM_CLOCK         2000000u            /* Default System clock value */
-  #define CPU_INT_SLOW_CLK_HZ          8000000u            /* Value of the slow internal oscillator clock frequency in Hz  */
-  #define MCG_MODE                     MCG_MODE_LIRC_2M    /* Clock generator mode */
-  /* MCG_C1: CLKS=0,IRCLKEN=1,IREFSTEN=0 */
-  #define MCG_C1_VALUE                 0x02u               /* MCG_C1 */
-  /* MCG_C2: RANGE0=0,HGO0=0,EREFS0=0,IRCS=1 */
-  #define MCG_C2_VALUE                 0x01u               /* MCG_C2 */
-  /* MCG_SC: FCRDIV=0 */
-  #define MCG_SC_VALUE                 0x00u               /* MCG_SC */
-  /* MCG_MC: HIRCEN=1 LIRC_DIV2=0 */
-  #define MCG_MC_VALUE                 0x80u               /* MCG_MC */
-  /* OSC0_CR: ERCLKEN=0,EREFSTEN=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
-  #define OSC0_CR_VALUE                0x00u               /* OSC0_CR */
-  /* SMC_PMCTRL: RUNM=0,STOPA=0,STOPM=0 */
-  #define SMC_PMCTRL_VALUE             0x00u               /* SMC_PMCTRL */
-  /* SIM_CLKDIV1: OUTDIV1=0,OUTDIV4=1 */
-  #define SYSTEM_SIM_CLKDIV1_VALUE     0x10000u            /* SIM_CLKDIV1 */
-  /* SIM_SOPT1: OSC32KSEL=0,OSC32KOUT=0 */
-  #define SYSTEM_SIM_SOPT1_VALUE       0x00000000u         /* SIM_SOPT1 */
-  /* SIM_SOPT2: LPUART1SRC=0,LPUART0SRC=0,TPMSRC=3,FLEXIOSRC=0,USBSRC=1,CLKOUTSEL=0,RTCCLKOUTSEL=0 */
-  #define SYSTEM_SIM_SOPT2_VALUE       0x03040000u         /* SIM_SOPT2 */
-#elif (CLOCK_SETUP == 5)
-  #define DEFAULT_SYSTEM_CLOCK         2000000u            /* Default System clock value */
-  #define CPU_INT_SLOW_CLK_HZ          2000000u            /* Value of the slow internal oscillator clock frequency in Hz  */
-  #define MCG_MODE                     MCG_MODE_LIRC_2M    /* Clock generator mode */
-  /* MCG_C1: CLKS=2,IRCLKEN=0,IREFSTEN=0 */
-  #define MCG_C1_VALUE                 0x80u               /* MCG_C1 */
-  /* MCG_C2: RANGE0=1,HGO0=0,EREFS0=1,IRCS=1 */
-  #define MCG_C2_VALUE                 0x15u               /* MCG_C2 */
-  /* MCG_SC: FCRDIV=0 */
-  #define MCG_SC_VALUE                 0x00u               /* MCG_SC */
-  /* MCG_MC: HIRCEN=0 LIRC_DIV2=0 */
-  #define MCG_MC_VALUE                 0x00u               /* MCG_MC */
-  /* OSC0_CR: ERCLKEN=1,EREFSTEN=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
-  #define OSC0_CR_VALUE                0x80u               /* OSC0_CR */
-  /* SMC_PMCTRL: RUNM=0,STOPA=0,STOPM=0 */
-  #define SMC_PMCTRL_VALUE             0x00u               /* SMC_PMCTRL */
-  /* SIM_CLKDIV1: OUTDIV1=0,OUTDIV4=1 */
-  #define SYSTEM_SIM_CLKDIV1_VALUE     0x10000u            /* SIM_CLKDIV1 */
-  /* SIM_SOPT1: OSC32KSEL=0,OSC32KOUT=0 */
-  #define SYSTEM_SIM_SOPT1_VALUE       0x00000000u         /* SIM_SOPT1 */
-  /* SIM_SOPT2: LPUART1SRC=0,LPUART0SRC=0,TPMSRC=3,FLEXIOSRC=0,USBSRC=0,CLKOUTSEL=0,RTCCLKOUTSEL=0 */
-  #define SYSTEM_SIM_SOPT2_VALUE       0x03000000u         /* SIM_SOPT2 */
-#else
-  #error The selected clock setup is not supported.
-#endif /* (CLOCK_SETUP == 5) */
-
-
-/**
- * @brief System clock frequency (core clock)
- *
- * The system clock frequency supplied to the SysTick timer and the processor
- * core clock. This variable can be used by the user application to setup the
- * SysTick timer or configure other parameters. It may also be used by debugger to
- * query the frequency of the debug timer or configure the trace clock speed
- * SystemCoreClock is initialized with a correct predefined value.
- */
-extern uint32_t SystemCoreClock;
-
-/**
- * @brief Setup the microcontroller system.
- *
- * Typically this function configures the oscillator (PLL) that is part of the
- * microcontroller device. For systems with variable clock speed it also updates
- * the variable SystemCoreClock. SystemInit is called from startup_device file.
- */
-void SystemInit (void);
-
-/**
- * @brief Updates the SystemCoreClock variable.
- *
- * It must be called whenever the core clock is changed during program
- * execution. SystemCoreClockUpdate() evaluates the clock register settings and calculates
- * the current core clock.
- */
-void SystemCoreClockUpdate (void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* #if !defined(SYSTEM_MKL43Z4_H_) */
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F0/TARGET_DISCO_F051R8/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F0/TARGET_NUCLEO_F030R8/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F0/TARGET_NUCLEO_F031K6/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F0/TARGET_NUCLEO_F042K6/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F0/TARGET_NUCLEO_F070RB/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F0/TARGET_NUCLEO_F072RB/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F0/TARGET_NUCLEO_F091RC/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F1/TARGET_DISCO_F100RB/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2016, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F1/TARGET_NUCLEO_F103RB/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2016, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F334C8/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F303K8/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F303RE/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F334R8/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_B96B_F446VE/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2015, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F429ZI/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2015, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F469NI/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2015, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_ELMO_F411RE/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_MTS_DRAGONFLY_F411RE/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_MTS_MDOT_F405RG/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_MTS_MDOT_F411RE/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F410RB/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F411RE/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F446RE/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2015, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_STM32F407VG/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Copyright (C) 2009-2011 ARM Limited. All rights reserved.
- * 
- * Setup a fixed single stack/heap memory model, 
- *  between the top of the RW/ZI region and the stackpointer
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F4/TARGET_UBLOX_C029/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F7/TARGET_DISCO_F746NG/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32F7/TARGET_NUCLEO_F746ZG/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32L0/TARGET_DISCO_L053C8/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32L0/TARGET_NUCLEO_L031K6/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32L0/TARGET_NUCLEO_L053R8/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32L0/TARGET_NUCLEO_L073RZ/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32L1/TARGET_MOTE_L152RC/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32L1/TARGET_NUCLEO_L152RE/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32L1/TARGET_NZ32_SC151/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2015, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32L4/TARGET_DISCO_L476VG/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/cmsis/TARGET_STM/TARGET_STM32L4/TARGET_NUCLEO_L476RG/TOOLCHAIN_ARM_MICRO/sys.cpp	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/* mbed Microcontroller Library - stackheap
- * Setup a fixed single stack/heap memory model, 
- * between the top of the RW/ZI region and the stackpointer
- *******************************************************************************
- * Copyright (c) 2014, STMicroelectronics
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. Neither the name of STMicroelectronics nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *******************************************************************************
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif 
-
-#include <rt_misc.h>
-#include <stdint.h>
-
-extern char Image$$RW_IRAM1$$ZI$$Limit[];
-
-extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
-    uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
-    uint32_t sp_limit = __current_sp();
-
-    zi_limit = (zi_limit + 7) & ~0x7;    // ensure zi_limit is 8-byte aligned
-
-    struct __initial_stackheap r;
-    r.heap_base = zi_limit;
-    r.heap_limit = sp_limit;
-    return r;
-}
-
-#ifdef __cplusplus
-}
-#endif 
--- a/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/PeripheralNames.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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 MBED_PERIPHERALNAMES_H
-#define MBED_PERIPHERALNAMES_H
-
-#include "cmsis.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
-    OSC32KCLK = 0,
-    RTC_CLKIN = 2
-} RTCName;
-
-typedef enum {
-    UART_0 = (int)LPUART0_BASE,
-    UART_1 = (int)LPUART1_BASE,
-    UART_2 = (int)UART2_BASE
-} UARTName;
-#define STDIO_UART_TX     USBTX
-#define STDIO_UART_RX     USBRX
-#define STDIO_UART        UART_0
-
-typedef enum {
-    I2C_0 = (int)I2C0_BASE,
-    I2C_1 = (int)I2C1_BASE,
-} I2CName;
-
-#define TPM_SHIFT   8
-typedef enum {
-    PWM_1  = (0 << TPM_SHIFT) | (0),  // TPM0 CH0
-    PWM_2  = (0 << TPM_SHIFT) | (1),  // TPM0 CH1
-    PWM_3  = (0 << TPM_SHIFT) | (2),  // TPM0 CH2
-    PWM_4  = (0 << TPM_SHIFT) | (3),  // TPM0 CH3
-    PWM_5  = (0 << TPM_SHIFT) | (4),  // TPM0 CH4
-    PWM_6  = (0 << TPM_SHIFT) | (5),  // TPM0 CH5
-
-    PWM_7  = (1 << TPM_SHIFT) | (0),  // TPM1 CH0
-    PWM_8  = (1 << TPM_SHIFT) | (1),  // TPM1 CH1
-
-    PWM_9  = (2 << TPM_SHIFT) | (0),  // TPM2 CH0
-    PWM_10 = (2 << TPM_SHIFT) | (1)   // TPM2 CH1
-} PWMName;
-
-#define CHANNELS_A_SHIFT    5
-typedef enum {
-    ADC0_SE0  =  0,
-    ADC0_SE3  =  3,
-    ADC0_SE4a =  (1 << CHANNELS_A_SHIFT) | (4),
-    ADC0_SE4b =  4,
-    ADC0_SE5b =  5,
-    ADC0_SE6b =  6,
-    ADC0_SE7a =  (1 << CHANNELS_A_SHIFT) | (7),
-    ADC0_SE7b =  7,
-    ADC0_SE8  =  8,
-    ADC0_SE9  =  9,
-    ADC0_SE11 = 11,
-    ADC0_SE12 = 12,
-    ADC0_SE13 = 13,
-    ADC0_SE14 = 14,
-    ADC0_SE15 = 15,
-    ADC0_SE23 = 23
-} ADCName;
-
-typedef enum {
-    DAC_0 = 0
-} DACName;
-
-
-typedef enum {
-    SPI_0 = (int)SPI0_BASE,
-    SPI_1 = (int)SPI1_BASE,
-} SPIName;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/PeripheralPins.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,184 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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.
- */
- 
-#include "PeripheralPins.h"
-
-/************RTC***************/
-const PinMap PinMap_RTC[] = {
-	{NC, OSC32KCLK, 0},
-};
-
-/************ADC***************/
-const PinMap PinMap_ADC[] = {
-    {PTE20, ADC0_SE0,  0},
-    {PTE22, ADC0_SE3,  0},
-    {PTE21, ADC0_SE4a, 0},
-    {PTE29, ADC0_SE4b, 0},
-    {PTE30, ADC0_SE23, 0},
-    {PTE23, ADC0_SE7a, 0},
-    {PTB0,  ADC0_SE8,  0},
-    {PTB1,  ADC0_SE9,  0},
-    {PTB2,  ADC0_SE12, 0},
-    {PTB3,  ADC0_SE13, 0},
-    {PTC0,  ADC0_SE14, 0},
-    {PTC1,  ADC0_SE15, 0},
-    {PTC2,  ADC0_SE11, 0},
-    {PTD1,  ADC0_SE5b, 0},
-    {PTD5,  ADC0_SE6b, 0},
-    {PTD6,  ADC0_SE7b, 0},
-    {NC,    NC,        0}
-};
-
-/************DAC***************/
-const PinMap PinMap_DAC[] = {
-    {PTE30, DAC_0, 0},
-    {NC   , NC   , 0}
-};
-
-/************I2C***************/
-const PinMap PinMap_I2C_SDA[] = {
-    {PTA4,  I2C_0, 2},
-    {PTB1,  I2C_0, 2},
-    {PTB3,  I2C_0, 2},
-    {PTC2,  I2C_1, 2},
-    {PTE0,  I2C_1, 6},
-    {PTE25, I2C_0, 5},
-    {NC  ,  NC   , 0}
-};
-
-const PinMap PinMap_I2C_SCL[] = {
-    {PTA3,  I2C_0, 2},
-    {PTB0,  I2C_0, 2},
-    {PTB2,  I2C_0, 2},
-    {PTC1,  I2C_1, 2},
-    {PTE1,  I2C_1, 6},
-    {PTE24, I2C_0, 5},
-    {NC  ,  NC,    0}
-};
-
-/************UART***************/
-const PinMap PinMap_UART_TX[] = {
-    {PTA2,  UART_0, 2},
-    {PTA19, UART_1, 3},
-    {PTB17, UART_0, 3},
-    {PTD3,  UART_2, 3},
-    {PTD5,  UART_2, 3},
-    {PTD7,  UART_0, 3},
-    {PTE0,  UART_1, 3},
-    {PTE20, UART_0, 4},
-    {PTE22, UART_2, 4},
-    {PTE30, UART_1, 5},
-    {NC  ,  NC    , 0}
-};
-
-const PinMap PinMap_UART_RX[] = {
-    {PTA1,  UART_0, 2},
-    {PTA18, UART_1, 3},
-    {PTB16, UART_0, 3},
-    {PTC3,  UART_1, 3},
-    {PTD2,  UART_2, 3},
-    {PTD4,  UART_2, 3},
-    {PTD6,  UART_0, 3},
-    {PTE1,  UART_1, 3},
-    {PTE21, UART_0, 4},
-    {PTE23, UART_2, 4},
-    {NC  ,  NC    , 0}
-};
-
-/************SPI***************/
-const PinMap PinMap_SPI_SCLK[] = {
-    {PTC3,  SPI_1, 2},
-    {PTC5,  SPI_0, 2},
-    {PTD1,  SPI_0, 2},
-    {PTD5,  SPI_1, 2},
-    {NC  ,  NC   , 0}
-};
-
-const PinMap PinMap_SPI_MOSI[] = {
-    {PTB16, SPI_1, 2},
-    {PTB17, SPI_1, 5},
-    {PTC6,  SPI_0, 2},
-    {PTC7,  SPI_0, 5},
-    {PTD2,  SPI_0, 2},
-    {PTD3,  SPI_0, 5},
-    {PTD6,  SPI_1, 2},
-    {PTD7,  SPI_1, 5},
-    {PTE1,  SPI_1, 2},
-    {NC  ,  NC   , 0}
-};
-
-const PinMap PinMap_SPI_MISO[] = {
-    {PTB16, SPI_1, 5},
-    {PTB17, SPI_1, 2},
-    {PTC6,  SPI_0, 5},
-    {PTC7,  SPI_0, 2},
-    {PTD2,  SPI_0, 5},
-    {PTD3,  SPI_0, 2},
-    {PTD6,  SPI_1, 5},
-    {PTD7,  SPI_1, 2},
-    {PTE0,  SPI_1, 2},
-    {PTE1,  SPI_1, 5},
-    {NC   , NC   , 0}
-};
-
-const PinMap PinMap_SPI_SSEL[] = {
-    {PTC4,  SPI_0, 2},
-    {PTD0,  SPI_0, 2},
-    {PTD4,  SPI_1, 2},
-    {NC  ,  NC   , 0}
-};
-
-/************PWM***************/
-const PinMap PinMap_PWM[] = {
-    {PTA0,  PWM_6,  3}, // PTA0 , TPM0 CH5    
-    {PTA1,  PWM_9 , 3}, // PTA1 , TPM2 CH0
-    {PTA2,  PWM_10, 3}, // PTA2 , TPM2 CH1
-    {PTA3,  PWM_1,  3}, // PTA3 , TPM0 CH0
-    {PTA4,  PWM_2 , 3}, // PTA4 , TPM0 CH1
-    {PTA5,  PWM_3 , 3}, // PTA5 , TPM0 CH2
-    {PTA12, PWM_7 , 3}, // PTA12, TPM1 CH0
-    {PTA13, PWM_8 , 3}, // PTA13, TPM1 CH1  
-    
-    {PTB0,  PWM_7,  3}, // PTB0 , TPM1 CH0
-    {PTB1,  PWM_8,  3}, // PTB1 , TPM1 CH1
-    {PTB2,  PWM_9,  3}, // PTB2 , TPM2 CH0
-    {PTB3,  PWM_10, 3}, // PTB3 , TPM2 CH1
-    {PTB18, PWM_9,  3}, // PTB18, TPM2 CH0
-    {PTB19, PWM_10, 3}, // PTB18, TPM2 CH1
-
-    {PTC1,  PWM_1,  4}, // PTC1 , TPM0 CH0
-    {PTC2,  PWM_2,  4}, // PTC2 , TPM0 CH1
-    {PTC3,  PWM_3,  4}, // PTC3 , TPM0 CH2
-    {PTC4,  PWM_4,  4}, // PTC4 , TPM0 CH3
-    
-    {PTD0,  PWM_1 , 4}, // PTD0 , TPM0 CH0
-    {PTD1,  PWM_2 , 4}, // PTD0 , TPM0 CH1
-    {PTD2,  PWM_3 , 4}, // PTD2 , TPM0 CH2
-    {PTD3,  PWM_4 , 4}, // PTD3 , TPM0 CH3    
-    {PTD4,  PWM_5 , 4}, // PTD4 , TPM0 CH4
-    {PTD5,  PWM_6 , 4}, // PTD5 , TPM0 CH5
-
-    {PTE20, PWM_7,  3}, // PTE20, TPM1 CH0
-    {PTE21, PWM_8,  3}, // PTE21, TPM1 CH1
-    {PTE22, PWM_9,  3}, // PTE22, TPM2 CH0
-    {PTE23, PWM_10, 3}, // PTE23, TPM2 CH1
-    {PTE24, PWM_1,  3}, // PTE24, TPM0 CH0
-    {PTE25, PWM_2,  3}, // PTE25, TPM0 CH1
-    {PTE29, PWM_3,  3}, // PTE29, TPM0 CH2
-    {PTE30, PWM_4,  3}, // PTE30, TPM0 CH3
-    {PTE31, PWM_5,  3}, // PTE31, TPM0 CH4
-    {NC   , NC,     0}
-};
--- a/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/PinNames.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,258 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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 MBED_PINNAMES_H
-#define MBED_PINNAMES_H
-
-#include "cmsis.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
-    PIN_INPUT,
-    PIN_OUTPUT
-} PinDirection;
-
-#define PORT_SHIFT  12
-
-typedef enum {
-    PTA0 = 0x0,
-    PTA1 = 0x4,
-    PTA2 = 0x8,
-    PTA3 = 0xc,
-    PTA4 = 0x10,
-    PTA5 = 0x14,
-    PTA6 = 0x18,
-    PTA7 = 0x1c,
-    PTA8 = 0x20,
-    PTA9 = 0x24,
-    PTA10 = 0x28,
-    PTA11 = 0x2c,
-    PTA12 = 0x30,
-    PTA13 = 0x34,
-    PTA14 = 0x38,
-    PTA15 = 0x3c,
-    PTA16 = 0x40,
-    PTA17 = 0x44,
-    PTA18 = 0x48,
-    PTA19 = 0x4c,
-    PTA20 = 0x50,
-    PTA21 = 0x54,
-    PTA22 = 0x58,
-    PTA23 = 0x5c,
-    PTA24 = 0x60,
-    PTA25 = 0x64,
-    PTA26 = 0x68,
-    PTA27 = 0x6c,
-    PTA28 = 0x70,
-    PTA29 = 0x74,
-    PTA30 = 0x78,
-    PTA31 = 0x7c,
-    PTB0 = 0x1000,
-    PTB1 = 0x1004,
-    PTB2 = 0x1008,
-    PTB3 = 0x100c,
-    PTB4 = 0x1010,
-    PTB5 = 0x1014,
-    PTB6 = 0x1018,
-    PTB7 = 0x101c,
-    PTB8 = 0x1020,
-    PTB9 = 0x1024,
-    PTB10 = 0x1028,
-    PTB11 = 0x102c,
-    PTB12 = 0x1030,
-    PTB13 = 0x1034,
-    PTB14 = 0x1038,
-    PTB15 = 0x103c,
-    PTB16 = 0x1040,
-    PTB17 = 0x1044,
-    PTB18 = 0x1048,
-    PTB19 = 0x104c,
-    PTB20 = 0x1050,
-    PTB21 = 0x1054,
-    PTB22 = 0x1058,
-    PTB23 = 0x105c,
-    PTB24 = 0x1060,
-    PTB25 = 0x1064,
-    PTB26 = 0x1068,
-    PTB27 = 0x106c,
-    PTB28 = 0x1070,
-    PTB29 = 0x1074,
-    PTB30 = 0x1078,
-    PTB31 = 0x107c,
-    PTC0 = 0x2000,
-    PTC1 = 0x2004,
-    PTC2 = 0x2008,
-    PTC3 = 0x200c,
-    PTC4 = 0x2010,
-    PTC5 = 0x2014,
-    PTC6 = 0x2018,
-    PTC7 = 0x201c,
-    PTC8 = 0x2020,
-    PTC9 = 0x2024,
-    PTC10 = 0x2028,
-    PTC11 = 0x202c,
-    PTC12 = 0x2030,
-    PTC13 = 0x2034,
-    PTC14 = 0x2038,
-    PTC15 = 0x203c,
-    PTC16 = 0x2040,
-    PTC17 = 0x2044,
-    PTC18 = 0x2048,
-    PTC19 = 0x204c,
-    PTC20 = 0x2050,
-    PTC21 = 0x2054,
-    PTC22 = 0x2058,
-    PTC23 = 0x205c,
-    PTC24 = 0x2060,
-    PTC25 = 0x2064,
-    PTC26 = 0x2068,
-    PTC27 = 0x206c,
-    PTC28 = 0x2070,
-    PTC29 = 0x2074,
-    PTC30 = 0x2078,
-    PTC31 = 0x207c,
-    PTD0 = 0x3000,
-    PTD1 = 0x3004,
-    PTD2 = 0x3008,
-    PTD3 = 0x300c,
-    PTD4 = 0x3010,
-    PTD5 = 0x3014,
-    PTD6 = 0x3018,
-    PTD7 = 0x301c,
-    PTD8 = 0x3020,
-    PTD9 = 0x3024,
-    PTD10 = 0x3028,
-    PTD11 = 0x302c,
-    PTD12 = 0x3030,
-    PTD13 = 0x3034,
-    PTD14 = 0x3038,
-    PTD15 = 0x303c,
-    PTD16 = 0x3040,
-    PTD17 = 0x3044,
-    PTD18 = 0x3048,
-    PTD19 = 0x304c,
-    PTD20 = 0x3050,
-    PTD21 = 0x3054,
-    PTD22 = 0x3058,
-    PTD23 = 0x305c,
-    PTD24 = 0x3060,
-    PTD25 = 0x3064,
-    PTD26 = 0x3068,
-    PTD27 = 0x306c,
-    PTD28 = 0x3070,
-    PTD29 = 0x3074,
-    PTD30 = 0x3078,
-    PTD31 = 0x307c,
-    PTE0 = 0x4000,
-    PTE1 = 0x4004,
-    PTE2 = 0x4008,
-    PTE3 = 0x400c,
-    PTE4 = 0x4010,
-    PTE5 = 0x4014,
-    PTE6 = 0x4018,
-    PTE7 = 0x401c,
-    PTE8 = 0x4020,
-    PTE9 = 0x4024,
-    PTE10 = 0x4028,
-    PTE11 = 0x402c,
-    PTE12 = 0x4030,
-    PTE13 = 0x4034,
-    PTE14 = 0x4038,
-    PTE15 = 0x403c,
-    PTE16 = 0x4040,
-    PTE17 = 0x4044,
-    PTE18 = 0x4048,
-    PTE19 = 0x404c,
-    PTE20 = 0x4050,
-    PTE21 = 0x4054,
-    PTE22 = 0x4058,
-    PTE23 = 0x405c,
-    PTE24 = 0x4060,
-    PTE25 = 0x4064,
-    PTE26 = 0x4068,
-    PTE27 = 0x406c,
-    PTE28 = 0x4070,
-    PTE29 = 0x4074,
-    PTE30 = 0x4078,
-    PTE31 = 0x407c,
-
-    LED_RED = PTE31,
-    LED_GREEN = PTD5,
-
-    // mbed original LED naming
-    LED1 = LED_GREEN,
-    LED2 = LED_RED,
-    LED3 = LED_GREEN,
-    LED4 = LED_RED,
-
-    //Push buttons
-    SW1 = PTA4,
-    SW3 = PTC3,
-
-    // USB Pins
-    USBTX = PTA2,
-    USBRX = PTA1,
-
-    // Arduino Headers
-    D0 = PTA1,
-    D1 = PTA2,
-    D2 = PTD3,
-    D3 = PTA12,
-    D4 = PTA4,
-    D5 = PTA5,
-    D6 = PTE29,
-    D7 = PTE30,
-    D8 = PTA13,
-    D9 = PTD2,
-    D10 = PTD4,
-    D11 = PTD6,
-    D12 = PTD7,
-    D13 = PTD5,
-    D14 = PTE0,
-    D15 = PTE1,
-
-    A0 = PTB0,
-    A1 = PTB1,
-    A2 = PTB2,
-    A3 = PTB3,
-    A4 = PTC2,
-    A5 = PTC1,
-
-    I2C_SCL = D15,
-    I2C_SDA = D14,
-
-    TSI_ELEC0 = PTB16,
-    TSI_ELEC1 = PTB17,
-
-    // Not connected
-    NC = (int)0xFFFFFFFF
-} PinName;
-
-/* Pull modes for input pins */
-typedef enum {
-    PullNone = 0,
-    PullDown = 2,
-    PullUp = 3,
-    PullDefault = PullUp
-} PinMode;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/device.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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 MBED_DEVICE_H
-#define MBED_DEVICE_H
-
-#define DEVICE_PORTIN           1
-#define DEVICE_PORTOUT          1
-#define DEVICE_PORTINOUT        1
-
-#define DEVICE_INTERRUPTIN      1
-
-#define DEVICE_ANALOGIN         1
-#define DEVICE_ANALOGOUT        1
-
-#define DEVICE_SERIAL           1
-
-#define DEVICE_I2C              1
-#define DEVICE_I2CSLAVE         1
-
-#define DEVICE_SPI              1
-#define DEVICE_SPISLAVE         1
-
-#define DEVICE_CAN              0
-
-#define DEVICE_RTC              1
-
-#define DEVICE_ETHERNET         0
-
-#define DEVICE_PWMOUT           1
-
-#define DEVICE_SEMIHOST         1
-#define DEVICE_LOCALFILESYSTEM  0
-#define DEVICE_ID_LENGTH       24
-
-#define DEVICE_SLEEP            1
-
-#define DEVICE_DEBUG_AWARENESS  0
-
-#define DEVICE_STDIO_MESSAGES   1
-
-#define DEVICE_ERROR_RED        1
-
-#include "objects.h"
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/gpio_irq_api.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,191 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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.
- */
-#include <stddef.h>
-#include "cmsis.h"
-
-#include "gpio_irq_api.h"
-#include "gpio_api.h"
-#include "mbed_error.h"
-
-#define CHANNEL_NUM    96
-
-static uint32_t channel_ids[CHANNEL_NUM] = {0};
-static gpio_irq_handler irq_handler;
-
-#define IRQ_DISABLED        (0)
-#define IRQ_RAISING_EDGE    PORT_PCR_IRQC(9)
-#define IRQ_FALLING_EDGE    PORT_PCR_IRQC(10)
-#define IRQ_EITHER_EDGE     PORT_PCR_IRQC(11)
-
-const uint32_t search_bits[] = {0x0000FFFF, 0x000000FF, 0x0000000F, 0x00000003, 0x00000001};
-
-static void handle_interrupt_in(PORT_Type *port, int ch_base) {
-    uint32_t isfr;
-    uint8_t location;
-
-    while((isfr = port->ISFR) != 0) {
-        location = 0;
-        for (int i = 0; i < 5; i++) {
-            if (!(isfr & (search_bits[i] << location)))
-                location += 1 << (4 - i);
-        }
-        
-        uint32_t id = channel_ids[ch_base + location];
-        if (id == 0) {
-            continue;
-        }
-
-        GPIO_Type *gpio;
-        gpio_irq_event event = IRQ_NONE;
-        switch (port->PCR[location] & PORT_PCR_IRQC_MASK) {
-            case IRQ_RAISING_EDGE:
-                event = IRQ_RISE;
-                break;
-
-            case IRQ_FALLING_EDGE:
-                event = IRQ_FALL;
-                break;
-
-            case IRQ_EITHER_EDGE:
-                if (port == PORTA) {
-                    gpio = GPIOA;
-                } else if (port == PORTC) {
-                    gpio = GPIOC;
-                } else {
-                    gpio = GPIOD;
-                }
-                event = (gpio->PDIR & (1<<location)) ? (IRQ_RISE) : (IRQ_FALL);
-                break;
-        }
-        if (event != IRQ_NONE) {
-            irq_handler(id, event);
-        }
-        port->ISFR = 1 << location;
-    }
-}
-
-void gpio_irqA(void) {
-    handle_interrupt_in(PORTA, 0);
-}
-
-/* PORTC and PORTD share same vector */
-void gpio_irqCD(void) {
-    if ((SIM->SCGC5 & SIM_SCGC5_PORTC_MASK) && (PORTC->ISFR)) {
-        handle_interrupt_in(PORTC, 32);
-    } else if ((SIM->SCGC5 & SIM_SCGC5_PORTD_MASK) && (PORTD->ISFR)) {
-        handle_interrupt_in(PORTD, 64);
-    }
-}
-
-int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32_t id) {
-    if (pin == NC)
-        return -1;
-
-    irq_handler = handler;
-
-    obj->port = pin >> PORT_SHIFT;
-    obj->pin = (pin & 0x7F) >> 2;
-
-    uint32_t ch_base, vector;
-    IRQn_Type irq_n;
-    switch (obj->port) {
-            case PortA:
-                ch_base = 0;  irq_n = PORTA_IRQn; vector = (uint32_t)gpio_irqA;
-                break;
-
-            case PortC:
-                ch_base = 32; irq_n = PORTCD_IRQn; vector = (uint32_t)gpio_irqCD;
-                break;
-
-            case PortD:
-                ch_base = 64; irq_n = PORTCD_IRQn; vector = (uint32_t)gpio_irqCD;
-                break;
-
-            default:
-                error("gpio_irq only supported on port A,C and D");
-                break;
-    }
-    NVIC_SetVector(irq_n, vector);
-    NVIC_EnableIRQ(irq_n);
-
-    obj->ch = ch_base + obj->pin;
-    channel_ids[obj->ch] = id;
-
-    return 0;
-}
-
-void gpio_irq_free(gpio_irq_t *obj) {
-    channel_ids[obj->ch] = 0;
-}
-
-void gpio_irq_set(gpio_irq_t *obj, gpio_irq_event event, uint32_t enable) {
-    PORT_Type *port = (PORT_Type *)(PORTA_BASE + 0x1000 * obj->port);
-
-    uint32_t irq_settings = IRQ_DISABLED;
-
-    switch (port->PCR[obj->pin] & PORT_PCR_IRQC_MASK) {
-        case IRQ_DISABLED:
-            if (enable) {
-                irq_settings = (event == IRQ_RISE) ? (IRQ_RAISING_EDGE) : (IRQ_FALLING_EDGE);
-            }
-            break;
-
-        case IRQ_RAISING_EDGE:
-            if (enable) {
-                irq_settings = (event == IRQ_RISE) ? (IRQ_RAISING_EDGE) : (IRQ_EITHER_EDGE);
-            } else {
-                if (event == IRQ_FALL)
-                    irq_settings = IRQ_RAISING_EDGE;
-            }
-            break;
-
-        case IRQ_FALLING_EDGE:
-            if (enable) {
-                irq_settings = (event == IRQ_FALL) ? (IRQ_FALLING_EDGE) : (IRQ_EITHER_EDGE);
-            } else {
-                if (event == IRQ_RISE)
-                    irq_settings = IRQ_FALLING_EDGE;
-            }
-            break;
-
-        case IRQ_EITHER_EDGE:
-            if (enable) {
-                irq_settings = IRQ_EITHER_EDGE;
-            } else {
-                irq_settings = (event == IRQ_RISE) ? (IRQ_FALLING_EDGE) : (IRQ_RAISING_EDGE);
-            }
-            break;
-    }
-
-    // Interrupt configuration and clear interrupt
-    port->PCR[obj->pin] = (port->PCR[obj->pin] & ~PORT_PCR_IRQC_MASK) | irq_settings | PORT_PCR_ISF_MASK;
-}
-
-void gpio_irq_enable(gpio_irq_t *obj) {
-    if (obj->port == PortA) {
-        NVIC_EnableIRQ(PORTA_IRQn);
-    } else {
-        NVIC_EnableIRQ(PORTCD_IRQn);
-    }
-}
-
-void gpio_irq_disable(gpio_irq_t *obj) {
-    if (obj->port == PortA) {
-        NVIC_DisableIRQ(PORTA_IRQn);
-    } else {
-        NVIC_DisableIRQ(PORTCD_IRQn);
-    }
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/mbed_overrides.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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.
- */
-#include "gpio_api.h"
-
-// called before main - implement here if board needs it ortherwise, let
-//  the application override this if necessary
-//void mbed_sdk_init()
-//{
-//
-//}
-
-// Change the NMI pin to an input. This allows NMI pin to 
-//  be used as a low power mode wakeup.  The application will
-//  need to change the pin back to NMI_b or wakeup only occurs once!
-void NMI_Handler(void)
-{
-    gpio_t gpio;
-    gpio_init_in(&gpio, PTA4);
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/serial_api.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,316 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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.
- */
-#include "mbed_assert.h"
-#include "serial_api.h"
-
-// math.h required for floating point operations for baud rate calculation
-#include <math.h>
-
-#include <string.h>
-
-#include "cmsis.h"
-#include "pinmap.h"
-#include "clk_freqs.h"
-#include "PeripheralPins.h"
-
-#define UART_NUM        2
-
-/******************************************************************************
- * INITIALIZATION
- ******************************************************************************/
-
-static uint32_t serial_irq_ids[UART_NUM] = {0};
-static uart_irq_handler irq_handler;
-
-int stdio_uart_inited = 0;
-serial_t stdio_uart;
-
-static inline uint32_t serial_get_src_clock(serial_t *obj) {
-  uint32_t mux, srcclk;
-
-  switch ((int)obj->uart) {
-      case UART_0:
-        mux = (SIM->SOPT2 & SIM_SOPT2_LPUART0SRC_MASK) >> SIM_SOPT2_LPUART0SRC_SHIFT;
-        break;
-      case UART_1:
-        mux = (SIM->SOPT2 & SIM_SOPT2_LPUART1SRC_MASK) >> SIM_SOPT2_LPUART1SRC_SHIFT;
-        break;
-      case UART_2: /* TODO: add UART2 support */ break;
-  }
-
-  switch (mux) {
-    case 1: srcclk = fastirc_frequency(); break;
-    case 2: srcclk = extosc_frequency();  break;
-    case 3: srcclk = mcgirc_frequency();  break;
-    default: srcclk = 0; break;
-  }
-
-  return srcclk;
-}
-
-void serial_init(serial_t *obj, PinName tx, PinName rx) {
-    // determine the UART to use
-    UARTName uart_tx = (UARTName)pinmap_peripheral(tx, PinMap_UART_TX);
-    UARTName uart_rx = (UARTName)pinmap_peripheral(rx, PinMap_UART_RX);
-    UARTName uart = (UARTName)pinmap_merge(uart_tx, uart_rx);
-    MBED_ASSERT((int)uart != NC);
-
-    obj->uart = (LPUART_Type *)uart;
-
-    // enable clk
-    switch (uart) {
-        case UART_0:
-          SIM->SOPT2 |= SIM_SOPT2_LPUART0SRC(1);
-          SIM->SCGC5 |= SIM_SCGC5_LPUART0_MASK;
-          break;
-        case UART_1:
-          SIM->SOPT2 |= SIM_SOPT2_LPUART1SRC(1);
-          SIM->SCGC5 |= SIM_SCGC5_LPUART1_MASK;
-          break;
-        case UART_2: /* TODO: add UART2 support */ break;
-    }
-
-    // reset UART registers
-    obj->uart->BAUD  = 0x0F000004;
-    obj->uart->STAT  = 0xC01FC000;
-    obj->uart->CTRL  = 0x00000000;
-    obj->uart->MATCH = 0x00000000;
-
-    switch (uart) {
-        case UART_0: obj->index = 0; break;
-        case UART_1: obj->index = 1; break;
-        case UART_2: /* TODO: add UART2 support */ break;
-    }
-
-    // set default baud rate and format
-    serial_baud  (obj, 9600);
-    serial_format(obj, 8, ParityNone, 1);
-
-    // pinout the chosen uart
-    pinmap_pinout(tx, PinMap_UART_TX);
-    pinmap_pinout(rx, PinMap_UART_RX);
-
-    // set rx/tx pins in PullUp mode
-    if (tx != NC) pin_mode(tx, PullUp);
-    if (rx != NC) pin_mode(rx, PullUp);
-
-    obj->uart->CTRL |= (LPUART_CTRL_RE_MASK | LPUART_CTRL_TE_MASK);
-
-    if (uart == STDIO_UART) {
-        stdio_uart_inited = 1;
-        memcpy(&stdio_uart, obj, sizeof(serial_t));
-    }
-}
-
-void serial_free(serial_t *obj) {
-    serial_irq_ids[obj->index] = 0;
-}
-
-// serial_baud
-//
-// set the baud rate, taking in to account the current SystemFrequency
-void serial_baud(serial_t *obj, int baudrate) {
-    int calcBaudrate;
-    uint32_t i, sbr, sbrTemp, osr, temp, baud, baudDiff;
-
-    /* get value of serial source clock */
-    uint32_t PCLK = serial_get_src_clock(obj);
-
-    /* loop to find the best osr value possible, one that generates minimum baudDiff
-     * iterate through the rest of the supported values of osr */
-    temp = 0xFFFFFFFF;
-    for (i = 5; i <= 33; i++) {
-        /* calculate the temporary sbr value   */
-        sbrTemp = PCLK / (baudrate * i);
-
-        /* calculate the baud rate based on the temporary osr and sbr values */
-        calcBaudrate = PCLK / (i * sbrTemp);
-
-        if (calcBaudrate > baudrate) {
-            baudDiff = calcBaudrate - baudrate;
-        } else {
-            baudDiff = baudrate - calcBaudrate;
-        }
-
-        if (baudDiff < temp) {
-            osr = i - 1;    /* update and store the best osr value calculated */
-            sbr = sbrTemp;  /* update store the best sbr value calculated */
-
-            if(baudDiff == 0) {
-              break;        /* end for loop if founded the best osr and sbr value */
-            } else {
-              temp = baudDiff;
-            }
-        }
-    }
-
-
-    /* save C2 state */
-    temp = obj->uart->CTRL & (LPUART_CTRL_RE_MASK | LPUART_CTRL_TE_MASK);
-
-    /* disable UART before changing registers */
-    obj->uart->CTRL &= ~(LPUART_CTRL_RE_MASK | LPUART_CTRL_TE_MASK);
-
-    /* read BAUD register with clearing old baudrate settings into baud variable */
-    baud = obj->uart->BAUD & ~(LPUART_BAUD_SBR_MASK | LPUART_BAUD_OSR_MASK | LPUART_BAUD_BOTHEDGE_MASK);
-
-    /* write the new osr and sbr values */
-    baud |= (LPUART_BAUD_SBR(sbr) | LPUART_BAUD_OSR(osr));
-
-    /* Check if osr is between 4x and 7x oversampling.
-     * If so, then "BOTHEDGE" sampling must be turned on */
-    if ((osr > 3) && (osr < 8)) {
-      baud |= LPUART_BAUD_BOTHEDGE_MASK;
-    }
-
-    /* write new values into BAUD register */
-    obj->uart->BAUD = baud;
-
-    /* restore C2 state */
-    obj->uart->CTRL |= temp;
-}
-
-void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) {
-    MBED_ASSERT((stop_bits == 1) || (stop_bits == 2));
-    MBED_ASSERT((parity == ParityNone) || (parity == ParityOdd) || (parity == ParityEven));
-    MBED_ASSERT(data_bits == 8); // TODO: Support other number of data bits (also in the write method!)
-
-    // save C2 state
-    uint32_t c2_state = obj->uart->CTRL & (LPUART_CTRL_RE_MASK | LPUART_CTRL_TE_MASK);
-
-    // disable UART before changing registers
-    obj->uart->CTRL &= ~(LPUART_CTRL_RE_MASK | LPUART_CTRL_TE_MASK);
-
-
-    uint8_t parity_enable = 0, parity_select = 0;
-    switch (parity) {
-        case ParityNone: parity_enable = 0; parity_select = 0; break;
-        case ParityOdd : parity_enable = 1; parity_select = 1; data_bits++; break;
-        case ParityEven: parity_enable = 1; parity_select = 0; data_bits++; break;
-        default:
-            break;
-    }
-
-    stop_bits -= 1;
-
-    // data bits, parity and parity mode
-    obj->uart->CTRL = ((parity_enable << 1) |  (parity_select << 0));
-
-    // stop bits
-    obj->uart->BAUD &= ~LPUART_BAUD_SBNS_MASK;
-    obj->uart->BAUD |= (stop_bits << LPUART_BAUD_SBNS_SHIFT);
-
-    // restore C2 state
-    obj->uart->CTRL |= c2_state;
-}
-
-/******************************************************************************
- * INTERRUPTS HANDLING
- ******************************************************************************/
-static inline void uart_irq(uint32_t status, uint32_t index) {
-    if (serial_irq_ids[index] != 0) {
-        if (status & LPUART_STAT_TDRE_MASK)
-            irq_handler(serial_irq_ids[index], TxIrq);
-
-        if (status & LPUART_STAT_RDRF_MASK)
-            irq_handler(serial_irq_ids[index], RxIrq);
-    }
-}
-
-void uart0_irq() {uart_irq(LPUART0->STAT, 0);}
-void uart1_irq() {uart_irq(LPUART1->STAT, 1);}
-
-void serial_irq_handler(serial_t *obj, uart_irq_handler handler, uint32_t id) {
-    irq_handler = handler;
-    serial_irq_ids[obj->index] = id;
-}
-
-void serial_irq_set(serial_t *obj, SerialIrq irq, uint32_t enable) {
-    IRQn_Type irq_n = (IRQn_Type)0;
-    uint32_t vector = 0;
-    switch ((int)obj->uart) {
-        case UART_0: irq_n=LPUART0_IRQn; vector = (uint32_t)&uart0_irq; break;
-        case UART_1: irq_n=LPUART1_IRQn; vector = (uint32_t)&uart1_irq; break;
-    }
-
-    if (enable) {
-        switch (irq) {
-            case RxIrq: obj->uart->CTRL |= LPUART_CTRL_RIE_MASK; break;
-            case TxIrq: obj->uart->CTRL |= LPUART_CTRL_TIE_MASK; break;
-        }
-        NVIC_SetVector(irq_n, vector);
-        NVIC_EnableIRQ(irq_n);
-
-    } else { // disable
-        int all_disabled = 0;
-        SerialIrq other_irq = (irq == RxIrq) ? (TxIrq) : (RxIrq);
-        switch (irq) {
-            case RxIrq: obj->uart->CTRL &= ~(LPUART_CTRL_RIE_MASK); break;
-            case TxIrq: obj->uart->CTRL &= ~(LPUART_CTRL_TIE_MASK); break;
-        }
-        switch (other_irq) {
-            case RxIrq: all_disabled = (obj->uart->CTRL & LPUART_CTRL_RIE_MASK) == 0; break;
-            case TxIrq: all_disabled = (obj->uart->CTRL & LPUART_CTRL_TIE_MASK) == 0; break;
-        }
-        if (all_disabled)
-            NVIC_DisableIRQ(irq_n);
-    }
-}
-
-/******************************************************************************
- * READ/WRITE
- ******************************************************************************/
-int serial_getc(serial_t *obj) {
-    while (!serial_readable(obj));
-    return (obj->uart->DATA & 0xFFu);
-}
-
-void serial_putc(serial_t *obj, int c) {
-    while (!serial_writable(obj));
-    obj->uart->DATA = c;
-}
-
-int serial_readable(serial_t *obj) {
-    // check overrun
-    if (obj->uart->STAT &  LPUART_STAT_OR_MASK) {
-        obj->uart->STAT |= LPUART_STAT_OR_MASK;
-    }
-    return (obj->uart->STAT & LPUART_STAT_RDRF_MASK);
-}
-
-int serial_writable(serial_t *obj) {
-    // check overrun
-    if (obj->uart->STAT &  LPUART_STAT_OR_MASK) {
-        obj->uart->STAT |= LPUART_STAT_OR_MASK;
-    }
-    return (obj->uart->STAT & LPUART_STAT_TDRE_MASK);
-}
-
-void serial_clear(serial_t *obj) {
-}
-
-void serial_pinout_tx(PinName tx) {
-    pinmap_pinout(tx, PinMap_UART_TX);
-}
-
-void serial_break_set(serial_t *obj) {
-    obj->uart->CTRL |= LPUART_CTRL_SBK_MASK;
-}
-
-void serial_break_clear(serial_t *obj) {
-    obj->uart->CTRL &= ~LPUART_CTRL_SBK_MASK;
-}
-
--- a/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL43Z/spi_api.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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.
- */
-#include "mbed_assert.h"
-#include "spi_api.h"
-
-#include <math.h>
-
-#include "cmsis.h"
-#include "pinmap.h"
-
-static const PinMap PinMap_SPI_SCLK[] = {
-    {PTC3,  SPI_1, 2},
-    {PTC5,  SPI_0, 2},
-    {PTD1,  SPI_0, 2},
-    {PTD5,  SPI_1, 2},
-    {NC  ,  NC   , 0}
-};
-
-static const PinMap PinMap_SPI_MOSI[] = {
-    {PTB16, SPI_1, 2},
-    {PTB17, SPI_1, 5},
-    {PTC6,  SPI_0, 2},
-    {PTC7,  SPI_0, 5},
-    {PTD2,  SPI_0, 2},
-    {PTD3,  SPI_0, 5},
-    {PTD6,  SPI_1, 2},
-    {PTD7,  SPI_1, 5},
-    {PTE1,  SPI_1, 2},
-    {NC  ,  NC   , 0}
-};
-
-static const PinMap PinMap_SPI_MISO[] = {
-    {PTB16, SPI_1, 5},
-    {PTB17, SPI_1, 2},
-    {PTC6,  SPI_0, 5},
-    {PTC7,  SPI_0, 2},
-    {PTD2,  SPI_0, 5},
-    {PTD3,  SPI_0, 2},
-    {PTD6,  SPI_1, 5},
-    {PTD7,  SPI_1, 2},
-    {PTE0,  SPI_1, 2},
-    {PTE1,  SPI_1, 5},
-    {NC   , NC   , 0}
-};
-
-static const PinMap PinMap_SPI_SSEL[] = {
-    {PTC4,  SPI_0, 2},
-    {PTD0,  SPI_0, 2},
-    {PTD4,  SPI_1, 2},
-    {NC  ,  NC   , 0}
-};
-
-void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel) {
-    // determine the SPI to use
-    SPIName spi_mosi = (SPIName)pinmap_peripheral(mosi, PinMap_SPI_MOSI);
-    SPIName spi_miso = (SPIName)pinmap_peripheral(miso, PinMap_SPI_MISO);
-    SPIName spi_sclk = (SPIName)pinmap_peripheral(sclk, PinMap_SPI_SCLK);
-    SPIName spi_ssel = (SPIName)pinmap_peripheral(ssel, PinMap_SPI_SSEL);
-    SPIName spi_data = (SPIName)pinmap_merge(spi_mosi, spi_miso);
-    SPIName spi_cntl = (SPIName)pinmap_merge(spi_sclk, spi_ssel);
-
-    obj->spi = (SPI_Type*)pinmap_merge(spi_data, spi_cntl);
-    MBED_ASSERT((int)obj->spi != NC);
-
-    // enable power and clocking
-    switch ((int)obj->spi) {
-        case SPI_0: SIM->SCGC5 |= 1 << 13; SIM->SCGC4 |= 1 << 22; break;
-        case SPI_1: SIM->SCGC5 |= 1 << 13; SIM->SCGC4 |= 1 << 23; break;
-    }
-
-    // enable SPI
-    obj->spi->C1 |= SPI_C1_SPE_MASK;
-    obj->spi->C2 &= ~SPI_C2_SPIMODE_MASK; //8bit
-
-    // pin out the spi pins
-    pinmap_pinout(mosi, PinMap_SPI_MOSI);
-    pinmap_pinout(miso, PinMap_SPI_MISO);
-    pinmap_pinout(sclk, PinMap_SPI_SCLK);
-    if (ssel != NC) {
-        pinmap_pinout(ssel, PinMap_SPI_SSEL);
-    }
-}
-
-void spi_free(spi_t *obj) {
-    // [TODO]
-}
-
-void spi_format(spi_t *obj, int bits, int mode, int slave) {
-    MBED_ASSERT((bits == 8) || (bits == 16));
-    MBED_ASSERT((mode >= 0) && (mode <= 3));
-
-    uint8_t polarity = (mode & 0x2) ? 1 : 0;
-    uint8_t phase = (mode & 0x1) ? 1 : 0;
-    uint8_t c1_data = ((!slave) << 4) | (polarity << 3) | (phase << 2);
-
-    // clear MSTR, CPOL and CPHA bits
-    obj->spi->C1 &= ~(0x7 << 2);
-
-    // write new value
-    obj->spi->C1 |= c1_data;
-    if (bits == 8) {
-        obj->spi->C2 &= ~SPI_C2_SPIMODE_MASK;
-    } else {
-        obj->spi->C2 |= SPI_C2_SPIMODE_MASK;
-    }
-}
-
-void spi_frequency(spi_t *obj, int hz) {
-    uint32_t error = 0;
-    uint32_t p_error = 0xffffffff;
-    uint32_t ref = 0;
-    uint8_t  spr = 0;
-    uint8_t  ref_spr = 0;
-    uint8_t  ref_prescaler = 0;
-
-    // bus clk
-    uint32_t PCLK = SystemCoreClock / (((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV4_MASK) >> SIM_CLKDIV1_OUTDIV4_SHIFT) + 1);
-    uint8_t prescaler = 1;
-    uint8_t divisor = 2;
-
-    for (prescaler = 1; prescaler <= 8; prescaler++) {
-        divisor = 2;
-        for (spr = 0; spr <= 8; spr++, divisor *= 2) {
-            ref = PCLK / (prescaler*divisor);
-            if (ref > (uint32_t)hz)
-                continue;
-            error = hz - ref;
-            if (error < p_error) {
-                ref_spr = spr;
-                ref_prescaler = prescaler - 1;
-                p_error = error;
-            }
-        }
-    }
-
-    // set SPPR and SPR
-    obj->spi->BR = ((ref_prescaler & 0x7) << 4) | (ref_spr & 0xf);
-}
-
-static inline int spi_writeable(spi_t * obj) {
-    return (obj->spi->S & SPI_S_SPTEF_MASK) ? 1 : 0;
-}
-
-static inline int spi_readable(spi_t * obj) {
-    return (obj->spi->S & SPI_S_SPRF_MASK) ? 1 : 0;
-}
-
-int spi_master_write(spi_t *obj, int value) {
-    int ret;
-    if (obj->spi->C2 & SPI_C2_SPIMODE_MASK) {
-        // 16bit
-        while(!spi_writeable(obj));
-        obj->spi->DL = (value & 0xff);
-        obj->spi->DH = ((value >> 8) & 0xff);
-
-        // wait rx buffer full
-        while (!spi_readable(obj));
-        ret = obj->spi->DH;
-        ret = (ret << 8) | obj->spi->DL;
-    } else {
-        //8bit
-        while(!spi_writeable(obj));
-        obj->spi->DL = (value & 0xff);
-
-        // wait rx buffer full
-        while (!spi_readable(obj));
-        ret = (obj->spi->DL & 0xff);
-    }
-
-    return ret;
-}
-
-int spi_slave_receive(spi_t *obj) {
-    return spi_readable(obj);
-}
-
-int spi_slave_read(spi_t *obj) {
-    int ret;
-    if (obj->spi->C2 & SPI_C2_SPIMODE_MASK) {
-        ret = obj->spi->DH;
-        ret = ((ret << 8) | obj->spi->DL);
-    } else {
-        ret = obj->spi->DL;
-    }
-    return ret;
-}
-
-void spi_slave_write(spi_t *obj, int value) {
-    while (!spi_writeable(obj));
-    if (obj->spi->C2 & SPI_C2_SPIMODE_MASK) {
-        obj->spi->DL = (value & 0xff);
-        obj->spi->DH = ((value >> 8) & 0xff);
-    } else {
-        obj->spi->DL = value;
-    }
-
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/PeripheralNames.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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 MBED_PERIPHERALNAMES_H
-#define MBED_PERIPHERALNAMES_H
-
-#include "cmsis.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
-    OSC32KCLK = 0,
-} RTCName;
-
-typedef enum {
-    UART_0 = 0,
-    UART_1 = 1,
-    UART_2 = 2,
-    UART_3 = 3,
-    UART_4 = 4,
-} UARTName;
-
-#define STDIO_UART_TX     USBTX
-#define STDIO_UART_RX     USBRX
-#define STDIO_UART        UART_0
-
-typedef enum {
-    I2C_0 = 0,
-    I2C_1 = 1,
-    I2C_2 = 2,
-} I2CName;
-
-#define TPM_SHIFT   8
-typedef enum {
-    PWM_1  = (0 << TPM_SHIFT) | (0),  // FTM0 CH0
-    PWM_2  = (0 << TPM_SHIFT) | (1),  // FTM0 CH1
-    PWM_3  = (0 << TPM_SHIFT) | (2),  // FTM0 CH2
-    PWM_4  = (0 << TPM_SHIFT) | (3),  // FTM0 CH3
-    PWM_5  = (0 << TPM_SHIFT) | (4),  // FTM0 CH4
-    PWM_6  = (0 << TPM_SHIFT) | (5),  // FTM0 CH5
-    PWM_7  = (0 << TPM_SHIFT) | (6),  // FTM0 CH6
-    PWM_8  = (0 << TPM_SHIFT) | (7),  // FTM0 CH7
-    PWM_9  = (1 << TPM_SHIFT) | (0),  // FTM1 CH0
-    PWM_10 = (1 << TPM_SHIFT) | (1),  // FTM1 CH1
-    PWM_11 = (1 << TPM_SHIFT) | (2),  // FTM1 CH2
-    PWM_12 = (1 << TPM_SHIFT) | (3),  // FTM1 CH3
-    PWM_13 = (1 << TPM_SHIFT) | (4),  // FTM1 CH4
-    PWM_14 = (1 << TPM_SHIFT) | (5),  // FTM1 CH5
-    PWM_15 = (1 << TPM_SHIFT) | (6),  // FTM1 CH6
-    PWM_16 = (1 << TPM_SHIFT) | (7),  // FTM1 CH7
-    PWM_17 = (2 << TPM_SHIFT) | (0),  // FTM2 CH0
-    PWM_18 = (2 << TPM_SHIFT) | (1),  // FTM2 CH1
-    PWM_19 = (2 << TPM_SHIFT) | (2),  // FTM2 CH2
-    PWM_20 = (2 << TPM_SHIFT) | (3),  // FTM2 CH3
-    PWM_21 = (2 << TPM_SHIFT) | (4),  // FTM2 CH4
-    PWM_22 = (2 << TPM_SHIFT) | (5),  // FTM2 CH5
-    PWM_23 = (2 << TPM_SHIFT) | (6),  // FTM2 CH6
-    PWM_24 = (2 << TPM_SHIFT) | (7),  // FTM2 CH7
-    PWM_25 = (3 << TPM_SHIFT) | (0),  // FTM3 CH0
-    PWM_26 = (3 << TPM_SHIFT) | (1),  // FTM3 CH1
-    PWM_27 = (3 << TPM_SHIFT) | (2),  // FTM3 CH2
-    PWM_28 = (3 << TPM_SHIFT) | (3),  // FTM3 CH3
-    PWM_29 = (3 << TPM_SHIFT) | (4),  // FTM3 CH4
-    PWM_30 = (3 << TPM_SHIFT) | (5),  // FTM3 CH5
-    PWM_31 = (3 << TPM_SHIFT) | (6),  // FTM3 CH6
-    PWM_32 = (3 << TPM_SHIFT) | (7),  // FTM3 CH7
-} PWMName;
-
-#define ADC_INSTANCE_SHIFT           8
-#define ADC_B_CHANNEL_SHIFT          5
-typedef enum {
-    ADC0_SE4b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 4,
-    ADC0_SE5b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 5,
-    ADC0_SE6b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 6,
-    ADC0_SE7b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 7,
-    ADC0_SE8  = (0 << ADC_INSTANCE_SHIFT) | 8,
-    ADC0_SE9  = (0 << ADC_INSTANCE_SHIFT) | 9,
-    ADC0_SE12 = (0 << ADC_INSTANCE_SHIFT) | 12,
-    ADC0_SE13 = (0 << ADC_INSTANCE_SHIFT) | 13,
-    ADC0_SE14 = (0 << ADC_INSTANCE_SHIFT) | 14,
-    ADC0_SE15 = (0 << ADC_INSTANCE_SHIFT) | 15,
-    ADC0_SE16 = (0 << ADC_INSTANCE_SHIFT) | 16,
-    ADC0_SE17 = (0 << ADC_INSTANCE_SHIFT) | 17,
-    ADC0_SE18 = (0 << ADC_INSTANCE_SHIFT) | 18,
-    ADC0_SE21 = (0 << ADC_INSTANCE_SHIFT) | 21,
-    ADC0_SE22 = (0 << ADC_INSTANCE_SHIFT) | 22,
-    ADC0_SE23 = (0 << ADC_INSTANCE_SHIFT) | 23,
-    ADC1_SE4a = (1 << ADC_INSTANCE_SHIFT) | 4,
-    ADC1_SE5a = (1 << ADC_INSTANCE_SHIFT) | 5,
-    ADC1_SE6a = (1 << ADC_INSTANCE_SHIFT) | 6,
-    ADC1_SE7a = (1 << ADC_INSTANCE_SHIFT) | 7,
-    ADC1_SE4b = (1 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 4,
-    ADC1_SE5b = (1 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 5,
-    ADC1_SE6b = (1 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 6,
-    ADC1_SE7b = (1 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 7,
-    ADC1_SE8  = (1 << ADC_INSTANCE_SHIFT) | 8,
-    ADC1_SE9  = (1 << ADC_INSTANCE_SHIFT) | 9,
-    ADC1_SE12 = (1 << ADC_INSTANCE_SHIFT) | 12,
-    ADC1_SE13 = (1 << ADC_INSTANCE_SHIFT) | 13,
-    ADC1_SE14 = (1 << ADC_INSTANCE_SHIFT) | 14,
-    ADC1_SE15 = (1 << ADC_INSTANCE_SHIFT) | 15,
-    ADC1_SE16 = (1 << ADC_INSTANCE_SHIFT) | 16,
-    ADC1_SE17 = (1 << ADC_INSTANCE_SHIFT) | 17,
-    ADC1_SE18 = (1 << ADC_INSTANCE_SHIFT) | 18,
-    ADC1_SE23 = (1 << ADC_INSTANCE_SHIFT) | 23,
-} ADCName;
-
-typedef enum {
-    DAC_0 = 0
-} DACName;
-
-
-typedef enum {
-    SPI_0 = 0,
-    SPI_1 = 1,
-    SPI_2 = 2,
-} SPIName;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/PeripheralPins.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,208 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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.
- */
-
-#include "PeripheralPins.h"
-
-/************RTC***************/
-const PinMap PinMap_RTC[] = {
-    {NC, OSC32KCLK, 0},
-};
-
-/************ADC***************/
-const PinMap PinMap_ADC[] = {
-    {PTA17, ADC1_SE17, 0},
-    {PTB0 , ADC0_SE8 , 0},
-    {PTB1 , ADC0_SE9 , 0},
-    {PTB2 , ADC0_SE12, 0},
-    {PTB3 , ADC0_SE13, 0},
-    {PTB6 , ADC1_SE12, 0},
-    {PTB7 , ADC1_SE13, 0},
-    {PTB10, ADC1_SE14, 0},
-    {PTB11, ADC1_SE15, 0},
-    {PTC0 , ADC0_SE14, 0},
-    {PTC1 , ADC0_SE15, 0},
-    {PTC2,  ADC0_SE4b, 0},
-    {PTC8,  ADC1_SE4b, 0},
-    {PTC9,  ADC1_SE5b, 0},
-    {PTC10, ADC1_SE6b, 0},
-    {PTC11, ADC1_SE7b, 0},
-    {PTD1,  ADC0_SE5b, 0},
-    {PTD5,  ADC0_SE6b, 0},
-    {PTD6,  ADC0_SE7b, 0},
-    {PTE0,  ADC1_SE4a, 0},
-    {PTE1,  ADC1_SE5a, 0},
-    {PTE2,  ADC1_SE6a, 0},
-    {PTE3,  ADC1_SE7a, 0},
-    //{PTE24, ADC0_SE17, 0}, //I2C pull up
-    //{PTE25, ADC0_SE18, 0}, //I2C pull up
-    {NC   , NC       , 0}
-};
-
-/************DAC***************/
-const PinMap PinMap_DAC[] = {
-    {DAC0_OUT, DAC_0, 0},
-    {NC      , NC   , 0}
-};
-
-/************I2C***************/
-const PinMap PinMap_I2C_SDA[] = {
-    {PTE25, I2C_0, 5},
-    {PTB1 , I2C_0, 2},
-    {PTB3 , I2C_0, 2},
-    {PTC11, I2C_1, 2},
-    {PTA13, I2C_2, 5},
-    {PTD3 , I2C_0, 7},
-    {PTE0 , I2C_1, 6},
-    {NC   , NC   , 0}
-};
-
-const PinMap PinMap_I2C_SCL[] = {
-    {PTE24, I2C_0, 5},
-    {PTB0 , I2C_0, 2},
-    {PTB2 , I2C_0, 2},
-    {PTC10, I2C_1, 2},
-    {PTA12, I2C_2, 5},
-    {PTA14, I2C_2, 5},
-    {PTD2 , I2C_0, 7},
-    {PTE1 , I2C_1, 6},
-    {NC   , NC   , 0}
-};
-
-/************UART***************/
-const PinMap PinMap_UART_TX[] = {
-    {PTB17, UART_0, 3},
-    {PTC17, UART_3, 3},
-    {PTD7 , UART_0, 3},
-    {PTD3 , UART_2, 3},
-    {PTC4 , UART_1, 3},
-    {PTC15, UART_4, 3},
-    {PTB11, UART_3, 3},
-    {PTA14, UART_0, 3},
-    {PTE24, UART_4, 3},
-    {PTE4 , UART_3, 3},
-    {PTE0,  UART_1, 3},
-    {NC  ,  NC    , 0}
-};
-
-const PinMap PinMap_UART_RX[] = {
-    {PTB16, UART_0, 3},
-    {PTE1 , UART_1, 3},
-    {PTE5 , UART_3, 3},
-    {PTE25, UART_4, 3},
-    {PTA15, UART_0, 3},
-    {PTC16, UART_3, 3},
-    {PTB10, UART_3, 3},
-    {PTC3 , UART_1, 3},
-    {PTC14, UART_4, 3},
-    {PTD2 , UART_2, 3},
-    {PTD6 , UART_0, 3},
-    {NC  ,  NC    , 0}
-};
-
-/************SPI***************/
-const PinMap PinMap_SPI_SCLK[] = {
-    {PTD1 , SPI_0, 2},
-    {PTE2 , SPI_1, 2},
-    {PTA15, SPI_0, 2},
-    {PTB11, SPI_1, 2},
-    {PTB21, SPI_2, 2},
-    {PTC5 , SPI_0, 2},
-    {PTD5 , SPI_1, 7},
-    {NC   , NC   , 0}
-};
-
-const PinMap PinMap_SPI_MOSI[] = {
-    {PTD2 , SPI_0, 2},
-    {PTE1 , SPI_1, 2},
-    {PTE3 , SPI_1, 7},
-    {PTA16, SPI_0, 2},
-    {PTB16, SPI_1, 2},
-    {PTB22, SPI_2, 2},
-    {PTC6 , SPI_0, 2},
-    {PTD6 , SPI_1, 7},
-    {NC   , NC   , 0}
-};
-
-const PinMap PinMap_SPI_MISO[] = {
-    {PTD3 , SPI_0, 2},
-    {PTE1 , SPI_1, 7},
-    {PTE3 , SPI_1, 2},
-    {PTA17, SPI_0, 2},
-    {PTB17, SPI_1, 2},
-    {PTB23, SPI_2, 2},
-    {PTC7 , SPI_0, 2},
-    {PTD7 , SPI_1, 7},
-    {NC   , NC   , 0}
-};
-
-const PinMap PinMap_SPI_SSEL[] = {
-    {PTD0 , SPI_0, 2},
-    {PTE4 , SPI_1, 2},
-    {PTA14, SPI_0, 2},
-    {PTB10, SPI_1, 2},
-    {PTB20, SPI_2, 2},
-    {PTC4 , SPI_0, 2},
-    {PTD4 , SPI_1, 7},
-    {NC   , NC   , 0}
-};
-
-/************PWM***************/
-const PinMap PinMap_PWM[] = {
-    {PTA0 , PWM_6 , 3},
-    {PTA1 , PWM_7 , 3},
-    {PTA2 , PWM_8 , 3},
-    {PTA3 , PWM_1 , 3},
-    {PTA4 , PWM_2 , 3},
-    {PTA5 , PWM_3 , 3},
-    {PTA6 , PWM_4 , 3},
-    {PTA7 , PWM_5 , 3},
-    {PTA8 , PWM_9 , 3},
-    {PTA9 , PWM_10, 3},
-    {PTA10, PWM_17, 3},
-    {PTA11, PWM_18, 3},
-    {PTA12, PWM_9 , 3},
-    {PTA13, PWM_10, 3},
-
-    {PTB0 , PWM_9 , 3},
-    {PTB1 , PWM_10, 3},
-    {PTB18, PWM_17, 3},
-    {PTB19, PWM_18, 3},
-
-    {PTC1 , PWM_1 , 4},
-    {PTC2 , PWM_2 , 4},
-    {PTC3 , PWM_3 , 4},
-    {PTC4 , PWM_4 , 4},
-    {PTC5 , PWM_3 , 7},
-    {PTC8 , PWM_29, 3},
-    {PTC9 , PWM_30, 3},
-    {PTC10, PWM_31, 3},
-    {PTC11, PWM_32, 3},
-
-    {PTD0 , PWM_25, 4},
-    {PTD1 , PWM_26, 4},
-    {PTD2 , PWM_27, 4},
-    {PTD3 , PWM_28, 4},
-    {PTD4 , PWM_5 , 4},
-    {PTD5 , PWM_6 , 4},
-    {PTD6 , PWM_7 , 4},
-    {PTD4 , PWM_5 , 4},
-    {PTD7 , PWM_8 , 4},
-
-    {PTE5 , PWM_25, 6},
-    {PTE6 , PWM_26, 6},
-
-    {NC   , NC    , 0}
-};
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/PinNames.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,258 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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 MBED_PINNAMES_H
-#define MBED_PINNAMES_H
-
-#include "cmsis.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
-    PIN_INPUT,
-    PIN_OUTPUT
-} PinDirection;
-
-#define GPIO_PORT_SHIFT 12
-
-typedef enum {
-    PTA0  = (0 << GPIO_PORT_SHIFT | 0 ),
-    PTA1  = (0 << GPIO_PORT_SHIFT | 1 ),
-    PTA2  = (0 << GPIO_PORT_SHIFT | 2 ),
-    PTA3  = (0 << GPIO_PORT_SHIFT | 3 ),
-    PTA4  = (0 << GPIO_PORT_SHIFT | 4 ),
-    PTA5  = (0 << GPIO_PORT_SHIFT | 5 ),
-    PTA6  = (0 << GPIO_PORT_SHIFT | 6 ),
-    PTA7  = (0 << GPIO_PORT_SHIFT | 7 ),
-    PTA8  = (0 << GPIO_PORT_SHIFT | 8 ),
-    PTA9  = (0 << GPIO_PORT_SHIFT | 9 ),
-    PTA10 = (0 << GPIO_PORT_SHIFT | 10),
-    PTA11 = (0 << GPIO_PORT_SHIFT | 11),
-    PTA12 = (0 << GPIO_PORT_SHIFT | 12),
-    PTA13 = (0 << GPIO_PORT_SHIFT | 13),
-    PTA14 = (0 << GPIO_PORT_SHIFT | 14),
-    PTA15 = (0 << GPIO_PORT_SHIFT | 15),
-    PTA16 = (0 << GPIO_PORT_SHIFT | 16),
-    PTA17 = (0 << GPIO_PORT_SHIFT | 17),
-    PTA18 = (0 << GPIO_PORT_SHIFT | 18),
-    PTA19 = (0 << GPIO_PORT_SHIFT | 19),
-    PTA20 = (0 << GPIO_PORT_SHIFT | 20),
-    PTA21 = (0 << GPIO_PORT_SHIFT | 21),
-    PTA22 = (0 << GPIO_PORT_SHIFT | 22),
-    PTA23 = (0 << GPIO_PORT_SHIFT | 23),
-    PTA24 = (0 << GPIO_PORT_SHIFT | 24),
-    PTA25 = (0 << GPIO_PORT_SHIFT | 25),
-    PTA26 = (0 << GPIO_PORT_SHIFT | 26),
-    PTA27 = (0 << GPIO_PORT_SHIFT | 27),
-    PTA28 = (0 << GPIO_PORT_SHIFT | 28),
-    PTA29 = (0 << GPIO_PORT_SHIFT | 29),
-    PTA30 = (0 << GPIO_PORT_SHIFT | 30),
-    PTA31 = (0 << GPIO_PORT_SHIFT | 31),
-    PTB0  = (1 << GPIO_PORT_SHIFT | 0 ),
-    PTB1  = (1 << GPIO_PORT_SHIFT | 1 ),
-    PTB2  = (1 << GPIO_PORT_SHIFT | 2 ),
-    PTB3  = (1 << GPIO_PORT_SHIFT | 3 ),
-    PTB4  = (1 << GPIO_PORT_SHIFT | 4 ),
-    PTB5  = (1 << GPIO_PORT_SHIFT | 5 ),
-    PTB6  = (1 << GPIO_PORT_SHIFT | 6 ),
-    PTB7  = (1 << GPIO_PORT_SHIFT | 7 ),
-    PTB8  = (1 << GPIO_PORT_SHIFT | 8 ),
-    PTB9  = (1 << GPIO_PORT_SHIFT | 9 ),
-    PTB10 = (1 << GPIO_PORT_SHIFT | 10),
-    PTB11 = (1 << GPIO_PORT_SHIFT | 11),
-    PTB12 = (1 << GPIO_PORT_SHIFT | 12),
-    PTB13 = (1 << GPIO_PORT_SHIFT | 13),
-    PTB14 = (1 << GPIO_PORT_SHIFT | 14),
-    PTB15 = (1 << GPIO_PORT_SHIFT | 15),
-    PTB16 = (1 << GPIO_PORT_SHIFT | 16),
-    PTB17 = (1 << GPIO_PORT_SHIFT | 17),
-    PTB18 = (1 << GPIO_PORT_SHIFT | 18),
-    PTB19 = (1 << GPIO_PORT_SHIFT | 19),
-    PTB20 = (1 << GPIO_PORT_SHIFT | 20),
-    PTB21 = (1 << GPIO_PORT_SHIFT | 21),
-    PTB22 = (1 << GPIO_PORT_SHIFT | 22),
-    PTB23 = (1 << GPIO_PORT_SHIFT | 23),
-    PTB24 = (1 << GPIO_PORT_SHIFT | 24),
-    PTB25 = (1 << GPIO_PORT_SHIFT | 25),
-    PTB26 = (1 << GPIO_PORT_SHIFT | 26),
-    PTB27 = (1 << GPIO_PORT_SHIFT | 27),
-    PTB28 = (1 << GPIO_PORT_SHIFT | 28),
-    PTB29 = (1 << GPIO_PORT_SHIFT | 29),
-    PTB30 = (1 << GPIO_PORT_SHIFT | 30),
-    PTB31 = (1 << GPIO_PORT_SHIFT | 31),
-    PTC0  = (2 << GPIO_PORT_SHIFT | 0 ),
-    PTC1  = (2 << GPIO_PORT_SHIFT | 1 ),
-    PTC2  = (2 << GPIO_PORT_SHIFT | 2 ),
-    PTC3  = (2 << GPIO_PORT_SHIFT | 3 ),
-    PTC4  = (2 << GPIO_PORT_SHIFT | 4 ),
-    PTC5  = (2 << GPIO_PORT_SHIFT | 5 ),
-    PTC6  = (2 << GPIO_PORT_SHIFT | 6 ),
-    PTC7  = (2 << GPIO_PORT_SHIFT | 7 ),
-    PTC8  = (2 << GPIO_PORT_SHIFT | 8 ),
-    PTC9  = (2 << GPIO_PORT_SHIFT | 9 ),
-    PTC10 = (2 << GPIO_PORT_SHIFT | 10),
-    PTC11 = (2 << GPIO_PORT_SHIFT | 11),
-    PTC12 = (2 << GPIO_PORT_SHIFT | 12),
-    PTC13 = (2 << GPIO_PORT_SHIFT | 13),
-    PTC14 = (2 << GPIO_PORT_SHIFT | 14),
-    PTC15 = (2 << GPIO_PORT_SHIFT | 15),
-    PTC16 = (2 << GPIO_PORT_SHIFT | 16),
-    PTC17 = (2 << GPIO_PORT_SHIFT | 17),
-    PTC18 = (2 << GPIO_PORT_SHIFT | 18),
-    PTC19 = (2 << GPIO_PORT_SHIFT | 19),
-    PTC20 = (2 << GPIO_PORT_SHIFT | 20),
-    PTC21 = (2 << GPIO_PORT_SHIFT | 21),
-    PTC22 = (2 << GPIO_PORT_SHIFT | 22),
-    PTC23 = (2 << GPIO_PORT_SHIFT | 23),
-    PTC24 = (2 << GPIO_PORT_SHIFT | 24),
-    PTC25 = (2 << GPIO_PORT_SHIFT | 25),
-    PTC26 = (2 << GPIO_PORT_SHIFT | 26),
-    PTC27 = (2 << GPIO_PORT_SHIFT | 27),
-    PTC28 = (2 << GPIO_PORT_SHIFT | 28),
-    PTC29 = (2 << GPIO_PORT_SHIFT | 29),
-    PTC30 = (2 << GPIO_PORT_SHIFT | 30),
-    PTC31 = (2 << GPIO_PORT_SHIFT | 31),
-    PTD0  = (3 << GPIO_PORT_SHIFT | 0 ),
-    PTD1  = (3 << GPIO_PORT_SHIFT | 1 ),
-    PTD2  = (3 << GPIO_PORT_SHIFT | 2 ),
-    PTD3  = (3 << GPIO_PORT_SHIFT | 3 ),
-    PTD4  = (3 << GPIO_PORT_SHIFT | 4 ),
-    PTD5  = (3 << GPIO_PORT_SHIFT | 5 ),
-    PTD6  = (3 << GPIO_PORT_SHIFT | 6 ),
-    PTD7  = (3 << GPIO_PORT_SHIFT | 7 ),
-    PTD8  = (3 << GPIO_PORT_SHIFT | 8 ),
-    PTD9  = (3 << GPIO_PORT_SHIFT | 9 ),
-    PTD10 = (3 << GPIO_PORT_SHIFT | 10),
-    PTD11 = (3 << GPIO_PORT_SHIFT | 11),
-    PTD12 = (3 << GPIO_PORT_SHIFT | 12),
-    PTD13 = (3 << GPIO_PORT_SHIFT | 13),
-    PTD14 = (3 << GPIO_PORT_SHIFT | 14),
-    PTD15 = (3 << GPIO_PORT_SHIFT | 15),
-    PTD16 = (3 << GPIO_PORT_SHIFT | 16),
-    PTD17 = (3 << GPIO_PORT_SHIFT | 17),
-    PTD18 = (3 << GPIO_PORT_SHIFT | 18),
-    PTD19 = (3 << GPIO_PORT_SHIFT | 19),
-    PTD20 = (3 << GPIO_PORT_SHIFT | 20),
-    PTD21 = (3 << GPIO_PORT_SHIFT | 21),
-    PTD22 = (3 << GPIO_PORT_SHIFT | 22),
-    PTD23 = (3 << GPIO_PORT_SHIFT | 23),
-    PTD24 = (3 << GPIO_PORT_SHIFT | 24),
-    PTD25 = (3 << GPIO_PORT_SHIFT | 25),
-    PTD26 = (3 << GPIO_PORT_SHIFT | 26),
-    PTD27 = (3 << GPIO_PORT_SHIFT | 27),
-    PTD28 = (3 << GPIO_PORT_SHIFT | 28),
-    PTD29 = (3 << GPIO_PORT_SHIFT | 29),
-    PTD30 = (3 << GPIO_PORT_SHIFT | 30),
-    PTD31 = (3 << GPIO_PORT_SHIFT | 31),
-    PTE0  = (4 << GPIO_PORT_SHIFT | 0 ),
-    PTE1  = (4 << GPIO_PORT_SHIFT | 1 ),
-    PTE2  = (4 << GPIO_PORT_SHIFT | 2 ),
-    PTE3  = (4 << GPIO_PORT_SHIFT | 3 ),
-    PTE4  = (4 << GPIO_PORT_SHIFT | 4 ),
-    PTE5  = (4 << GPIO_PORT_SHIFT | 5 ),
-    PTE6  = (4 << GPIO_PORT_SHIFT | 6 ),
-    PTE7  = (4 << GPIO_PORT_SHIFT | 7 ),
-    PTE8  = (4 << GPIO_PORT_SHIFT | 8 ),
-    PTE9  = (4 << GPIO_PORT_SHIFT | 9 ),
-    PTE10 = (4 << GPIO_PORT_SHIFT | 10),
-    PTE11 = (4 << GPIO_PORT_SHIFT | 11),
-    PTE12 = (4 << GPIO_PORT_SHIFT | 12),
-    PTE13 = (4 << GPIO_PORT_SHIFT | 13),
-    PTE14 = (4 << GPIO_PORT_SHIFT | 14),
-    PTE15 = (4 << GPIO_PORT_SHIFT | 15),
-    PTE16 = (4 << GPIO_PORT_SHIFT | 16),
-    PTE17 = (4 << GPIO_PORT_SHIFT | 17),
-    PTE18 = (4 << GPIO_PORT_SHIFT | 18),
-    PTE19 = (4 << GPIO_PORT_SHIFT | 19),
-    PTE20 = (4 << GPIO_PORT_SHIFT | 20),
-    PTE21 = (4 << GPIO_PORT_SHIFT | 21),
-    PTE22 = (4 << GPIO_PORT_SHIFT | 22),
-    PTE23 = (4 << GPIO_PORT_SHIFT | 23),
-    PTE24 = (4 << GPIO_PORT_SHIFT | 24),
-    PTE25 = (4 << GPIO_PORT_SHIFT | 25),
-    PTE26 = (4 << GPIO_PORT_SHIFT | 26),
-    PTE27 = (4 << GPIO_PORT_SHIFT | 27),
-    PTE28 = (4 << GPIO_PORT_SHIFT | 28),
-    PTE29 = (4 << GPIO_PORT_SHIFT | 29),
-    PTE30 = (4 << GPIO_PORT_SHIFT | 30),
-    PTE31 = (4 << GPIO_PORT_SHIFT | 31),
-
-    LED_RED   = PTB22,
-    LED_GREEN = PTE26,
-    LED_BLUE  = PTB21,
-
-    // mbed original LED naming
-    LED1 = LED_RED,
-    LED2 = LED_GREEN,
-    LED3 = LED_BLUE,
-    LED4 = LED_RED,
-
-    //Push buttons
-    SW2 = PTC6,
-    SW3 = PTA4,
-
-    // USB Pins
-    USBTX = PTB17,
-    USBRX = PTB16,
-
-    // Arduino Headers
-    D0 = PTC16,
-    D1 = PTC17,
-    D2 = PTB9,
-    D3 = PTA1,
-    D4 = PTB23,
-    D5 = PTA2,
-    D6 = PTC2,
-    D7 = PTC3,
-    D8 = PTA0,
-    D9 = PTC4,
-    D10 = PTD0,
-    D11 = PTD2,
-    D12 = PTD3,
-    D13 = PTD1,
-    D14 = PTE25,
-    D15 = PTE24,
-    
-    I2C_SCL = D15,
-    I2C_SDA = D14,
-
-    A0 = PTB2,
-    A1 = PTB3,
-    A2 = PTB10,
-    A3 = PTB11,
-    A4 = PTC11,
-    A5 = PTC10,
-
-    DAC0_OUT = 0xFEFE, /* DAC does not have Pin Name in RM */
-
-    // Not connected
-    NC = (int)0xFFFFFFFF
-} PinName;
-
-
-typedef enum {
-    PullNone = 0,
-    PullDown = 1,
-    PullUp   = 2,
-    PullDefault = PullUp
-} PinMode;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/crc.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,234 +0,0 @@
-/**********************************************************************
- *
- * Filename:    crc.c
- * 
- * Description: Slow and fast implementations of the CRC standards.
- *
- * Notes:       The parameters for each supported CRC standard are
- *				defined in the header file crc.h.  The implementations
- *				here should stand up to further additions to that list.
- *
- * 
- * Copyright (c) 2000 by Michael Barr.  This software is placed into
- * the public domain and may be used for any purpose.  However, this
- * notice must not be changed or removed and no warranty is either
- * expressed or implied by its publication or distribution.
- **********************************************************************/
- 
-#include "crc.h"
-
-
-/*
- * Derive parameters from the standard-specific parameters in crc.h.
- */
-#define WIDTH    (8 * sizeof(crc))
-#define TOPBIT   (1 << (WIDTH - 1))
-
-#if (REFLECT_DATA == TRUE)
-#undef  REFLECT_DATA
-#define REFLECT_DATA(X)			((unsigned char) reflect((X), 8))
-#else
-#undef  REFLECT_DATA
-#define REFLECT_DATA(X)			(X)
-#endif
-
-#if (REFLECT_REMAINDER == TRUE)
-#undef  REFLECT_REMAINDER
-#define REFLECT_REMAINDER(X)	((crc) reflect((X), WIDTH))
-#else
-#undef  REFLECT_REMAINDER
-#define REFLECT_REMAINDER(X)	(X)
-#endif
-
-
-/*********************************************************************
- *
- * Function:    reflect()
- * 
- * Description: Reorder the bits of a binary sequence, by reflecting
- *				them about the middle position.
- *
- * Notes:		No checking is done that nBits <= 32.
- *
- * Returns:		The reflection of the original data.
- *
- *********************************************************************/
-static unsigned long
-reflect(unsigned long data, unsigned char nBits)
-{
-	unsigned long  reflection = 0x00000000;
-	unsigned char  bit;
-
-	/*
-	 * Reflect the data about the center bit.
-	 */
-	for (bit = 0; bit < nBits; ++bit)
-	{
-		/*
-		 * If the LSB bit is set, set the reflection of it.
-		 */
-		if (data & 0x01)
-		{
-			reflection |= (1 << ((nBits - 1) - bit));
-		}
-
-		data = (data >> 1);
-	}
-
-	return (reflection);
-
-}	/* reflect() */
-
-
-/*********************************************************************
- *
- * Function:    crcSlow()
- * 
- * Description: Compute the CRC of a given message.
- *
- * Notes:		
- *
- * Returns:		The CRC of the message.
- *
- *********************************************************************/
-crc
-crcSlow(unsigned char const message[], int nBytes)
-{
-    crc            remainder = INITIAL_REMAINDER;
-	int            byte;
-	unsigned char  bit;
-
-
-    /*
-     * Perform modulo-2 division, a byte at a time.
-     */
-    for (byte = 0; byte < nBytes; ++byte)
-    {
-        /*
-         * Bring the next byte into the remainder.
-         */
-        remainder ^= (REFLECT_DATA(message[byte]) << (WIDTH - 8));
-
-        /*
-         * Perform modulo-2 division, a bit at a time.
-         */
-        for (bit = 8; bit > 0; --bit)
-        {
-            /*
-             * Try to divide the current data bit.
-             */
-            if (remainder & TOPBIT)
-            {
-                remainder = (remainder << 1) ^ POLYNOMIAL;
-            }
-            else
-            {
-                remainder = (remainder << 1);
-            }
-        }
-    }
-
-    /*
-     * The final remainder is the CRC result.
-     */
-    return (REFLECT_REMAINDER(remainder) ^ FINAL_XOR_VALUE);
-
-}   /* crcSlow() */
-
-
-crc  crcTable[256];
-
-
-/*********************************************************************
- *
- * Function:    crcInit()
- * 
- * Description: Populate the partial CRC lookup table.
- *
- * Notes:		This function must be rerun any time the CRC standard
- *				is changed.  If desired, it can be run "offline" and
- *				the table results stored in an embedded system's ROM.
- *
- * Returns:		None defined.
- *
- *********************************************************************/
-void
-crcInit(void)
-{
-    crc			   remainder;
-	int			   dividend;
-	unsigned char  bit;
-
-
-    /*
-     * Compute the remainder of each possible dividend.
-     */
-    for (dividend = 0; dividend < 256; ++dividend)
-    {
-        /*
-         * Start with the dividend followed by zeros.
-         */
-        remainder = dividend << (WIDTH - 8);
-
-        /*
-         * Perform modulo-2 division, a bit at a time.
-         */
-        for (bit = 8; bit > 0; --bit)
-        {
-            /*
-             * Try to divide the current data bit.
-             */			
-            if (remainder & TOPBIT)
-            {
-                remainder = (remainder << 1) ^ POLYNOMIAL;
-            }
-            else
-            {
-                remainder = (remainder << 1);
-            }
-        }
-
-        /*
-         * Store the result into the table.
-         */
-        crcTable[dividend] = remainder;
-    }
-
-}   /* crcInit() */
-
-
-/*********************************************************************
- *
- * Function:    crcFast()
- * 
- * Description: Compute the CRC of a given message.
- *
- * Notes:		crcInit() must be called first.
- *
- * Returns:		The CRC of the message.
- *
- *********************************************************************/
-crc
-crcFast(unsigned char const message[], int nBytes)
-{
-    crc	           remainder = INITIAL_REMAINDER;
-    unsigned char  data;
-	int            byte;
-
-
-    /*
-     * Divide the message by the polynomial, a byte at a time.
-     */
-    for (byte = 0; byte < nBytes; ++byte)
-    {
-        data = REFLECT_DATA(message[byte]) ^ (remainder >> (WIDTH - 8));
-  		remainder = crcTable[data] ^ (remainder << 8);
-    }
-
-    /*
-     * The final remainder is the CRC.
-     */
-    return (REFLECT_REMAINDER(remainder) ^ FINAL_XOR_VALUE);
-
-}   /* crcFast() */
-
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/crc.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/**********************************************************************
- *
- * Filename:    crc.h
- * 
- * Description: A header file describing the various CRC standards.
- *
- * Notes:       
- *
- * 
- * Copyright (c) 2000 by Michael Barr.  This software is placed into
- * the public domain and may be used for any purpose.  However, this
- * notice must not be changed or removed and no warranty is either
- * expressed or implied by its publication or distribution.
- **********************************************************************/
-
-#ifndef _crc_h
-#define _crc_h
-
-
-#define FALSE	0
-#define TRUE	!FALSE
-
-/*
- * Select the CRC standard from the list that follows.
- */
-#define CRC16
-
-
-#if defined(CRC_CCITT)
-
-typedef unsigned short  crc;
-
-#define CRC_NAME			"CRC-CCITT"
-#define POLYNOMIAL			0x1021
-#define INITIAL_REMAINDER	0xFFFF
-#define FINAL_XOR_VALUE		0x0000
-#define REFLECT_DATA		FALSE
-#define REFLECT_REMAINDER	FALSE
-#define CHECK_VALUE			0x29B1
-
-#elif defined(CRC16)
-
-typedef unsigned short  crc;
-
-#define CRC_NAME			"CRC-16"
-#define POLYNOMIAL			0x8005
-#define INITIAL_REMAINDER	0x0000
-#define FINAL_XOR_VALUE		0x0000
-#define REFLECT_DATA		TRUE
-#define REFLECT_REMAINDER	TRUE
-#define CHECK_VALUE			0xBB3D
-
-#elif defined(CRC32)
-
-typedef unsigned long  crc;
-
-#define CRC_NAME			"CRC-32"
-#define POLYNOMIAL			0x04C11DB7
-#define INITIAL_REMAINDER	0xFFFFFFFF
-#define FINAL_XOR_VALUE		0xFFFFFFFF
-#define REFLECT_DATA		TRUE
-#define REFLECT_REMAINDER	TRUE
-#define CHECK_VALUE			0xCBF43926
-
-#else
-
-#error "One of CRC_CCITT, CRC16, or CRC32 must be #define'd."
-
-#endif
-
-
-void  crcInit(void);
-crc   crcSlow(unsigned char const message[], int nBytes);
-crc   crcFast(unsigned char const message[], int nBytes);
-
-
-#endif /* _crc_h */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/device.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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 MBED_DEVICE_H
-#define MBED_DEVICE_H
-
-#define DEVICE_PORTIN           1
-#define DEVICE_PORTOUT          1
-#define DEVICE_PORTINOUT        1
-
-#define DEVICE_INTERRUPTIN      1
-
-#define DEVICE_ANALOGIN         1
-#define DEVICE_ANALOGOUT        1
-
-#define DEVICE_SERIAL           1
-
-#define DEVICE_I2C              1
-#define DEVICE_I2CSLAVE         1
-
-#define DEVICE_SPI              1
-#define DEVICE_SPISLAVE         1
-
-#define DEVICE_CAN              0
-
-#define DEVICE_RTC              1
-
-#define DEVICE_ETHERNET         0
-
-#define DEVICE_PWMOUT           1
-
-#define DEVICE_SEMIHOST         0
-#define DEVICE_LOCALFILESYSTEM  0
-#define DEVICE_ID_LENGTH       24
-
-#define DEVICE_SLEEP            1
-
-#define DEVICE_DEBUG_AWARENESS  0
-
-#define DEVICE_STDIO_MESSAGES   1
-
-#define DEVICE_ERROR_RED        1
-
-#include "objects.h"
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/fsl_clock_config.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_common.h"
-#include "fsl_smc.h"
-#include "fsl_clock_config.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-/*! @brief Clock configuration structure. */
-typedef struct _clock_config
-{
-    mcg_config_t mcgConfig;       /*!< MCG configuration.      */
-    sim_clock_config_t simConfig; /*!< SIM configuration.      */
-    osc_config_t oscConfig;       /*!< OSC configuration.      */
-    uint32_t coreClock;           /*!< core clock frequency.   */
-} clock_config_t;
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-/* System clock frequency. */
-extern uint32_t SystemCoreClock;
-
-/* Configuration for enter VLPR mode. Core clock = 4MHz. */
-const clock_config_t g_defaultClockConfigVlpr = {
-    .mcgConfig =
-        {
-            .mcgMode = kMCG_ModeBLPI,            /* Work in BLPI mode. */
-            .irclkEnableMode = kMCG_IrclkEnable, /* MCGIRCLK enable. */
-            .ircs = kMCG_IrcFast,                /* Select IRC4M. */
-            .fcrdiv = 0U,                        /* FCRDIV is 0. */
-
-            .frdiv = 0U,
-            .drs = kMCG_DrsLow,         /* Low frequency range. */
-            .dmx32 = kMCG_Dmx32Default, /* DCO has a default range of 25%. */
-            .oscsel = kMCG_OscselOsc,   /* Select OSC. */
-
-            .pll0Config =
-                {
-                    .enableMode = 0U, /* Don't eanble PLL. */
-                    .prdiv = 0U,
-                    .vdiv = 0U,
-                },
-        },
-    .simConfig =
-        {
-            .pllFllSel = 3U,        /* PLLFLLSEL select IRC48MCLK. */
-            .er32kSrc = 2U,         /* ERCLK32K selection, use RTC. */
-            .clkdiv1 = 0x00040000U, /* SIM_CLKDIV1. */
-        },
-    .oscConfig = {.freq = BOARD_XTAL0_CLK_HZ,
-                  .capLoad = 0,
-                  .workMode = kOSC_ModeExt,
-                  .oscerConfig =
-                      {
-                          .enableMode = kOSC_ErClkEnable,
-#if (defined(FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER) && FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER)
-                          .erclkDiv = 0U,
-#endif
-                      }},
-    .coreClock = 4000000U, /* Core clock frequency */
-};
-
-/* Configuration for enter RUN mode. Core clock = 120MHz. */
-const clock_config_t g_defaultClockConfigRun = {
-    .mcgConfig =
-        {
-            .mcgMode = kMCG_ModePEE,             /* Work in PEE mode. */
-            .irclkEnableMode = kMCG_IrclkEnable, /* MCGIRCLK enable. */
-            .ircs = kMCG_IrcSlow,                /* Select IRC32k. */
-            .fcrdiv = 0U,                        /* FCRDIV is 0. */
-
-            .frdiv = 7U,
-            .drs = kMCG_DrsLow,         /* Low frequency range. */
-            .dmx32 = kMCG_Dmx32Default, /* DCO has a default range of 25%. */
-            .oscsel = kMCG_OscselOsc,   /* Select OSC. */
-
-            .pll0Config =
-                {
-                    .enableMode = 0U, .prdiv = 0x13U, .vdiv = 0x18U,
-                },
-        },
-    .simConfig =
-        {
-            .pllFllSel = 1U,        /* PLLFLLSEL select PLL. */
-            .er32kSrc = 2U,         /* ERCLK32K selection, use RTC. */
-            .clkdiv1 = 0x01140000U, /* SIM_CLKDIV1. */
-        },
-    .oscConfig = {.freq = BOARD_XTAL0_CLK_HZ,
-                  .capLoad = 0,
-                  .workMode = kOSC_ModeExt,
-                  .oscerConfig =
-                      {
-                          .enableMode = kOSC_ErClkEnable,
-#if (defined(FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER) && FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER)
-                          .erclkDiv = 0U,
-#endif
-                      }},
-    .coreClock = 120000000U, /* Core clock frequency */
-};
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-/*
- * How to setup clock using clock driver functions:
- *
- * 1. CLOCK_SetSimSafeDivs, to make sure core clock, bus clock, flexbus clock
- *    and flash clock are in allowed range during clock mode switch.
- *
- * 2. Call CLOCK_Osc0Init to setup OSC clock, if it is used in target mode.
- *
- * 3. Set MCG configuration, MCG includes three parts: FLL clock, PLL clock and
- *    internal reference clock(MCGIRCLK). Follow the steps to setup:
- *
- *    1). Call CLOCK_BootToXxxMode to set MCG to target mode.
- *
- *    2). If target mode is FBI/BLPI/PBI mode, the MCGIRCLK has been configured
- *        correctly. For other modes, need to call CLOCK_SetInternalRefClkConfig
- *        explicitly to setup MCGIRCLK.
- *
- *    3). Don't need to configure FLL explicitly, because if target mode is FLL
- *        mode, then FLL has been configured by the function CLOCK_BootToXxxMode,
- *        if the target mode is not FLL mode, the FLL is disabled.
- *
- *    4). If target mode is PEE/PBE/PEI/PBI mode, then the related PLL has been
- *        setup by CLOCK_BootToXxxMode. In FBE/FBI/FEE/FBE mode, the PLL could
- *        be enabled independently, call CLOCK_EnablePll0 explicitly in this case.
- *
- * 4. Call CLOCK_SetSimConfig to set the clock configuration in SIM.
- */
-
-void BOARD_BootClockVLPR(void)
-{
-    CLOCK_SetSimSafeDivs();
-
-    CLOCK_BootToBlpiMode(g_defaultClockConfigVlpr.mcgConfig.fcrdiv, g_defaultClockConfigVlpr.mcgConfig.ircs,
-                         g_defaultClockConfigVlpr.mcgConfig.irclkEnableMode);
-
-    CLOCK_SetSimConfig(&g_defaultClockConfigVlpr.simConfig);
-
-    SystemCoreClock = g_defaultClockConfigVlpr.coreClock;
-
-    SMC_SetPowerModeProtection(SMC, kSMC_AllowPowerModeAll);
-    SMC_SetPowerModeVlpr(SMC, false);
-    while (SMC_GetPowerModeState(SMC) != kSMC_PowerStateVlpr)
-    {
-    }
-}
-
-void BOARD_BootClockRUN(void)
-{
-    CLOCK_SetSimSafeDivs();
-
-    CLOCK_InitOsc0(&g_defaultClockConfigRun.oscConfig);
-    CLOCK_SetXtal0Freq(BOARD_XTAL0_CLK_HZ);
-
-    CLOCK_BootToPeeMode(g_defaultClockConfigRun.mcgConfig.oscsel, kMCG_PllClkSelPll0,
-                        &g_defaultClockConfigRun.mcgConfig.pll0Config);
-
-    CLOCK_SetInternalRefClkConfig(g_defaultClockConfigRun.mcgConfig.irclkEnableMode,
-                                  g_defaultClockConfigRun.mcgConfig.ircs, g_defaultClockConfigRun.mcgConfig.fcrdiv);
-
-    CLOCK_SetSimConfig(&g_defaultClockConfigRun.simConfig);
-
-    SystemCoreClock = g_defaultClockConfigRun.coreClock;
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/fsl_clock_config.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _CLOCK_CONFIG_H_
-#define _CLOCK_CONFIG_H_
-
-/*******************************************************************************
- * DEFINITION
- ******************************************************************************/
-#define BOARD_XTAL0_CLK_HZ 50000000U
-#define BOARD_XTAL32K_CLK_HZ 32768U
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-#if defined(__cplusplus)
-extern "C" {
-#endif /* __cplusplus*/
-
-void BOARD_BootClockVLPR(void);
-void BOARD_BootClockRUN(void);
-
-#if defined(__cplusplus)
-}
-#endif /* __cplusplus*/
-
-#endif /* _CLOCK_CONFIG_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/fsl_phy.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,292 +0,0 @@
-/*
-* Copyright (c) 2015, Freescale Semiconductor, Inc.
-* All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without modification,
-* are permitted provided that the following conditions are met:
-*
-* o Redistributions of source code must retain the above copyright notice, this list
-*   of conditions and the following disclaimer.
-*
-* o Redistributions in binary form must reproduce the above copyright notice, this
-*   list of conditions and the following disclaimer in the documentation and/or
-*   other materials provided with the distribution.
-*
-* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-*   contributors may be used to endorse or promote products derived from this
-*   software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include "fsl_phy.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @brief Defines the timeout macro. */
-#define PHY_TIMEOUT_COUNT 0xFFFFFU
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-
-/*!
- * @brief Get the ENET instance from peripheral base address.
- *
- * @param base ENET peripheral base address.
- * @return ENET instance.
- */
-extern uint32_t ENET_GetInstance(ENET_Type *base);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-
-/*! @brief Pointers to enet clocks for each instance. */
-extern clock_ip_name_t s_enetClock[FSL_FEATURE_SOC_ENET_COUNT];
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-
-status_t PHY_Init(ENET_Type *base, uint32_t phyAddr, uint32_t srcClock_Hz)
-{
-    uint32_t bssReg;
-    uint32_t counter = PHY_TIMEOUT_COUNT;
-    status_t result = kStatus_Success;
-    uint32_t instance = ENET_GetInstance(base);
-
-    /* Set SMI first. */
-    CLOCK_EnableClock(s_enetClock[instance]);
-    ENET_SetSMI(base, srcClock_Hz, false);
-
-    /* Reset PHY. */
-    result = PHY_Write(base, phyAddr, PHY_BASICCONTROL_REG, PHY_BCTL_RESET_MASK);
-    if (result == kStatus_Success)
-    {
-        /* Set the negotiation. */
-        result = PHY_Write(base, phyAddr, PHY_AUTONEG_ADVERTISE_REG,
-                           (PHY_100BASETX_FULLDUPLEX_MASK | PHY_100BASETX_HALFDUPLEX_MASK |
-                            PHY_10BASETX_FULLDUPLEX_MASK | PHY_10BASETX_HALFDUPLEX_MASK | 0x1U));
-        if (result == kStatus_Success)
-        {
-            result = PHY_Write(base, phyAddr, PHY_BASICCONTROL_REG,
-                               (PHY_BCTL_AUTONEG_MASK | PHY_BCTL_RESTART_AUTONEG_MASK));
-            if (result == kStatus_Success)
-            {
-                /* Check auto negotiation complete. */
-                while (counter --)
-                {
-                    result = PHY_Read(base, phyAddr, PHY_BASICSTATUS_REG, &bssReg);
-                    if ( result == kStatus_Success)
-                    {
-                        if ((bssReg & PHY_BSTATUS_AUTONEGCOMP_MASK) != 0)
-                        {
-                            break;
-                        }
-                    }
-
-                    if (!counter)
-                    {
-                        return kStatus_PHY_AutoNegotiateFail;
-                    }
-                }
-            }
-        }
-    }
-
-    return result;
-}
-
-status_t PHY_Write(ENET_Type *base, uint32_t phyAddr, uint32_t phyReg, uint32_t data)
-{
-    uint32_t counter;
-
-    /* Clear the SMI interrupt event. */
-    ENET_ClearInterruptStatus(base, ENET_EIR_MII_MASK);
-
-    /* Starts a SMI write command. */
-    ENET_StartSMIWrite(base, phyAddr, phyReg, kENET_MiiWriteValidFrame, data);
-
-    /* Wait for SMI complete. */
-    for (counter = PHY_TIMEOUT_COUNT; counter > 0; counter--)
-    {
-        if (ENET_GetInterruptStatus(base) & ENET_EIR_MII_MASK)
-        {
-            break;
-        }
-    }
-
-    /* Check for timeout. */
-    if (!counter)
-    {
-        return kStatus_PHY_SMIVisitTimeout;
-    }
-
-    /* Clear MII interrupt event. */
-    ENET_ClearInterruptStatus(base, ENET_EIR_MII_MASK);
-
-    return kStatus_Success;
-}
-
-status_t PHY_Read(ENET_Type *base, uint32_t phyAddr, uint32_t phyReg, uint32_t *dataPtr)
-{
-    assert(dataPtr);
-
-    uint32_t counter;
-
-    /* Clear the MII interrupt event. */
-    ENET_ClearInterruptStatus(base, ENET_EIR_MII_MASK);
-
-    /* Starts a SMI read command operation. */
-    ENET_StartSMIRead(base, phyAddr, phyReg, kENET_MiiReadValidFrame);
-
-    /* Wait for MII complete. */
-    for (counter = PHY_TIMEOUT_COUNT; counter > 0; counter--)
-    {
-        if (ENET_GetInterruptStatus(base) & ENET_EIR_MII_MASK)
-        {
-            break;
-        }
-    }
-
-    /* Check for timeout. */
-    if (!counter)
-    {
-        return kStatus_PHY_SMIVisitTimeout;
-    }
-
-    /* Get data from MII register. */
-    *dataPtr = ENET_ReadSMIData(base);
-
-    /* Clear MII interrupt event. */
-    ENET_ClearInterruptStatus(base, ENET_EIR_MII_MASK);
-
-    return kStatus_Success;
-}
-
-status_t PHY_EnableLoopback(ENET_Type *base, uint32_t phyAddr, phy_loop_t mode, bool enable)
-{
-    status_t result;
-    uint32_t data = 0;
-
-    /* Set the loop mode. */
-    if (enable)
-    {
-        if (mode == kPHY_LocalLoop)
-        {
-            /* First read the current status in control register. */
-            result = PHY_Read(base, phyAddr, PHY_BASICCONTROL_REG, &data);
-            if (result == kStatus_Success)
-            {
-                return PHY_Write(base, phyAddr, PHY_BASICCONTROL_REG, (data | PHY_BCTL_LOOP_MASK));
-            }
-        }
-        else
-        {
-            /* First read the current status in control register. */
-            result = PHY_Read(base, phyAddr, PHY_CONTROL2_REG, &data);
-            if (result == kStatus_Success)
-            {
-                return PHY_Write(base, phyAddr, PHY_CONTROL2_REG, (data | PHY_CTL2_REMOTELOOP_MASK));
-            }
-        }
-    }
-    else
-    {
-        /* Disable the loop mode. */
-        if (mode == kPHY_LocalLoop)
-        {
-            /* First read the current status in the basic control register. */
-            result = PHY_Read(base, phyAddr, PHY_BASICCONTROL_REG, &data);
-            if (result == kStatus_Success)
-            {
-                return PHY_Write(base, phyAddr, PHY_BASICCONTROL_REG, (data & ~PHY_BCTL_LOOP_MASK));
-            }
-        }
-        else
-        {
-            /* First read the current status in control one register. */
-            result = PHY_Read(base, phyAddr, PHY_CONTROL2_REG, &data);
-            if (result == kStatus_Success)
-            {
-                return PHY_Write(base, phyAddr, PHY_CONTROL2_REG, (data & ~PHY_CTL2_REMOTELOOP_MASK));
-            }
-        }
-    }
-    return result;
-}
-
-status_t PHY_GetLinkStatus(ENET_Type *base, uint32_t phyAddr, bool *status)
-{
-    assert(status);
-
-    status_t result = kStatus_Success;
-    uint32_t data;
-
-    /* Read the basic status register. */
-    result = PHY_Read(base, phyAddr, PHY_BASICSTATUS_REG, &data);
-    if (result == kStatus_Success)
-    {
-        if (!(PHY_BSTATUS_LINKSTATUS_MASK & data))
-        {
-            /* link down. */
-            *status = false;
-        }
-        else
-        {
-            /* link up. */
-            *status = true;
-        }
-    }
-    return result;
-}
-
-status_t PHY_GetLinkSpeedDuplex(ENET_Type *base, uint32_t phyAddr, phy_speed_t *speed, phy_duplex_t *duplex)
-{
-    assert(duplex);
-
-    status_t result = kStatus_Success;
-    uint32_t data, ctlReg;
-
-    /* Read the control two register. */
-    result = PHY_Read(base, phyAddr, PHY_CONTROL1_REG, &ctlReg);
-    if (result == kStatus_Success)
-    {
-        data = ctlReg & PHY_CTL1_SPEEDUPLX_MASK;
-        if ((PHY_CTL1_10FULLDUPLEX_MASK == data) || (PHY_CTL1_100FULLDUPLEX_MASK == data))
-        {
-            /* Full duplex. */
-            *duplex = kPHY_FullDuplex;
-        }
-        else
-        {
-            /* Half duplex. */
-            *duplex = kPHY_HalfDuplex;
-        }
-
-        data = ctlReg & PHY_CTL1_SPEEDUPLX_MASK;
-        if ((PHY_CTL1_100HALFDUPLEX_MASK == data) || (PHY_CTL1_100FULLDUPLEX_MASK == data))
-        {
-            /* 100M speed. */
-            *speed = kPHY_Speed100M;
-        }
-        else
-        { /* 10M speed. */
-            *speed = kPHY_Speed10M;
-        }
-    }
-
-    return result;
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/fsl_phy.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,216 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_PHY_H_
-#define _FSL_PHY_H_
-
-#include "fsl_enet.h"
-
-/*!
- * @addtogroup phy_driver
- * @{
- */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @brief PHY driver version */
-#define FSL_PHY_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) /*!< Version 2.0.0. */
-
-/*! @brief Defines the PHY registers. */
-#define PHY_BASICCONTROL_REG 0x00U      /*!< The PHY basic control register. */
-#define PHY_BASICSTATUS_REG 0x01U       /*!< The PHY basic status register. */
-#define PHY_ID1_REG 0x02U               /*!< The PHY ID one register. */
-#define PHY_ID2_REG 0x03U               /*!< The PHY ID two register. */
-#define PHY_AUTONEG_ADVERTISE_REG 0x04U /*!< The PHY auto-negotiate advertise register. */
-#define PHY_CONTROL1_REG 0x1EU          /*!< The PHY control one register. */
-#define PHY_CONTROL2_REG 0x1FU          /*!< The PHY control two register. */
-
-#define PHY_CONTROL_ID1 0x22U /*!< The PHY ID1*/
-
-/*! @brief Defines the mask flag in basic control register. */
-#define PHY_BCTL_DUPLEX_MASK 0x0100U          /*!< The PHY duplex bit mask. */
-#define PHY_BCTL_RESTART_AUTONEG_MASK 0x0200U /*!< The PHY restart auto negotiation mask. */
-#define PHY_BCTL_AUTONEG_MASK 0x1000U         /*!< The PHY auto negotiation bit mask. */
-#define PHY_BCTL_SPEED_MASK 0x2000U           /*!< The PHY speed bit mask. */
-#define PHY_BCTL_LOOP_MASK 0x4000U            /*!< The PHY loop bit mask. */
-#define PHY_BCTL_RESET_MASK 0x8000U           /*!< The PHY reset bit mask. */
-
-/*!@brief Defines the mask flag of operation mode in control two register*/
-#define PHY_CTL2_REMOTELOOP_MASK 0x0004U    /*!< The PHY remote loopback mask. */
-#define PHY_CTL1_10HALFDUPLEX_MASK 0x0001U  /*!< The PHY 10M half duplex mask. */
-#define PHY_CTL1_100HALFDUPLEX_MASK 0x0002U /*!< The PHY 100M half duplex mask. */
-#define PHY_CTL1_10FULLDUPLEX_MASK 0x0005U  /*!< The PHY 10M full duplex mask. */
-#define PHY_CTL1_100FULLDUPLEX_MASK 0x0006U /*!< The PHY 100M full duplex mask. */
-#define PHY_CTL1_SPEEDUPLX_MASK 0x0007U     /*!< The PHY speed and duplex mask. */
-
-/*! @brief Defines the mask flag in basic status register. */
-#define PHY_BSTATUS_LINKSTATUS_MASK 0x0004U  /*!< The PHY link status mask. */
-#define PHY_BSTATUS_AUTONEGABLE_MASK 0x0008U /*!< The PHY auto-negotiation ability mask. */
-#define PHY_BSTATUS_AUTONEGCOMP_MASK 0x0020U /*!< The PHY auto-negotiation complete mask. */
-
-/*! @brief Defines the mask flag in PHY auto-negotiation advertise register. */
-#define PHY_100BaseT4_ABILITY_MASK 0x200U    /*!< The PHY have the T4 ability. */
-#define PHY_100BASETX_FULLDUPLEX_MASK 0x100U /*!< The PHY has the 100M full duplex ability.*/
-#define PHY_100BASETX_HALFDUPLEX_MASK 0x080U /*!< The PHY has the 100M full duplex ability.*/
-#define PHY_10BASETX_FULLDUPLEX_MASK 0x040U  /*!< The PHY has the 10M full duplex ability.*/
-#define PHY_10BASETX_HALFDUPLEX_MASK 0x020U  /*!< The PHY has the 10M full duplex ability.*/
-
-/*! @brief Defines the PHY status. */
-enum _phy_status
-{
-    kStatus_PHY_SMIVisitTimeout = MAKE_STATUS(kStatusGroup_PHY, 1),  /*!< ENET PHY SMI visit timeout. */
-    kStatus_PHY_AutoNegotiateFail = MAKE_STATUS(kStatusGroup_PHY, 2) /*!< ENET PHY AutoNegotiate Fail. */
-};
-
-/*! @brief Defines the PHY link speed. This is align with the speed for ENET MAC. */
-typedef enum _phy_speed
-{
-    kPHY_Speed10M = 0U, /*!< ENET PHY 10M speed. */
-    kPHY_Speed100M      /*!< ENET PHY 100M speed. */
-} phy_speed_t;
-
-/*! @brief Defines the PHY link duplex. */
-typedef enum _phy_duplex
-{
-    kPHY_HalfDuplex = 0U, /*!< ENET PHY half duplex. */
-    kPHY_FullDuplex       /*!< ENET PHY full duplex. */
-} phy_duplex_t;
-
-/*! @brief Defines the PHY loopback mode. */
-typedef enum _phy_loop
-{
-    kPHY_LocalLoop = 0U, /*!< ENET PHY local loopback. */
-    kPHY_RemoteLoop      /*!< ENET PHY remote loopback. */
-} phy_loop_t;
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
-  * @name PHY Driver
-  * @{
-  */
-
-/*!
- * @brief Initializes PHY.
- *
- *  This function initialize the SMI interface and initialize PHY.
- *  The SMI is the MII management interface between PHY and MAC, which should be
- *  firstly initialized before any other operation for PHY.
- *
- * @param base       ENET peripheral base address.
- * @param phyAddr    The PHY address.
- * @param srcClock_Hz  The module clock frequency - system clock for MII management interface - SMI.
- * @retval kStatus_Success  PHY initialize success
- * @retval kStatus_PHY_SMIVisitTimeout  PHY SMI visit time out
- * @retval kStatus_PHY_AutoNegotiateFail  PHY auto negotiate fail
- */
-status_t PHY_Init(ENET_Type *base, uint32_t phyAddr, uint32_t srcClock_Hz);
-
-/*!
- * @brief PHY Write function. This function write data over the SMI to
- * the specified PHY register. This function is called by all PHY interfaces.
- *
- * @param base    ENET peripheral base address.
- * @param phyAddr The PHY address.
- * @param phyReg  The PHY register.
- * @param data    The data written to the PHY register.
- * @retval kStatus_Success     PHY write success
- * @retval kStatus_PHY_SMIVisitTimeout  PHY SMI visit time out
- */
-status_t PHY_Write(ENET_Type *base, uint32_t phyAddr, uint32_t phyReg, uint32_t data);
-
-/*!
- * @brief PHY Read function. This interface read data over the SMI from the
- * specified PHY register. This function is called by all PHY interfaces.
- *
- * @param base     ENET peripheral base address.
- * @param phyAddr  The PHY address.
- * @param phyReg   The PHY register.
- * @param dataPtr  The address to store the data read from the PHY register.
- * @retval kStatus_Success  PHY read success
- * @retval kStatus_PHY_SMIVisitTimeout  PHY SMI visit time out
- */
-status_t PHY_Read(ENET_Type *base, uint32_t phyAddr, uint32_t phyReg, uint32_t *dataPtr);
-
-/*!
- * @brief Enables/disables PHY loopback.
- *
- * @param base     ENET peripheral base address.
- * @param phyAddr  The PHY address.
- * @param mode     The loopback mode to be enabled, please see "phy_loop_t".
- * the two loopback mode should not be both set. when one loopback mode is set
- * the other one should be disabled.
- * @param enable   True to enable, false to disable.
- * @retval kStatus_Success  PHY loopback success
- * @retval kStatus_PHY_SMIVisitTimeout  PHY SMI visit time out
- */
-status_t PHY_EnableLoopback(ENET_Type *base, uint32_t phyAddr, phy_loop_t mode, bool enable);
-
-/*!
- * @brief Gets the PHY link status.
- *
- * @param base     ENET peripheral base address.
- * @param phyAddr  The PHY address.
- * @param status   The link up or down status of the PHY.
- *         - true the link is up.
- *         - false the link is down.
- * @retval kStatus_Success   PHY get link status success
- * @retval kStatus_PHY_SMIVisitTimeout  PHY SMI visit time out
- */
-status_t PHY_GetLinkStatus(ENET_Type *base, uint32_t phyAddr, bool *status);
-
-/*!
- * @brief Gets the PHY link speed and duplex.
- *
- * @param base     ENET peripheral base address.
- * @param phyAddr  The PHY address.
- * @param speed    The address of PHY link speed.
- * @param duplex   The link duplex of PHY.
- * @retval kStatus_Success   PHY get link speed and duplex success
- * @retval kStatus_PHY_SMIVisitTimeout  PHY SMI visit time out
- */
-status_t PHY_GetLinkSpeedDuplex(ENET_Type *base, uint32_t phyAddr, phy_speed_t *speed, phy_duplex_t *duplex);
-
-/* @} */
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*! @}*/
-
-#endif /* _FSL_PHY_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_FRDM/mbed_overrides.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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.
- */
-#include "gpio_api.h"
-
-#define CRC16
-#include "crc.h"
-#include "fsl_clock_config.h"
-
-// called before main
-void mbed_sdk_init()
-{
-    BOARD_BootClockRUN();
-}
-
-// Change the NMI pin to an input. This allows NMI pin to
-//  be used as a low power mode wakeup.  The application will
-//  need to change the pin back to NMI_b or wakeup only occurs once!
-void NMI_Handler(void)
-{
-    gpio_t gpio;
-    gpio_init_in(&gpio, PTA4);
-}
-
-// Enable the RTC oscillator if available on the board
-void rtc_setup_oscillator(RTC_Type *base)
-{
-    /* Enable the RTC oscillator */
-    RTC->CR |= RTC_CR_OSCE_MASK;
-}
-
-// Provide ethernet devices with a semi-unique MAC address from the UUID
-void mbed_mac_address(char *mac)
-{
-
-    unsigned int UUID_LOC_BASE = 0x40048054;    // First adddress of the 4-word UUID
-    char uuid[16];                              // So we can take a local copy of the UUID
-    uint32_t MAC[3]; // 3 16 bits words for the MAC
-
-    // copy the UUID to the variable MAC[]
-    memcpy(uuid,(const void*)UUID_LOC_BASE,sizeof(uuid));
-
-    // generate three CRC16's using different slices of the UUID
-    MAC[0] = crcSlow(uuid, 8);   // most significant half-word
-    MAC[1] = crcSlow(uuid, 12);
-    MAC[2] = crcSlow(uuid, 16); // least significant half word
-
-    // The network stack expects an array of 6 bytes
-    // so we copy, and shift and copy from the half-word array to the byte array
-    mac[0] = MAC[0] >> 8;
-    mac[1] = MAC[0];
-    mac[2] = MAC[1] >> 8;
-    mac[3] = MAC[1];
-    mac[4] = MAC[2] >> 8;
-    mac[5] = MAC[2];
-
-    // We want to force bits [1:0] of the most significant byte [0]
-    // to be "10"
-    // http://en.wikipedia.org/wiki/MAC_address
-
-    mac[0] |= 0x02; // force bit 1 to a "1" = "Locally Administered"
-    mac[0] &= 0xFE; // force bit 0 to a "0" = Unicast
-
-}
-
-
-
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_HEXIWEAR/PeripheralNames.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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 MBED_PERIPHERALNAMES_H
-#define MBED_PERIPHERALNAMES_H
-
-#include "cmsis.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
-    OSC32KCLK = 0,
-} RTCName;
-
-typedef enum {
-    UART_0 = 0,
-    UART_2 = 2,
-    UART_3 = 3,
-    UART_4 = 4,
-} UARTName;
-
-#define STDIO_UART_TX     USBTX
-#define STDIO_UART_RX     USBRX
-#define STDIO_UART        UART_0
-
-typedef enum {
-    I2C_0 = 0,
-    I2C_1 = 1,
-} I2CName;
-
-#define TPM_SHIFT   8
-typedef enum {
-    PWM_1  = (0 << TPM_SHIFT) | (0),  // FTM0 CH0
-    PWM_2  = (0 << TPM_SHIFT) | (1),  // FTM0 CH1
-    PWM_3  = (0 << TPM_SHIFT) | (2),  // FTM0 CH2
-    PWM_4  = (0 << TPM_SHIFT) | (3),  // FTM0 CH3
-    PWM_5  = (0 << TPM_SHIFT) | (4),  // FTM0 CH4
-    PWM_6  = (0 << TPM_SHIFT) | (5),  // FTM0 CH5
-    PWM_7  = (0 << TPM_SHIFT) | (6),  // FTM0 CH6
-    PWM_8  = (0 << TPM_SHIFT) | (7),  // FTM0 CH7
-    PWM_9  = (1 << TPM_SHIFT) | (0),  // FTM1 CH0
-    PWM_10 = (1 << TPM_SHIFT) | (1),  // FTM1 CH1
-    PWM_11 = (1 << TPM_SHIFT) | (2),  // FTM1 CH2
-    PWM_12 = (1 << TPM_SHIFT) | (3),  // FTM1 CH3
-    PWM_13 = (1 << TPM_SHIFT) | (4),  // FTM1 CH4
-    PWM_14 = (1 << TPM_SHIFT) | (5),  // FTM1 CH5
-    PWM_15 = (1 << TPM_SHIFT) | (6),  // FTM1 CH6
-    PWM_16 = (1 << TPM_SHIFT) | (7),  // FTM1 CH7
-    PWM_17 = (2 << TPM_SHIFT) | (0),  // FTM2 CH0
-    PWM_18 = (2 << TPM_SHIFT) | (1),  // FTM2 CH1
-    PWM_19 = (2 << TPM_SHIFT) | (2),  // FTM2 CH2
-    PWM_20 = (2 << TPM_SHIFT) | (3),  // FTM2 CH3
-    PWM_21 = (2 << TPM_SHIFT) | (4),  // FTM2 CH4
-    PWM_22 = (2 << TPM_SHIFT) | (5),  // FTM2 CH5
-    PWM_23 = (2 << TPM_SHIFT) | (6),  // FTM2 CH6
-    PWM_24 = (2 << TPM_SHIFT) | (7),  // FTM2 CH7
-    PWM_25 = (3 << TPM_SHIFT) | (0),  // FTM3 CH0
-    PWM_26 = (3 << TPM_SHIFT) | (1),  // FTM3 CH1
-    PWM_27 = (3 << TPM_SHIFT) | (2),  // FTM3 CH2
-    PWM_28 = (3 << TPM_SHIFT) | (3),  // FTM3 CH3
-    PWM_29 = (3 << TPM_SHIFT) | (4),  // FTM3 CH4
-    PWM_30 = (3 << TPM_SHIFT) | (5),  // FTM3 CH5
-    PWM_31 = (3 << TPM_SHIFT) | (6),  // FTM3 CH6
-    PWM_32 = (3 << TPM_SHIFT) | (7),  // FTM3 CH7
-} PWMName;
-
-#define ADC_INSTANCE_SHIFT           8
-#define ADC_B_CHANNEL_SHIFT          5
-typedef enum {
-    ADC0_SE4b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 4,
-    ADC0_SE5b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 5,
-    ADC0_SE6b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 6,
-    ADC0_SE7b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 7,
-    ADC0_SE8  = (0 << ADC_INSTANCE_SHIFT) | 8,
-    ADC0_SE9  = (0 << ADC_INSTANCE_SHIFT) | 9,
-    ADC0_SE12 = (0 << ADC_INSTANCE_SHIFT) | 12,
-    ADC0_SE13 = (0 << ADC_INSTANCE_SHIFT) | 13,
-    ADC0_SE14 = (0 << ADC_INSTANCE_SHIFT) | 14,
-    ADC0_SE15 = (0 << ADC_INSTANCE_SHIFT) | 15,
-    ADC0_SE16 = (0 << ADC_INSTANCE_SHIFT) | 16,
-    ADC0_SE17 = (0 << ADC_INSTANCE_SHIFT) | 17,
-    ADC0_SE18 = (0 << ADC_INSTANCE_SHIFT) | 18,
-    ADC0_SE21 = (0 << ADC_INSTANCE_SHIFT) | 21,
-    ADC0_SE22 = (0 << ADC_INSTANCE_SHIFT) | 22,
-    ADC0_SE23 = (0 << ADC_INSTANCE_SHIFT) | 23,
-    ADC1_SE4a = (1 << ADC_INSTANCE_SHIFT) | 4,
-    ADC1_SE5a = (1 << ADC_INSTANCE_SHIFT) | 5,
-    ADC1_SE6a = (1 << ADC_INSTANCE_SHIFT) | 6,
-    ADC1_SE7a = (1 << ADC_INSTANCE_SHIFT) | 7,
-    ADC1_SE4b = (1 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 4,
-    ADC1_SE5b = (1 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 5,
-    ADC1_SE6b = (1 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 6,
-    ADC1_SE7b = (1 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 7,
-    ADC1_SE8  = (1 << ADC_INSTANCE_SHIFT) | 8,
-    ADC1_SE9  = (1 << ADC_INSTANCE_SHIFT) | 9,
-    ADC1_SE12 = (1 << ADC_INSTANCE_SHIFT) | 12,
-    ADC1_SE13 = (1 << ADC_INSTANCE_SHIFT) | 13,
-    ADC1_SE14 = (1 << ADC_INSTANCE_SHIFT) | 14,
-    ADC1_SE15 = (1 << ADC_INSTANCE_SHIFT) | 15,
-    ADC1_SE16 = (1 << ADC_INSTANCE_SHIFT) | 16,
-    ADC1_SE17 = (1 << ADC_INSTANCE_SHIFT) | 17,
-    ADC1_SE18 = (1 << ADC_INSTANCE_SHIFT) | 18,
-    ADC1_SE23 = (1 << ADC_INSTANCE_SHIFT) | 23,
-} ADCName;
-
-typedef enum {
-    DAC_0 = 0
-} DACName;
-
-
-typedef enum {
-    SPI_0 = 0,
-    SPI_1 = 1,
-    SPI_2 = 2,
-} SPIName;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_HEXIWEAR/PeripheralPins.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,165 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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.
- */
-
-#include "PeripheralPins.h"
-
-/************RTC***************/
-const PinMap PinMap_RTC[] = {
-    {NC, OSC32KCLK, 0},
-};
-
-/************ADC***************/
-const PinMap PinMap_ADC[] = {
-    {PTA17, ADC1_SE17, 0},
-    {PTB0 , ADC0_SE8 , 0},
-    {PTB1 , ADC0_SE9 , 0},
-    {PTB2 , ADC0_SE12, 0},
-    {PTB3 , ADC0_SE13, 0},
-    {PTB6 , ADC1_SE12, 0},
-    {PTB7 , ADC1_SE13, 0},
-    {PTB10, ADC1_SE14, 0},
-    {PTB11, ADC1_SE15, 0},
-    {PTC0 , ADC0_SE14, 0},
-    {PTC1 , ADC0_SE15, 0},
-    {PTC2,  ADC0_SE4b, 0},
-    {PTC8,  ADC1_SE4b, 0},
-    {PTC9,  ADC1_SE5b, 0},
-    {PTC10, ADC1_SE6b, 0},
-    {PTC11, ADC1_SE7b, 0},
-    {PTD1,  ADC0_SE5b, 0},
-    {PTD5,  ADC0_SE6b, 0},
-    {PTD6,  ADC0_SE7b, 0},
-    {PTE0,  ADC1_SE4a, 0},
-    {PTE1,  ADC1_SE5a, 0},
-    {PTE2,  ADC1_SE6a, 0},
-    {PTE3,  ADC1_SE7a, 0},
-    //{PTE24, ADC0_SE17, 0}, //I2C pull up
-    //{PTE25, ADC0_SE18, 0}, //I2C pull up
-    {NC   , NC       , 0}
-};
-
-/************DAC***************/
-const PinMap PinMap_DAC[] = {
-    {DAC0_OUT, DAC_0, 0},
-    {NC      , NC   , 0}
-};
-
-/************I2C***************/
-const PinMap PinMap_I2C_SDA[] = {
-    {PTD9 , I2C_0, 2},
-    {PTC11, I2C_1, 2},
-    {NC   , NC   , 0}
-};
-
-const PinMap PinMap_I2C_SCL[] = {
-    {PTD8 , I2C_0, 2},
-    {PTC10, I2C_1, 2},
-    {NC   , NC   , 0}
-};
-
-/************UART***************/
-const PinMap PinMap_UART_TX[] = {
-    {PTB17, UART_0, 3},
-    {PTC17, UART_3, 3},
-    {PTD3 , UART_2, 3},
-    {PTE24, UART_4, 3},
-    {NC  ,  NC    , 0}
-};
-
-const PinMap PinMap_UART_RX[] = {
-    {PTB16, UART_0, 3},
-    {PTE25, UART_4, 3},
-    {PTC16, UART_3, 3},
-    {PTD2 , UART_2, 3},
-    {NC  ,  NC    , 0}
-};
-
-/************SPI***************/
-const PinMap PinMap_SPI_SCLK[] = {
-    {PTB21, SPI_2, 2},
-    {PTC5 , SPI_0, 2},
-    {PTD5 , SPI_1, 7},
-    {NC   , NC   , 0}
-};
-
-const PinMap PinMap_SPI_MOSI[] = {
-    {PTB22, SPI_2, 2},
-    {PTC6 , SPI_0, 2},
-    {PTD6 , SPI_1, 7},
-    {NC   , NC   , 0}
-};
-
-const PinMap PinMap_SPI_MISO[] = {
-    {PTB23, SPI_2, 2},
-    {PTC7 , SPI_0, 2},
-    {PTD7 , SPI_1, 7},
-    {NC   , NC   , 0}
-};
-
-const PinMap PinMap_SPI_SSEL[] = {
-    {PTB20, SPI_2, 2},
-    {PTC4 , SPI_0, 2},
-    {PTD4 , SPI_1, 7},
-    {NC   , NC   , 0}
-};
-
-/************PWM***************/
-const PinMap PinMap_PWM[] = {
-    {PTA0 , PWM_6 , 3},
-    {PTA1 , PWM_7 , 3},
-    {PTA2 , PWM_8 , 3},
-    {PTA3 , PWM_1 , 3},
-    {PTA4 , PWM_2 , 3},
-    {PTA5 , PWM_3 , 3},
-    {PTA6 , PWM_4 , 3},
-    {PTA7 , PWM_5 , 3},
-    {PTA8 , PWM_9 , 3},
-    {PTA9 , PWM_10, 3},
-    {PTA10, PWM_17, 3},
-    {PTA11, PWM_18, 3},
-    {PTA12, PWM_9 , 3},
-    {PTA13, PWM_10, 3},
-
-    {PTB0 , PWM_9 , 3},
-    {PTB1 , PWM_10, 3},
-    {PTB18, PWM_17, 3},
-    {PTB19, PWM_18, 3},
-
-    {PTC1 , PWM_1 , 4},
-    {PTC2 , PWM_2 , 4},
-    {PTC3 , PWM_3 , 4},
-    {PTC4 , PWM_4 , 4},
-    {PTC5 , PWM_3 , 7},
-    {PTC8 , PWM_29, 3},
-    {PTC9 , PWM_30, 3},
-    {PTC10, PWM_31, 3},
-    {PTC11, PWM_32, 3},
-
-    {PTD0 , PWM_25, 4},
-    {PTD1 , PWM_26, 4},
-    {PTD2 , PWM_27, 4},
-    {PTD3 , PWM_28, 4},
-    {PTD4 , PWM_5 , 4},
-    {PTD5 , PWM_6 , 4},
-    {PTD6 , PWM_7 , 4},
-    {PTD4 , PWM_5 , 4},
-    {PTD7 , PWM_8 , 4},
-
-    {PTE5 , PWM_25, 6},
-    {PTE6 , PWM_26, 6},
-
-    {NC   , NC    , 0}
-};
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_HEXIWEAR/PinNames.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,229 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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 MBED_PINNAMES_H
-#define MBED_PINNAMES_H
-
-#include "cmsis.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
-    PIN_INPUT,
-    PIN_OUTPUT
-} PinDirection;
-
-#define GPIO_PORT_SHIFT 12
-
-typedef enum {
-    PTA0  = (0 << GPIO_PORT_SHIFT | 0 ),
-    PTA1  = (0 << GPIO_PORT_SHIFT | 1 ),
-    PTA2  = (0 << GPIO_PORT_SHIFT | 2 ),
-    PTA3  = (0 << GPIO_PORT_SHIFT | 3 ),
-    PTA4  = (0 << GPIO_PORT_SHIFT | 4 ),
-    PTA5  = (0 << GPIO_PORT_SHIFT | 5 ),
-    PTA6  = (0 << GPIO_PORT_SHIFT | 6 ),
-    PTA7  = (0 << GPIO_PORT_SHIFT | 7 ),
-    PTA8  = (0 << GPIO_PORT_SHIFT | 8 ),
-    PTA9  = (0 << GPIO_PORT_SHIFT | 9 ),
-    PTA10 = (0 << GPIO_PORT_SHIFT | 10),
-    PTA11 = (0 << GPIO_PORT_SHIFT | 11),
-    PTA12 = (0 << GPIO_PORT_SHIFT | 12),
-    PTA13 = (0 << GPIO_PORT_SHIFT | 13),
-    PTA14 = (0 << GPIO_PORT_SHIFT | 14),
-    PTA15 = (0 << GPIO_PORT_SHIFT | 15),
-    PTA16 = (0 << GPIO_PORT_SHIFT | 16),
-    PTA17 = (0 << GPIO_PORT_SHIFT | 17),
-    PTA18 = (0 << GPIO_PORT_SHIFT | 18),
-    PTA19 = (0 << GPIO_PORT_SHIFT | 19),
-    PTA20 = (0 << GPIO_PORT_SHIFT | 20),
-    PTA21 = (0 << GPIO_PORT_SHIFT | 21),
-    PTA22 = (0 << GPIO_PORT_SHIFT | 22),
-    PTA23 = (0 << GPIO_PORT_SHIFT | 23),
-    PTA24 = (0 << GPIO_PORT_SHIFT | 24),
-    PTA25 = (0 << GPIO_PORT_SHIFT | 25),
-    PTA26 = (0 << GPIO_PORT_SHIFT | 26),
-    PTA27 = (0 << GPIO_PORT_SHIFT | 27),
-    PTA28 = (0 << GPIO_PORT_SHIFT | 28),
-    PTA29 = (0 << GPIO_PORT_SHIFT | 29),
-    PTA30 = (0 << GPIO_PORT_SHIFT | 30),
-    PTA31 = (0 << GPIO_PORT_SHIFT | 31),
-    PTB0  = (1 << GPIO_PORT_SHIFT | 0 ),
-    PTB1  = (1 << GPIO_PORT_SHIFT | 1 ),
-    PTB2  = (1 << GPIO_PORT_SHIFT | 2 ),
-    PTB3  = (1 << GPIO_PORT_SHIFT | 3 ),
-    PTB4  = (1 << GPIO_PORT_SHIFT | 4 ),
-    PTB5  = (1 << GPIO_PORT_SHIFT | 5 ),
-    PTB6  = (1 << GPIO_PORT_SHIFT | 6 ),
-    PTB7  = (1 << GPIO_PORT_SHIFT | 7 ),
-    PTB8  = (1 << GPIO_PORT_SHIFT | 8 ),
-    PTB9  = (1 << GPIO_PORT_SHIFT | 9 ),
-    PTB10 = (1 << GPIO_PORT_SHIFT | 10),
-    PTB11 = (1 << GPIO_PORT_SHIFT | 11),
-    PTB12 = (1 << GPIO_PORT_SHIFT | 12),
-    PTB13 = (1 << GPIO_PORT_SHIFT | 13),
-    PTB14 = (1 << GPIO_PORT_SHIFT | 14),
-    PTB15 = (1 << GPIO_PORT_SHIFT | 15),
-    PTB16 = (1 << GPIO_PORT_SHIFT | 16),
-    PTB17 = (1 << GPIO_PORT_SHIFT | 17),
-    PTB18 = (1 << GPIO_PORT_SHIFT | 18),
-    PTB19 = (1 << GPIO_PORT_SHIFT | 19),
-    PTB20 = (1 << GPIO_PORT_SHIFT | 20),
-    PTB21 = (1 << GPIO_PORT_SHIFT | 21),
-    PTB22 = (1 << GPIO_PORT_SHIFT | 22),
-    PTB23 = (1 << GPIO_PORT_SHIFT | 23),
-    PTB24 = (1 << GPIO_PORT_SHIFT | 24),
-    PTB25 = (1 << GPIO_PORT_SHIFT | 25),
-    PTB26 = (1 << GPIO_PORT_SHIFT | 26),
-    PTB27 = (1 << GPIO_PORT_SHIFT | 27),
-    PTB28 = (1 << GPIO_PORT_SHIFT | 28),
-    PTB29 = (1 << GPIO_PORT_SHIFT | 29),
-    PTB30 = (1 << GPIO_PORT_SHIFT | 30),
-    PTB31 = (1 << GPIO_PORT_SHIFT | 31),
-    PTC0  = (2 << GPIO_PORT_SHIFT | 0 ),
-    PTC1  = (2 << GPIO_PORT_SHIFT | 1 ),
-    PTC2  = (2 << GPIO_PORT_SHIFT | 2 ),
-    PTC3  = (2 << GPIO_PORT_SHIFT | 3 ),
-    PTC4  = (2 << GPIO_PORT_SHIFT | 4 ),
-    PTC5  = (2 << GPIO_PORT_SHIFT | 5 ),
-    PTC6  = (2 << GPIO_PORT_SHIFT | 6 ),
-    PTC7  = (2 << GPIO_PORT_SHIFT | 7 ),
-    PTC8  = (2 << GPIO_PORT_SHIFT | 8 ),
-    PTC9  = (2 << GPIO_PORT_SHIFT | 9 ),
-    PTC10 = (2 << GPIO_PORT_SHIFT | 10),
-    PTC11 = (2 << GPIO_PORT_SHIFT | 11),
-    PTC12 = (2 << GPIO_PORT_SHIFT | 12),
-    PTC13 = (2 << GPIO_PORT_SHIFT | 13),
-    PTC14 = (2 << GPIO_PORT_SHIFT | 14),
-    PTC15 = (2 << GPIO_PORT_SHIFT | 15),
-    PTC16 = (2 << GPIO_PORT_SHIFT | 16),
-    PTC17 = (2 << GPIO_PORT_SHIFT | 17),
-    PTC18 = (2 << GPIO_PORT_SHIFT | 18),
-    PTC19 = (2 << GPIO_PORT_SHIFT | 19),
-    PTC20 = (2 << GPIO_PORT_SHIFT | 20),
-    PTC21 = (2 << GPIO_PORT_SHIFT | 21),
-    PTC22 = (2 << GPIO_PORT_SHIFT | 22),
-    PTC23 = (2 << GPIO_PORT_SHIFT | 23),
-    PTC24 = (2 << GPIO_PORT_SHIFT | 24),
-    PTC25 = (2 << GPIO_PORT_SHIFT | 25),
-    PTC26 = (2 << GPIO_PORT_SHIFT | 26),
-    PTC27 = (2 << GPIO_PORT_SHIFT | 27),
-    PTC28 = (2 << GPIO_PORT_SHIFT | 28),
-    PTC29 = (2 << GPIO_PORT_SHIFT | 29),
-    PTC30 = (2 << GPIO_PORT_SHIFT | 30),
-    PTC31 = (2 << GPIO_PORT_SHIFT | 31),
-    PTD0  = (3 << GPIO_PORT_SHIFT | 0 ),
-    PTD1  = (3 << GPIO_PORT_SHIFT | 1 ),
-    PTD2  = (3 << GPIO_PORT_SHIFT | 2 ),
-    PTD3  = (3 << GPIO_PORT_SHIFT | 3 ),
-    PTD4  = (3 << GPIO_PORT_SHIFT | 4 ),
-    PTD5  = (3 << GPIO_PORT_SHIFT | 5 ),
-    PTD6  = (3 << GPIO_PORT_SHIFT | 6 ),
-    PTD7  = (3 << GPIO_PORT_SHIFT | 7 ),
-    PTD8  = (3 << GPIO_PORT_SHIFT | 8 ),
-    PTD9  = (3 << GPIO_PORT_SHIFT | 9 ),
-    PTD10 = (3 << GPIO_PORT_SHIFT | 10),
-    PTD11 = (3 << GPIO_PORT_SHIFT | 11),
-    PTD12 = (3 << GPIO_PORT_SHIFT | 12),
-    PTD13 = (3 << GPIO_PORT_SHIFT | 13),
-    PTD14 = (3 << GPIO_PORT_SHIFT | 14),
-    PTD15 = (3 << GPIO_PORT_SHIFT | 15),
-    PTD16 = (3 << GPIO_PORT_SHIFT | 16),
-    PTD17 = (3 << GPIO_PORT_SHIFT | 17),
-    PTD18 = (3 << GPIO_PORT_SHIFT | 18),
-    PTD19 = (3 << GPIO_PORT_SHIFT | 19),
-    PTD20 = (3 << GPIO_PORT_SHIFT | 20),
-    PTD21 = (3 << GPIO_PORT_SHIFT | 21),
-    PTD22 = (3 << GPIO_PORT_SHIFT | 22),
-    PTD23 = (3 << GPIO_PORT_SHIFT | 23),
-    PTD24 = (3 << GPIO_PORT_SHIFT | 24),
-    PTD25 = (3 << GPIO_PORT_SHIFT | 25),
-    PTD26 = (3 << GPIO_PORT_SHIFT | 26),
-    PTD27 = (3 << GPIO_PORT_SHIFT | 27),
-    PTD28 = (3 << GPIO_PORT_SHIFT | 28),
-    PTD29 = (3 << GPIO_PORT_SHIFT | 29),
-    PTD30 = (3 << GPIO_PORT_SHIFT | 30),
-    PTD31 = (3 << GPIO_PORT_SHIFT | 31),
-    PTE0  = (4 << GPIO_PORT_SHIFT | 0 ),
-    PTE1  = (4 << GPIO_PORT_SHIFT | 1 ),
-    PTE2  = (4 << GPIO_PORT_SHIFT | 2 ),
-    PTE3  = (4 << GPIO_PORT_SHIFT | 3 ),
-    PTE4  = (4 << GPIO_PORT_SHIFT | 4 ),
-    PTE5  = (4 << GPIO_PORT_SHIFT | 5 ),
-    PTE6  = (4 << GPIO_PORT_SHIFT | 6 ),
-    PTE7  = (4 << GPIO_PORT_SHIFT | 7 ),
-    PTE8  = (4 << GPIO_PORT_SHIFT | 8 ),
-    PTE9  = (4 << GPIO_PORT_SHIFT | 9 ),
-    PTE10 = (4 << GPIO_PORT_SHIFT | 10),
-    PTE11 = (4 << GPIO_PORT_SHIFT | 11),
-    PTE12 = (4 << GPIO_PORT_SHIFT | 12),
-    PTE13 = (4 << GPIO_PORT_SHIFT | 13),
-    PTE14 = (4 << GPIO_PORT_SHIFT | 14),
-    PTE15 = (4 << GPIO_PORT_SHIFT | 15),
-    PTE16 = (4 << GPIO_PORT_SHIFT | 16),
-    PTE17 = (4 << GPIO_PORT_SHIFT | 17),
-    PTE18 = (4 << GPIO_PORT_SHIFT | 18),
-    PTE19 = (4 << GPIO_PORT_SHIFT | 19),
-    PTE20 = (4 << GPIO_PORT_SHIFT | 20),
-    PTE21 = (4 << GPIO_PORT_SHIFT | 21),
-    PTE22 = (4 << GPIO_PORT_SHIFT | 22),
-    PTE23 = (4 << GPIO_PORT_SHIFT | 23),
-    PTE24 = (4 << GPIO_PORT_SHIFT | 24),
-    PTE25 = (4 << GPIO_PORT_SHIFT | 25),
-    PTE26 = (4 << GPIO_PORT_SHIFT | 26),
-    PTE27 = (4 << GPIO_PORT_SHIFT | 27),
-    PTE28 = (4 << GPIO_PORT_SHIFT | 28),
-    PTE29 = (4 << GPIO_PORT_SHIFT | 29),
-    PTE30 = (4 << GPIO_PORT_SHIFT | 30),
-    PTE31 = (4 << GPIO_PORT_SHIFT | 31),
-
-    LED_RED   = PTC8,
-    LED_GREEN = PTD0,
-    LED_BLUE  = PTC9,
-
-    // mbed original LED naming
-    LED1 = LED_RED,
-    LED2 = LED_GREEN,
-    LED3 = LED_BLUE,
-    LED4 = LED_RED,
-
-    // USB Pins
-    USBTX = PTB17,
-    USBRX = PTB16,
-
-    I2C_SCL = PTC10,
-    I2C_SDA = PTC11,
-
-    DAC0_OUT = 0xFEFE, /* DAC does not have Pin Name in RM */
-
-    // Not connected
-    NC = (int)0xFFFFFFFF
-} PinName;
-
-
-typedef enum {
-    PullNone = 0,
-    PullDown = 1,
-    PullUp   = 2,
-    PullDefault = PullUp
-} PinMode;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_HEXIWEAR/device.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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 MBED_DEVICE_H
-#define MBED_DEVICE_H
-
-#define DEVICE_PORTIN           1
-#define DEVICE_PORTOUT          1
-#define DEVICE_PORTINOUT        1
-
-#define DEVICE_INTERRUPTIN      1
-
-#define DEVICE_ANALOGIN         1
-#define DEVICE_ANALOGOUT        1
-
-#define DEVICE_SERIAL           1
-
-#define DEVICE_I2C              1
-#define DEVICE_I2CSLAVE         1
-
-#define DEVICE_SPI              1
-#define DEVICE_SPISLAVE         1
-
-#define DEVICE_CAN              0
-
-#define DEVICE_RTC              1
-
-#define DEVICE_ETHERNET         0
-
-#define DEVICE_PWMOUT           1
-
-#define DEVICE_SEMIHOST         0
-#define DEVICE_LOCALFILESYSTEM  0
-#define DEVICE_ID_LENGTH       24
-
-#define DEVICE_SLEEP            1
-
-#define DEVICE_DEBUG_AWARENESS  0
-
-#define DEVICE_STDIO_MESSAGES   1
-
-#define DEVICE_ERROR_RED        1
-
-#include "objects.h"
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_HEXIWEAR/fsl_clock_config.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_common.h"
-#include "fsl_smc.h"
-#include "fsl_clock_config.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-/*! @brief Clock configuration structure. */
-typedef struct _clock_config
-{
-    mcg_config_t mcgConfig;       /*!< MCG configuration.      */
-    sim_clock_config_t simConfig; /*!< SIM configuration.      */
-    osc_config_t oscConfig;       /*!< OSC configuration.      */
-    uint32_t coreClock;           /*!< core clock frequency.   */
-} clock_config_t;
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-/* System clock frequency. */
-extern uint32_t SystemCoreClock;
-
-/* Configuration for enter VLPR mode. Core clock = 4MHz. */
-const clock_config_t g_defaultClockConfigVlpr = {
-    .mcgConfig =
-        {
-            .mcgMode = kMCG_ModeBLPI,            /* Work in BLPI mode. */
-            .irclkEnableMode = kMCG_IrclkEnable, /* MCGIRCLK enable. */
-            .ircs = kMCG_IrcFast,                /* Select IRC4M. */
-            .fcrdiv = 0U,                        /* FCRDIV is 0. */
-
-            .frdiv = 0U,
-            .drs = kMCG_DrsLow,         /* Low frequency range. */
-            .dmx32 = kMCG_Dmx32Default, /* DCO has a default range of 25%. */
-            .oscsel = kMCG_OscselOsc,   /* Select OSC. */
-
-            .pll0Config =
-                {
-                    .enableMode = 0U, /* Don't eanble PLL. */
-                    .prdiv = 0U,
-                    .vdiv = 0U,
-                },
-        },
-    .simConfig =
-        {
-            .pllFllSel = 3U,        /* PLLFLLSEL select IRC48MCLK. */
-            .er32kSrc = 2U,         /* ERCLK32K selection, use RTC. */
-            .clkdiv1 = 0x00040000U, /* SIM_CLKDIV1. */
-        },
-    .oscConfig = {.freq = BOARD_XTAL0_CLK_HZ,
-                  .capLoad = 0,
-                  .workMode = kOSC_ModeOscLowPower,
-                  .oscerConfig =
-                      {
-                          .enableMode = kOSC_ErClkEnable,
-#if (defined(FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER) && FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER)
-                          .erclkDiv = 0U,
-#endif
-                      }},
-    .coreClock = 4000000U, /* Core clock frequency */
-};
-
-/* Configuration for enter RUN mode. Core clock = 120MHz. */
-const clock_config_t g_defaultClockConfigRun = {
-    .mcgConfig =
-        {
-            .mcgMode = kMCG_ModePEE,             /* Work in PEE mode. */
-            .irclkEnableMode = kMCG_IrclkEnable, /* MCGIRCLK enable. */
-            .ircs = kMCG_IrcSlow,                /* Select IRC32k. */
-            .fcrdiv = 0U,                        /* FCRDIV is 0. */
-
-            .frdiv = 7U,
-            .drs = kMCG_DrsLow,         /* Low frequency range. */
-            .dmx32 = kMCG_Dmx32Default, /* DCO has a default range of 25%. */
-            .oscsel = kMCG_OscselOsc,   /* Select OSC. */
-
-            .pll0Config =
-                {
-                    .enableMode = 0U, .prdiv = 0x13U, .vdiv = 0x18U,
-                },
-        },
-    .simConfig =
-        {
-            .pllFllSel = 1U,        /* PLLFLLSEL select PLL. */
-            .er32kSrc = 2U,         /* ERCLK32K selection, use RTC. */
-            .clkdiv1 = 0x01140000U, /* SIM_CLKDIV1. */
-        },
-    .oscConfig = {.freq = BOARD_XTAL0_CLK_HZ,
-                  .capLoad = 0,
-                  .workMode = kOSC_ModeOscLowPower,
-                  .oscerConfig =
-                      {
-                          .enableMode = kOSC_ErClkEnable,
-#if (defined(FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER) && FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER)
-                          .erclkDiv = 0U,
-#endif
-                      }},
-    .coreClock = 120000000U, /* Core clock frequency */
-};
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-/*
- * How to setup clock using clock driver functions:
- *
- * 1. CLOCK_SetSimSafeDivs, to make sure core clock, bus clock, flexbus clock
- *    and flash clock are in allowed range during clock mode switch.
- *
- * 2. Call CLOCK_Osc0Init to setup OSC clock, if it is used in target mode.
- *
- * 3. Set MCG configuration, MCG includes three parts: FLL clock, PLL clock and
- *    internal reference clock(MCGIRCLK). Follow the steps to setup:
- *
- *    1). Call CLOCK_BootToXxxMode to set MCG to target mode.
- *
- *    2). If target mode is FBI/BLPI/PBI mode, the MCGIRCLK has been configured
- *        correctly. For other modes, need to call CLOCK_SetInternalRefClkConfig
- *        explicitly to setup MCGIRCLK.
- *
- *    3). Don't need to configure FLL explicitly, because if target mode is FLL
- *        mode, then FLL has been configured by the function CLOCK_BootToXxxMode,
- *        if the target mode is not FLL mode, the FLL is disabled.
- *
- *    4). If target mode is PEE/PBE/PEI/PBI mode, then the related PLL has been
- *        setup by CLOCK_BootToXxxMode. In FBE/FBI/FEE/FBE mode, the PLL could
- *        be enabled independently, call CLOCK_EnablePll0 explicitly in this case.
- *
- * 4. Call CLOCK_SetSimConfig to set the clock configuration in SIM.
- */
-
-void BOARD_BootClockVLPR(void)
-{
-    CLOCK_SetSimSafeDivs();
-
-    CLOCK_BootToBlpiMode(g_defaultClockConfigVlpr.mcgConfig.fcrdiv, g_defaultClockConfigVlpr.mcgConfig.ircs,
-                         g_defaultClockConfigVlpr.mcgConfig.irclkEnableMode);
-
-    CLOCK_SetSimConfig(&g_defaultClockConfigVlpr.simConfig);
-
-    SystemCoreClock = g_defaultClockConfigVlpr.coreClock;
-
-    SMC_SetPowerModeProtection(SMC, kSMC_AllowPowerModeAll);
-    SMC_SetPowerModeVlpr(SMC, false);
-    while (SMC_GetPowerModeState(SMC) != kSMC_PowerStateVlpr)
-    {
-    }
-}
-
-void BOARD_BootClockRUN(void)
-{
-    CLOCK_SetSimSafeDivs();
-
-    CLOCK_InitOsc0(&g_defaultClockConfigRun.oscConfig);
-    CLOCK_SetXtal0Freq(BOARD_XTAL0_CLK_HZ);
-
-    CLOCK_BootToPeeMode(g_defaultClockConfigRun.mcgConfig.oscsel, kMCG_PllClkSelPll0,
-                        &g_defaultClockConfigRun.mcgConfig.pll0Config);
-
-    CLOCK_SetInternalRefClkConfig(g_defaultClockConfigRun.mcgConfig.irclkEnableMode,
-                                  g_defaultClockConfigRun.mcgConfig.ircs, g_defaultClockConfigRun.mcgConfig.fcrdiv);
-
-    CLOCK_SetSimConfig(&g_defaultClockConfigRun.simConfig);
-
-    SystemCoreClock = g_defaultClockConfigRun.coreClock;
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_HEXIWEAR/fsl_clock_config.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _CLOCK_CONFIG_H_
-#define _CLOCK_CONFIG_H_
-
-/*******************************************************************************
- * DEFINITION
- ******************************************************************************/
-#define BOARD_XTAL0_CLK_HZ 12000000U
-#define BOARD_XTAL32K_CLK_HZ 32768U
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-#if defined(__cplusplus)
-extern "C" {
-#endif /* __cplusplus*/
-
-void BOARD_BootClockVLPR(void);
-void BOARD_BootClockRUN(void);
-
-#if defined(__cplusplus)
-}
-#endif /* __cplusplus*/
-
-#endif /* _CLOCK_CONFIG_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_HEXIWEAR/mbed_overrides.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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.
- */
-#include "gpio_api.h"
-
-#include "fsl_clock_config.h"
-
-// called before main
-void mbed_sdk_init()
-{
-    BOARD_BootClockRUN();
-}
-
-// Enable the RTC oscillator if available on the board
-void rtc_setup_oscillator(RTC_Type *base)
-{
-    /* Enable the RTC oscillator */
-    RTC->CR |= RTC_CR_OSCE_MASK;
-}
-
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_MTS_GAMBIT/PeripheralNames.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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 MBED_PERIPHERALNAMES_H
-#define MBED_PERIPHERALNAMES_H
-
-#include "cmsis.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
-    OSC32KCLK = 0,
-} RTCName;
-
-typedef enum {
-    UART_0 = 0,
-    UART_2 = 2,
-    UART_3 = 3,
-    UART_5 = 5,
-} UARTName;
-
-#define STDIO_UART_TX     USBTX
-#define STDIO_UART_RX     USBRX
-#define STDIO_UART        UART_0
-
-typedef enum {
-    I2C_0 = 0,
-    I2C_1 = 1,
-} I2CName;
-
-
-#define TPM_SHIFT   8
-typedef enum {
-    PWM_1  = (0 << TPM_SHIFT) | (0),  // FTM0 CH0
-    PWM_2  = (0 << TPM_SHIFT) | (1),  // FTM0 CH1
-    PWM_3  = (0 << TPM_SHIFT) | (2),  // FTM0 CH2
-    PWM_4  = (0 << TPM_SHIFT) | (3),  // FTM0 CH3
-    PWM_5  = (0 << TPM_SHIFT) | (4),  // FTM0 CH4
-    PWM_6  = (0 << TPM_SHIFT) | (5),  // FTM0 CH5
-    PWM_7  = (0 << TPM_SHIFT) | (6),  // FTM0 CH6
-    PWM_8  = (0 << TPM_SHIFT) | (7),  // FTM0 CH7
-    PWM_9  = (1 << TPM_SHIFT) | (0),  // FTM1 CH0
-    PWM_10 = (1 << TPM_SHIFT) | (1),  // FTM1 CH1
-    PWM_11 = (1 << TPM_SHIFT) | (2),  // FTM1 CH2
-    PWM_12 = (1 << TPM_SHIFT) | (3),  // FTM1 CH3
-    PWM_13 = (1 << TPM_SHIFT) | (4),  // FTM1 CH4
-    PWM_14 = (1 << TPM_SHIFT) | (5),  // FTM1 CH5
-    PWM_15 = (1 << TPM_SHIFT) | (6),  // FTM1 CH6
-    PWM_16 = (1 << TPM_SHIFT) | (7),  // FTM1 CH7
-    PWM_17 = (2 << TPM_SHIFT) | (0),  // FTM2 CH0
-    PWM_18 = (2 << TPM_SHIFT) | (1),  // FTM2 CH1
-    PWM_19 = (2 << TPM_SHIFT) | (2),  // FTM2 CH2
-    PWM_20 = (2 << TPM_SHIFT) | (3),  // FTM2 CH3
-    PWM_21 = (2 << TPM_SHIFT) | (4),  // FTM2 CH4
-    PWM_22 = (2 << TPM_SHIFT) | (5),  // FTM2 CH5
-    PWM_23 = (2 << TPM_SHIFT) | (6),  // FTM2 CH6
-    PWM_24 = (2 << TPM_SHIFT) | (7),  // FTM2 CH7
-    // could be 4 or could be 3... not sure what register
-    //  this is for... too much abstraction
-    PWM_25 = (3 << TPM_SHIFT) | (0),  // FTM3 CH0
-    PWM_26 = (3 << TPM_SHIFT) | (1),  // FTM3 CH1
-    PWM_27 = (3 << TPM_SHIFT) | (2),  // FTM3 CH2
-    PWM_28 = (3 << TPM_SHIFT) | (3),  // FTM3 CH3
-    PWM_29 = (3 << TPM_SHIFT) | (4),  // FTM3 CH4
-    PWM_30 = (3 << TPM_SHIFT) | (5),  // FTM3 CH5
-    PWM_31 = (3 << TPM_SHIFT) | (6),  // FTM3 CH6
-    PWM_32 = (3 << TPM_SHIFT) | (7),  // FTM3 CH7
-} PWMName;
-
-
-
-#define ADC_INSTANCE_SHIFT           8
-#define ADC_B_CHANNEL_SHIFT          5
-typedef enum {
-    ADC0_SE4b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 4,
-    ADC0_SE5b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 5,
-    ADC0_SE6b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 6,
-    ADC0_SE7b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 7,
-    ADC0_SE8  = (0 << ADC_INSTANCE_SHIFT) | 8,
-    ADC0_SE9  = (0 << ADC_INSTANCE_SHIFT) | 9,
-    ADC0_SE12 = (0 << ADC_INSTANCE_SHIFT) | 12,
-    ADC0_SE13 = (0 << ADC_INSTANCE_SHIFT) | 13,
-    ADC0_SE14 = (0 << ADC_INSTANCE_SHIFT) | 14,
-    ADC0_SE15 = (0 << ADC_INSTANCE_SHIFT) | 15,
-    ADC0_SE16 = (0 << ADC_INSTANCE_SHIFT) | 16,
-    ADC0_SE17 = (0 << ADC_INSTANCE_SHIFT) | 17,
-    ADC0_SE18 = (0 << ADC_INSTANCE_SHIFT) | 18,
-    ADC1_SE4b = (1 << ADC_INSTANCE_SHIFT) | 4,
-    ADC1_SE5b = (1 << ADC_INSTANCE_SHIFT) | 5,
-    ADC1_SE6b = (1 << ADC_INSTANCE_SHIFT) | 6,
-    ADC1_SE7b = (1 << ADC_INSTANCE_SHIFT) | 7,
-    ADC1_SE8  = (1 << ADC_INSTANCE_SHIFT) | 8,
-    ADC1_SE9  = (1 << ADC_INSTANCE_SHIFT) | 9,
-    ADC1_SE12 = (1 << ADC_INSTANCE_SHIFT) | 12,
-    ADC1_SE13 = (1 << ADC_INSTANCE_SHIFT) | 13,
-    ADC1_SE14 = (1 << ADC_INSTANCE_SHIFT) | 14,
-    ADC1_SE15 = (1 << ADC_INSTANCE_SHIFT) | 15,
-    ADC1_SE16 = (1 << ADC_INSTANCE_SHIFT) | 16,
-    ADC1_SE17 = (1 << ADC_INSTANCE_SHIFT) | 17,
-    ADC1_SE18 = (1 << ADC_INSTANCE_SHIFT) | 18,
-} ADCName;
-
-
-
-typedef enum {
-    DAC_0 = 0
-} DACName;
-
-
-typedef enum {
-    SPI_0 = 0,
-    SPI_1 = 1,
-} SPIName;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_MTS_GAMBIT/PeripheralPins.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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.
- */
- 
-#include "PeripheralPins.h"
-
-/************RTC***************/
-const PinMap PinMap_RTC[] = {
-    {NC, OSC32KCLK, 0},
-};
-
-/************I2C***************/
-const PinMap PinMap_I2C_SDA[] = {
-    {PTE25, I2C_0, 5},
-    {PTB1 , I2C_0, 2},
-    {PTB3 , I2C_0, 2},
-    {PTC11, I2C_1, 2},
-    {PTD3 , I2C_0, 7},
-    {PTE0 , I2C_1, 6},
-    {NC   , NC   , 0}
-};
-
-const PinMap PinMap_I2C_SCL[] = {
-    {PTE24, I2C_0, 5},
-    {PTB0 , I2C_0, 2},
-    {PTB2 , I2C_0, 2},
-    {PTC10, I2C_1, 2},
-    {PTD2 , I2C_0, 7},
-    {PTE1 , I2C_1, 6},
-    {NC   , NC   , 0}
-};
-
-/************UART***************/
-const PinMap PinMap_UART_TX[] = {
-    {PTB17, UART_0, 3},
-    {PTC17, UART_3, 3},
-    {PTD7 , UART_0, 3},
-    {PTD3 , UART_2, 3},
-    {PTB11, UART_3, 3},
-    {PTA14, UART_0, 3},
-    {PTE4 , UART_3, 3},
-    {PTE8 , UART_5, 3},
-    {NC  ,  NC    , 0}
-};
-
-const PinMap PinMap_UART_RX[] = {
-    {PTB16, UART_0, 3},
-    {PTE5 , UART_3, 3},
-    {PTA15, UART_0, 3},
-    {PTC16, UART_3, 3},
-    {PTB10, UART_3, 3},
-    {PTD2 , UART_2, 3},
-    {PTC6 , UART_0, 3},
-    {PTE9 , UART_5, 3},
-    {NC  ,  NC    , 0}
-};
-
-/************SPI***************/
-const PinMap PinMap_SPI_SCLK[] = {
-    {PTD1 , SPI_0, 2},
-    {PTE2 , SPI_1, 2},
-    {PTA15, SPI_0, 2},
-    {PTB11, SPI_1, 2},
-    {PTC5 , SPI_0, 2},
-    {PTD5 , SPI_1, 7},
-    {NC   , NC   , 0}
-};
-
-const PinMap PinMap_SPI_MOSI[] = {
-    {PTD2 , SPI_0, 2},
-    {PTE1 , SPI_1, 2},
-    {PTE3 , SPI_1, 7},
-    {PTA16, SPI_0, 2},
-    {PTB16, SPI_1, 2},
-    {PTC6 , SPI_0, 2},
-    {PTD6 , SPI_1, 7},
-    {NC   , NC   , 0}
-};
-
-const PinMap PinMap_SPI_MISO[] = {
-    {PTD3 , SPI_0, 2},
-    {PTE1 , SPI_1, 7},
-    {PTE3 , SPI_1, 2},
-    {PTA17, SPI_0, 2},
-    {PTB17, SPI_1, 2},
-    {PTC7 , SPI_0, 2},
-    {PTD7 , SPI_1, 7},
-    {NC   , NC   , 0}
-};
-
-const PinMap PinMap_SPI_SSEL[] = {
-    {PTD0 , SPI_0, 2},
-    {PTE4 , SPI_1, 2},
-    {PTA14, SPI_0, 2},
-    {PTB10, SPI_1, 2},
-    {PTC4 , SPI_0, 2},
-    {PTD4 , SPI_1, 7},
-    {NC   , NC   , 0}
-};
-
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_MTS_GAMBIT/PinNames.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,268 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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 MBED_PINNAMES_H
-#define MBED_PINNAMES_H
-
-#include "cmsis.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
-    PIN_INPUT,
-    PIN_OUTPUT
-} PinDirection;
-
-#define GPIO_PORT_SHIFT 12
-
-typedef enum {
-    PTA0  = (0 << GPIO_PORT_SHIFT | 0 ),
-    PTA1  = (0 << GPIO_PORT_SHIFT | 1 ),
-    PTA2  = (0 << GPIO_PORT_SHIFT | 2 ),
-    PTA3  = (0 << GPIO_PORT_SHIFT | 3 ),
-    PTA4  = (0 << GPIO_PORT_SHIFT | 4 ),
-    PTA5  = (0 << GPIO_PORT_SHIFT | 5 ),
-    PTA6  = (0 << GPIO_PORT_SHIFT | 6 ),
-    PTA7  = (0 << GPIO_PORT_SHIFT | 7 ),
-    PTA8  = (0 << GPIO_PORT_SHIFT | 8 ),
-    PTA9  = (0 << GPIO_PORT_SHIFT | 9 ),
-    PTA10 = (0 << GPIO_PORT_SHIFT | 10),
-    PTA11 = (0 << GPIO_PORT_SHIFT | 11),
-    PTA12 = (0 << GPIO_PORT_SHIFT | 12),
-    PTA13 = (0 << GPIO_PORT_SHIFT | 13),
-    PTA14 = (0 << GPIO_PORT_SHIFT | 14),
-    PTA15 = (0 << GPIO_PORT_SHIFT | 15),
-    PTA16 = (0 << GPIO_PORT_SHIFT | 16),
-    PTA17 = (0 << GPIO_PORT_SHIFT | 17),
-    PTA18 = (0 << GPIO_PORT_SHIFT | 18),
-    PTA19 = (0 << GPIO_PORT_SHIFT | 19),
-    PTA20 = (0 << GPIO_PORT_SHIFT | 20),
-    PTA21 = (0 << GPIO_PORT_SHIFT | 21),
-    PTA22 = (0 << GPIO_PORT_SHIFT | 22),
-    PTA23 = (0 << GPIO_PORT_SHIFT | 23),
-    PTA24 = (0 << GPIO_PORT_SHIFT | 24),
-    PTA25 = (0 << GPIO_PORT_SHIFT | 25),
-    PTA26 = (0 << GPIO_PORT_SHIFT | 26),
-    PTA27 = (0 << GPIO_PORT_SHIFT | 27),
-    PTA28 = (0 << GPIO_PORT_SHIFT | 28),
-    PTA29 = (0 << GPIO_PORT_SHIFT | 29),
-    PTA30 = (0 << GPIO_PORT_SHIFT | 30),
-    PTA31 = (0 << GPIO_PORT_SHIFT | 31),
-    PTB0  = (1 << GPIO_PORT_SHIFT | 0 ),
-    PTB1  = (1 << GPIO_PORT_SHIFT | 1 ),
-    PTB2  = (1 << GPIO_PORT_SHIFT | 2 ),
-    PTB3  = (1 << GPIO_PORT_SHIFT | 3 ),
-    PTB4  = (1 << GPIO_PORT_SHIFT | 4 ),
-    PTB5  = (1 << GPIO_PORT_SHIFT | 5 ),
-    PTB6  = (1 << GPIO_PORT_SHIFT | 6 ),
-    PTB7  = (1 << GPIO_PORT_SHIFT | 7 ),
-    PTB8  = (1 << GPIO_PORT_SHIFT | 8 ),
-    PTB9  = (1 << GPIO_PORT_SHIFT | 9 ),
-    PTB10 = (1 << GPIO_PORT_SHIFT | 10),
-    PTB11 = (1 << GPIO_PORT_SHIFT | 11),
-    PTB12 = (1 << GPIO_PORT_SHIFT | 12),
-    PTB13 = (1 << GPIO_PORT_SHIFT | 13),
-    PTB14 = (1 << GPIO_PORT_SHIFT | 14),
-    PTB15 = (1 << GPIO_PORT_SHIFT | 15),
-    PTB16 = (1 << GPIO_PORT_SHIFT | 16),
-    PTB17 = (1 << GPIO_PORT_SHIFT | 17),
-    PTB18 = (1 << GPIO_PORT_SHIFT | 18),
-    PTB19 = (1 << GPIO_PORT_SHIFT | 19),
-    PTB20 = (1 << GPIO_PORT_SHIFT | 20),
-    PTB21 = (1 << GPIO_PORT_SHIFT | 21),
-    PTB22 = (1 << GPIO_PORT_SHIFT | 22),
-    PTB23 = (1 << GPIO_PORT_SHIFT | 23),
-    PTB24 = (1 << GPIO_PORT_SHIFT | 24),
-    PTB25 = (1 << GPIO_PORT_SHIFT | 25),
-    PTB26 = (1 << GPIO_PORT_SHIFT | 26),
-    PTB27 = (1 << GPIO_PORT_SHIFT | 27),
-    PTB28 = (1 << GPIO_PORT_SHIFT | 28),
-    PTB29 = (1 << GPIO_PORT_SHIFT | 29),
-    PTB30 = (1 << GPIO_PORT_SHIFT | 30),
-    PTB31 = (1 << GPIO_PORT_SHIFT | 31),
-    PTC0  = (2 << GPIO_PORT_SHIFT | 0 ),
-    PTC1  = (2 << GPIO_PORT_SHIFT | 1 ),
-    PTC2  = (2 << GPIO_PORT_SHIFT | 2 ),
-    PTC3  = (2 << GPIO_PORT_SHIFT | 3 ),
-    PTC4  = (2 << GPIO_PORT_SHIFT | 4 ),
-    PTC5  = (2 << GPIO_PORT_SHIFT | 5 ),
-    PTC6  = (2 << GPIO_PORT_SHIFT | 6 ),
-    PTC7  = (2 << GPIO_PORT_SHIFT | 7 ),
-    PTC8  = (2 << GPIO_PORT_SHIFT | 8 ),
-    PTC9  = (2 << GPIO_PORT_SHIFT | 9 ),
-    PTC10 = (2 << GPIO_PORT_SHIFT | 10),
-    PTC11 = (2 << GPIO_PORT_SHIFT | 11),
-    PTC12 = (2 << GPIO_PORT_SHIFT | 12),
-    PTC13 = (2 << GPIO_PORT_SHIFT | 13),
-    PTC14 = (2 << GPIO_PORT_SHIFT | 14),
-    PTC15 = (2 << GPIO_PORT_SHIFT | 15),
-    PTC16 = (2 << GPIO_PORT_SHIFT | 16),
-    PTC17 = (2 << GPIO_PORT_SHIFT | 17),
-    PTC18 = (2 << GPIO_PORT_SHIFT | 18),
-    PTC19 = (2 << GPIO_PORT_SHIFT | 19),
-    PTC20 = (2 << GPIO_PORT_SHIFT | 20),
-    PTC21 = (2 << GPIO_PORT_SHIFT | 21),
-    PTC22 = (2 << GPIO_PORT_SHIFT | 22),
-    PTC23 = (2 << GPIO_PORT_SHIFT | 23),
-    PTC24 = (2 << GPIO_PORT_SHIFT | 24),
-    PTC25 = (2 << GPIO_PORT_SHIFT | 25),
-    PTC26 = (2 << GPIO_PORT_SHIFT | 26),
-    PTC27 = (2 << GPIO_PORT_SHIFT | 27),
-    PTC28 = (2 << GPIO_PORT_SHIFT | 28),
-    PTC29 = (2 << GPIO_PORT_SHIFT | 29),
-    PTC30 = (2 << GPIO_PORT_SHIFT | 30),
-    PTC31 = (2 << GPIO_PORT_SHIFT | 31),
-    PTD0  = (3 << GPIO_PORT_SHIFT | 0 ),
-    PTD1  = (3 << GPIO_PORT_SHIFT | 1 ),
-    PTD2  = (3 << GPIO_PORT_SHIFT | 2 ),
-    PTD3  = (3 << GPIO_PORT_SHIFT | 3 ),
-    PTD4  = (3 << GPIO_PORT_SHIFT | 4 ),
-    PTD5  = (3 << GPIO_PORT_SHIFT | 5 ),
-    PTD6  = (3 << GPIO_PORT_SHIFT | 6 ),
-    PTD7  = (3 << GPIO_PORT_SHIFT | 7 ),
-    PTD8  = (3 << GPIO_PORT_SHIFT | 8 ),
-    PTD9  = (3 << GPIO_PORT_SHIFT | 9 ),
-    PTD10 = (3 << GPIO_PORT_SHIFT | 10),
-    PTD11 = (3 << GPIO_PORT_SHIFT | 11),
-    PTD12 = (3 << GPIO_PORT_SHIFT | 12),
-    PTD13 = (3 << GPIO_PORT_SHIFT | 13),
-    PTD14 = (3 << GPIO_PORT_SHIFT | 14),
-    PTD15 = (3 << GPIO_PORT_SHIFT | 15),
-    PTD16 = (3 << GPIO_PORT_SHIFT | 16),
-    PTD17 = (3 << GPIO_PORT_SHIFT | 17),
-    PTD18 = (3 << GPIO_PORT_SHIFT | 18),
-    PTD19 = (3 << GPIO_PORT_SHIFT | 19),
-    PTD20 = (3 << GPIO_PORT_SHIFT | 20),
-    PTD21 = (3 << GPIO_PORT_SHIFT | 21),
-    PTD22 = (3 << GPIO_PORT_SHIFT | 22),
-    PTD23 = (3 << GPIO_PORT_SHIFT | 23),
-    PTD24 = (3 << GPIO_PORT_SHIFT | 24),
-    PTD25 = (3 << GPIO_PORT_SHIFT | 25),
-    PTD26 = (3 << GPIO_PORT_SHIFT | 26),
-    PTD27 = (3 << GPIO_PORT_SHIFT | 27),
-    PTD28 = (3 << GPIO_PORT_SHIFT | 28),
-    PTD29 = (3 << GPIO_PORT_SHIFT | 29),
-    PTD30 = (3 << GPIO_PORT_SHIFT | 30),
-    PTD31 = (3 << GPIO_PORT_SHIFT | 31),
-    PTE0  = (4 << GPIO_PORT_SHIFT | 0 ),
-    PTE1  = (4 << GPIO_PORT_SHIFT | 1 ),
-    PTE2  = (4 << GPIO_PORT_SHIFT | 2 ),
-    PTE3  = (4 << GPIO_PORT_SHIFT | 3 ),
-    PTE4  = (4 << GPIO_PORT_SHIFT | 4 ),
-    PTE5  = (4 << GPIO_PORT_SHIFT | 5 ),
-    PTE6  = (4 << GPIO_PORT_SHIFT | 6 ),
-    PTE7  = (4 << GPIO_PORT_SHIFT | 7 ),
-    PTE8  = (4 << GPIO_PORT_SHIFT | 8 ),
-    PTE9  = (4 << GPIO_PORT_SHIFT | 9 ),
-    PTE10 = (4 << GPIO_PORT_SHIFT | 10),
-    PTE11 = (4 << GPIO_PORT_SHIFT | 11),
-    PTE12 = (4 << GPIO_PORT_SHIFT | 12),
-    PTE13 = (4 << GPIO_PORT_SHIFT | 13),
-    PTE14 = (4 << GPIO_PORT_SHIFT | 14),
-    PTE15 = (4 << GPIO_PORT_SHIFT | 15),
-    PTE16 = (4 << GPIO_PORT_SHIFT | 16),
-    PTE17 = (4 << GPIO_PORT_SHIFT | 17),
-    PTE18 = (4 << GPIO_PORT_SHIFT | 18),
-    PTE19 = (4 << GPIO_PORT_SHIFT | 19),
-    PTE20 = (4 << GPIO_PORT_SHIFT | 20),
-    PTE21 = (4 << GPIO_PORT_SHIFT | 21),
-    PTE22 = (4 << GPIO_PORT_SHIFT | 22),
-    PTE23 = (4 << GPIO_PORT_SHIFT | 23),
-    PTE24 = (4 << GPIO_PORT_SHIFT | 24),
-    PTE25 = (4 << GPIO_PORT_SHIFT | 25),
-    PTE26 = (4 << GPIO_PORT_SHIFT | 26),
-    PTE27 = (4 << GPIO_PORT_SHIFT | 27),
-    PTE28 = (4 << GPIO_PORT_SHIFT | 28),
-    PTE29 = (4 << GPIO_PORT_SHIFT | 29),
-    PTE30 = (4 << GPIO_PORT_SHIFT | 30),
-    PTE31 = (4 << GPIO_PORT_SHIFT | 31),
-
-    // led color naming
-    LED_GREEN = PTC0,
-
-    // mbed original LED naming
-    LED1 = PTD15,
-    LED2 = PTD14,
-    LED3 = PTD13,
-    LED4 = PTD11,
-    LED5 = PTD12,
-    STATUS = LED_GREEN,
-
-    // USB Pins
-    USBTX = PTB17,
-    USBRX = PTB16,
-
-    // SPI Pins
-    SPI0_SOUT = PTC6,
-    SPI0_SIN = PTC7,
-    SPI0_SCK = PTC5,
-
-    SPI1_SOUT = PTE3,
-    SPI1_SIN = PTE1,
-    SPI1_SCK = PTE2,
-
-    // SPI Chip Select Pins
-    SPI0_NCS0 = PTC4,
-    SPI0_NCS1 = PTC3,
-    SPI0_NCS2 = PTC2,
-    SPI0_NCS3 = PTC1,
-
-    SPI1_NCS0 = PTE4,
-    SPI1_NCS1 = PTE0,
-    SPI1_NCS2 = PTE5,
-    SPI1_NCS3 = PTE6,
-
-    // GPIO's
-    AP1_GPIO1 = PTB7,
-    AP1_GPIO2 = PTB6,
-    AP1_GPIO3 = PTB5,
-    AP1_GPIO4 = PTB4,
-
-    AP2_GPIO1 = PTA27,
-    AP2_GPIO2 = PTA26,
-    AP2_GPIO3 = PTA25,
-    AP2_GPIO4 = PTA24,
-
-    // Cellular Radio Serial Pins
-    RADIO_SERIAL_TX = PTE8,
-    RADIO_SERIAL_RX = PTE9,
-    RADIO_SERIAL_RTS = PTE11,
-    RADIO_SERIAL_CTS = PTE10,
-    RADIO_SERIAL_DTR = PTE26,
-    RADIO_SERIAL_DSR = PTE25,
-    RADIO_SERIAL_RI = PTE24,
-    RADIO_SERIAL_CD = PTE12,
-
-    DAC0_OUT = 0xFEFE, /* DAC does not have Pin Name in RM */
-
-    // Not connected
-    NC = (int)0xFFFFFFFF
-} PinName;
-
-
-typedef enum {
-    PullNone = 0,
-    PullDown = 1,
-    PullUp   = 2,
-    PullDefault = PullUp
-} PinMode;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_MTS_GAMBIT/device.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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 MBED_DEVICE_H
-#define MBED_DEVICE_H
-
-#define DEVICE_PORTIN           1
-#define DEVICE_PORTOUT          1
-#define DEVICE_PORTINOUT        1
-
-#define DEVICE_INTERRUPTIN      1
-
-#define DEVICE_ANALOGIN         0
-#define DEVICE_ANALOGOUT        0
-
-#define DEVICE_SERIAL           1
-
-#define DEVICE_I2C              1
-#define DEVICE_I2CSLAVE         1
-
-#define DEVICE_SPI              1
-#define DEVICE_SPISLAVE         1
-
-#define DEVICE_CAN              0
-
-#define DEVICE_RTC              1
-
-#define DEVICE_ETHERNET         0
-
-#define DEVICE_PWMOUT           0
-
-#define DEVICE_SEMIHOST         0
-#define DEVICE_LOCALFILESYSTEM  0
-#define DEVICE_ID_LENGTH       24
-
-#define DEVICE_SLEEP            1
-
-#define DEVICE_DEBUG_AWARENESS  0
-
-#define DEVICE_STDIO_MESSAGES   1
-
-#define DEVICE_ERROR_RED        0
-
-#include "objects.h"
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_MTS_GAMBIT/fsl_clock_config.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_common.h"
-#include "fsl_smc.h"
-#include "fsl_clock_config.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-/*! @brief Clock configuration structure. */
-typedef struct _clock_config
-{
-    mcg_config_t mcgConfig;       /*!< MCG configuration.      */
-    sim_clock_config_t simConfig; /*!< SIM configuration.      */
-    osc_config_t oscConfig;       /*!< OSC configuration.      */
-    uint32_t coreClock;           /*!< core clock frequency.   */
-} clock_config_t;
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-/* System clock frequency. */
-extern uint32_t SystemCoreClock;
-
-/* Configuration for enter VLPR mode. Core clock = 4MHz. */
-const clock_config_t g_defaultClockConfigVlpr = {
-    .mcgConfig =
-        {
-            .mcgMode = kMCG_ModeBLPI,            /* Work in BLPI mode. */
-            .irclkEnableMode = kMCG_IrclkEnable, /* MCGIRCLK enable. */
-            .ircs = kMCG_IrcFast,                /* Select IRC4M. */
-            .fcrdiv = 0U,                        /* FCRDIV is 0. */
-
-            .frdiv = 0U,
-            .drs = kMCG_DrsLow,         /* Low frequency range. */
-            .dmx32 = kMCG_Dmx32Default, /* DCO has a default range of 25%. */
-            .oscsel = kMCG_OscselOsc,   /* Select OSC. */
-
-            .pll0Config =
-                {
-                    .enableMode = 0U, /* Don't eanble PLL. */
-                    .prdiv = 0U,
-                    .vdiv = 0U,
-                },
-        },
-    .simConfig =
-        {
-            .pllFllSel = 3U,        /* PLLFLLSEL select IRC48MCLK. */
-            .er32kSrc = 2U,         /* ERCLK32K selection, use RTC. */
-            .clkdiv1 = 0x00040000U, /* SIM_CLKDIV1. */
-        },
-    .oscConfig = {.freq = BOARD_XTAL0_CLK_HZ,
-                  .capLoad = 0,
-                  .workMode = kOSC_ModeExt,
-                  .oscerConfig =
-                      {
-                          .enableMode = kOSC_ErClkEnable,
-#if (defined(FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER) && FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER)
-                          .erclkDiv = 0U,
-#endif
-                      }},
-    .coreClock = 4000000U, /* Core clock frequency */
-};
-
-/* Configuration for enter RUN mode. Core clock = 120MHz. */
-const clock_config_t g_defaultClockConfigRun = {
-    .mcgConfig =
-        {
-            .mcgMode = kMCG_ModePEE,             /* Work in PEE mode. */
-            .irclkEnableMode = kMCG_IrclkEnable, /* MCGIRCLK enable. */
-            .ircs = kMCG_IrcSlow,                /* Select IRC32k. */
-            .fcrdiv = 0U,                        /* FCRDIV is 0. */
-
-            .frdiv = 7U,
-            .drs = kMCG_DrsLow,         /* Low frequency range. */
-            .dmx32 = kMCG_Dmx32Default, /* DCO has a default range of 25%. */
-            .oscsel = kMCG_OscselOsc,   /* Select OSC. */
-
-            .pll0Config =
-                {
-                    .enableMode = 0U, .prdiv = 0x13U, .vdiv = 0x18U,
-                },
-        },
-    .simConfig =
-        {
-            .pllFllSel = 1U,        /* PLLFLLSEL select PLL. */
-            .er32kSrc = 2U,         /* ERCLK32K selection, use RTC. */
-            .clkdiv1 = 0x01140000U, /* SIM_CLKDIV1. */
-        },
-    .oscConfig = {.freq = BOARD_XTAL0_CLK_HZ,
-                  .capLoad = 0,
-                  .workMode = kOSC_ModeExt,
-                  .oscerConfig =
-                      {
-                          .enableMode = kOSC_ErClkEnable,
-#if (defined(FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER) && FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER)
-                          .erclkDiv = 0U,
-#endif
-                      }},
-    .coreClock = 120000000U, /* Core clock frequency */
-};
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-/*
- * How to setup clock using clock driver functions:
- *
- * 1. CLOCK_SetSimSafeDivs, to make sure core clock, bus clock, flexbus clock
- *    and flash clock are in allowed range during clock mode switch.
- *
- * 2. Call CLOCK_Osc0Init to setup OSC clock, if it is used in target mode.
- *
- * 3. Set MCG configuration, MCG includes three parts: FLL clock, PLL clock and
- *    internal reference clock(MCGIRCLK). Follow the steps to setup:
- *
- *    1). Call CLOCK_BootToXxxMode to set MCG to target mode.
- *
- *    2). If target mode is FBI/BLPI/PBI mode, the MCGIRCLK has been configured
- *        correctly. For other modes, need to call CLOCK_SetInternalRefClkConfig
- *        explicitly to setup MCGIRCLK.
- *
- *    3). Don't need to configure FLL explicitly, because if target mode is FLL
- *        mode, then FLL has been configured by the function CLOCK_BootToXxxMode,
- *        if the target mode is not FLL mode, the FLL is disabled.
- *
- *    4). If target mode is PEE/PBE/PEI/PBI mode, then the related PLL has been
- *        setup by CLOCK_BootToXxxMode. In FBE/FBI/FEE/FBE mode, the PLL could
- *        be enabled independently, call CLOCK_EnablePll0 explicitly in this case.
- *
- * 4. Call CLOCK_SetSimConfig to set the clock configuration in SIM.
- */
-
-void BOARD_BootClockVLPR(void)
-{
-    CLOCK_SetSimSafeDivs();
-
-    CLOCK_BootToBlpiMode(g_defaultClockConfigVlpr.mcgConfig.fcrdiv, g_defaultClockConfigVlpr.mcgConfig.ircs,
-                         g_defaultClockConfigVlpr.mcgConfig.irclkEnableMode);
-
-    CLOCK_SetSimConfig(&g_defaultClockConfigVlpr.simConfig);
-
-    SystemCoreClock = g_defaultClockConfigVlpr.coreClock;
-
-    SMC_SetPowerModeProtection(SMC, kSMC_AllowPowerModeAll);
-    SMC_SetPowerModeVlpr(SMC, false);
-    while (SMC_GetPowerModeState(SMC) != kSMC_PowerStateVlpr)
-    {
-    }
-}
-
-void BOARD_BootClockRUN(void)
-{
-    CLOCK_SetSimSafeDivs();
-
-    CLOCK_InitOsc0(&g_defaultClockConfigRun.oscConfig);
-    CLOCK_SetXtal0Freq(BOARD_XTAL0_CLK_HZ);
-
-    CLOCK_BootToPeeMode(g_defaultClockConfigRun.mcgConfig.oscsel, kMCG_PllClkSelPll0,
-                        &g_defaultClockConfigRun.mcgConfig.pll0Config);
-
-    CLOCK_SetInternalRefClkConfig(g_defaultClockConfigRun.mcgConfig.irclkEnableMode,
-                                  g_defaultClockConfigRun.mcgConfig.ircs, g_defaultClockConfigRun.mcgConfig.fcrdiv);
-
-    CLOCK_SetSimConfig(&g_defaultClockConfigRun.simConfig);
-
-    SystemCoreClock = g_defaultClockConfigRun.coreClock;
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_MTS_GAMBIT/fsl_clock_config.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _CLOCK_CONFIG_H_
-#define _CLOCK_CONFIG_H_
-
-/*******************************************************************************
- * DEFINITION
- ******************************************************************************/
-#define BOARD_XTAL0_CLK_HZ 50000000U
-#define BOARD_XTAL32K_CLK_HZ 32768U
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-#if defined(__cplusplus)
-extern "C" {
-#endif /* __cplusplus*/
-
-void BOARD_BootClockVLPR(void);
-void BOARD_BootClockRUN(void);
-
-#if defined(__cplusplus)
-}
-#endif /* __cplusplus*/
-
-#endif /* _CLOCK_CONFIG_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/TARGET_MTS_GAMBIT/mbed_overrides.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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.
- */
-#include "gpio_api.h"
-#include "fsl_clock_config.h"
-// called before main
-void mbed_sdk_init()
-{
-    BOARD_BootClockRUN();
-}
-
-// Enable the RTC oscillator if available on the board
-void rtc_setup_oscillator(RTC_Type *base)
-{
-    /* Enable the RTC oscillator */
-    RTC->CR |= RTC_CR_OSCE_MASK;
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_adc16.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,363 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_adc16.h"
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-/*!
- * @brief Get instance number for ADC16 module.
- *
- * @param base ADC16 peripheral base address
- */
-static uint32_t ADC16_GetInstance(ADC_Type *base);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-/*! @brief Pointers to ADC16 bases for each instance. */
-static ADC_Type *const s_adc16Bases[] = ADC_BASE_PTRS;
-
-/*! @brief Pointers to ADC16 clocks for each instance. */
-const clock_ip_name_t s_adc16Clocks[] = ADC16_CLOCKS;
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-static uint32_t ADC16_GetInstance(ADC_Type *base)
-{
-    uint32_t instance;
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < FSL_FEATURE_SOC_ADC16_COUNT; instance++)
-    {
-        if (s_adc16Bases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < FSL_FEATURE_SOC_ADC16_COUNT);
-
-    return instance;
-}
-
-void ADC16_Init(ADC_Type *base, const adc16_config_t *config)
-{
-    assert(NULL != config);
-
-    uint32_t tmp32;
-
-    /* Enable the clock. */
-    CLOCK_EnableClock(s_adc16Clocks[ADC16_GetInstance(base)]);
-
-    /* ADCx_CFG1. */
-    tmp32 = ADC_CFG1_ADICLK(config->clockSource) | ADC_CFG1_MODE(config->resolution);
-    if (kADC16_LongSampleDisabled != config->longSampleMode)
-    {
-        tmp32 |= ADC_CFG1_ADLSMP_MASK;
-    }
-    tmp32 |= ADC_CFG1_ADIV(config->clockDivider);
-    if (config->enableLowPower)
-    {
-        tmp32 |= ADC_CFG1_ADLPC_MASK;
-    }
-    base->CFG1 = tmp32;
-
-    /* ADCx_CFG2. */
-    tmp32 = base->CFG2 & ~(ADC_CFG2_ADACKEN_MASK | ADC_CFG2_ADHSC_MASK | ADC_CFG2_ADLSTS_MASK);
-    if (kADC16_LongSampleDisabled != config->longSampleMode)
-    {
-        tmp32 |= ADC_CFG2_ADLSTS(config->longSampleMode);
-    }
-    if (config->enableHighSpeed)
-    {
-        tmp32 |= ADC_CFG2_ADHSC_MASK;
-    }
-    if (config->enableAsynchronousClock)
-    {
-        tmp32 |= ADC_CFG2_ADACKEN_MASK;
-    }
-    base->CFG2 = tmp32;
-
-    /* ADCx_SC2. */
-    tmp32 = base->SC2 & ~(ADC_SC2_REFSEL_MASK);
-    tmp32 |= ADC_SC2_REFSEL(config->referenceVoltageSource);
-    base->SC2 = tmp32;
-
-    /* ADCx_SC3. */
-    if (config->enableContinuousConversion)
-    {
-        base->SC3 |= ADC_SC3_ADCO_MASK;
-    }
-    else
-    {
-        base->SC3 &= ~ADC_SC3_ADCO_MASK;
-    }
-}
-
-void ADC16_Deinit(ADC_Type *base)
-{
-    /* Disable the clock. */
-    CLOCK_DisableClock(s_adc16Clocks[ADC16_GetInstance(base)]);
-}
-
-void ADC16_GetDefaultConfig(adc16_config_t *config)
-{
-    assert(NULL != config);
-
-    config->referenceVoltageSource = kADC16_ReferenceVoltageSourceVref;
-    config->clockSource = kADC16_ClockSourceAsynchronousClock;
-    config->enableAsynchronousClock = true;
-    config->clockDivider = kADC16_ClockDivider8;
-    config->resolution = kADC16_ResolutionSE12Bit;
-    config->longSampleMode = kADC16_LongSampleDisabled;
-    config->enableHighSpeed = false;
-    config->enableLowPower = false;
-    config->enableContinuousConversion = false;
-}
-
-#if defined(FSL_FEATURE_ADC16_HAS_CALIBRATION) && FSL_FEATURE_ADC16_HAS_CALIBRATION
-status_t ADC16_DoAutoCalibration(ADC_Type *base)
-{
-    bool bHWTrigger = false;
-    uint32_t tmp32;
-    status_t status = kStatus_Success;
-
-    /* The calibration would be failed when in hardwar mode.
-     * Remember the hardware trigger state here and restore it later if the hardware trigger is enabled.*/
-    if (0U != (ADC_SC2_ADTRG_MASK & base->SC2))
-    {
-        bHWTrigger = true;
-        base->SC2 &= ~ADC_SC2_ADTRG_MASK;
-    }
-
-    /* Clear the CALF and launch the calibration. */
-    base->SC3 |= ADC_SC3_CAL_MASK | ADC_SC3_CALF_MASK;
-    while (0U == (kADC16_ChannelConversionDoneFlag & ADC16_GetChannelStatusFlags(base, 0U)))
-    {
-        /* Check the CALF when the calibration is active. */
-        if (0U != (kADC16_CalibrationFailedFlag & ADC16_GetStatusFlags(base)))
-        {
-            status = kStatus_Fail;
-            break;
-        }
-    }
-
-    /* Restore the hardware trigger setting if it was enabled before. */
-    if (bHWTrigger)
-    {
-        base->SC2 |= ADC_SC2_ADTRG_MASK;
-    }
-    /* Check the CALF at the end of calibration. */
-    if (0U != (kADC16_CalibrationFailedFlag & ADC16_GetStatusFlags(base)))
-    {
-        status = kStatus_Fail;
-    }
-    if (kStatus_Success != status) /* Check if the calibration process is succeed. */
-    {
-        return status;
-    }
-
-    /* Calculate the calibration values. */
-    tmp32 = base->CLP0 + base->CLP1 + base->CLP2 + base->CLP3 + base->CLP4 + base->CLPS;
-    tmp32 = 0x8000U | (tmp32 >> 1U);
-    base->PG = tmp32;
-
-#if defined(FSL_FEATURE_ADC16_HAS_DIFF_MODE) && FSL_FEATURE_ADC16_HAS_DIFF_MODE
-    tmp32 = base->CLM0 + base->CLM1 + base->CLM2 + base->CLM3 + base->CLM4 + base->CLMS;
-    tmp32 = 0x8000U | (tmp32 >> 1U);
-    base->MG = tmp32;
-#endif /* FSL_FEATURE_ADC16_HAS_DIFF_MODE */
-
-    return kStatus_Success;
-}
-#endif /* FSL_FEATURE_ADC16_HAS_CALIBRATION */
-
-#if defined(FSL_FEATURE_ADC16_HAS_MUX_SELECT) && FSL_FEATURE_ADC16_HAS_MUX_SELECT
-void ADC16_SetChannelMuxMode(ADC_Type *base, adc16_channel_mux_mode_t mode)
-{
-    if (kADC16_ChannelMuxA == mode)
-    {
-        base->CFG2 &= ~ADC_CFG2_MUXSEL_MASK;
-    }
-    else /* kADC16_ChannelMuxB. */
-    {
-        base->CFG2 |= ADC_CFG2_MUXSEL_MASK;
-    }
-}
-#endif /* FSL_FEATURE_ADC16_HAS_MUX_SELECT */
-
-void ADC16_SetHardwareCompareConfig(ADC_Type *base, const adc16_hardware_compare_config_t *config)
-{
-    uint32_t tmp32 = base->SC2 & ~(ADC_SC2_ACFE_MASK | ADC_SC2_ACFGT_MASK | ADC_SC2_ACREN_MASK);
-
-    if (!config) /* Pass "NULL" to disable the feature. */
-    {
-        base->SC2 = tmp32;
-        return;
-    }
-    /* Enable the feature. */
-    tmp32 |= ADC_SC2_ACFE_MASK;
-
-    /* Select the hardware compare working mode. */
-    switch (config->hardwareCompareMode)
-    {
-        case kADC16_HardwareCompareMode0:
-            break;
-        case kADC16_HardwareCompareMode1:
-            tmp32 |= ADC_SC2_ACFGT_MASK;
-            break;
-        case kADC16_HardwareCompareMode2:
-            tmp32 |= ADC_SC2_ACREN_MASK;
-            break;
-        case kADC16_HardwareCompareMode3:
-            tmp32 |= ADC_SC2_ACFGT_MASK | ADC_SC2_ACREN_MASK;
-            break;
-        default:
-            break;
-    }
-    base->SC2 = tmp32;
-
-    /* Load the compare values. */
-    base->CV1 = ADC_CV1_CV(config->value1);
-    base->CV2 = ADC_CV2_CV(config->value2);
-}
-
-#if defined(FSL_FEATURE_ADC16_HAS_HW_AVERAGE) && FSL_FEATURE_ADC16_HAS_HW_AVERAGE
-void ADC16_SetHardwareAverage(ADC_Type *base, adc16_hardware_average_mode_t mode)
-{
-    uint32_t tmp32 = base->SC3 & ~(ADC_SC3_AVGE_MASK | ADC_SC3_AVGS_MASK);
-
-    if (kADC16_HardwareAverageDisabled != mode)
-    {
-        tmp32 |= ADC_SC3_AVGE_MASK | ADC_SC3_AVGS(mode);
-    }
-    base->SC3 = tmp32;
-}
-#endif /* FSL_FEATURE_ADC16_HAS_HW_AVERAGE */
-
-#if defined(FSL_FEATURE_ADC16_HAS_PGA) && FSL_FEATURE_ADC16_HAS_PGA
-void ADC16_SetPGAConfig(ADC_Type *base, const adc16_pga_config_t *config)
-{
-    uint32_t tmp32;
-
-    if (!config) /* Passing "NULL" is to disable the feature. */
-    {
-        base->PGA = 0U;
-        return;
-    }
-
-    /* Enable the PGA and set the gain value. */
-    tmp32 = ADC_PGA_PGAEN_MASK | ADC_PGA_PGAG(config->pgaGain);
-
-    /* Configure the misc features for PGA. */
-    if (config->enableRunInNormalMode)
-    {
-        tmp32 |= ADC_PGA_PGALPb_MASK;
-    }
-#if defined(FSL_FEATURE_ADC16_HAS_PGA_CHOPPING) && FSL_FEATURE_ADC16_HAS_PGA_CHOPPING
-    if (config->disablePgaChopping)
-    {
-        tmp32 |= ADC_PGA_PGACHPb_MASK;
-    }
-#endif /* FSL_FEATURE_ADC16_HAS_PGA_CHOPPING */
-#if defined(FSL_FEATURE_ADC16_HAS_PGA_OFFSET_MEASUREMENT) && FSL_FEATURE_ADC16_HAS_PGA_OFFSET_MEASUREMENT
-    if (config->enableRunInOffsetMeasurement)
-    {
-        tmp32 |= ADC_PGA_PGAOFSM_MASK;
-    }
-#endif /* FSL_FEATURE_ADC16_HAS_PGA_OFFSET_MEASUREMENT */
-    base->PGA = tmp32;
-}
-#endif /* FSL_FEATURE_ADC16_HAS_PGA */
-
-uint32_t ADC16_GetStatusFlags(ADC_Type *base)
-{
-    uint32_t ret = 0;
-
-    if (0U != (base->SC2 & ADC_SC2_ADACT_MASK))
-    {
-        ret |= kADC16_ActiveFlag;
-    }
-#if defined(FSL_FEATURE_ADC16_HAS_CALIBRATION) && FSL_FEATURE_ADC16_HAS_CALIBRATION
-    if (0U != (base->SC3 & ADC_SC3_CALF_MASK))
-    {
-        ret |= kADC16_CalibrationFailedFlag;
-    }
-#endif /* FSL_FEATURE_ADC16_HAS_CALIBRATION */
-    return ret;
-}
-
-void ADC16_ClearStatusFlags(ADC_Type *base, uint32_t mask)
-{
-#if defined(FSL_FEATURE_ADC16_HAS_CALIBRATION) && FSL_FEATURE_ADC16_HAS_CALIBRATION
-    if (0U != (mask & kADC16_CalibrationFailedFlag))
-    {
-        base->SC3 |= ADC_SC3_CALF_MASK;
-    }
-#endif /* FSL_FEATURE_ADC16_HAS_CALIBRATION */
-}
-
-void ADC16_SetChannelConfig(ADC_Type *base, uint32_t channelGroup, const adc16_channel_config_t *config)
-{
-    assert(channelGroup < ADC_SC1_COUNT);
-    assert(NULL != config);
-
-    uint32_t sc1 = ADC_SC1_ADCH(config->channelNumber); /* Set the channel number. */
-
-#if defined(FSL_FEATURE_ADC16_HAS_DIFF_MODE) && FSL_FEATURE_ADC16_HAS_DIFF_MODE
-    /* Enable the differential conversion. */
-    if (config->enableDifferentialConversion)
-    {
-        sc1 |= ADC_SC1_DIFF_MASK;
-    }
-#endif /* FSL_FEATURE_ADC16_HAS_DIFF_MODE */
-    /* Enable the interrupt when the conversion is done. */
-    if (config->enableInterruptOnConversionCompleted)
-    {
-        sc1 |= ADC_SC1_AIEN_MASK;
-    }
-    base->SC1[channelGroup] = sc1;
-}
-
-uint32_t ADC16_GetChannelStatusFlags(ADC_Type *base, uint32_t channelGroup)
-{
-    assert(channelGroup < ADC_SC1_COUNT);
-
-    uint32_t ret = 0U;
-
-    if (0U != (base->SC1[channelGroup] & ADC_SC1_COCO_MASK))
-    {
-        ret |= kADC16_ChannelConversionDoneFlag;
-    }
-    return ret;
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_adc16.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,527 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _FSL_ADC16_H_
-#define _FSL_ADC16_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup adc16
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief ADC16 driver version 2.0.0. */
-#define FSL_ADC16_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
-/*@}*/
-
-/*!
- * @brief Channel status flags.
- */
-enum _adc16_channel_status_flags
-{
-    kADC16_ChannelConversionDoneFlag = ADC_SC1_COCO_MASK, /*!< Conversion done. */
-};
-
-/*!
- * @brief Converter status flags.
- */
-enum _adc16_status_flags
-{
-    kADC16_ActiveFlag = ADC_SC2_ADACT_MASK, /*!< Converter is active. */
-#if defined(FSL_FEATURE_ADC16_HAS_CALIBRATION) && FSL_FEATURE_ADC16_HAS_CALIBRATION
-    kADC16_CalibrationFailedFlag = ADC_SC3_CALF_MASK, /*!< Calibration is failed. */
-#endif                                                /* FSL_FEATURE_ADC16_HAS_CALIBRATION */
-};
-
-#if defined(FSL_FEATURE_ADC16_HAS_MUX_SELECT) && FSL_FEATURE_ADC16_HAS_MUX_SELECT
-/*!
- * @brief Channel multiplexer mode for each channel.
- *
- * For some ADC16 channels, there are two pin selections in channel multiplexer. For example, ADC0_SE4a and ADC0_SE4b
- * are the different channels but share the same channel number.
- */
-typedef enum _adc_channel_mux_mode
-{
-    kADC16_ChannelMuxA = 0U, /*!< For channel with channel mux a. */
-    kADC16_ChannelMuxB = 1U, /*!< For channel with channel mux b. */
-} adc16_channel_mux_mode_t;
-#endif /* FSL_FEATURE_ADC16_HAS_MUX_SELECT */
-
-/*!
- * @brief Clock divider for the converter.
- */
-typedef enum _adc16_clock_divider
-{
-    kADC16_ClockDivider1 = 0U, /*!< For divider 1 from the input clock to the module. */
-    kADC16_ClockDivider2 = 1U, /*!< For divider 2 from the input clock to the module. */
-    kADC16_ClockDivider4 = 2U, /*!< For divider 4 from the input clock to the module. */
-    kADC16_ClockDivider8 = 3U, /*!< For divider 8 from the input clock to the module. */
-} adc16_clock_divider_t;
-
-/*!
- *@brief Converter's resolution.
- */
-typedef enum _adc16_resolution
-{
-    /* This group of enumeration is for internal use which is related to register setting. */
-    kADC16_Resolution8or9Bit = 0U,   /*!< Single End 8-bit or Differential Sample 9-bit. */
-    kADC16_Resolution12or13Bit = 1U, /*!< Single End 12-bit or Differential Sample 13-bit. */
-    kADC16_Resolution10or11Bit = 2U, /*!< Single End 10-bit or Differential Sample 11-bit. */
-
-    /* This group of enumeration is for public user. */
-    kADC16_ResolutionSE8Bit = kADC16_Resolution8or9Bit,    /*!< Single End 8-bit. */
-    kADC16_ResolutionSE12Bit = kADC16_Resolution12or13Bit, /*!< Single End 12-bit. */
-    kADC16_ResolutionSE10Bit = kADC16_Resolution10or11Bit, /*!< Single End 10-bit. */
-#if defined(FSL_FEATURE_ADC16_HAS_DIFF_MODE) && FSL_FEATURE_ADC16_HAS_DIFF_MODE
-    kADC16_ResolutionDF9Bit = kADC16_Resolution8or9Bit,    /*!< Differential Sample 9-bit. */
-    kADC16_ResolutionDF13Bit = kADC16_Resolution12or13Bit, /*!< Differential Sample 13-bit. */
-    kADC16_ResolutionDF11Bit = kADC16_Resolution10or11Bit, /*!< Differential Sample 11-bit. */
-#endif                                                     /* FSL_FEATURE_ADC16_HAS_DIFF_MODE */
-
-#if defined(FSL_FEATURE_ADC16_MAX_RESOLUTION) && (FSL_FEATURE_ADC16_MAX_RESOLUTION >= 16U)
-    /* 16-bit is supported by default. */
-    kADC16_Resolution16Bit = 3U,                       /*!< Single End 16-bit or Differential Sample 16-bit. */
-    kADC16_ResolutionSE16Bit = kADC16_Resolution16Bit, /*!< Single End 16-bit. */
-#if defined(FSL_FEATURE_ADC16_HAS_DIFF_MODE) && FSL_FEATURE_ADC16_HAS_DIFF_MODE
-    kADC16_ResolutionDF16Bit = kADC16_Resolution16Bit, /*!< Differential Sample 16-bit. */
-#endif                                                 /* FSL_FEATURE_ADC16_HAS_DIFF_MODE */
-#endif                                                 /* FSL_FEATURE_ADC16_MAX_RESOLUTION >= 16U */
-} adc16_resolution_t;
-
-/*!
- * @brief Clock source.
- */
-typedef enum _adc16_clock_source
-{
-    kADC16_ClockSourceAlt0 = 0U, /*!< Selection 0 of the clock source. */
-    kADC16_ClockSourceAlt1 = 1U, /*!< Selection 1 of the clock source. */
-    kADC16_ClockSourceAlt2 = 2U, /*!< Selection 2 of the clock source. */
-    kADC16_ClockSourceAlt3 = 3U, /*!< Selection 3 of the clock source. */
-
-    /* Chip defined clock source */
-    kADC16_ClockSourceAsynchronousClock = kADC16_ClockSourceAlt3, /*!< Using internal asynchronous clock. */
-} adc16_clock_source_t;
-
-/*!
- * @brief Long sample mode.
- */
-typedef enum _adc16_long_sample_mode
-{
-    kADC16_LongSampleCycle24 = 0U,  /*!< 20 extra ADCK cycles, 24 ADCK cycles total. */
-    kADC16_LongSampleCycle16 = 1U,  /*!< 12 extra ADCK cycles, 16 ADCK cycles total. */
-    kADC16_LongSampleCycle10 = 2U,  /*!< 6 extra ADCK cycles, 10 ADCK cycles total. */
-    kADC16_LongSampleCycle6 = 3U,   /*!< 2 extra ADCK cycles, 6 ADCK cycles total. */
-    kADC16_LongSampleDisabled = 4U, /*!< Disable the long sample feature. */
-} adc16_long_sample_mode_t;
-
-/*!
- * @brief Reference voltage source.
- */
-typedef enum _adc16_reference_voltage_source
-{
-    kADC16_ReferenceVoltageSourceVref = 0U, /*!< For external pins pair of VrefH and VrefL. */
-    kADC16_ReferenceVoltageSourceValt = 1U, /*!< For alternate reference pair of ValtH and ValtL. */
-} adc16_reference_voltage_source_t;
-
-#if defined(FSL_FEATURE_ADC16_HAS_HW_AVERAGE) && FSL_FEATURE_ADC16_HAS_HW_AVERAGE
-/*!
- * @brief Hardware average mode.
- */
-typedef enum _adc16_hardware_average_mode
-{
-    kADC16_HardwareAverageCount4 = 0U,   /*!< For hardware average with 4 samples. */
-    kADC16_HardwareAverageCount8 = 1U,   /*!< For hardware average with 8 samples. */
-    kADC16_HardwareAverageCount16 = 2U,  /*!< For hardware average with 16 samples. */
-    kADC16_HardwareAverageCount32 = 3U,  /*!< For hardware average with 32 samples. */
-    kADC16_HardwareAverageDisabled = 4U, /*!< Disable the hardware average feature.*/
-} adc16_hardware_average_mode_t;
-#endif /* FSL_FEATURE_ADC16_HAS_HW_AVERAGE */
-
-/*!
- * @brief Hardware compare mode.
- */
-typedef enum _adc16_hardware_compare_mode
-{
-    kADC16_HardwareCompareMode0 = 0U, /*!< x < value1. */
-    kADC16_HardwareCompareMode1 = 1U, /*!< x > value1. */
-    kADC16_HardwareCompareMode2 = 2U, /*!< if value1 <= value2, then x < value1 || x > value2;
-                                           else, value1 > x > value2. */
-    kADC16_HardwareCompareMode3 = 3U, /*!< if value1 <= value2, then value1 <= x <= value2;
-                                           else x >= value1 || x <= value2. */
-} adc16_hardware_compare_mode_t;
-
-#if defined(FSL_FEATURE_ADC16_HAS_PGA) && FSL_FEATURE_ADC16_HAS_PGA
-/*!
- * @brief PGA's Gain mode.
- */
-typedef enum _adc16_pga_gain
-{
-    kADC16_PGAGainValueOf1 = 0U,  /*!< For amplifier gain of 1.  */
-    kADC16_PGAGainValueOf2 = 1U,  /*!< For amplifier gain of 2.  */
-    kADC16_PGAGainValueOf4 = 2U,  /*!< For amplifier gain of 4.  */
-    kADC16_PGAGainValueOf8 = 3U,  /*!< For amplifier gain of 8.  */
-    kADC16_PGAGainValueOf16 = 4U, /*!< For amplifier gain of 16. */
-    kADC16_PGAGainValueOf32 = 5U, /*!< For amplifier gain of 32. */
-    kADC16_PGAGainValueOf64 = 6U, /*!< For amplifier gain of 64. */
-} adc16_pga_gain_t;
-#endif /* FSL_FEATURE_ADC16_HAS_PGA */
-
-/*!
- * @brief ADC16 converter configuration .
- */
-typedef struct _adc16_config
-{
-    adc16_reference_voltage_source_t referenceVoltageSource; /*!< Select the reference voltage source. */
-    adc16_clock_source_t clockSource;                        /*!< Select the input clock source to converter. */
-    bool enableAsynchronousClock;                            /*!< Enable the asynchronous clock output. */
-    adc16_clock_divider_t clockDivider;                      /*!< Select the divider of input clock source. */
-    adc16_resolution_t resolution;                           /*!< Select the sample resolution mode. */
-    adc16_long_sample_mode_t longSampleMode;                 /*!< Select the long sample mode. */
-    bool enableHighSpeed;                                    /*!< Enable the high-speed mode. */
-    bool enableLowPower;                                     /*!< Enable low power. */
-    bool enableContinuousConversion;                         /*!< Enable continuous conversion mode. */
-} adc16_config_t;
-
-/*!
- * @brief ADC16 Hardware compare configuration.
- */
-typedef struct _adc16_hardware_compare_config
-{
-    adc16_hardware_compare_mode_t hardwareCompareMode; /*!< Select the hardware compare mode.
-                                                            See "adc16_hardware_compare_mode_t". */
-    int16_t value1;                                    /*!< Setting value1 for hardware compare mode. */
-    int16_t value2;                                    /*!< Setting value2 for hardware compare mode. */
-} adc16_hardware_compare_config_t;
-
-/*!
- * @brief ADC16 channel conversion configuration.
- */
-typedef struct _adc16_channel_config
-{
-    uint32_t channelNumber;                    /*!< Setting the conversion channel number. The available range is 0-31.
-                                                    See channel connection information for each chip in Reference
-                                                    Manual document. */
-    bool enableInterruptOnConversionCompleted; /*!< Generate a interrupt request once the conversion is completed. */
-#if defined(FSL_FEATURE_ADC16_HAS_DIFF_MODE) && FSL_FEATURE_ADC16_HAS_DIFF_MODE
-    bool enableDifferentialConversion; /*!< Using Differential sample mode. */
-#endif                                 /* FSL_FEATURE_ADC16_HAS_DIFF_MODE */
-} adc16_channel_config_t;
-
-#if defined(FSL_FEATURE_ADC16_HAS_PGA) && FSL_FEATURE_ADC16_HAS_PGA
-/*!
- * @brief ADC16 programmable gain amplifier configuration.
- */
-typedef struct _adc16_pga_config
-{
-    adc16_pga_gain_t pgaGain;   /*!< Setting PGA gain. */
-    bool enableRunInNormalMode; /*!< Enable PGA working in normal mode, or low power mode by default. */
-#if defined(FSL_FEATURE_ADC16_HAS_PGA_CHOPPING) && FSL_FEATURE_ADC16_HAS_PGA_CHOPPING
-    bool disablePgaChopping; /*!< Disable the PGA chopping function.
-                                  The PGA employs chopping to remove/reduce offset and 1/f noise and offers
-                                  an offset measurement configuration that aids the offset calibration. */
-#endif                       /* FSL_FEATURE_ADC16_HAS_PGA_CHOPPING */
-#if defined(FSL_FEATURE_ADC16_HAS_PGA_OFFSET_MEASUREMENT) && FSL_FEATURE_ADC16_HAS_PGA_OFFSET_MEASUREMENT
-    bool enableRunInOffsetMeasurement; /*!< Enable the PGA working in offset measurement mode.
-                                            When this feature is enabled, the PGA disconnects itself from the external
-                                            inputs and auto-configures into offset measurement mode. With this field
-                                            set, run the ADC in the recommended settings and enable the maximum hardware
-                                            averaging to get the PGA offset number. The output is the
-                                            (PGA offset * (64+1)) for the given PGA setting. */
-#endif                                 /* FSL_FEATURE_ADC16_HAS_PGA_OFFSET_MEASUREMENT */
-} adc16_pga_config_t;
-#endif /* FSL_FEATURE_ADC16_HAS_PGA */
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-/*!
- * @name Initialization
- * @{
- */
-
-/*!
- * @brief Initializes the ADC16 module.
- *
- * @param base   ADC16 peripheral base address.
- * @param config Pointer to configuration structure. See "adc16_config_t".
- */
-void ADC16_Init(ADC_Type *base, const adc16_config_t *config);
-
-/*!
- * @brief De-initializes the ADC16 module.
- *
- * @param base ADC16 peripheral base address.
- */
-void ADC16_Deinit(ADC_Type *base);
-
-/*!
- * @brief Gets an available pre-defined settings for converter's configuration.
- *
- * This function initializes the converter configuration structure with an available settings. The default values are:
- * @code
- *   config->referenceVoltageSource     = kADC16_ReferenceVoltageSourceVref;
- *   config->clockSource                = kADC16_ClockSourceAsynchronousClock;
- *   config->enableAsynchronousClock    = true;
- *   config->clockDivider               = kADC16_ClockDivider8;
- *   config->resolution                 = kADC16_ResolutionSE12Bit;
- *   config->longSampleMode             = kADC16_LongSampleDisabled;
- *   config->enableHighSpeed            = false;
- *   config->enableLowPower             = false;
- *   config->enableContinuousConversion = false;
- * @endcode
- * @param config Pointer to configuration structure.
- */
-void ADC16_GetDefaultConfig(adc16_config_t *config);
-
-#if defined(FSL_FEATURE_ADC16_HAS_CALIBRATION) && FSL_FEATURE_ADC16_HAS_CALIBRATION
-/*!
- * @brief  Automates the hardware calibration.
- *
- * This auto calibration helps to adjust the plus/minus side gain automatically on the converter's working situation.
- * Execute the calibration before using the converter. Note that the hardware trigger should be used
- * during calibration.
- *
- * @param  base ADC16 peripheral base address.
- *
- * @return                 Execution status.
- * @retval kStatus_Success Calibration is done successfully.
- * @retval kStatus_Fail    Calibration is failed.
- */
-status_t ADC16_DoAutoCalibration(ADC_Type *base);
-#endif /* FSL_FEATURE_ADC16_HAS_CALIBRATION */
-
-#if defined(FSL_FEATURE_ADC16_HAS_OFFSET_CORRECTION) && FSL_FEATURE_ADC16_HAS_OFFSET_CORRECTION
-/*!
- * @brief Sets the offset value for the conversion result.
- *
- * This offset value takes effect on the conversion result. If the offset value is not zero, the reading result
- * is subtracted by it. Note, the hardware calibration fills the offset value automatically.
- *
- * @param base  ADC16 peripheral base address.
- * @param value Setting offset value.
- */
-static inline void ADC16_SetOffsetValue(ADC_Type *base, int16_t value)
-{
-    base->OFS = (uint32_t)(value);
-}
-#endif /* FSL_FEATURE_ADC16_HAS_OFFSET_CORRECTION */
-
-/* @} */
-
-/*!
- * @name Advanced Feature
- * @{
- */
-
-#if defined(FSL_FEATURE_ADC16_HAS_DMA) && FSL_FEATURE_ADC16_HAS_DMA
-/*!
- * @brief Enables generating the DMA trigger when conversion is completed.
- *
- * @param base   ADC16 peripheral base address.
- * @param enable Switcher of DMA feature. "true" means to enable, "false" means not.
- */
-static inline void ADC16_EnableDMA(ADC_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->SC2 |= ADC_SC2_DMAEN_MASK;
-    }
-    else
-    {
-        base->SC2 &= ~ADC_SC2_DMAEN_MASK;
-    }
-}
-#endif /* FSL_FEATURE_ADC16_HAS_DMA */
-
-/*!
- * @brief Enables the hardware trigger mode.
- *
- * @param base   ADC16 peripheral base address.
- * @param enable Switcher of hardware trigger feature. "true" means to enable, "false" means not.
- */
-static inline void ADC16_EnableHardwareTrigger(ADC_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->SC2 |= ADC_SC2_ADTRG_MASK;
-    }
-    else
-    {
-        base->SC2 &= ~ADC_SC2_ADTRG_MASK;
-    }
-}
-
-#if defined(FSL_FEATURE_ADC16_HAS_MUX_SELECT) && FSL_FEATURE_ADC16_HAS_MUX_SELECT
-/*!
- * @brief Sets the channel mux mode.
- *
- * Some sample pins share the same channel index. The channel mux mode decides which pin is used for an
- * indicated channel.
- *
- * @param base ADC16 peripheral base address.
- * @param mode Setting channel mux mode. See "adc16_channel_mux_mode_t".
- */
-void ADC16_SetChannelMuxMode(ADC_Type *base, adc16_channel_mux_mode_t mode);
-#endif /* FSL_FEATURE_ADC16_HAS_MUX_SELECT */
-
-/*!
- * @brief Configures the hardware compare mode.
- *
- * The hardware compare mode provides a way to process the conversion result automatically by hardware. Only the result
- * in
- * compare range is available. To compare the range, see "adc16_hardware_compare_mode_t", or the reference
- * manual document for more detailed information.
- *
- * @param base     ADC16 peripheral base address.
- * @param config   Pointer to "adc16_hardware_compare_config_t" structure. Passing "NULL" is to disable the feature.
- */
-void ADC16_SetHardwareCompareConfig(ADC_Type *base, const adc16_hardware_compare_config_t *config);
-
-#if defined(FSL_FEATURE_ADC16_HAS_HW_AVERAGE) && FSL_FEATURE_ADC16_HAS_HW_AVERAGE
-/*!
- * @brief Sets the hardware average mode.
- *
- * Hardware average mode provides a way to process the conversion result automatically by hardware. The multiple
- * conversion results are accumulated and averaged internally. This aids  reading results.
- *
- * @param base  ADC16 peripheral base address.
- * @param mode  Setting hardware average mode. See "adc16_hardware_average_mode_t".
- */
-void ADC16_SetHardwareAverage(ADC_Type *base, adc16_hardware_average_mode_t mode);
-#endif /* FSL_FEATURE_ADC16_HAS_HW_AVERAGE */
-
-#if defined(FSL_FEATURE_ADC16_HAS_PGA) && FSL_FEATURE_ADC16_HAS_PGA
-/*!
- * @brief Configures the PGA for converter's front end.
- *
- * @param base    ADC16 peripheral base address.
- * @param config  Pointer to "adc16_pga_config_t" structure. Passing "NULL" is to disable the feature.
- */
-void ADC16_SetPGAConfig(ADC_Type *base, const adc16_pga_config_t *config);
-#endif /* FSL_FEATURE_ADC16_HAS_PGA */
-
-/*!
- * @brief  Gets the status flags of the converter.
- *
- * @param  base ADC16 peripheral base address.
- *
- * @return      Flags' mask if indicated flags are asserted. See "_adc16_status_flags".
- */
-uint32_t ADC16_GetStatusFlags(ADC_Type *base);
-
-/*!
- * @brief  Clears the status flags of the converter.
- *
- * @param  base ADC16 peripheral base address.
- * @param  mask Mask value for the cleared flags. See "_adc16_status_flags".
- */
-void ADC16_ClearStatusFlags(ADC_Type *base, uint32_t mask);
-
-/* @} */
-
-/*!
- * @name Conversion Channel
- * @{
- */
-
-/*!
- * @brief Configures the conversion channel.
- *
- * This operation triggers the conversion if in software trigger mode. When in hardware trigger mode, this API
- * configures the channel while the external trigger source helps to trigger the conversion.
- *
- * Note that the "Channel Group" has a detailed description.
- * To allow sequential conversions of the ADC to be triggered by internal peripherals, the ADC can have more than one
- * group of status and control register, one for each conversion. The channel group parameter indicates which group of
- * registers are used channel group 0 is for Group A registers and channel group 1 is for Group B registers.  The
- * channel groups are used in a "ping-pong" approach to control the ADC operation.  At any point, only one of
- * the channel groups is actively controlling ADC conversions. Channel group 0 is used for both software and hardware
- * trigger modes of operation. Channel groups 1 and greater indicate potentially multiple channel group registers for
- * use only in hardware trigger mode. See the chip configuration information in the MCU reference manual about the
- * number of SC1n registers (channel groups) specific to this device.  None of the channel groups 1 or greater are used
- * for software trigger operation and therefore writes to these channel groups do not initiate a new conversion.
- * Updating channel group 0 while a different channel group is actively controlling a conversion is allowed and
- * vice versa. Writing any of the channel group registers while that specific channel group is actively controlling a
- * conversion aborts the current conversion.
- *
- * @param base          ADC16 peripheral base address.
- * @param channelGroup  Channel group index.
- * @param config        Pointer to "adc16_channel_config_t" structure for conversion channel.
- */
-void ADC16_SetChannelConfig(ADC_Type *base, uint32_t channelGroup, const adc16_channel_config_t *config);
-
-/*!
- * @brief  Gets the conversion value.
- *
- * @param  base         ADC16 peripheral base address.
- * @param  channelGroup Channel group index.
- *
- * @return              Conversion value.
- */
-static inline uint32_t ADC16_GetChannelConversionValue(ADC_Type *base, uint32_t channelGroup)
-{
-    assert(channelGroup < ADC_R_COUNT);
-
-    return base->R[channelGroup];
-}
-
-/*!
- * @brief  Gets the status flags of channel.
- *
- * @param  base         ADC16 peripheral base address.
- * @param  channelGroup Channel group index.
- *
- * @return              Flags' mask if indicated flags are asserted. See "_adc16_channel_status_flags".
- */
-uint32_t ADC16_GetChannelStatusFlags(ADC_Type *base, uint32_t channelGroup);
-
-/* @} */
-
-#if defined(__cplusplus)
-}
-#endif
-/*!
- * @}
- */
-#endif /* _FSL_ADC16_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_clock.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1760 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_common.h"
-#include "fsl_clock.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/* Macro definition remap workaround. */
-#if (defined(MCG_C2_EREFS_MASK) && !(defined(MCG_C2_EREFS0_MASK)))
-#define MCG_C2_EREFS0_MASK MCG_C2_EREFS_MASK
-#endif
-#if (defined(MCG_C2_HGO_MASK) && !(defined(MCG_C2_HGO0_MASK)))
-#define MCG_C2_HGO0_MASK MCG_C2_HGO_MASK
-#endif
-#if (defined(MCG_C2_RANGE_MASK) && !(defined(MCG_C2_RANGE0_MASK)))
-#define MCG_C2_RANGE0_MASK MCG_C2_RANGE_MASK
-#endif
-#if (defined(MCG_C6_CME_MASK) && !(defined(MCG_C6_CME0_MASK)))
-#define MCG_C6_CME0_MASK MCG_C6_CME_MASK
-#endif
-
-/* PLL fixed multiplier when there is not PRDIV and VDIV. */
-#define PLL_FIXED_MULT (375U)
-/* Max frequency of the reference clock used for internal clock trim. */
-#define TRIM_REF_CLK_MIN (8000000U)
-/* Min frequency of the reference clock used for internal clock trim. */
-#define TRIM_REF_CLK_MAX (16000000U)
-/* Max trim value of fast internal reference clock. */
-#define TRIM_FIRC_MAX (5000000U)
-/* Min trim value of fast internal reference clock. */
-#define TRIM_FIRC_MIN (3000000U)
-/* Max trim value of fast internal reference clock. */
-#define TRIM_SIRC_MAX (39063U)
-/* Min trim value of fast internal reference clock. */
-#define TRIM_SIRC_MIN (31250U)
-
-#define MCG_S_IRCST_VAL ((MCG->S & MCG_S_IRCST_MASK) >> MCG_S_IRCST_SHIFT)
-#define MCG_S_CLKST_VAL ((MCG->S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT)
-#define MCG_S_IREFST_VAL ((MCG->S & MCG_S_IREFST_MASK) >> MCG_S_IREFST_SHIFT)
-#define MCG_S_PLLST_VAL ((MCG->S & MCG_S_PLLST_MASK) >> MCG_S_PLLST_SHIFT)
-#define MCG_C1_FRDIV_VAL ((MCG->C1 & MCG_C1_FRDIV_MASK) >> MCG_C1_FRDIV_SHIFT)
-#define MCG_C2_LP_VAL ((MCG->C2 & MCG_C2_LP_MASK) >> MCG_C2_LP_SHIFT)
-#define MCG_C2_RANGE_VAL ((MCG->C2 & MCG_C2_RANGE_MASK) >> MCG_C2_RANGE_SHIFT)
-#define MCG_SC_FCRDIV_VAL ((MCG->SC & MCG_SC_FCRDIV_MASK) >> MCG_SC_FCRDIV_SHIFT)
-#define MCG_S2_PLLCST_VAL ((MCG->S2 & MCG_S2_PLLCST_MASK) >> MCG_S2_PLLCST_SHIFT)
-#define MCG_C7_OSCSEL_VAL ((MCG->C7 & MCG_C7_OSCSEL_MASK) >> MCG_C7_OSCSEL_SHIFT)
-#define MCG_C4_DMX32_VAL ((MCG->C4 & MCG_C4_DMX32_MASK) >> MCG_C4_DMX32_SHIFT)
-#define MCG_C4_DRST_DRS_VAL ((MCG->C4 & MCG_C4_DRST_DRS_MASK) >> MCG_C4_DRST_DRS_SHIFT)
-#define MCG_C7_PLL32KREFSEL_VAL ((MCG->C7 & MCG_C7_PLL32KREFSEL_MASK) >> MCG_C7_PLL32KREFSEL_SHIFT)
-#define MCG_C5_PLLREFSEL0_VAL ((MCG->C5 & MCG_C5_PLLREFSEL0_MASK) >> MCG_C5_PLLREFSEL0_SHIFT)
-#define MCG_C11_PLLREFSEL1_VAL ((MCG->C11 & MCG_C11_PLLREFSEL1_MASK) >> MCG_C11_PLLREFSEL1_SHIFT)
-#define MCG_C11_PRDIV1_VAL ((MCG->C11 & MCG_C11_PRDIV1_MASK) >> MCG_C11_PRDIV1_SHIFT)
-#define MCG_C12_VDIV1_VAL ((MCG->C12 & MCG_C12_VDIV1_MASK) >> MCG_C12_VDIV1_SHIFT)
-#define MCG_C5_PRDIV0_VAL ((MCG->C5 & MCG_C5_PRDIV0_MASK) >> MCG_C5_PRDIV0_SHIFT)
-#define MCG_C6_VDIV0_VAL ((MCG->C6 & MCG_C6_VDIV0_MASK) >> MCG_C6_VDIV0_SHIFT)
-
-#define OSC_MODE_MASK (MCG_C2_EREFS0_MASK | MCG_C2_HGO0_MASK | MCG_C2_RANGE0_MASK)
-
-#define SIM_CLKDIV1_OUTDIV1_VAL ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT)
-#define SIM_CLKDIV1_OUTDIV2_VAL ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV2_MASK) >> SIM_CLKDIV1_OUTDIV2_SHIFT)
-#define SIM_CLKDIV1_OUTDIV3_VAL ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV3_MASK) >> SIM_CLKDIV1_OUTDIV3_SHIFT)
-#define SIM_CLKDIV1_OUTDIV4_VAL ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV4_MASK) >> SIM_CLKDIV1_OUTDIV4_SHIFT)
-#define SIM_SOPT1_OSC32KSEL_VAL ((SIM->SOPT1 & SIM_SOPT1_OSC32KSEL_MASK) >> SIM_SOPT1_OSC32KSEL_SHIFT)
-#define SIM_SOPT2_PLLFLLSEL_VAL ((SIM->SOPT2 & SIM_SOPT2_PLLFLLSEL_MASK) >> SIM_SOPT2_PLLFLLSEL_SHIFT)
-
-/* MCG_S_CLKST definition. */
-enum _mcg_clkout_stat
-{
-    kMCG_ClkOutStatFll, /* FLL.            */
-    kMCG_ClkOutStatInt, /* Internal clock. */
-    kMCG_ClkOutStatExt, /* External clock. */
-    kMCG_ClkOutStatPll  /* PLL.            */
-};
-
-/* MCG_S_PLLST definition. */
-enum _mcg_pllst
-{
-    kMCG_PllstFll, /* FLL is used. */
-    kMCG_PllstPll  /* PLL is used. */
-};
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-
-/* Slow internal reference clock frequency. */
-static uint32_t s_slowIrcFreq = 32768U;
-/* Fast internal reference clock frequency. */
-static uint32_t s_fastIrcFreq = 4000000U;
-
-/* External XTAL0 (OSC0) clock frequency. */
-uint32_t g_xtal0Freq;
-
-/* External XTAL32K clock frequency. */
-uint32_t g_xtal32Freq;
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-
-/*!
- * @brief Get the MCG external reference clock frequency.
- *
- * Get the current MCG external reference clock frequency in Hz. It is
- * the frequency select by MCG_C7[OSCSEL]. This is an internal function.
- *
- * @return MCG external reference clock frequency in Hz.
- */
-static uint32_t CLOCK_GetMcgExtClkFreq(void);
-
-/*!
- * @brief Get the MCG FLL external reference clock frequency.
- *
- * Get the current MCG FLL external reference clock frequency in Hz. It is
- * the frequency after by MCG_C1[FRDIV]. This is an internal function.
- *
- * @return MCG FLL external reference clock frequency in Hz.
- */
-static uint32_t CLOCK_GetFllExtRefClkFreq(void);
-
-/*!
- * @brief Get the MCG FLL reference clock frequency.
- *
- * Get the current MCG FLL reference clock frequency in Hz. It is
- * the frequency select by MCG_C1[IREFS]. This is an internal function.
- *
- * @return MCG FLL reference clock frequency in Hz.
- */
-static uint32_t CLOCK_GetFllRefClkFreq(void);
-
-/*!
- * @brief Get the frequency of clock selected by MCG_C2[IRCS].
- *
- * This clock's two output:
- *  1. MCGOUTCLK when MCG_S[CLKST]=0.
- *  2. MCGIRCLK when MCG_C1[IRCLKEN]=1.
- *
- * @return The frequency in Hz.
- */
-static uint32_t CLOCK_GetInternalRefClkSelectFreq(void);
-
-/*!
- * @brief Get the MCG PLL/PLL0 reference clock frequency.
- *
- * Get the current MCG PLL/PLL0 reference clock frequency in Hz.
- * This is an internal function.
- *
- * @return MCG PLL/PLL0 reference clock frequency in Hz.
- */
-static uint32_t CLOCK_GetPll0RefFreq(void);
-
-/*!
- * @brief Calculate the RANGE value base on crystal frequency.
- *
- * To setup external crystal oscillator, must set the register bits RANGE
- * base on the crystal frequency. This function returns the RANGE base on the
- * input frequency. This is an internal function.
- *
- * @param freq Crystal frequency in Hz.
- * @return The RANGE value.
- */
-static uint8_t CLOCK_GetOscRangeFromFreq(uint32_t freq);
-
-/*!
- * @brief Delay function to wait FLL stable.
- *
- * Delay function to wait FLL stable in FEI mode or FEE mode, should wait at least
- * 1ms. Every time changes FLL setting, should wait this time for FLL stable.
- */
-static void CLOCK_FllStableDelay(void);
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-
-static uint32_t CLOCK_GetMcgExtClkFreq(void)
-{
-    uint32_t freq;
-
-    switch (MCG_C7_OSCSEL_VAL)
-    {
-        case 0U:
-            /* Please call CLOCK_SetXtal0Freq base on board setting before using OSC0 clock. */
-            assert(g_xtal0Freq);
-            freq = g_xtal0Freq;
-            break;
-        case 1U:
-            /* Please call CLOCK_SetXtal32Freq base on board setting before using XTAL32K/RTC_CLKIN clock. */
-            assert(g_xtal32Freq);
-            freq = g_xtal32Freq;
-            break;
-        case 2U:
-            freq = MCG_INTERNAL_IRC_48M;
-            break;
-        default:
-            freq = 0U;
-            break;
-    }
-
-    return freq;
-}
-
-static uint32_t CLOCK_GetFllExtRefClkFreq(void)
-{
-    /* FllExtRef = McgExtRef / FllExtRefDiv */
-    uint8_t frdiv;
-    uint8_t range;
-    uint8_t oscsel;
-
-    uint32_t freq = CLOCK_GetMcgExtClkFreq();
-
-    if (!freq)
-    {
-        return freq;
-    }
-
-    frdiv = MCG_C1_FRDIV_VAL;
-    freq >>= frdiv;
-
-    range = MCG_C2_RANGE_VAL;
-    oscsel = MCG_C7_OSCSEL_VAL;
-
-    /*
-       When should use divider 32, 64, 128, 256, 512, 1024, 1280, 1536.
-       1. MCG_C7[OSCSEL] selects IRC48M.
-       2. MCG_C7[OSCSEL] selects OSC0 and MCG_C2[RANGE] is not 0.
-    */
-    if (((0U != range) && (kMCG_OscselOsc == oscsel)) || (kMCG_OscselIrc == oscsel))
-    {
-        switch (frdiv)
-        {
-            case 0:
-            case 1:
-            case 2:
-            case 3:
-            case 4:
-            case 5:
-                freq >>= 5u;
-                break;
-            case 6:
-                /* 64*20=1280 */
-                freq /= 20u;
-                break;
-            case 7:
-                /* 128*12=1536 */
-                freq /= 12u;
-                break;
-            default:
-                freq = 0u;
-                break;
-        }
-    }
-
-    return freq;
-}
-
-static uint32_t CLOCK_GetInternalRefClkSelectFreq(void)
-{
-    if (kMCG_IrcSlow == MCG_S_IRCST_VAL)
-    {
-        /* Slow internal reference clock selected*/
-        return s_slowIrcFreq;
-    }
-    else
-    {
-        /* Fast internal reference clock selected*/
-        return s_fastIrcFreq >> MCG_SC_FCRDIV_VAL;
-    }
-}
-
-static uint32_t CLOCK_GetFllRefClkFreq(void)
-{
-    /* If use external reference clock. */
-    if (kMCG_FllSrcExternal == MCG_S_IREFST_VAL)
-    {
-        return CLOCK_GetFllExtRefClkFreq();
-    }
-    /* If use internal reference clock. */
-    else
-    {
-        return s_slowIrcFreq;
-    }
-}
-
-static uint32_t CLOCK_GetPll0RefFreq(void)
-{
-    /* MCG external reference clock. */
-    return CLOCK_GetMcgExtClkFreq();
-}
-
-static uint8_t CLOCK_GetOscRangeFromFreq(uint32_t freq)
-{
-    uint8_t range;
-
-    if (freq <= 39063U)
-    {
-        range = 0U;
-    }
-    else if (freq <= 8000000U)
-    {
-        range = 1U;
-    }
-    else
-    {
-        range = 2U;
-    }
-
-    return range;
-}
-
-static void CLOCK_FllStableDelay(void)
-{
-    /*
-       Should wait at least 1ms. Because in these modes, the core clock is 100MHz
-       at most, so this function could obtain the 1ms delay.
-     */
-    volatile uint32_t i = 30000U;
-    while (i--)
-    {
-        __NOP();
-    }
-}
-
-uint32_t CLOCK_GetOsc0ErClkFreq(void)
-{
-    if (OSC0->CR & OSC_CR_ERCLKEN_MASK)
-    {
-        /* Please call CLOCK_SetXtal0Freq base on board setting before using OSC0 clock. */
-        assert(g_xtal0Freq);
-        return g_xtal0Freq;
-    }
-    else
-    {
-        return 0U;
-    }
-}
-
-uint32_t CLOCK_GetEr32kClkFreq(void)
-{
-    uint32_t freq;
-
-    switch (SIM_SOPT1_OSC32KSEL_VAL)
-    {
-        case 0U: /* OSC 32k clock  */
-            freq = (CLOCK_GetOsc0ErClkFreq() == 32768U) ? 32768U : 0U;
-            break;
-        case 2U: /* RTC 32k clock  */
-            /* Please call CLOCK_SetXtal32Freq base on board setting before using XTAL32K/RTC_CLKIN clock. */
-            assert(g_xtal32Freq);
-            freq = g_xtal32Freq;
-            break;
-        case 3U: /* LPO clock      */
-            freq = LPO_CLK_FREQ;
-            break;
-        default:
-            freq = 0U;
-            break;
-    }
-    return freq;
-}
-
-uint32_t CLOCK_GetPllFllSelClkFreq(void)
-{
-    uint32_t freq;
-
-    switch (SIM_SOPT2_PLLFLLSEL_VAL)
-    {
-        case 0U: /* FLL. */
-            freq = CLOCK_GetFllFreq();
-            break;
-        case 1U: /* PLL. */
-            freq = CLOCK_GetPll0Freq();
-            break;
-        case 3U: /* MCG IRC48M. */
-            freq = MCG_INTERNAL_IRC_48M;
-            break;
-        default:
-            freq = 0U;
-            break;
-    }
-
-    return freq;
-}
-
-uint32_t CLOCK_GetPlatClkFreq(void)
-{
-    return CLOCK_GetOutClkFreq() / (SIM_CLKDIV1_OUTDIV1_VAL + 1);
-}
-
-uint32_t CLOCK_GetFlashClkFreq(void)
-{
-    return CLOCK_GetOutClkFreq() / (SIM_CLKDIV1_OUTDIV4_VAL + 1);
-}
-
-uint32_t CLOCK_GetFlexBusClkFreq(void)
-{
-    return CLOCK_GetOutClkFreq() / (SIM_CLKDIV1_OUTDIV3_VAL + 1);
-}
-
-uint32_t CLOCK_GetBusClkFreq(void)
-{
-    return CLOCK_GetOutClkFreq() / (SIM_CLKDIV1_OUTDIV2_VAL + 1);
-}
-
-uint32_t CLOCK_GetCoreSysClkFreq(void)
-{
-    return CLOCK_GetOutClkFreq() / (SIM_CLKDIV1_OUTDIV1_VAL + 1);
-}
-
-uint32_t CLOCK_GetFreq(clock_name_t clockName)
-{
-    uint32_t freq;
-
-    switch (clockName)
-    {
-        case kCLOCK_CoreSysClk:
-        case kCLOCK_PlatClk:
-            freq = CLOCK_GetOutClkFreq() / (SIM_CLKDIV1_OUTDIV1_VAL + 1);
-            break;
-        case kCLOCK_BusClk:
-            freq = CLOCK_GetOutClkFreq() / (SIM_CLKDIV1_OUTDIV2_VAL + 1);
-            break;
-        case kCLOCK_FlexBusClk:
-            freq = CLOCK_GetOutClkFreq() / (SIM_CLKDIV1_OUTDIV3_VAL + 1);
-            break;
-        case kCLOCK_FlashClk:
-            freq = CLOCK_GetOutClkFreq() / (SIM_CLKDIV1_OUTDIV4_VAL + 1);
-            break;
-        case kCLOCK_PllFllSelClk:
-            freq = CLOCK_GetPllFllSelClkFreq();
-            break;
-        case kCLOCK_Er32kClk:
-            freq = CLOCK_GetEr32kClkFreq();
-            break;
-        case kCLOCK_Osc0ErClk:
-            freq = CLOCK_GetOsc0ErClkFreq();
-            break;
-        case kCLOCK_McgFixedFreqClk:
-            freq = CLOCK_GetFixedFreqClkFreq();
-            break;
-        case kCLOCK_McgInternalRefClk:
-            freq = CLOCK_GetInternalRefClkFreq();
-            break;
-        case kCLOCK_McgFllClk:
-            freq = CLOCK_GetFllFreq();
-            break;
-        case kCLOCK_McgPll0Clk:
-            freq = CLOCK_GetPll0Freq();
-            break;
-        case kCLOCK_McgIrc48MClk:
-            freq = MCG_INTERNAL_IRC_48M;
-            break;
-        case kCLOCK_LpoClk:
-            freq = LPO_CLK_FREQ;
-            break;
-        default:
-            freq = 0U;
-            break;
-    }
-
-    return freq;
-}
-
-void CLOCK_SetSimConfig(sim_clock_config_t const *config)
-{
-    SIM->CLKDIV1 = config->clkdiv1;
-    CLOCK_SetPllFllSelClock(config->pllFllSel);
-    CLOCK_SetEr32kClock(config->er32kSrc);
-}
-
-bool CLOCK_EnableUsbfs0Clock(clock_usb_src_t src, uint32_t freq)
-{
-    bool ret = true;
-
-    CLOCK_DisableClock(kCLOCK_Usbfs0);
-
-    if (kCLOCK_UsbSrcExt == src)
-    {
-        SIM->SOPT2 &= ~SIM_SOPT2_USBSRC_MASK;
-    }
-    else
-    {
-        switch (freq)
-        {
-            case 120000000U:
-                SIM->CLKDIV2 = SIM_CLKDIV2_USBDIV(4) | SIM_CLKDIV2_USBFRAC(1);
-                break;
-            case 96000000U:
-                SIM->CLKDIV2 = SIM_CLKDIV2_USBDIV(1) | SIM_CLKDIV2_USBFRAC(0);
-                break;
-            case 72000000U:
-                SIM->CLKDIV2 = SIM_CLKDIV2_USBDIV(2) | SIM_CLKDIV2_USBFRAC(1);
-                break;
-            case 48000000U:
-                SIM->CLKDIV2 = SIM_CLKDIV2_USBDIV(0) | SIM_CLKDIV2_USBFRAC(0);
-                break;
-            default:
-                ret = false;
-                break;
-        }
-
-        SIM->SOPT2 = ((SIM->SOPT2 & ~(SIM_SOPT2_PLLFLLSEL_MASK | SIM_SOPT2_USBSRC_MASK)) | (uint32_t)src);
-    }
-
-    CLOCK_EnableClock(kCLOCK_Usbfs0);
-
-    if (kCLOCK_UsbSrcIrc48M == src)
-    {
-        USB0->CLK_RECOVER_IRC_EN = 0x03U;
-        USB0->CLK_RECOVER_CTRL |= USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN_MASK;
-    }
-    return ret;
-}
-
-uint32_t CLOCK_GetOutClkFreq(void)
-{
-    uint32_t mcgoutclk;
-    uint32_t clkst = MCG_S_CLKST_VAL;
-
-    switch (clkst)
-    {
-        case kMCG_ClkOutStatPll:
-            mcgoutclk = CLOCK_GetPll0Freq();
-            break;
-        case kMCG_ClkOutStatFll:
-            mcgoutclk = CLOCK_GetFllFreq();
-            break;
-        case kMCG_ClkOutStatInt:
-            mcgoutclk = CLOCK_GetInternalRefClkSelectFreq();
-            break;
-        case kMCG_ClkOutStatExt:
-            mcgoutclk = CLOCK_GetMcgExtClkFreq();
-            break;
-        default:
-            mcgoutclk = 0U;
-            break;
-    }
-    return mcgoutclk;
-}
-
-uint32_t CLOCK_GetFllFreq(void)
-{
-    static const uint16_t fllFactorTable[4][2] = {{640, 732}, {1280, 1464}, {1920, 2197}, {2560, 2929}};
-
-    uint8_t drs, dmx32;
-    uint32_t freq;
-
-    /* If FLL is not enabled currently, then return 0U. */
-    if ((MCG->C2 & MCG_C2_LP_MASK) || (MCG->S & MCG_S_PLLST_MASK))
-    {
-        return 0U;
-    }
-
-    /* Get FLL reference clock frequency. */
-    freq = CLOCK_GetFllRefClkFreq();
-    if (!freq)
-    {
-        return freq;
-    }
-
-    drs = MCG_C4_DRST_DRS_VAL;
-    dmx32 = MCG_C4_DMX32_VAL;
-
-    return freq * fllFactorTable[drs][dmx32];
-}
-
-uint32_t CLOCK_GetInternalRefClkFreq(void)
-{
-    /* If MCGIRCLK is gated. */
-    if (!(MCG->C1 & MCG_C1_IRCLKEN_MASK))
-    {
-        return 0U;
-    }
-
-    return CLOCK_GetInternalRefClkSelectFreq();
-}
-
-uint32_t CLOCK_GetFixedFreqClkFreq(void)
-{
-    uint32_t freq = CLOCK_GetFllRefClkFreq();
-
-    /* MCGFFCLK must be no more than MCGOUTCLK/8. */
-    if ((freq) && (freq <= (CLOCK_GetOutClkFreq() / 8U)))
-    {
-        return freq;
-    }
-    else
-    {
-        return 0U;
-    }
-}
-
-uint32_t CLOCK_GetPll0Freq(void)
-{
-    uint32_t mcgpll0clk;
-
-    /* If PLL0 is not enabled, return 0. */
-    if (!(MCG->S & MCG_S_LOCK0_MASK))
-    {
-        return 0U;
-    }
-
-    mcgpll0clk = CLOCK_GetPll0RefFreq();
-
-    mcgpll0clk /= (FSL_FEATURE_MCG_PLL_PRDIV_BASE + MCG_C5_PRDIV0_VAL);
-    mcgpll0clk *= (FSL_FEATURE_MCG_PLL_VDIV_BASE + MCG_C6_VDIV0_VAL);
-
-    return mcgpll0clk;
-}
-
-status_t CLOCK_SetExternalRefClkConfig(mcg_oscsel_t oscsel)
-{
-    bool needDelay;
-    uint32_t i;
-
-#if (defined(MCG_CONFIG_CHECK_PARAM) && MCG_CONFIG_CHECK_PARAM)
-    /* If change MCG_C7[OSCSEL] and external reference clock is system clock source, return error. */
-    if ((MCG_C7_OSCSEL_VAL != oscsel) && (!(MCG->S & MCG_S_IREFST_MASK)))
-    {
-        return kStatus_MCG_SourceUsed;
-    }
-#endif /* MCG_CONFIG_CHECK_PARAM */
-
-    if (MCG_C7_OSCSEL_VAL != oscsel)
-    {
-        /* If change OSCSEL, need to delay, ERR009878. */
-        needDelay = true;
-    }
-    else
-    {
-        needDelay = false;
-    }
-
-    MCG->C7 = (MCG->C7 & ~MCG_C7_OSCSEL_MASK) | MCG_C7_OSCSEL(oscsel);
-    if (kMCG_OscselOsc == oscsel)
-    {
-        if (MCG->C2 & MCG_C2_EREFS_MASK)
-        {
-            while (!(MCG->S & MCG_S_OSCINIT0_MASK))
-            {
-            }
-        }
-    }
-
-    if (needDelay)
-    {
-        /* ERR009878 Delay at least 50 micro-seconds for external clock change valid. */
-        i = 1500U;
-        while (i--)
-        {
-            __NOP();
-        }
-    }
-
-    return kStatus_Success;
-}
-
-status_t CLOCK_SetInternalRefClkConfig(uint8_t enableMode, mcg_irc_mode_t ircs, uint8_t fcrdiv)
-{
-    uint32_t mcgOutClkState = MCG_S_CLKST_VAL;
-    mcg_irc_mode_t curIrcs = (mcg_irc_mode_t)MCG_S_IRCST_VAL;
-    uint8_t curFcrdiv = MCG_SC_FCRDIV_VAL;
-
-#if (defined(MCG_CONFIG_CHECK_PARAM) && MCG_CONFIG_CHECK_PARAM)
-    /* If MCGIRCLK is used as system clock source. */
-    if (kMCG_ClkOutStatInt == mcgOutClkState)
-    {
-        /* If need to change MCGIRCLK source or driver, return error. */
-        if (((kMCG_IrcFast == curIrcs) && (fcrdiv != curFcrdiv)) || (ircs != curIrcs))
-        {
-            return kStatus_MCG_SourceUsed;
-        }
-    }
-#endif
-
-    /* If need to update the FCRDIV. */
-    if (fcrdiv != curFcrdiv)
-    {
-        /* If fast IRC is in use currently, change to slow IRC. */
-        if ((kMCG_IrcFast == curIrcs) && ((mcgOutClkState == kMCG_ClkOutStatInt) || (MCG->C1 & MCG_C1_IRCLKEN_MASK)))
-        {
-            MCG->C2 = ((MCG->C2 & ~MCG_C2_IRCS_MASK) | (MCG_C2_IRCS(kMCG_IrcSlow)));
-            while (MCG_S_IRCST_VAL != kMCG_IrcSlow)
-            {
-            }
-        }
-        /* Update FCRDIV. */
-        MCG->SC = (MCG->SC & ~(MCG_SC_FCRDIV_MASK | MCG_SC_ATMF_MASK | MCG_SC_LOCS0_MASK)) | MCG_SC_FCRDIV(fcrdiv);
-    }
-
-    /* Set internal reference clock selection. */
-    MCG->C2 = (MCG->C2 & ~MCG_C2_IRCS_MASK) | (MCG_C2_IRCS(ircs));
-    MCG->C1 = (MCG->C1 & ~(MCG_C1_IRCLKEN_MASK | MCG_C1_IREFSTEN_MASK)) | (uint8_t)enableMode;
-
-    /* If MCGIRCLK is used, need to wait for MCG_S_IRCST. */
-    if ((mcgOutClkState == kMCG_ClkOutStatInt) || (enableMode & kMCG_IrclkEnable))
-    {
-        while (MCG_S_IRCST_VAL != ircs)
-        {
-        }
-    }
-
-    return kStatus_Success;
-}
-
-uint32_t CLOCK_CalcPllDiv(uint32_t refFreq, uint32_t desireFreq, uint8_t *prdiv, uint8_t *vdiv)
-{
-    uint8_t ret_prdiv;           /* PRDIV to return. */
-    uint8_t ret_vdiv;            /* VDIV to return.  */
-    uint8_t prdiv_min;           /* Min PRDIV value to make reference clock in allowed range. */
-    uint8_t prdiv_max;           /* Max PRDIV value to make reference clock in allowed range. */
-    uint8_t prdiv_cur;           /* PRDIV value for iteration.    */
-    uint8_t vdiv_cur;            /* VDIV value for iteration.     */
-    uint32_t ret_freq = 0U;      /* PLL output fequency to return. */
-    uint32_t diff = 0xFFFFFFFFU; /* Difference between desireFreq and return frequency. */
-    uint32_t ref_div;            /* Reference frequency after PRDIV. */
-
-    /*
-       Steps:
-       1. Get allowed prdiv with such rules:
-          1). refFreq / prdiv >= FSL_FEATURE_MCG_PLL_REF_MIN.
-          2). refFreq / prdiv <= FSL_FEATURE_MCG_PLL_REF_MAX.
-       2. For each allowed prdiv, there are two candidate vdiv values:
-          1). (desireFreq / (refFreq / prdiv)).
-          2). (desireFreq / (refFreq / prdiv)) + 1.
-          If could get the precise desired frequency, return current prdiv and
-          vdiv directly. Otherwise choose the one which is closer to desired
-          frequency.
-     */
-
-    /* Reference frequency is out of range. */
-    if ((refFreq < FSL_FEATURE_MCG_PLL_REF_MIN) ||
-        (refFreq > (FSL_FEATURE_MCG_PLL_REF_MAX * (FSL_FEATURE_MCG_PLL_PRDIV_MAX + FSL_FEATURE_MCG_PLL_PRDIV_BASE))))
-    {
-        return 0U;
-    }
-
-    /* refFreq/PRDIV must in a range. First get the allowed PRDIV range. */
-    prdiv_max = refFreq / FSL_FEATURE_MCG_PLL_REF_MIN;
-    prdiv_min = (refFreq + FSL_FEATURE_MCG_PLL_REF_MAX - 1U) / FSL_FEATURE_MCG_PLL_REF_MAX;
-
-    /* PRDIV traversal. */
-    for (prdiv_cur = prdiv_max; prdiv_cur >= prdiv_min; prdiv_cur--)
-    {
-        /* Reference frequency after PRDIV. */
-        ref_div = refFreq / prdiv_cur;
-
-        vdiv_cur = desireFreq / ref_div;
-
-        if ((vdiv_cur < FSL_FEATURE_MCG_PLL_VDIV_BASE - 1U) || (vdiv_cur > FSL_FEATURE_MCG_PLL_VDIV_BASE + 31U))
-        {
-            /* No VDIV is available with this PRDIV. */
-            continue;
-        }
-
-        ret_freq = vdiv_cur * ref_div;
-
-        if (vdiv_cur >= FSL_FEATURE_MCG_PLL_VDIV_BASE)
-        {
-            if (ret_freq == desireFreq) /* If desire frequency is got. */
-            {
-                *prdiv = prdiv_cur - FSL_FEATURE_MCG_PLL_PRDIV_BASE;
-                *vdiv = vdiv_cur - FSL_FEATURE_MCG_PLL_VDIV_BASE;
-                return ret_freq;
-            }
-            /* New PRDIV/VDIV is closer. */
-            if (diff > desireFreq - ret_freq)
-            {
-                diff = desireFreq - ret_freq;
-                ret_prdiv = prdiv_cur;
-                ret_vdiv = vdiv_cur;
-            }
-        }
-        vdiv_cur++;
-        if (vdiv_cur <= (FSL_FEATURE_MCG_PLL_VDIV_BASE + 31U))
-        {
-            ret_freq += ref_div;
-            /* New PRDIV/VDIV is closer. */
-            if (diff > ret_freq - desireFreq)
-            {
-                diff = ret_freq - desireFreq;
-                ret_prdiv = prdiv_cur;
-                ret_vdiv = vdiv_cur;
-            }
-        }
-    }
-
-    if (0xFFFFFFFFU != diff)
-    {
-        /* PRDIV/VDIV found. */
-        *prdiv = ret_prdiv - FSL_FEATURE_MCG_PLL_PRDIV_BASE;
-        *vdiv = ret_vdiv - FSL_FEATURE_MCG_PLL_VDIV_BASE;
-        ret_freq = (refFreq / ret_prdiv) * ret_vdiv;
-        return ret_freq;
-    }
-    else
-    {
-        /* No proper PRDIV/VDIV found. */
-        return 0U;
-    }
-}
-
-void CLOCK_EnablePll0(mcg_pll_config_t const *config)
-{
-    assert(config);
-
-    uint8_t mcg_c5 = 0U;
-
-    mcg_c5 |= MCG_C5_PRDIV0(config->prdiv);
-    MCG->C5 = mcg_c5; /* Disable the PLL first. */
-
-    MCG->C6 = (MCG->C6 & ~MCG_C6_VDIV0_MASK) | MCG_C6_VDIV0(config->vdiv);
-
-    /* Set enable mode. */
-    MCG->C5 |= ((uint32_t)kMCG_PllEnableIndependent | (uint32_t)config->enableMode);
-
-    /* Wait for PLL lock. */
-    while (!(MCG->S & MCG_S_LOCK0_MASK))
-    {
-    }
-}
-
-void CLOCK_SetOsc0MonitorMode(mcg_monitor_mode_t mode)
-{
-    /* Clear the previous flag, MCG_SC[LOCS0]. */
-    MCG->SC &= ~MCG_SC_ATMF_MASK;
-
-    if (kMCG_MonitorNone == mode)
-    {
-        MCG->C6 &= ~MCG_C6_CME0_MASK;
-    }
-    else
-    {
-        if (kMCG_MonitorInt == mode)
-        {
-            MCG->C2 &= ~MCG_C2_LOCRE0_MASK;
-        }
-        else
-        {
-            MCG->C2 |= MCG_C2_LOCRE0_MASK;
-        }
-        MCG->C6 |= MCG_C6_CME0_MASK;
-    }
-}
-
-void CLOCK_SetRtcOscMonitorMode(mcg_monitor_mode_t mode)
-{
-    uint8_t mcg_c8 = MCG->C8;
-
-    mcg_c8 &= ~(MCG_C8_CME1_MASK | MCG_C8_LOCRE1_MASK);
-
-    if (kMCG_MonitorNone != mode)
-    {
-        if (kMCG_MonitorReset == mode)
-        {
-            mcg_c8 |= MCG_C8_LOCRE1_MASK;
-        }
-        mcg_c8 |= MCG_C8_CME1_MASK;
-    }
-    MCG->C8 = mcg_c8;
-}
-
-void CLOCK_SetPll0MonitorMode(mcg_monitor_mode_t mode)
-{
-    uint8_t mcg_c8;
-
-    /* Clear previous flag. */
-    MCG->S = MCG_S_LOLS0_MASK;
-
-    if (kMCG_MonitorNone == mode)
-    {
-        MCG->C6 &= ~MCG_C6_LOLIE0_MASK;
-    }
-    else
-    {
-        mcg_c8 = MCG->C8;
-
-        mcg_c8 &= ~MCG_C8_LOCS1_MASK;
-
-        if (kMCG_MonitorInt == mode)
-        {
-            mcg_c8 &= ~MCG_C8_LOLRE_MASK;
-        }
-        else
-        {
-            mcg_c8 |= MCG_C8_LOLRE_MASK;
-        }
-        MCG->C8 = mcg_c8;
-        MCG->C6 |= MCG_C6_LOLIE0_MASK;
-    }
-}
-
-uint32_t CLOCK_GetStatusFlags(void)
-{
-    uint32_t ret = 0U;
-    uint8_t mcg_s = MCG->S;
-
-    if (MCG->SC & MCG_SC_LOCS0_MASK)
-    {
-        ret |= kMCG_Osc0LostFlag;
-    }
-    if (mcg_s & MCG_S_OSCINIT0_MASK)
-    {
-        ret |= kMCG_Osc0InitFlag;
-    }
-    if (MCG->C8 & MCG_C8_LOCS1_MASK)
-    {
-        ret |= kMCG_RtcOscLostFlag;
-    }
-    if (mcg_s & MCG_S_LOLS0_MASK)
-    {
-        ret |= kMCG_Pll0LostFlag;
-    }
-    if (mcg_s & MCG_S_LOCK0_MASK)
-    {
-        ret |= kMCG_Pll0LockFlag;
-    }
-    return ret;
-}
-
-void CLOCK_ClearStatusFlags(uint32_t mask)
-{
-    uint8_t reg;
-
-    if (mask & kMCG_Osc0LostFlag)
-    {
-        MCG->SC &= ~MCG_SC_ATMF_MASK;
-    }
-    if (mask & kMCG_RtcOscLostFlag)
-    {
-        reg = MCG->C8;
-        MCG->C8 = reg;
-    }
-    if (mask & kMCG_Pll0LostFlag)
-    {
-        MCG->S = MCG_S_LOLS0_MASK;
-    }
-}
-
-void CLOCK_InitOsc0(osc_config_t const *config)
-{
-    uint8_t range = CLOCK_GetOscRangeFromFreq(config->freq);
-
-    OSC_SetCapLoad(OSC0, config->capLoad);
-    OSC_SetExtRefClkConfig(OSC0, &config->oscerConfig);
-
-    MCG->C2 = ((MCG->C2 & ~OSC_MODE_MASK) | MCG_C2_RANGE(range) | (uint8_t)config->workMode);
-
-    if ((kOSC_ModeExt != config->workMode) && (OSC0->CR & OSC_CR_ERCLKEN_MASK))
-    {
-        /* Wait for stable. */
-        while (!(MCG->S & MCG_S_OSCINIT0_MASK))
-        {
-        }
-    }
-}
-
-void CLOCK_DeinitOsc0(void)
-{
-    OSC0->CR = 0U;
-    MCG->C2 &= ~OSC_MODE_MASK;
-}
-
-status_t CLOCK_TrimInternalRefClk(uint32_t extFreq, uint32_t desireFreq, uint32_t *actualFreq, mcg_atm_select_t atms)
-{
-    uint32_t multi; /* extFreq / desireFreq */
-    uint32_t actv;  /* Auto trim value. */
-    uint8_t mcg_sc;
-
-    static const uint32_t trimRange[2][2] = {
-        /*     Min           Max      */
-        {TRIM_SIRC_MIN, TRIM_SIRC_MAX}, /* Slow IRC. */
-        {TRIM_FIRC_MIN, TRIM_FIRC_MAX}  /* Fast IRC. */
-    };
-
-    if ((extFreq > TRIM_REF_CLK_MAX) || (extFreq < TRIM_REF_CLK_MIN))
-    {
-        return kStatus_MCG_AtmBusClockInvalid;
-    }
-
-    /* Check desired frequency range. */
-    if ((desireFreq < trimRange[atms][0]) || (desireFreq > trimRange[atms][1]))
-    {
-        return kStatus_MCG_AtmDesiredFreqInvalid;
-    }
-
-    /*
-       Make sure internal reference clock is not used to generate bus clock.
-       Here only need to check (MCG_S_IREFST == 1).
-     */
-    if (MCG_S_IREFST(kMCG_FllSrcInternal) == (MCG->S & MCG_S_IREFST_MASK))
-    {
-        return kStatus_MCG_AtmIrcUsed;
-    }
-
-    multi = extFreq / desireFreq;
-    actv = multi * 21U;
-
-    if (kMCG_AtmSel4m == atms)
-    {
-        actv *= 128U;
-    }
-
-    /* Now begin to start trim. */
-    MCG->ATCVL = (uint8_t)actv;
-    MCG->ATCVH = (uint8_t)(actv >> 8U);
-
-    mcg_sc = MCG->SC;
-    mcg_sc &= ~(MCG_SC_ATMS_MASK | MCG_SC_LOCS0_MASK);
-    mcg_sc |= (MCG_SC_ATMF_MASK | MCG_SC_ATMS(atms));
-    MCG->SC = (mcg_sc | MCG_SC_ATME_MASK);
-
-    /* Wait for finished. */
-    while (MCG->SC & MCG_SC_ATME_MASK)
-    {
-    }
-
-    /* Error occurs? */
-    if (MCG->SC & MCG_SC_ATMF_MASK)
-    {
-        /* Clear the failed flag. */
-        MCG->SC = mcg_sc;
-        return kStatus_MCG_AtmHardwareFail;
-    }
-
-    *actualFreq = extFreq / multi;
-
-    if (kMCG_AtmSel4m == atms)
-    {
-        s_fastIrcFreq = *actualFreq;
-    }
-    else
-    {
-        s_slowIrcFreq = *actualFreq;
-    }
-
-    return kStatus_Success;
-}
-
-mcg_mode_t CLOCK_GetMode(void)
-{
-    mcg_mode_t mode = kMCG_ModeError;
-    uint32_t clkst = MCG_S_CLKST_VAL;
-    uint32_t irefst = MCG_S_IREFST_VAL;
-    uint32_t lp = MCG_C2_LP_VAL;
-    uint32_t pllst = MCG_S_PLLST_VAL;
-
-    /*------------------------------------------------------------------
-                           Mode and Registers
-    ____________________________________________________________________
-
-      Mode   |   CLKST    |   IREFST   |   PLLST   |      LP
-    ____________________________________________________________________
-
-      FEI    |  00(FLL)   |   1(INT)   |   0(FLL)  |      X
-    ____________________________________________________________________
-
-      FEE    |  00(FLL)   |   0(EXT)   |   0(FLL)  |      X
-    ____________________________________________________________________
-
-      FBE    |  10(EXT)   |   0(EXT)   |   0(FLL)  |   0(NORMAL)
-    ____________________________________________________________________
-
-      FBI    |  01(INT)   |   1(INT)   |   0(FLL)  |   0(NORMAL)
-    ____________________________________________________________________
-
-      BLPI   |  01(INT)   |   1(INT)   |   0(FLL)  |   1(LOW POWER)
-    ____________________________________________________________________
-
-      BLPE   |  10(EXT)   |   0(EXT)   |     X     |   1(LOW POWER)
-    ____________________________________________________________________
-
-      PEE    |  11(PLL)   |   0(EXT)   |   1(PLL)  |      X
-    ____________________________________________________________________
-
-      PBE    |  10(EXT)   |   0(EXT)   |   1(PLL)  |   O(NORMAL)
-    ____________________________________________________________________
-
-      PBI    |  01(INT)   |   1(INT)   |   1(PLL)  |   0(NORMAL)
-    ____________________________________________________________________
-
-      PEI    |  11(PLL)   |   1(INT)   |   1(PLL)  |      X
-    ____________________________________________________________________
-
-    ----------------------------------------------------------------------*/
-
-    switch (clkst)
-    {
-        case kMCG_ClkOutStatFll:
-            if (kMCG_FllSrcExternal == irefst)
-            {
-                mode = kMCG_ModeFEE;
-            }
-            else
-            {
-                mode = kMCG_ModeFEI;
-            }
-            break;
-        case kMCG_ClkOutStatInt:
-            if (lp)
-            {
-                mode = kMCG_ModeBLPI;
-            }
-            else
-            {
-                {
-                    mode = kMCG_ModeFBI;
-                }
-            }
-            break;
-        case kMCG_ClkOutStatExt:
-            if (lp)
-            {
-                mode = kMCG_ModeBLPE;
-            }
-            else
-            {
-                if (kMCG_PllstPll == pllst)
-                {
-                    mode = kMCG_ModePBE;
-                }
-                else
-                {
-                    mode = kMCG_ModeFBE;
-                }
-            }
-            break;
-        case kMCG_ClkOutStatPll:
-        {
-            mode = kMCG_ModePEE;
-        }
-        break;
-        default:
-            break;
-    }
-
-    return mode;
-}
-
-status_t CLOCK_SetFeiMode(mcg_drs_t drs, void (*fllStableDelay)(void))
-{
-    uint8_t mcg_c4;
-    bool change_drs = false;
-
-#if (defined(MCG_CONFIG_CHECK_PARAM) && MCG_CONFIG_CHECK_PARAM)
-    mcg_mode_t mode = CLOCK_GetMode();
-    if (!((kMCG_ModeFEI == mode) || (kMCG_ModeFBI == mode) || (kMCG_ModeFBE == mode) || (kMCG_ModeFEE == mode)))
-    {
-        return kStatus_MCG_ModeUnreachable;
-    }
-#endif
-    mcg_c4 = MCG->C4;
-
-    /*
-       Errata: ERR007993
-       Workaround: Invert MCG_C4[DMX32] or change MCG_C4[DRST_DRS] before
-       reference clock source changes, then reset to previous value after
-       reference clock changes.
-     */
-    if (kMCG_FllSrcExternal == MCG_S_IREFST_VAL)
-    {
-        change_drs = true;
-        /* Change the LSB of DRST_DRS. */
-        MCG->C4 ^= (1U << MCG_C4_DRST_DRS_SHIFT);
-    }
-
-    /* Set CLKS and IREFS. */
-    MCG->C1 =
-        ((MCG->C1 & ~(MCG_C1_CLKS_MASK | MCG_C1_IREFS_MASK))) | (MCG_C1_CLKS(kMCG_ClkOutSrcOut)        /* CLKS = 0 */
-                                                                 | MCG_C1_IREFS(kMCG_FllSrcInternal)); /* IREFS = 1 */
-
-    /* Wait and check status. */
-    while (kMCG_FllSrcInternal != MCG_S_IREFST_VAL)
-    {
-    }
-
-    /* Errata: ERR007993 */
-    if (change_drs)
-    {
-        MCG->C4 = mcg_c4;
-    }
-
-    /* In FEI mode, the MCG_C4[DMX32] is set to 0U. */
-    MCG->C4 = (mcg_c4 & ~(MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS_MASK)) | (MCG_C4_DRST_DRS(drs));
-
-    /* Check MCG_S[CLKST] */
-    while (kMCG_ClkOutStatFll != MCG_S_CLKST_VAL)
-    {
-    }
-
-    /* Wait for FLL stable time. */
-    if (fllStableDelay)
-    {
-        fllStableDelay();
-    }
-
-    return kStatus_Success;
-}
-
-status_t CLOCK_SetFeeMode(uint8_t frdiv, mcg_dmx32_t dmx32, mcg_drs_t drs, void (*fllStableDelay)(void))
-{
-    uint8_t mcg_c4;
-    bool change_drs = false;
-
-#if (defined(MCG_CONFIG_CHECK_PARAM) && MCG_CONFIG_CHECK_PARAM)
-    mcg_mode_t mode = CLOCK_GetMode();
-    if (!((kMCG_ModeFEE == mode) || (kMCG_ModeFBI == mode) || (kMCG_ModeFBE == mode) || (kMCG_ModeFEI == mode)))
-    {
-        return kStatus_MCG_ModeUnreachable;
-    }
-#endif
-    mcg_c4 = MCG->C4;
-
-    /*
-       Errata: ERR007993
-       Workaround: Invert MCG_C4[DMX32] or change MCG_C4[DRST_DRS] before
-       reference clock source changes, then reset to previous value after
-       reference clock changes.
-     */
-    if (kMCG_FllSrcInternal == MCG_S_IREFST_VAL)
-    {
-        change_drs = true;
-        /* Change the LSB of DRST_DRS. */
-        MCG->C4 ^= (1U << MCG_C4_DRST_DRS_SHIFT);
-    }
-
-    /* Set CLKS and IREFS. */
-    MCG->C1 = ((MCG->C1 & ~(MCG_C1_CLKS_MASK | MCG_C1_FRDIV_MASK | MCG_C1_IREFS_MASK)) |
-               (MCG_C1_CLKS(kMCG_ClkOutSrcOut)         /* CLKS = 0 */
-                | MCG_C1_FRDIV(frdiv)                  /* FRDIV */
-                | MCG_C1_IREFS(kMCG_FllSrcExternal))); /* IREFS = 0 */
-
-    /* Wait and check status. */
-    while (kMCG_FllSrcExternal != MCG_S_IREFST_VAL)
-    {
-    }
-
-    /* Errata: ERR007993 */
-    if (change_drs)
-    {
-        MCG->C4 = mcg_c4;
-    }
-
-    /* Set DRS and DMX32. */
-    mcg_c4 = ((mcg_c4 & ~(MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS_MASK)) | (MCG_C4_DMX32(dmx32) | MCG_C4_DRST_DRS(drs)));
-    MCG->C4 = mcg_c4;
-
-    /* Wait for DRST_DRS update. */
-    while (MCG->C4 != mcg_c4)
-    {
-    }
-
-    /* Check MCG_S[CLKST] */
-    while (kMCG_ClkOutStatFll != MCG_S_CLKST_VAL)
-    {
-    }
-
-    /* Wait for FLL stable time. */
-    if (fllStableDelay)
-    {
-        fllStableDelay();
-    }
-
-    return kStatus_Success;
-}
-
-status_t CLOCK_SetFbiMode(mcg_drs_t drs, void (*fllStableDelay)(void))
-{
-    uint8_t mcg_c4;
-    bool change_drs = false;
-
-#if (defined(MCG_CONFIG_CHECK_PARAM) && MCG_CONFIG_CHECK_PARAM)
-    mcg_mode_t mode = CLOCK_GetMode();
-
-    if (!((kMCG_ModeFEE == mode) || (kMCG_ModeFBI == mode) || (kMCG_ModeFBE == mode) || (kMCG_ModeFEI == mode) ||
-          (kMCG_ModeBLPI == mode)))
-
-    {
-        return kStatus_MCG_ModeUnreachable;
-    }
-#endif
-
-    mcg_c4 = MCG->C4;
-
-    MCG->C2 &= ~MCG_C2_LP_MASK; /* Disable lowpower. */
-
-    /*
-       Errata: ERR007993
-       Workaround: Invert MCG_C4[DMX32] or change MCG_C4[DRST_DRS] before
-       reference clock source changes, then reset to previous value after
-       reference clock changes.
-     */
-    if (kMCG_FllSrcExternal == MCG_S_IREFST_VAL)
-    {
-        change_drs = true;
-        /* Change the LSB of DRST_DRS. */
-        MCG->C4 ^= (1U << MCG_C4_DRST_DRS_SHIFT);
-    }
-
-    /* Set CLKS and IREFS. */
-    MCG->C1 =
-        ((MCG->C1 & ~(MCG_C1_CLKS_MASK | MCG_C1_IREFS_MASK)) | (MCG_C1_CLKS(kMCG_ClkOutSrcInternal)    /* CLKS = 1 */
-                                                                | MCG_C1_IREFS(kMCG_FllSrcInternal))); /* IREFS = 1 */
-
-    /* Wait and check status. */
-    while (kMCG_FllSrcInternal != MCG_S_IREFST_VAL)
-    {
-    }
-
-    /* Errata: ERR007993 */
-    if (change_drs)
-    {
-        MCG->C4 = mcg_c4;
-    }
-
-    while (kMCG_ClkOutStatInt != MCG_S_CLKST_VAL)
-    {
-    }
-
-    MCG->C4 = (mcg_c4 & ~(MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS_MASK)) | (MCG_C4_DRST_DRS(drs));
-
-    /* Wait for FLL stable time. */
-    if (fllStableDelay)
-    {
-        fllStableDelay();
-    }
-
-    return kStatus_Success;
-}
-
-status_t CLOCK_SetFbeMode(uint8_t frdiv, mcg_dmx32_t dmx32, mcg_drs_t drs, void (*fllStableDelay)(void))
-{
-    uint8_t mcg_c4;
-    bool change_drs = false;
-
-#if (defined(MCG_CONFIG_CHECK_PARAM) && MCG_CONFIG_CHECK_PARAM)
-    mcg_mode_t mode = CLOCK_GetMode();
-    if (!((kMCG_ModeFEE == mode) || (kMCG_ModeFBI == mode) || (kMCG_ModeFBE == mode) || (kMCG_ModeFEI == mode) ||
-          (kMCG_ModePBE == mode) || (kMCG_ModeBLPE == mode)))
-    {
-        return kStatus_MCG_ModeUnreachable;
-    }
-#endif
-
-    /* Change to FLL mode. */
-    MCG->C6 &= ~MCG_C6_PLLS_MASK;
-    while (MCG->S & MCG_S_PLLST_MASK)
-    {
-    }
-
-    /* Set LP bit to enable the FLL */
-    MCG->C2 &= ~MCG_C2_LP_MASK;
-
-    mcg_c4 = MCG->C4;
-
-    /*
-       Errata: ERR007993
-       Workaround: Invert MCG_C4[DMX32] or change MCG_C4[DRST_DRS] before
-       reference clock source changes, then reset to previous value after
-       reference clock changes.
-     */
-    if (kMCG_FllSrcInternal == MCG_S_IREFST_VAL)
-    {
-        change_drs = true;
-        /* Change the LSB of DRST_DRS. */
-        MCG->C4 ^= (1U << MCG_C4_DRST_DRS_SHIFT);
-    }
-
-    /* Set CLKS and IREFS. */
-    MCG->C1 = ((MCG->C1 & ~(MCG_C1_CLKS_MASK | MCG_C1_FRDIV_MASK | MCG_C1_IREFS_MASK)) |
-               (MCG_C1_CLKS(kMCG_ClkOutSrcExternal)    /* CLKS = 2 */
-                | MCG_C1_FRDIV(frdiv)                  /* FRDIV = frdiv */
-                | MCG_C1_IREFS(kMCG_FllSrcExternal))); /* IREFS = 0 */
-
-    /* Wait for Reference clock Status bit to clear */
-    while (kMCG_FllSrcExternal != MCG_S_IREFST_VAL)
-    {
-    }
-
-    /* Errata: ERR007993 */
-    if (change_drs)
-    {
-        MCG->C4 = mcg_c4;
-    }
-
-    /* Set DRST_DRS and DMX32. */
-    mcg_c4 = ((mcg_c4 & ~(MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS_MASK)) | (MCG_C4_DMX32(dmx32) | MCG_C4_DRST_DRS(drs)));
-
-    /* Wait for clock status bits to show clock source is ext ref clk */
-    while (kMCG_ClkOutStatExt != MCG_S_CLKST_VAL)
-    {
-    }
-
-    /* Wait for fll stable time. */
-    if (fllStableDelay)
-    {
-        fllStableDelay();
-    }
-
-    return kStatus_Success;
-}
-
-status_t CLOCK_SetBlpiMode(void)
-{
-#if (defined(MCG_CONFIG_CHECK_PARAM) && MCG_CONFIG_CHECK_PARAM)
-    if (MCG_S_CLKST_VAL != kMCG_ClkOutStatInt)
-    {
-        return kStatus_MCG_ModeUnreachable;
-    }
-#endif /* MCG_CONFIG_CHECK_PARAM */
-
-    /* Set LP. */
-    MCG->C2 |= MCG_C2_LP_MASK;
-
-    return kStatus_Success;
-}
-
-status_t CLOCK_SetBlpeMode(void)
-{
-#if (defined(MCG_CONFIG_CHECK_PARAM) && MCG_CONFIG_CHECK_PARAM)
-    if (MCG_S_CLKST_VAL != kMCG_ClkOutStatExt)
-    {
-        return kStatus_MCG_ModeUnreachable;
-    }
-#endif
-
-    /* Set LP bit to enter BLPE mode. */
-    MCG->C2 |= MCG_C2_LP_MASK;
-
-    return kStatus_Success;
-}
-
-status_t CLOCK_SetPbeMode(mcg_pll_clk_select_t pllcs, mcg_pll_config_t const *config)
-{
-    /*
-       This function is designed to change MCG to PBE mode from PEE/BLPE/FBE,
-       but with this workflow, the source mode could be all modes except PEI/PBI.
-     */
-    MCG->C2 &= ~MCG_C2_LP_MASK; /* Disable lowpower. */
-
-    /* Change to use external clock first. */
-    MCG->C1 = ((MCG->C1 & ~(MCG_C1_CLKS_MASK | MCG_C1_IREFS_MASK)) | MCG_C1_CLKS(kMCG_ClkOutSrcExternal));
-
-    /* Wait for CLKST clock status bits to show clock source is ext ref clk */
-    while ((MCG->S & (MCG_S_IREFST_MASK | MCG_S_CLKST_MASK)) !=
-           (MCG_S_IREFST(kMCG_FllSrcExternal) | MCG_S_CLKST(kMCG_ClkOutStatExt)))
-    {
-    }
-
-    /* Disable PLL first, then configure PLL. */
-    MCG->C6 &= ~MCG_C6_PLLS_MASK;
-    while (MCG->S & MCG_S_PLLST_MASK)
-    {
-    }
-
-    /* Configure the PLL. */
-    {
-        CLOCK_EnablePll0(config);
-    }
-
-    /* Change to PLL mode. */
-    MCG->C6 |= MCG_C6_PLLS_MASK;
-    while (!(MCG->S & MCG_S_PLLST_MASK))
-    {
-    }
-
-    return kStatus_Success;
-}
-
-status_t CLOCK_SetPeeMode(void)
-{
-#if (defined(MCG_CONFIG_CHECK_PARAM) && MCG_CONFIG_CHECK_PARAM)
-    mcg_mode_t mode = CLOCK_GetMode();
-    if (kMCG_ModePBE != mode)
-    {
-        return kStatus_MCG_ModeUnreachable;
-    }
-#endif
-
-    /* Change to use PLL/FLL output clock first. */
-    MCG->C1 = (MCG->C1 & ~MCG_C1_CLKS_MASK) | MCG_C1_CLKS(kMCG_ClkOutSrcOut);
-
-    /* Wait for clock status bits to update */
-    while (MCG_S_CLKST_VAL != kMCG_ClkOutStatPll)
-    {
-    }
-
-    return kStatus_Success;
-}
-
-status_t CLOCK_ExternalModeToFbeModeQuick(void)
-{
-#if (defined(MCG_CONFIG_CHECK_PARAM) && MCG_CONFIG_CHECK_PARAM)
-    if (MCG->S & MCG_S_IREFST_MASK)
-    {
-        return kStatus_MCG_ModeInvalid;
-    }
-#endif /* MCG_CONFIG_CHECK_PARAM */
-
-    /* Disable low power */
-    MCG->C2 &= ~MCG_C2_LP_MASK;
-
-    MCG->C1 = ((MCG->C1 & ~MCG_C1_CLKS_MASK) | MCG_C1_CLKS(kMCG_ClkOutSrcExternal));
-    while (MCG_S_CLKST_VAL != kMCG_ClkOutStatExt)
-    {
-    }
-
-    /* Disable PLL. */
-    MCG->C6 &= ~MCG_C6_PLLS_MASK;
-    while (MCG->S & MCG_S_PLLST_MASK)
-    {
-    }
-
-    return kStatus_Success;
-}
-
-status_t CLOCK_InternalModeToFbiModeQuick(void)
-{
-#if (defined(MCG_CONFIG_CHECK_PARAM) && MCG_CONFIG_CHECK_PARAM)
-    if (!(MCG->S & MCG_S_IREFST_MASK))
-    {
-        return kStatus_MCG_ModeInvalid;
-    }
-#endif
-
-    /* Disable low power */
-    MCG->C2 &= ~MCG_C2_LP_MASK;
-
-    MCG->C1 = ((MCG->C1 & ~MCG_C1_CLKS_MASK) | MCG_C1_CLKS(kMCG_ClkOutSrcInternal));
-    while (MCG_S_CLKST_VAL != kMCG_ClkOutStatInt)
-    {
-    }
-
-    return kStatus_Success;
-}
-
-status_t CLOCK_BootToFeiMode(mcg_drs_t drs, void (*fllStableDelay)(void))
-{
-    return CLOCK_SetFeiMode(drs, fllStableDelay);
-}
-
-status_t CLOCK_BootToFeeMode(
-    mcg_oscsel_t oscsel, uint8_t frdiv, mcg_dmx32_t dmx32, mcg_drs_t drs, void (*fllStableDelay)(void))
-{
-    CLOCK_SetExternalRefClkConfig(oscsel);
-
-    return CLOCK_SetFeeMode(frdiv, dmx32, drs, fllStableDelay);
-}
-
-status_t CLOCK_BootToBlpiMode(uint8_t fcrdiv, mcg_irc_mode_t ircs, uint8_t ircEnableMode)
-{
-    /* If reset mode is FEI mode, set MCGIRCLK and always success. */
-    CLOCK_SetInternalRefClkConfig(ircEnableMode, ircs, fcrdiv);
-
-    /* If reset mode is not BLPI, first enter FBI mode. */
-    MCG->C1 = (MCG->C1 & ~MCG_C1_CLKS_MASK) | MCG_C1_CLKS(kMCG_ClkOutSrcInternal);
-    while (MCG_S_CLKST_VAL != kMCG_ClkOutStatInt)
-    {
-    }
-
-    /* Enter BLPI mode. */
-    MCG->C2 |= MCG_C2_LP_MASK;
-
-    return kStatus_Success;
-}
-
-status_t CLOCK_BootToBlpeMode(mcg_oscsel_t oscsel)
-{
-    CLOCK_SetExternalRefClkConfig(oscsel);
-
-    /* Set to FBE mode. */
-    MCG->C1 =
-        ((MCG->C1 & ~(MCG_C1_CLKS_MASK | MCG_C1_IREFS_MASK)) | (MCG_C1_CLKS(kMCG_ClkOutSrcExternal)    /* CLKS = 2 */
-                                                                | MCG_C1_IREFS(kMCG_FllSrcExternal))); /* IREFS = 0 */
-
-    /* Wait for MCG_S[CLKST] and MCG_S[IREFST]. */
-    while ((MCG->S & (MCG_S_IREFST_MASK | MCG_S_CLKST_MASK)) !=
-           (MCG_S_IREFST(kMCG_FllSrcExternal) | MCG_S_CLKST(kMCG_ClkOutStatExt)))
-    {
-    }
-
-    /* In FBE now, start to enter BLPE. */
-    MCG->C2 |= MCG_C2_LP_MASK;
-
-    return kStatus_Success;
-}
-
-status_t CLOCK_BootToPeeMode(mcg_oscsel_t oscsel, mcg_pll_clk_select_t pllcs, mcg_pll_config_t const *config)
-{
-    assert(config);
-
-    CLOCK_SetExternalRefClkConfig(oscsel);
-
-    CLOCK_SetPbeMode(pllcs, config);
-
-    /* Change to use PLL output clock. */
-    MCG->C1 = (MCG->C1 & ~MCG_C1_CLKS_MASK) | MCG_C1_CLKS(kMCG_ClkOutSrcOut);
-    while (MCG_S_CLKST_VAL != kMCG_ClkOutStatPll)
-    {
-    }
-
-    return kStatus_Success;
-}
-
-/*
-   The transaction matrix. It defines the path for mode switch, the row is for
-   current mode and the column is target mode.
-   For example, switch from FEI to PEE:
-   1. Current mode FEI, next mode is mcgModeMatrix[FEI][PEE] = FBE, so swith to FBE.
-   2. Current mode FBE, next mode is mcgModeMatrix[FBE][PEE] = PBE, so swith to PBE.
-   3. Current mode PBE, next mode is mcgModeMatrix[PBE][PEE] = PEE, so swith to PEE.
-   Thus the MCG mode has changed from FEI to PEE.
- */
-static const mcg_mode_t mcgModeMatrix[8][8] = {
-    {kMCG_ModeFEI, kMCG_ModeFBI, kMCG_ModeFBI, kMCG_ModeFEE, kMCG_ModeFBE, kMCG_ModeFBE, kMCG_ModeFBE,
-     kMCG_ModeFBE}, /* FEI */
-    {kMCG_ModeFEI, kMCG_ModeFBI, kMCG_ModeBLPI, kMCG_ModeFEE, kMCG_ModeFBE, kMCG_ModeFBE, kMCG_ModeFBE,
-     kMCG_ModeFBE}, /* FBI */
-    {kMCG_ModeFBI, kMCG_ModeFBI, kMCG_ModeBLPI, kMCG_ModeFBI, kMCG_ModeFBI, kMCG_ModeFBI, kMCG_ModeFBI,
-     kMCG_ModeFBI}, /* BLPI */
-    {kMCG_ModeFEI, kMCG_ModeFBI, kMCG_ModeFBI, kMCG_ModeFEE, kMCG_ModeFBE, kMCG_ModeFBE, kMCG_ModeFBE,
-     kMCG_ModeFBE}, /* FEE */
-    {kMCG_ModeFEI, kMCG_ModeFBI, kMCG_ModeFBI, kMCG_ModeFEE, kMCG_ModeFBE, kMCG_ModeBLPE, kMCG_ModePBE,
-     kMCG_ModePBE}, /* FBE */
-    {kMCG_ModeFBE, kMCG_ModeFBE, kMCG_ModeFBE, kMCG_ModeFBE, kMCG_ModeFBE, kMCG_ModeBLPE, kMCG_ModePBE,
-     kMCG_ModePBE}, /* BLPE */
-    {kMCG_ModeFBE, kMCG_ModeFBE, kMCG_ModeFBE, kMCG_ModeFBE, kMCG_ModeFBE, kMCG_ModeBLPE, kMCG_ModePBE,
-     kMCG_ModePEE}, /* PBE */
-    {kMCG_ModePBE, kMCG_ModePBE, kMCG_ModePBE, kMCG_ModePBE, kMCG_ModePBE, kMCG_ModePBE, kMCG_ModePBE,
-     kMCG_ModePBE} /* PEE */
-    /*    FEI           FBI           BLPI           FEE           FBE           BLPE           PBE           PEE */
-};
-
-status_t CLOCK_SetMcgConfig(const mcg_config_t *config)
-{
-    mcg_mode_t next_mode;
-    status_t status = kStatus_Success;
-
-    mcg_pll_clk_select_t pllcs = kMCG_PllClkSelPll0;
-
-    /* If need to change external clock, MCG_C7[OSCSEL]. */
-    if (MCG_C7_OSCSEL_VAL != config->oscsel)
-    {
-        /* If external clock is in use, change to FEI first. */
-        if (!(MCG->S & MCG_S_IRCST_MASK))
-        {
-            CLOCK_ExternalModeToFbeModeQuick();
-            CLOCK_SetFeiMode(config->drs, (void (*)(void))0);
-        }
-
-        CLOCK_SetExternalRefClkConfig(config->oscsel);
-    }
-
-    /* Re-configure MCGIRCLK, if MCGIRCLK is used as system clock source, then change to FEI/PEI first. */
-    if (MCG_S_CLKST_VAL == kMCG_ClkOutStatInt)
-    {
-        MCG->C2 &= ~MCG_C2_LP_MASK; /* Disable lowpower. */
-
-        {
-            CLOCK_SetFeiMode(config->drs, CLOCK_FllStableDelay);
-        }
-    }
-
-    /* Configure MCGIRCLK. */
-    CLOCK_SetInternalRefClkConfig(config->irclkEnableMode, config->ircs, config->fcrdiv);
-
-    next_mode = CLOCK_GetMode();
-
-    do
-    {
-        next_mode = mcgModeMatrix[next_mode][config->mcgMode];
-
-        switch (next_mode)
-        {
-            case kMCG_ModeFEI:
-                status = CLOCK_SetFeiMode(config->drs, CLOCK_FllStableDelay);
-                break;
-            case kMCG_ModeFEE:
-                status = CLOCK_SetFeeMode(config->frdiv, config->dmx32, config->drs, CLOCK_FllStableDelay);
-                break;
-            case kMCG_ModeFBI:
-                status = CLOCK_SetFbiMode(config->drs, (void (*)(void))0);
-                break;
-            case kMCG_ModeFBE:
-                status = CLOCK_SetFbeMode(config->frdiv, config->dmx32, config->drs, (void (*)(void))0);
-                break;
-            case kMCG_ModeBLPI:
-                status = CLOCK_SetBlpiMode();
-                break;
-            case kMCG_ModeBLPE:
-                status = CLOCK_SetBlpeMode();
-                break;
-            case kMCG_ModePBE:
-                /* If target mode is not PBE or PEE, then only need to set CLKS = EXT here. */
-                if ((kMCG_ModePEE == config->mcgMode) || (kMCG_ModePBE == config->mcgMode))
-                {
-                    {
-                        status = CLOCK_SetPbeMode(pllcs, &config->pll0Config);
-                    }
-                }
-                else
-                {
-                    MCG->C1 = ((MCG->C1 & ~MCG_C1_CLKS_MASK) | MCG_C1_CLKS(kMCG_ClkOutSrcExternal));
-                    while (MCG_S_CLKST_VAL != kMCG_ClkOutStatExt)
-                    {
-                    }
-                }
-                break;
-            case kMCG_ModePEE:
-                status = CLOCK_SetPeeMode();
-                break;
-            default:
-                break;
-        }
-        if (kStatus_Success != status)
-        {
-            return status;
-        }
-    } while (next_mode != config->mcgMode);
-
-    if (config->pll0Config.enableMode & kMCG_PllEnableIndependent)
-    {
-        CLOCK_EnablePll0(&config->pll0Config);
-    }
-    else
-    {
-        MCG->C5 &= ~(uint32_t)kMCG_PllEnableIndependent;
-    }
-    return kStatus_Success;
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_clock.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1510 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _FSL_CLOCK_H_
-#define _FSL_CLOCK_H_
-
-#include "fsl_device_registers.h"
-#include <stdint.h>
-#include <stdbool.h>
-#include <assert.h>
-
-/*! @addtogroup clock */
-/*! @{ */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @brief Clock driver version. */
-#define FSL_CLOCK_DRIVER_VERSION (MAKE_VERSION(2, 1, 0)) /*!< Version 2.1.0. */
-
-/*! @brief External XTAL0 (OSC0) clock frequency.
- *
- * The XTAL0/EXTAL0 (OSC0) clock frequency in Hz, when the clock is setup, use the
- * function CLOCK_SetXtal0Freq to set the value in to clock driver. For example,
- * if XTAL0 is 8MHz,
- * @code
- * CLOCK_InitOsc0(...); // Setup the OSC0
- * CLOCK_SetXtal0Freq(80000000); // Set the XTAL0 value to clock driver.
- * @endcode
- *
- * This is important for the multicore platforms, only one core needs to setup
- * OSC0 using CLOCK_InitOsc0, all other cores need to call CLOCK_SetXtal0Freq
- * to get valid clock frequency.
- */
-extern uint32_t g_xtal0Freq;
-
-/*! @brief External XTAL32/EXTAL32/RTC_CLKIN clock frequency.
- *
- * The XTAL32/EXTAL32/RTC_CLKIN clock frequency in Hz, when the clock is setup, use the
- * function CLOCK_SetXtal32Freq to set the value in to clock driver.
- *
- * This is important for the multicore platforms, only one core needs to setup
- * the clock, all other cores need to call CLOCK_SetXtal32Freq
- * to get valid clock frequency.
- */
-extern uint32_t g_xtal32Freq;
-
-/*! @brief IRC48M clock frequency in Hz. */
-#define MCG_INTERNAL_IRC_48M 48000000U
-
-#if (defined(OSC) && !(defined(OSC0)))
-#define OSC0 OSC
-#endif
-
-/*! @brief Clock ip name array for DMAMUX. */
-#define DMAMUX_CLOCKS  \
-    {                  \
-        kCLOCK_Dmamux0 \
-    }
-
-/*! @brief Clock ip name array for RTC. */
-#define RTC_CLOCKS  \
-    {               \
-        kCLOCK_Rtc0 \
-    }
-
-/*! @brief Clock ip name array for ENET. */
-#define ENET_CLOCKS  \
-    {                \
-        kCLOCK_Enet0 \
-    }
-
-/*! @brief Clock ip name array for PORT. */
-#define PORT_CLOCKS                                                          \
-    {                                                                        \
-        kCLOCK_PortA, kCLOCK_PortB, kCLOCK_PortC, kCLOCK_PortD, kCLOCK_PortE \
-    }
-
-/*! @brief Clock ip name array for SAI. */
-#define SAI_CLOCKS  \
-    {               \
-        kCLOCK_Sai0 \
-    }
-
-/*! @brief Clock ip name array for FLEXBUS. */
-#define FLEXBUS_CLOCKS  \
-    {                   \
-        kCLOCK_Flexbus0 \
-    }
-
-/*! @brief Clock ip name array for EWM. */
-#define EWM_CLOCKS  \
-    {               \
-        kCLOCK_Ewm0 \
-    }
-
-/*! @brief Clock ip name array for PIT. */
-#define PIT_CLOCKS  \
-    {               \
-        kCLOCK_Pit0 \
-    }
-
-/*! @brief Clock ip name array for DSPI. */
-#define DSPI_CLOCKS                           \
-    {                                         \
-        kCLOCK_Spi0, kCLOCK_Spi1, kCLOCK_Spi2 \
-    }
-
-/*! @brief Clock ip name array for LPTMR. */
-#define LPTMR_CLOCKS  \
-    {                 \
-        kCLOCK_Lptmr0 \
-    }
-
-/*! @brief Clock ip name array for SDHC. */
-#define SDHC_CLOCKS  \
-    {                \
-        kCLOCK_Sdhc0 \
-    }
-
-/*! @brief Clock ip name array for FTM. */
-#define FTM_CLOCKS                                         \
-    {                                                      \
-        kCLOCK_Ftm0, kCLOCK_Ftm1, kCLOCK_Ftm2, kCLOCK_Ftm3 \
-    }
-
-/*! @brief Clock ip name array for EDMA. */
-#define EDMA_CLOCKS \
-    {               \
-        kCLOCK_Dma0 \
-    }
-
-/*! @brief Clock ip name array for FLEXCAN. */
-#define FLEXCAN_CLOCKS  \
-    {                   \
-        kCLOCK_Flexcan0 \
-    }
-
-/*! @brief Clock ip name array for DAC. */
-#define DAC_CLOCKS               \
-    {                            \
-        kCLOCK_Dac0, kCLOCK_Dac1 \
-    }
-
-/*! @brief Clock ip name array for ADC16. */
-#define ADC16_CLOCKS             \
-    {                            \
-        kCLOCK_Adc0, kCLOCK_Adc1 \
-    }
-
-/*! @brief Clock ip name array for MMCAU. */
-#define MMCAU_CLOCKS  \
-    {                 \
-        kCLOCK_Mmcau0 \
-    }
-
-/*! @brief Clock ip name array for MPU. */
-#define MPU_CLOCKS  \
-    {               \
-        kCLOCK_Mpu0 \
-    }
-
-/*! @brief Clock ip name array for VREF. */
-#define VREF_CLOCKS  \
-    {                \
-        kCLOCK_Vref0 \
-    }
-
-/*! @brief Clock ip name array for CMT. */
-#define CMT_CLOCKS  \
-    {               \
-        kCLOCK_Cmt0 \
-    }
-
-/*! @brief Clock ip name array for UART. */
-#define UART_CLOCKS                                                                        \
-    {                                                                                      \
-        kCLOCK_Uart0, kCLOCK_Uart1, kCLOCK_Uart2, kCLOCK_Uart3, kCLOCK_Uart4, kCLOCK_Uart5 \
-    }
-
-/*! @brief Clock ip name array for RNGA. */
-#define RNGA_CLOCKS  \
-    {                \
-        kCLOCK_Rnga0 \
-    }
-
-/*! @brief Clock ip name array for CRC. */
-#define CRC_CLOCKS  \
-    {               \
-        kCLOCK_Crc0 \
-    }
-
-/*! @brief Clock ip name array for I2C. */
-#define I2C_CLOCKS                            \
-    {                                         \
-        kCLOCK_I2c0, kCLOCK_I2c1, kCLOCK_I2c2 \
-    }
-
-/*! @brief Clock ip name array for PDB. */
-#define PDB_CLOCKS  \
-    {               \
-        kCLOCK_Pdb0 \
-    }
-
-/*! @brief Clock ip name array for FTF. */
-#define FTF_CLOCKS  \
-    {               \
-        kCLOCK_Ftf0 \
-    }
-
-/*! @brief Clock ip name array for CMP. */
-#define CMP_CLOCKS                            \
-    {                                         \
-        kCLOCK_Cmp0, kCLOCK_Cmp1, kCLOCK_Cmp2 \
-    }
-
-/*!
- * @brief LPO clock frequency.
- */
-#define LPO_CLK_FREQ 1000U
-
-/*! @brief Peripherals clock source definition. */
-#define SYS_CLK kCLOCK_CoreSysClk
-#define BUS_CLK kCLOCK_BusClk
-
-#define I2C0_CLK_SRC BUS_CLK
-#define I2C1_CLK_SRC BUS_CLK
-#define I2C2_CLK_SRC BUS_CLK
-#define DSPI0_CLK_SRC BUS_CLK
-#define DSPI1_CLK_SRC BUS_CLK
-#define DSPI2_CLK_SRC BUS_CLK
-#define UART0_CLK_SRC SYS_CLK
-#define UART1_CLK_SRC SYS_CLK
-#define UART2_CLK_SRC BUS_CLK
-#define UART3_CLK_SRC BUS_CLK
-#define UART4_CLK_SRC BUS_CLK
-#define UART5_CLK_SRC BUS_CLK
-
-/*! @brief Clock name used to get clock frequency. */
-typedef enum _clock_name
-{
-
-    /* ----------------------------- System layer clock -------------------------------*/
-    kCLOCK_CoreSysClk,    /*!< Core/system clock                                         */
-    kCLOCK_PlatClk,       /*!< Platform clock                                            */
-    kCLOCK_BusClk,        /*!< Bus clock                                                 */
-    kCLOCK_FlexBusClk,    /*!< FlexBus clock                                             */
-    kCLOCK_FlashClk,      /*!< Flash clock                                               */
-    kCLOCK_FastPeriphClk, /*!< Fast peripheral clock                                     */
-    kCLOCK_PllFllSelClk,  /*!< The clock after SIM[PLLFLLSEL].                           */
-
-    /* ---------------------------------- OSC clock -----------------------------------*/
-    kCLOCK_Er32kClk,       /*!< External reference 32K clock (ERCLK32K)                   */
-    kCLOCK_Osc0ErClk,      /*!< OSC0 external reference clock (OSC0ERCLK)                 */
-    kCLOCK_Osc1ErClk,      /*!< OSC1 external reference clock (OSC1ERCLK)                 */
-    kCLOCK_Osc0ErClkUndiv, /*!< OSC0 external reference undivided clock(OSC0ERCLK_UNDIV). */
-
-    /* ----------------------------- MCG and MCG-Lite clock ---------------------------*/
-    kCLOCK_McgFixedFreqClk,   /*!< MCG fixed frequency clock (MCGFFCLK)                      */
-    kCLOCK_McgInternalRefClk, /*!< MCG internal reference clock (MCGIRCLK)                   */
-    kCLOCK_McgFllClk,         /*!< MCGFLLCLK                                                 */
-    kCLOCK_McgPll0Clk,        /*!< MCGPLL0CLK                                                */
-    kCLOCK_McgPll1Clk,        /*!< MCGPLL1CLK                                                */
-    kCLOCK_McgExtPllClk,      /*!< EXT_PLLCLK                                                */
-    kCLOCK_McgPeriphClk,      /*!< MCG peripheral clock (MCGPCLK)                            */
-    kCLOCK_McgIrc48MClk,      /*!< MCG IRC48M clock                                          */
-
-    /* --------------------------------- Other clock ----------------------------------*/
-    kCLOCK_LpoClk, /*!< LPO clock                                                 */
-
-} clock_name_t;
-
-/*! @brief USB clock source definition. */
-typedef enum _clock_usb_src
-{
-    kCLOCK_UsbSrcPll0 = SIM_SOPT2_USBSRC(1U) | SIM_SOPT2_PLLFLLSEL(1U),   /*!< Use PLL0.      */
-    kCLOCK_UsbSrcIrc48M = SIM_SOPT2_USBSRC(1U) | SIM_SOPT2_PLLFLLSEL(3U), /*!< Use IRC48M.    */
-    kCLOCK_UsbSrcExt = SIM_SOPT2_USBSRC(0U)                               /*!< Use USB_CLKIN. */
-} clock_usb_src_t;
-
-/*------------------------------------------------------------------------------
-
- clock_gate_t definition:
-
- 31                              16                              0
- -----------------------------------------------------------------
- | SIM_SCGC register offset       |   control bit offset in SCGC |
- -----------------------------------------------------------------
-
- For example, the SDHC clock gate is controlled by SIM_SCGC3[17], the
- SIM_SCGC3 offset in SIM is 0x1030, then kCLOCK_GateSdhc0 is defined as
-
-              kCLOCK_GateSdhc0 = (0x1030 << 16) | 17;
-
-------------------------------------------------------------------------------*/
-
-#define CLK_GATE_REG_OFFSET_SHIFT 16U
-#define CLK_GATE_REG_OFFSET_MASK 0xFFFF0000U
-#define CLK_GATE_BIT_SHIFT_SHIFT 0U
-#define CLK_GATE_BIT_SHIFT_MASK 0x0000FFFFU
-
-#define CLK_GATE_DEFINE(reg_offset, bit_shift)                                  \
-    ((((reg_offset) << CLK_GATE_REG_OFFSET_SHIFT) & CLK_GATE_REG_OFFSET_MASK) | \
-     (((bit_shift) << CLK_GATE_BIT_SHIFT_SHIFT) & CLK_GATE_BIT_SHIFT_MASK))
-
-#define CLK_GATE_ABSTRACT_REG_OFFSET(x) (((x)&CLK_GATE_REG_OFFSET_MASK) >> CLK_GATE_REG_OFFSET_SHIFT)
-#define CLK_GATE_ABSTRACT_BITS_SHIFT(x) (((x)&CLK_GATE_BIT_SHIFT_MASK) >> CLK_GATE_BIT_SHIFT_SHIFT)
-
-/*! @brief Clock gate name used for CLOCK_EnableClock/CLOCK_DisableClock. */
-typedef enum _clock_ip_name
-{
-    kCLOCK_IpInvalid = 0U,
-    kCLOCK_I2c2 = CLK_GATE_DEFINE(0x1028U, 6U),
-    kCLOCK_Uart4 = CLK_GATE_DEFINE(0x1028U, 10U),
-    kCLOCK_Uart5 = CLK_GATE_DEFINE(0x1028U, 11U),
-
-    kCLOCK_Enet0 = CLK_GATE_DEFINE(0x102CU, 0U),
-    kCLOCK_Dac0 = CLK_GATE_DEFINE(0x102CU, 12U),
-    kCLOCK_Dac1 = CLK_GATE_DEFINE(0x102CU, 13U),
-
-    kCLOCK_Spi2 = CLK_GATE_DEFINE(0x1030U, 12U),
-    kCLOCK_Sdhc0 = CLK_GATE_DEFINE(0x1030U, 17U),
-    kCLOCK_Ftm3 = CLK_GATE_DEFINE(0x1030U, 25U),
-    kCLOCK_Adc1 = CLK_GATE_DEFINE(0x1030U, 27U),
-
-    kCLOCK_Ewm0 = CLK_GATE_DEFINE(0x1034U, 1U),
-    kCLOCK_Cmt0 = CLK_GATE_DEFINE(0x1034U, 2U),
-    kCLOCK_I2c0 = CLK_GATE_DEFINE(0x1034U, 6U),
-    kCLOCK_I2c1 = CLK_GATE_DEFINE(0x1034U, 7U),
-    kCLOCK_Uart0 = CLK_GATE_DEFINE(0x1034U, 10U),
-    kCLOCK_Uart1 = CLK_GATE_DEFINE(0x1034U, 11U),
-    kCLOCK_Uart2 = CLK_GATE_DEFINE(0x1034U, 12U),
-    kCLOCK_Uart3 = CLK_GATE_DEFINE(0x1034U, 13U),
-    kCLOCK_Usbfs0 = CLK_GATE_DEFINE(0x1034U, 18U),
-    kCLOCK_Cmp0 = CLK_GATE_DEFINE(0x1034U, 19U),
-    kCLOCK_Cmp1 = CLK_GATE_DEFINE(0x1034U, 19U),
-    kCLOCK_Cmp2 = CLK_GATE_DEFINE(0x1034U, 19U),
-    kCLOCK_Vref0 = CLK_GATE_DEFINE(0x1034U, 20U),
-
-    kCLOCK_Lptmr0 = CLK_GATE_DEFINE(0x1038U, 0U),
-    kCLOCK_PortA = CLK_GATE_DEFINE(0x1038U, 9U),
-    kCLOCK_PortB = CLK_GATE_DEFINE(0x1038U, 10U),
-    kCLOCK_PortC = CLK_GATE_DEFINE(0x1038U, 11U),
-    kCLOCK_PortD = CLK_GATE_DEFINE(0x1038U, 12U),
-    kCLOCK_PortE = CLK_GATE_DEFINE(0x1038U, 13U),
-
-    kCLOCK_Ftf0 = CLK_GATE_DEFINE(0x103CU, 0U),
-    kCLOCK_Dmamux0 = CLK_GATE_DEFINE(0x103CU, 1U),
-    kCLOCK_Flexcan0 = CLK_GATE_DEFINE(0x103CU, 4U),
-    kCLOCK_Rnga0 = CLK_GATE_DEFINE(0x103CU, 9U),
-    kCLOCK_Spi0 = CLK_GATE_DEFINE(0x103CU, 12U),
-    kCLOCK_Spi1 = CLK_GATE_DEFINE(0x103CU, 13U),
-    kCLOCK_Sai0 = CLK_GATE_DEFINE(0x103CU, 15U),
-    kCLOCK_Crc0 = CLK_GATE_DEFINE(0x103CU, 18U),
-    kCLOCK_Usbdcd0 = CLK_GATE_DEFINE(0x103CU, 21U),
-    kCLOCK_Pdb0 = CLK_GATE_DEFINE(0x103CU, 22U),
-    kCLOCK_Pit0 = CLK_GATE_DEFINE(0x103CU, 23U),
-    kCLOCK_Ftm0 = CLK_GATE_DEFINE(0x103CU, 24U),
-    kCLOCK_Ftm1 = CLK_GATE_DEFINE(0x103CU, 25U),
-    kCLOCK_Ftm2 = CLK_GATE_DEFINE(0x103CU, 26U),
-    kCLOCK_Adc0 = CLK_GATE_DEFINE(0x103CU, 27U),
-    kCLOCK_Rtc0 = CLK_GATE_DEFINE(0x103CU, 29U),
-
-    kCLOCK_Flexbus0 = CLK_GATE_DEFINE(0x1040U, 0U),
-    kCLOCK_Dma0 = CLK_GATE_DEFINE(0x1040U, 1U),
-    kCLOCK_Mpu0 = CLK_GATE_DEFINE(0x1040U, 2U),
-} clock_ip_name_t;
-
-/*!@brief SIM configuration structure for clock setting. */
-typedef struct _sim_clock_config
-{
-    uint8_t pllFllSel; /*!< PLL/FLL/IRC48M selection.    */
-    uint8_t er32kSrc;  /*!< ERCLK32K source selection.   */
-    uint32_t clkdiv1;  /*!< SIM_CLKDIV1.                 */
-} sim_clock_config_t;
-
-/*! @brief OSC work mode. */
-typedef enum _osc_mode
-{
-    kOSC_ModeExt = 0U, /*!< Use external clock.   */
-#if (defined(MCG_C2_EREFS_MASK) && !(defined(MCG_C2_EREFS0_MASK)))
-    kOSC_ModeOscLowPower = MCG_C2_EREFS_MASK, /*!< Oscillator low power. */
-#else
-    kOSC_ModeOscLowPower = MCG_C2_EREFS0_MASK, /*!< Oscillator low power. */
-#endif
-    kOSC_ModeOscHighGain = 0U
-#if (defined(MCG_C2_EREFS_MASK) && !(defined(MCG_C2_EREFS0_MASK)))
-                           |
-                           MCG_C2_EREFS_MASK
-#else
-                           |
-                           MCG_C2_EREFS0_MASK
-#endif
-#if (defined(MCG_C2_HGO_MASK) && !(defined(MCG_C2_HGO0_MASK)))
-                           |
-                           MCG_C2_HGO_MASK, /*!< Oscillator high gain. */
-#else
-                           |
-                           MCG_C2_HGO0_MASK, /*!< Oscillator high gain. */
-#endif
-} osc_mode_t;
-
-/*! @brief Oscillator capacitor load setting.*/
-enum _osc_cap_load
-{
-    kOSC_Cap2P = OSC_CR_SC2P_MASK,  /*!< 2  pF capacitor load */
-    kOSC_Cap4P = OSC_CR_SC4P_MASK,  /*!< 4  pF capacitor load */
-    kOSC_Cap8P = OSC_CR_SC8P_MASK,  /*!< 8  pF capacitor load */
-    kOSC_Cap16P = OSC_CR_SC16P_MASK /*!< 16 pF capacitor load */
-};
-
-/*! @brief OSCERCLK enable mode. */
-enum _oscer_enable_mode
-{
-    kOSC_ErClkEnable = OSC_CR_ERCLKEN_MASK,       /*!< Enable.              */
-    kOSC_ErClkEnableInStop = OSC_CR_EREFSTEN_MASK /*!< Enable in stop mode. */
-};
-
-/*! @brief OSC configuration for OSCERCLK. */
-typedef struct _oscer_config
-{
-    uint8_t enableMode; /*!< OSCERCLK enable mode. OR'ed value of @ref _oscer_enable_mode. */
-
-} oscer_config_t;
-
-/*!
- * @brief OSC Initialization Configuration Structure
- *
- * Defines the configuration data structure to initialize the OSC.
- * When porting to a new board, please set the following members
- * according to board setting:
- * 1. freq: The external frequency.
- * 2. workMode: The OSC module mode.
- */
-typedef struct _osc_config
-{
-    uint32_t freq;              /*!< External clock frequency.    */
-    uint8_t capLoad;            /*!< Capacitor load setting.      */
-    osc_mode_t workMode;        /*!< OSC work mode setting.       */
-    oscer_config_t oscerConfig; /*!< Configuration for OSCERCLK.  */
-} osc_config_t;
-
-/*! @brief MCG FLL reference clock source select. */
-typedef enum _mcg_fll_src
-{
-    kMCG_FllSrcExternal, /*!< External reference clock is selected          */
-    kMCG_FllSrcInternal  /*!< The slow internal reference clock is selected */
-} mcg_fll_src_t;
-
-/*! @brief MCG internal reference clock select */
-typedef enum _mcg_irc_mode
-{
-    kMCG_IrcSlow, /*!< Slow internal reference clock selected */
-    kMCG_IrcFast  /*!< Fast internal reference clock selected */
-} mcg_irc_mode_t;
-
-/*! @brief MCG DCO Maximum Frequency with 32.768 kHz Reference */
-typedef enum _mcg_dmx32
-{
-    kMCG_Dmx32Default, /*!< DCO has a default range of 25% */
-    kMCG_Dmx32Fine     /*!< DCO is fine-tuned for maximum frequency with 32.768 kHz reference */
-} mcg_dmx32_t;
-
-/*! @brief MCG DCO range select */
-typedef enum _mcg_drs
-{
-    kMCG_DrsLow,     /*!< Low frequency range       */
-    kMCG_DrsMid,     /*!< Mid frequency range       */
-    kMCG_DrsMidHigh, /*!< Mid-High frequency range  */
-    kMCG_DrsHigh     /*!< High frequency range      */
-} mcg_drs_t;
-
-/*! @brief MCG PLL reference clock select */
-typedef enum _mcg_pll_ref_src
-{
-    kMCG_PllRefOsc0, /*!< Selects OSC0 as PLL reference clock                 */
-    kMCG_PllRefOsc1  /*!< Selects OSC1 as PLL reference clock                 */
-} mcg_pll_ref_src_t;
-
-/*! @brief MCGOUT clock source. */
-typedef enum _mcg_clkout_src
-{
-    kMCG_ClkOutSrcOut,      /*!< Output of the FLL is selected (reset default)  */
-    kMCG_ClkOutSrcInternal, /*!< Internal reference clock is selected           */
-    kMCG_ClkOutSrcExternal, /*!< External reference clock is selected           */
-} mcg_clkout_src_t;
-
-/*! @brief MCG Automatic Trim Machine Select */
-typedef enum _mcg_atm_select
-{
-    kMCG_AtmSel32k, /*!< 32 kHz Internal Reference Clock selected  */
-    kMCG_AtmSel4m   /*!< 4 MHz Internal Reference Clock selected   */
-} mcg_atm_select_t;
-
-/*! @brief MCG OSC Clock Select */
-typedef enum _mcg_oscsel
-{
-    kMCG_OscselOsc, /*!< Selects System Oscillator (OSCCLK) */
-    kMCG_OscselRtc, /*!< Selects 32 kHz RTC Oscillator      */
-    kMCG_OscselIrc  /*!< Selects 48 MHz IRC Oscillator      */
-} mcg_oscsel_t;
-
-/*! @brief MCG PLLCS select */
-typedef enum _mcg_pll_clk_select
-{
-    kMCG_PllClkSelPll0, /*!< PLL0 output clock is selected  */
-    kMCG_PllClkSelPll1  /* PLL1 output clock is selected    */
-} mcg_pll_clk_select_t;
-
-/*! @brief MCG clock monitor mode. */
-typedef enum _mcg_monitor_mode
-{
-    kMCG_MonitorNone, /*!< Clock monitor is disabled.         */
-    kMCG_MonitorInt,  /*!< Trigger interrupt when clock lost. */
-    kMCG_MonitorReset /*!< System reset when clock lost.      */
-} mcg_monitor_mode_t;
-
-/*! @brief MCG status. */
-enum _mcg_status
-{
-    kStatus_MCG_ModeUnreachable = MAKE_STATUS(kStatusGroup_MCG, 0),       /*!< Can't switch to target mode. */
-    kStatus_MCG_ModeInvalid = MAKE_STATUS(kStatusGroup_MCG, 1),           /*!< Current mode invalid for the specific
-                                                                               function. */
-    kStatus_MCG_AtmBusClockInvalid = MAKE_STATUS(kStatusGroup_MCG, 2),    /*!< Invalid bus clock for ATM. */
-    kStatus_MCG_AtmDesiredFreqInvalid = MAKE_STATUS(kStatusGroup_MCG, 3), /*!< Invalid desired frequency for ATM. */
-    kStatus_MCG_AtmIrcUsed = MAKE_STATUS(kStatusGroup_MCG, 4),            /*!< IRC is used when using ATM. */
-    kStatus_MCG_AtmHardwareFail = MAKE_STATUS(kStatusGroup_MCG, 5),       /*!< Hardware fail occurs during ATM. */
-    kStatus_MCG_SourceUsed = MAKE_STATUS(kStatusGroup_MCG, 6)             /*!< Could not change clock source because
-                                                                               it is used currently. */
-};
-
-/*! @brief MCG status flags. */
-enum _mcg_status_flags_t
-{
-    kMCG_Osc0LostFlag = (1U << 0U),   /*!< OSC0 lost.         */
-    kMCG_Osc0InitFlag = (1U << 1U),   /*!< OSC0 crystal initialized. */
-    kMCG_RtcOscLostFlag = (1U << 4U), /*!< RTC OSC lost.      */
-    kMCG_Pll0LostFlag = (1U << 5U),   /*!< PLL0 lost.         */
-    kMCG_Pll0LockFlag = (1U << 6U),   /*!< PLL0 locked.       */
-};
-
-/*! @brief MCG internal reference clock (MCGIRCLK) enable mode definition. */
-enum _mcg_irclk_enable_mode
-{
-    kMCG_IrclkEnable = MCG_C1_IRCLKEN_MASK,       /*!< MCGIRCLK enable.              */
-    kMCG_IrclkEnableInStop = MCG_C1_IREFSTEN_MASK /*!< MCGIRCLK enable in stop mode. */
-};
-
-/*! @brief MCG PLL clock enable mode definition. */
-enum _mcg_pll_enable_mode
-{
-    kMCG_PllEnableIndependent = MCG_C5_PLLCLKEN0_MASK, /*!< MCGPLLCLK enable indepencent of
-                                                           MCG clock mode. Generally, PLL
-                                                           is disabled in FLL modes
-                                                           (FEI/FBI/FEE/FBE), set PLL clock
-                                                           enable independent will enable
-                                                           PLL in the FLL modes.          */
-    kMCG_PllEnableInStop = MCG_C5_PLLSTEN0_MASK        /*!< MCGPLLCLK enable in STOP mode. */
-};
-
-/*! @brief MCG mode definitions */
-typedef enum _mcg_mode
-{
-    kMCG_ModeFEI = 0U, /*!< FEI   - FLL Engaged Internal         */
-    kMCG_ModeFBI,      /*!< FBI   - FLL Bypassed Internal        */
-    kMCG_ModeBLPI,     /*!< BLPI  - Bypassed Low Power Internal  */
-    kMCG_ModeFEE,      /*!< FEE   - FLL Engaged External         */
-    kMCG_ModeFBE,      /*!< FBE   - FLL Bypassed External        */
-    kMCG_ModeBLPE,     /*!< BLPE  - Bypassed Low Power External  */
-    kMCG_ModePBE,      /*!< PBE   - PLL Bypassed External        */
-    kMCG_ModePEE,      /*!< PEE   - PLL Engaged External         */
-    kMCG_ModeError     /*!< Unknown mode                         */
-} mcg_mode_t;
-
-/*! @brief MCG PLL configuration. */
-typedef struct _mcg_pll_config
-{
-    uint8_t enableMode; /*!< Enable mode. OR'ed value of @ref _mcg_pll_enable_mode. */
-    uint8_t prdiv;      /*!< Reference divider PRDIV.    */
-    uint8_t vdiv;       /*!< VCO divider VDIV.           */
-} mcg_pll_config_t;
-
-/*! @brief MCG configure structure for mode change.
- *
- * When porting to a new board, please set the following members
- * according to board setting:
- * 1. frdiv: If FLL uses the external reference clock, please set this
- *    value to make sure external reference clock divided by frdiv is
- *    in the range 31.25kHz to 39.0625kHz.
- * 2. The PLL reference clock divider PRDIV: PLL reference clock frequency after
- *    PRDIV should be in the range of FSL_FEATURE_MCG_PLL_REF_MIN to
- *    FSL_FEATURE_MCG_PLL_REF_MAX.
- */
-typedef struct _mcg_config
-{
-    mcg_mode_t mcgMode; /*!< MCG mode.                   */
-
-    /* ----------------------- MCGIRCCLK settings ------------------------ */
-    uint8_t irclkEnableMode; /*!< MCGIRCLK enable mode.       */
-    mcg_irc_mode_t ircs;     /*!< Source, MCG_C2[IRCS].       */
-    uint8_t fcrdiv;          /*!< Divider, MCG_SC[FCRDIV].    */
-
-    /* ------------------------ MCG FLL settings ------------------------- */
-    uint8_t frdiv;       /*!< Divider MCG_C1[FRDIV].      */
-    mcg_drs_t drs;       /*!< DCO range MCG_C4[DRST_DRS]. */
-    mcg_dmx32_t dmx32;   /*!< MCG_C4[DMX32].              */
-    mcg_oscsel_t oscsel; /*!< OSC select MCG_C7[OSCSEL].  */
-
-    /* ------------------------ MCG PLL settings ------------------------- */
-    mcg_pll_config_t pll0Config; /*!< MCGPLL0CLK configuration.   */
-
-} mcg_config_t;
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif /* __cplusplus */
-
-/*!
- * @brief Set the XTAL0 frequency based on board setting.
- *
- * @param freq The XTAL0/EXTAL0 input clock frequency in Hz.
- */
-static inline void CLOCK_SetXtal0Freq(uint32_t freq)
-{
-    g_xtal0Freq = freq;
-}
-
-/*!
- * @brief Set the XTAL32/RTC_CLKIN frequency based on board setting.
- *
- * @param freq The XTAL32/EXTAL32/RTC_CLKIN input clock frequency in Hz.
- */
-static inline void CLOCK_SetXtal32Freq(uint32_t freq)
-{
-    g_xtal32Freq = freq;
-}
-
-/*!
- * @brief Enable the clock for specific IP.
- *
- * @param name  Which clock to enable, see \ref clock_ip_name_t.
- */
-static inline void CLOCK_EnableClock(clock_ip_name_t name)
-{
-    uint32_t regAddr = SIM_BASE + CLK_GATE_ABSTRACT_REG_OFFSET((uint32_t)name);
-    (*(volatile uint32_t *)regAddr) |= (1U << CLK_GATE_ABSTRACT_BITS_SHIFT((uint32_t)name));
-}
-
-/*!
- * @brief Disable the clock for specific IP.
- *
- * @param name  Which clock to disable, see \ref clock_ip_name_t.
- */
-static inline void CLOCK_DisableClock(clock_ip_name_t name)
-{
-    uint32_t regAddr = SIM_BASE + CLK_GATE_ABSTRACT_REG_OFFSET((uint32_t)name);
-    (*(volatile uint32_t *)regAddr) &= ~(1U << CLK_GATE_ABSTRACT_BITS_SHIFT((uint32_t)name));
-}
-
-/*!
- * @brief Set ERCLK32K source.
- *
- * @param src The value to set ERCLK32K clock source.
- */
-static inline void CLOCK_SetEr32kClock(uint32_t src)
-{
-    SIM->SOPT1 = ((SIM->SOPT1 & ~SIM_SOPT1_OSC32KSEL_MASK) | SIM_SOPT1_OSC32KSEL(src));
-}
-
-/*!
- * @brief Set SDHC0 clock source.
- *
- * @param src The value to set SDHC0 clock source.
- */
-static inline void CLOCK_SetSdhc0Clock(uint32_t src)
-{
-    SIM->SOPT2 = ((SIM->SOPT2 & ~SIM_SOPT2_SDHCSRC_MASK) | SIM_SOPT2_SDHCSRC(src));
-}
-
-/*!
- * @brief Set enet timestamp clock source.
- *
- * @param src The value to set enet timestamp clock source.
- */
-static inline void CLOCK_SetEnetTime0Clock(uint32_t src)
-{
-    SIM->SOPT2 = ((SIM->SOPT2 & ~SIM_SOPT2_TIMESRC_MASK) | SIM_SOPT2_TIMESRC(src));
-}
-
-/*!
- * @brief Set RMII clock source.
- *
- * @param src The value to set RMII clock source.
- */
-static inline void CLOCK_SetRmii0Clock(uint32_t src)
-{
-    SIM->SOPT2 = ((SIM->SOPT2 & ~SIM_SOPT2_RMIISRC_MASK) | SIM_SOPT2_RMIISRC(src));
-}
-
-/*!
- * @brief Set debug trace clock source.
- *
- * @param src The value to set debug trace clock source.
- */
-static inline void CLOCK_SetTraceClock(uint32_t src)
-{
-    SIM->SOPT2 = ((SIM->SOPT2 & ~SIM_SOPT2_TRACECLKSEL_MASK) | SIM_SOPT2_TRACECLKSEL(src));
-}
-
-/*!
- * @brief Set PLLFLLSEL clock source.
- *
- * @param src The value to set PLLFLLSEL clock source.
- */
-static inline void CLOCK_SetPllFllSelClock(uint32_t src)
-{
-    SIM->SOPT2 = ((SIM->SOPT2 & ~SIM_SOPT2_PLLFLLSEL_MASK) | SIM_SOPT2_PLLFLLSEL(src));
-}
-
-/*!
- * @brief Set CLKOUT source.
- *
- * @param src The value to set CLKOUT source.
- */
-static inline void CLOCK_SetClkOutClock(uint32_t src)
-{
-    SIM->SOPT2 = ((SIM->SOPT2 & ~SIM_SOPT2_CLKOUTSEL_MASK) | SIM_SOPT2_CLKOUTSEL(src));
-}
-
-/*!
- * @brief Set RTC_CLKOUT source.
- *
- * @param src The value to set RTC_CLKOUT source.
- */
-static inline void CLOCK_SetRtcClkOutClock(uint32_t src)
-{
-    SIM->SOPT2 = ((SIM->SOPT2 & ~SIM_SOPT2_RTCCLKOUTSEL_MASK) | SIM_SOPT2_RTCCLKOUTSEL(src));
-}
-
-/*! @brief Enable USB FS clock.
- *
- * @param src  USB FS clock source.
- * @param freq The frequency specified by src.
- * @retval true The clock is set successfully.
- * @retval false The clock source is invalid to get proper USB FS clock.
- */
-bool CLOCK_EnableUsbfs0Clock(clock_usb_src_t src, uint32_t freq);
-
-/*! @brief Disable USB FS clock.
- *
- * Disable USB FS clock.
- */
-static inline void CLOCK_DisableUsbfs0Clock(void)
-{
-    CLOCK_DisableClock(kCLOCK_Usbfs0);
-}
-
-/*!
- * @brief System clock divider
- *
- * Set the SIM_CLKDIV1[OUTDIV1], SIM_CLKDIV1[OUTDIV2], SIM_CLKDIV1[OUTDIV3], SIM_CLKDIV1[OUTDIV4].
- *
- * @param outdiv1 Clock 1 output divider value.
- *
- * @param outdiv2 Clock 2 output divider value.
- *
- * @param outdiv3 Clock 3 output divider value.
- *
- * @param outdiv4 Clock 4 output divider value.
- */
-static inline void CLOCK_SetOutDiv(uint32_t outdiv1, uint32_t outdiv2, uint32_t outdiv3, uint32_t outdiv4)
-{
-    SIM->CLKDIV1 = SIM_CLKDIV1_OUTDIV1(outdiv1) | SIM_CLKDIV1_OUTDIV2(outdiv2) | SIM_CLKDIV1_OUTDIV3(outdiv3) |
-                   SIM_CLKDIV1_OUTDIV4(outdiv4);
-}
-
-/*!
- * @brief Gets the clock frequency for a specific clock name.
- *
- * This function checks the current clock configurations and then calculates
- * the clock frequency for a specific clock name defined in clock_name_t.
- * The MCG must be properly configured before using this function.
- *
- * @param clockName Clock names defined in clock_name_t
- * @return Clock frequency value in Hertz
- */
-uint32_t CLOCK_GetFreq(clock_name_t clockName);
-
-/*!
- * @brief Get the core clock or system clock frequency.
- *
- * @return Clock frequency in Hz.
- */
-uint32_t CLOCK_GetCoreSysClkFreq(void);
-
-/*!
- * @brief Get the platform clock frequency.
- *
- * @return Clock frequency in Hz.
- */
-uint32_t CLOCK_GetPlatClkFreq(void);
-
-/*!
- * @brief Get the bus clock frequency.
- *
- * @return Clock frequency in Hz.
- */
-uint32_t CLOCK_GetBusClkFreq(void);
-
-/*!
- * @brief Get the flexbus clock frequency.
- *
- * @return Clock frequency in Hz.
- */
-uint32_t CLOCK_GetFlexBusClkFreq(void);
-
-/*!
- * @brief Get the flash clock frequency.
- *
- * @return Clock frequency in Hz.
- */
-uint32_t CLOCK_GetFlashClkFreq(void);
-
-/*!
- * @brief Get the output clock frequency selected by SIM[PLLFLLSEL].
- *
- * @return Clock frequency in Hz.
- */
-uint32_t CLOCK_GetPllFllSelClkFreq(void);
-
-/*!
- * @brief Get the external reference 32K clock frequency (ERCLK32K).
- *
- * @return Clock frequency in Hz.
- */
-uint32_t CLOCK_GetEr32kClkFreq(void);
-
-/*!
- * @brief Get the OSC0 external reference clock frequency (OSC0ERCLK).
- *
- * @return Clock frequency in Hz.
- */
-uint32_t CLOCK_GetOsc0ErClkFreq(void);
-
-/*!
- * @brief Set the clock configure in SIM module.
- *
- * This function sets system layer clock settings in SIM module.
- *
- * @param config Pointer to the configure structure.
- */
-void CLOCK_SetSimConfig(sim_clock_config_t const *config);
-
-/*!
- * @brief Set the system clock dividers in SIM to safe value.
- *
- * The system level clocks (core clock, bus clock, flexbus clock and flash clock)
- * must be in allowed ranges. During MCG clock mode switch, the MCG output clock
- * changes then the system level clocks may be out of range. This function could
- * be used before MCG mode change, to make sure system level clocks are in allowed
- * range.
- *
- * @param config Pointer to the configure structure.
- */
-static inline void CLOCK_SetSimSafeDivs(void)
-{
-    SIM->CLKDIV1 = 0x01240000U;
-}
-
-/*! @name MCG frequency functions. */
-/*@{*/
-
-/*!
- * @brief Get the MCG output clock(MCGOUTCLK) frequency.
- *
- * This function gets the MCG output clock frequency (Hz) based on current MCG
- * register value.
- *
- * @return The frequency of MCGOUTCLK.
- */
-uint32_t CLOCK_GetOutClkFreq(void);
-
-/*!
- * @brief Get the MCG FLL clock(MCGFLLCLK) frequency.
- *
- * This function gets the MCG FLL clock frequency (Hz) based on current MCG
- * register value. The FLL is only enabled in FEI/FBI/FEE/FBE mode, in other
- * modes, FLL is disabled in low power state.
- *
- * @return The frequency of MCGFLLCLK.
- */
-uint32_t CLOCK_GetFllFreq(void);
-
-/*!
- * @brief Get the MCG internal reference clock(MCGIRCLK) frequency.
- *
- * This function gets the MCG internal reference clock frequency (Hz) based
- * on current MCG register value.
- *
- * @return The frequency of MCGIRCLK.
- */
-uint32_t CLOCK_GetInternalRefClkFreq(void);
-
-/*!
- * @brief Get the MCG fixed frequency clock(MCGFFCLK) frequency.
- *
- * This function gets the MCG fixed frequency clock frequency (Hz) based
- * on current MCG register value.
- *
- * @return The frequency of MCGFFCLK.
- */
-uint32_t CLOCK_GetFixedFreqClkFreq(void);
-
-/*!
- * @brief Get the MCG PLL0 clock(MCGPLL0CLK) frequency.
- *
- * This function gets the MCG PLL0 clock frequency (Hz) based on current MCG
- * register value.
- *
- * @return The frequency of MCGPLL0CLK.
- */
-uint32_t CLOCK_GetPll0Freq(void);
-
-/*@}*/
-
-/*! @name MCG clock configuration. */
-/*@{*/
-
-/*!
- * @brief Enable or disable MCG low power.
- *
- * Enable MCG low power will disable the PLL and FLL in bypass modes. That is,
- * in FBE and PBE modes, enable low power will set MCG to BLPE mode, in FBI and
- * PBI mode, enable low power will set MCG to BLPI mode.
- * When disable MCG low power, the PLL or FLL will be enabled based on MCG setting.
- *
- * @param enable True to enable MCG low power, false to disable MCG low power.
- */
-static inline void CLOCK_SetLowPowerEnable(bool enable)
-{
-    if (enable)
-    {
-        MCG->C2 |= MCG_C2_LP_MASK;
-    }
-    else
-    {
-        MCG->C2 &= ~MCG_C2_LP_MASK;
-    }
-}
-
-/*!
- * @brief Configure the Internal Reference clock (MCGIRCLK)
- *
- * This function setups the \c MCGIRCLK base on parameters. It selects the IRC
- * source, if fast IRC is used, this function also sets the fast IRC divider.
- * This function also sets whether enable \c MCGIRCLK in stop mode.
- * Calling this function in FBI/PBI/BLPI modes may change the system clock, so
- * it is not allowed to use this in these modes.
- *
- * @param enableMode MCGIRCLK enable mode, OR'ed value of @ref _mcg_irclk_enable_mode.
- * @param ircs       MCGIRCLK clock source, choose fast or slow.
- * @param fcrdiv     Fast IRC divider setting (\c FCRDIV).
- * @retval kStatus_MCG_SourceUsed MCGIRCLK is used as system clock, should not configure MCGIRCLK.
- * @retval kStatus_Success MCGIRCLK configuration finished successfully.
- */
-status_t CLOCK_SetInternalRefClkConfig(uint8_t enableMode, mcg_irc_mode_t ircs, uint8_t fcrdiv);
-
-/*!
- * @brief Select the MCG external reference clock.
- *
- * Select the MCG external reference clock source, it changes the MCG_C7[OSCSEL]
- * and wait for the clock source stable. Should not change external reference
- * clock in FEE/FBE/BLPE/PBE/PEE mdes, so don't call this function in these modes.
- *
- * @param oscsel MCG external reference clock source, MCG_C7[OSCSEL].
- * @retval kStatus_MCG_SourceUsed External reference clock is used, should not change.
- * @retval kStatus_Success External reference clock set successfully.
- */
-status_t CLOCK_SetExternalRefClkConfig(mcg_oscsel_t oscsel);
-
-/*!
- * @brief Enables the PLL0 in FLL mode.
- *
- * This function setups the PLL0 in FLL mode, make sure the PLL reference
- * clock is enabled before calling this function. This function reconfigures
- * the PLL0, make sure the PLL0 is not used as a clock source while calling
- * this function. The function CLOCK_CalcPllDiv can help to get the proper PLL
- * divider values.
- *
- * @param config Pointer to the configuration structure.
- */
-void CLOCK_EnablePll0(mcg_pll_config_t const *config);
-
-/*!
- * @brief Disables the PLL0 in FLL mode.
- *
- * This function disables the PLL0 in FLL mode, it should be used together with
- * @ref CLOCK_EnablePll0.
- */
-static inline void CLOCK_DisablePll0(void)
-{
-    MCG->C5 &= ~(MCG_C5_PLLCLKEN0_MASK | MCG_C5_PLLSTEN0_MASK);
-}
-
-/*!
- * @brief Calculates the PLL divider setting for desired output frequency.
- *
- * This function calculates the proper reference clock divider (\c PRDIV) and
- * VCO divider (\c VDIV) to generate desired PLL output frequency. It returns the
- * closest frequency PLL could generate, the corresponding \c PRDIV/VDIV are
- * returned from parameters. If desired frequency is not valid, this function
- * returns 0.
- *
- * @param refFreq    PLL reference clock frequency.
- * @param desireFreq Desired PLL output frequency.
- * @param prdiv      PRDIV value to generate desired PLL frequency.
- * @param vdiv       VDIV value to generate desired PLL frequency.
- * @return Closest frequency PLL could generate.
- */
-uint32_t CLOCK_CalcPllDiv(uint32_t refFreq, uint32_t desireFreq, uint8_t *prdiv, uint8_t *vdiv);
-
-/*@}*/
-
-/*! @name MCG clock lock monitor functions. */
-/*@{*/
-
-/*!
- * @brief Set the OSC0 clock monitor mode.
- *
- * Set the OSC0 clock monitor mode, see @ref mcg_monitor_mode_t for details.
- *
- * @param mode The monitor mode to set.
- */
-void CLOCK_SetOsc0MonitorMode(mcg_monitor_mode_t mode);
-
-/*!
- * @brief Set the RTC OSC clock monitor mode.
- *
- * Set the RTC OSC clock monitor mode, see @ref mcg_monitor_mode_t for details.
- *
- * @param mode The monitor mode to set.
- */
-void CLOCK_SetRtcOscMonitorMode(mcg_monitor_mode_t mode);
-
-/*!
- * @brief Set the PLL0 clock monitor mode.
- *
- * Set the PLL0 clock monitor mode, see @ref mcg_monitor_mode_t for details.
- *
- * @param mode The monitor mode to set.
- */
-void CLOCK_SetPll0MonitorMode(mcg_monitor_mode_t mode);
-
-/*!
- * @brief Get the MCG status flags.
- *
- * This function gets the MCG clock status flags, all the status flags are
- * returned as a logical OR of the enumeration @ref _mcg_status_flags_t. To
- * check specific flags, compare the return value with the flags.
- *
- * Example:
- * @code
-   // To check the clock lost lock status of OSC0 and PLL0.
-   uint32_t mcgFlags;
-
-   mcgFlags = CLOCK_GetStatusFlags();
-
-   if (mcgFlags & kMCG_Osc0LostFlag)
-   {
-       // OSC0 clock lock lost. Do something.
-   }
-   if (mcgFlags & kMCG_Pll0LostFlag)
-   {
-       // PLL0 clock lock lost. Do something.
-   }
-   @endcode
- *
- * @return  Logical OR value of the @ref _mcg_status_flags_t.
- */
-uint32_t CLOCK_GetStatusFlags(void);
-
-/*!
- * @brief Clears the MCG status flags.
- *
- * This function clears the MCG clock lock lost status. The parameter is logical
- * OR value of the flags to clear, see @ref _mcg_status_flags_t.
- *
- * Example:
- * @code
-   // To clear the clock lost lock status flags of OSC0 and PLL0.
-
-   CLOCK_ClearStatusFlags(kMCG_Osc0LostFlag | kMCG_Pll0LostFlag);
-   @endcode
- *
- * @param mask The status flags to clear. This is a logical OR of members of the
- *             enumeration @ref _mcg_status_flags_t.
- */
-void CLOCK_ClearStatusFlags(uint32_t mask);
-
-/*@}*/
-
-/*!
- * @name OSC configuration
- * @{
- */
-
-/*!
- * @brief Configures the OSC external reference clock (OSCERCLK).
- *
- * This function configures the OSC external reference clock (OSCERCLK).
- * For example, to enable the OSCERCLK in normal mode and stop mode, and also set
- * the output divider to 1, as follows:
- *
-   @code
-   oscer_config_t config =
-   {
-       .enableMode = kOSC_ErClkEnable | kOSC_ErClkEnableInStop,
-       .erclkDiv   = 1U,
-   };
-
-   OSC_SetExtRefClkConfig(OSC, &config);
-   @endcode
- *
- * @param base   OSC peripheral address.
- * @param config Pointer to the configuration structure.
- */
-static inline void OSC_SetExtRefClkConfig(OSC_Type *base, oscer_config_t const *config)
-{
-    uint8_t reg = base->CR;
-
-    reg &= ~(OSC_CR_ERCLKEN_MASK | OSC_CR_EREFSTEN_MASK);
-    reg |= config->enableMode;
-
-    base->CR = reg;
-}
-
-/*!
- * @brief Sets the capacitor load configuration for the oscillator.
- *
- * This function sets the specified capacitors configuration for the oscillator.
- * This should be done in the early system level initialization function call
- * based on the system configuration.
- *
- * @param base   OSC peripheral address.
- * @param capLoad OR'ed value for the capacitor load option, see \ref _osc_cap_load.
- *
- * Example:
-   @code
-   // To enable only 2 pF and 8 pF capacitor load, please use like this.
-   OSC_SetCapLoad(OSC, kOSC_Cap2P | kOSC_Cap8P);
-   @endcode
- */
-static inline void OSC_SetCapLoad(OSC_Type *base, uint8_t capLoad)
-{
-    uint8_t reg = base->CR;
-
-    reg &= ~(OSC_CR_SC2P_MASK | OSC_CR_SC4P_MASK | OSC_CR_SC8P_MASK | OSC_CR_SC16P_MASK);
-    reg |= capLoad;
-
-    base->CR = reg;
-}
-
-/*!
- * @brief Initialize OSC0.
- *
- * This function initializes OSC0 according to board configuration.
- *
- * @param  config Pointer to the OSC0 configuration structure.
- */
-void CLOCK_InitOsc0(osc_config_t const *config);
-
-/*!
- * @brief Deinitialize OSC0.
- *
- * This function deinitializes OSC0.
- */
-void CLOCK_DeinitOsc0(void);
-
-/* @} */
-
-/*!
- * @name MCG auto-trim machine.
- * @{
- */
-
-/*!
- * @brief Auto trim the internal reference clock.
- *
- * This function trims the internal reference clock using external clock. If
- * successful, it returns the kStatus_Success and the frequency after
- * trimming is received in the parameter @p actualFreq. If an error occurs,
- * the error code is returned.
- *
- * @param extFreq      External clock frequency, should be bus clock.
- * @param desireFreq   Frequency want to trim to.
- * @param actualFreq   Actual frequency after trim.
- * @param atms         Trim fast or slow internal reference clock.
- * @retval kStatus_Success ATM success.
- * @retval kStatus_MCG_AtmBusClockInvalid The bus clock is not in allowed range for ATM.
- * @retval kStatus_MCG_AtmDesiredFreqInvalid MCGIRCLK could not be trimmed to the desired frequency.
- * @retval kStatus_MCG_AtmIrcUsed Could not trim because MCGIRCLK is used as bus clock source.
- * @retval kStatus_MCG_AtmHardwareFail Hardware fails during trim.
- */
-status_t CLOCK_TrimInternalRefClk(uint32_t extFreq, uint32_t desireFreq, uint32_t *actualFreq, mcg_atm_select_t atms);
-/* @} */
-
-/*! @name MCG mode functions. */
-/*@{*/
-
-/*!
- * @brief Gets the current MCG mode.
- *
- * This function checks the MCG registers and determine current MCG mode.
- *
- * @return Current MCG mode or error code, see @ref mcg_mode_t.
- */
-mcg_mode_t CLOCK_GetMode(void);
-
-/*!
- * @brief Set MCG to FEI mode.
- *
- * This function sets MCG to FEI mode. If could not set to FEI mode directly
- * from current mode, this function returns error. @ref kMCG_Dmx32Default is used in this
- * mode because using kMCG_Dmx32Fine with internal reference clock source
- * might damage hardware.
- *
- * @param       drs The DCO range selection.
- * @param       fllStableDelay Delay function to make sure FLL is stable, if pass
- *              in NULL, then does not delay.
- * @retval kStatus_MCG_ModeUnreachable Could not switch to the target mode.
- * @retval kStatus_Success Switch to target mode successfully.
- */
-status_t CLOCK_SetFeiMode(mcg_drs_t drs, void (*fllStableDelay)(void));
-
-/*!
- * @brief Set MCG to FEE mode.
- *
- * This function sets MCG to FEE mode. If could not set to FEE mode directly
- * from current mode, this function returns error.
- *
- * @param   frdiv  FLL reference clock divider setting, FRDIV.
- * @param   dmx32  DMX32 in FEE mode.
- * @param   drs    The DCO range selection.
- * @param   fllStableDelay Delay function to make sure FLL is stable, if pass
- *          in NULL, then does not delay.
- *
- * @retval kStatus_MCG_ModeUnreachable Could not switch to the target mode.
- * @retval kStatus_Success Switch to target mode successfully.
- */
-status_t CLOCK_SetFeeMode(uint8_t frdiv, mcg_dmx32_t dmx32, mcg_drs_t drs, void (*fllStableDelay)(void));
-
-/*!
- * @brief Set MCG to FBI mode.
- *
- * This function sets MCG to FBI mode. If could not set to FBI mode directly
- * from current mode, this function returns error.
- *
- * @param  drs  The DCO range selection.
- * @param  fllStableDelay Delay function to make sure FLL is stable. If FLL
- *         is not used in FBI mode, this parameter could be NULL. Pass in
- *         NULL does not delay.
- * @retval kStatus_MCG_ModeUnreachable Could not switch to the target mode.
- * @retval kStatus_Success Switch to target mode successfully.
- */
-status_t CLOCK_SetFbiMode(mcg_drs_t drs, void (*fllStableDelay)(void));
-
-/*!
- * @brief Set MCG to FBE mode.
- *
- * This function sets MCG to FBE mode. If could not set to FBE mode directly
- * from current mode, this function returns error.
- *
- * @param   frdiv  FLL reference clock divider setting, FRDIV.
- * @param   dmx32  DMX32 in FBE mode.
- * @param   drs    The DCO range selection.
- * @param   fllStableDelay Delay function to make sure FLL is stable. If FLL
- *          is not used in FBE mode, this parameter could be NULL. Pass in NULL
- *          does not delay.
- * @retval kStatus_MCG_ModeUnreachable Could not switch to the target mode.
- * @retval kStatus_Success Switch to target mode successfully.
- */
-status_t CLOCK_SetFbeMode(uint8_t frdiv, mcg_dmx32_t dmx32, mcg_drs_t drs, void (*fllStableDelay)(void));
-
-/*!
- * @brief Set MCG to BLPI mode.
- *
- * This function sets MCG to BLPI mode. If could not set to BLPI mode directly
- * from current mode, this function returns error.
- *
- * @retval kStatus_MCG_ModeUnreachable Could not switch to the target mode.
- * @retval kStatus_Success Switch to target mode successfully.
- */
-status_t CLOCK_SetBlpiMode(void);
-
-/*!
- * @brief Set MCG to BLPE mode.
- *
- * This function sets MCG to BLPE mode. If could not set to BLPE mode directly
- * from current mode, this function returns error.
- *
- * @retval kStatus_MCG_ModeUnreachable Could not switch to the target mode.
- * @retval kStatus_Success Switch to target mode successfully.
- */
-status_t CLOCK_SetBlpeMode(void);
-
-/*!
- * @brief Set MCG to PBE mode.
- *
- * This function sets MCG to PBE mode. If could not set to PBE mode directly
- * from current mode, this function returns error.
- *
- * @param   pllcs  The PLL selection, PLLCS.
- * @param   config Pointer to the PLL configuration.
- * @retval kStatus_MCG_ModeUnreachable Could not switch to the target mode.
- * @retval kStatus_Success Switch to target mode successfully.
- *
- * @note
- * 1. The parameter \c pllcs selects the PLL, for some platforms, there is
- * only one PLL, the parameter pllcs is kept for interface compatible.
- * 2. The parameter \c config is the PLL configuration structure, on some
- * platforms, could choose the external PLL directly. This means that the
- * configuration structure is not necessary, pass in NULL for this case.
- * For example: CLOCK_SetPbeMode(kMCG_OscselOsc, kMCG_PllClkSelExtPll, NULL);
- */
-status_t CLOCK_SetPbeMode(mcg_pll_clk_select_t pllcs, mcg_pll_config_t const *config);
-
-/*!
- * @brief Set MCG to PEE mode.
- *
- * This function sets MCG to PEE mode.
- *
- * @retval kStatus_MCG_ModeUnreachable Could not switch to the target mode.
- * @retval kStatus_Success Switch to target mode successfully.
- *
- * @note This function only change CLKS to use PLL/FLL output. If the
- *       PRDIV/VDIV are different from PBE mode, please setup these
- *       settings in PBE mode and wait for stable then switch to PEE mode.
- */
-status_t CLOCK_SetPeeMode(void);
-
-/*!
- * @brief Switch MCG to FBE mode quickly from external mode.
- *
- * This function changes MCG from external modes (PEE/PBE/BLPE/FEE) to FBE mode quickly.
- * It only changes to use external clock as the system clock souce and disable PLL, but does not
- * configure FLL settings. This is a lite function with small code size, it is useful
- * during mode switch. For example, to switch from PEE mode to FEI mode:
- *
- * @code
- * CLOCK_ExternalModeToFbeModeQuick();
- * CLOCK_SetFeiMode(...);
- * @endcode
- *
- * @retval kStatus_Success Change successfully.
- * @retval kStatus_MCG_ModeInvalid Current mode is not external modes, should not call this function.
- */
-status_t CLOCK_ExternalModeToFbeModeQuick(void);
-
-/*!
- * @brief Switch MCG to FBI mode quickly from internal modes.
- *
- * This function changes MCG from internal modes (PEI/PBI/BLPI/FEI) to FBI mode quickly.
- * It only changes to use MCGIRCLK as the system clock souce and disable PLL, but does not
- * configure FLL settings. This is a lite function with small code size, it is useful
- * during mode switch. For example, to switch from PEI mode to FEE mode:
- *
- * @code
- * CLOCK_InternalModeToFbiModeQuick();
- * CLOCK_SetFeeMode(...);
- * @endcode
- *
- * @retval kStatus_Success Change successfully.
- * @retval kStatus_MCG_ModeInvalid Current mode is not internal mode, should not call this function.
- */
-status_t CLOCK_InternalModeToFbiModeQuick(void);
-
-/*!
- * @brief Set MCG to FEI mode during system boot up.
- *
- * This function sets MCG to FEI mode from reset mode, it could be used to
- * set up MCG during system boot up. @ref kMCG_Dmx32Default is used in this
- * mode because using kMCG_Dmx32Fine with internal reference clock source
- * might damage hardware.
- *
- * @param  drs The DCO range selection.
- * @param  fllStableDelay Delay function to make sure FLL is stable.
- *
- * @retval kStatus_MCG_ModeUnreachable Could not switch to the target mode.
- * @retval kStatus_Success Switch to target mode successfully.
- */
-status_t CLOCK_BootToFeiMode(mcg_drs_t drs, void (*fllStableDelay)(void));
-
-/*!
- * @brief Set MCG to FEE mode during system bootup.
- *
- * This function sets MCG to FEE mode from reset mode, it could be used to
- * set up MCG during system boot up.
- *
- * @param   oscsel OSC clock select, OSCSEL.
- * @param   frdiv  FLL reference clock divider setting, FRDIV.
- * @param   dmx32  DMX32 in FEE mode.
- * @param   drs    The DCO range selection.
- * @param   fllStableDelay Delay function to make sure FLL is stable.
- *
- * @retval kStatus_MCG_ModeUnreachable Could not switch to the target mode.
- * @retval kStatus_Success Switch to target mode successfully.
- */
-status_t CLOCK_BootToFeeMode(
-    mcg_oscsel_t oscsel, uint8_t frdiv, mcg_dmx32_t dmx32, mcg_drs_t drs, void (*fllStableDelay)(void));
-
-/*!
- * @brief Set MCG to BLPI mode during system boot up.
- *
- * This function sets MCG to BLPI mode from reset mode, it could be used to
- * setup MCG during sytem boot up.
- *
- * @param  fcrdiv Fast IRC divider, FCRDIV.
- * @param  ircs   The internal reference clock to select, IRCS.
- * @param  ircEnableMode  The MCGIRCLK enable mode, OR'ed value of @ref _mcg_irclk_enable_mode.
- *
- * @retval kStatus_MCG_SourceUsed Could not change MCGIRCLK setting.
- * @retval kStatus_Success Switch to target mode successfully.
- */
-status_t CLOCK_BootToBlpiMode(uint8_t fcrdiv, mcg_irc_mode_t ircs, uint8_t ircEnableMode);
-
-/*!
- * @brief Set MCG to BLPE mode during sytem boot up.
- *
- * This function sets MCG to BLPE mode from reset mode, it could be used to
- * setup MCG during sytem boot up.
- *
- * @param  oscsel OSC clock select, MCG_C7[OSCSEL].
- *
- * @retval kStatus_MCG_ModeUnreachable Could not switch to the target mode.
- * @retval kStatus_Success Switch to target mode successfully.
- */
-status_t CLOCK_BootToBlpeMode(mcg_oscsel_t oscsel);
-
-/*!
- * @brief Set MCG to PEE mode during system boot up.
- *
- * This function sets MCG to PEE mode from reset mode, it could be used to
- * setup MCG during system boot up.
- *
- * @param   oscsel OSC clock select, MCG_C7[OSCSEL].
- * @param   pllcs  The PLL selection, PLLCS.
- * @param   config Pointer to the PLL configuration.
- *
- * @retval kStatus_MCG_ModeUnreachable Could not switch to the target mode.
- * @retval kStatus_Success Switch to target mode successfully.
- */
-status_t CLOCK_BootToPeeMode(mcg_oscsel_t oscsel, mcg_pll_clk_select_t pllcs, mcg_pll_config_t const *config);
-
-/*!
- * @brief Set MCG to some target mode.
- *
- * This function sets MCG to some target mode defined by the configure
- * structure, if cannot switch to target mode directly, this function will
- * choose the proper path.
- *
- * @param  config Pointer to the target MCG mode configuration structure.
- * @return Return kStatus_Success if switch successfully, otherwise return error code #_mcg_status.
- *
- * @note If external clock is used in the target mode, please make sure it is
- * enabled, for example, if the OSC0 is used, please setup OSC0 correctly before
- * this funciton.
- */
-status_t CLOCK_SetMcgConfig(mcg_config_t const *config);
-
-/*@}*/
-
-#if defined(__cplusplus)
-}
-#endif /* __cplusplus */
-
-/*! @} */
-
-#endif /* _FSL_CLOCK_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_cmp.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,279 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_cmp.h"
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-/*!
- * @brief Get instance number for CMP module.
- *
- * @param base CMP peripheral base address
- */
-static uint32_t CMP_GetInstance(CMP_Type *base);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-/*! @brief Pointers to CMP bases for each instance. */
-static CMP_Type *const s_cmpBases[] = CMP_BASE_PTRS;
-/*! @brief Pointers to CMP clocks for each instance. */
-const clock_ip_name_t s_cmpClocks[] = CMP_CLOCKS;
-
-/*******************************************************************************
- * Codes
- ******************************************************************************/
-static uint32_t CMP_GetInstance(CMP_Type *base)
-{
-    uint32_t instance;
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < FSL_FEATURE_SOC_CMP_COUNT; instance++)
-    {
-        if (s_cmpBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < FSL_FEATURE_SOC_CMP_COUNT);
-
-    return instance;
-}
-
-void CMP_Init(CMP_Type *base, const cmp_config_t *config)
-{
-    assert(NULL != config);
-
-    uint8_t tmp8;
-
-    /* Enable the clock. */
-    CLOCK_EnableClock(s_cmpClocks[CMP_GetInstance(base)]);
-
-    /* Configure. */
-    CMP_Enable(base, false); /* Disable the CMP module during configuring. */
-    /* CMPx_CR1. */
-    tmp8 = base->CR1 & ~(CMP_CR1_PMODE_MASK | CMP_CR1_INV_MASK | CMP_CR1_COS_MASK | CMP_CR1_OPE_MASK);
-    if (config->enableHighSpeed)
-    {
-        tmp8 |= CMP_CR1_PMODE_MASK;
-    }
-    if (config->enableInvertOutput)
-    {
-        tmp8 |= CMP_CR1_INV_MASK;
-    }
-    if (config->useUnfilteredOutput)
-    {
-        tmp8 |= CMP_CR1_COS_MASK;
-    }
-    if (config->enablePinOut)
-    {
-        tmp8 |= CMP_CR1_OPE_MASK;
-    }
-#if defined(FSL_FEATURE_CMP_HAS_TRIGGER_MODE) && FSL_FEATURE_CMP_HAS_TRIGGER_MODE
-    if (config->enableTriggerMode)
-    {
-        tmp8 |= CMP_CR1_TRIGM_MASK;
-    }
-    else
-    {
-        tmp8 &= ~CMP_CR1_TRIGM_MASK;
-    }
-#endif /* FSL_FEATURE_CMP_HAS_TRIGGER_MODE */
-    base->CR1 = tmp8;
-
-    /* CMPx_CR0. */
-    tmp8 = base->CR0 & ~CMP_CR0_HYSTCTR_MASK;
-    tmp8 |= CMP_CR0_HYSTCTR(config->hysteresisMode);
-    base->CR0 = tmp8;
-
-    CMP_Enable(base, config->enableCmp); /* Enable the CMP module after configured or not. */
-}
-
-void CMP_Deinit(CMP_Type *base)
-{
-    /* Disable the CMP module. */
-    CMP_Enable(base, false);
-
-    /* Disable the clock. */
-    CLOCK_DisableClock(s_cmpClocks[CMP_GetInstance(base)]);
-}
-
-void CMP_GetDefaultConfig(cmp_config_t *config)
-{
-    assert(NULL != config);
-
-    config->enableCmp = true; /* Enable the CMP module after initialization. */
-    config->hysteresisMode = kCMP_HysteresisLevel0;
-    config->enableHighSpeed = false;
-    config->enableInvertOutput = false;
-    config->useUnfilteredOutput = false;
-    config->enablePinOut = false;
-#if defined(FSL_FEATURE_CMP_HAS_TRIGGER_MODE) && FSL_FEATURE_CMP_HAS_TRIGGER_MODE
-    config->enableTriggerMode = false;
-#endif /* FSL_FEATURE_CMP_HAS_TRIGGER_MODE */
-}
-
-void CMP_SetInputChannels(CMP_Type *base, uint8_t positiveChannel, uint8_t negativeChannel)
-{
-    uint8_t tmp8 = base->MUXCR;
-
-    tmp8 &= ~(CMP_MUXCR_PSEL_MASK | CMP_MUXCR_MSEL_MASK);
-    tmp8 |= CMP_MUXCR_PSEL(positiveChannel) | CMP_MUXCR_MSEL(negativeChannel);
-    base->MUXCR = tmp8;
-}
-
-#if defined(FSL_FEATURE_CMP_HAS_DMA) && FSL_FEATURE_CMP_HAS_DMA
-void CMP_EnableDMA(CMP_Type *base, bool enable)
-{
-    uint8_t tmp8 = base->SCR & ~(CMP_SCR_CFR_MASK | CMP_SCR_CFF_MASK); /* To avoid change the w1c bits. */
-
-    if (enable)
-    {
-        tmp8 |= CMP_SCR_DMAEN_MASK;
-    }
-    else
-    {
-        tmp8 &= ~CMP_SCR_DMAEN_MASK;
-    }
-    base->SCR = tmp8;
-}
-#endif /* FSL_FEATURE_CMP_HAS_DMA */
-
-void CMP_SetFilterConfig(CMP_Type *base, const cmp_filter_config_t *config)
-{
-    assert(NULL != config);
-
-    uint8_t tmp8;
-
-#if defined(FSL_FEATURE_CMP_HAS_EXTERNAL_SAMPLE_SUPPORT) && FSL_FEATURE_CMP_HAS_EXTERNAL_SAMPLE_SUPPORT
-    /* Choose the clock source for sampling. */
-    if (config->enableSample)
-    {
-        base->CR1 |= CMP_CR1_SE_MASK; /* Choose the external SAMPLE clock. */
-    }
-    else
-    {
-        base->CR1 &= ~CMP_CR1_SE_MASK; /* Choose the internal divided bus clock. */
-    }
-#endif /* FSL_FEATURE_CMP_HAS_EXTERNAL_SAMPLE_SUPPORT */
-    /* Set the filter count. */
-    tmp8 = base->CR0 & ~CMP_CR0_FILTER_CNT_MASK;
-    tmp8 |= CMP_CR0_FILTER_CNT(config->filterCount);
-    base->CR0 = tmp8;
-    /* Set the filter period. It is used as the divider to bus clock. */
-    base->FPR = CMP_FPR_FILT_PER(config->filterPeriod);
-}
-
-void CMP_SetDACConfig(CMP_Type *base, const cmp_dac_config_t *config)
-{
-    uint8_t tmp8 = 0U;
-
-    if (NULL == config)
-    {
-        /* Passing "NULL" as input parameter means no available configuration. So the DAC feature is disabled.*/
-        base->DACCR = 0U;
-        return;
-    }
-    /* CMPx_DACCR. */
-    tmp8 |= CMP_DACCR_DACEN_MASK; /* Enable the internal DAC. */
-    if (kCMP_VrefSourceVin2 == config->referenceVoltageSource)
-    {
-        tmp8 |= CMP_DACCR_VRSEL_MASK;
-    }
-    tmp8 |= CMP_DACCR_VOSEL(config->DACValue);
-
-    base->DACCR = tmp8;
-}
-
-void CMP_EnableInterrupts(CMP_Type *base, uint32_t mask)
-{
-    uint8_t tmp8 = base->SCR & ~(CMP_SCR_CFR_MASK | CMP_SCR_CFF_MASK); /* To avoid change the w1c bits. */
-
-    if (0U != (kCMP_OutputRisingInterruptEnable & mask))
-    {
-        tmp8 |= CMP_SCR_IER_MASK;
-    }
-    if (0U != (kCMP_OutputFallingInterruptEnable & mask))
-    {
-        tmp8 |= CMP_SCR_IEF_MASK;
-    }
-    base->SCR = tmp8;
-}
-
-void CMP_DisableInterrupts(CMP_Type *base, uint32_t mask)
-{
-    uint8_t tmp8 = base->SCR & ~(CMP_SCR_CFR_MASK | CMP_SCR_CFF_MASK); /* To avoid change the w1c bits. */
-
-    if (0U != (kCMP_OutputRisingInterruptEnable & mask))
-    {
-        tmp8 &= ~CMP_SCR_IER_MASK;
-    }
-    if (0U != (kCMP_OutputFallingInterruptEnable & mask))
-    {
-        tmp8 &= ~CMP_SCR_IEF_MASK;
-    }
-    base->SCR = tmp8;
-}
-
-uint32_t CMP_GetStatusFlags(CMP_Type *base)
-{
-    uint32_t ret32 = 0U;
-
-    if (0U != (CMP_SCR_CFR_MASK & base->SCR))
-    {
-        ret32 |= kCMP_OutputRisingEventFlag;
-    }
-    if (0U != (CMP_SCR_CFF_MASK & base->SCR))
-    {
-        ret32 |= kCMP_OutputFallingEventFlag;
-    }
-    if (0U != (CMP_SCR_COUT_MASK & base->SCR))
-    {
-        ret32 |= kCMP_OutputAssertEventFlag;
-    }
-    return ret32;
-}
-
-void CMP_ClearStatusFlags(CMP_Type *base, uint32_t mask)
-{
-    uint8_t tmp8 = base->SCR & ~(CMP_SCR_CFR_MASK | CMP_SCR_CFF_MASK); /* To avoid change the w1c bits. */
-
-    if (0U != (kCMP_OutputRisingEventFlag & mask))
-    {
-        tmp8 |= CMP_SCR_CFR_MASK;
-    }
-    if (0U != (kCMP_OutputFallingEventFlag & mask))
-    {
-        tmp8 |= CMP_SCR_CFF_MASK;
-    }
-    base->SCR = tmp8;
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_cmp.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,346 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _FSL_CMP_H_
-#define _FSL_CMP_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup cmp
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief CMP driver version 2.0.0. */
-#define FSL_CMP_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
-/*@}*/
-
-/*!
-* @brief Interrupt enable/disable mask.
-*/
-enum _cmp_interrupt_enable
-{
-    kCMP_OutputRisingInterruptEnable = CMP_SCR_IER_MASK,  /*!< Comparator interrupt enable rising. */
-    kCMP_OutputFallingInterruptEnable = CMP_SCR_IEF_MASK, /*!< Comparator interrupt enable falling. */
-};
-
-/*!
- * @brief Status flags' mask.
- */
-enum _cmp_status_flags
-{
-    kCMP_OutputRisingEventFlag = CMP_SCR_CFR_MASK,  /*!< Rising-edge on compare output has occurred. */
-    kCMP_OutputFallingEventFlag = CMP_SCR_CFF_MASK, /*!< Falling-edge on compare output has occurred. */
-    kCMP_OutputAssertEventFlag = CMP_SCR_COUT_MASK, /*!< Return the current value of the analog comparator output. */
-};
-
-/*!
- * @brief CMP Hysteresis mode.
- */
-typedef enum _cmp_hysteresis_mode
-{
-    kCMP_HysteresisLevel0 = 0U, /*!< Hysteresis level 0. */
-    kCMP_HysteresisLevel1 = 1U, /*!< Hysteresis level 1. */
-    kCMP_HysteresisLevel2 = 2U, /*!< Hysteresis level 2. */
-    kCMP_HysteresisLevel3 = 3U, /*!< Hysteresis level 3. */
-} cmp_hysteresis_mode_t;
-
-/*!
- * @brief CMP Voltage Reference source.
- */
-typedef enum _cmp_reference_voltage_source
-{
-    kCMP_VrefSourceVin1 = 0U, /*!< Vin1 is selected as resistor ladder network supply reference Vin. */
-    kCMP_VrefSourceVin2 = 1U, /*!< Vin2 is selected as resistor ladder network supply reference Vin. */
-} cmp_reference_voltage_source_t;
-
-/*!
- * @brief Configure the comparator.
- */
-typedef struct _cmp_config
-{
-    bool enableCmp;                       /*!< Enable the CMP module. */
-    cmp_hysteresis_mode_t hysteresisMode; /*!< CMP Hysteresis mode. */
-    bool enableHighSpeed;                 /*!< Enable High Speed (HS) comparison mode. */
-    bool enableInvertOutput;              /*!< Enable inverted comparator output. */
-    bool useUnfilteredOutput;             /*!< Set compare output(COUT) to equal COUTA(true) or COUT(false). */
-    bool enablePinOut;                    /*!< The comparator output is available on the associated pin. */
-#if defined(FSL_FEATURE_CMP_HAS_TRIGGER_MODE) && FSL_FEATURE_CMP_HAS_TRIGGER_MODE
-    bool enableTriggerMode; /*!< Enable the trigger mode. */
-#endif                      /* FSL_FEATURE_CMP_HAS_TRIGGER_MODE */
-} cmp_config_t;
-
-/*!
- * @brief Configure the filter.
- */
-typedef struct _cmp_filter_config
-{
-#if defined(FSL_FEATURE_CMP_HAS_EXTERNAL_SAMPLE_SUPPORT) && FSL_FEATURE_CMP_HAS_EXTERNAL_SAMPLE_SUPPORT
-    bool enableSample;    /*!< Using external SAMPLE as sampling clock input, or using divided bus clock. */
-#endif                    /* FSL_FEATURE_CMP_HAS_EXTERNAL_SAMPLE_SUPPORT */
-    uint8_t filterCount;  /*!< Filter Sample Count. Available range is 1-7, 0 would cause the filter disabled.*/
-    uint8_t filterPeriod; /*!< Filter Sample Period. The divider to bus clock. Available range is 0-255. */
-} cmp_filter_config_t;
-
-/*!
- * @brief Configure the internal DAC.
- */
-typedef struct _cmp_dac_config
-{
-    cmp_reference_voltage_source_t referenceVoltageSource; /*!< Supply voltage reference source. */
-    uint8_t DACValue;                                      /*!< Value for DAC Output Voltage. Available range is 0-63.*/
-} cmp_dac_config_t;
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-/*!
- * @name Initialization
- * @{
- */
-
-/*!
- * @brief Initializes the CMP.
- *
- * This function initializes the CMP module. The operations included are:
- * - Enabling the clock for CMP module.
- * - Configuring the comparator.
- * - Enabling the CMP module.
- * Note: For some devices, multiple CMP instance share the same clock gate. In this case, to enable the clock for
- * any instance enables all the CMPs. Check the chip reference manual for the clock assignment of the CMP.
- *
- * @param base   CMP peripheral base address.
- * @param config Pointer to configuration structure.
- */
-void CMP_Init(CMP_Type *base, const cmp_config_t *config);
-
-/*!
- * @brief De-initializes the CMP module.
- *
- * This function de-initializes the CMP module. The operations included are:
- * - Disabling the CMP module.
- * - Disabling the clock for CMP module.
- *
- * This function disables the clock for the CMP.
- * Note: For some devices, multiple CMP instance shares the same clock gate. In this case, before disabling the
- * clock for the CMP,  ensure that all the CMP instances are not used.
- *
- * @param base CMP peripheral base address.
- */
-void CMP_Deinit(CMP_Type *base);
-
-/*!
- * @brief Enables/disables the CMP module.
- *
- * @param base CMP peripheral base address.
- * @param enable Enable the module or not.
- */
-static inline void CMP_Enable(CMP_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->CR1 |= CMP_CR1_EN_MASK;
-    }
-    else
-    {
-        base->CR1 &= ~CMP_CR1_EN_MASK;
-    }
-}
-
-/*!
-* @brief Initializes the CMP user configuration structure.
-*
-* This function initializes the user configure structure to these default values:
-* @code
-*   config->enableCmp           = true;
-*   config->hysteresisMode      = kCMP_HysteresisLevel0;
-*   config->enableHighSpeed     = false;
-*   config->enableInvertOutput  = false;
-*   config->useUnfilteredOutput = false;
-*   config->enablePinOut        = false;
-*   config->enableTriggerMode   = false;
-* @endcode
-* @param config Pointer to the configuration structure.
-*/
-void CMP_GetDefaultConfig(cmp_config_t *config);
-
-/*!
- * @brief  Sets the input channels for the comparator.
- *
- * This function sets the input channels for the comparator.
- * Note that two input channels cannot be set as same in the application. When the user selects the same input
- * from the analog mux to the positive and negative port, the comparator is disabled automatically.
- *
- * @param  base            CMP peripheral base address.
- * @param  positiveChannel Positive side input channel number. Available range is 0-7.
- * @param  negativeChannel Negative side input channel number. Available range is 0-7.
- */
-void CMP_SetInputChannels(CMP_Type *base, uint8_t positiveChannel, uint8_t negativeChannel);
-
-/* @} */
-
-/*!
- * @name Advanced Features
- * @{
- */
-
-#if defined(FSL_FEATURE_CMP_HAS_DMA) && FSL_FEATURE_CMP_HAS_DMA
-/*!
- * @brief Enables/disables the DMA request for rising/falling events.
- *
- * This function enables/disables the DMA request for rising/falling events. Either event triggers the generation of
- * the DMA
- * request from CMP if the DMA feature is enabled. Both events are ignored for generating the DMA request from the CMP
- * if the
- * DMA is disabled.
- *
- * @param base CMP peripheral base address.
- * @param enable Enable the feature or not.
- */
-void CMP_EnableDMA(CMP_Type *base, bool enable);
-#endif /* FSL_FEATURE_CMP_HAS_DMA */
-
-#if defined(FSL_FEATURE_CMP_HAS_WINDOW_MODE) && FSL_FEATURE_CMP_HAS_WINDOW_MODE
-/*!
- * @brief Enables/disables the window mode.
- *
- * @param base CMP peripheral base address.
- * @param enable Enable the feature or not.
- */
-static inline void CMP_EnableWindowMode(CMP_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->CR1 |= CMP_CR1_WE_MASK;
-    }
-    else
-    {
-        base->CR1 &= ~CMP_CR1_WE_MASK;
-    }
-}
-#endif /* FSL_FEATURE_CMP_HAS_WINDOW_MODE */
-
-#if defined(FSL_FEATURE_CMP_HAS_PASS_THROUGH_MODE) && FSL_FEATURE_CMP_HAS_PASS_THROUGH_MODE
-/*!
- * @brief Enables/disables the pass through mode.
- *
- * @param base CMP peripheral base address.
- * @param enable Enable the feature or not.
- */
-static inline void CMP_EnablePassThroughMode(CMP_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->MUXCR |= CMP_MUXCR_PSTM_MASK;
-    }
-    else
-    {
-        base->MUXCR &= ~CMP_MUXCR_PSTM_MASK;
-    }
-}
-#endif /* FSL_FEATURE_CMP_HAS_PASS_THROUGH_MODE */
-
-/*!
- * @brief  Configures the filter.
- *
- * @param  base   CMP peripheral base address.
- * @param  config Pointer to configuration structure.
- */
-void CMP_SetFilterConfig(CMP_Type *base, const cmp_filter_config_t *config);
-
-/*!
- * @brief Configures the internal DAC.
- *
- * @param base   CMP peripheral base address.
- * @param config Pointer to configuration structure. "NULL" is for disabling the feature.
- */
-void CMP_SetDACConfig(CMP_Type *base, const cmp_dac_config_t *config);
-
-/*!
- * @brief Enables the interrupts.
- *
- * @param base    CMP peripheral base address.
- * @param mask    Mask value for interrupts. See "_cmp_interrupt_enable".
- */
-void CMP_EnableInterrupts(CMP_Type *base, uint32_t mask);
-
-/*!
- * @brief Disables the interrupts.
- *
- * @param base    CMP peripheral base address.
- * @param mask    Mask value for interrupts. See "_cmp_interrupt_enable".
- */
-void CMP_DisableInterrupts(CMP_Type *base, uint32_t mask);
-
-/* @} */
-
-/*!
- * @name Results
- * @{
- */
-
-/*!
- * @brief  Gets the status flags.
- *
- * @param  base     CMP peripheral base address.
- *
- * @return          Mask value for the asserted flags. See "_cmp_status_flags".
- */
-uint32_t CMP_GetStatusFlags(CMP_Type *base);
-
-/*!
- * @brief Clears the status flags.
- *
- * @param base     CMP peripheral base address.
- * @param mask     Mask value for the flags. See "_cmp_status_flags".
- */
-void CMP_ClearStatusFlags(CMP_Type *base, uint32_t mask);
-
-/* @} */
-#if defined(__cplusplus)
-}
-#endif
-/*!
- * @}
- */
-#endif /* _FSL_CMP_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_cmt.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,260 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_cmt.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/* The standard intermediate frequency (IF). */
-#define CMT_INTERMEDIATEFREQUENCY_8MHZ (8000000U)
-/* CMT data modulate mask. */
-#define CMT_MODULATE_COUNT_WIDTH (8U)
-/* CMT diver 1. */
-#define CMT_CMTDIV_ONE (1)
-/* CMT diver 2. */
-#define CMT_CMTDIV_TWO (2)
-/* CMT diver 4. */
-#define CMT_CMTDIV_FOUR (4)
-/* CMT diver 8. */
-#define CMT_CMTDIV_EIGHT (8)
-/* CMT mode bit mask. */
-#define CMT_MODE_BIT_MASK (CMT_MSC_MCGEN_MASK | CMT_MSC_FSK_MASK | CMT_MSC_BASE_MASK)
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-
-/*!
- * @brief Get instance number for CMT module.
- *
- * @param base CMT peripheral base address.
- */
-static uint32_t CMT_GetInstance(CMT_Type *base);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-
-/*! @brief Pointers to cmt clocks for each instance. */
-const clock_ip_name_t s_cmtClock[FSL_FEATURE_SOC_CMT_COUNT] = CMT_CLOCKS;
-
-/*! @brief Pointers to cmt bases for each instance. */
-static CMT_Type *const s_cmtBases[] = CMT_BASE_PTRS;
-
-/*! @brief Pointers to cmt IRQ number for each instance. */
-const IRQn_Type s_cmtIrqs[] = CMT_IRQS;
-
-/*******************************************************************************
- * Codes
- ******************************************************************************/
-
-static uint32_t CMT_GetInstance(CMT_Type *base)
-{
-    uint32_t instance;
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < FSL_FEATURE_SOC_CMT_COUNT; instance++)
-    {
-        if (s_cmtBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < FSL_FEATURE_SOC_CMT_COUNT);
-
-    return instance;
-}
-
-void CMT_GetDefaultConfig(cmt_config_t *config)
-{
-    assert(config);
-
-    /* Default infrared output is enabled and set with high active, the divider is set to 1. */
-    config->isInterruptEnabled = false;
-    config->isIroEnabled = true;
-    config->iroPolarity = kCMT_IROActiveHigh;
-    config->divider = kCMT_SecondClkDiv1;
-}
-
-void CMT_Init(CMT_Type *base, const cmt_config_t *config, uint32_t busClock_Hz)
-{
-    assert(config);
-    assert(busClock_Hz >= CMT_INTERMEDIATEFREQUENCY_8MHZ);
-
-    uint8_t divider;
-
-    /* Ungate clock. */
-    CLOCK_EnableClock(s_cmtClock[CMT_GetInstance(base)]);
-
-    /* Sets clock divider. The divider set in pps should be set
-       to make sycClock_Hz/divder = 8MHz */
-    base->PPS = CMT_PPS_PPSDIV(busClock_Hz / CMT_INTERMEDIATEFREQUENCY_8MHZ - 1);
-    divider = base->MSC;
-    divider &= ~CMT_MSC_CMTDIV_MASK;
-    divider |= CMT_MSC_CMTDIV(config->divider);
-    base->MSC = divider;
-
-    /* Set the IRO signal. */
-    base->OC = CMT_OC_CMTPOL(config->iroPolarity) | CMT_OC_IROPEN(config->isIroEnabled);
-
-    /* Set interrupt. */
-    if (config->isInterruptEnabled)
-    {
-        CMT_EnableInterrupts(base, kCMT_EndOfCycleInterruptEnable);
-        EnableIRQ(s_cmtIrqs[CMT_GetInstance(base)]);
-    }
-}
-
-void CMT_Deinit(CMT_Type *base)
-{
-    /*Disable the CMT modulator. */
-    base->MSC = 0;
-
-    /* Disable the interrupt. */
-    CMT_DisableInterrupts(base, kCMT_EndOfCycleInterruptEnable);
-    DisableIRQ(s_cmtIrqs[CMT_GetInstance(base)]);
-
-    /* Gate the clock. */
-    CLOCK_DisableClock(s_cmtClock[CMT_GetInstance(base)]);
-}
-
-void CMT_SetMode(CMT_Type *base, cmt_mode_t mode, cmt_modulate_config_t *modulateConfig)
-{
-    uint8_t mscReg;
-
-    /* Set the mode. */
-    if (mode != kCMT_DirectIROCtl)
-    {
-        assert(modulateConfig);
-
-        /* Set carrier generator. */
-        CMT_SetCarrirGenerateCountOne(base, modulateConfig->highCount1, modulateConfig->lowCount1);
-        if (mode == kCMT_FSKMode)
-        {
-            CMT_SetCarrirGenerateCountTwo(base, modulateConfig->highCount2, modulateConfig->lowCount2);
-        }
-
-        /* Set carrier modulator. */
-        CMT_SetModulateMarkSpace(base, modulateConfig->markCount, modulateConfig->spaceCount);
-    }
-
-    /* Set the CMT mode. */
-    mscReg = base->MSC;
-    mscReg &= ~CMT_MODE_BIT_MASK;
-    mscReg |= mode;
-
-    base->MSC = mscReg;
-}
-
-cmt_mode_t CMT_GetMode(CMT_Type *base)
-{
-    uint8_t mode = base->MSC;
-
-    if (!(mode & CMT_MSC_MCGEN_MASK))
-    { /* Carrier modulator disabled and the IRO signal is in direct software control. */
-        return kCMT_DirectIROCtl;
-    }
-    else
-    {
-        /* Carrier modulator is enabled. */
-        if (mode & CMT_MSC_BASE_MASK)
-        {
-            /* Base band mode. */
-            return kCMT_BasebandMode;
-        }
-        else if (mode & CMT_MSC_FSK_MASK)
-        {
-            /* FSK mode. */
-            return kCMT_FSKMode;
-        }
-        else
-        {
-            /* Time mode. */
-            return kCMT_TimeMode;
-        }
-    }
-}
-
-uint32_t CMT_GetCMTFrequency(CMT_Type *base, uint32_t busClock_Hz)
-{
-    uint32_t frequency;
-    uint32_t divider;
-
-    /* Get intermediate frequency. */
-    frequency = busClock_Hz / ((base->PPS & CMT_PPS_PPSDIV_MASK) + 1);
-
-    /* Get the second divider. */
-    divider = ((base->MSC & CMT_MSC_CMTDIV_MASK) >> CMT_MSC_CMTDIV_SHIFT);
-    /* Get CMT frequency. */
-    switch ((cmt_second_clkdiv_t)divider)
-    {
-        case kCMT_SecondClkDiv1:
-            frequency = frequency / CMT_CMTDIV_ONE;
-            break;
-        case kCMT_SecondClkDiv2:
-            frequency = frequency / CMT_CMTDIV_TWO;
-            break;
-        case kCMT_SecondClkDiv4:
-            frequency = frequency / CMT_CMTDIV_FOUR;
-            break;
-        case kCMT_SecondClkDiv8:
-            frequency = frequency / CMT_CMTDIV_EIGHT;
-            break;
-        default:
-            frequency = frequency / CMT_CMTDIV_ONE;
-            break;
-    }
-
-    return frequency;
-}
-
-void CMT_SetModulateMarkSpace(CMT_Type *base, uint32_t markCount, uint32_t spaceCount)
-{
-    /* Set modulate mark. */
-    base->CMD1 = (markCount >> CMT_MODULATE_COUNT_WIDTH) & CMT_CMD1_MB_MASK;
-    base->CMD2 = (markCount & CMT_CMD2_MB_MASK);
-    /* Set modulate space. */
-    base->CMD3 = (spaceCount >> CMT_MODULATE_COUNT_WIDTH) & CMT_CMD3_SB_MASK;
-    base->CMD4 = spaceCount & CMT_CMD4_SB_MASK;
-}
-
-void CMT_SetIroState(CMT_Type *base, cmt_infrared_output_state_t state)
-{
-    uint8_t ocReg = base->OC;
-
-    ocReg &= ~CMT_OC_IROL_MASK;
-    ocReg |= CMT_OC_IROL(state);
-
-    /* Set the infrared output signal control. */
-    base->OC = ocReg;
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_cmt.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,402 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_CMT_H_
-#define _FSL_CMT_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup cmt
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief CMT driver version 2.0.0. */
-#define FSL_CMT_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
-/*@}*/
-
-/*!
- * @brief The modes of CMT.
- */
-typedef enum _cmt_mode
-{
-    kCMT_DirectIROCtl = 0x00U, /*!< Carrier modulator is disabled and the IRO signal is directly in software control */
-    kCMT_TimeMode = 0x01U,     /*!< Carrier modulator is enabled in time mode. */
-    kCMT_FSKMode = 0x05U,      /*!< Carrier modulator is enabled in FSK mode. */
-    kCMT_BasebandMode = 0x09U  /*!< Carrier modulator is enabled in baseband mode. */
-} cmt_mode_t;
-
-/*!
- * @brief The CMT clock divide primary prescaler.
- * The primary clock divider is used to divider the bus clock to
- * get the intermediate frequency to approximately equal to 8 MHZ.
- * When the bus clock is 8 MHZ, set primary prescaler to "kCMT_PrimaryClkDiv1".
- */
-typedef enum _cmt_primary_clkdiv
-{
-    kCMT_PrimaryClkDiv1 = 0U,   /*!< The intermediate frequency is the bus clock divided by 1. */
-    kCMT_PrimaryClkDiv2 = 1U,   /*!< The intermediate frequency is the bus clock divided by 2. */
-    kCMT_PrimaryClkDiv3 = 2U,   /*!< The intermediate frequency is the bus clock divided by 3. */
-    kCMT_PrimaryClkDiv4 = 3U,   /*!< The intermediate frequency is the bus clock divided by 4. */
-    kCMT_PrimaryClkDiv5 = 4U,   /*!< The intermediate frequency is the bus clock divided by 5. */
-    kCMT_PrimaryClkDiv6 = 5U,   /*!< The intermediate frequency is the bus clock divided by 6. */
-    kCMT_PrimaryClkDiv7 = 6U,   /*!< The intermediate frequency is the bus clock divided by 7. */
-    kCMT_PrimaryClkDiv8 = 7U,   /*!< The intermediate frequency is the bus clock divided by 8. */
-    kCMT_PrimaryClkDiv9 = 8U,   /*!< The intermediate frequency is the bus clock divided by 9. */
-    kCMT_PrimaryClkDiv10 = 9U,  /*!< The intermediate frequency is the bus clock divided by 10. */
-    kCMT_PrimaryClkDiv11 = 10U, /*!< The intermediate frequency is the bus clock divided by 11. */
-    kCMT_PrimaryClkDiv12 = 11U, /*!< The intermediate frequency is the bus clock divided by 12. */
-    kCMT_PrimaryClkDiv13 = 12U, /*!< The intermediate frequency is the bus clock divided by 13. */
-    kCMT_PrimaryClkDiv14 = 13U, /*!< The intermediate frequency is the bus clock divided by 14. */
-    kCMT_PrimaryClkDiv15 = 14U, /*!< The intermediate frequency is the bus clock divided by 15. */
-    kCMT_PrimaryClkDiv16 = 15U  /*!< The intermediate frequency is the bus clock divided by 16. */
-} cmt_primary_clkdiv_t;
-
-/*!
- * @brief The CMT clock divide secondary prescaler.
- * The second prescaler can be used to divide the 8 MHZ CMT clock
- * by 1, 2, 4, or 8 according to the specification.
- */
-typedef enum _cmt_second_clkdiv
-{
-    kCMT_SecondClkDiv1 = 0U, /*!< The CMT clock is the intermediate frequency frequency divided by 1. */
-    kCMT_SecondClkDiv2 = 1U, /*!< The CMT clock is the intermediate frequency frequency divided by 2. */
-    kCMT_SecondClkDiv4 = 2U, /*!< The CMT clock is the intermediate frequency frequency divided by 4. */
-    kCMT_SecondClkDiv8 = 3U  /*!< The CMT clock is the intermediate frequency frequency divided by 8. */
-} cmt_second_clkdiv_t;
-
-/*!
- * @brief The CMT infrared output polarity.
- */
-typedef enum _cmt_infrared_output_polarity
-{
-    kCMT_IROActiveLow = 0U, /*!< The CMT infrared output signal polarity is active-low. */
-    kCMT_IROActiveHigh = 1U /*!< The CMT infrared output signal polarity is active-high. */
-} cmt_infrared_output_polarity_t;
-
-/*!
- * @brief The CMT infrared output signal state control.
- */
-typedef enum _cmt_infrared_output_state
-{
-    kCMT_IROCtlLow = 0U, /*!< The CMT Infrared output signal state is controlled to low. */
-    kCMT_IROCtlHigh = 1U /*!< The CMT Infrared output signal state is controlled to high. */
-} cmt_infrared_output_state_t;
-
-/*!
- * @brief CMT interrupt configuration structure, default settings all disabled.
- *
- * This structure contains the settings for all of the CMT interrupt configurations.
- */
-enum _cmt_interrupt_enable
-{
-    kCMT_EndOfCycleInterruptEnable = CMT_MSC_EOCIE_MASK, /*!< CMT end of cycle interrupt. */
-};
-
-/*!
- * @brief CMT carrier generator and modulator configure structure
- *
- */
-typedef struct _cmt_modulate_config
-{
-    uint8_t highCount1;  /*!< The high time for carrier generator first register. */
-    uint8_t lowCount1;   /*!< The low time for carrier generator first register. */
-    uint8_t highCount2;  /*!< The high time for carrier generator second register for FSK mode. */
-    uint8_t lowCount2;   /*!< The low time for carrier generator second register for FSK mode. */
-    uint16_t markCount;  /*!< The mark time for the modulator gate. */
-    uint16_t spaceCount; /*!< The space time for the modulator gate. */
-} cmt_modulate_config_t;
-
-/*! @brief CMT basic configuration structure. */
-typedef struct _cmt_config
-{
-    bool isInterruptEnabled;                    /*!< Timer interrupt 0-disable, 1-enable. */
-    bool isIroEnabled;                          /*!< The IRO output 0-disabled, 1-enabled. */
-    cmt_infrared_output_polarity_t iroPolarity; /*!< The IRO polarity. */
-    cmt_second_clkdiv_t divider;                /*!< The CMT clock divide prescaler. */
-} cmt_config_t;
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
- * @name Initialization and deinitialization
- * @{
- */
-
-/*!
- * @brief Gets the CMT default configuration structure. The purpose
- * of this API is to get the default configuration structure for the CMT_Init().
- * Use the initialized structure unchanged in CMT_Init(), or modify
- * some fields of the structure before calling the CMT_Init().
- *
- * @param config The CMT configuration structure pointer.
- */
-void CMT_GetDefaultConfig(cmt_config_t *config);
-
-/*!
- * @brief Initializes the CMT module.
- *
- * This function ungates the module clock and sets the CMT internal clock,
- * interrupt, and infrared output signal for the CMT module.
- *
- * @param base            CMT peripheral base address.
- * @param config          The CMT basic configuration structure.
- * @param busClock_Hz     The CMT module input clock - bus clock frequency.
- */
-void CMT_Init(CMT_Type *base, const cmt_config_t *config, uint32_t busClock_Hz);
-
-/*!
- * @brief Disables the CMT module and gate control.
- *
- * This function disables CMT modulator, interrupts, and gates the
- * CMT clock control. CMT_Init must be called  to use the CMT again.
- *
- * @param base   CMT peripheral base address.
- */
-void CMT_Deinit(CMT_Type *base);
-
-/*! @}*/
-
-/*!
- * @name Basic Control Operations
- * @{
- */
-
-/*!
- * @brief Selects the mode for CMT.
- *
- * @param base   CMT peripheral base address.
- * @param mode   The CMT feature mode enumeration. See "cmt_mode_t".
- * @param modulateConfig  The carrier generation and modulator configuration.
- */
-void CMT_SetMode(CMT_Type *base, cmt_mode_t mode, cmt_modulate_config_t *modulateConfig);
-
-/*!
- * @brief Gets the mode of the CMT module.
- *
- * @param base   CMT peripheral base address.
- * @return The CMT mode.
- *     kCMT_DirectIROCtl     Carrier modulator is disabled, the IRO signal is directly in software control.
- *     kCMT_TimeMode         Carrier modulator is enabled in time mode.
- *     kCMT_FSKMode          Carrier modulator is enabled in FSK mode.
- *     kCMT_BasebandMode     Carrier modulator is enabled in baseband mode.
- */
-cmt_mode_t CMT_GetMode(CMT_Type *base);
-
-/*!
- * @brief Gets the actual CMT clock frequency.
- *
- * @param base        CMT peripheral base address.
- * @param busClock_Hz CMT module input clock - bus clock frequency.
- * @return The CMT clock frequency.
- */
-uint32_t CMT_GetCMTFrequency(CMT_Type *base, uint32_t busClock_Hz);
-
-/*!
- * @brief Sets the primary data set for the CMT carrier generator counter.
- *
- * This function sets the high time and low time of the primary data set for the
- * CMT carrier generator counter to control the period and the duty cycle of the
- * output carrier signal.
- * If the CMT clock period is Tcmt, The period of the carrier generator signal equals
- * (highCount + lowCount) * Tcmt. The duty cycle equals  highCount / (highCount + lowCount).
- *
- * @param base      CMT peripheral base address.
- * @param highCount The number of CMT clocks for carrier generator signal high time,
- *                  integer in the range of 1 ~ 0xFF.
- * @param lowCount  The number of CMT clocks for carrier generator signal low time,
- *                  integer in the range of 1 ~ 0xFF.
- */
-static inline void CMT_SetCarrirGenerateCountOne(CMT_Type *base, uint32_t highCount, uint32_t lowCount)
-{
-    assert(highCount <= CMT_CGH1_PH_MASK);
-    assert(highCount);
-    assert(lowCount <= CMT_CGL1_PL_MASK);
-    assert(lowCount);
-
-    base->CGH1 = highCount;
-    base->CGL1 = lowCount;
-}
-
-/*!
- * @brief Sets the secondary data set for the CMT carrier generator counter.
- *
- * This function is used for FSK mode setting the high time and low time of the secondary
- * data set CMT carrier generator counter to control the period and the duty cycle
- * of the output carrier signal.
- * If the CMT clock period is Tcmt, The period of the carrier generator signal equals
- * (highCount + lowCount) * Tcmt. The duty cycle equals  highCount / (highCount + lowCount).
- *
- * @param base      CMT peripheral base address.
- * @param highCount The number of CMT clocks for carrier generator signal high time,
- *                  integer in the range of 1 ~ 0xFF.
- * @param lowCount  The number of CMT clocks for carrier generator signal low time,
- *                  integer in the range of 1 ~ 0xFF.
- */
-static inline void CMT_SetCarrirGenerateCountTwo(CMT_Type *base, uint32_t highCount, uint32_t lowCount)
-{
-    assert(highCount <= CMT_CGH2_SH_MASK);
-    assert(highCount);
-    assert(lowCount <= CMT_CGL2_SL_MASK);
-    assert(lowCount);
-
-    base->CGH2 = highCount;
-    base->CGL2 = lowCount;
-}
-
-/*!
- * @brief Sets the modulation mark and space time period for the CMT modulator.
- *
- * This function sets the mark time period of the CMT modulator counter
- * to control the mark time of the output modulated signal from the carrier generator output signal.
- * If the CMT clock frequency is Fcmt and the carrier out signal frequency is fcg:
- *      - In Time and Baseband mode: The mark period of the generated signal equals (markCount + 1) / (Fcmt/8).
- *                                   The space period of the generated signal equals spaceCount / (Fcmt/8).
- *      - In FSK mode: The mark period of the generated signal equals (markCount + 1)/fcg.
- *                     The space period of the generated signal equals spaceCount / fcg.
- *
- * @param base Base address for current CMT instance.
- * @param markCount The number of clock period for CMT modulator signal mark period,
- *                   in the range of 0 ~ 0xFFFF.
- * @param spaceCount The number of clock period for CMT modulator signal space period,
- *                   in the range of the 0 ~ 0xFFFF.
- */
-void CMT_SetModulateMarkSpace(CMT_Type *base, uint32_t markCount, uint32_t spaceCount);
-
-/*!
- * @brief Enables or disables the extended space operation.
- *
- * This function is used to make the space period longer
- * for time, baseband, and FSK modes.
- *
- * @param base   CMT peripheral base address.
- * @param enable True enable the extended space, false disable the extended space.
- */
-static inline void CMT_EnableExtendedSpace(CMT_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->MSC |= CMT_MSC_EXSPC_MASK;
-    }
-    else
-    {
-        base->MSC &= ~CMT_MSC_EXSPC_MASK;
-    }
-}
-
-/*!
- * @brief Sets IRO - infrared output signal state.
- *
- * Changes the states of the IRO signal when the kCMT_DirectIROMode mode is set
- * and the IRO signal is enabled.
- *
- * @param base   CMT peripheral base address.
- * @param state  The control of the IRO signal. See "cmt_infrared_output_state_t"
- */
-void CMT_SetIroState(CMT_Type *base, cmt_infrared_output_state_t state);
-
-/*!
- * @brief Enables the CMT interrupt.
- *
- * This function enables the CMT interrupts according to the provided maskIf enabled.
- * The CMT only has the end of the cycle interrupt - an interrupt occurs at the end
- * of the modulator cycle. This interrupt provides a means for the user
- * to reload the new mark/space values into the CMT modulator data registers
- * and verify the modulator mark and space.
- * For example, to enable the end of cycle, do the following:
- * @code
- *     CMT_EnableInterrupts(CMT, kCMT_EndOfCycleInterruptEnable);
- * @endcode
- * @param base   CMT peripheral base address.
- * @param mask The interrupts to enable. Logical OR of @ref _cmt_interrupt_enable.
- */
-static inline void CMT_EnableInterrupts(CMT_Type *base, uint32_t mask)
-{
-    base->MSC |= mask;
-}
-
-/*!
- * @brief Disables the CMT interrupt.
- *
- * This function disables the CMT interrupts according to the provided maskIf enabled.
- * The CMT only has the end of the cycle interrupt.
- * For example, to disable the end of cycle, do the following:
- * @code
- *     CMT_DisableInterrupts(CMT, kCMT_EndOfCycleInterruptEnable);
- * @endcode
- *
- * @param base   CMT peripheral base address.
- * @param mask The interrupts to enable. Logical OR of @ref _cmt_interrupt_enable.
- */
-static inline void CMT_DisableInterrupts(CMT_Type *base, uint32_t mask)
-{
-    base->MSC &= ~mask;
-}
-
-/*!
- * @brief Gets the end of the cycle status flag.
- *
- * The flag is set:
- *           - When the modulator is not currently active and carrier and modulator
- *             are set to start the initial CMT transmission.
- *           - At the end of each modulation cycle when the counter is reloaded and
- *             the carrier and modulator are enabled.
- * @param base   CMT peripheral base address.
- * @return Current status of the end of cycle status flag
- *         @arg non-zero:  End-of-cycle has occurred.
- *         @arg zero: End-of-cycle has not yet occurred since the flag last cleared.
- */
-static inline uint32_t CMT_GetStatusFlags(CMT_Type *base)
-{
-    return base->MSC & CMT_MSC_EOCF_MASK;
-}
-
-/*! @}*/
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*! @}*/
-
-#endif /* _FSL_CMT_H_*/
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_common.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
-* Copyright (c) 2015, Freescale Semiconductor, Inc.
-* All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without modification,
-* are permitted provided that the following conditions are met:
-*
-* o Redistributions of source code must retain the above copyright notice, this list
-*   of conditions and the following disclaimer.
-*
-* o Redistributions in binary form must reproduce the above copyright notice, this
-*   list of conditions and the following disclaimer in the documentation and/or
-*   other materials provided with the distribution.
-*
-* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-*   contributors may be used to endorse or promote products derived from this
-*   software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include "fsl_common.h"
-/* This is not needed for mbed */
-#if 0
-#include "fsl_debug_console.h"
-
-#ifndef NDEBUG
-#if (defined(__CC_ARM)) || (defined(__ICCARM__))
-void __aeabi_assert(const char *failedExpr, const char *file, int line)
-{
-    PRINTF("ASSERT ERROR \" %s \": file \"%s\" Line \"%d\" \n", failedExpr, file, line);
-    for (;;)
-    {
-        __asm("bkpt #0");
-    }
-}
-#elif(defined(__GNUC__))
-void __assert_func(const char *file, int line, const char *func, const char *failedExpr)
-{
-    PRINTF("ASSERT ERROR \" %s \": file \"%s\" Line \"%d\" function name \"%s\" \n", failedExpr, file, line, func);
-    for (;;)
-    {
-        __asm("bkpt #0");
-    }
-}
-#endif /* (defined(__CC_ARM)) ||  (defined (__ICCARM__)) */
-#endif /* NDEBUG */
-#endif
-void InstallIRQHandler(IRQn_Type irq, uint32_t irqHandler)
-{
-/* Addresses for VECTOR_TABLE and VECTOR_RAM come from the linker file */
-#if defined(__CC_ARM)
-    extern uint32_t Image$$VECTOR_ROM$$Base[];
-    extern uint32_t Image$$VECTOR_RAM$$Base[];
-    extern uint32_t Image$$RW_m_data$$Base[];
-
-#define __VECTOR_TABLE Image$$VECTOR_ROM$$Base
-#define __VECTOR_RAM Image$$VECTOR_RAM$$Base
-#define __RAM_VECTOR_TABLE_SIZE (((uint32_t)Image$$RW_m_data$$Base - (uint32_t)Image$$VECTOR_RAM$$Base))
-#elif defined(__ICCARM__)
-    extern uint32_t __RAM_VECTOR_TABLE_SIZE[];
-    extern uint32_t __VECTOR_TABLE[];
-    extern uint32_t __VECTOR_RAM[];
-#elif defined(__GNUC__)
-    extern uint32_t __VECTOR_TABLE[];
-    extern uint32_t __VECTOR_RAM[];
-    extern uint32_t __RAM_VECTOR_TABLE_SIZE_BYTES[];
-    uint32_t __RAM_VECTOR_TABLE_SIZE = (uint32_t)(__RAM_VECTOR_TABLE_SIZE_BYTES);
-#endif /* defined(__CC_ARM) */
-    uint32_t n;
-
-    __disable_irq();
-    if (SCB->VTOR != (uint32_t)__VECTOR_RAM)
-    {
-        /* Copy the vector table from ROM to RAM */
-        for (n = 0; n < ((uint32_t)__RAM_VECTOR_TABLE_SIZE) / sizeof(uint32_t); n++)
-        {
-            __VECTOR_RAM[n] = __VECTOR_TABLE[n];
-        }
-        /* Point the VTOR to the position of vector table */
-        SCB->VTOR = (uint32_t)__VECTOR_RAM;
-    }
-
-    /* make sure the __VECTOR_RAM is noncachable */
-    __VECTOR_RAM[irq + 16] = irqHandler;
-
-    __enable_irq();
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_common.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,255 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _FSL_COMMON_H_
-#define _FSL_COMMON_H_
-
-#include <assert.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <string.h>
-#include "fsl_device_registers.h"
-
-/*!
- * @addtogroup ksdk_common
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @brief Construct a status code value from a group and code number. */
-#define MAKE_STATUS(group, code) ((((group)*100) + (code)))
-
-/*! @brief Construct the version number for drivers. */
-#define MAKE_VERSION(major, minor, bugfix) (((major) << 16) | ((minor) << 8) | (bugfix))
-
-/* Debug console type definition. */
-#define DEBUG_CONSOLE_DEVICE_TYPE_NONE 0U   /*!< No debug console.             */
-#define DEBUG_CONSOLE_DEVICE_TYPE_UART 1U   /*!< Debug console base on UART.   */
-#define DEBUG_CONSOLE_DEVICE_TYPE_LPUART 2U /*!< Debug console base on LPUART. */
-#define DEBUG_CONSOLE_DEVICE_TYPE_LPSCI 3U  /*!< Debug console base on LPSCI.  */
-#define DEBUG_CONSOLE_DEVICE_TYPE_USBCDC 4U /*!< Debug console base on USBCDC. */
-
-/*! @brief Status group numbers. */
-enum _status_groups
-{
-    kStatusGroup_Generic = 0,                 /*!< Group number for generic status codes. */
-    kStatusGroup_FLASH = 1,                   /*!< Group number for FLASH status codes. */
-    kStatusGroup_LPSPI = 4,                   /*!< Group number for LPSPI status codes. */
-    kStatusGroup_FLEXIO_SPI = 5,              /*!< Group number for FLEXIO SPI status codes. */
-    kStatusGroup_DSPI = 6,                    /*!< Group number for DSPI status codes. */
-    kStatusGroup_FLEXIO_UART = 7,             /*!< Group number for FLEXIO UART status codes. */
-    kStatusGroup_FLEXIO_I2C = 8,              /*!< Group number for FLEXIO I2C status codes. */
-    kStatusGroup_LPI2C = 9,                   /*!< Group number for LPI2C status codes. */
-    kStatusGroup_UART = 10,                   /*!< Group number for UART status codes. */
-    kStatusGroup_I2C = 11,                    /*!< Group number for UART status codes. */
-    kStatusGroup_LPSCI = 12,                  /*!< Group number for LPSCI status codes. */
-    kStatusGroup_LPUART = 13,                 /*!< Group number for LPUART status codes. */
-    kStatusGroup_SPI = 14,                    /*!< Group number for SPI status code.*/
-    kStatusGroup_XRDC = 15,                   /*!< Group number for XRDC status code.*/
-    kStatusGroup_SEMA42 = 16,                 /*!< Group number for SEMA42 status code.*/
-    kStatusGroup_SDHC = 17,                   /*!< Group number for SDHC status code */
-    kStatusGroup_SDMMC = 18,                  /*!< Group number for SDMMC status code */
-    kStatusGroup_SAI = 19,                    /*!< Group number for SAI status code */
-    kStatusGroup_MCG = 20,                    /*!< Group number for MCG status codes. */
-    kStatusGroup_SCG = 21,                    /*!< Group number for SCG status codes. */
-    kStatusGroup_SDSPI = 22,                  /*!< Group number for SDSPI status codes. */
-    kStatusGroup_FLEXIO_I2S = 23,             /*!< Group number for FLEXIO I2S status codes */
-    kStatusGroup_SDRAMC = 35,                 /*!< Group number for SDRAMC status codes. */
-    kStatusGroup_POWER = 39,                  /*!< Group number for POWER status codes. */
-    kStatusGroup_ENET = 40,                   /*!< Group number for ENET status codes. */
-    kStatusGroup_PHY = 41,                    /*!< Group number for PHY status codes. */
-    kStatusGroup_TRGMUX = 42,                 /*!< Group number for TRGMUX status codes. */
-    kStatusGroup_SMARTCARD = 43,              /*!< Group number for SMARTCARD status codes. */
-    kStatusGroup_LMEM = 44,                   /*!< Group number for LMEM status codes. */
-    kStatusGroup_QSPI = 45,                   /*!< Group number for QSPI status codes. */
-    kStatusGroup_DMA = 50,                    /*!< Group number for DMA status codes. */
-    kStatusGroup_EDMA = 51,                   /*!< Group number for EDMA status codes. */
-    kStatusGroup_DMAMGR = 52,                 /*!< Group number for DMAMGR status codes. */
-    kStatusGroup_FLEXCAN = 53,                /*!< Group number for FlexCAN status codes. */
-    kStatusGroup_LTC = 54,                    /*!< Group number for LTC status codes. */
-    kStatusGroup_FLEXIO_CAMERA = 55,          /*!< Group number for FLEXIO CAMERA status codes. */
-    kStatusGroup_NOTIFIER = 98,               /*!< Group number for NOTIFIER status codes. */
-    kStatusGroup_DebugConsole = 99,           /*!< Group number for debug console status codes. */
-    kStatusGroup_ApplicationRangeStart = 100, /*!< Starting number for application groups. */
-};
-
-/*! @brief Generic status return codes. */
-enum _generic_status
-{
-    kStatus_Success = MAKE_STATUS(kStatusGroup_Generic, 0),
-    kStatus_Fail = MAKE_STATUS(kStatusGroup_Generic, 1),
-    kStatus_ReadOnly = MAKE_STATUS(kStatusGroup_Generic, 2),
-    kStatus_OutOfRange = MAKE_STATUS(kStatusGroup_Generic, 3),
-    kStatus_InvalidArgument = MAKE_STATUS(kStatusGroup_Generic, 4),
-    kStatus_Timeout = MAKE_STATUS(kStatusGroup_Generic, 5),
-    kStatus_NoTransferInProgress = MAKE_STATUS(kStatusGroup_Generic, 6),
-};
-
-/*! @brief Type used for all status and error return values. */
-typedef int32_t status_t;
-
-/*
- * The fsl_clock.h is included here because it needs MAKE_VERSION/MAKE_STATUS/status_t
- * defined in previous of this file.
- */
-#include "fsl_clock.h"
-
-/*! @name Min/max macros */
-/* @{ */
-#if !defined(MIN)
-#define MIN(a, b) ((a) < (b) ? (a) : (b))
-#endif
-
-#if !defined(MAX)
-#define MAX(a, b) ((a) > (b) ? (a) : (b))
-#endif
-/* @} */
-
-/*! @brief Computes the number of elements in an array. */
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-
-/*! @name UINT16_MAX/UINT32_MAX value */
-/* @{ */
-#if !defined(UINT16_MAX)
-#define UINT16_MAX ((uint16_t)-1)
-#endif
-
-#if !defined(UINT32_MAX)
-#define UINT32_MAX ((uint32_t)-1)
-#endif
-/* @} */
-
-/*! @name Timer utilities */
-/* @{ */
-/*! Macro to convert a microsecond period to raw count value */
-#define USEC_TO_COUNT(us, clockFreqInHz) (uint64_t)((uint64_t)us * clockFreqInHz / 1000000U)
-/*! Macro to convert a raw count value to microsecond */
-#define COUNT_TO_USEC(count, clockFreqInHz) (uint64_t)((uint64_t)count * 1000000U / clockFreqInHz)
-
-/*! Macro to convert a millisecond period to raw count value */
-#define MSEC_TO_COUNT(ms, clockFreqInHz) (uint64_t)((uint64_t)ms * clockFreqInHz / 1000U)
-/*! Macro to convert a raw count value to millisecond */
-#define COUNT_TO_MSEC(count, clockFreqInHz) (uint64_t)((uint64_t)count * 1000U / clockFreqInHz)
-/* @} */
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
- * @brief Enable specific interrupt.
- *
- * Enable the interrupt not routed from intmux.
- *
- * @param interrupt The IRQ number.
- */
-static inline void EnableIRQ(IRQn_Type interrupt)
-{
-#if defined(FSL_FEATURE_SOC_INTMUX_COUNT) && (FSL_FEATURE_SOC_INTMUX_COUNT > 0)
-    if (interrupt < FSL_FEATURE_INTMUX_IRQ_START_INDEX)
-#endif
-    {
-        NVIC_EnableIRQ(interrupt);
-    }
-}
-
-/*!
- * @brief Disable specific interrupt.
- *
- * Disable the interrupt not routed from intmux.
- *
- * @param interrupt The IRQ number.
- */
-static inline void DisableIRQ(IRQn_Type interrupt)
-{
-#if defined(FSL_FEATURE_SOC_INTMUX_COUNT) && (FSL_FEATURE_SOC_INTMUX_COUNT > 0)
-    if (interrupt < FSL_FEATURE_INTMUX_IRQ_START_INDEX)
-#endif
-    {
-        NVIC_DisableIRQ(interrupt);
-    }
-}
-
-/*!
- * @brief Disable the global IRQ
- *
- * Disable the global interrupt and return the current primask register. User is required to provided the primask
- * register for the EnableGlobalIRQ().
- *
- * @return Current primask value.
- */
-static inline uint32_t DisableGlobalIRQ(void)
-{
-    uint32_t regPrimask = __get_PRIMASK();
-
-    __disable_irq();
-
-    return regPrimask;
-}
-
-/*!
- * @brief Enaable the global IRQ
- *
- * Set the primask register with the provided primask value but not just enable the primask. The idea is for the
- * convinience of integration of RTOS. some RTOS get its own management mechanism of primask. User is required to
- * use the EnableGlobalIRQ() and DisableGlobalIRQ() in pair.
- *
- * @param primask value of primask register to be restored. The primask value is supposed to be provided by the
- * DisableGlobalIRQ().
- */
-static inline void EnableGlobalIRQ(uint32_t primask)
-{
-    __set_PRIMASK(primask);
-}
-
-/*!
- * @brief install IRQ handler
- *
- * @param irq IRQ number
- * @param irqHandler IRQ handler address
- */
-void InstallIRQHandler(IRQn_Type irq, uint32_t irqHandler);
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*! @} */
-
-#endif /* _FSL_COMMON_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_crc.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,270 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "fsl_crc.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-#if defined(CRC_DRIVER_USE_CRC16_CCIT_FALSE_AS_DEFAULT) && CRC_DRIVER_USE_CRC16_CCIT_FALSE_AS_DEFAULT
-/* @brief Default user configuration structure for CRC-16-CCITT */
-#define CRC_DRIVER_DEFAULT_POLYNOMIAL 0x1021U
-/*< CRC-16-CCIT polynomial x**16 + x**12 + x**5 + x**0 */
-#define CRC_DRIVER_DEFAULT_SEED 0xFFFFU
-/*< Default initial checksum */
-#define CRC_DRIVER_DEFAULT_REFLECT_IN false
-/*< Default is no transpose */
-#define CRC_DRIVER_DEFAULT_REFLECT_OUT false
-/*< Default is transpose bytes */
-#define CRC_DRIVER_DEFAULT_COMPLEMENT_CHECKSUM false
-/*< Default is without complement of CRC data register read data */
-#define CRC_DRIVER_DEFAULT_CRC_BITS kCrcBits16
-/*< Default is 16-bit CRC protocol */
-#define CRC_DRIVER_DEFAULT_CRC_RESULT kCrcFinalChecksum
-/*< Default is resutl type is final checksum */
-#endif /* CRC_DRIVER_USE_CRC16_CCIT_FALSE_AS_DEFAULT */
-
-/*! @brief CRC type of transpose of read write data */
-typedef enum _crc_transpose_type
-{
-    kCrcTransposeNone = 0U,         /*! No transpose  */
-    kCrcTransposeBits = 1U,         /*! Tranpose bits in bytes  */
-    kCrcTransposeBitsAndBytes = 2U, /*! Transpose bytes and bits in bytes */
-    kCrcTransposeBytes = 3U,        /*! Transpose bytes */
-} crc_transpose_type_t;
-
-/*!
-* @brief CRC module configuration.
-*
-* This structure holds the configuration for the CRC module.
-*/
-typedef struct _crc_module_config
-{
-    uint32_t polynomial;                 /*!< CRC Polynomial, MSBit first.@n
-                                              Example polynomial: 0x1021 = 1_0000_0010_0001 = x^12+x^5+1 */
-    uint32_t seed;                       /*!< Starting checksum value */
-    crc_transpose_type_t readTranspose;  /*!< Type of transpose when reading CRC result. */
-    crc_transpose_type_t writeTranspose; /*!< Type of transpose when writing CRC input data. */
-    bool complementChecksum;             /*!< True if the result shall be complement of the actual checksum. */
-    crc_bits_t crcBits;                  /*!< Selects 16- or 32- bit CRC protocol. */
-} crc_module_config_t;
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-
-/*!
- * @brief Returns transpose type for CRC protocol reflect in parameter.
- *
- * This functions helps to set writeTranspose member of crc_config_t structure. Reflect in is CRC protocol parameter.
- *
- * @param enable True or false for the selected CRC protocol Reflect In (refin) parameter.
- */
-static inline crc_transpose_type_t crc_GetTransposeTypeFromReflectIn(bool enable)
-{
-    return ((enable) ? kCrcTransposeBitsAndBytes : kCrcTransposeBytes);
-}
-
-/*!
- * @brief Returns transpose type for CRC protocol reflect out parameter.
- *
- * This functions helps to set readTranspose member of crc_config_t structure. Reflect out is CRC protocol parameter.
- *
- * @param enable True or false for the selected CRC protocol Reflect Out (refout) parameter.
- */
-static inline crc_transpose_type_t crc_GetTransposeTypeFromReflectOut(bool enable)
-{
-    return ((enable) ? kCrcTransposeBitsAndBytes : kCrcTransposeNone);
-}
-
-/*!
- * @brief Starts checksum computation.
- *
- * Configures the CRC module for the specified CRC protocol. @n
- * Starts the checksum computation by writing the seed value
- *
- * @param base CRC peripheral address.
- * @param config Pointer to protocol configuration structure.
- */
-static void crc_ConfigureAndStart(CRC_Type *base, const crc_module_config_t *config)
-{
-    uint32_t crcControl;
-
-    /* pre-compute value for CRC control registger based on user configuraton without WAS field */
-    crcControl = 0 | CRC_CTRL_TOT(config->writeTranspose) | CRC_CTRL_TOTR(config->readTranspose) |
-                 CRC_CTRL_FXOR(config->complementChecksum) | CRC_CTRL_TCRC(config->crcBits);
-
-    /* make sure the control register is clear - WAS is deasserted, and protocol is set */
-    base->CTRL = crcControl;
-
-    /* write polynomial register */
-    base->GPOLY = config->polynomial;
-
-    /* write pre-computed control register value along with WAS to start checksum computation */
-    base->CTRL = crcControl | CRC_CTRL_WAS(true);
-
-    /* write seed (initial checksum) */
-    base->DATA = config->seed;
-
-    /* deassert WAS by writing pre-computed CRC control register value */
-    base->CTRL = crcControl;
-}
-
-/*!
- * @brief Starts final checksum computation.
- *
- * Configures the CRC module for the specified CRC protocol. @n
- * Starts final checksum computation by writing the seed value.
- * @note CRC_Get16bitResult() or CRC_Get32bitResult() return final checksum
- *       (output reflection and xor functions are applied).
- *
- * @param base CRC peripheral address.
- * @param protocolConfig Pointer to protocol configuration structure.
- */
-static void crc_SetProtocolConfig(CRC_Type *base, const crc_config_t *protocolConfig)
-{
-    crc_module_config_t moduleConfig;
-    /* convert protocol to CRC peripheral module configuration, prepare for final checksum */
-    moduleConfig.polynomial = protocolConfig->polynomial;
-    moduleConfig.seed = protocolConfig->seed;
-    moduleConfig.readTranspose = crc_GetTransposeTypeFromReflectOut(protocolConfig->reflectOut);
-    moduleConfig.writeTranspose = crc_GetTransposeTypeFromReflectIn(protocolConfig->reflectIn);
-    moduleConfig.complementChecksum = protocolConfig->complementChecksum;
-    moduleConfig.crcBits = protocolConfig->crcBits;
-
-    crc_ConfigureAndStart(base, &moduleConfig);
-}
-
-/*!
- * @brief Starts intermediate checksum computation.
- *
- * Configures the CRC module for the specified CRC protocol. @n
- * Starts intermediate checksum computation by writing the seed value.
- * @note CRC_Get16bitResult() or CRC_Get32bitResult() return intermediate checksum (raw data register value).
- *
- * @param base CRC peripheral address.
- * @param protocolConfig Pointer to protocol configuration structure.
- */
-static void crc_SetRawProtocolConfig(CRC_Type *base, const crc_config_t *protocolConfig)
-{
-    crc_module_config_t moduleConfig;
-    /* convert protocol to CRC peripheral module configuration, prepare for intermediate checksum */
-    moduleConfig.polynomial = protocolConfig->polynomial;
-    moduleConfig.seed = protocolConfig->seed;
-    moduleConfig.readTranspose =
-        kCrcTransposeNone; /* intermediate checksum does no transpose of data register read value */
-    moduleConfig.writeTranspose = crc_GetTransposeTypeFromReflectIn(protocolConfig->reflectIn);
-    moduleConfig.complementChecksum = false; /* intermediate checksum does no xor of data register read value */
-    moduleConfig.crcBits = protocolConfig->crcBits;
-
-    crc_ConfigureAndStart(base, &moduleConfig);
-}
-
-void CRC_Init(CRC_Type *base, const crc_config_t *config)
-{
-    /* ungate clock */
-    CLOCK_EnableClock(kCLOCK_Crc0);
-    /* configure CRC module and write the seed */
-    if (config->crcResult == kCrcFinalChecksum)
-    {
-        crc_SetProtocolConfig(base, config);
-    }
-    else
-    {
-        crc_SetRawProtocolConfig(base, config);
-    }
-}
-
-void CRC_GetDefaultConfig(crc_config_t *config)
-{
-    static const crc_config_t crc16ccit = {
-        CRC_DRIVER_DEFAULT_POLYNOMIAL,          CRC_DRIVER_DEFAULT_SEED,
-        CRC_DRIVER_DEFAULT_REFLECT_IN,          CRC_DRIVER_DEFAULT_REFLECT_OUT,
-        CRC_DRIVER_DEFAULT_COMPLEMENT_CHECKSUM, CRC_DRIVER_DEFAULT_CRC_BITS,
-        CRC_DRIVER_DEFAULT_CRC_RESULT,
-    };
-
-    *config = crc16ccit;
-}
-
-void CRC_WriteData(CRC_Type *base, const uint8_t *data, size_t dataSize)
-{
-    const uint32_t *data32;
-
-    /* 8-bit reads and writes till source address is aligned 4 bytes */
-    while ((dataSize) && ((uint32_t)data & 3U))
-    {
-        base->ACCESS8BIT.DATALL = *data;
-        data++;
-        dataSize--;
-    }
-
-    /* use 32-bit reads and writes as long as possible */
-    data32 = (const uint32_t *)data;
-    while (dataSize >= sizeof(uint32_t))
-    {
-        base->DATA = *data32;
-        data32++;
-        dataSize -= sizeof(uint32_t);
-    }
-
-    data = (const uint8_t *)data32;
-
-    /* 8-bit reads and writes till end of data buffer */
-    while (dataSize)
-    {
-        base->ACCESS8BIT.DATALL = *data;
-        data++;
-        dataSize--;
-    }
-}
-
-uint16_t CRC_Get16bitResult(CRC_Type *base)
-{
-    uint32_t retval;
-    uint32_t totr; /* type of transpose read bitfield */
-
-    retval = base->DATA;
-    totr = (base->CTRL & CRC_CTRL_TOTR_MASK) >> CRC_CTRL_TOTR_SHIFT;
-
-    /* check transpose type to get 16-bit out of 32-bit register */
-    if (totr >= 2U)
-    {
-        /* transpose of bytes for read is set, the result CRC is in CRC_DATA[HU:HL] */
-        retval &= 0xFFFF0000U;
-        retval = retval >> 16U;
-    }
-    else
-    {
-        /* no transpose of bytes for read, the result CRC is in CRC_DATA[LU:LL] */
-        retval &= 0x0000FFFFU;
-    }
-    return (uint16_t)retval;
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_crc.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,195 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _FSL_CRC_H_
-#define _FSL_CRC_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup crc_driver
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief CRC driver version. Version 2.0.0. */
-#define FSL_CRC_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
-/*@}*/
-
-/*! @internal @brief Has data register with name CRC. */
-#if defined(FSL_FEATURE_CRC_HAS_CRC_REG) && FSL_FEATURE_CRC_HAS_CRC_REG
-#define DATA CRC
-#define DATALL CRCLL
-#endif
-
-#ifndef CRC_DRIVER_CUSTOM_DEFAULTS
-/*! @brief Default configuration structure filled by CRC_GetDefaultConfig(). Use CRC16-CCIT-FALSE as defeault. */
-#define CRC_DRIVER_USE_CRC16_CCIT_FALSE_AS_DEFAULT 1
-#endif
-
-/*! @brief CRC bit width */
-typedef enum _crc_bits
-{
-    kCrcBits16 = 0U, /*!< Generate 16-bit CRC code  */
-    kCrcBits32 = 1U  /*!< Generate 32-bit CRC code  */
-} crc_bits_t;
-
-/*! @brief CRC result type */
-typedef enum _crc_result
-{
-    kCrcFinalChecksum = 0U,       /*!< CRC data register read value is the final checksum.
-                                      Reflect out and final xor protocol features are applied. */
-    kCrcIntermediateChecksum = 1U /*!< CRC data register read value is intermediate checksum (raw value).
-                                      Reflect out and final xor protocol feature are not applied.
-                                      Intermediate checksum can be used as a seed for CRC_Init()
-                                      to continue adding data to this checksum. */
-} crc_result_t;
-
-/*!
-* @brief CRC protocol configuration.
-*
-* This structure holds the configuration for the CRC protocol.
-*
-*/
-typedef struct _crc_config
-{
-    uint32_t polynomial;     /*!< CRC Polynomial, MSBit first.
-                                  Example polynomial: 0x1021 = 1_0000_0010_0001 = x^12+x^5+1 */
-    uint32_t seed;           /*!< Starting checksum value */
-    bool reflectIn;          /*!< Reflect bits on input. */
-    bool reflectOut;         /*!< Reflect bits on output. */
-    bool complementChecksum; /*!< True if the result shall be complement of the actual checksum. */
-    crc_bits_t crcBits;      /*!< Selects 16- or 32- bit CRC protocol. */
-    crc_result_t crcResult;  /*!< Selects final or intermediate checksum return from CRC_Get16bitResult() or
-                                CRC_Get32bitResult() */
-} crc_config_t;
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
- * @brief Enables and configures the CRC peripheral module.
- *
- * This functions enables the clock gate in the Kinetis SIM module for the CRC peripheral.
- * It also configures the CRC module and starts checksum computation by writing the seed.
- *
- * @param base CRC peripheral address.
- * @param config CRC module configuration structure
- */
-void CRC_Init(CRC_Type *base, const crc_config_t *config);
-
-/*!
- * @brief Disables the CRC peripheral module.
- *
- * This functions disables the clock gate in the Kinetis SIM module for the CRC peripheral.
- *
- * @param base CRC peripheral address.
- */
-static inline void CRC_Deinit(CRC_Type *base)
-{
-    /* gate clock */
-    CLOCK_DisableClock(kCLOCK_Crc0);
-}
-
-/*!
- * @brief Loads default values to CRC protocol configuration structure.
- *
- * Loads default values to CRC protocol configuration structure. The default values are:
- * @code
- *   config->polynomial = 0x1021;
- *   config->seed = 0xFFFF;
- *   config->reflectIn = false;
- *   config->reflectOut = false;
- *   config->complementChecksum = false;
- *   config->crcBits = kCrcBits16;
- *   config->crcResult = kCrcFinalChecksum;
- * @endcode
- *
- * @param config CRC protocol configuration structure
- */
-void CRC_GetDefaultConfig(crc_config_t *config);
-
-/*!
- * @brief Writes data to the CRC module.
- *
- * Writes input data buffer bytes to CRC data register.
- * The configured type of transpose is applied.
- *
- * @param base CRC peripheral address.
- * @param data Input data stream, MSByte in data[0].
- * @param dataSize Size in bytes of the input data buffer.
- */
-void CRC_WriteData(CRC_Type *base, const uint8_t *data, size_t dataSize);
-
-/*!
- * @brief Reads 32-bit checksum from the CRC module.
- *
- * Reads CRC data register (intermediate or final checksum).
- * The configured type of transpose and complement are applied.
- *
- * @param base CRC peripheral address.
- * @return intermediate or final 32-bit checksum, after configured transpose and complement operations.
- */
-static inline uint32_t CRC_Get32bitResult(CRC_Type *base)
-{
-    return base->DATA;
-}
-
-/*!
- * @brief Reads 16-bit checksum from the CRC module.
- *
- * Reads CRC data register (intermediate or final checksum).
- * The configured type of transpose and complement are applied.
- *
- * @param base CRC peripheral address.
- * @return intermediate or final 16-bit checksum, after configured transpose and complement operations.
- */
-uint16_t CRC_Get16bitResult(CRC_Type *base);
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*!
- *@}
- */
-
-#endif /* _FSL_CRC_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_dac.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,213 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_dac.h"
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-/*!
- * @brief Get instance number for DAC module.
- *
- * @param base DAC peripheral base address
- */
-static uint32_t DAC_GetInstance(DAC_Type *base);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-/*! @brief Pointers to DAC bases for each instance. */
-static DAC_Type *const s_dacBases[] = DAC_BASE_PTRS;
-/*! @brief Pointers to DAC clocks for each instance. */
-const clock_ip_name_t s_dacClocks[] = DAC_CLOCKS;
-
-/*******************************************************************************
- * Codes
- ******************************************************************************/
-static uint32_t DAC_GetInstance(DAC_Type *base)
-{
-    uint32_t instance;
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < FSL_FEATURE_SOC_DAC_COUNT; instance++)
-    {
-        if (s_dacBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < FSL_FEATURE_SOC_DAC_COUNT);
-
-    return instance;
-}
-
-void DAC_Init(DAC_Type *base, const dac_config_t *config)
-{
-    assert(NULL != config);
-
-    uint8_t tmp8;
-
-    /* Enable the clock. */
-    CLOCK_EnableClock(s_dacClocks[DAC_GetInstance(base)]);
-
-    /* Configure. */
-    /* DACx_C0. */
-    tmp8 = base->C0 & ~(DAC_C0_DACRFS_MASK | DAC_C0_LPEN_MASK);
-    if (kDAC_ReferenceVoltageSourceVref2 == config->referenceVoltageSource)
-    {
-        tmp8 |= DAC_C0_DACRFS_MASK;
-    }
-    if (config->enableLowPowerMode)
-    {
-        tmp8 |= DAC_C0_LPEN_MASK;
-    }
-    base->C0 = tmp8;
-
-    DAC_Enable(base, true);
-}
-
-void DAC_Deinit(DAC_Type *base)
-{
-    DAC_Enable(base, false);
-
-    /* Disable the clock. */
-    CLOCK_DisableClock(s_dacClocks[DAC_GetInstance(base)]);
-}
-
-void DAC_GetDefaultConfig(dac_config_t *config)
-{
-    assert(NULL != config);
-
-    config->referenceVoltageSource = kDAC_ReferenceVoltageSourceVref2;
-    config->enableLowPowerMode = false;
-}
-
-void DAC_SetBufferConfig(DAC_Type *base, const dac_buffer_config_t *config)
-{
-    assert(NULL != config);
-
-    uint8_t tmp8;
-
-    /* DACx_C0. */
-    tmp8 = base->C0 & ~(DAC_C0_DACTRGSEL_MASK);
-    if (kDAC_BufferTriggerBySoftwareMode == config->triggerMode)
-    {
-        tmp8 |= DAC_C0_DACTRGSEL_MASK;
-    }
-    base->C0 = tmp8;
-
-    /* DACx_C1. */
-    tmp8 = base->C1 &
-           ~(
-#if defined(FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION) && FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION
-               DAC_C1_DACBFWM_MASK |
-#endif /* FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION */
-               DAC_C1_DACBFMD_MASK);
-#if defined(FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION) && FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION
-    tmp8 |= DAC_C1_DACBFWM(config->watermark);
-#endif /* FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION */
-    tmp8 |= DAC_C1_DACBFMD(config->workMode);
-    base->C1 = tmp8;
-
-    /* DACx_C2. */
-    tmp8 = base->C2 & ~DAC_C2_DACBFUP_MASK;
-    tmp8 |= DAC_C2_DACBFUP(config->upperLimit);
-    base->C2 = tmp8;
-}
-
-void DAC_GetDefaultBufferConfig(dac_buffer_config_t *config)
-{
-    assert(NULL != config);
-
-    config->triggerMode = kDAC_BufferTriggerBySoftwareMode;
-#if defined(FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION) && FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION
-    config->watermark = kDAC_BufferWatermark1Word;
-#endif /* FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION */
-    config->workMode = kDAC_BufferWorkAsNormalMode;
-    config->upperLimit = DAC_DATL_COUNT - 1U;
-}
-
-void DAC_SetBufferValue(DAC_Type *base, uint8_t index, uint16_t value)
-{
-    assert(index < DAC_DATL_COUNT);
-
-    base->DAT[index].DATL = (uint8_t)(0xFFU & value);         /* Low 8-bit. */
-    base->DAT[index].DATH = (uint8_t)((0xF00U & value) >> 8); /* High 4-bit. */
-}
-
-void DAC_SetBufferReadPointer(DAC_Type *base, uint8_t index)
-{
-    assert(index < DAC_DATL_COUNT);
-
-    uint8_t tmp8 = base->C2 & ~DAC_C2_DACBFRP_MASK;
-
-    tmp8 |= DAC_C2_DACBFRP(index);
-    base->C2 = tmp8;
-}
-
-void DAC_EnableBufferInterrupts(DAC_Type *base, uint32_t mask)
-{
-    mask &= (
-#if defined(FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION) && FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION
-        DAC_C0_DACBWIEN_MASK |
-#endif /* FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION */
-        DAC_C0_DACBTIEN_MASK | DAC_C0_DACBBIEN_MASK);
-    base->C0 |= ((uint8_t)mask); /* Write 1 to enable. */
-}
-
-void DAC_DisableBufferInterrupts(DAC_Type *base, uint32_t mask)
-{
-    mask &= (
-#if defined(FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION) && FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION
-        DAC_C0_DACBWIEN_MASK |
-#endif /* FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION */
-        DAC_C0_DACBTIEN_MASK | DAC_C0_DACBBIEN_MASK);
-    base->C0 &= (uint8_t)(~((uint8_t)mask)); /* Write 0 to disable. */
-}
-
-uint32_t DAC_GetBufferStatusFlags(DAC_Type *base)
-{
-    return (uint32_t)(base->SR & (
-#if defined(FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION) && FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION
-                                     DAC_SR_DACBFWMF_MASK |
-#endif /* FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION */
-                                     DAC_SR_DACBFRPTF_MASK | DAC_SR_DACBFRPBF_MASK));
-}
-
-void DAC_ClearBufferStatusFlags(DAC_Type *base, uint32_t mask)
-{
-    mask &= (
-#if defined(FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION) && FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION
-        DAC_SR_DACBFWMF_MASK |
-#endif /* FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION */
-        DAC_SR_DACBFRPTF_MASK | DAC_SR_DACBFRPBF_MASK);
-    base->SR &= (uint8_t)(~((uint8_t)mask)); /* Write 0 to clear flags. */
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_dac.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,379 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _FSL_DAC_H_
-#define _FSL_DAC_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup dac
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief DAC driver version 2.0.0. */
-#define FSL_DAC_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
-/*@}*/
-
-/*!
- * @brief DAC buffer flags.
- */
-enum _dac_buffer_status_flags
-{
-#if defined(FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION) && FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION
-    kDAC_BufferWatermarkFlag = DAC_SR_DACBFWMF_MASK,                  /*!< DAC Buffer Watermark Flag. */
-#endif                                                                /* FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION */
-    kDAC_BufferReadPointerTopPositionFlag = DAC_SR_DACBFRPTF_MASK,    /*!< DAC Buffer Read Pointer Top Position Flag. */
-    kDAC_BufferReadPointerBottomPositionFlag = DAC_SR_DACBFRPBF_MASK, /*!< DAC Buffer Read Pointer Bottom Position
-                                                                           Flag. */
-};
-
-/*!
- * @brief DAC buffer interrupts.
- */
-enum _dac_buffer_interrupt_enable
-{
-#if defined(FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION) && FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION
-    kDAC_BufferWatermarkInterruptEnable = DAC_C0_DACBWIEN_MASK,         /*!< DAC Buffer Watermark Interrupt Enable. */
-#endif                                                                  /* FSL_FEATURE_DAC_HAS_WATERMARK_DETECTION */
-    kDAC_BufferReadPointerTopInterruptEnable = DAC_C0_DACBTIEN_MASK,    /*!< DAC Buffer Read Pointer Top Flag Interrupt
-                                                                             Enable. */
-    kDAC_BufferReadPointerBottomInterruptEnable = DAC_C0_DACBBIEN_MASK, /*!< DAC Buffer Read Pointer Bottom Flag
-                                                                             Interrupt Enable */
-};
-
-/*!
- * @brief DAC reference voltage source.
- */
-typedef enum _dac_reference_voltage_source
-{
-    kDAC_ReferenceVoltageSourceVref1 = 0U, /*!< The DAC selects DACREF_1 as the reference voltage. */
-    kDAC_ReferenceVoltageSourceVref2 = 1U, /*!< The DAC selects DACREF_2 as the reference voltage. */
-} dac_reference_voltage_source_t;
-
-/*!
- * @brief DAC buffer trigger mode.
- */
-typedef enum _dac_buffer_trigger_mode
-{
-    kDAC_BufferTriggerByHardwareMode = 0U, /*!< The DAC hardware trigger is selected. */
-    kDAC_BufferTriggerBySoftwareMode = 1U, /*!< The DAC software trigger is selected. */
-} dac_buffer_trigger_mode_t;
-
-#if defined(FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION) && FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION
-/*!
- * @brief DAC buffer watermark.
- */
-typedef enum _dac_buffer_watermark
-{
-#if defined(FSL_FEATURE_DAC_HAS_WATERMARK_1_WORD) && FSL_FEATURE_DAC_HAS_WATERMARK_1_WORD
-    kDAC_BufferWatermark1Word = 0U, /*!< 1 word  away from the upper limit. */
-#endif                              /* FSL_FEATURE_DAC_HAS_WATERMARK_1_WORD */
-#if defined(FSL_FEATURE_DAC_HAS_WATERMARK_2_WORD) && FSL_FEATURE_DAC_HAS_WATERMARK_2_WORD
-    kDAC_BufferWatermark2Word = 1U, /*!< 2 words away from the upper limit. */
-#endif                              /* FSL_FEATURE_DAC_HAS_WATERMARK_2_WORD */
-#if defined(FSL_FEATURE_DAC_HAS_WATERMARK_3_WORD) && FSL_FEATURE_DAC_HAS_WATERMARK_3_WORD
-    kDAC_BufferWatermark3Word = 2U, /*!< 3 words away from the upper limit. */
-#endif                              /* FSL_FEATURE_DAC_HAS_WATERMARK_3_WORD */
-#if defined(FSL_FEATURE_DAC_HAS_WATERMARK_4_WORD) && FSL_FEATURE_DAC_HAS_WATERMARK_4_WORD
-    kDAC_BufferWatermark4Word = 3U, /*!< 4 words away from the upper limit. */
-#endif                              /* FSL_FEATURE_DAC_HAS_WATERMARK_4_WORD */
-} dac_buffer_watermark_t;
-#endif /* FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION */
-
-/*!
- * @brief DAC buffer work mode.
- */
-typedef enum _dac_buffer_work_mode
-{
-    kDAC_BufferWorkAsNormalMode = 0U, /*!< Normal mode. */
-#if defined(FSL_FEATURE_DAC_HAS_BUFFER_SWING_MODE) && FSL_FEATURE_DAC_HAS_BUFFER_SWING_MODE
-    kDAC_BufferWorkAsSwingMode,       /*!< Swing mode. */
-#endif                                /* FSL_FEATURE_DAC_HAS_BUFFER_SWING_MODE */
-    kDAC_BufferWorkAsOneTimeScanMode, /*!< One-Time Scan mode. */
-#if defined(FSL_FEATURE_DAC_HAS_BUFFER_FIFO_MODE) && FSL_FEATURE_DAC_HAS_BUFFER_FIFO_MODE
-    kDAC_BufferWorkAsFIFOMode, /*!< FIFO mode. */
-#endif                         /* FSL_FEATURE_DAC_HAS_BUFFER_FIFO_MODE */
-} dac_buffer_work_mode_t;
-
-/*!
- * @brief DAC module configuration.
- */
-typedef struct _dac_config
-{
-    dac_reference_voltage_source_t referenceVoltageSource; /*!< Select the DAC reference voltage source. */
-    bool enableLowPowerMode;                               /*!< Enable the low power mode. */
-} dac_config_t;
-
-/*!
- * @brief DAC buffer configuration.
- */
-typedef struct _dac_buffer_config
-{
-    dac_buffer_trigger_mode_t triggerMode; /*!< Select the buffer's trigger mode. */
-#if defined(FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION) && FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION
-    dac_buffer_watermark_t watermark; /*!< Select the buffer's watermark. */
-#endif                                /* FSL_FEATURE_DAC_HAS_WATERMARK_SELECTION */
-    dac_buffer_work_mode_t workMode;  /*!< Select the buffer's work mode. */
-    uint8_t upperLimit;               /*!< Set the upper limit for buffer index.
-                                           Normally, 0-15 is available for buffer with 16 item. */
-} dac_buffer_config_t;
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
- * @name Initialization
- * @{
- */
-
-/*!
- * @brief Initializes the DAC module.
- *
- * This function initializes the DAC module, including:
- *  - Enabling the clock for DAC module.
- *  - Configuring the DAC converter with a user configuration.
- *  - Enabling the DAC module.
- *
- * @param base DAC peripheral base address.
- * @param config Pointer to the configuration structure. See "dac_config_t".
- */
-void DAC_Init(DAC_Type *base, const dac_config_t *config);
-
-/*!
- * @brief De-initializes the DAC module.
- *
- * This function de-initializes the DAC module, including:
- *  - Disabling the DAC module.
- *  - Disabling the clock for the DAC module.
- *
- * @param base DAC peripheral base address.
- */
-void DAC_Deinit(DAC_Type *base);
-
-/*!
- * @brief Initializes the DAC user configuration structure.
- *
- * This function initializes the user configuration structure to a default value. The default values are:
- * @code
- *   config->referenceVoltageSource = kDAC_ReferenceVoltageSourceVref2;
- *   config->enableLowPowerMode = false;
- * @endcode
- * @param config Pointer to the configuration structure. See "dac_config_t".
- */
-void DAC_GetDefaultConfig(dac_config_t *config);
-
-/*!
- * @brief Enables the DAC module.
- *
- * @param base DAC peripheral base address.
- * @param enable Enables the feature or not.
- */
-static inline void DAC_Enable(DAC_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->C0 |= DAC_C0_DACEN_MASK;
-    }
-    else
-    {
-        base->C0 &= ~DAC_C0_DACEN_MASK;
-    }
-}
-
-/* @} */
-
-/*!
- * @name Buffer
- * @{
- */
-
-/*!
- * @brief Enables the DAC buffer.
- *
- * @param base DAC peripheral base address.
- * @param enable Enables the feature or not.
- */
-static inline void DAC_EnableBuffer(DAC_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->C1 |= DAC_C1_DACBFEN_MASK;
-    }
-    else
-    {
-        base->C1 &= ~DAC_C1_DACBFEN_MASK;
-    }
-}
-
-/*!
- * @brief Configures the CMP buffer.
- *
- * @param base   DAC peripheral base address.
- * @param config Pointer to the configuration structure. See "dac_buffer_config_t".
- */
-void DAC_SetBufferConfig(DAC_Type *base, const dac_buffer_config_t *config);
-
-/*!
- * @brief Initializes the DAC buffer configuration structure.
- *
- * This function initializes the DAC buffer configuration structure to a default value. The default values are:
- * @code
- *   config->triggerMode = kDAC_BufferTriggerBySoftwareMode;
- *   config->watermark   = kDAC_BufferWatermark1Word;
- *   config->workMode    = kDAC_BufferWorkAsNormalMode;
- *   config->upperLimit  = DAC_DATL_COUNT - 1U;
- * @endcode
- * @param config Pointer to the configuration structure. See "dac_buffer_config_t".
- */
-void DAC_GetDefaultBufferConfig(dac_buffer_config_t *config);
-
-/*!
- * @brief Enables the DMA for DAC buffer.
- *
- * @param base DAC peripheral base address.
- * @param enable Enables the feature or not.
- */
-static inline void DAC_EnableBufferDMA(DAC_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->C1 |= DAC_C1_DMAEN_MASK;
-    }
-    else
-    {
-        base->C1 &= ~DAC_C1_DMAEN_MASK;
-    }
-}
-
-/*!
- * @brief Sets the value for  items in the buffer.
- *
- * @param base  DAC peripheral base address.
- * @param index Setting index for items in the buffer. The available index should not exceed the size of the DAC buffer.
- * @param value Setting value for items in the buffer. 12-bits are available.
- */
-void DAC_SetBufferValue(DAC_Type *base, uint8_t index, uint16_t value);
-
-/*!
- * @brief Triggers the buffer by software and updates the read pointer of the DAC buffer.
- *
- * This function triggers the function by software. The read pointer of the DAC buffer is updated with one step
- * after this function is called. Changing the read pointer depends on the buffer's work mode.
- *
- * @param base DAC peripheral base address.
- */
-static inline void DAC_DoSoftwareTriggerBuffer(DAC_Type *base)
-{
-    base->C0 |= DAC_C0_DACSWTRG_MASK;
-}
-
-/*!
- * @brief Gets the current read pointer of the DAC buffer.
- *
- * This function gets the current read pointer of the DAC buffer.
- * The current output value depends on the item indexed by the read pointer. It is updated
- * by software trigger or hardware trigger.
- *
- * @param  base DAC peripheral base address.
- *
- * @return      Current read pointer of DAC buffer.
- */
-static inline uint8_t DAC_GetBufferReadPointer(DAC_Type *base)
-{
-    return ((base->C2 & DAC_C2_DACBFRP_MASK) >> DAC_C2_DACBFRP_SHIFT);
-}
-
-/*!
- * @brief Sets the current read pointer of the DAC buffer.
- *
- * This function sets the current read pointer of the DAC buffer.
- * The current output value depends on the item indexed by the read pointer. It is updated by
- * software trigger or hardware trigger. After the read pointer changes, the DAC output value also changes.
- *
- * @param base  DAC peripheral base address.
- * @param index Setting index value for the pointer.
- */
-void DAC_SetBufferReadPointer(DAC_Type *base, uint8_t index);
-
-/*!
- * @brief Enables interrupts for the DAC buffer.
- *
- * @param base DAC peripheral base address.
- * @param mask Mask value for interrupts. See "_dac_buffer_interrupt_enable".
- */
-void DAC_EnableBufferInterrupts(DAC_Type *base, uint32_t mask);
-
-/*!
- * @brief Disables interrupts for the DAC buffer.
- *
- * @param base DAC peripheral base address.
- * @param mask Mask value for interrupts. See  "_dac_buffer_interrupt_enable".
- */
-void DAC_DisableBufferInterrupts(DAC_Type *base, uint32_t mask);
-
-/*!
- * @brief Gets the flags of events for the DAC buffer.
- *
- * @param  base DAC peripheral base address.
- *
- * @return      Mask value for the asserted flags. See  "_dac_buffer_status_flags".
- */
-uint32_t DAC_GetBufferStatusFlags(DAC_Type *base);
-
-/*!
- * @brief Clears the flags of events for the DAC buffer.
- *
- * @param base DAC peripheral base address.
- * @param mask Mask value for flags. See "_dac_buffer_status_flags_t".
- */
-void DAC_ClearBufferStatusFlags(DAC_Type *base, uint32_t mask);
-
-/* @} */
-
-#if defined(__cplusplus)
-}
-#endif
-/*!
- * @}
- */
-#endif /* _FSL_DAC_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_dmamux.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_dmamux.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-
-/*!
- * @brief Get instance number for DMAMUX.
- *
- * @param base DMAMUX peripheral base address.
- */
-static uint32_t DMAMUX_GetInstance(DMAMUX_Type *base);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-
-/*! @brief Array to map DMAMUX instance number to base pointer. */
-static DMAMUX_Type *const s_dmamuxBases[] = DMAMUX_BASE_PTRS;
-
-/*! @brief Array to map DMAMUX instance number to clock name. */
-static const clock_ip_name_t s_dmamuxClockName[] = DMAMUX_CLOCKS;
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-static uint32_t DMAMUX_GetInstance(DMAMUX_Type *base)
-{
-    uint32_t instance;
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < FSL_FEATURE_SOC_DMAMUX_COUNT; instance++)
-    {
-        if (s_dmamuxBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < FSL_FEATURE_SOC_DMAMUX_COUNT);
-
-    return instance;
-}
-
-void DMAMUX_Init(DMAMUX_Type *base)
-{
-    CLOCK_EnableClock(s_dmamuxClockName[DMAMUX_GetInstance(base)]);
-}
-
-void DMAMUX_Deinit(DMAMUX_Type *base)
-{
-    CLOCK_DisableClock(s_dmamuxClockName[DMAMUX_GetInstance(base)]);
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_dmamux.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,176 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _FSL_DMAMUX_H_
-#define _FSL_DMAMUX_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup dmamux
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief DMAMUX driver version 2.0.0. */
-#define FSL_DMAMUX_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
-/*@}*/
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif /* __cplusplus */
-
-/*!
- * @name DMAMUX Initialize and De-initialize
- * @{
- */
-
-/*!
- * @brief Initializes DMAMUX peripheral.
- *
- * This function ungate the DMAMUX clock.
- *
- * @param base DMAMUX peripheral base address.
- *
- */
-void DMAMUX_Init(DMAMUX_Type *base);
-
-/*!
- * @brief Deinitializes DMAMUX peripheral.
- *
- * This function gate the DMAMUX clock.
- *
- * @param base DMAMUX peripheral base address.
- */
-void DMAMUX_Deinit(DMAMUX_Type *base);
-
-/* @} */
-/*!
- * @name DMAMUX Channel Operation
- * @{
- */
-
-/*!
- * @brief Enable DMAMUX channel.
- *
- * This function enable DMAMUX channel to work.
- *
- * @param base DMAMUX peripheral base address.
- * @param channel DMAMUX channel number.
- */
-static inline void DMAMUX_EnableChannel(DMAMUX_Type *base, uint32_t channel)
-{
-    assert(channel < FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
-
-    base->CHCFG[channel] |= DMAMUX_CHCFG_ENBL_MASK;
-}
-
-/*!
- * @brief Disable DMAMUX channel.
- *
- * This function disable DMAMUX channel.
- *
- * @note User must disable DMAMUX channel before configure it.
- * @param base DMAMUX peripheral base address.
- * @param channel DMAMUX channel number.
- */
-static inline void DMAMUX_DisableChannel(DMAMUX_Type *base, uint32_t channel)
-{
-    assert(channel < FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
-
-    base->CHCFG[channel] &= ~DMAMUX_CHCFG_ENBL_MASK;
-}
-
-/*!
- * @brief Configure DMAMUX channel source.
- *
- * @param base DMAMUX peripheral base address.
- * @param channel DMAMUX channel number.
- * @param source Channel source which is used to trigger DMA transfer.
- */
-static inline void DMAMUX_SetSource(DMAMUX_Type *base, uint32_t channel, uint8_t source)
-{
-    assert(channel < FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
-
-    base->CHCFG[channel] = ((base->CHCFG[channel] & ~DMAMUX_CHCFG_SOURCE_MASK) | DMAMUX_CHCFG_SOURCE(source));
-}
-
-#if defined(FSL_FEATURE_DMAMUX_HAS_TRIG) && FSL_FEATURE_DMAMUX_HAS_TRIG > 0U
-/*!
- * @brief Enable DMAMUX period trigger.
- *
- * This function enable DMAMUX period trigger feature.
- *
- * @param base DMAMUX peripheral base address.
- * @param channel DMAMUX channel number.
- */
-static inline void DMAMUX_EnablePeriodTrigger(DMAMUX_Type *base, uint32_t channel)
-{
-    assert(channel < FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
-
-    base->CHCFG[channel] |= DMAMUX_CHCFG_TRIG_MASK;
-}
-
-/*!
- * @brief Disable DMAMUX period trigger.
- *
- * This function disable DMAMUX period trigger.
- *
- * @param base DMAMUX peripheral base address.
- * @param channel DMAMUX channel number.
- */
-static inline void DMAMUX_DisablePeriodTrigger(DMAMUX_Type *base, uint32_t channel)
-{
-    assert(channel < FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
-
-    base->CHCFG[channel] &= ~DMAMUX_CHCFG_TRIG_MASK;
-}
-#endif /* FSL_FEATURE_DMAMUX_HAS_TRIG */
-
-/* @} */
-
-#if defined(__cplusplus)
-}
-#endif /* __cplusplus */
-
-/* @} */
-
-#endif /* _FSL_DMAMUX_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_dspi.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1659 +0,0 @@
-/*
-* Copyright (c) 2015, Freescale Semiconductor, Inc.
-* All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without modification,
-* are permitted provided that the following conditions are met:
-*
-* o Redistributions of source code must retain the above copyright notice, this list
-*   of conditions and the following disclaimer.
-*
-* o Redistributions in binary form must reproduce the above copyright notice, this
-*   list of conditions and the following disclaimer in the documentation and/or
-*   other materials provided with the distribution.
-*
-* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-*   contributors may be used to endorse or promote products derived from this
-*   software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include "fsl_dspi.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-/*! @brief Typedef for master interrupt handler. */
-typedef void (*dspi_master_isr_t)(SPI_Type *base, dspi_master_handle_t *handle);
-
-/*! @brief Typedef for slave interrupt handler. */
-typedef void (*dspi_slave_isr_t)(SPI_Type *base, dspi_slave_handle_t *handle);
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-/*!
- * @brief Get instance number for DSPI module.
- *
- * @param base DSPI peripheral base address.
- */
-uint32_t DSPI_GetInstance(SPI_Type *base);
-
-/*!
- * @brief Configures the DSPI peripheral chip select polarity.
- *
- * This function  takes in the desired peripheral chip select (Pcs) and it's corresponding desired polarity and
- * configures the Pcs signal to operate with the desired characteristic.
- *
- * @param base DSPI peripheral address.
- * @param pcs The particular peripheral chip select (parameter value is of type dspi_which_pcs_t) for which we wish to
- *            apply the active high or active low characteristic.
- * @param activeLowOrHigh The setting for either "active high, inactive low (0)"  or "active low, inactive high(1)" of
- *                        type dspi_pcs_polarity_config_t.
- */
-static void DSPI_SetOnePcsPolarity(SPI_Type *base, dspi_which_pcs_t pcs, dspi_pcs_polarity_config_t activeLowOrHigh);
-
-/*!
- * @brief Master fill up the TX FIFO with data.
- * This is not a public API as it is called from other driver functions.
- */
-static void DSPI_MasterTransferFillUpTxFifo(SPI_Type *base, dspi_master_handle_t *handle);
-
-/*!
- * @brief Master finish up a transfer.
- * It would call back if there is callback function and set the state to idle.
- * This is not a public API as it is called from other driver functions.
- */
-static void DSPI_MasterTransferComplete(SPI_Type *base, dspi_master_handle_t *handle);
-
-/*!
- * @brief Slave fill up the TX FIFO with data.
- * This is not a public API as it is called from other driver functions.
- */
-static void DSPI_SlaveTransferFillUpTxFifo(SPI_Type *base, dspi_slave_handle_t *handle);
-
-/*!
- * @brief Slave finish up a transfer.
- * It would call back if there is callback function and set the state to idle.
- * This is not a public API as it is called from other driver functions.
- */
-static void DSPI_SlaveTransferComplete(SPI_Type *base, dspi_slave_handle_t *handle);
-
-/*!
- * @brief DSPI common interrupt handler.
- *
- * @param base DSPI peripheral address.
- * @param handle pointer to g_dspiHandle which stores the transfer state.
- */
-static void DSPI_CommonIRQHandler(SPI_Type *base, void *param);
-
-/*!
- * @brief Master prepare the transfer.
- * Basically it set up dspi_master_handle .
- * This is not a public API as it is called from other driver functions. fsl_dspi_edma.c also call this function.
- */
-static void DSPI_MasterTransferPrepare(SPI_Type *base, dspi_master_handle_t *handle, dspi_transfer_t *transfer);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-
-/* Defines constant value arrays for the baud rate pre-scalar and scalar divider values.*/
-static const uint32_t s_baudratePrescaler[] = {2, 3, 5, 7};
-static const uint32_t s_baudrateScaler[] = {2,   4,   6,    8,    16,   32,   64,    128,
-                                            256, 512, 1024, 2048, 4096, 8192, 16384, 32768};
-
-static const uint32_t s_delayPrescaler[] = {1, 3, 5, 7};
-static const uint32_t s_delayScaler[] = {2,   4,    8,    16,   32,   64,    128,   256,
-                                         512, 1024, 2048, 4096, 8192, 16384, 32768, 65536};
-
-/*! @brief Pointers to dspi bases for each instance. */
-static SPI_Type *const s_dspiBases[] = SPI_BASE_PTRS;
-
-/*! @brief Pointers to dspi IRQ number for each instance. */
-static IRQn_Type const s_dspiIRQ[] = SPI_IRQS;
-
-/*! @brief Pointers to dspi clocks for each instance. */
-static clock_ip_name_t const s_dspiClock[] = DSPI_CLOCKS;
-
-/*! @brief Pointers to dspi handles for each instance. */
-static void *g_dspiHandle[FSL_FEATURE_SOC_DSPI_COUNT];
-
-/*! @brief Pointer to master IRQ handler for each instance. */
-static dspi_master_isr_t s_dspiMasterIsr;
-
-/*! @brief Pointer to slave IRQ handler for each instance. */
-static dspi_slave_isr_t s_dspiSlaveIsr;
-
-/**********************************************************************************************************************
-* Code
-*********************************************************************************************************************/
-uint32_t DSPI_GetInstance(SPI_Type *base)
-{
-    uint32_t instance;
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < FSL_FEATURE_SOC_DSPI_COUNT; instance++)
-    {
-        if (s_dspiBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < FSL_FEATURE_SOC_DSPI_COUNT);
-
-    return instance;
-}
-
-void DSPI_MasterInit(SPI_Type *base, const dspi_master_config_t *masterConfig, uint32_t srcClock_Hz)
-{
-    uint32_t temp;
-    /* enable DSPI clock */
-    CLOCK_EnableClock(s_dspiClock[DSPI_GetInstance(base)]);
-
-    DSPI_Enable(base, true);
-    DSPI_StopTransfer(base);
-
-    DSPI_SetMasterSlaveMode(base, kDSPI_Master);
-
-    temp = base->MCR & (~(SPI_MCR_CONT_SCKE_MASK | SPI_MCR_MTFE_MASK | SPI_MCR_ROOE_MASK | SPI_MCR_SMPL_PT_MASK |
-                          SPI_MCR_DIS_TXF_MASK | SPI_MCR_DIS_RXF_MASK));
-
-    base->MCR = temp | SPI_MCR_CONT_SCKE(masterConfig->enableContinuousSCK) |
-                SPI_MCR_MTFE(masterConfig->enableModifiedTimingFormat) |
-                SPI_MCR_ROOE(masterConfig->enableRxFifoOverWrite) | SPI_MCR_SMPL_PT(masterConfig->samplePoint) |
-                SPI_MCR_DIS_TXF(false) | SPI_MCR_DIS_RXF(false);
-
-    DSPI_SetOnePcsPolarity(base, masterConfig->whichPcs, masterConfig->pcsActiveHighOrLow);
-
-    if (0 == DSPI_MasterSetBaudRate(base, masterConfig->whichCtar, masterConfig->ctarConfig.baudRate, srcClock_Hz))
-    {
-        assert(false);
-    }
-
-    temp = base->CTAR[masterConfig->whichCtar] &
-           ~(SPI_CTAR_FMSZ_MASK | SPI_CTAR_CPOL_MASK | SPI_CTAR_CPHA_MASK | SPI_CTAR_LSBFE_MASK);
-
-    base->CTAR[masterConfig->whichCtar] =
-        temp | SPI_CTAR_FMSZ(masterConfig->ctarConfig.bitsPerFrame - 1) | SPI_CTAR_CPOL(masterConfig->ctarConfig.cpol) |
-        SPI_CTAR_CPHA(masterConfig->ctarConfig.cpha) | SPI_CTAR_LSBFE(masterConfig->ctarConfig.direction);
-
-    DSPI_MasterSetDelayTimes(base, masterConfig->whichCtar, kDSPI_PcsToSck, srcClock_Hz,
-                             masterConfig->ctarConfig.pcsToSckDelayInNanoSec);
-    DSPI_MasterSetDelayTimes(base, masterConfig->whichCtar, kDSPI_LastSckToPcs, srcClock_Hz,
-                             masterConfig->ctarConfig.lastSckToPcsDelayInNanoSec);
-    DSPI_MasterSetDelayTimes(base, masterConfig->whichCtar, kDSPI_BetweenTransfer, srcClock_Hz,
-                             masterConfig->ctarConfig.betweenTransferDelayInNanoSec);
-
-    DSPI_StartTransfer(base);
-}
-
-void DSPI_MasterGetDefaultConfig(dspi_master_config_t *masterConfig)
-{
-    masterConfig->whichCtar = kDSPI_Ctar0;
-    masterConfig->ctarConfig.baudRate = 500000;
-    masterConfig->ctarConfig.bitsPerFrame = 8;
-    masterConfig->ctarConfig.cpol = kDSPI_ClockPolarityActiveHigh;
-    masterConfig->ctarConfig.cpha = kDSPI_ClockPhaseFirstEdge;
-    masterConfig->ctarConfig.direction = kDSPI_MsbFirst;
-
-    masterConfig->ctarConfig.pcsToSckDelayInNanoSec = 1000;
-    masterConfig->ctarConfig.lastSckToPcsDelayInNanoSec = 1000;
-    masterConfig->ctarConfig.betweenTransferDelayInNanoSec = 1000;
-
-    masterConfig->whichPcs = kDSPI_Pcs0;
-    masterConfig->pcsActiveHighOrLow = kDSPI_PcsActiveLow;
-
-    masterConfig->enableContinuousSCK = false;
-    masterConfig->enableRxFifoOverWrite = false;
-    masterConfig->enableModifiedTimingFormat = false;
-    masterConfig->samplePoint = kDSPI_SckToSin0Clock;
-}
-
-void DSPI_SlaveInit(SPI_Type *base, const dspi_slave_config_t *slaveConfig)
-{
-    uint32_t temp = 0;
-
-    /* enable DSPI clock */
-    CLOCK_EnableClock(s_dspiClock[DSPI_GetInstance(base)]);
-
-    DSPI_Enable(base, true);
-    DSPI_StopTransfer(base);
-
-    DSPI_SetMasterSlaveMode(base, kDSPI_Slave);
-
-    temp = base->MCR & (~(SPI_MCR_CONT_SCKE_MASK | SPI_MCR_MTFE_MASK | SPI_MCR_ROOE_MASK | SPI_MCR_SMPL_PT_MASK |
-                          SPI_MCR_DIS_TXF_MASK | SPI_MCR_DIS_RXF_MASK));
-
-    base->MCR = temp | SPI_MCR_CONT_SCKE(slaveConfig->enableContinuousSCK) |
-                SPI_MCR_MTFE(slaveConfig->enableModifiedTimingFormat) |
-                SPI_MCR_ROOE(slaveConfig->enableRxFifoOverWrite) | SPI_MCR_SMPL_PT(slaveConfig->samplePoint) |
-                SPI_MCR_DIS_TXF(false) | SPI_MCR_DIS_RXF(false);
-
-    DSPI_SetOnePcsPolarity(base, kDSPI_Pcs0, kDSPI_PcsActiveLow);
-
-    temp = base->CTAR[slaveConfig->whichCtar] &
-           ~(SPI_CTAR_FMSZ_MASK | SPI_CTAR_CPOL_MASK | SPI_CTAR_CPHA_MASK | SPI_CTAR_LSBFE_MASK);
-
-    base->CTAR[slaveConfig->whichCtar] = temp | SPI_CTAR_SLAVE_FMSZ(slaveConfig->ctarConfig.bitsPerFrame - 1) |
-                                         SPI_CTAR_SLAVE_CPOL(slaveConfig->ctarConfig.cpol) |
-                                         SPI_CTAR_SLAVE_CPHA(slaveConfig->ctarConfig.cpha);
-
-    DSPI_StartTransfer(base);
-}
-
-void DSPI_SlaveGetDefaultConfig(dspi_slave_config_t *slaveConfig)
-{
-    slaveConfig->whichCtar = kDSPI_Ctar0;
-    slaveConfig->ctarConfig.bitsPerFrame = 8;
-    slaveConfig->ctarConfig.cpol = kDSPI_ClockPolarityActiveHigh;
-    slaveConfig->ctarConfig.cpha = kDSPI_ClockPhaseFirstEdge;
-
-    slaveConfig->enableContinuousSCK = false;
-    slaveConfig->enableRxFifoOverWrite = false;
-    slaveConfig->enableModifiedTimingFormat = false;
-    slaveConfig->samplePoint = kDSPI_SckToSin0Clock;
-}
-
-void DSPI_Deinit(SPI_Type *base)
-{
-    DSPI_StopTransfer(base);
-    DSPI_Enable(base, false);
-
-    /* disable DSPI clock */
-    CLOCK_DisableClock(s_dspiClock[DSPI_GetInstance(base)]);
-}
-
-static void DSPI_SetOnePcsPolarity(SPI_Type *base, dspi_which_pcs_t pcs, dspi_pcs_polarity_config_t activeLowOrHigh)
-{
-    uint32_t temp;
-
-    temp = base->MCR;
-
-    if (activeLowOrHigh == kDSPI_PcsActiveLow)
-    {
-        temp |= SPI_MCR_PCSIS(pcs);
-    }
-    else
-    {
-        temp &= ~SPI_MCR_PCSIS(pcs);
-    }
-
-    base->MCR = temp;
-}
-
-uint32_t DSPI_MasterSetBaudRate(SPI_Type *base,
-                                dspi_ctar_selection_t whichCtar,
-                                uint32_t baudRate_Bps,
-                                uint32_t srcClock_Hz)
-{
-    /* for master mode configuration, if slave mode detected, return 0*/
-    if (!DSPI_IsMaster(base))
-    {
-        return 0;
-    }
-    uint32_t temp;
-    uint32_t prescaler, bestPrescaler;
-    uint32_t scaler, bestScaler;
-    uint32_t dbr, bestDbr;
-    uint32_t realBaudrate, bestBaudrate;
-    uint32_t diff, min_diff;
-    uint32_t baudrate = baudRate_Bps;
-
-    /* find combination of prescaler and scaler resulting in baudrate closest to the requested value */
-    min_diff = 0xFFFFFFFFU;
-    bestPrescaler = 0;
-    bestScaler = 0;
-    bestDbr = 1;
-    bestBaudrate = 0; /* required to avoid compilation warning */
-
-    /* In all for loops, if min_diff = 0, the exit for loop*/
-    for (prescaler = 0; (prescaler < 4) && min_diff; prescaler++)
-    {
-        for (scaler = 0; (scaler < 16) && min_diff; scaler++)
-        {
-            for (dbr = 1; (dbr < 3) && min_diff; dbr++)
-            {
-                realBaudrate = ((srcClock_Hz * dbr) / (s_baudratePrescaler[prescaler] * (s_baudrateScaler[scaler])));
-
-                /* calculate the baud rate difference based on the conditional statement that states that the calculated
-                * baud rate must not exceed the desired baud rate.
-                */
-                if (baudrate >= realBaudrate)
-                {
-                    diff = baudrate - realBaudrate;
-                    if (min_diff > diff)
-                    {
-                        /* a better match found */
-                        min_diff = diff;
-                        bestPrescaler = prescaler;
-                        bestScaler = scaler;
-                        bestBaudrate = realBaudrate;
-                        bestDbr = dbr;
-                    }
-                }
-            }
-        }
-    }
-
-    /* write the best dbr, prescalar, and baud rate scalar to the CTAR */
-    temp = base->CTAR[whichCtar] & ~(SPI_CTAR_DBR_MASK | SPI_CTAR_PBR_MASK | SPI_CTAR_BR_MASK);
-
-    base->CTAR[whichCtar] = temp | ((bestDbr - 1) << SPI_CTAR_DBR_SHIFT) | (bestPrescaler << SPI_CTAR_PBR_SHIFT) |
-                            (bestScaler << SPI_CTAR_BR_SHIFT);
-
-    /* return the actual calculated baud rate */
-    return bestBaudrate;
-}
-
-void DSPI_MasterSetDelayScaler(
-    SPI_Type *base, dspi_ctar_selection_t whichCtar, uint32_t prescaler, uint32_t scaler, dspi_delay_type_t whichDelay)
-{
-    /* these settings are only relevant in master mode */
-    if (DSPI_IsMaster(base))
-    {
-        switch (whichDelay)
-        {
-            case kDSPI_PcsToSck:
-                base->CTAR[whichCtar] = (base->CTAR[whichCtar] & (~SPI_CTAR_PCSSCK_MASK) & (~SPI_CTAR_CSSCK_MASK)) |
-                                        SPI_CTAR_PCSSCK(prescaler) | SPI_CTAR_CSSCK(scaler);
-                break;
-            case kDSPI_LastSckToPcs:
-                base->CTAR[whichCtar] = (base->CTAR[whichCtar] & (~SPI_CTAR_PASC_MASK) & (~SPI_CTAR_ASC_MASK)) |
-                                        SPI_CTAR_PASC(prescaler) | SPI_CTAR_ASC(scaler);
-                break;
-            case kDSPI_BetweenTransfer:
-                base->CTAR[whichCtar] = (base->CTAR[whichCtar] & (~SPI_CTAR_PDT_MASK) & (~SPI_CTAR_DT_MASK)) |
-                                        SPI_CTAR_PDT(prescaler) | SPI_CTAR_DT(scaler);
-                break;
-            default:
-                break;
-        }
-    }
-}
-
-uint32_t DSPI_MasterSetDelayTimes(SPI_Type *base,
-                                  dspi_ctar_selection_t whichCtar,
-                                  dspi_delay_type_t whichDelay,
-                                  uint32_t srcClock_Hz,
-                                  uint32_t delayTimeInNanoSec)
-{
-    /* for master mode configuration, if slave mode detected, return 0 */
-    if (!DSPI_IsMaster(base))
-    {
-        return 0;
-    }
-
-    uint32_t prescaler, bestPrescaler;
-    uint32_t scaler, bestScaler;
-    uint32_t realDelay, bestDelay;
-    uint32_t diff, min_diff;
-    uint32_t initialDelayNanoSec;
-
-    /* find combination of prescaler and scaler resulting in the delay closest to the
-    * requested value
-    */
-    min_diff = 0xFFFFFFFFU;
-    /* Initialize prescaler and scaler to their max values to generate the max delay */
-    bestPrescaler = 0x3;
-    bestScaler = 0xF;
-    bestDelay = (((1000000000U * 4) / srcClock_Hz) * s_delayPrescaler[bestPrescaler] * s_delayScaler[bestScaler]) / 4;
-
-    /* First calculate the initial, default delay */
-    initialDelayNanoSec = 1000000000U / srcClock_Hz * 2;
-
-    /* If the initial, default delay is already greater than the desired delay, then
-    * set the delays to their initial value (0) and return the delay. In other words,
-    * there is no way to decrease the delay value further.
-    */
-    if (initialDelayNanoSec >= delayTimeInNanoSec)
-    {
-        DSPI_MasterSetDelayScaler(base, whichCtar, 0, 0, whichDelay);
-        return initialDelayNanoSec;
-    }
-
-    /* In all for loops, if min_diff = 0, the exit for loop */
-    for (prescaler = 0; (prescaler < 4) && min_diff; prescaler++)
-    {
-        for (scaler = 0; (scaler < 16) && min_diff; scaler++)
-        {
-            realDelay = ((4000000000U / srcClock_Hz) * s_delayPrescaler[prescaler] * s_delayScaler[scaler]) / 4;
-
-            /* calculate the delay difference based on the conditional statement
-            * that states that the calculated delay must not be less then the desired delay
-            */
-            if (realDelay >= delayTimeInNanoSec)
-            {
-                diff = realDelay - delayTimeInNanoSec;
-                if (min_diff > diff)
-                {
-                    /* a better match found */
-                    min_diff = diff;
-                    bestPrescaler = prescaler;
-                    bestScaler = scaler;
-                    bestDelay = realDelay;
-                }
-            }
-        }
-    }
-
-    /* write the best dbr, prescalar, and baud rate scalar to the CTAR */
-    DSPI_MasterSetDelayScaler(base, whichCtar, bestPrescaler, bestScaler, whichDelay);
-
-    /* return the actual calculated baud rate */
-    return bestDelay;
-}
-
-void DSPI_GetDefaultDataCommandConfig(dspi_command_data_config_t *command)
-{
-    command->isPcsContinuous = false;
-    command->whichCtar = kDSPI_Ctar0;
-    command->whichPcs = kDSPI_Pcs0;
-    command->isEndOfQueue = false;
-    command->clearTransferCount = false;
-}
-
-void DSPI_MasterWriteDataBlocking(SPI_Type *base, dspi_command_data_config_t *command, uint16_t data)
-{
-    /* First, clear Transmit Complete Flag (TCF) */
-    DSPI_ClearStatusFlags(base, kDSPI_TxCompleteFlag);
-
-    while (!(DSPI_GetStatusFlags(base) & kDSPI_TxFifoFillRequestFlag))
-    {
-        DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-    }
-
-    base->PUSHR = SPI_PUSHR_CONT(command->isPcsContinuous) | SPI_PUSHR_CTAS(command->whichCtar) |
-                  SPI_PUSHR_PCS(command->whichPcs) | SPI_PUSHR_EOQ(command->isEndOfQueue) |
-                  SPI_PUSHR_CTCNT(command->clearTransferCount) | SPI_PUSHR_TXDATA(data);
-    DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-
-    /* Wait till TCF sets */
-    while (!(DSPI_GetStatusFlags(base) & kDSPI_TxCompleteFlag))
-    {
-    }
-}
-
-void DSPI_MasterWriteCommandDataBlocking(SPI_Type *base, uint32_t data)
-{
-    /* First, clear Transmit Complete Flag (TCF) */
-    DSPI_ClearStatusFlags(base, kDSPI_TxCompleteFlag);
-
-    while (!(DSPI_GetStatusFlags(base) & kDSPI_TxFifoFillRequestFlag))
-    {
-        DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-    }
-
-    base->PUSHR = data;
-
-    DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-
-    /* Wait till TCF sets */
-    while (!(DSPI_GetStatusFlags(base) & kDSPI_TxCompleteFlag))
-    {
-    }
-}
-
-void DSPI_SlaveWriteDataBlocking(SPI_Type *base, uint32_t data)
-{
-    /* First, clear Transmit Complete Flag (TCF) */
-    DSPI_ClearStatusFlags(base, kDSPI_TxCompleteFlag);
-
-    while (!(DSPI_GetStatusFlags(base) & kDSPI_TxFifoFillRequestFlag))
-    {
-        DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-    }
-
-    base->PUSHR_SLAVE = data;
-
-    DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-
-    /* Wait till TCF sets */
-    while (!(DSPI_GetStatusFlags(base) & kDSPI_TxCompleteFlag))
-    {
-    }
-}
-
-void DSPI_EnableInterrupts(SPI_Type *base, uint32_t mask)
-{
-    if (mask & SPI_RSER_TFFF_RE_MASK)
-    {
-        base->RSER &= ~SPI_RSER_TFFF_DIRS_MASK;
-    }
-    if (mask & SPI_RSER_RFDF_RE_MASK)
-    {
-        base->RSER &= ~SPI_RSER_RFDF_DIRS_MASK;
-    }
-    base->RSER |= mask;
-}
-
-/*Transactional APIs -- Master*/
-
-void DSPI_MasterTransferCreateHandle(SPI_Type *base,
-                                     dspi_master_handle_t *handle,
-                                     dspi_master_transfer_callback_t callback,
-                                     void *userData)
-{
-    assert(handle);
-
-    /* Zero the handle. */
-    memset(handle, 0, sizeof(*handle));
-
-    g_dspiHandle[DSPI_GetInstance(base)] = handle;
-
-    handle->callback = callback;
-    handle->userData = userData;
-}
-
-status_t DSPI_MasterTransferBlocking(SPI_Type *base, dspi_transfer_t *transfer)
-{
-    assert(transfer);
-
-    uint16_t wordToSend = 0;
-    uint16_t wordReceived = 0;
-    uint8_t dummyData = DSPI_MASTER_DUMMY_DATA;
-    uint8_t bitsPerFrame;
-
-    uint32_t command;
-    uint32_t lastCommand;
-
-    uint8_t *txData;
-    uint8_t *rxData;
-    uint32_t remainingSendByteCount;
-    uint32_t remainingReceiveByteCount;
-
-    uint32_t fifoSize;
-    dspi_command_data_config_t commandStruct;
-
-    /* If the transfer count is zero, then return immediately.*/
-    if (transfer->dataSize == 0)
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    DSPI_StopTransfer(base);
-    DSPI_DisableInterrupts(base, kDSPI_AllInterruptEnable);
-    DSPI_FlushFifo(base, true, true);
-    DSPI_ClearStatusFlags(base, kDSPI_AllStatusFlag);
-
-    /*Calculate the command and lastCommand*/
-    commandStruct.whichPcs =
-        (dspi_which_pcs_t)(1U << ((transfer->configFlags & DSPI_MASTER_PCS_MASK) >> DSPI_MASTER_PCS_SHIFT));
-    commandStruct.isEndOfQueue = false;
-    commandStruct.clearTransferCount = false;
-    commandStruct.whichCtar =
-        (dspi_ctar_selection_t)((transfer->configFlags & DSPI_MASTER_CTAR_MASK) >> DSPI_MASTER_CTAR_SHIFT);
-    commandStruct.isPcsContinuous = (bool)(transfer->configFlags & kDSPI_MasterPcsContinuous);
-
-    command = DSPI_MasterGetFormattedCommand(&(commandStruct));
-
-    commandStruct.isPcsContinuous = (bool)(transfer->configFlags & kDSPI_MasterActiveAfterTransfer);
-    lastCommand = DSPI_MasterGetFormattedCommand(&(commandStruct));
-
-    /*Calculate the bitsPerFrame*/
-    bitsPerFrame = ((base->CTAR[commandStruct.whichCtar] & SPI_CTAR_FMSZ_MASK) >> SPI_CTAR_FMSZ_SHIFT) + 1;
-
-    txData = transfer->txData;
-    rxData = transfer->rxData;
-    remainingSendByteCount = transfer->dataSize;
-    remainingReceiveByteCount = transfer->dataSize;
-
-    if ((base->MCR & SPI_MCR_DIS_RXF_MASK) || (base->MCR & SPI_MCR_DIS_TXF_MASK))
-    {
-        fifoSize = 1;
-    }
-    else
-    {
-        fifoSize = FSL_FEATURE_DSPI_FIFO_SIZEn(base);
-    }
-
-    DSPI_StartTransfer(base);
-
-    if (bitsPerFrame <= 8)
-    {
-        while (remainingSendByteCount > 0)
-        {
-            if (remainingSendByteCount == 1)
-            {
-                while ((remainingReceiveByteCount - remainingSendByteCount) >= fifoSize)
-                {
-                    if (DSPI_GetStatusFlags(base) & kDSPI_RxFifoDrainRequestFlag)
-                    {
-                        if (rxData != NULL)
-                        {
-                            *(rxData) = DSPI_ReadData(base);
-                            rxData++;
-                        }
-                        else
-                        {
-                            DSPI_ReadData(base);
-                        }
-                        remainingReceiveByteCount--;
-
-                        DSPI_ClearStatusFlags(base, kDSPI_RxFifoDrainRequestFlag);
-                    }
-                }
-
-                while (!(DSPI_GetStatusFlags(base) & kDSPI_TxFifoFillRequestFlag))
-                {
-                    DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-                }
-
-                if (txData != NULL)
-                {
-                    base->PUSHR = (*txData) | (lastCommand);
-                    txData++;
-                }
-                else
-                {
-                    base->PUSHR = (lastCommand) | (dummyData);
-                }
-                DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-                remainingSendByteCount--;
-
-                while (remainingReceiveByteCount > 0)
-                {
-                    if (DSPI_GetStatusFlags(base) & kDSPI_RxFifoDrainRequestFlag)
-                    {
-                        if (rxData != NULL)
-                        {
-                            /* Read data from POPR*/
-                            *(rxData) = DSPI_ReadData(base);
-                            rxData++;
-                        }
-                        else
-                        {
-                            DSPI_ReadData(base);
-                        }
-                        remainingReceiveByteCount--;
-
-                        DSPI_ClearStatusFlags(base, kDSPI_RxFifoDrainRequestFlag);
-                    }
-                }
-            }
-            else
-            {
-                /*Wait until Tx Fifo is not full*/
-                while (!(DSPI_GetStatusFlags(base) & kDSPI_TxFifoFillRequestFlag))
-                {
-                    DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-                }
-                if (txData != NULL)
-                {
-                    base->PUSHR = command | (uint16_t)(*txData);
-                    txData++;
-                }
-                else
-                {
-                    base->PUSHR = command | dummyData;
-                }
-                remainingSendByteCount--;
-
-                DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-
-                if (DSPI_GetStatusFlags(base) & kDSPI_RxFifoDrainRequestFlag)
-                {
-                    if (rxData != NULL)
-                    {
-                        *(rxData) = DSPI_ReadData(base);
-                        rxData++;
-                    }
-                    else
-                    {
-                        DSPI_ReadData(base);
-                    }
-                    remainingReceiveByteCount--;
-
-                    DSPI_ClearStatusFlags(base, kDSPI_RxFifoDrainRequestFlag);
-                }
-            }
-        }
-    }
-    else
-    {
-        while (remainingSendByteCount > 0)
-        {
-            if (remainingSendByteCount <= 2)
-            {
-                while (((remainingReceiveByteCount - remainingSendByteCount) / 2) >= fifoSize)
-                {
-                    if (DSPI_GetStatusFlags(base) & kDSPI_RxFifoDrainRequestFlag)
-                    {
-                        wordReceived = DSPI_ReadData(base);
-
-                        if (rxData != NULL)
-                        {
-                            *rxData = wordReceived;
-                            ++rxData;
-                            *rxData = wordReceived >> 8;
-                            ++rxData;
-                        }
-                        remainingReceiveByteCount -= 2;
-
-                        DSPI_ClearStatusFlags(base, kDSPI_RxFifoDrainRequestFlag);
-                    }
-                }
-
-                while (!(DSPI_GetStatusFlags(base) & kDSPI_TxFifoFillRequestFlag))
-                {
-                    DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-                }
-
-                if (txData != NULL)
-                {
-                    wordToSend = *(txData);
-                    ++txData;
-
-                    if (remainingSendByteCount > 1)
-                    {
-                        wordToSend |= (unsigned)(*(txData)) << 8U;
-                        ++txData;
-                    }
-                }
-                else
-                {
-                    wordToSend = dummyData;
-                }
-
-                base->PUSHR = lastCommand | wordToSend;
-
-                DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-                remainingSendByteCount = 0;
-
-                while (remainingReceiveByteCount > 0)
-                {
-                    if (DSPI_GetStatusFlags(base) & kDSPI_RxFifoDrainRequestFlag)
-                    {
-                        wordReceived = DSPI_ReadData(base);
-
-                        if (remainingReceiveByteCount != 1)
-                        {
-                            if (rxData != NULL)
-                            {
-                                *(rxData) = wordReceived;
-                                ++rxData;
-                                *(rxData) = wordReceived >> 8;
-                                ++rxData;
-                            }
-                            remainingReceiveByteCount -= 2;
-                        }
-                        else
-                        {
-                            if (rxData != NULL)
-                            {
-                                *(rxData) = wordReceived;
-                                ++rxData;
-                            }
-                            remainingReceiveByteCount--;
-                        }
-                        DSPI_ClearStatusFlags(base, kDSPI_RxFifoDrainRequestFlag);
-                    }
-                }
-            }
-            else
-            {
-                /*Wait until Tx Fifo is not full*/
-                while (!(DSPI_GetStatusFlags(base) & kDSPI_TxFifoFillRequestFlag))
-                {
-                    DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-                }
-
-                if (txData != NULL)
-                {
-                    wordToSend = *(txData);
-                    ++txData;
-                    wordToSend |= (unsigned)(*(txData)) << 8U;
-                    ++txData;
-                }
-                else
-                {
-                    wordToSend = dummyData;
-                }
-                base->PUSHR = command | wordToSend;
-                remainingSendByteCount -= 2;
-
-                DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-
-                if (DSPI_GetStatusFlags(base) & kDSPI_RxFifoDrainRequestFlag)
-                {
-                    wordReceived = DSPI_ReadData(base);
-
-                    if (rxData != NULL)
-                    {
-                        *rxData = wordReceived;
-                        ++rxData;
-                        *rxData = wordReceived >> 8;
-                        ++rxData;
-                    }
-                    remainingReceiveByteCount -= 2;
-
-                    DSPI_ClearStatusFlags(base, kDSPI_RxFifoDrainRequestFlag);
-                }
-            }
-        }
-    }
-
-    return kStatus_Success;
-}
-
-static void DSPI_MasterTransferPrepare(SPI_Type *base, dspi_master_handle_t *handle, dspi_transfer_t *transfer)
-{
-    dspi_command_data_config_t commandStruct;
-
-    DSPI_StopTransfer(base);
-    DSPI_FlushFifo(base, true, true);
-    DSPI_ClearStatusFlags(base, kDSPI_AllStatusFlag);
-
-    commandStruct.whichPcs =
-        (dspi_which_pcs_t)(1U << ((transfer->configFlags & DSPI_MASTER_PCS_MASK) >> DSPI_MASTER_PCS_SHIFT));
-    commandStruct.isEndOfQueue = false;
-    commandStruct.clearTransferCount = false;
-    commandStruct.whichCtar =
-        (dspi_ctar_selection_t)((transfer->configFlags & DSPI_MASTER_CTAR_MASK) >> DSPI_MASTER_CTAR_SHIFT);
-    commandStruct.isPcsContinuous = (bool)(transfer->configFlags & kDSPI_MasterPcsContinuous);
-    handle->command = DSPI_MasterGetFormattedCommand(&(commandStruct));
-
-    commandStruct.isPcsContinuous = (bool)(transfer->configFlags & kDSPI_MasterActiveAfterTransfer);
-    handle->lastCommand = DSPI_MasterGetFormattedCommand(&(commandStruct));
-
-    handle->bitsPerFrame = ((base->CTAR[commandStruct.whichCtar] & SPI_CTAR_FMSZ_MASK) >> SPI_CTAR_FMSZ_SHIFT) + 1;
-
-    if ((base->MCR & SPI_MCR_DIS_RXF_MASK) || (base->MCR & SPI_MCR_DIS_TXF_MASK))
-    {
-        handle->fifoSize = 1;
-    }
-    else
-    {
-        handle->fifoSize = FSL_FEATURE_DSPI_FIFO_SIZEn(base);
-    }
-    handle->txData = transfer->txData;
-    handle->rxData = transfer->rxData;
-    handle->remainingSendByteCount = transfer->dataSize;
-    handle->remainingReceiveByteCount = transfer->dataSize;
-    handle->totalByteCount = transfer->dataSize;
-}
-
-status_t DSPI_MasterTransferNonBlocking(SPI_Type *base, dspi_master_handle_t *handle, dspi_transfer_t *transfer)
-{
-    assert(handle && transfer);
-
-    /* If the transfer count is zero, then return immediately.*/
-    if (transfer->dataSize == 0)
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* Check that we're not busy.*/
-    if (handle->state == kDSPI_Busy)
-    {
-        return kStatus_DSPI_Busy;
-    }
-
-    handle->state = kDSPI_Busy;
-
-    DSPI_MasterTransferPrepare(base, handle, transfer);
-    DSPI_StartTransfer(base);
-
-    /* Enable the NVIC for DSPI peripheral. */
-    EnableIRQ(s_dspiIRQ[DSPI_GetInstance(base)]);
-
-    DSPI_MasterTransferFillUpTxFifo(base, handle);
-
-    /* RX FIFO Drain request: RFDF_RE to enable RFDF interrupt
-    * Since SPI is a synchronous interface, we only need to enable the RX interrupt.
-    * The IRQ handler will get the status of RX and TX interrupt flags.
-    */
-    s_dspiMasterIsr = DSPI_MasterTransferHandleIRQ;
-
-    DSPI_EnableInterrupts(base, kDSPI_RxFifoDrainRequestInterruptEnable);
-
-    return kStatus_Success;
-}
-
-status_t DSPI_MasterTransferGetCount(SPI_Type *base, dspi_master_handle_t *handle, size_t *count)
-{
-    assert(handle);
-
-    if (!count)
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* Catch when there is not an active transfer. */
-    if (handle->state != kDSPI_Busy)
-    {
-        *count = 0;
-        return kStatus_NoTransferInProgress;
-    }
-
-    *count = handle->totalByteCount - handle->remainingReceiveByteCount;
-    return kStatus_Success;
-}
-
-static void DSPI_MasterTransferComplete(SPI_Type *base, dspi_master_handle_t *handle)
-{
-    /* Disable interrupt requests*/
-    DSPI_DisableInterrupts(base, kDSPI_RxFifoDrainRequestInterruptEnable | kDSPI_TxFifoFillRequestInterruptEnable);
-
-    status_t status = 0;
-    if (handle->state == kDSPI_Error)
-    {
-        status = kStatus_DSPI_Error;
-    }
-    else
-    {
-        status = kStatus_Success;
-    }
-
-    if (handle->callback)
-    {
-        handle->callback(base, handle, status, handle->userData);
-    }
-
-    /* The transfer is complete.*/
-    handle->state = kDSPI_Idle;
-}
-
-static void DSPI_MasterTransferFillUpTxFifo(SPI_Type *base, dspi_master_handle_t *handle)
-{
-    uint16_t wordToSend = 0;
-    uint8_t dummyData = DSPI_MASTER_DUMMY_DATA;
-
-    /* If bits/frame is greater than one byte */
-    if (handle->bitsPerFrame > 8)
-    {
-        /* Fill the fifo until it is full or until the send word count is 0 or until the difference
-        * between the remainingReceiveByteCount and remainingSendByteCount equals the FIFO depth.
-        * The reason for checking the difference is to ensure we only send as much as the
-        * RX FIFO can receive.
-        * For this case where bitsPerFrame > 8, each entry in the FIFO contains 2 bytes of the
-        * send data, hence the difference between the remainingReceiveByteCount and
-        * remainingSendByteCount must be divided by 2 to convert this difference into a
-        * 16-bit (2 byte) value.
-        */
-        while ((DSPI_GetStatusFlags(base) & kDSPI_TxFifoFillRequestFlag) &&
-               ((handle->remainingReceiveByteCount - handle->remainingSendByteCount) / 2 < handle->fifoSize))
-        {
-            if (handle->remainingSendByteCount <= 2)
-            {
-                if (handle->txData)
-                {
-                    if (handle->remainingSendByteCount == 1)
-                    {
-                        wordToSend = *(handle->txData);
-                    }
-                    else
-                    {
-                        wordToSend = *(handle->txData);
-                        ++handle->txData; /* increment to next data byte */
-                        wordToSend |= (unsigned)(*(handle->txData)) << 8U;
-                    }
-                }
-                else
-                {
-                    wordToSend = dummyData;
-                }
-                handle->remainingSendByteCount = 0;
-                base->PUSHR = handle->lastCommand | wordToSend;
-            }
-            /* For all words except the last word */
-            else
-            {
-                if (handle->txData)
-                {
-                    wordToSend = *(handle->txData);
-                    ++handle->txData; /* increment to next data byte */
-                    wordToSend |= (unsigned)(*(handle->txData)) << 8U;
-                    ++handle->txData; /* increment to next data byte */
-                }
-                else
-                {
-                    wordToSend = dummyData;
-                }
-                handle->remainingSendByteCount -= 2; /* decrement remainingSendByteCount by 2 */
-                base->PUSHR = handle->command | wordToSend;
-            }
-
-            /* Try to clear the TFFF; if the TX FIFO is full this will clear */
-            DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-
-            /* exit loop if send count is zero, else update local variables for next loop */
-            if (handle->remainingSendByteCount == 0)
-            {
-                break;
-            }
-        } /* End of TX FIFO fill while loop */
-    }
-    /* Optimized for bits/frame less than or equal to one byte. */
-    else
-    {
-        /* Fill the fifo until it is full or until the send word count is 0 or until the difference
-        * between the remainingReceiveByteCount and remainingSendByteCount equals the FIFO depth.
-        * The reason for checking the difference is to ensure we only send as much as the
-        * RX FIFO can receive.
-        */
-        while ((DSPI_GetStatusFlags(base) & kDSPI_TxFifoFillRequestFlag) &&
-               ((handle->remainingReceiveByteCount - handle->remainingSendByteCount) < handle->fifoSize))
-        {
-            if (handle->txData)
-            {
-                wordToSend = *(handle->txData);
-                ++handle->txData;
-            }
-            else
-            {
-                wordToSend = dummyData;
-            }
-
-            if (handle->remainingSendByteCount == 1)
-            {
-                base->PUSHR = handle->lastCommand | wordToSend;
-            }
-            else
-            {
-                base->PUSHR = handle->command | wordToSend;
-            }
-
-            /* Try to clear the TFFF; if the TX FIFO is full this will clear */
-            DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-
-            --handle->remainingSendByteCount;
-
-            /* exit loop if send count is zero, else update local variables for next loop */
-            if (handle->remainingSendByteCount == 0)
-            {
-                break;
-            }
-        }
-    }
-}
-
-void DSPI_MasterTransferAbort(SPI_Type *base, dspi_master_handle_t *handle)
-{
-    DSPI_StopTransfer(base);
-
-    /* Disable interrupt requests*/
-    DSPI_DisableInterrupts(base, kDSPI_RxFifoDrainRequestInterruptEnable | kDSPI_TxFifoFillRequestInterruptEnable);
-
-    handle->state = kDSPI_Idle;
-}
-
-void DSPI_MasterTransferHandleIRQ(SPI_Type *base, dspi_master_handle_t *handle)
-{
-    /* RECEIVE IRQ handler: Check read buffer only if there are remaining bytes to read. */
-    if (handle->remainingReceiveByteCount)
-    {
-        /* Check read buffer.*/
-        uint16_t wordReceived; /* Maximum supported data bit length in master mode is 16-bits */
-
-        /* If bits/frame is greater than one byte */
-        if (handle->bitsPerFrame > 8)
-        {
-            while (DSPI_GetStatusFlags(base) & kDSPI_RxFifoDrainRequestFlag)
-            {
-                wordReceived = DSPI_ReadData(base);
-                /* clear the rx fifo drain request, needed for non-DMA applications as this flag
-                * will remain set even if the rx fifo is empty. By manually clearing this flag, it
-                * either remain clear if no more data is in the fifo, or it will set if there is
-                * more data in the fifo.
-                */
-                DSPI_ClearStatusFlags(base, kDSPI_RxFifoDrainRequestFlag);
-
-                /* Store read bytes into rx buffer only if a buffer pointer was provided */
-                if (handle->rxData)
-                {
-                    /* For the last word received, if there is an extra byte due to the odd transfer
-                    * byte count, only save the the last byte and discard the upper byte
-                    */
-                    if (handle->remainingReceiveByteCount == 1)
-                    {
-                        *handle->rxData = wordReceived; /* Write first data byte */
-                        --handle->remainingReceiveByteCount;
-                    }
-                    else
-                    {
-                        *handle->rxData = wordReceived;      /* Write first data byte */
-                        ++handle->rxData;                    /* increment to next data byte */
-                        *handle->rxData = wordReceived >> 8; /* Write second data byte */
-                        ++handle->rxData;                    /* increment to next data byte */
-                        handle->remainingReceiveByteCount -= 2;
-                    }
-                }
-                else
-                {
-                    if (handle->remainingReceiveByteCount == 1)
-                    {
-                        --handle->remainingReceiveByteCount;
-                    }
-                    else
-                    {
-                        handle->remainingReceiveByteCount -= 2;
-                    }
-                }
-                if (handle->remainingReceiveByteCount == 0)
-                {
-                    break;
-                }
-            } /* End of RX FIFO drain while loop */
-        }
-        /* Optimized for bits/frame less than or equal to one byte. */
-        else
-        {
-            while (DSPI_GetStatusFlags(base) & kDSPI_RxFifoDrainRequestFlag)
-            {
-                wordReceived = DSPI_ReadData(base);
-                /* clear the rx fifo drain request, needed for non-DMA applications as this flag
-                * will remain set even if the rx fifo is empty. By manually clearing this flag, it
-                * either remain clear if no more data is in the fifo, or it will set if there is
-                * more data in the fifo.
-                */
-                DSPI_ClearStatusFlags(base, kDSPI_RxFifoDrainRequestFlag);
-
-                /* Store read bytes into rx buffer only if a buffer pointer was provided */
-                if (handle->rxData)
-                {
-                    *handle->rxData = wordReceived;
-                    ++handle->rxData;
-                }
-
-                --handle->remainingReceiveByteCount;
-
-                if (handle->remainingReceiveByteCount == 0)
-                {
-                    break;
-                }
-            } /* End of RX FIFO drain while loop */
-        }
-    }
-
-    /* Check write buffer. We always have to send a word in order to keep the transfer
-    * moving. So if the caller didn't provide a send buffer, we just send a zero.
-    */
-    if (handle->remainingSendByteCount)
-    {
-        DSPI_MasterTransferFillUpTxFifo(base, handle);
-    }
-
-    /* Check if we're done with this transfer.*/
-    if ((handle->remainingSendByteCount == 0) && (handle->remainingReceiveByteCount == 0))
-    {
-        /* Complete the transfer and disable the interrupts */
-        DSPI_MasterTransferComplete(base, handle);
-    }
-}
-
-/*Transactional APIs -- Slave*/
-void DSPI_SlaveTransferCreateHandle(SPI_Type *base,
-                                    dspi_slave_handle_t *handle,
-                                    dspi_slave_transfer_callback_t callback,
-                                    void *userData)
-{
-    assert(handle);
-
-    /* Zero the handle. */
-    memset(handle, 0, sizeof(*handle));
-
-    g_dspiHandle[DSPI_GetInstance(base)] = handle;
-
-    handle->callback = callback;
-    handle->userData = userData;
-}
-
-status_t DSPI_SlaveTransferNonBlocking(SPI_Type *base, dspi_slave_handle_t *handle, dspi_transfer_t *transfer)
-{
-    assert(handle && transfer);
-
-    /* If receive length is zero */
-    if (transfer->dataSize == 0)
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* If both send buffer and receive buffer is null */
-    if ((!(transfer->txData)) && (!(transfer->rxData)))
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* Check that we're not busy.*/
-    if (handle->state == kDSPI_Busy)
-    {
-        return kStatus_DSPI_Busy;
-    }
-    handle->state = kDSPI_Busy;
-
-    /* Enable the NVIC for DSPI peripheral. */
-    EnableIRQ(s_dspiIRQ[DSPI_GetInstance(base)]);
-
-    /* Store transfer information */
-    handle->txData = transfer->txData;
-    handle->rxData = transfer->rxData;
-    handle->remainingSendByteCount = transfer->dataSize;
-    handle->remainingReceiveByteCount = transfer->dataSize;
-    handle->totalByteCount = transfer->dataSize;
-
-    handle->errorCount = 0;
-
-    uint8_t whichCtar = (transfer->configFlags & DSPI_SLAVE_CTAR_MASK) >> DSPI_SLAVE_CTAR_SHIFT;
-    handle->bitsPerFrame =
-        (((base->CTAR_SLAVE[whichCtar]) & SPI_CTAR_SLAVE_FMSZ_MASK) >> SPI_CTAR_SLAVE_FMSZ_SHIFT) + 1;
-
-    DSPI_StopTransfer(base);
-
-    DSPI_FlushFifo(base, true, true);
-    DSPI_ClearStatusFlags(base, kDSPI_AllStatusFlag);
-
-    DSPI_StartTransfer(base);
-
-    /* Prepare data to transmit */
-    DSPI_SlaveTransferFillUpTxFifo(base, handle);
-
-    s_dspiSlaveIsr = DSPI_SlaveTransferHandleIRQ;
-
-    /* Enable RX FIFO drain request, the slave only use this interrupt */
-    DSPI_EnableInterrupts(base, kDSPI_RxFifoDrainRequestInterruptEnable);
-
-    if (handle->rxData)
-    {
-        /* RX FIFO overflow request enable */
-        DSPI_EnableInterrupts(base, kDSPI_RxFifoOverflowInterruptEnable);
-    }
-    if (handle->txData)
-    {
-        /* TX FIFO underflow request enable */
-        DSPI_EnableInterrupts(base, kDSPI_TxFifoUnderflowInterruptEnable);
-    }
-
-    return kStatus_Success;
-}
-
-status_t DSPI_SlaveTransferGetCount(SPI_Type *base, dspi_slave_handle_t *handle, size_t *count)
-{
-    assert(handle);
-
-    if (!count)
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* Catch when there is not an active transfer. */
-    if (handle->state != kDSPI_Busy)
-    {
-        *count = 0;
-        return kStatus_NoTransferInProgress;
-    }
-
-    *count = handle->totalByteCount - handle->remainingReceiveByteCount;
-    return kStatus_Success;
-}
-
-static void DSPI_SlaveTransferFillUpTxFifo(SPI_Type *base, dspi_slave_handle_t *handle)
-{
-    uint16_t transmitData = 0;
-    uint8_t dummyPattern = DSPI_SLAVE_DUMMY_DATA;
-
-    /* Service the transmitter, if transmit buffer provided, transmit the data,
-    * else transmit dummy pattern
-    */
-    while (DSPI_GetStatusFlags(base) & kDSPI_TxFifoFillRequestFlag)
-    {
-        /* Transmit data */
-        if (handle->remainingSendByteCount > 0)
-        {
-            /* Have data to transmit, update the transmit data and push to FIFO */
-            if (handle->bitsPerFrame <= 8)
-            {
-                /* bits/frame is 1 byte */
-                if (handle->txData)
-                {
-                    /* Update transmit data and transmit pointer */
-                    transmitData = *handle->txData;
-                    handle->txData++;
-                }
-                else
-                {
-                    transmitData = dummyPattern;
-                }
-
-                /* Decrease remaining dataSize */
-                --handle->remainingSendByteCount;
-            }
-            /* bits/frame is 2 bytes */
-            else
-            {
-                /* With multibytes per frame transmission, the transmit frame contains data from
-                * transmit buffer until sent dataSize matches user request. Other bytes will set to
-                * dummy pattern value.
-                */
-                if (handle->txData)
-                {
-                    /* Update first byte of transmit data and transmit pointer */
-                    transmitData = *handle->txData;
-                    handle->txData++;
-
-                    if (handle->remainingSendByteCount == 1)
-                    {
-                        /* Decrease remaining dataSize */
-                        --handle->remainingSendByteCount;
-                        /* Update second byte of transmit data to second byte of dummy pattern */
-                        transmitData = transmitData | (uint16_t)(((uint16_t)dummyPattern) << 8);
-                    }
-                    else
-                    {
-                        /* Update second byte of transmit data and transmit pointer */
-                        transmitData = transmitData | (uint16_t)((uint16_t)(*handle->txData) << 8);
-                        handle->txData++;
-                        handle->remainingSendByteCount -= 2;
-                    }
-                }
-                else
-                {
-                    if (handle->remainingSendByteCount == 1)
-                    {
-                        --handle->remainingSendByteCount;
-                    }
-                    else
-                    {
-                        handle->remainingSendByteCount -= 2;
-                    }
-                    transmitData = (uint16_t)((uint16_t)(dummyPattern) << 8) | dummyPattern;
-                }
-            }
-        }
-        else
-        {
-            break;
-        }
-
-        /* Write the data to the DSPI data register */
-        base->PUSHR_SLAVE = transmitData;
-
-        /* Try to clear TFFF by writing a one to it; it will not clear if TX FIFO not full */
-        DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-    }
-}
-
-static void DSPI_SlaveTransferComplete(SPI_Type *base, dspi_slave_handle_t *handle)
-{
-    /* Disable interrupt requests */
-    DSPI_DisableInterrupts(base, kDSPI_TxFifoUnderflowInterruptEnable | kDSPI_TxFifoFillRequestInterruptEnable |
-                                     kDSPI_RxFifoOverflowInterruptEnable | kDSPI_RxFifoDrainRequestInterruptEnable);
-
-    /* The transfer is complete. */
-    handle->txData = NULL;
-    handle->rxData = NULL;
-    handle->remainingReceiveByteCount = 0;
-    handle->remainingSendByteCount = 0;
-
-    status_t status = 0;
-    if (handle->state == kDSPI_Error)
-    {
-        status = kStatus_DSPI_Error;
-    }
-    else
-    {
-        status = kStatus_Success;
-    }
-
-    if (handle->callback)
-    {
-        handle->callback(base, handle, status, handle->userData);
-    }
-
-    handle->state = kDSPI_Idle;
-}
-
-void DSPI_SlaveTransferAbort(SPI_Type *base, dspi_slave_handle_t *handle)
-{
-    DSPI_StopTransfer(base);
-
-    /* Disable interrupt requests */
-    DSPI_DisableInterrupts(base, kDSPI_TxFifoUnderflowInterruptEnable | kDSPI_TxFifoFillRequestInterruptEnable |
-                                     kDSPI_RxFifoOverflowInterruptEnable | kDSPI_RxFifoDrainRequestInterruptEnable);
-
-    handle->state = kDSPI_Idle;
-    handle->remainingSendByteCount = 0;
-    handle->remainingReceiveByteCount = 0;
-}
-
-void DSPI_SlaveTransferHandleIRQ(SPI_Type *base, dspi_slave_handle_t *handle)
-{
-    uint8_t dummyPattern = DSPI_SLAVE_DUMMY_DATA;
-    uint32_t dataReceived;
-    uint32_t dataSend = 0;
-
-    /* Because SPI protocol is synchronous, the number of bytes that that slave received from the
-    * master is the actual number of bytes that the slave transmitted to the master. So we only
-    * monitor the received dataSize to know when the transfer is complete.
-    */
-    if (handle->remainingReceiveByteCount > 0)
-    {
-        while (DSPI_GetStatusFlags(base) & kDSPI_RxFifoDrainRequestFlag)
-        {
-            /* Have received data in the buffer. */
-            dataReceived = base->POPR;
-            /*Clear the rx fifo drain request, needed for non-DMA applications as this flag
-            * will remain set even if the rx fifo is empty. By manually clearing this flag, it
-            * either remain clear if no more data is in the fifo, or it will set if there is
-            * more data in the fifo.
-            */
-            DSPI_ClearStatusFlags(base, kDSPI_RxFifoDrainRequestFlag);
-
-            /* If bits/frame is one byte */
-            if (handle->bitsPerFrame <= 8)
-            {
-                if (handle->rxData)
-                {
-                    /* Receive buffer is not null, store data into it */
-                    *handle->rxData = dataReceived;
-                    ++handle->rxData;
-                }
-                /* Descrease remaining receive byte count */
-                --handle->remainingReceiveByteCount;
-
-                if (handle->remainingSendByteCount > 0)
-                {
-                    if (handle->txData)
-                    {
-                        dataSend = *handle->txData;
-                        ++handle->txData;
-                    }
-                    else
-                    {
-                        dataSend = dummyPattern;
-                    }
-
-                    --handle->remainingSendByteCount;
-                    /* Write the data to the DSPI data register */
-                    base->PUSHR_SLAVE = dataSend;
-                }
-            }
-            else /* If bits/frame is 2 bytes */
-            {
-                /* With multibytes frame receiving, we only receive till the received dataSize
-                * matches user request. Other bytes will be ignored.
-                */
-                if (handle->rxData)
-                {
-                    /* Receive buffer is not null, store first byte into it */
-                    *handle->rxData = dataReceived;
-                    ++handle->rxData;
-
-                    if (handle->remainingReceiveByteCount == 1)
-                    {
-                        /* Decrease remaining receive byte count */
-                        --handle->remainingReceiveByteCount;
-                    }
-                    else
-                    {
-                        /* Receive buffer is not null, store second byte into it */
-                        *handle->rxData = dataReceived >> 8;
-                        ++handle->rxData;
-                        handle->remainingReceiveByteCount -= 2;
-                    }
-                }
-                /* If no handle->rxData*/
-                else
-                {
-                    if (handle->remainingReceiveByteCount == 1)
-                    {
-                        /* Decrease remaining receive byte count */
-                        --handle->remainingReceiveByteCount;
-                    }
-                    else
-                    {
-                        handle->remainingReceiveByteCount -= 2;
-                    }
-                }
-
-                if (handle->remainingSendByteCount > 0)
-                {
-                    if (handle->txData)
-                    {
-                        dataSend = *handle->txData;
-                        ++handle->txData;
-
-                        if (handle->remainingSendByteCount == 1)
-                        {
-                            --handle->remainingSendByteCount;
-                            dataSend |= (uint16_t)((uint16_t)(dummyPattern) << 8);
-                        }
-                        else
-                        {
-                            dataSend |= (uint32_t)(*handle->txData) << 8;
-                            ++handle->txData;
-                            handle->remainingSendByteCount -= 2;
-                        }
-                    }
-                    /* If no handle->txData*/
-                    else
-                    {
-                        if (handle->remainingSendByteCount == 1)
-                        {
-                            --handle->remainingSendByteCount;
-                        }
-                        else
-                        {
-                            handle->remainingSendByteCount -= 2;
-                        }
-                        dataSend = (uint16_t)((uint16_t)(dummyPattern) << 8) | dummyPattern;
-                    }
-                    /* Write the data to the DSPI data register */
-                    base->PUSHR_SLAVE = dataSend;
-                }
-            }
-            /* Try to clear TFFF by writing a one to it; it will not clear if TX FIFO not full */
-            DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-
-            if (handle->remainingReceiveByteCount == 0)
-            {
-                break;
-            }
-        }
-    }
-    /* Check if remaining receive byte count matches user request */
-    if ((handle->remainingReceiveByteCount == 0) || (handle->state == kDSPI_Error))
-    {
-        /* Other cases, stop the transfer. */
-        DSPI_SlaveTransferComplete(base, handle);
-        return;
-    }
-
-    /* Catch tx fifo underflow conditions, service only if tx under flow interrupt enabled */
-    if ((DSPI_GetStatusFlags(base) & kDSPI_TxFifoUnderflowFlag) && (base->RSER & SPI_RSER_TFUF_RE_MASK))
-    {
-        DSPI_ClearStatusFlags(base, kDSPI_TxFifoUnderflowFlag);
-        /* Change state to error and clear flag */
-        if (handle->txData)
-        {
-            handle->state = kDSPI_Error;
-        }
-        handle->errorCount++;
-    }
-    /* Catch rx fifo overflow conditions, service only if rx over flow interrupt enabled */
-    if ((DSPI_GetStatusFlags(base) & kDSPI_RxFifoOverflowFlag) && (base->RSER & SPI_RSER_RFOF_RE_MASK))
-    {
-        DSPI_ClearStatusFlags(base, kDSPI_RxFifoOverflowFlag);
-        /* Change state to error and clear flag */
-        if (handle->txData)
-        {
-            handle->state = kDSPI_Error;
-        }
-        handle->errorCount++;
-    }
-}
-
-static void DSPI_CommonIRQHandler(SPI_Type *base, void *param)
-{
-    if (DSPI_IsMaster(base))
-    {
-        s_dspiMasterIsr(base, (dspi_master_handle_t *)param);
-    }
-    else
-    {
-        s_dspiSlaveIsr(base, (dspi_slave_handle_t *)param);
-    }
-}
-
-#if defined(SPI0)
-void SPI0_DriverIRQHandler(void)
-{
-    assert(g_dspiHandle[0]);
-    DSPI_CommonIRQHandler(SPI0, g_dspiHandle[0]);
-}
-#endif
-
-#if defined(SPI1)
-void SPI1_DriverIRQHandler(void)
-{
-    assert(g_dspiHandle[1]);
-    DSPI_CommonIRQHandler(SPI1, g_dspiHandle[1]);
-}
-#endif
-
-#if defined(SPI2)
-void SPI2_DriverIRQHandler(void)
-{
-    assert(g_dspiHandle[2]);
-    DSPI_CommonIRQHandler(SPI2, g_dspiHandle[2]);
-}
-#endif
-
-#if defined(SPI3)
-void SPI3_DriverIRQHandler(void)
-{
-    assert(g_dspiHandle[3]);
-    DSPI_CommonIRQHandler(SPI3, g_dspiHandle[3]);
-}
-#endif
-
-#if defined(SPI4)
-void SPI4_DriverIRQHandler(void)
-{
-    assert(g_dspiHandle[4]);
-    DSPI_CommonIRQHandler(SPI4, g_dspiHandle[4]);
-}
-#endif
-
-#if defined(SPI5)
-void SPI5_DriverIRQHandler(void)
-{
-    assert(g_dspiHandle[5]);
-    DSPI_CommonIRQHandler(SPI5, g_dspiHandle[5]);
-}
-#endif
-
-#if (FSL_FEATURE_SOC_DSPI_COUNT > 6)
-#error "Should write the SPIx_DriverIRQHandler function that instance greater than 5 !"
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_dspi.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1185 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_DSPI_H_
-#define _FSL_DSPI_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup dspi
- * @{
- */
-
-/*! @file */
-
-/**********************************************************************************************************************
- * Definitions
- *********************************************************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief DSPI driver version 2.1.0. */
-#define FSL_DSPI_DRIVER_VERSION (MAKE_VERSION(2, 1, 0))
-/*@}*/
-
-/*! @name Dummy data */
-/*@{*/
-#define DSPI_MASTER_DUMMY_DATA (0x00U) /*!< Master dummy data used for tx if there is not txData. */
-#define DSPI_SLAVE_DUMMY_DATA (0x00U)  /*!< Slave dummy data used for tx if there is not txData. */
-/*@}*/
-
-/*! @brief Status for the DSPI driver.*/
-enum _dspi_status
-{
-    kStatus_DSPI_Busy = MAKE_STATUS(kStatusGroup_DSPI, 0),      /*!< DSPI transfer is busy.*/
-    kStatus_DSPI_Error = MAKE_STATUS(kStatusGroup_DSPI, 1),     /*!< DSPI driver error. */
-    kStatus_DSPI_Idle = MAKE_STATUS(kStatusGroup_DSPI, 2),      /*!< DSPI is idle.*/
-    kStatus_DSPI_OutOfRange = MAKE_STATUS(kStatusGroup_DSPI, 3) /*!< DSPI transfer out Of range. */
-};
-
-/*! @brief DSPI status flags in SPIx_SR register.*/
-enum _dspi_flags
-{
-    kDSPI_TxCompleteFlag = SPI_SR_TCF_MASK,          /*!< Transfer Complete Flag. */
-    kDSPI_EndOfQueueFlag = SPI_SR_EOQF_MASK,         /*!< End of Queue Flag.*/
-    kDSPI_TxFifoUnderflowFlag = SPI_SR_TFUF_MASK,    /*!< Transmit FIFO Underflow Flag.*/
-    kDSPI_TxFifoFillRequestFlag = SPI_SR_TFFF_MASK,  /*!< Transmit FIFO Fill Flag.*/
-    kDSPI_RxFifoOverflowFlag = SPI_SR_RFOF_MASK,     /*!< Receive FIFO Overflow Flag.*/
-    kDSPI_RxFifoDrainRequestFlag = SPI_SR_RFDF_MASK, /*!< Receive FIFO Drain Flag.*/
-    kDSPI_TxAndRxStatusFlag = SPI_SR_TXRXS_MASK,     /*!< The module is in Stopped/Running state.*/
-    kDSPI_AllStatusFlag = SPI_SR_TCF_MASK | SPI_SR_EOQF_MASK | SPI_SR_TFUF_MASK | SPI_SR_TFFF_MASK | SPI_SR_RFOF_MASK |
-                          SPI_SR_RFDF_MASK | SPI_SR_TXRXS_MASK /*!< All status above.*/
-};
-
-/*! @brief DSPI interrupt source.*/
-enum _dspi_interrupt_enable
-{
-    kDSPI_TxCompleteInterruptEnable = SPI_RSER_TCF_RE_MASK,          /*!< TCF  interrupt enable.*/
-    kDSPI_EndOfQueueInterruptEnable = SPI_RSER_EOQF_RE_MASK,         /*!< EOQF interrupt enable.*/
-    kDSPI_TxFifoUnderflowInterruptEnable = SPI_RSER_TFUF_RE_MASK,    /*!< TFUF interrupt enable.*/
-    kDSPI_TxFifoFillRequestInterruptEnable = SPI_RSER_TFFF_RE_MASK,  /*!< TFFF interrupt enable, DMA disable.*/
-    kDSPI_RxFifoOverflowInterruptEnable = SPI_RSER_RFOF_RE_MASK,     /*!< RFOF interrupt enable.*/
-    kDSPI_RxFifoDrainRequestInterruptEnable = SPI_RSER_RFDF_RE_MASK, /*!< RFDF interrupt enable, DMA disable.*/
-    kDSPI_AllInterruptEnable = SPI_RSER_TCF_RE_MASK | SPI_RSER_EOQF_RE_MASK | SPI_RSER_TFUF_RE_MASK |
-                               SPI_RSER_TFFF_RE_MASK | SPI_RSER_RFOF_RE_MASK | SPI_RSER_RFDF_RE_MASK
-    /*!< All above interrupts enable.*/
-};
-
-/*! @brief DSPI DMA source.*/
-enum _dspi_dma_enable
-{
-    kDSPI_TxDmaEnable = (SPI_RSER_TFFF_RE_MASK | SPI_RSER_TFFF_DIRS_MASK), /*!< TFFF flag generates DMA requests.
-                                                                                No Tx interrupt request. */
-    kDSPI_RxDmaEnable = (SPI_RSER_RFDF_RE_MASK | SPI_RSER_RFDF_DIRS_MASK)  /*!< RFDF flag generates DMA requests.
-                                                                                No Rx interrupt request. */
-};
-
-/*! @brief DSPI master or slave mode configuration.*/
-typedef enum _dspi_master_slave_mode
-{
-    kDSPI_Master = 1U, /*!< DSPI peripheral operates in master mode.*/
-    kDSPI_Slave = 0U   /*!< DSPI peripheral operates in slave mode.*/
-} dspi_master_slave_mode_t;
-
-/*!
- * @brief DSPI Sample Point: Controls when the DSPI master samples SIN in Modified Transfer Format. This field is valid
- * only when CPHA bit in CTAR register is 0.
- */
-typedef enum _dspi_master_sample_point
-{
-    kDSPI_SckToSin0Clock = 0U, /*!< 0 system clocks between SCK edge and SIN sample.*/
-    kDSPI_SckToSin1Clock = 1U, /*!< 1 system clock  between SCK edge and SIN sample.*/
-    kDSPI_SckToSin2Clock = 2U  /*!< 2 system clocks between SCK edge and SIN sample.*/
-} dspi_master_sample_point_t;
-
-/*! @brief DSPI Peripheral Chip Select (Pcs) configuration (which Pcs to configure).*/
-typedef enum _dspi_which_pcs_config
-{
-    kDSPI_Pcs0 = 1U << 0, /*!< Pcs[0] */
-    kDSPI_Pcs1 = 1U << 1, /*!< Pcs[1] */
-    kDSPI_Pcs2 = 1U << 2, /*!< Pcs[2] */
-    kDSPI_Pcs3 = 1U << 3, /*!< Pcs[3] */
-    kDSPI_Pcs4 = 1U << 4, /*!< Pcs[4] */
-    kDSPI_Pcs5 = 1U << 5  /*!< Pcs[5] */
-} dspi_which_pcs_t;
-
-/*! @brief DSPI Peripheral Chip Select (Pcs) Polarity configuration.*/
-typedef enum _dspi_pcs_polarity_config
-{
-    kDSPI_PcsActiveHigh = 0U, /*!< Pcs Active High (idles low). */
-    kDSPI_PcsActiveLow = 1U   /*!< Pcs Active Low (idles high). */
-} dspi_pcs_polarity_config_t;
-
-/*! @brief DSPI Peripheral Chip Select (Pcs) Polarity.*/
-enum _dspi_pcs_polarity
-{
-    kDSPI_Pcs0ActiveLow = 1U << 0, /*!< Pcs0 Active Low (idles high). */
-    kDSPI_Pcs1ActiveLow = 1U << 1, /*!< Pcs1 Active Low (idles high). */
-    kDSPI_Pcs2ActiveLow = 1U << 2, /*!< Pcs2 Active Low (idles high). */
-    kDSPI_Pcs3ActiveLow = 1U << 3, /*!< Pcs3 Active Low (idles high). */
-    kDSPI_Pcs4ActiveLow = 1U << 4, /*!< Pcs4 Active Low (idles high). */
-    kDSPI_Pcs5ActiveLow = 1U << 5, /*!< Pcs5 Active Low (idles high). */
-    kDSPI_PcsAllActiveLow = 0xFFU  /*!< Pcs0 to Pcs5 Active Low (idles high). */
-};
-
-/*! @brief DSPI clock polarity configuration for a given CTAR.*/
-typedef enum _dspi_clock_polarity
-{
-    kDSPI_ClockPolarityActiveHigh = 0U, /*!< CPOL=0. Active-high DSPI clock (idles low).*/
-    kDSPI_ClockPolarityActiveLow = 1U   /*!< CPOL=1. Active-low DSPI clock (idles high).*/
-} dspi_clock_polarity_t;
-
-/*! @brief DSPI clock phase configuration for a given CTAR.*/
-typedef enum _dspi_clock_phase
-{
-    kDSPI_ClockPhaseFirstEdge = 0U, /*!< CPHA=0. Data is captured on the leading edge of the SCK and changed on the
-                                         following edge.*/
-    kDSPI_ClockPhaseSecondEdge = 1U /*!< CPHA=1. Data is changed on the leading edge of the SCK and captured on the
-                                        following edge.*/
-} dspi_clock_phase_t;
-
-/*! @brief DSPI data shifter direction options for a given CTAR.*/
-typedef enum _dspi_shift_direction
-{
-    kDSPI_MsbFirst = 0U, /*!< Data transfers start with most significant bit.*/
-    kDSPI_LsbFirst = 1U  /*!< Data transfers start with least significant bit.*/
-} dspi_shift_direction_t;
-
-/*! @brief DSPI delay type selection.*/
-typedef enum _dspi_delay_type
-{
-    kDSPI_PcsToSck = 1U,  /*!< Pcs-to-SCK delay. */
-    kDSPI_LastSckToPcs,   /*!< Last SCK edge to Pcs delay. */
-    kDSPI_BetweenTransfer /*!< Delay between transfers. */
-} dspi_delay_type_t;
-
-/*! @brief DSPI Clock and Transfer Attributes Register (CTAR) selection.*/
-typedef enum _dspi_ctar_selection
-{
-    kDSPI_Ctar0 = 0U, /*!< CTAR0 selection option for master or slave mode, note that CTAR0 and CTAR0_SLAVE are the
-                         same register address. */
-    kDSPI_Ctar1 = 1U, /*!< CTAR1 selection option for master mode only. */
-    kDSPI_Ctar2 = 2U, /*!< CTAR2 selection option for master mode only , note that some device do not support CTAR2. */
-    kDSPI_Ctar3 = 3U, /*!< CTAR3 selection option for master mode only , note that some device do not support CTAR3. */
-    kDSPI_Ctar4 = 4U, /*!< CTAR4 selection option for master mode only , note that some device do not support CTAR4. */
-    kDSPI_Ctar5 = 5U, /*!< CTAR5 selection option for master mode only , note that some device do not support CTAR5. */
-    kDSPI_Ctar6 = 6U, /*!< CTAR6 selection option for master mode only , note that some device do not support CTAR6. */
-    kDSPI_Ctar7 = 7U  /*!< CTAR7 selection option for master mode only , note that some device do not support CTAR7. */
-} dspi_ctar_selection_t;
-
-#define DSPI_MASTER_CTAR_SHIFT (0U)   /*!< DSPI master CTAR shift macro , internal used. */
-#define DSPI_MASTER_CTAR_MASK (0x0FU) /*!< DSPI master CTAR mask macro , internal used. */
-#define DSPI_MASTER_PCS_SHIFT (4U)    /*!< DSPI master PCS shift macro , internal used. */
-#define DSPI_MASTER_PCS_MASK (0xF0U)  /*!< DSPI master PCS mask macro , internal used. */
-/*! @brief Can use this enumeration for DSPI master transfer configFlags. */
-enum _dspi_transfer_config_flag_for_master
-{
-    kDSPI_MasterCtar0 = 0U << DSPI_MASTER_CTAR_SHIFT, /*!< DSPI master transfer use CTAR0 setting. */
-    kDSPI_MasterCtar1 = 1U << DSPI_MASTER_CTAR_SHIFT, /*!< DSPI master transfer use CTAR1 setting. */
-    kDSPI_MasterCtar2 = 2U << DSPI_MASTER_CTAR_SHIFT, /*!< DSPI master transfer use CTAR2 setting. */
-    kDSPI_MasterCtar3 = 3U << DSPI_MASTER_CTAR_SHIFT, /*!< DSPI master transfer use CTAR3 setting. */
-    kDSPI_MasterCtar4 = 4U << DSPI_MASTER_CTAR_SHIFT, /*!< DSPI master transfer use CTAR4 setting. */
-    kDSPI_MasterCtar5 = 5U << DSPI_MASTER_CTAR_SHIFT, /*!< DSPI master transfer use CTAR5 setting. */
-    kDSPI_MasterCtar6 = 6U << DSPI_MASTER_CTAR_SHIFT, /*!< DSPI master transfer use CTAR6 setting. */
-    kDSPI_MasterCtar7 = 7U << DSPI_MASTER_CTAR_SHIFT, /*!< DSPI master transfer use CTAR7 setting. */
-
-    kDSPI_MasterPcs0 = 0U << DSPI_MASTER_PCS_SHIFT, /*!< DSPI master transfer use PCS0 signal. */
-    kDSPI_MasterPcs1 = 1U << DSPI_MASTER_PCS_SHIFT, /*!< DSPI master transfer use PCS1 signal. */
-    kDSPI_MasterPcs2 = 2U << DSPI_MASTER_PCS_SHIFT, /*!< DSPI master transfer use PCS2 signal.*/
-    kDSPI_MasterPcs3 = 3U << DSPI_MASTER_PCS_SHIFT, /*!< DSPI master transfer use PCS3 signal. */
-    kDSPI_MasterPcs4 = 4U << DSPI_MASTER_PCS_SHIFT, /*!< DSPI master transfer use PCS4 signal. */
-    kDSPI_MasterPcs5 = 5U << DSPI_MASTER_PCS_SHIFT, /*!< DSPI master transfer use PCS5 signal. */
-
-    kDSPI_MasterPcsContinuous = 1U << 20,       /*!< Is PCS signal continuous. */
-    kDSPI_MasterActiveAfterTransfer = 1U << 21, /*!< Is PCS signal active after last frame transfer.*/
-};
-
-#define DSPI_SLAVE_CTAR_SHIFT (0U)   /*!< DSPI slave CTAR shift macro , internal used. */
-#define DSPI_SLAVE_CTAR_MASK (0x07U) /*!< DSPI slave CTAR mask macro , internal used. */
-/*! @brief Can use this enum for DSPI slave transfer configFlags. */
-enum _dspi_transfer_config_flag_for_slave
-{
-    kDSPI_SlaveCtar0 = 0U << DSPI_SLAVE_CTAR_SHIFT, /*!< DSPI slave transfer use CTAR0 setting. */
-                                                    /*!< DSPI slave can only use PCS0. */
-};
-
-/*! @brief DSPI transfer state, which is used for DSPI transactional APIs' state machine. */
-enum _dspi_transfer_state
-{
-    kDSPI_Idle = 0x0U, /*!< Nothing in the transmitter/receiver. */
-    kDSPI_Busy,        /*!< Transfer queue is not finished. */
-    kDSPI_Error        /*!< Transfer error. */
-};
-
-/*! @brief DSPI master command date configuration used for SPIx_PUSHR.*/
-typedef struct _dspi_command_data_config
-{
-    bool isPcsContinuous;            /*!< Option to enable the continuous assertion of chip select between transfers.*/
-    dspi_ctar_selection_t whichCtar; /*!< The desired Clock and Transfer Attributes
-                                          Register (CTAR) to use for CTAS.*/
-    dspi_which_pcs_t whichPcs;       /*!< The desired PCS signal to use for the data transfer.*/
-    bool isEndOfQueue;               /*!< Signals that the current transfer is the last in the queue.*/
-    bool clearTransferCount;         /*!< Clears SPI Transfer Counter (SPI_TCNT) before transmission starts.*/
-} dspi_command_data_config_t;
-
-/*! @brief DSPI master ctar configuration structure.*/
-typedef struct _dspi_master_ctar_config
-{
-    uint32_t baudRate;                /*!< Baud Rate for DSPI. */
-    uint32_t bitsPerFrame;            /*!< Bits per frame, minimum 4, maximum 16.*/
-    dspi_clock_polarity_t cpol;       /*!< Clock polarity. */
-    dspi_clock_phase_t cpha;          /*!< Clock phase. */
-    dspi_shift_direction_t direction; /*!< MSB or LSB data shift direction. */
-
-    uint32_t pcsToSckDelayInNanoSec;        /*!< PCS to SCK delay time with nanosecond , set to 0 sets the minimum
-                                               delay. It sets the boundary value if out of range that can be set.*/
-    uint32_t lastSckToPcsDelayInNanoSec;    /*!< Last SCK to PCS delay time with nanosecond , set to 0 sets the
-                                               minimum delay.It sets the boundary value if out of range that can be
-                                               set.*/
-    uint32_t betweenTransferDelayInNanoSec; /*!< After SCK delay time with nanosecond , set to 0 sets the minimum
-                                             delay.It sets the boundary value if out of range that can be set.*/
-} dspi_master_ctar_config_t;
-
-/*! @brief DSPI master configuration structure.*/
-typedef struct _dspi_master_config
-{
-    dspi_ctar_selection_t whichCtar;      /*!< Desired CTAR to use. */
-    dspi_master_ctar_config_t ctarConfig; /*!< Set the ctarConfig to the desired CTAR. */
-
-    dspi_which_pcs_t whichPcs;                     /*!< Desired Peripheral Chip Select (pcs). */
-    dspi_pcs_polarity_config_t pcsActiveHighOrLow; /*!< Desired PCS active high or low. */
-
-    bool enableContinuousSCK;   /*!< CONT_SCKE, continuous SCK enable . Note that continuous SCK is only
-                                     supported for CPHA = 1.*/
-    bool enableRxFifoOverWrite; /*!< ROOE, Receive FIFO overflow overwrite enable. ROOE = 0, the incoming
-                                     data is ignored, the data from the transfer that generated the overflow
-                                     is either ignored. ROOE = 1, the incoming data is shifted in to the
-                                     shift to the shift register. */
-
-    bool enableModifiedTimingFormat;        /*!< Enables a modified transfer format to be used if it's true.*/
-    dspi_master_sample_point_t samplePoint; /*!< Controls when the module master samples SIN in Modified Transfer
-                                                 Format. It's valid only when CPHA=0. */
-} dspi_master_config_t;
-
-/*! @brief DSPI slave ctar configuration structure.*/
-typedef struct _dspi_slave_ctar_config
-{
-    uint32_t bitsPerFrame;      /*!< Bits per frame, minimum 4, maximum 16.*/
-    dspi_clock_polarity_t cpol; /*!< Clock polarity. */
-    dspi_clock_phase_t cpha;    /*!< Clock phase. */
-                                /*!< Slave only supports MSB , does not support LSB.*/
-} dspi_slave_ctar_config_t;
-
-/*! @brief DSPI slave configuration structure.*/
-typedef struct _dspi_slave_config
-{
-    dspi_ctar_selection_t whichCtar;     /*!< Desired CTAR to use. */
-    dspi_slave_ctar_config_t ctarConfig; /*!< Set the ctarConfig to the desired CTAR. */
-
-    bool enableContinuousSCK;               /*!< CONT_SCKE, continuous SCK enable. Note that continuous SCK is only
-                                                 supported for CPHA = 1.*/
-    bool enableRxFifoOverWrite;             /*!< ROOE, Receive FIFO overflow overwrite enable. ROOE = 0, the incoming
-                                                 data is ignored, the data from the transfer that generated the overflow
-                                                 is either ignored. ROOE = 1, the incoming data is shifted in to the
-                                                 shift to the shift register. */
-    bool enableModifiedTimingFormat;        /*!< Enables a modified transfer format to be used if it's true.*/
-    dspi_master_sample_point_t samplePoint; /*!< Controls when the module master samples SIN in Modified Transfer
-                                               Format. It's valid only when CPHA=0. */
-} dspi_slave_config_t;
-
-/*!
-* @brief Forward declaration of the _dspi_master_handle typedefs.
-*/
-typedef struct _dspi_master_handle dspi_master_handle_t;
-
-/*!
-* @brief Forward declaration of the _dspi_slave_handle typedefs.
-*/
-typedef struct _dspi_slave_handle dspi_slave_handle_t;
-
-/*!
- * @brief Completion callback function pointer type.
- *
- * @param base DSPI peripheral address.
- * @param handle Pointer to the handle for the DSPI master.
- * @param status Success or error code describing whether the transfer completed.
- * @param userData Arbitrary pointer-dataSized value passed from the application.
- */
-typedef void (*dspi_master_transfer_callback_t)(SPI_Type *base,
-                                                dspi_master_handle_t *handle,
-                                                status_t status,
-                                                void *userData);
-/*!
- * @brief Completion callback function pointer type.
- *
- * @param base DSPI peripheral address.
- * @param handle Pointer to the handle for the DSPI slave.
- * @param status Success or error code describing whether the transfer completed.
- * @param userData Arbitrary pointer-dataSized value passed from the application.
- */
-typedef void (*dspi_slave_transfer_callback_t)(SPI_Type *base,
-                                               dspi_slave_handle_t *handle,
-                                               status_t status,
-                                               void *userData);
-
-/*! @brief DSPI master/slave transfer structure.*/
-typedef struct _dspi_transfer
-{
-    uint8_t *txData;          /*!< Send buffer. */
-    uint8_t *rxData;          /*!< Receive buffer. */
-    volatile size_t dataSize; /*!< Transfer bytes. */
-
-    uint32_t
-        configFlags; /*!< Transfer transfer configuration flags , set from _dspi_transfer_config_flag_for_master if the
-                        transfer is used for master or _dspi_transfer_config_flag_for_slave enumeration if the transfer
-                        is used for slave.*/
-} dspi_transfer_t;
-
-/*! @brief DSPI master transfer handle structure used for transactional API. */
-struct _dspi_master_handle
-{
-    uint32_t bitsPerFrame;         /*!< Desired number of bits per frame. */
-    volatile uint32_t command;     /*!< Desired data command. */
-    volatile uint32_t lastCommand; /*!< Desired last data command. */
-
-    uint8_t fifoSize; /*!< FIFO dataSize. */
-
-    volatile bool isPcsActiveAfterTransfer; /*!< Is PCS signal keep active after the last frame transfer.*/
-    volatile bool isThereExtraByte;         /*!< Is there extra byte.*/
-
-    uint8_t *volatile txData;                  /*!< Send buffer. */
-    uint8_t *volatile rxData;                  /*!< Receive buffer. */
-    volatile size_t remainingSendByteCount;    /*!< Number of bytes remaining to send.*/
-    volatile size_t remainingReceiveByteCount; /*!< Number of bytes remaining to receive.*/
-    size_t totalByteCount;                     /*!< Number of transfer bytes*/
-
-    volatile uint8_t state; /*!< DSPI transfer state , _dspi_transfer_state.*/
-
-    dspi_master_transfer_callback_t callback; /*!< Completion callback. */
-    void *userData;                           /*!< Callback user data. */
-};
-
-/*! @brief DSPI slave transfer handle structure used for transactional API. */
-struct _dspi_slave_handle
-{
-    uint32_t bitsPerFrame;          /*!< Desired number of bits per frame. */
-    volatile bool isThereExtraByte; /*!< Is there extra byte.*/
-
-    uint8_t *volatile txData;                  /*!< Send buffer. */
-    uint8_t *volatile rxData;                  /*!< Receive buffer. */
-    volatile size_t remainingSendByteCount;    /*!< Number of bytes remaining to send.*/
-    volatile size_t remainingReceiveByteCount; /*!< Number of bytes remaining to receive.*/
-    size_t totalByteCount;                     /*!< Number of transfer bytes*/
-
-    volatile uint8_t state; /*!< DSPI transfer state.*/
-
-    volatile uint32_t errorCount; /*!< Error count for slave transfer.*/
-
-    dspi_slave_transfer_callback_t callback; /*!< Completion callback. */
-    void *userData;                          /*!< Callback user data. */
-};
-
-/**********************************************************************************************************************
- * API
- *********************************************************************************************************************/
-#if defined(__cplusplus)
-extern "C" {
-#endif /*_cplusplus*/
-
-/*!
- * @name Initialization and deinitialization
- * @{
- */
-
-/*!
- * @brief Initializes the DSPI master.
- *
- * This function initializes the DSPI master configuration. An example use case is as follows:
- *  @code
- *   dspi_master_config_t  masterConfig;
- *   masterConfig.whichCtar                                = kDSPI_Ctar0;
- *   masterConfig.ctarConfig.baudRate                      = 500000000;
- *   masterConfig.ctarConfig.bitsPerFrame                  = 8;
- *   masterConfig.ctarConfig.cpol                          = kDSPI_ClockPolarityActiveHigh;
- *   masterConfig.ctarConfig.cpha                          = kDSPI_ClockPhaseFirstEdge;
- *   masterConfig.ctarConfig.direction                     = kDSPI_MsbFirst;
- *   masterConfig.ctarConfig.pcsToSckDelayInNanoSec        = 1000000000 / masterConfig.ctarConfig.baudRate ;
- *   masterConfig.ctarConfig.lastSckToPcsDelayInNanoSec    = 1000000000 / masterConfig.ctarConfig.baudRate ;
- *   masterConfig.ctarConfig.betweenTransferDelayInNanoSec = 1000000000 / masterConfig.ctarConfig.baudRate ;
- *   masterConfig.whichPcs                                 = kDSPI_Pcs0;
- *   masterConfig.pcsActiveHighOrLow                       = kDSPI_PcsActiveLow;
- *   masterConfig.enableContinuousSCK                      = false;
- *   masterConfig.enableRxFifoOverWrite                    = false;
- *   masterConfig.enableModifiedTimingFormat               = false;
- *   masterConfig.samplePoint                              = kDSPI_SckToSin0Clock;
- *   DSPI_MasterInit(base, &masterConfig, srcClock_Hz);
- *  @endcode
- *
- * @param base DSPI peripheral address.
- * @param masterConfig Pointer to structure dspi_master_config_t.
- * @param srcClock_Hz Module source input clock in Hertz
- */
-void DSPI_MasterInit(SPI_Type *base, const dspi_master_config_t *masterConfig, uint32_t srcClock_Hz);
-
-/*!
- * @brief Sets the dspi_master_config_t structure to default values.
- *
- * The purpose of this API is to get the configuration structure initialized for the DSPI_MasterInit().
- * User may use the initialized structure unchanged in DSPI_MasterInit() or modify the structure
- * before calling DSPI_MasterInit().
- * Example:
- * @code
- *  dspi_master_config_t  masterConfig;
- *  DSPI_MasterGetDefaultConfig(&masterConfig);
- * @endcode
- * @param masterConfig pointer to dspi_master_config_t structure
- */
-void DSPI_MasterGetDefaultConfig(dspi_master_config_t *masterConfig);
-
-/*!
- * @brief DSPI slave configuration.
- *
- * This function initializes the DSPI slave configuration. An example use case is as follows:
- *  @code
- *   dspi_slave_config_t  slaveConfig;
- *  slaveConfig->whichCtar                  = kDSPI_Ctar0;
- *  slaveConfig->ctarConfig.bitsPerFrame    = 8;
- *  slaveConfig->ctarConfig.cpol            = kDSPI_ClockPolarityActiveHigh;
- *  slaveConfig->ctarConfig.cpha            = kDSPI_ClockPhaseFirstEdge;
- *  slaveConfig->enableContinuousSCK        = false;
- *  slaveConfig->enableRxFifoOverWrite      = false;
- *  slaveConfig->enableModifiedTimingFormat = false;
- *  slaveConfig->samplePoint                = kDSPI_SckToSin0Clock;
- *   DSPI_SlaveInit(base, &slaveConfig);
- *  @endcode
- *
- * @param base DSPI peripheral address.
- * @param slaveConfig Pointer to structure dspi_master_config_t.
- */
-void DSPI_SlaveInit(SPI_Type *base, const dspi_slave_config_t *slaveConfig);
-
-/*!
- * @brief Sets the dspi_slave_config_t structure to default values.
- *
- * The purpose of this API is to get the configuration structure initialized for the DSPI_SlaveInit().
- * User may use the initialized structure unchanged in DSPI_SlaveInit(), or modify the structure
- * before calling DSPI_SlaveInit().
- * Example:
- * @code
- *  dspi_slave_config_t  slaveConfig;
- *  DSPI_SlaveGetDefaultConfig(&slaveConfig);
- * @endcode
- * @param slaveConfig pointer to dspi_slave_config_t structure.
- */
-void DSPI_SlaveGetDefaultConfig(dspi_slave_config_t *slaveConfig);
-
-/*!
- * @brief De-initializes the DSPI peripheral. Call this API to disable the DSPI clock.
- * @param base DSPI peripheral address.
- */
-void DSPI_Deinit(SPI_Type *base);
-
-/*!
- * @brief Enables the DSPI peripheral and sets the MCR MDIS to 0.
- *
- * @param base DSPI peripheral address.
- * @param enable pass true to enable module, false to disable module.
- */
-static inline void DSPI_Enable(SPI_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->MCR &= ~SPI_MCR_MDIS_MASK;
-    }
-    else
-    {
-        base->MCR |= SPI_MCR_MDIS_MASK;
-    }
-}
-
-/*!
- *@}
-*/
-
-/*!
- * @name Status
- * @{
- */
-
-/*!
- * @brief Gets the DSPI status flag state.
- * @param base DSPI peripheral address.
- * @return The DSPI status(in SR register).
- */
-static inline uint32_t DSPI_GetStatusFlags(SPI_Type *base)
-{
-    return (base->SR);
-}
-
-/*!
- * @brief Clears the DSPI status flag.
- *
- * This function  clears the desired status bit by using a write-1-to-clear. The user passes in the base and the
- * desired status bit to clear.  The list of status bits is defined in the dspi_status_and_interrupt_request_t. The
- * function uses these bit positions in its algorithm to clear the desired flag state.
- * Example usage:
- * @code
- *  DSPI_ClearStatusFlags(base, kDSPI_TxCompleteFlag|kDSPI_EndOfQueueFlag);
- * @endcode
- *
- * @param base DSPI peripheral address.
- * @param statusFlags The status flag , used from type dspi_flags.
- */
-static inline void DSPI_ClearStatusFlags(SPI_Type *base, uint32_t statusFlags)
-{
-    base->SR = statusFlags; /*!< The status flags are cleared by writing 1 (w1c).*/
-}
-
-/*!
- *@}
-*/
-
-/*!
- * @name Interrupts
- * @{
- */
-
-/*!
- * @brief Enables the DSPI interrupts.
- *
- * This function configures the various interrupt masks of the DSPI.  The parameters are base and an interrupt mask.
- * Note, for Tx Fill and Rx FIFO drain requests, enable the interrupt request and disable the DMA request.
- *
- * @code
- *  DSPI_EnableInterrupts(base, kDSPI_TxCompleteInterruptEnable | kDSPI_EndOfQueueInterruptEnable );
- * @endcode
- *
- * @param base DSPI peripheral address.
- * @param mask The interrupt mask, can use the enum _dspi_interrupt_enable.
- */
-void DSPI_EnableInterrupts(SPI_Type *base, uint32_t mask);
-
-/*!
- * @brief Disables the DSPI interrupts.
- *
- * @code
- *  DSPI_DisableInterrupts(base, kDSPI_TxCompleteInterruptEnable | kDSPI_EndOfQueueInterruptEnable );
- * @endcode
- *
- * @param base DSPI peripheral address.
- * @param mask The interrupt mask, can use the enum _dspi_interrupt_enable.
- */
-static inline void DSPI_DisableInterrupts(SPI_Type *base, uint32_t mask)
-{
-    base->RSER &= ~mask;
-}
-
-/*!
- *@}
-*/
-
-/*!
- * @name DMA Control
- * @{
- */
-
-/*!
- * @brief Enables the DSPI DMA request.
- *
- * This function configures the Rx and Tx DMA mask of the DSPI.  The parameters are base and a DMA mask.
- * @code
- *  DSPI_EnableDMA(base, kDSPI_TxDmaEnable | kDSPI_RxDmaEnable);
- * @endcode
- *
- * @param base DSPI peripheral address.
- * @param mask The interrupt mask can use the enum dspi_dma_enable.
- */
-static inline void DSPI_EnableDMA(SPI_Type *base, uint32_t mask)
-{
-    base->RSER |= mask;
-}
-
-/*!
- * @brief Disables the DSPI DMA request.
- *
- * This function configures the Rx and Tx DMA mask of the DSPI.  The parameters are base and a DMA mask.
- * @code
- *  SPI_DisableDMA(base, kDSPI_TxDmaEnable | kDSPI_RxDmaEnable);
- * @endcode
- *
- * @param base DSPI peripheral address.
- * @param mask The interrupt mask can use the enum dspi_dma_enable.
- */
-static inline void DSPI_DisableDMA(SPI_Type *base, uint32_t mask)
-{
-    base->RSER &= ~mask;
-}
-
-/*!
- * @brief Gets the DSPI master PUSHR data register address for the DMA operation.
- *
- * This function gets the DSPI master PUSHR data register address because this value is needed for the DMA operation.
- *
- * @param base DSPI peripheral address.
- * @return The DSPI master PUSHR data register address.
- */
-static inline uint32_t DSPI_MasterGetTxRegisterAddress(SPI_Type *base)
-{
-    return (uint32_t) & (base->PUSHR);
-}
-
-/*!
- * @brief Gets the DSPI slave PUSHR data register address for the DMA operation.
- *
- * This function gets the DSPI slave PUSHR data register address as this value is needed for the DMA operation.
- *
- * @param base DSPI peripheral address.
- * @return The DSPI slave PUSHR data register address.
- */
-static inline uint32_t DSPI_SlaveGetTxRegisterAddress(SPI_Type *base)
-{
-    return (uint32_t) & (base->PUSHR_SLAVE);
-}
-
-/*!
- * @brief Gets the DSPI POPR data register address for the DMA operation.
- *
- * This function gets the DSPI POPR data register address as this value is needed for the DMA operation.
- *
- * @param base DSPI peripheral address.
- * @return The DSPI POPR data register address.
- */
-static inline uint32_t DSPI_GetRxRegisterAddress(SPI_Type *base)
-{
-    return (uint32_t) & (base->POPR);
-}
-
-/*!
- *@}
-*/
-
-/*!
- * @name Bus Operations
- * @{
- */
-
-/*!
- * @brief Configures the DSPI for master or slave.
- *
- * @param base DSPI peripheral address.
- * @param mode Mode setting (master or slave) of type dspi_master_slave_mode_t.
- */
-static inline void DSPI_SetMasterSlaveMode(SPI_Type *base, dspi_master_slave_mode_t mode)
-{
-    base->MCR = (base->MCR & (~SPI_MCR_MSTR_MASK)) | SPI_MCR_MSTR(mode);
-}
-
-/*!
- * @brief Returns whether the DSPI module is in master mode.
- *
- * @param base DSPI peripheral address.
- * @return Returns true if the module is in master mode or false if the module is in slave mode.
- */
-static inline bool DSPI_IsMaster(SPI_Type *base)
-{
-    return (bool)((base->MCR) & SPI_MCR_MSTR_MASK);
-}
-/*!
- * @brief Starts the DSPI transfers and clears HALT bit in MCR.
- *
- * This function sets the module to begin data transfer in either master or slave mode.
- *
- * @param base DSPI peripheral address.
- */
-static inline void DSPI_StartTransfer(SPI_Type *base)
-{
-    base->MCR &= ~SPI_MCR_HALT_MASK;
-}
-/*!
- * @brief Stops (halts) DSPI transfers and sets HALT bit in MCR.
- *
- * This function stops data transfers in either master or slave mode.
- *
- * @param base DSPI peripheral address.
- */
-static inline void DSPI_StopTransfer(SPI_Type *base)
-{
-    base->MCR |= SPI_MCR_HALT_MASK;
-}
-
-/*!
- * @brief Enables (or disables) the DSPI FIFOs.
- *
- * This function  allows the caller to disable/enable the Tx and Rx FIFOs (independently).
- * Note that to disable, the caller must pass in a logic 0 (false) for the particular FIFO configuration.  To enable,
- * the caller must pass in a logic 1 (true).
- *
- * @param base DSPI peripheral address.
- * @param enableTxFifo Disables (false) the TX FIFO, else enables (true) the TX FIFO
- * @param enableRxFifo Disables (false) the RX FIFO, else enables (true) the RX FIFO
- */
-static inline void DSPI_SetFifoEnable(SPI_Type *base, bool enableTxFifo, bool enableRxFifo)
-{
-    base->MCR = (base->MCR & (~(SPI_MCR_DIS_RXF_MASK | SPI_MCR_DIS_TXF_MASK))) | SPI_MCR_DIS_TXF(!enableTxFifo) |
-                SPI_MCR_DIS_RXF(!enableRxFifo);
-}
-
-/*!
- * @brief Flushes the DSPI FIFOs.
- *
- * @param base DSPI peripheral address.
- * @param flushTxFifo Flushes (true) the Tx FIFO, else do not flush (false) the Tx FIFO
- * @param flushRxFifo Flushes (true) the Rx FIFO, else do not flush (false) the Rx FIFO
- */
-static inline void DSPI_FlushFifo(SPI_Type *base, bool flushTxFifo, bool flushRxFifo)
-{
-    base->MCR = (base->MCR & (~(SPI_MCR_CLR_TXF_MASK | SPI_MCR_CLR_RXF_MASK))) | SPI_MCR_CLR_TXF(flushTxFifo) |
-                SPI_MCR_CLR_RXF(flushRxFifo);
-}
-
-/*!
- * @brief Configures the DSPI peripheral chip select polarity simultaneously.
- * For example, PCS0 and PCS1 set to active low and other PCS set to active high. Note that the number of
- * PCSs is specific to the device.
- * @code
- *  DSPI_SetAllPcsPolarity(base, kDSPI_Pcs0ActiveLow | kDSPI_Pcs1ActiveLow);
-   @endcode
- * @param base DSPI peripheral address.
- * @param mask The PCS polarity mask ,  can use the enum _dspi_pcs_polarity.
- */
-static inline void DSPI_SetAllPcsPolarity(SPI_Type *base, uint32_t mask)
-{
-    base->MCR = (base->MCR & ~SPI_MCR_PCSIS_MASK) | SPI_MCR_PCSIS(mask);
-}
-
-/*!
- * @brief Sets the DSPI baud rate in bits per second.
- *
- * This function  takes in the desired baudRate_Bps (baud rate) and calculates the nearest possible baud rate without
- * exceeding the desired baud rate, and returns the calculated baud rate in bits-per-second. It requires that the
- * caller also provide the frequency of the module source clock (in Hertz).
- *
- * @param base DSPI peripheral address.
- * @param whichCtar The desired Clock and Transfer Attributes Register (CTAR) of the type dspi_ctar_selection_t
- * @param baudRate_Bps The desired baud rate in bits per second
- * @param srcClock_Hz Module source input clock in Hertz
- * @return The actual calculated baud rate
- */
-uint32_t DSPI_MasterSetBaudRate(SPI_Type *base,
-                                dspi_ctar_selection_t whichCtar,
-                                uint32_t baudRate_Bps,
-                                uint32_t srcClock_Hz);
-
-/*!
- * @brief Manually configures the delay prescaler and scaler for a particular CTAR.
- *
- * This function configures the PCS to SCK delay pre-scalar (PcsSCK) and scalar (CSSCK), after SCK delay pre-scalar
- * (PASC) and scalar (ASC), and the delay after transfer pre-scalar (PDT)and scalar (DT).
- *
- * These delay names are available in type dspi_delay_type_t.
- *
- * The user passes the delay to configure along with the prescaler and scaler value.
- * This allows the user to directly set the prescaler/scaler values if they have pre-calculated them or if they simply
- * wish to manually increment either value.
- *
- * @param base DSPI peripheral address.
- * @param whichCtar The desired Clock and Transfer Attributes Register (CTAR) of type dspi_ctar_selection_t.
- * @param prescaler The prescaler delay value (can be an integer 0, 1, 2, or 3).
- * @param scaler The scaler delay value (can be any integer between 0 to 15).
- * @param whichDelay The desired delay to configure, must be of type dspi_delay_type_t
- */
-void DSPI_MasterSetDelayScaler(
-    SPI_Type *base, dspi_ctar_selection_t whichCtar, uint32_t prescaler, uint32_t scaler, dspi_delay_type_t whichDelay);
-
-/*!
- * @brief Calculates the delay prescaler and scaler based on the desired delay input in nanoseconds.
- *
- * This function calculates the values for:
- * PCS to SCK delay pre-scalar (PCSSCK) and scalar (CSSCK), or
- * After SCK delay pre-scalar (PASC) and scalar (ASC), or
- * Delay after transfer pre-scalar (PDT)and scalar (DT).
- *
- * These delay names are available in type dspi_delay_type_t.
- *
- * The user passes which delay they want to configure along with the desired delay value in nanoseconds.  The function
- * calculates the values needed for the prescaler and scaler and returning the actual calculated delay as an exact
- * delay match may not be possible. In this case, the closest match is calculated without going below the desired
- * delay value input.
- * It is possible to input a very large delay value that exceeds the capability of the part, in which case the maximum
- * supported delay is returned. The higher level peripheral driver alerts the user of an out of range delay
- * input.
- *
- * @param base DSPI peripheral address.
- * @param whichCtar The desired Clock and Transfer Attributes Register (CTAR) of type dspi_ctar_selection_t.
- * @param whichDelay The desired delay to configure, must be of type dspi_delay_type_t
- * @param srcClock_Hz Module source input clock in Hertz
- * @param delayTimeInNanoSec The desired delay value in nanoseconds.
- * @return The actual calculated delay value.
- */
-uint32_t DSPI_MasterSetDelayTimes(SPI_Type *base,
-                                  dspi_ctar_selection_t whichCtar,
-                                  dspi_delay_type_t whichDelay,
-                                  uint32_t srcClock_Hz,
-                                  uint32_t delayTimeInNanoSec);
-
-/*!
- * @brief Writes data into the data buffer for master mode.
- *
- * In master mode, the 16-bit data is appended to the 16-bit command info. The command portion
- * provides characteristics of the data such as the optional continuous chip select
- * operation between transfers, the desired Clock and Transfer Attributes register to use for the
- * associated SPI frame, the desired PCS signal to use for the data transfer, whether the current
- * transfer is the last in the queue, and whether to clear the transfer count (normally needed when
- * sending the first frame of a data packet). This is an example:
- * @code
- *  dspi_command_data_config_t commandConfig;
- *  commandConfig.isPcsContinuous = true;
- *  commandConfig.whichCtar = kDSPICtar0;
- *  commandConfig.whichPcs = kDSPIPcs0;
- *  commandConfig.clearTransferCount = false;
- *  commandConfig.isEndOfQueue = false;
- *  DSPI_MasterWriteData(base, &commandConfig, dataWord);
-   @endcode
- *
- * @param base DSPI peripheral address.
- * @param command Pointer to command structure.
- * @param data The data word to be sent.
- */
-static inline void DSPI_MasterWriteData(SPI_Type *base, dspi_command_data_config_t *command, uint16_t data)
-{
-    base->PUSHR = SPI_PUSHR_CONT(command->isPcsContinuous) | SPI_PUSHR_CTAS(command->whichCtar) |
-                  SPI_PUSHR_PCS(command->whichPcs) | SPI_PUSHR_EOQ(command->isEndOfQueue) |
-                  SPI_PUSHR_CTCNT(command->clearTransferCount) | SPI_PUSHR_TXDATA(data);
-}
-
-/*!
- * @brief Sets the dspi_command_data_config_t structure to default values.
- *
- * The purpose of this API is to get the configuration structure initialized for use in the DSPI_MasterWrite_xx().
- * User may use the initialized structure unchanged in DSPI_MasterWrite_xx() or modify the structure
- * before calling DSPI_MasterWrite_xx().
- * Example:
- * @code
- *  dspi_command_data_config_t  command;
- *  DSPI_GetDefaultDataCommandConfig(&command);
- * @endcode
- * @param command pointer to dspi_command_data_config_t structure.
- */
-void DSPI_GetDefaultDataCommandConfig(dspi_command_data_config_t *command);
-
-/*!
- * @brief Writes data into the data buffer master mode and waits till complete to return.
- *
- * In master mode, the 16-bit data is appended to the 16-bit command info. The command portion
- * provides characteristics of the data such as the optional continuous chip select
- * operation between transfers, the desired Clock and Transfer Attributes register to use for the
- * associated SPI frame, the desired PCS signal to use for the data transfer, whether the current
- * transfer is the last in the queue, and whether to clear the transfer count (normally needed when
- * sending the first frame of a data packet). This is an example:
- * @code
- *  dspi_command_config_t commandConfig;
- *  commandConfig.isPcsContinuous = true;
- *  commandConfig.whichCtar = kDSPICtar0;
- *  commandConfig.whichPcs = kDSPIPcs1;
- *  commandConfig.clearTransferCount = false;
- *  commandConfig.isEndOfQueue = false;
- *  DSPI_MasterWriteDataBlocking(base, &commandConfig, dataWord);
- * @endcode
- *
- * Note that this function does not return until after the transmit is complete. Also note that the DSPI must be
- * enabled and running to transmit data (MCR[MDIS] & [HALT] = 0). Because the SPI is a synchronous protocol,
- * receive data is available when transmit completes.
- *
- * @param base DSPI peripheral address.
- * @param command Pointer to command structure.
- * @param data The data word to be sent.
- */
-void DSPI_MasterWriteDataBlocking(SPI_Type *base, dspi_command_data_config_t *command, uint16_t data);
-
-/*!
- * @brief Returns the DSPI command word formatted to the PUSHR data register bit field.
- *
- * This function allows the caller to pass in the data command structure and returns the command word formatted
- * according to the DSPI PUSHR register bit field placement. The user can then "OR" the returned command word with the
- * desired data to send and use the function DSPI_HAL_WriteCommandDataMastermode or
- * DSPI_HAL_WriteCommandDataMastermodeBlocking to write the entire 32-bit command data word to the PUSHR. This helps
- * improve performance in cases where the command structure is constant. For example, the user calls this function
- * before starting a transfer to generate the command word. When they are ready to transmit the data, they OR
- * this formatted command word with the desired data to transmit. This process increases transmit performance when
- * compared to calling send functions such as DSPI_HAL_WriteDataMastermode which format the command word each time a
- * data word is to be sent.
- *
- * @param command Pointer to command structure.
- * @return The command word formatted to the PUSHR data register bit field.
- */
-static inline uint32_t DSPI_MasterGetFormattedCommand(dspi_command_data_config_t *command)
-{
-    /* Format the 16-bit command word according to the PUSHR data register bit field*/
-    return (uint32_t)(SPI_PUSHR_CONT(command->isPcsContinuous) | SPI_PUSHR_CTAS(command->whichCtar) |
-                      SPI_PUSHR_PCS(command->whichPcs) | SPI_PUSHR_EOQ(command->isEndOfQueue) |
-                      SPI_PUSHR_CTCNT(command->clearTransferCount));
-}
-
-/*!
- * @brief Writes a 32-bit data word (16-bit command appended with 16-bit data) into the data
- *        buffer, master mode and waits till complete to return.
- *
- * In this function, the user must append the 16-bit data to the 16-bit command info then provide the total 32-bit word
- * as the data to send.
- * The command portion provides characteristics of the data such as the optional continuous chip select operation
-* between
- * transfers, the desired Clock and Transfer Attributes register to use for the associated SPI frame, the desired PCS
- * signal to use for the data transfer, whether the current transfer is the last in the queue, and whether to clear the
- * transfer count (normally needed when sending the first frame of a data packet). The user is responsible for
- * appending this command with the data to send. This is an example:
- * @code
- *  dataWord = <16-bit command> | <16-bit data>;
- *  DSPI_HAL_WriteCommandDataMastermodeBlocking(base, dataWord);
- * @endcode
- *
- * Note that this function does not return until after the transmit is complete. Also note that the DSPI must be
- * enabled and running to transmit data (MCR[MDIS] & [HALT] = 0).
- * Because the SPI is a synchronous protocol, the receive data is available when transmit completes.
- *
- *  For a blocking polling transfer, see methods below.
- *  Option 1:
-*   uint32_t command_to_send = DSPI_MasterGetFormattedCommand(&command);
-*   uint32_t data0 = command_to_send | data_need_to_send_0;
-*   uint32_t data1 = command_to_send | data_need_to_send_1;
-*   uint32_t data2 = command_to_send | data_need_to_send_2;
-*
-*   DSPI_MasterWriteCommandDataBlocking(base,data0);
-*   DSPI_MasterWriteCommandDataBlocking(base,data1);
-*   DSPI_MasterWriteCommandDataBlocking(base,data2);
-*
-*  Option 2:
-*   DSPI_MasterWriteDataBlocking(base,&command,data_need_to_send_0);
-*   DSPI_MasterWriteDataBlocking(base,&command,data_need_to_send_1);
-*   DSPI_MasterWriteDataBlocking(base,&command,data_need_to_send_2);
-*
- * @param base DSPI peripheral address.
- * @param data The data word (command and data combined) to be sent
- */
-void DSPI_MasterWriteCommandDataBlocking(SPI_Type *base, uint32_t data);
-
-/*!
- * @brief Writes data into the data buffer in slave mode.
- *
- * In slave mode, up to 16-bit words may be written.
- *
- * @param base DSPI peripheral address.
- * @param data The data to send.
- */
-static inline void DSPI_SlaveWriteData(SPI_Type *base, uint32_t data)
-{
-    base->PUSHR_SLAVE = data;
-}
-
-/*!
- * @brief Writes data into the data buffer in slave mode, waits till data was transmitted, and returns.
- *
- * In slave mode, up to 16-bit words may be written. The function first clears the transmit complete flag, writes data
- * into data register, and finally waits until the data is transmitted.
- *
- * @param base DSPI peripheral address.
- * @param data The data to send.
- */
-void DSPI_SlaveWriteDataBlocking(SPI_Type *base, uint32_t data);
-
-/*!
- * @brief Reads data from the data buffer.
- *
- * @param base DSPI peripheral address.
- * @return The data from the read data buffer.
- */
-static inline uint32_t DSPI_ReadData(SPI_Type *base)
-{
-    return (base->POPR);
-}
-
-/*!
- *@}
-*/
-
-/*!
- * @name Transactional
- * @{
- */
-/*Transactional APIs*/
-
-/*!
- * @brief Initializes the DSPI master handle.
- *
- * This function initializes the DSPI handle which can be used for other DSPI transactional APIs.  Usually, for a
- * specified DSPI instance,  call this API once to get the initialized handle.
- *
- * @param base DSPI peripheral base address.
- * @param handle DSPI handle pointer to dspi_master_handle_t.
- * @param callback dspi callback.
- * @param userData callback function parameter.
- */
-void DSPI_MasterTransferCreateHandle(SPI_Type *base,
-                                     dspi_master_handle_t *handle,
-                                     dspi_master_transfer_callback_t callback,
-                                     void *userData);
-
-/*!
- * @brief DSPI master transfer data using polling.
- *
- * This function transfers data with polling. This is a blocking function, which does not return until all transfers
- * have been
- * completed.
- *
- * @param base DSPI peripheral base address.
- * @param transfer pointer to dspi_transfer_t structure.
- * @return status of status_t.
- */
-status_t DSPI_MasterTransferBlocking(SPI_Type *base, dspi_transfer_t *transfer);
-
-/*!
- * @brief DSPI master transfer data using interrupts.
- *
- * This function transfers data using interrupts. This is a non-blocking function, which returns right away. When all
- data
- * have been transferred, the callback function is called.
-
- * @param base DSPI peripheral base address.
- * @param handle pointer to dspi_master_handle_t structure which stores the transfer state.
- * @param transfer pointer to dspi_transfer_t structure.
- * @return status of status_t.
- */
-status_t DSPI_MasterTransferNonBlocking(SPI_Type *base, dspi_master_handle_t *handle, dspi_transfer_t *transfer);
-
-/*!
- * @brief Gets the master transfer count.
- *
- * This function gets the master transfer count.
- *
- * @param base DSPI peripheral base address.
- * @param handle pointer to dspi_master_handle_t structure which stores the transfer state.
- * @param count Number of bytes transferred so far by the non-blocking transaction.
- * @return status of status_t.
- */
-status_t DSPI_MasterTransferGetCount(SPI_Type *base, dspi_master_handle_t *handle, size_t *count);
-
-/*!
- * @brief DSPI master aborts transfer using an interrupt.
- *
- * This function aborts a transfer using an interrupt.
- *
- * @param base DSPI peripheral base address.
- * @param handle pointer to dspi_master_handle_t structure which stores the transfer state.
- */
-void DSPI_MasterTransferAbort(SPI_Type *base, dspi_master_handle_t *handle);
-
-/*!
- * @brief DSPI Master IRQ handler function.
- *
- * This function processes the DSPI transmit and receive IRQ.
-
- * @param base DSPI peripheral base address.
- * @param handle pointer to dspi_master_handle_t structure which stores the transfer state.
- */
-void DSPI_MasterTransferHandleIRQ(SPI_Type *base, dspi_master_handle_t *handle);
-
-/*!
- * @brief Initializes the DSPI slave handle.
- *
- * This function initializes the DSPI handle, which can be used for other DSPI transactional APIs.  Usually, for a
- * specified DSPI instance, call this API once to get the initialized handle.
- *
- * @param handle DSPI handle pointer to dspi_slave_handle_t.
- * @param base DSPI peripheral base address.
- * @param callback DSPI callback.
- * @param userData callback function parameter.
- */
-void DSPI_SlaveTransferCreateHandle(SPI_Type *base,
-                                    dspi_slave_handle_t *handle,
-                                    dspi_slave_transfer_callback_t callback,
-                                    void *userData);
-
-/*!
- * @brief DSPI slave transfers data using an interrupt.
- *
- * This function transfers data using an interrupt. This is a non-blocking function, which returns right away. When all
- * data
- * have been transferred, the callback function is called.
- *
- * @param base DSPI peripheral base address.
- * @param handle pointer to dspi_slave_handle_t structure which stores the transfer state.
- * @param transfer pointer to dspi_transfer_t structure.
- * @return status of status_t.
- */
-status_t DSPI_SlaveTransferNonBlocking(SPI_Type *base, dspi_slave_handle_t *handle, dspi_transfer_t *transfer);
-
-/*!
- * @brief Gets the slave transfer count.
- *
- * This function gets the slave transfer count.
- *
- * @param base DSPI peripheral base address.
- * @param handle pointer to dspi_master_handle_t structure which stores the transfer state.
- * @param count Number of bytes transferred so far by the non-blocking transaction.
- * @return status of status_t.
- */
-status_t DSPI_SlaveTransferGetCount(SPI_Type *base, dspi_slave_handle_t *handle, size_t *count);
-
-/*!
- * @brief DSPI slave aborts a transfer using an interrupt.
- *
- * This function aborts transfer using an interrupt.
- *
- * @param base DSPI peripheral base address.
- * @param handle pointer to dspi_slave_handle_t structure which stores the transfer state.
- */
-void DSPI_SlaveTransferAbort(SPI_Type *base, dspi_slave_handle_t *handle);
-
-/*!
- * @brief DSPI Master IRQ handler function.
- *
- * This function processes the DSPI transmit and receive IRQ.
- *
- * @param base DSPI peripheral base address.
- * @param handle pointer to dspi_slave_handle_t structure which stores the transfer state.
- */
-void DSPI_SlaveTransferHandleIRQ(SPI_Type *base, dspi_slave_handle_t *handle);
-
-/*!
- *@}
-*/
-
-#if defined(__cplusplus)
-}
-#endif /*_cplusplus*/
-       /*!
-        *@}
-       */
-
-#endif /*_FSL_DSPI_H_*/
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_dspi_edma.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1262 +0,0 @@
-/*
-* Copyright (c) 2015, Freescale Semiconductor, Inc.
-* All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without modification,
-* are permitted provided that the following conditions are met:
-*
-* o Redistributions of source code must retain the above copyright notice, this list
-*   of conditions and the following disclaimer.
-*
-* o Redistributions in binary form must reproduce the above copyright notice, this
-*   list of conditions and the following disclaimer in the documentation and/or
-*   other materials provided with the distribution.
-*
-* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-*   contributors may be used to endorse or promote products derived from this
-*   software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include "fsl_dspi_edma.h"
-
-/***********************************************************************************************************************
-* Definitons
-***********************************************************************************************************************/
-
-/*!
-* @brief Structure definition for dspi_master_edma_private_handle_t. The structure is private.
-*/
-typedef struct _dspi_master_edma_private_handle
-{
-    SPI_Type *base;                    /*!< DSPI peripheral base address. */
-    dspi_master_edma_handle_t *handle; /*!< dspi_master_edma_handle_t handle */
-} dspi_master_edma_private_handle_t;
-
-/*!
-* @brief Structure definition for dspi_slave_edma_private_handle_t. The structure is private.
-*/
-typedef struct _dspi_slave_edma_private_handle
-{
-    SPI_Type *base;                   /*!< DSPI peripheral base address. */
-    dspi_slave_edma_handle_t *handle; /*!< dspi_master_edma_handle_t handle */
-} dspi_slave_edma_private_handle_t;
-
-/***********************************************************************************************************************
-* Prototypes
-***********************************************************************************************************************/
-/*!
-* @brief EDMA_DspiMasterCallback after the DSPI master transfer completed by using EDMA.
-* This is not a public API as it is called from other driver functions.
-*/
-static void EDMA_DspiMasterCallback(edma_handle_t *edmaHandle,
-                                    void *g_dspiEdmaPrivateHandle,
-                                    bool transferDone,
-                                    uint32_t tcds);
-
-/*!
-* @brief EDMA_DspiSlaveCallback after the DSPI slave transfer completed by using EDMA.
-* This is not a public API as it is called from other driver functions.
-*/
-static void EDMA_DspiSlaveCallback(edma_handle_t *edmaHandle,
-                                   void *g_dspiEdmaPrivateHandle,
-                                   bool transferDone,
-                                   uint32_t tcds);
-/*!
-* @brief Get instance number for DSPI module.
-*
-* This is not a public API and it's extern from fsl_dspi.c.
-*
-* @param base DSPI peripheral base address
-*/
-extern uint32_t DSPI_GetInstance(SPI_Type *base);
-
-/***********************************************************************************************************************
-* Variables
-***********************************************************************************************************************/
-
-/*! @brief Pointers to dspi edma handles for each instance. */
-static dspi_master_edma_private_handle_t s_dspiMasterEdmaPrivateHandle[FSL_FEATURE_SOC_DSPI_COUNT];
-static dspi_slave_edma_private_handle_t s_dspiSlaveEdmaPrivateHandle[FSL_FEATURE_SOC_DSPI_COUNT];
-
-/***********************************************************************************************************************
-* Code
-***********************************************************************************************************************/
-
-void DSPI_MasterTransferCreateHandleEDMA(SPI_Type *base,
-                                         dspi_master_edma_handle_t *handle,
-                                         dspi_master_edma_transfer_callback_t callback,
-                                         void *userData,
-                                         edma_handle_t *edmaRxRegToRxDataHandle,
-                                         edma_handle_t *edmaTxDataToIntermediaryHandle,
-                                         edma_handle_t *edmaIntermediaryToTxRegHandle)
-{
-    assert(handle);
-
-    /* Zero the handle. */
-    memset(handle, 0, sizeof(*handle));
-
-    uint32_t instance = DSPI_GetInstance(base);
-
-    s_dspiMasterEdmaPrivateHandle[instance].base = base;
-    s_dspiMasterEdmaPrivateHandle[instance].handle = handle;
-
-    handle->callback = callback;
-    handle->userData = userData;
-
-    handle->edmaRxRegToRxDataHandle = edmaRxRegToRxDataHandle;
-    handle->edmaTxDataToIntermediaryHandle = edmaTxDataToIntermediaryHandle;
-    handle->edmaIntermediaryToTxRegHandle = edmaIntermediaryToTxRegHandle;
-}
-
-status_t DSPI_MasterTransferEDMA(SPI_Type *base, dspi_master_edma_handle_t *handle, dspi_transfer_t *transfer)
-{
-    assert(handle && transfer);
-
-    /* If the transfer count is zero, then return immediately.*/
-    if (transfer->dataSize == 0)
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* If both send buffer and receive buffer is null */
-    if ((!(transfer->txData)) && (!(transfer->rxData)))
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* Check that we're not busy.*/
-    if (handle->state == kDSPI_Busy)
-    {
-        return kStatus_DSPI_Busy;
-    }
-
-    uint32_t instance = DSPI_GetInstance(base);
-    uint16_t wordToSend = 0;
-    uint8_t dummyData = DSPI_MASTER_DUMMY_DATA;
-    uint8_t dataAlreadyFed = 0;
-    uint8_t dataFedMax = 2;
-
-    uint32_t rxAddr = DSPI_GetRxRegisterAddress(base);
-    uint32_t txAddr = DSPI_MasterGetTxRegisterAddress(base);
-
-    edma_tcd_t *softwareTCD = (edma_tcd_t *)((uint32_t)(&handle->dspiSoftwareTCD[1]) & (~0x1FU));
-
-    edma_transfer_config_t transferConfigA;
-    edma_transfer_config_t transferConfigB;
-    edma_transfer_config_t transferConfigC;
-
-    handle->txBuffIfNull = ((uint32_t)DSPI_MASTER_DUMMY_DATA << 8) | DSPI_MASTER_DUMMY_DATA;
-
-    handle->state = kDSPI_Busy;
-
-    dspi_command_data_config_t commandStruct;
-    DSPI_StopTransfer(base);
-    DSPI_FlushFifo(base, true, true);
-    DSPI_ClearStatusFlags(base, kDSPI_AllStatusFlag);
-
-    commandStruct.whichPcs =
-        (dspi_which_pcs_t)(1U << ((transfer->configFlags & DSPI_MASTER_PCS_MASK) >> DSPI_MASTER_PCS_SHIFT));
-    commandStruct.isEndOfQueue = false;
-    commandStruct.clearTransferCount = false;
-    commandStruct.whichCtar =
-        (dspi_ctar_selection_t)((transfer->configFlags & DSPI_MASTER_CTAR_MASK) >> DSPI_MASTER_CTAR_SHIFT);
-    commandStruct.isPcsContinuous = (bool)(transfer->configFlags & kDSPI_MasterPcsContinuous);
-    handle->command = DSPI_MasterGetFormattedCommand(&(commandStruct));
-
-    commandStruct.isPcsContinuous = (bool)(transfer->configFlags & kDSPI_MasterActiveAfterTransfer);
-    handle->lastCommand = DSPI_MasterGetFormattedCommand(&(commandStruct));
-
-    handle->bitsPerFrame = ((base->CTAR[commandStruct.whichCtar] & SPI_CTAR_FMSZ_MASK) >> SPI_CTAR_FMSZ_SHIFT) + 1;
-
-    if ((base->MCR & SPI_MCR_DIS_RXF_MASK) || (base->MCR & SPI_MCR_DIS_TXF_MASK))
-    {
-        handle->fifoSize = 1;
-    }
-    else
-    {
-        handle->fifoSize = FSL_FEATURE_DSPI_FIFO_SIZEn(base);
-    }
-    handle->txData = transfer->txData;
-    handle->rxData = transfer->rxData;
-    handle->remainingSendByteCount = transfer->dataSize;
-    handle->remainingReceiveByteCount = transfer->dataSize;
-    handle->totalByteCount = transfer->dataSize;
-
-    /* this limits the amount of data we can transfer due to the linked channel.
-    * The max bytes is 511 if 8-bit/frame or 1022 if 16-bit/frame
-    */
-    if (handle->bitsPerFrame > 8)
-    {
-        if (transfer->dataSize > 1022)
-        {
-            return kStatus_DSPI_OutOfRange;
-        }
-    }
-    else
-    {
-        if (transfer->dataSize > 511)
-        {
-            return kStatus_DSPI_OutOfRange;
-        }
-    }
-
-    DSPI_DisableDMA(base, kDSPI_RxDmaEnable | kDSPI_TxDmaEnable);
-
-    EDMA_SetCallback(handle->edmaRxRegToRxDataHandle, EDMA_DspiMasterCallback,
-                     &s_dspiMasterEdmaPrivateHandle[instance]);
-
-    handle->isThereExtraByte = false;
-    if (handle->bitsPerFrame > 8)
-    {
-        if (handle->remainingSendByteCount % 2 == 1)
-        {
-            handle->remainingSendByteCount++;
-            handle->remainingReceiveByteCount--;
-            handle->isThereExtraByte = true;
-        }
-    }
-
-    /*If dspi has separate dma request , prepare the first data in "intermediary" .
-    else (dspi has shared dma request) , send first 2 data if there is fifo or send first 1 data if there is no fifo*/
-    if (1 == FSL_FEATURE_DSPI_HAS_SEPARATE_DMA_RX_TX_REQn(base))
-    {
-        /* For DSPI instances with separate RX/TX DMA requests, we'll use the TX DMA request to
-        * trigger the TX DMA channel and RX DMA request to trigger the RX DMA channel
-        */
-
-        /*Prepare the firt data*/
-        if (handle->bitsPerFrame > 8)
-        {
-            /* If it's the last word */
-            if (handle->remainingSendByteCount <= 2)
-            {
-                if (handle->txData)
-                {
-                    if (handle->isThereExtraByte)
-                    {
-                        wordToSend = *(handle->txData) | ((uint32_t)dummyData << 8);
-                    }
-                    else
-                    {
-                        wordToSend = *(handle->txData);
-                        ++handle->txData; /* increment to next data byte */
-                        wordToSend |= (unsigned)(*(handle->txData)) << 8U;
-                    }
-                }
-                else
-                {
-                    wordToSend = ((uint32_t)dummyData << 8) | dummyData;
-                }
-                handle->lastCommand = (handle->lastCommand & 0xffff0000U) | wordToSend;
-            }
-            else /* For all words except the last word , frame > 8bits */
-            {
-                if (handle->txData)
-                {
-                    wordToSend = *(handle->txData);
-                    ++handle->txData; /* increment to next data byte */
-                    wordToSend |= (unsigned)(*(handle->txData)) << 8U;
-                    ++handle->txData; /* increment to next data byte */
-                }
-                else
-                {
-                    wordToSend = ((uint32_t)dummyData << 8) | dummyData;
-                }
-                handle->command = (handle->command & 0xffff0000U) | wordToSend;
-            }
-        }
-        else /* Optimized for bits/frame less than or equal to one byte. */
-        {
-            if (handle->txData)
-            {
-                wordToSend = *(handle->txData);
-                ++handle->txData; /* increment to next data word*/
-            }
-            else
-            {
-                wordToSend = dummyData;
-            }
-
-            if (handle->remainingSendByteCount == 1)
-            {
-                handle->lastCommand = (handle->lastCommand & 0xffff0000U) | wordToSend;
-            }
-            else
-            {
-                handle->command = (handle->command & 0xffff0000U) | wordToSend;
-            }
-        }
-    }
-
-    else /*dspi has shared dma request*/
-
-    {
-        /* For DSPI instances with shared RX/TX DMA requests, we'll use the RX DMA request to
-        * trigger ongoing transfers and will link to the TX DMA channel from the RX DMA channel.
-        */
-
-        /* If bits/frame is greater than one byte */
-        if (handle->bitsPerFrame > 8)
-        {
-            while (DSPI_GetStatusFlags(base) & kDSPI_TxFifoFillRequestFlag)
-            {
-                if (handle->remainingSendByteCount <= 2)
-                {
-                    if (handle->txData)
-                    {
-                        if (handle->isThereExtraByte)
-                        {
-                            wordToSend = *(handle->txData) | ((uint32_t)dummyData << 8);
-                        }
-                        else
-                        {
-                            wordToSend = *(handle->txData);
-                            ++handle->txData;
-                            wordToSend |= (unsigned)(*(handle->txData)) << 8U;
-                        }
-                    }
-                    else
-                    {
-                        wordToSend = ((uint32_t)dummyData << 8) | dummyData;
-                        ;
-                    }
-                    handle->remainingSendByteCount = 0;
-                    base->PUSHR = (handle->lastCommand & 0xffff0000U) | wordToSend;
-                }
-                /* For all words except the last word */
-                else
-                {
-                    if (handle->txData)
-                    {
-                        wordToSend = *(handle->txData);
-                        ++handle->txData;
-                        wordToSend |= (unsigned)(*(handle->txData)) << 8U;
-                        ++handle->txData;
-                    }
-                    else
-                    {
-                        wordToSend = ((uint32_t)dummyData << 8) | dummyData;
-                        ;
-                    }
-                    handle->remainingSendByteCount -= 2;
-                    base->PUSHR = (handle->command & 0xffff0000U) | wordToSend;
-                }
-
-                /* Try to clear the TFFF; if the TX FIFO is full this will clear */
-                DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-
-                dataAlreadyFed += 2;
-
-                /* exit loop if send count is zero, else update local variables for next loop */
-                if ((handle->remainingSendByteCount == 0) || (dataAlreadyFed == (dataFedMax * 2)))
-                {
-                    break;
-                }
-            } /* End of TX FIFO fill while loop */
-        }
-        else /* Optimized for bits/frame less than or equal to one byte. */
-        {
-            while (DSPI_GetStatusFlags(base) & kDSPI_TxFifoFillRequestFlag)
-            {
-                if (handle->txData)
-                {
-                    wordToSend = *(handle->txData);
-                    ++handle->txData;
-                }
-                else
-                {
-                    wordToSend = dummyData;
-                }
-
-                if (handle->remainingSendByteCount == 1)
-                {
-                    base->PUSHR = (handle->lastCommand & 0xffff0000U) | wordToSend;
-                }
-                else
-                {
-                    base->PUSHR = (handle->command & 0xffff0000U) | wordToSend;
-                }
-
-                /* Try to clear the TFFF; if the TX FIFO is full this will clear */
-                DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-
-                --handle->remainingSendByteCount;
-
-                dataAlreadyFed++;
-
-                /* exit loop if send count is zero, else update local variables for next loop */
-                if ((handle->remainingSendByteCount == 0) || (dataAlreadyFed == dataFedMax))
-                {
-                    break;
-                }
-            } /* End of TX FIFO fill while loop */
-        }
-    }
-
-    /***channel_A *** used for carry the data from Rx_Data_Register(POPR) to User_Receive_Buffer*/
-    EDMA_ResetChannel(handle->edmaRxRegToRxDataHandle->base, handle->edmaRxRegToRxDataHandle->channel);
-
-    transferConfigA.srcAddr = (uint32_t)rxAddr;
-    transferConfigA.srcOffset = 0;
-
-    if (handle->rxData)
-    {
-        transferConfigA.destAddr = (uint32_t) & (handle->rxData[0]);
-        transferConfigA.destOffset = 1;
-    }
-    else
-    {
-        transferConfigA.destAddr = (uint32_t) & (handle->rxBuffIfNull);
-        transferConfigA.destOffset = 0;
-    }
-
-    transferConfigA.destTransferSize = kEDMA_TransferSize1Bytes;
-
-    if (handle->bitsPerFrame <= 8)
-    {
-        transferConfigA.srcTransferSize = kEDMA_TransferSize1Bytes;
-        transferConfigA.minorLoopBytes = 1;
-        transferConfigA.majorLoopCounts = handle->remainingReceiveByteCount;
-    }
-    else
-    {
-        transferConfigA.srcTransferSize = kEDMA_TransferSize2Bytes;
-        transferConfigA.minorLoopBytes = 2;
-        transferConfigA.majorLoopCounts = handle->remainingReceiveByteCount / 2;
-    }
-    EDMA_SetTransferConfig(handle->edmaRxRegToRxDataHandle->base, handle->edmaRxRegToRxDataHandle->channel,
-                           &transferConfigA, NULL);
-    EDMA_EnableChannelInterrupts(handle->edmaRxRegToRxDataHandle->base, handle->edmaRxRegToRxDataHandle->channel,
-                                 kEDMA_MajorInterruptEnable);
-
-    /***channel_B *** used for carry the data from User_Send_Buffer to "intermediary" because the SPIx_PUSHR should
-    write the 32bits at once time . Then use channel_C to carry the "intermediary" to SPIx_PUSHR. Note that the
-    SPIx_PUSHR upper 16 bits are the "command" and the low 16bits are data */
-    EDMA_ResetChannel(handle->edmaTxDataToIntermediaryHandle->base, handle->edmaTxDataToIntermediaryHandle->channel);
-
-    if (handle->remainingSendByteCount > 0)
-    {
-        if (handle->txData)
-        {
-            transferConfigB.srcAddr = (uint32_t)(handle->txData);
-            transferConfigB.srcOffset = 1;
-        }
-        else
-        {
-            transferConfigB.srcAddr = (uint32_t)(&handle->txBuffIfNull);
-            transferConfigB.srcOffset = 0;
-        }
-
-        transferConfigB.destAddr = (uint32_t)(&handle->command);
-        transferConfigB.destOffset = 0;
-
-        transferConfigB.srcTransferSize = kEDMA_TransferSize1Bytes;
-
-        if (handle->bitsPerFrame <= 8)
-        {
-            transferConfigB.destTransferSize = kEDMA_TransferSize1Bytes;
-            transferConfigB.minorLoopBytes = 1;
-
-            if (1 == FSL_FEATURE_DSPI_HAS_SEPARATE_DMA_RX_TX_REQn(base))
-            {
-                /*already prepared the first data in "intermediary" , so minus 1 */
-                transferConfigB.majorLoopCounts = handle->remainingSendByteCount - 1;
-            }
-            else
-            {
-                /*Only enable channel_B minorlink to channel_C , so need to add one count due to the last time is
-                majorlink , the majorlink would not trigger the channel_C*/
-                transferConfigB.majorLoopCounts = handle->remainingSendByteCount + 1;
-            }
-        }
-        else
-        {
-            transferConfigB.destTransferSize = kEDMA_TransferSize2Bytes;
-            transferConfigB.minorLoopBytes = 2;
-            if (1 == FSL_FEATURE_DSPI_HAS_SEPARATE_DMA_RX_TX_REQn(base))
-            {
-                /*already prepared the first data in "intermediary" , so minus 1 */
-                transferConfigB.majorLoopCounts = handle->remainingSendByteCount / 2 - 1;
-            }
-            else
-            {
-                /*Only enable channel_B minorlink to channel_C , so need to add one count due to the last time is
-                * majorlink*/
-                transferConfigB.majorLoopCounts = handle->remainingSendByteCount / 2 + 1;
-            }
-        }
-
-        EDMA_SetTransferConfig(handle->edmaTxDataToIntermediaryHandle->base,
-                               handle->edmaTxDataToIntermediaryHandle->channel, &transferConfigB, NULL);
-    }
-
-    /***channel_C ***carry the "intermediary" to SPIx_PUSHR. used the edma Scatter Gather function on channel_C to
-    handle the last data */
-    EDMA_ResetChannel(handle->edmaIntermediaryToTxRegHandle->base, handle->edmaIntermediaryToTxRegHandle->channel);
-
-    if (((handle->remainingSendByteCount > 0) && (1 != FSL_FEATURE_DSPI_HAS_SEPARATE_DMA_RX_TX_REQn(base))) ||
-        ((((handle->remainingSendByteCount > 1) && (handle->bitsPerFrame <= 8)) ||
-          ((handle->remainingSendByteCount > 2) && (handle->bitsPerFrame > 8))) &&
-         (1 == FSL_FEATURE_DSPI_HAS_SEPARATE_DMA_RX_TX_REQn(base))))
-    {
-        if (handle->txData)
-        {
-            uint32_t bufferIndex = 0;
-
-            if (1 == FSL_FEATURE_DSPI_HAS_SEPARATE_DMA_RX_TX_REQn(base))
-            {
-                if (handle->bitsPerFrame <= 8)
-                {
-                    bufferIndex = handle->remainingSendByteCount - 1;
-                }
-                else
-                {
-                    bufferIndex = handle->remainingSendByteCount - 2;
-                }
-            }
-            else
-            {
-                bufferIndex = handle->remainingSendByteCount;
-            }
-
-            if (handle->bitsPerFrame <= 8)
-            {
-                handle->lastCommand = (handle->lastCommand & 0xffff0000U) | handle->txData[bufferIndex - 1];
-            }
-            else
-            {
-                if (handle->isThereExtraByte)
-                {
-                    handle->lastCommand = (handle->lastCommand & 0xffff0000U) | handle->txData[bufferIndex - 2] |
-                                          ((uint32_t)dummyData << 8);
-                }
-                else
-                {
-                    handle->lastCommand = (handle->lastCommand & 0xffff0000U) |
-                                          ((uint32_t)handle->txData[bufferIndex - 1] << 8) |
-                                          handle->txData[bufferIndex - 2];
-                }
-            }
-        }
-        else
-        {
-            if (handle->bitsPerFrame <= 8)
-            {
-                wordToSend = dummyData;
-            }
-            else
-            {
-                wordToSend = ((uint32_t)dummyData << 8) | dummyData;
-            }
-            handle->lastCommand = (handle->lastCommand & 0xffff0000U) | wordToSend;
-        }
-    }
-
-    if ((1 == FSL_FEATURE_DSPI_HAS_SEPARATE_DMA_RX_TX_REQn(base)) ||
-        ((1 != FSL_FEATURE_DSPI_HAS_SEPARATE_DMA_RX_TX_REQn(base)) && (handle->remainingSendByteCount > 0)))
-    {
-        transferConfigC.srcAddr = (uint32_t) & (handle->lastCommand);
-        transferConfigC.destAddr = (uint32_t)txAddr;
-        transferConfigC.srcTransferSize = kEDMA_TransferSize4Bytes;
-        transferConfigC.destTransferSize = kEDMA_TransferSize4Bytes;
-        transferConfigC.srcOffset = 0;
-        transferConfigC.destOffset = 0;
-        transferConfigC.minorLoopBytes = 4;
-        transferConfigC.majorLoopCounts = 1;
-
-        EDMA_TcdReset(softwareTCD);
-        EDMA_TcdSetTransferConfig(softwareTCD, &transferConfigC, NULL);
-    }
-
-    if (((handle->remainingSendByteCount > 1) && (handle->bitsPerFrame <= 8)) ||
-        ((handle->remainingSendByteCount > 2) && (handle->bitsPerFrame > 8)))
-    {
-        transferConfigC.srcAddr = (uint32_t)(&(handle->command));
-        transferConfigC.destAddr = (uint32_t)txAddr;
-
-        transferConfigC.srcTransferSize = kEDMA_TransferSize4Bytes;
-        transferConfigC.destTransferSize = kEDMA_TransferSize4Bytes;
-        transferConfigC.srcOffset = 0;
-        transferConfigC.destOffset = 0;
-        transferConfigC.minorLoopBytes = 4;
-
-        if (handle->bitsPerFrame <= 8)
-        {
-            transferConfigC.majorLoopCounts = handle->remainingSendByteCount - 1;
-        }
-        else
-        {
-            transferConfigC.majorLoopCounts = handle->remainingSendByteCount / 2 - 1;
-        }
-
-        EDMA_SetTransferConfig(handle->edmaIntermediaryToTxRegHandle->base,
-                               handle->edmaIntermediaryToTxRegHandle->channel, &transferConfigC, softwareTCD);
-        EDMA_EnableAutoStopRequest(handle->edmaIntermediaryToTxRegHandle->base,
-                                   handle->edmaIntermediaryToTxRegHandle->channel, false);
-    }
-    else
-    {
-        EDMA_SetTransferConfig(handle->edmaIntermediaryToTxRegHandle->base,
-                               handle->edmaIntermediaryToTxRegHandle->channel, &transferConfigC, NULL);
-    }
-
-    /*Start the EDMA channel_A , channel_B , channel_C transfer*/
-    EDMA_StartTransfer(handle->edmaRxRegToRxDataHandle);
-    EDMA_StartTransfer(handle->edmaTxDataToIntermediaryHandle);
-    EDMA_StartTransfer(handle->edmaIntermediaryToTxRegHandle);
-
-    /*Set channel priority*/
-    uint8_t channelPriorityLow = handle->edmaRxRegToRxDataHandle->channel;
-    uint8_t channelPriorityMid = handle->edmaTxDataToIntermediaryHandle->channel;
-    uint8_t channelPriorityHigh = handle->edmaIntermediaryToTxRegHandle->channel;
-    uint8_t t = 0;
-    if (channelPriorityLow > channelPriorityMid)
-    {
-        t = channelPriorityLow;
-        channelPriorityLow = channelPriorityMid;
-        channelPriorityMid = t;
-    }
-
-    if (channelPriorityLow > channelPriorityHigh)
-    {
-        t = channelPriorityLow;
-        channelPriorityLow = channelPriorityHigh;
-        channelPriorityHigh = t;
-    }
-
-    if (channelPriorityMid > channelPriorityHigh)
-    {
-        t = channelPriorityMid;
-        channelPriorityMid = channelPriorityHigh;
-        channelPriorityHigh = t;
-    }
-    edma_channel_Preemption_config_t preemption_config_t;
-    preemption_config_t.enableChannelPreemption = true;
-    preemption_config_t.enablePreemptAbility = true;
-    preemption_config_t.channelPriority = channelPriorityLow;
-
-    if (1 != FSL_FEATURE_DSPI_HAS_SEPARATE_DMA_RX_TX_REQn(base))
-    {
-        EDMA_SetChannelPreemptionConfig(handle->edmaRxRegToRxDataHandle->base, handle->edmaRxRegToRxDataHandle->channel,
-                                        &preemption_config_t);
-
-        preemption_config_t.channelPriority = channelPriorityMid;
-        EDMA_SetChannelPreemptionConfig(handle->edmaTxDataToIntermediaryHandle->base,
-                                        handle->edmaTxDataToIntermediaryHandle->channel, &preemption_config_t);
-
-        preemption_config_t.channelPriority = channelPriorityHigh;
-        EDMA_SetChannelPreemptionConfig(handle->edmaIntermediaryToTxRegHandle->base,
-                                        handle->edmaIntermediaryToTxRegHandle->channel, &preemption_config_t);
-    }
-    else
-    {
-        EDMA_SetChannelPreemptionConfig(handle->edmaIntermediaryToTxRegHandle->base,
-                                        handle->edmaIntermediaryToTxRegHandle->channel, &preemption_config_t);
-
-        preemption_config_t.channelPriority = channelPriorityMid;
-        EDMA_SetChannelPreemptionConfig(handle->edmaTxDataToIntermediaryHandle->base,
-                                        handle->edmaTxDataToIntermediaryHandle->channel, &preemption_config_t);
-
-        preemption_config_t.channelPriority = channelPriorityHigh;
-        EDMA_SetChannelPreemptionConfig(handle->edmaRxRegToRxDataHandle->base, handle->edmaRxRegToRxDataHandle->channel,
-                                        &preemption_config_t);
-    }
-
-    /*Set the channel link.
-    For DSPI instances with shared RX/TX DMA requests: Rx DMA request -> channel_A -> channel_B-> channel_C.
-    For DSPI instances with separate RX and TX DMA requests:
-    Rx DMA request -> channel_A
-    Tx DMA request -> channel_C -> channel_B . (so need prepare the first data in "intermediary"  before the DMA
-    transfer and then channel_B is used to prepare the next data to "intermediary" ) */
-    if (1 == FSL_FEATURE_DSPI_HAS_SEPARATE_DMA_RX_TX_REQn(base))
-    {
-        /*if there is Tx DMA request , carry the 32bits data (handle->command) to PUSHR first , then link to channelB
-        to prepare the next 32bits data (User_send_buffer to handle->command) */
-        if (handle->remainingSendByteCount > 1)
-        {
-            EDMA_SetChannelLink(handle->edmaIntermediaryToTxRegHandle->base,
-                                handle->edmaIntermediaryToTxRegHandle->channel, kEDMA_MinorLink,
-                                handle->edmaTxDataToIntermediaryHandle->channel);
-        }
-
-        DSPI_EnableDMA(base, kDSPI_RxDmaEnable | kDSPI_TxDmaEnable);
-    }
-    else
-    {
-        if (handle->remainingSendByteCount > 0)
-        {
-            EDMA_SetChannelLink(handle->edmaRxRegToRxDataHandle->base, handle->edmaRxRegToRxDataHandle->channel,
-                                kEDMA_MinorLink, handle->edmaTxDataToIntermediaryHandle->channel);
-
-            if (handle->isThereExtraByte)
-            {
-                EDMA_SetChannelLink(handle->edmaRxRegToRxDataHandle->base, handle->edmaRxRegToRxDataHandle->channel,
-                                    kEDMA_MajorLink, handle->edmaTxDataToIntermediaryHandle->channel);
-            }
-
-            EDMA_SetChannelLink(handle->edmaTxDataToIntermediaryHandle->base,
-                                handle->edmaTxDataToIntermediaryHandle->channel, kEDMA_MinorLink,
-                                handle->edmaIntermediaryToTxRegHandle->channel);
-        }
-
-        DSPI_EnableDMA(base, kDSPI_RxDmaEnable);
-    }
-
-    DSPI_StartTransfer(base);
-
-    return kStatus_Success;
-}
-
-static void EDMA_DspiMasterCallback(edma_handle_t *edmaHandle,
-                                    void *g_dspiEdmaPrivateHandle,
-                                    bool transferDone,
-                                    uint32_t tcds)
-{
-    dspi_master_edma_private_handle_t *dspiEdmaPrivateHandle;
-
-    dspiEdmaPrivateHandle = (dspi_master_edma_private_handle_t *)g_dspiEdmaPrivateHandle;
-
-    uint32_t dataReceived;
-
-    DSPI_DisableDMA((dspiEdmaPrivateHandle->base), kDSPI_RxDmaEnable | kDSPI_TxDmaEnable);
-
-    if (dspiEdmaPrivateHandle->handle->isThereExtraByte)
-    {
-        while (!((dspiEdmaPrivateHandle->base)->SR & SPI_SR_RFDF_MASK))
-        {
-        }
-        dataReceived = (dspiEdmaPrivateHandle->base)->POPR;
-        if (dspiEdmaPrivateHandle->handle->rxData)
-        {
-            (dspiEdmaPrivateHandle->handle->rxData[dspiEdmaPrivateHandle->handle->totalByteCount - 1]) = dataReceived;
-        }
-    }
-
-    if (dspiEdmaPrivateHandle->handle->callback)
-    {
-        dspiEdmaPrivateHandle->handle->callback(dspiEdmaPrivateHandle->base, dspiEdmaPrivateHandle->handle,
-                                                kStatus_Success, dspiEdmaPrivateHandle->handle->userData);
-    }
-
-    dspiEdmaPrivateHandle->handle->state = kDSPI_Idle;
-}
-
-void DSPI_MasterTransferAbortEDMA(SPI_Type *base, dspi_master_edma_handle_t *handle)
-{
-    DSPI_StopTransfer(base);
-
-    DSPI_DisableDMA(base, kDSPI_RxDmaEnable | kDSPI_TxDmaEnable);
-
-    EDMA_AbortTransfer(handle->edmaRxRegToRxDataHandle);
-    EDMA_AbortTransfer(handle->edmaTxDataToIntermediaryHandle);
-    EDMA_AbortTransfer(handle->edmaIntermediaryToTxRegHandle);
-
-    handle->state = kDSPI_Idle;
-}
-
-status_t DSPI_MasterTransferGetCountEDMA(SPI_Type *base, dspi_master_edma_handle_t *handle, size_t *count)
-{
-    assert(handle);
-
-    if (!count)
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* Catch when there is not an active transfer. */
-    if (handle->state != kDSPI_Busy)
-    {
-        *count = 0;
-        return kStatus_NoTransferInProgress;
-    }
-
-    size_t bytes;
-
-    bytes = EDMA_GetRemainingBytes(handle->edmaRxRegToRxDataHandle->base, handle->edmaRxRegToRxDataHandle->channel);
-
-    *count = handle->totalByteCount - bytes;
-
-    return kStatus_Success;
-}
-
-void DSPI_SlaveTransferCreateHandleEDMA(SPI_Type *base,
-                                        dspi_slave_edma_handle_t *handle,
-                                        dspi_slave_edma_transfer_callback_t callback,
-                                        void *userData,
-                                        edma_handle_t *edmaRxRegToRxDataHandle,
-                                        edma_handle_t *edmaTxDataToTxRegHandle)
-{
-    assert(handle);
-
-    /* Zero the handle. */
-    memset(handle, 0, sizeof(*handle));
-
-    uint32_t instance = DSPI_GetInstance(base);
-
-    s_dspiSlaveEdmaPrivateHandle[instance].base = base;
-    s_dspiSlaveEdmaPrivateHandle[instance].handle = handle;
-
-    handle->callback = callback;
-    handle->userData = userData;
-
-    handle->edmaRxRegToRxDataHandle = edmaRxRegToRxDataHandle;
-    handle->edmaTxDataToTxRegHandle = edmaTxDataToTxRegHandle;
-}
-
-status_t DSPI_SlaveTransferEDMA(SPI_Type *base, dspi_slave_edma_handle_t *handle, dspi_transfer_t *transfer)
-{
-    assert(handle && transfer);
-
-    /* If send/receive length is zero */
-    if (transfer->dataSize == 0)
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* If both send buffer and receive buffer is null */
-    if ((!(transfer->txData)) && (!(transfer->rxData)))
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* Check that we're not busy.*/
-    if (handle->state == kDSPI_Busy)
-    {
-        return kStatus_DSPI_Busy;
-    }
-
-    edma_tcd_t *softwareTCD = (edma_tcd_t *)((uint32_t)(&handle->dspiSoftwareTCD[1]) & (~0x1FU));
-
-    uint32_t instance = DSPI_GetInstance(base);
-    uint8_t whichCtar = (transfer->configFlags & DSPI_SLAVE_CTAR_MASK) >> DSPI_SLAVE_CTAR_SHIFT;
-    handle->bitsPerFrame =
-        (((base->CTAR_SLAVE[whichCtar]) & SPI_CTAR_SLAVE_FMSZ_MASK) >> SPI_CTAR_SLAVE_FMSZ_SHIFT) + 1;
-
-    /* If using a shared RX/TX DMA request, then this limits the amount of data we can transfer
-    * due to the linked channel. The max bytes is 511 if 8-bit/frame or 1022 if 16-bit/frame
-    */
-    if (1 != FSL_FEATURE_DSPI_HAS_SEPARATE_DMA_RX_TX_REQn(base))
-    {
-        if (handle->bitsPerFrame > 8)
-        {
-            if (transfer->dataSize > 1022)
-            {
-                return kStatus_DSPI_OutOfRange;
-            }
-        }
-        else
-        {
-            if (transfer->dataSize > 511)
-            {
-                return kStatus_DSPI_OutOfRange;
-            }
-        }
-    }
-
-    if ((handle->bitsPerFrame > 8) && (transfer->dataSize < 2))
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    EDMA_SetCallback(handle->edmaRxRegToRxDataHandle, EDMA_DspiSlaveCallback, &s_dspiSlaveEdmaPrivateHandle[instance]);
-
-    handle->state = kDSPI_Busy;
-
-    /* Store transfer information */
-    handle->txData = transfer->txData;
-    handle->rxData = transfer->rxData;
-    handle->remainingSendByteCount = transfer->dataSize;
-    handle->remainingReceiveByteCount = transfer->dataSize;
-    handle->totalByteCount = transfer->dataSize;
-    handle->errorCount = 0;
-
-    handle->isThereExtraByte = false;
-    if (handle->bitsPerFrame > 8)
-    {
-        if (handle->remainingSendByteCount % 2 == 1)
-        {
-            handle->remainingSendByteCount++;
-            handle->remainingReceiveByteCount--;
-            handle->isThereExtraByte = true;
-        }
-    }
-
-    uint16_t wordToSend = 0;
-    uint8_t dummyData = DSPI_SLAVE_DUMMY_DATA;
-    uint8_t dataAlreadyFed = 0;
-    uint8_t dataFedMax = 2;
-
-    uint32_t rxAddr = DSPI_GetRxRegisterAddress(base);
-    uint32_t txAddr = DSPI_SlaveGetTxRegisterAddress(base);
-
-    edma_transfer_config_t transferConfigA;
-    edma_transfer_config_t transferConfigC;
-
-    DSPI_StopTransfer(base);
-
-    DSPI_FlushFifo(base, true, true);
-    DSPI_ClearStatusFlags(base, kDSPI_AllStatusFlag);
-
-    DSPI_DisableDMA(base, kDSPI_RxDmaEnable | kDSPI_TxDmaEnable);
-
-    DSPI_StartTransfer(base);
-
-    /*if dspi has separate dma request , need not prepare data first .
-    else (dspi has shared dma request) , send first 2 data into fifo if there is fifo or send first 1 data to
-    slaveGetTxRegister if there is no fifo*/
-    if (1 != FSL_FEATURE_DSPI_HAS_SEPARATE_DMA_RX_TX_REQn(base))
-    {
-        /* For DSPI instances with shared RX/TX DMA requests, we'll use the RX DMA request to
-        * trigger ongoing transfers and will link to the TX DMA channel from the RX DMA channel.
-        */
-        /* If bits/frame is greater than one byte */
-        if (handle->bitsPerFrame > 8)
-        {
-            while (DSPI_GetStatusFlags(base) & kDSPI_TxFifoFillRequestFlag)
-            {
-                if (handle->txData)
-                {
-                    wordToSend = *(handle->txData);
-                    ++handle->txData; /* Increment to next data byte */
-                    if ((handle->remainingSendByteCount == 2) && (handle->isThereExtraByte))
-                    {
-                        wordToSend |= (unsigned)(dummyData) << 8U;
-                        ++handle->txData; /* Increment to next data byte */
-                    }
-                    else
-                    {
-                        wordToSend |= (unsigned)(*(handle->txData)) << 8U;
-                        ++handle->txData; /* Increment to next data byte */
-                    }
-                }
-                else
-                {
-                    wordToSend = ((uint32_t)dummyData << 8) | dummyData;
-                }
-                handle->remainingSendByteCount -= 2; /* decrement remainingSendByteCount by 2 */
-                base->PUSHR_SLAVE = wordToSend;
-
-                /* Try to clear the TFFF; if the TX FIFO is full this will clear */
-                DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-
-                dataAlreadyFed += 2;
-
-                /* Exit loop if send count is zero, else update local variables for next loop */
-                if ((handle->remainingSendByteCount == 0) || (dataAlreadyFed == (dataFedMax * 2)))
-                {
-                    break;
-                }
-            } /* End of TX FIFO fill while loop */
-        }
-        else /* Optimized for bits/frame less than or equal to one byte. */
-        {
-            while (DSPI_GetStatusFlags(base) & kDSPI_TxFifoFillRequestFlag)
-            {
-                if (handle->txData)
-                {
-                    wordToSend = *(handle->txData);
-                    /* Increment to next data word*/
-                    ++handle->txData;
-                }
-                else
-                {
-                    wordToSend = dummyData;
-                }
-
-                base->PUSHR_SLAVE = wordToSend;
-
-                /* Try to clear the TFFF; if the TX FIFO is full this will clear */
-                DSPI_ClearStatusFlags(base, kDSPI_TxFifoFillRequestFlag);
-                /* Decrement remainingSendByteCount*/
-                --handle->remainingSendByteCount;
-
-                dataAlreadyFed++;
-
-                /* Exit loop if send count is zero, else update local variables for next loop */
-                if ((handle->remainingSendByteCount == 0) || (dataAlreadyFed == dataFedMax))
-                {
-                    break;
-                }
-            } /* End of TX FIFO fill while loop */
-        }
-    }
-
-    /***channel_A *** used for carry the data from Rx_Data_Register(POPR) to User_Receive_Buffer*/
-    if (handle->remainingReceiveByteCount > 0)
-    {
-        EDMA_ResetChannel(handle->edmaRxRegToRxDataHandle->base, handle->edmaRxRegToRxDataHandle->channel);
-
-        transferConfigA.srcAddr = (uint32_t)rxAddr;
-        transferConfigA.srcOffset = 0;
-
-        if (handle->rxData)
-        {
-            transferConfigA.destAddr = (uint32_t) & (handle->rxData[0]);
-            transferConfigA.destOffset = 1;
-        }
-        else
-        {
-            transferConfigA.destAddr = (uint32_t) & (handle->rxBuffIfNull);
-            transferConfigA.destOffset = 0;
-        }
-
-        transferConfigA.destTransferSize = kEDMA_TransferSize1Bytes;
-
-        if (handle->bitsPerFrame <= 8)
-        {
-            transferConfigA.srcTransferSize = kEDMA_TransferSize1Bytes;
-            transferConfigA.minorLoopBytes = 1;
-            transferConfigA.majorLoopCounts = handle->remainingReceiveByteCount;
-        }
-        else
-        {
-            transferConfigA.srcTransferSize = kEDMA_TransferSize2Bytes;
-            transferConfigA.minorLoopBytes = 2;
-            transferConfigA.majorLoopCounts = handle->remainingReceiveByteCount / 2;
-        }
-        EDMA_SetTransferConfig(handle->edmaRxRegToRxDataHandle->base, handle->edmaRxRegToRxDataHandle->channel,
-                               &transferConfigA, NULL);
-        EDMA_EnableChannelInterrupts(handle->edmaRxRegToRxDataHandle->base, handle->edmaRxRegToRxDataHandle->channel,
-                                     kEDMA_MajorInterruptEnable);
-    }
-
-    if (handle->remainingSendByteCount > 0)
-    {
-        /***channel_C *** used for carry the data from User_Send_Buffer to Tx_Data_Register(PUSHR_SLAVE)*/
-        EDMA_ResetChannel(handle->edmaTxDataToTxRegHandle->base, handle->edmaTxDataToTxRegHandle->channel);
-
-        /*If there is extra byte , it would use the */
-        if (handle->isThereExtraByte)
-        {
-            if (handle->txData)
-            {
-                handle->txLastData =
-                    handle->txData[handle->remainingSendByteCount - 2] | ((uint32_t)DSPI_SLAVE_DUMMY_DATA << 8);
-            }
-            else
-            {
-                handle->txLastData = DSPI_SLAVE_DUMMY_DATA | ((uint32_t)DSPI_SLAVE_DUMMY_DATA << 8);
-            }
-            transferConfigC.srcAddr = (uint32_t)(&(handle->txLastData));
-            transferConfigC.destAddr = (uint32_t)txAddr;
-            transferConfigC.srcTransferSize = kEDMA_TransferSize4Bytes;
-            transferConfigC.destTransferSize = kEDMA_TransferSize4Bytes;
-            transferConfigC.srcOffset = 0;
-            transferConfigC.destOffset = 0;
-            transferConfigC.minorLoopBytes = 4;
-            transferConfigC.majorLoopCounts = 1;
-
-            EDMA_TcdReset(softwareTCD);
-            EDMA_TcdSetTransferConfig(softwareTCD, &transferConfigC, NULL);
-        }
-
-        /*Set another  transferConfigC*/
-        if ((handle->isThereExtraByte) && (handle->remainingSendByteCount == 2))
-        {
-            EDMA_SetTransferConfig(handle->edmaTxDataToTxRegHandle->base, handle->edmaTxDataToTxRegHandle->channel,
-                                   &transferConfigC, NULL);
-        }
-        else
-        {
-            transferConfigC.destAddr = (uint32_t)txAddr;
-            transferConfigC.destOffset = 0;
-
-            if (handle->txData)
-            {
-                transferConfigC.srcAddr = (uint32_t)(&(handle->txData[0]));
-                transferConfigC.srcOffset = 1;
-            }
-            else
-            {
-                transferConfigC.srcAddr = (uint32_t)(&handle->txBuffIfNull);
-                transferConfigC.srcOffset = 0;
-                if (handle->bitsPerFrame <= 8)
-                {
-                    handle->txBuffIfNull = DSPI_SLAVE_DUMMY_DATA;
-                }
-                else
-                {
-                    handle->txBuffIfNull = (DSPI_SLAVE_DUMMY_DATA << 8) | DSPI_SLAVE_DUMMY_DATA;
-                }
-            }
-
-            transferConfigC.srcTransferSize = kEDMA_TransferSize1Bytes;
-
-            if (handle->bitsPerFrame <= 8)
-            {
-                transferConfigC.destTransferSize = kEDMA_TransferSize1Bytes;
-                transferConfigC.minorLoopBytes = 1;
-                transferConfigC.majorLoopCounts = handle->remainingSendByteCount;
-            }
-            else
-            {
-                transferConfigC.destTransferSize = kEDMA_TransferSize2Bytes;
-                transferConfigC.minorLoopBytes = 2;
-                if (handle->isThereExtraByte)
-                {
-                    transferConfigC.majorLoopCounts = handle->remainingSendByteCount / 2 - 1;
-                }
-                else
-                {
-                    transferConfigC.majorLoopCounts = handle->remainingSendByteCount / 2;
-                }
-            }
-
-            if (handle->isThereExtraByte)
-            {
-                EDMA_SetTransferConfig(handle->edmaTxDataToTxRegHandle->base, handle->edmaTxDataToTxRegHandle->channel,
-                                       &transferConfigC, softwareTCD);
-                EDMA_EnableAutoStopRequest(handle->edmaTxDataToTxRegHandle->base,
-                                           handle->edmaTxDataToTxRegHandle->channel, false);
-            }
-            else
-            {
-                EDMA_SetTransferConfig(handle->edmaTxDataToTxRegHandle->base, handle->edmaTxDataToTxRegHandle->channel,
-                                       &transferConfigC, NULL);
-            }
-
-            EDMA_StartTransfer(handle->edmaTxDataToTxRegHandle);
-        }
-    }
-
-    EDMA_StartTransfer(handle->edmaRxRegToRxDataHandle);
-
-    /*Set channel priority*/
-    uint8_t channelPriorityLow = handle->edmaRxRegToRxDataHandle->channel;
-    uint8_t channelPriorityHigh = handle->edmaTxDataToTxRegHandle->channel;
-    uint8_t t = 0;
-
-    if (channelPriorityLow > channelPriorityHigh)
-    {
-        t = channelPriorityLow;
-        channelPriorityLow = channelPriorityHigh;
-        channelPriorityHigh = t;
-    }
-
-    edma_channel_Preemption_config_t preemption_config_t;
-    preemption_config_t.enableChannelPreemption = true;
-    preemption_config_t.enablePreemptAbility = true;
-    preemption_config_t.channelPriority = channelPriorityLow;
-
-    if (1 != FSL_FEATURE_DSPI_HAS_SEPARATE_DMA_RX_TX_REQn(base))
-    {
-        EDMA_SetChannelPreemptionConfig(handle->edmaRxRegToRxDataHandle->base, handle->edmaRxRegToRxDataHandle->channel,
-                                        &preemption_config_t);
-
-        preemption_config_t.channelPriority = channelPriorityHigh;
-        EDMA_SetChannelPreemptionConfig(handle->edmaTxDataToTxRegHandle->base, handle->edmaTxDataToTxRegHandle->channel,
-                                        &preemption_config_t);
-    }
-    else
-    {
-        EDMA_SetChannelPreemptionConfig(handle->edmaTxDataToTxRegHandle->base, handle->edmaTxDataToTxRegHandle->channel,
-                                        &preemption_config_t);
-
-        preemption_config_t.channelPriority = channelPriorityHigh;
-        EDMA_SetChannelPreemptionConfig(handle->edmaRxRegToRxDataHandle->base, handle->edmaRxRegToRxDataHandle->channel,
-                                        &preemption_config_t);
-    }
-
-    /*Set the channel link.
-    For DSPI instances with shared RX/TX DMA requests: Rx DMA request -> channel_A -> channel_C.
-    For DSPI instances with separate RX and TX DMA requests:
-    Rx DMA request -> channel_A
-    Tx DMA request -> channel_C */
-    if (1 != FSL_FEATURE_DSPI_HAS_SEPARATE_DMA_RX_TX_REQn(base))
-    {
-        if (handle->remainingSendByteCount > 0)
-        {
-            EDMA_SetChannelLink(handle->edmaRxRegToRxDataHandle->base, handle->edmaRxRegToRxDataHandle->channel,
-                                kEDMA_MinorLink, handle->edmaTxDataToTxRegHandle->channel);
-        }
-        DSPI_EnableDMA(base, kDSPI_RxDmaEnable);
-    }
-    else
-    {
-        DSPI_EnableDMA(base, kDSPI_RxDmaEnable | kDSPI_TxDmaEnable);
-    }
-
-    return kStatus_Success;
-}
-
-static void EDMA_DspiSlaveCallback(edma_handle_t *edmaHandle,
-                                   void *g_dspiEdmaPrivateHandle,
-                                   bool transferDone,
-                                   uint32_t tcds)
-{
-    dspi_slave_edma_private_handle_t *dspiEdmaPrivateHandle;
-
-    dspiEdmaPrivateHandle = (dspi_slave_edma_private_handle_t *)g_dspiEdmaPrivateHandle;
-
-    uint32_t dataReceived;
-
-    DSPI_DisableDMA((dspiEdmaPrivateHandle->base), kDSPI_RxDmaEnable | kDSPI_TxDmaEnable);
-
-    if (dspiEdmaPrivateHandle->handle->isThereExtraByte)
-    {
-        while (!((dspiEdmaPrivateHandle->base)->SR & SPI_SR_RFDF_MASK))
-        {
-        }
-        dataReceived = (dspiEdmaPrivateHandle->base)->POPR;
-        if (dspiEdmaPrivateHandle->handle->rxData)
-        {
-            (dspiEdmaPrivateHandle->handle->rxData[dspiEdmaPrivateHandle->handle->totalByteCount - 1]) = dataReceived;
-        }
-    }
-
-    if (dspiEdmaPrivateHandle->handle->callback)
-    {
-        dspiEdmaPrivateHandle->handle->callback(dspiEdmaPrivateHandle->base, dspiEdmaPrivateHandle->handle,
-                                                kStatus_Success, dspiEdmaPrivateHandle->handle->userData);
-    }
-
-    dspiEdmaPrivateHandle->handle->state = kDSPI_Idle;
-}
-
-void DSPI_SlaveTransferAbortEDMA(SPI_Type *base, dspi_slave_edma_handle_t *handle)
-{
-    DSPI_StopTransfer(base);
-
-    DSPI_DisableDMA(base, kDSPI_RxDmaEnable | kDSPI_TxDmaEnable);
-
-    EDMA_AbortTransfer(handle->edmaRxRegToRxDataHandle);
-    EDMA_AbortTransfer(handle->edmaTxDataToTxRegHandle);
-
-    handle->state = kDSPI_Idle;
-}
-
-status_t DSPI_SlaveTransferGetCountEDMA(SPI_Type *base, dspi_slave_edma_handle_t *handle, size_t *count)
-{
-    assert(handle);
-
-    if (!count)
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* Catch when there is not an active transfer. */
-    if (handle->state != kDSPI_Busy)
-    {
-        *count = 0;
-        return kStatus_NoTransferInProgress;
-    }
-
-    size_t bytes;
-
-    bytes = EDMA_GetRemainingBytes(handle->edmaRxRegToRxDataHandle->base, handle->edmaRxRegToRxDataHandle->channel);
-
-    *count = handle->totalByteCount - bytes;
-
-    return kStatus_Success;
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_dspi_edma.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,283 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_DSPI_EDMA_H_
-#define _FSL_DSPI_EDMA_H_
-
-#include "fsl_dspi.h"
-#include "fsl_edma.h"
-/*!
- * @addtogroup dspi_edma_driver
- * @{
- */
-
-/*! @file */
-
-/***********************************************************************************************************************
- * Definitions
- **********************************************************************************************************************/
-
-/*!
-* @brief Forward declaration of the DSPI eDMA master handle typedefs.
-*/
-typedef struct _dspi_master_edma_handle dspi_master_edma_handle_t;
-
-/*!
-* @brief Forward declaration of the DSPI eDMA slave handle typedefs.
-*/
-typedef struct _dspi_slave_edma_handle dspi_slave_edma_handle_t;
-
-/*!
- * @brief Completion callback function pointer type.
- *
- * @param base DSPI peripheral base address.
- * @param handle Pointer to the handle for the DSPI master.
- * @param status Success or error code describing whether the transfer completed.
- * @param userData Arbitrary pointer-dataSized value passed from the application.
- */
-typedef void (*dspi_master_edma_transfer_callback_t)(SPI_Type *base,
-                                                     dspi_master_edma_handle_t *handle,
-                                                     status_t status,
-                                                     void *userData);
-/*!
- * @brief Completion callback function pointer type.
- *
- * @param base DSPI peripheral base address.
- * @param handle Pointer to the handle for the DSPI slave.
- * @param status Success or error code describing whether the transfer completed.
- * @param userData Arbitrary pointer-dataSized value passed from the application.
- */
-typedef void (*dspi_slave_edma_transfer_callback_t)(SPI_Type *base,
-                                                    dspi_slave_edma_handle_t *handle,
-                                                    status_t status,
-                                                    void *userData);
-
-/*! @brief DSPI master eDMA transfer handle structure used for transactional API. */
-struct _dspi_master_edma_handle
-{
-    uint32_t bitsPerFrame;         /*!< Desired number of bits per frame. */
-    volatile uint32_t command;     /*!< Desired data command. */
-    volatile uint32_t lastCommand; /*!< Desired last data command. */
-
-    uint8_t fifoSize; /*!< FIFO dataSize. */
-
-    volatile bool isPcsActiveAfterTransfer; /*!< Is PCS signal keep active after the last frame transfer.*/
-    volatile bool isThereExtraByte;         /*!< Is there extra byte.*/
-
-    uint8_t *volatile txData;                  /*!< Send buffer. */
-    uint8_t *volatile rxData;                  /*!< Receive buffer. */
-    volatile size_t remainingSendByteCount;    /*!< Number of bytes remaining to send.*/
-    volatile size_t remainingReceiveByteCount; /*!< Number of bytes remaining to receive.*/
-    size_t totalByteCount;                     /*!< Number of transfer bytes*/
-
-    uint32_t rxBuffIfNull; /*!< Used if there is not rxData for DMA purpose.*/
-    uint32_t txBuffIfNull; /*!< Used if there is not txData for DMA purpose.*/
-
-    volatile uint8_t state; /*!< DSPI transfer state , _dspi_transfer_state.*/
-
-    dspi_master_edma_transfer_callback_t callback; /*!< Completion callback. */
-    void *userData;                                /*!< Callback user data. */
-
-    edma_handle_t *edmaRxRegToRxDataHandle;        /*!<edma_handle_t handle point used for RxReg to RxData buff*/
-    edma_handle_t *edmaTxDataToIntermediaryHandle; /*!<edma_handle_t handle point used for TxData to Intermediary*/
-    edma_handle_t *edmaIntermediaryToTxRegHandle;  /*!<edma_handle_t handle point used for Intermediary to TxReg*/
-
-    edma_tcd_t dspiSoftwareTCD[2]; /*!<SoftwareTCD , internal used*/
-};
-
-/*! @brief DSPI slave eDMA transfer handle structure used for transactional API.*/
-struct _dspi_slave_edma_handle
-{
-    uint32_t bitsPerFrame;          /*!< Desired number of bits per frame. */
-    volatile bool isThereExtraByte; /*!< Is there extra byte.*/
-
-    uint8_t *volatile txData;                  /*!< Send buffer. */
-    uint8_t *volatile rxData;                  /*!< Receive buffer. */
-    volatile size_t remainingSendByteCount;    /*!< Number of bytes remaining to send.*/
-    volatile size_t remainingReceiveByteCount; /*!< Number of bytes remaining to receive.*/
-    size_t totalByteCount;                     /*!< Number of transfer bytes*/
-
-    uint32_t rxBuffIfNull; /*!< Used if there is not rxData for DMA purpose.*/
-    uint32_t txBuffIfNull; /*!< Used if there is not txData for DMA purpose.*/
-    uint32_t txLastData;   /*!< Used if there is an extra byte when 16bits per frame for DMA purpose.*/
-
-    volatile uint8_t state; /*!< DSPI transfer state.*/
-
-    uint32_t errorCount; /*!< Error count for slave transfer.*/
-
-    dspi_slave_edma_transfer_callback_t callback; /*!< Completion callback. */
-    void *userData;                               /*!< Callback user data. */
-
-    edma_handle_t *edmaRxRegToRxDataHandle; /*!<edma_handle_t handle point used for RxReg to RxData buff*/
-    edma_handle_t *edmaTxDataToTxRegHandle; /*!<edma_handle_t handle point used for TxData to TxReg*/
-
-    edma_tcd_t dspiSoftwareTCD[2]; /*!<SoftwareTCD , internal used*/
-};
-
-/***********************************************************************************************************************
- * API
- **********************************************************************************************************************/
-#if defined(__cplusplus)
-extern "C" {
-#endif /*_cplusplus*/
-
-/*Transactional APIs*/
-
-/*!
- * @brief Initializes the DSPI master eDMA handle.
- *
- * This function initializes the DSPI eDMA handle which can be used for other DSPI transactional APIs.  Usually, for a
- * specified DSPI instance, user need only call this API once to get the initialized handle.
- *
- * Note that DSPI eDMA has separated (RX and TX as two sources) or shared (RX  and TX are the same source) DMA request source.
- * (1)For the separated DMA request source, enable and set the RX DMAMUX source for edmaRxRegToRxDataHandle and
- * TX DMAMUX source for edmaIntermediaryToTxRegHandle.
- * (2)For the shared DMA request source, enable and set the RX/RX DMAMUX source for the edmaRxRegToRxDataHandle.
- *
- * @param base DSPI peripheral base address.
- * @param handle DSPI handle pointer to dspi_master_edma_handle_t.
- * @param callback DSPI callback.
- * @param userData callback function parameter.
- * @param edmaRxRegToRxDataHandle edmaRxRegToRxDataHandle pointer to edma_handle_t.
- * @param edmaTxDataToIntermediaryHandle edmaTxDataToIntermediaryHandle pointer to edma_handle_t.
- * @param edmaIntermediaryToTxRegHandle edmaIntermediaryToTxRegHandle pointer to edma_handle_t.
- */
-void DSPI_MasterTransferCreateHandleEDMA(SPI_Type *base,
-                                         dspi_master_edma_handle_t *handle,
-                                         dspi_master_edma_transfer_callback_t callback,
-                                         void *userData,
-                                         edma_handle_t *edmaRxRegToRxDataHandle,
-                                         edma_handle_t *edmaTxDataToIntermediaryHandle,
-                                         edma_handle_t *edmaIntermediaryToTxRegHandle);
-
-/*!
- * @brief DSPI master transfer data using eDMA.
- *
- * This function transfer data using eDMA. This is non-blocking function, which returns right away. When all data
- * have been transfer, the callback function is called.
- *
- * @param base DSPI peripheral base address.
- * @param handle pointer to dspi_master_edma_handle_t structure which stores the transfer state.
- * @param transfer pointer to dspi_transfer_t structure.
- * @return status of status_t.
- */
-status_t DSPI_MasterTransferEDMA(SPI_Type *base, dspi_master_edma_handle_t *handle, dspi_transfer_t *transfer);
-
-/*!
- * @brief DSPI master aborts a transfer which using eDMA.
- *
- * This function aborts a transfer which using eDMA.
- *
- * @param base DSPI peripheral base address.
- * @param handle pointer to dspi_master_edma_handle_t structure which stores the transfer state.
- */
-void DSPI_MasterTransferAbortEDMA(SPI_Type *base, dspi_master_edma_handle_t *handle);
-
-/*!
- * @brief Gets the master eDMA transfer count.
- *
- * This function get the master eDMA transfer count.
- *
- * @param base DSPI peripheral base address.
- * @param handle pointer to dspi_master_edma_handle_t structure which stores the transfer state.
- * @param count Number of bytes transferred so far by the non-blocking transaction.
- * @return status of status_t.
- */
-status_t DSPI_MasterTransferGetCountEDMA(SPI_Type *base, dspi_master_edma_handle_t *handle, size_t *count);
-
-/*!
- * @brief Initializes the DSPI slave eDMA handle.
- *
- * This function initializes the DSPI eDMA handle which can be used for other DSPI transactional APIs.  Usually, for a
- * specified DSPI instance, call this API once to get the initialized handle.
- *
- * Note that DSPI eDMA has separated (RN and TX in 2 sources) or shared (RX  and TX are the same source) DMA request source.
- * (1)For the separated DMA request source, enable and set the RX DMAMUX source for edmaRxRegToRxDataHandle and
- * TX DMAMUX source for edmaTxDataToTxRegHandle.
- * (2)For the shared DMA request source,  enable and set the RX/RX DMAMUX source for the edmaRxRegToRxDataHandle.
- *
- * @param base DSPI peripheral base address.
- * @param handle DSPI handle pointer to dspi_slave_edma_handle_t.
- * @param callback DSPI callback.
- * @param userData callback function parameter.
- * @param edmaRxRegToRxDataHandle edmaRxRegToRxDataHandle pointer to edma_handle_t.
- * @param edmaTxDataToTxRegHandle edmaTxDataToTxRegHandle pointer to edma_handle_t.
- */
-void DSPI_SlaveTransferCreateHandleEDMA(SPI_Type *base,
-                                        dspi_slave_edma_handle_t *handle,
-                                        dspi_slave_edma_transfer_callback_t callback,
-                                        void *userData,
-                                        edma_handle_t *edmaRxRegToRxDataHandle,
-                                        edma_handle_t *edmaTxDataToTxRegHandle);
-
-/*!
- * @brief DSPI slave transfer data using eDMA.
- *
- * This function transfer data using eDMA. This is non-blocking function, which returns right away. When all data
- * have been transfer, the callback function is called.
- * Note that slave EDMA transfer cannot support the situation that transfer_size is 1 when the bitsPerFrame is greater
- * than 8 .
-
- * @param base DSPI peripheral base address.
- * @param handle pointer to dspi_slave_edma_handle_t structure which stores the transfer state.
- * @param transfer pointer to dspi_transfer_t structure.
- * @return status of status_t.
- */
-status_t DSPI_SlaveTransferEDMA(SPI_Type *base, dspi_slave_edma_handle_t *handle, dspi_transfer_t *transfer);
-
-/*!
- * @brief DSPI slave aborts a transfer which using eDMA.
- *
- * This function aborts a transfer which using eDMA.
- *
- * @param base DSPI peripheral base address.
- * @param handle pointer to dspi_slave_edma_handle_t structure which stores the transfer state.
- */
-void DSPI_SlaveTransferAbortEDMA(SPI_Type *base, dspi_slave_edma_handle_t *handle);
-
-/*!
- * @brief Gets the slave eDMA transfer count.
- *
- * This function gets the slave eDMA transfer count.
- *
- * @param base DSPI peripheral base address.
- * @param handle pointer to dspi_slave_edma_handle_t structure which stores the transfer state.
- * @param count Number of bytes transferred so far by the non-blocking transaction.
- * @return status of status_t.
- */
-status_t DSPI_SlaveTransferGetCountEDMA(SPI_Type *base, dspi_slave_edma_handle_t *handle, size_t *count);
-
-#if defined(__cplusplus)
-}
-#endif /*_cplusplus*/
-       /*!
-        *@}
-        */
-
-#endif /*_FSL_DSPI_EDMA_H_*/
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_edma.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1313 +0,0 @@
-/*
-* Copyright (c) 2015, Freescale Semiconductor, Inc.
-* All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without modification,
-* are permitted provided that the following conditions are met:
-*
-* o Redistributions of source code must retain the above copyright notice, this list
-*   of conditions and the following disclaimer.
-*
-* o Redistributions in binary form must reproduce the above copyright notice, this
-*   list of conditions and the following disclaimer in the documentation and/or
-*   other materials provided with the distribution.
-*
-* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-*   contributors may be used to endorse or promote products derived from this
-*   software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include "fsl_edma.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-#define EDMA_TRANSFER_ENABLED_MASK 0x80U
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-
-/*!
- * @brief Get instance number for EDMA.
- *
- * @param base EDMA peripheral base address.
- */
-static uint32_t EDMA_GetInstance(DMA_Type *base);
-
-/*!
- * @brief Push content of TCD structure into hardware TCD register.
- *
- * @param base EDMA peripheral base address.
- * @param channel EDMA channel number.
- * @param tcd Point to TCD structure.
- */
-static void EDMA_InstallTCD(DMA_Type *base, uint32_t channel, edma_tcd_t *tcd);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-
-/*! @brief Array to map EDMA instance number to base pointer. */
-static DMA_Type *const s_edmaBases[] = DMA_BASE_PTRS;
-
-/*! @brief Array to map EDMA instance number to clock name. */
-static const clock_ip_name_t s_edmaClockName[] = EDMA_CLOCKS;
-
-/*! @brief Array to map EDMA instance number to IRQ number. */
-static const IRQn_Type s_edmaIRQNumber[] = DMA_CHN_IRQS;
-
-/*! @brief Pointers to transfer handle for each EDMA channel. */
-static edma_handle_t *s_EDMAHandle[FSL_FEATURE_EDMA_MODULE_CHANNEL * FSL_FEATURE_SOC_EDMA_COUNT];
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-
-static uint32_t EDMA_GetInstance(DMA_Type *base)
-{
-    uint32_t instance;
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < FSL_FEATURE_SOC_EDMA_COUNT; instance++)
-    {
-        if (s_edmaBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < FSL_FEATURE_SOC_EDMA_COUNT);
-
-    return instance;
-}
-
-static void EDMA_InstallTCD(DMA_Type *base, uint32_t channel, edma_tcd_t *tcd)
-{
-    assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
-    assert(tcd != NULL);
-    assert(((uint32_t)tcd & 0x1FU) == 0);
-
-    /* Push tcd into hardware TCD register */
-    base->TCD[channel].SADDR = tcd->SADDR;
-    base->TCD[channel].SOFF = tcd->SOFF;
-    base->TCD[channel].ATTR = tcd->ATTR;
-    base->TCD[channel].NBYTES_MLNO = tcd->NBYTES;
-    base->TCD[channel].SLAST = tcd->SLAST;
-    base->TCD[channel].DADDR = tcd->DADDR;
-    base->TCD[channel].DOFF = tcd->DOFF;
-    base->TCD[channel].CITER_ELINKNO = tcd->CITER;
-    base->TCD[channel].DLAST_SGA = tcd->DLAST_SGA;
-    /* Clear DONE bit first, otherwise ESG cannot be set */
-    base->TCD[channel].CSR = 0;
-    base->TCD[channel].CSR = tcd->CSR;
-    base->TCD[channel].BITER_ELINKNO = tcd->BITER;
-}
-
-void EDMA_Init(DMA_Type *base, const edma_config_t *config)
-{
-    assert(config != NULL);
-
-    uint32_t tmpreg;
-
-    /* Ungate EDMA periphral clock */
-    CLOCK_EnableClock(s_edmaClockName[EDMA_GetInstance(base)]);
-    /* Configure EDMA peripheral according to the configuration structure. */
-    tmpreg = base->CR;
-    tmpreg &= ~(DMA_CR_ERCA_MASK | DMA_CR_HOE_MASK | DMA_CR_CLM_MASK | DMA_CR_EDBG_MASK);
-    tmpreg |= (DMA_CR_ERCA(config->enableRoundRobinArbitration) | DMA_CR_HOE(config->enableHaltOnError) |
-               DMA_CR_CLM(config->enableContinuousLinkMode) | DMA_CR_EDBG(config->enableDebugMode) | DMA_CR_EMLM(true));
-    base->CR = tmpreg;
-}
-
-void EDMA_Deinit(DMA_Type *base)
-{
-    /* Gate EDMA periphral clock */
-    CLOCK_DisableClock(s_edmaClockName[EDMA_GetInstance(base)]);
-}
-
-void EDMA_GetDefaultConfig(edma_config_t *config)
-{
-    assert(config != NULL);
-
-    config->enableRoundRobinArbitration = false;
-    config->enableHaltOnError = true;
-    config->enableContinuousLinkMode = false;
-    config->enableDebugMode = false;
-}
-
-void EDMA_ResetChannel(DMA_Type *base, uint32_t channel)
-{
-    assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
-
-    EDMA_TcdReset((edma_tcd_t *)&base->TCD[channel]);
-}
-
-void EDMA_SetTransferConfig(DMA_Type *base, uint32_t channel, const edma_transfer_config_t *config, edma_tcd_t *nextTcd)
-{
-    assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
-    assert(config != NULL);
-    assert(((uint32_t)nextTcd & 0x1FU) == 0);
-
-    EDMA_TcdSetTransferConfig((edma_tcd_t *)&base->TCD[channel], config, nextTcd);
-}
-
-void EDMA_SetMinorOffsetConfig(DMA_Type *base, uint32_t channel, const edma_minor_offset_config_t *config)
-{
-    assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
-    assert(config != NULL);
-
-    uint32_t tmpreg;
-
-    tmpreg = base->TCD[channel].NBYTES_MLOFFYES;
-    tmpreg &= ~(DMA_NBYTES_MLOFFYES_SMLOE_MASK | DMA_NBYTES_MLOFFYES_DMLOE_MASK | DMA_NBYTES_MLOFFYES_MLOFF_MASK);
-    tmpreg |=
-        (DMA_NBYTES_MLOFFYES_SMLOE(config->enableSrcMinorOffset) |
-         DMA_NBYTES_MLOFFYES_DMLOE(config->enableDestMinorOffset) | DMA_NBYTES_MLOFFYES_MLOFF(config->minorOffset));
-    base->TCD[channel].NBYTES_MLOFFYES = tmpreg;
-}
-
-void EDMA_SetChannelLink(DMA_Type *base, uint32_t channel, edma_channel_link_type_t type, uint32_t linkedChannel)
-{
-    assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
-    assert(linkedChannel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
-
-    EDMA_TcdSetChannelLink((edma_tcd_t *)&base->TCD[channel], type, linkedChannel);
-}
-
-void EDMA_SetBandWidth(DMA_Type *base, uint32_t channel, edma_bandwidth_t bandWidth)
-{
-    assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
-
-    base->TCD[channel].CSR = (base->TCD[channel].CSR & (~DMA_CSR_BWC_MASK)) | DMA_CSR_BWC(bandWidth);
-}
-
-void EDMA_SetModulo(DMA_Type *base, uint32_t channel, edma_modulo_t srcModulo, edma_modulo_t destModulo)
-{
-    assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
-
-    uint32_t tmpreg;
-
-    tmpreg = base->TCD[channel].ATTR & (~(DMA_ATTR_SMOD_MASK | DMA_ATTR_DMOD_MASK));
-    base->TCD[channel].ATTR = tmpreg | DMA_ATTR_DMOD(destModulo) | DMA_ATTR_SMOD(srcModulo);
-}
-
-void EDMA_EnableChannelInterrupts(DMA_Type *base, uint32_t channel, uint32_t mask)
-{
-    assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
-
-    /* Enable error interrupt */
-    if (mask & kEDMA_ErrorInterruptEnable)
-    {
-        base->EEI |= (0x1U << channel);
-    }
-
-    /* Enable Major interrupt */
-    if (mask & kEDMA_MajorInterruptEnable)
-    {
-        base->TCD[channel].CSR |= DMA_CSR_INTMAJOR_MASK;
-    }
-
-    /* Enable Half major interrupt */
-    if (mask & kEDMA_HalfInterruptEnable)
-    {
-        base->TCD[channel].CSR |= DMA_CSR_INTHALF_MASK;
-    }
-}
-
-void EDMA_DisableChannelInterrupts(DMA_Type *base, uint32_t channel, uint32_t mask)
-{
-    assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
-
-    /* Disable error interrupt */
-    if (mask & kEDMA_ErrorInterruptEnable)
-    {
-        base->EEI &= ~(0x1U << channel);
-    }
-
-    /* Disable Major interrupt */
-    if (mask & kEDMA_MajorInterruptEnable)
-    {
-        base->TCD[channel].CSR &= ~DMA_CSR_INTMAJOR_MASK;
-    }
-
-    /* Disable Half major interrupt */
-    if (mask & kEDMA_HalfInterruptEnable)
-    {
-        base->TCD[channel].CSR &= ~DMA_CSR_INTHALF_MASK;
-    }
-}
-
-void EDMA_TcdReset(edma_tcd_t *tcd)
-{
-    assert(tcd != NULL);
-    assert(((uint32_t)tcd & 0x1FU) == 0);
-
-    /* Reset channel TCD */
-    tcd->SADDR = 0U;
-    tcd->SOFF = 0U;
-    tcd->ATTR = 0U;
-    tcd->NBYTES = 0U;
-    tcd->SLAST = 0U;
-    tcd->DADDR = 0U;
-    tcd->DOFF = 0U;
-    tcd->CITER = 0U;
-    tcd->DLAST_SGA = 0U;
-    /* Enable auto disable request feature */
-    tcd->CSR = DMA_CSR_DREQ(true);
-    tcd->BITER = 0U;
-}
-
-void EDMA_TcdSetTransferConfig(edma_tcd_t *tcd, const edma_transfer_config_t *config, edma_tcd_t *nextTcd)
-{
-    assert(tcd != NULL);
-    assert(((uint32_t)tcd & 0x1FU) == 0);
-    assert(config != NULL);
-    assert(((uint32_t)nextTcd & 0x1FU) == 0);
-
-    /* source address */
-    tcd->SADDR = config->srcAddr;
-    /* destination address */
-    tcd->DADDR = config->destAddr;
-    /* Source data and destination data transfer size */
-    tcd->ATTR = DMA_ATTR_SSIZE(config->srcTransferSize) | DMA_ATTR_DSIZE(config->destTransferSize);
-    /* Source address signed offset */
-    tcd->SOFF = config->srcOffset;
-    /* Destination address signed offset */
-    tcd->DOFF = config->destOffset;
-    /* Minor byte transfer count */
-    tcd->NBYTES = config->minorLoopBytes;
-    /* Current major iteration count */
-    tcd->CITER = config->majorLoopCounts;
-    /* Starting major iteration count */
-    tcd->BITER = config->majorLoopCounts;
-    /* Enable scatter/gather processing */
-    if (nextTcd != NULL)
-    {
-        tcd->DLAST_SGA = (uint32_t)nextTcd;
-        /*
-            Before call EDMA_TcdSetTransferConfig or EDMA_SetTransferConfig,
-            user must call EDMA_TcdReset or EDMA_ResetChannel which will set
-            DREQ, so must use "|" or "&" rather than "=".
-
-            Clear the DREQ bit because scatter gather has been enabled, so the
-            previous transfer is not the last transfer, and channel request should
-            be enabled at the next transfer(the next TCD).
-        */
-        tcd->CSR = (tcd->CSR | DMA_CSR_ESG_MASK) & ~DMA_CSR_DREQ_MASK;
-    }
-}
-
-void EDMA_TcdSetMinorOffsetConfig(edma_tcd_t *tcd, const edma_minor_offset_config_t *config)
-{
-    assert(tcd != NULL);
-    assert(((uint32_t)tcd & 0x1FU) == 0);
-
-    uint32_t tmpreg;
-
-    tmpreg = tcd->NBYTES &
-             ~(DMA_NBYTES_MLOFFYES_SMLOE_MASK | DMA_NBYTES_MLOFFYES_DMLOE_MASK | DMA_NBYTES_MLOFFYES_MLOFF_MASK);
-    tmpreg |=
-        (DMA_NBYTES_MLOFFYES_SMLOE(config->enableSrcMinorOffset) |
-         DMA_NBYTES_MLOFFYES_DMLOE(config->enableDestMinorOffset) | DMA_NBYTES_MLOFFYES_MLOFF(config->minorOffset));
-    tcd->NBYTES = tmpreg;
-}
-
-void EDMA_TcdSetChannelLink(edma_tcd_t *tcd, edma_channel_link_type_t type, uint32_t linkedChannel)
-{
-    assert(tcd != NULL);
-    assert(((uint32_t)tcd & 0x1FU) == 0);
-    assert(linkedChannel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
-
-    if (type == kEDMA_MinorLink) /* Minor link config */
-    {
-        uint32_t tmpreg;
-
-        /* Enable minor link */
-        tcd->CITER |= DMA_CITER_ELINKYES_ELINK_MASK;
-        tcd->BITER |= DMA_BITER_ELINKYES_ELINK_MASK;
-        /* Set likned channel */
-        tmpreg = tcd->CITER & (~DMA_CITER_ELINKYES_LINKCH_MASK);
-        tmpreg |= DMA_CITER_ELINKYES_LINKCH(linkedChannel);
-        tcd->CITER = tmpreg;
-        tmpreg = tcd->BITER & (~DMA_BITER_ELINKYES_LINKCH_MASK);
-        tmpreg |= DMA_BITER_ELINKYES_LINKCH(linkedChannel);
-        tcd->BITER = tmpreg;
-    }
-    else if (type == kEDMA_MajorLink) /* Major link config */
-    {
-        uint32_t tmpreg;
-
-        /* Enable major link */
-        tcd->CSR |= DMA_CSR_MAJORELINK_MASK;
-        /* Set major linked channel */
-        tmpreg = tcd->CSR & (~DMA_CSR_MAJORLINKCH_MASK);
-        tcd->CSR = tmpreg | DMA_CSR_MAJORLINKCH(linkedChannel);
-    }
-    else /* Link none */
-    {
-        tcd->CITER &= ~DMA_CITER_ELINKYES_ELINK_MASK;
-        tcd->BITER &= ~DMA_BITER_ELINKYES_ELINK_MASK;
-        tcd->CSR &= ~DMA_CSR_MAJORELINK_MASK;
-    }
-}
-
-void EDMA_TcdSetModulo(edma_tcd_t *tcd, edma_modulo_t srcModulo, edma_modulo_t destModulo)
-{
-    assert(tcd != NULL);
-    assert(((uint32_t)tcd & 0x1FU) == 0);
-
-    uint32_t tmpreg;
-
-    tmpreg = tcd->ATTR & (~(DMA_ATTR_SMOD_MASK | DMA_ATTR_DMOD_MASK));
-    tcd->ATTR = tmpreg | DMA_ATTR_DMOD(destModulo) | DMA_ATTR_SMOD(srcModulo);
-}
-
-void EDMA_TcdEnableInterrupts(edma_tcd_t *tcd, uint32_t mask)
-{
-    assert(tcd != NULL);
-
-    /* Enable Major interrupt */
-    if (mask & kEDMA_MajorInterruptEnable)
-    {
-        tcd->CSR |= DMA_CSR_INTMAJOR_MASK;
-    }
-
-    /* Enable Half major interrupt */
-    if (mask & kEDMA_HalfInterruptEnable)
-    {
-        tcd->CSR |= DMA_CSR_INTHALF_MASK;
-    }
-}
-
-void EDMA_TcdDisableInterrupts(edma_tcd_t *tcd, uint32_t mask)
-{
-    assert(tcd != NULL);
-
-    /* Disable Major interrupt */
-    if (mask & kEDMA_MajorInterruptEnable)
-    {
-        tcd->CSR &= ~DMA_CSR_INTMAJOR_MASK;
-    }
-
-    /* Disable Half major interrupt */
-    if (mask & kEDMA_HalfInterruptEnable)
-    {
-        tcd->CSR &= ~DMA_CSR_INTHALF_MASK;
-    }
-}
-
-uint32_t EDMA_GetRemainingBytes(DMA_Type *base, uint32_t channel)
-{
-    assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
-
-    uint32_t nbytes = 0;
-    uint32_t remainingBytes = 0;
-
-    if (DMA_CSR_DONE_MASK & base->TCD[channel].CSR)
-    {
-        remainingBytes = 0;
-    }
-    else
-    {
-        /* Calculate the nbytes */
-        if (base->TCD[channel].NBYTES_MLOFFYES & (DMA_NBYTES_MLOFFYES_SMLOE_MASK | DMA_NBYTES_MLOFFYES_DMLOE_MASK))
-        {
-            nbytes = (base->TCD[channel].NBYTES_MLOFFYES & DMA_NBYTES_MLOFFYES_NBYTES_MASK) >>
-                     DMA_NBYTES_MLOFFYES_NBYTES_SHIFT;
-        }
-        else
-        {
-            nbytes =
-                (base->TCD[channel].NBYTES_MLOFFNO & DMA_NBYTES_MLOFFNO_NBYTES_MASK) >> DMA_NBYTES_MLOFFNO_NBYTES_SHIFT;
-        }
-        /* Calculate the unfinished bytes */
-        if (base->TCD[channel].CITER_ELINKNO & DMA_CITER_ELINKNO_ELINK_MASK)
-        {
-            remainingBytes = ((base->TCD[channel].CITER_ELINKYES & DMA_CITER_ELINKYES_CITER_MASK) >>
-                              DMA_CITER_ELINKYES_CITER_SHIFT) *
-                             nbytes;
-        }
-        else
-        {
-            remainingBytes =
-                ((base->TCD[channel].CITER_ELINKNO & DMA_CITER_ELINKNO_CITER_MASK) >> DMA_CITER_ELINKNO_CITER_SHIFT) *
-                nbytes;
-        }
-    }
-
-    return remainingBytes;
-}
-
-uint32_t EDMA_GetChannelStatusFlags(DMA_Type *base, uint32_t channel)
-{
-    assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
-
-    uint32_t retval = 0;
-
-    /* Get DONE bit flag */
-    retval |= ((base->TCD[channel].CSR & DMA_CSR_DONE_MASK) >> DMA_CSR_DONE_SHIFT);
-    /* Get ERROR bit flag */
-    retval |= (((base->ERR >> channel) & 0x1U) << 1U);
-    /* Get INT bit flag */
-    retval |= (((base->INT >> channel) & 0x1U) << 2U);
-
-    return retval;
-}
-
-void EDMA_ClearChannelStatusFlags(DMA_Type *base, uint32_t channel, uint32_t mask)
-{
-    assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
-
-    /* Clear DONE bit flag */
-    if (mask & kEDMA_DoneFlag)
-    {
-        base->CDNE = channel;
-    }
-    /* Clear ERROR bit flag */
-    if (mask & kEDMA_ErrorFlag)
-    {
-        base->CERR = channel;
-    }
-    /* Clear INT bit flag */
-    if (mask & kEDMA_InterruptFlag)
-    {
-        base->CINT = channel;
-    }
-}
-
-void EDMA_CreateHandle(edma_handle_t *handle, DMA_Type *base, uint32_t channel)
-{
-    assert(handle != NULL);
-    assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
-
-    uint32_t edmaInstance;
-    uint32_t channelIndex;
-    edma_tcd_t *tcdRegs;
-
-    handle->base = base;
-    handle->channel = channel;
-    /* Get the DMA instance number */
-    edmaInstance = EDMA_GetInstance(base);
-    channelIndex = (edmaInstance * FSL_FEATURE_EDMA_MODULE_CHANNEL) + channel;
-    s_EDMAHandle[channelIndex] = handle;
-    /* Enable NVIC interrupt */
-    EnableIRQ(s_edmaIRQNumber[channelIndex]);
-    /*
-       Reset TCD registers to zero. Unlike the EDMA_TcdReset(DREQ will be set),
-       CSR will be 0. Because in order to suit EDMA busy check mechanism in
-       EDMA_SubmitTransfer, CSR must be set 0.
-    */
-    tcdRegs = (edma_tcd_t *)&handle->base->TCD[handle->channel];
-    tcdRegs->SADDR = 0;
-    tcdRegs->SOFF = 0;
-    tcdRegs->ATTR = 0;
-    tcdRegs->NBYTES = 0;
-    tcdRegs->SLAST = 0;
-    tcdRegs->DADDR = 0;
-    tcdRegs->DOFF = 0;
-    tcdRegs->CITER = 0;
-    tcdRegs->DLAST_SGA = 0;
-    tcdRegs->CSR = 0;
-    tcdRegs->BITER = 0;
-}
-
-void EDMA_InstallTCDMemory(edma_handle_t *handle, edma_tcd_t *tcdPool, uint32_t tcdSize)
-{
-    assert(handle != NULL);
-    assert(((uint32_t)tcdPool & 0x1FU) == 0);
-
-    /* Initialize tcd queue attibute. */
-    handle->header = 0;
-    handle->tail = 0;
-    handle->tcdUsed = 0;
-    handle->tcdSize = tcdSize;
-    handle->flags = 0;
-    handle->tcdPool = tcdPool;
-}
-
-void EDMA_SetCallback(edma_handle_t *handle, edma_callback callback, void *userData)
-{
-    assert(handle != NULL);
-
-    handle->callback = callback;
-    handle->userData = userData;
-}
-
-void EDMA_PrepareTransfer(edma_transfer_config_t *config,
-                          void *srcAddr,
-                          uint32_t srcWidth,
-                          void *destAddr,
-                          uint32_t destWidth,
-                          uint32_t bytesEachRequest,
-                          uint32_t transferBytes,
-                          edma_transfer_type_t type)
-{
-    assert(config != NULL);
-    assert(srcAddr != NULL);
-    assert(destAddr != NULL);
-    assert(srcWidth == 1U || srcWidth == 2U || srcWidth == 4U || srcWidth == 16U || srcWidth == 32U);
-    assert(destWidth == 1U || destWidth == 2U || destWidth == 4U || destWidth == 16U || destWidth == 32U);
-    assert(transferBytes % bytesEachRequest == 0);
-
-    config->destAddr = (uint32_t)destAddr;
-    config->srcAddr = (uint32_t)srcAddr;
-    config->minorLoopBytes = bytesEachRequest;
-    config->majorLoopCounts = transferBytes / bytesEachRequest;
-    switch (srcWidth)
-    {
-        case 1U:
-            config->srcTransferSize = kEDMA_TransferSize1Bytes;
-            break;
-        case 2U:
-            config->srcTransferSize = kEDMA_TransferSize2Bytes;
-            break;
-        case 4U:
-            config->srcTransferSize = kEDMA_TransferSize4Bytes;
-            break;
-        case 16U:
-            config->srcTransferSize = kEDMA_TransferSize16Bytes;
-            break;
-        case 32U:
-            config->srcTransferSize = kEDMA_TransferSize32Bytes;
-            break;
-        default:
-            break;
-    }
-    switch (destWidth)
-    {
-        case 1U:
-            config->destTransferSize = kEDMA_TransferSize1Bytes;
-            break;
-        case 2U:
-            config->destTransferSize = kEDMA_TransferSize2Bytes;
-            break;
-        case 4U:
-            config->destTransferSize = kEDMA_TransferSize4Bytes;
-            break;
-        case 16U:
-            config->destTransferSize = kEDMA_TransferSize16Bytes;
-            break;
-        case 32U:
-            config->destTransferSize = kEDMA_TransferSize32Bytes;
-            break;
-        default:
-            break;
-    }
-    switch (type)
-    {
-        case kEDMA_MemoryToMemory:
-            config->destOffset = destWidth;
-            config->srcOffset = srcWidth;
-            break;
-        case kEDMA_MemoryToPeripheral:
-            config->destOffset = 0U;
-            config->srcOffset = srcWidth;
-            break;
-        case kEDMA_PeripheralToMemory:
-            config->destOffset = destWidth;
-            config->srcOffset = 0U;
-            break;
-        default:
-            break;
-    }
-}
-
-status_t EDMA_SubmitTransfer(edma_handle_t *handle, const edma_transfer_config_t *config)
-{
-    assert(handle != NULL);
-    assert(config != NULL);
-
-    edma_tcd_t *tcdRegs = (edma_tcd_t *)&handle->base->TCD[handle->channel];
-
-    if (handle->tcdPool == NULL)
-    {
-        /*
-            Check if EDMA is busy: if the given channel started transfer, CSR will be not zero. Because
-            if it is the last transfer, DREQ will be set. If not, ESG will be set. So in order to suit
-            this check mechanism, EDMA_CreatHandle will clear CSR register.
-        */
-        if ((tcdRegs->CSR != 0) && ((tcdRegs->CSR & DMA_CSR_DONE_MASK) == 0))
-        {
-            return kStatus_EDMA_Busy;
-        }
-        else
-        {
-            EDMA_SetTransferConfig(handle->base, handle->channel, config, NULL);
-            /* Enable auto disable request feature */
-            handle->base->TCD[handle->channel].CSR |= DMA_CSR_DREQ_MASK;
-            /* Enable major interrupt */
-            handle->base->TCD[handle->channel].CSR |= DMA_CSR_INTMAJOR_MASK;
-
-            return kStatus_Success;
-        }
-    }
-    else /* Use the TCD queue. */
-    {
-        uint32_t primask;
-        uint32_t csr;
-        int8_t currentTcd;
-        int8_t previousTcd;
-        int8_t nextTcd;
-
-        /* Check if tcd pool is full. */
-        primask = DisableGlobalIRQ();
-        if (handle->tcdUsed >= handle->tcdSize)
-        {
-            EnableGlobalIRQ(primask);
-
-            return kStatus_EDMA_QueueFull;
-        }
-        currentTcd = handle->tail;
-        handle->tcdUsed++;
-        /* Calculate index of next TCD */
-        nextTcd = currentTcd + 1U;
-        if (nextTcd == handle->tcdSize)
-        {
-            nextTcd = 0U;
-        }
-        /* Advance queue tail index */
-        handle->tail = nextTcd;
-        EnableGlobalIRQ(primask);
-        /* Calculate index of previous TCD */
-        previousTcd = currentTcd ? currentTcd - 1U : handle->tcdSize - 1U;
-        /* Configure current TCD block. */
-        EDMA_TcdReset(&handle->tcdPool[currentTcd]);
-        EDMA_TcdSetTransferConfig(&handle->tcdPool[currentTcd], config, NULL);
-        /* Enable major interrupt */
-        handle->tcdPool[currentTcd].CSR |= DMA_CSR_INTMAJOR_MASK;
-        /* Link current TCD with next TCD for identification of current TCD */
-        handle->tcdPool[currentTcd].DLAST_SGA = (uint32_t)&handle->tcdPool[nextTcd];
-        /* Chain from previous descriptor unless tcd pool size is 1(this descriptor is its own predecessor). */
-        if (currentTcd != previousTcd)
-        {
-            /* Enable scatter/gather feature in the previous TCD block. */
-            csr = (handle->tcdPool[previousTcd].CSR | DMA_CSR_ESG_MASK) & ~DMA_CSR_DREQ_MASK;
-            handle->tcdPool[previousTcd].CSR = csr;
-            /*
-                Check if the TCD blcok in the registers is the previous one (points to current TCD block). It
-                is used to check if the previous TCD linked has been loaded in TCD register. If so, it need to
-                link the TCD register in case link the current TCD with the dead chain when TCD loading occurs
-                before link the previous TCD block.
-            */
-            if (tcdRegs->DLAST_SGA == (uint32_t)&handle->tcdPool[currentTcd])
-            {
-                /* Enable scatter/gather also in the TCD registers. */
-                csr = (tcdRegs->CSR | DMA_CSR_ESG_MASK) & ~DMA_CSR_DREQ_MASK;
-                /* Must write the CSR register one-time, because the transfer maybe finished anytime. */
-                tcdRegs->CSR = csr;
-                /*
-                    It is very important to check the ESG bit!
-                    Because this hardware design: if DONE bit is set, the ESG bit can not be set. So it can
-                    be used to check if the dynamic TCD link operation is successful. If ESG bit is not set
-                    and the DLAST_SGA is not the next TCD address(it means the dynamic TCD link succeed and
-                    the current TCD block has been loaded into TCD registers), it means transfer finished
-                    and TCD link operation fail, so must install TCD content into TCD registers and enable
-                    transfer again. And if ESG is set, it means transfer has notfinished, so TCD dynamic
-                    link succeed.
-                */
-                if (tcdRegs->CSR & DMA_CSR_ESG_MASK)
-                {
-                    return kStatus_Success;
-                }
-                /*
-                    Check whether the current TCD block is already loaded in the TCD registers. It is another
-                    condition when ESG bit is not set: it means the dynamic TCD link succeed and the current
-                    TCD block has been loaded into TCD registers.
-                */
-                if (tcdRegs->DLAST_SGA == (uint32_t)&handle->tcdPool[nextTcd])
-                {
-                    return kStatus_Success;
-                }
-                /*
-                    If go to this, means the previous transfer finished, and the DONE bit is set.
-                    So shall configure TCD registers.
-                */
-            }
-            else if (tcdRegs->DLAST_SGA != 0)
-            {
-                /* The current TCD block has been linked successfully. */
-                return kStatus_Success;
-            }
-            else
-            {
-                /*
-                    DLAST_SGA is 0 and it means the first submit transfer, so shall configure
-                    TCD registers.
-                */
-            }
-        }
-        /* There is no live chain, TCD block need to be installed in TCD registers. */
-        EDMA_InstallTCD(handle->base, handle->channel, &handle->tcdPool[currentTcd]);
-        /* Enable channel request again. */
-        if (handle->flags & EDMA_TRANSFER_ENABLED_MASK)
-        {
-            handle->base->SERQ = DMA_SERQ_SERQ(handle->channel);
-        }
-
-        return kStatus_Success;
-    }
-}
-
-void EDMA_StartTransfer(edma_handle_t *handle)
-{
-    assert(handle != NULL);
-
-    if (handle->tcdPool == NULL)
-    {
-        handle->base->SERQ = DMA_SERQ_SERQ(handle->channel);
-    }
-    else /* Use the TCD queue. */
-    {
-        uint32_t primask;
-        edma_tcd_t *tcdRegs = (edma_tcd_t *)&handle->base->TCD[handle->channel];
-
-        handle->flags |= EDMA_TRANSFER_ENABLED_MASK;
-
-        /* Check if there was at least one descriptor submitted since reset (TCD in registers is valid) */
-        if (tcdRegs->DLAST_SGA != 0U)
-        {
-            primask = DisableGlobalIRQ();
-            /* Check if channel request is actually disable. */
-            if ((handle->base->ERQ & (1U << handle->channel)) == 0U)
-            {
-                /* Check if transfer is paused. */
-                if ((!(tcdRegs->CSR & DMA_CSR_DONE_MASK)) || (tcdRegs->CSR & DMA_CSR_ESG_MASK))
-                {
-                    /*
-                        Re-enable channel request must be as soon as possible, so must put it into
-                        critical section to avoid task switching or interrupt service routine.
-                    */
-                    handle->base->SERQ = DMA_SERQ_SERQ(handle->channel);
-                }
-            }
-            EnableGlobalIRQ(primask);
-        }
-    }
-}
-
-void EDMA_StopTransfer(edma_handle_t *handle)
-{
-    assert(handle != NULL);
-
-    handle->flags &= (~EDMA_TRANSFER_ENABLED_MASK);
-    handle->base->CERQ = DMA_CERQ_CERQ(handle->channel);
-}
-
-void EDMA_AbortTransfer(edma_handle_t *handle)
-{
-    handle->base->CERQ = DMA_CERQ_CERQ(handle->channel);
-    /*
-        Clear CSR to release channel. Because if the given channel started transfer,
-        CSR will be not zero. Because if it is the last transfer, DREQ will be set.
-        If not, ESG will be set.
-    */
-    handle->base->TCD[handle->channel].CSR = 0;
-    /* Cancel all next TCD transfer. */
-    handle->base->TCD[handle->channel].DLAST_SGA = 0;
-}
-
-void EDMA_HandleIRQ(edma_handle_t *handle)
-{
-    assert(handle != NULL);
-
-    /* Clear EDMA interrupt flag */
-    handle->base->CINT = handle->channel;
-    if (handle->tcdPool == NULL)
-    {
-        (handle->callback)(handle, handle->userData, true, 0);
-    }
-    else /* Use the TCD queue. */
-    {
-        uint32_t sga = handle->base->TCD[handle->channel].DLAST_SGA;
-        uint32_t sga_index;
-        int32_t tcds_done;
-        uint8_t new_header;
-        bool transfer_done;
-
-        /* Check if transfer is already finished. */
-        transfer_done = ((handle->base->TCD[handle->channel].CSR & DMA_CSR_DONE_MASK) != 0);
-        /* Get the offset of the current transfer TCD blcoks. */
-        sga -= (uint32_t)handle->tcdPool;
-        /* Get the index of the current transfer TCD blcoks. */
-        sga_index = sga / sizeof(edma_tcd_t);
-        /* Adjust header positions. */
-        if (transfer_done)
-        {
-            /* New header shall point to the next TCD (current one is already finished) */
-            new_header = sga_index;
-        }
-        else
-        {
-            /* New header shall point to this descriptor (not finished yet) */
-            new_header = sga_index ? sga_index - 1U : handle->tcdSize - 1U;
-        }
-        /* Calculate the number of finished TCDs */
-        if (new_header == handle->header)
-        {
-            if (handle->tcdUsed == handle->tcdSize)
-            {
-                tcds_done = handle->tcdUsed;
-            }
-            else
-            {
-                /* Internal error occurs. */
-                tcds_done = 0;
-            }
-        }
-        else
-        {
-            tcds_done = new_header - handle->header;
-            if (tcds_done < 0)
-            {
-                tcds_done += handle->tcdSize;
-            }
-        }
-        /* Advance header to the point beyond the last finished TCD block. */
-        handle->header = new_header;
-        /* Release TCD blocks. */
-        handle->tcdUsed -= tcds_done;
-        /* Invoke callback function. */
-        if (handle->callback)
-        {
-            (handle->callback)(handle, handle->userData, transfer_done, tcds_done);
-        }
-    }
-}
-
-/* 8 channels (Shared): kl28 */
-#if defined(FSL_FEATURE_EDMA_MODULE_CHANNEL) && FSL_FEATURE_EDMA_MODULE_CHANNEL == 8U
-
-void DMA0_04_DriverIRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 0U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[0]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 4U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[4]);
-    }
-}
-
-void DMA0_15_DriverIRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 1U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[1]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 5U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[5]);
-    }
-}
-
-void DMA0_26_DriverIRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 2U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[2]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 6U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[6]);
-    }
-}
-
-void DMA0_37_DriverIRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 3U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[3]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 7U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[7]);
-    }
-}
-#endif /* 8 channels (Shared) */
-
-/* 32 channels (Shared): k80 */
-#if defined(FSL_FEATURE_EDMA_MODULE_CHANNEL) && FSL_FEATURE_EDMA_MODULE_CHANNEL == 32U
-
-void DMA0_DMA16_IRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 0U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[0]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 16U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[16]);
-    }
-}
-
-void DMA1_DMA17_IRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 1U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[1]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 17U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[17]);
-    }
-}
-
-void DMA2_DMA18_IRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 2U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[2]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 18U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[18]);
-    }
-}
-
-void DMA3_DMA19_IRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 3U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[3]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 19U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[19]);
-    }
-}
-
-void DMA4_DMA20_IRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 4U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[4]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 20U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[20]);
-    }
-}
-
-void DMA5_DMA21_IRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 5U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[5]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 21U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[21]);
-    }
-}
-
-void DMA6_DMA22_IRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 6U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[6]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 22U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[22]);
-    }
-}
-
-void DMA7_DMA23_IRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 7U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[7]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 23U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[23]);
-    }
-}
-
-void DMA8_DMA24_IRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 8U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[8]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 24U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[24]);
-    }
-}
-
-void DMA9_DMA25_IRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 9U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[9]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 25U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[25]);
-    }
-}
-
-void DMA10_DMA26_IRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 10U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[10]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 26U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[26]);
-    }
-}
-
-void DMA11_DMA27_IRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 11U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[11]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 27U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[27]);
-    }
-}
-
-void DMA12_DMA28_IRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 12U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[12]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 28U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[28]);
-    }
-}
-
-void DMA13_DMA29_IRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 13U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[13]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 29U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[29]);
-    }
-}
-
-void DMA14_DMA30_IRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 14U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[14]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 30U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[30]);
-    }
-}
-
-void DMA15_DMA31_IRQHandler(void)
-{
-    if ((EDMA_GetChannelStatusFlags(DMA0, 15U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[15]);
-    }
-    if ((EDMA_GetChannelStatusFlags(DMA0, 31U) & kEDMA_InterruptFlag) != 0U)
-    {
-        EDMA_HandleIRQ(s_EDMAHandle[31]);
-    }
-}
-#endif /* 32 channels (Shared) */
-
-/* 4 channels (No Shared): kv10  */
-#if defined(FSL_FEATURE_EDMA_MODULE_CHANNEL) && FSL_FEATURE_EDMA_MODULE_CHANNEL > 0
-
-void DMA0_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[0]);
-}
-
-void DMA1_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[1]);
-}
-
-void DMA2_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[2]);
-}
-
-void DMA3_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[3]);
-}
-
-/* 8 channels (No Shared) */
-#if defined(FSL_FEATURE_EDMA_MODULE_CHANNEL) && FSL_FEATURE_EDMA_MODULE_CHANNEL > 4U
-
-void DMA4_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[4]);
-}
-
-void DMA5_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[5]);
-}
-
-void DMA6_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[6]);
-}
-
-void DMA7_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[7]);
-}
-#endif /* FSL_FEATURE_EDMA_MODULE_CHANNEL == 8 */
-
-/* 16 channels (No Shared) */
-#if defined(FSL_FEATURE_EDMA_MODULE_CHANNEL) && FSL_FEATURE_EDMA_MODULE_CHANNEL > 8U
-
-void DMA8_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[8]);
-}
-
-void DMA9_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[9]);
-}
-
-void DMA10_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[10]);
-}
-
-void DMA11_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[11]);
-}
-
-void DMA12_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[12]);
-}
-
-void DMA13_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[13]);
-}
-
-void DMA14_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[14]);
-}
-
-void DMA15_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[15]);
-}
-#endif /* FSL_FEATURE_EDMA_MODULE_CHANNEL == 16 */
-
-/* 32 channels (No Shared) */
-#if defined(FSL_FEATURE_EDMA_MODULE_CHANNEL) && FSL_FEATURE_EDMA_MODULE_CHANNEL > 16U
-
-void DMA16_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[16]);
-}
-
-void DMA17_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[17]);
-}
-
-void DMA18_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[18]);
-}
-
-void DMA19_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[19]);
-}
-
-void DMA20_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[20]);
-}
-
-void DMA21_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[21]);
-}
-
-void DMA22_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[22]);
-}
-
-void DMA23_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[23]);
-}
-
-void DMA24_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[24]);
-}
-
-void DMA25_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[25]);
-}
-
-void DMA26_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[26]);
-}
-
-void DMA27_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[27]);
-}
-
-void DMA28_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[28]);
-}
-
-void DMA29_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[29]);
-}
-
-void DMA30_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[30]);
-}
-
-void DMA31_DriverIRQHandler(void)
-{
-    EDMA_HandleIRQ(s_EDMAHandle[31]);
-}
-#endif /* FSL_FEATURE_EDMA_MODULE_CHANNEL == 32 */
-
-#endif /* 4/8/16/32 channels (No Shared)  */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_edma.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,879 +0,0 @@
-/*
-* Copyright (c) 2015, Freescale Semiconductor, Inc.
-* All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without modification,
-* are permitted provided that the following conditions are met:
-*
-* o Redistributions of source code must retain the above copyright notice, this list
-*   of conditions and the following disclaimer.
-*
-* o Redistributions in binary form must reproduce the above copyright notice, this
-*   list of conditions and the following disclaimer in the documentation and/or
-*   other materials provided with the distribution.
-*
-* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-*   contributors may be used to endorse or promote products derived from this
-*   software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef _FSL_EDMA_H_
-#define _FSL_EDMA_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup edma_driver
- * @{
- */
-
-/*! @file */
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief eDMA driver version */
-#define FSL_EDMA_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) /*!< Version 2.0.0. */
-/*@}*/
-
-/*! @brief Compute the offset unit from DCHPRI3 */
-#define DMA_DCHPRI_INDEX(channel) (((channel) & ~0x03U) | (3 - ((channel)&0x03U)))
-
-/*! @brief Get the pointer of DCHPRIn */
-#define DMA_DCHPRIn(base, channel) ((volatile uint8_t *)&(base->DCHPRI3))[DMA_DCHPRI_INDEX(channel)]
-
-/*! @brief eDMA transfer configuration */
-typedef enum _edma_transfer_size
-{
-    kEDMA_TransferSize1Bytes = 0x0U,  /*!< Source/Destination data transfer size is 1 byte every time */
-    kEDMA_TransferSize2Bytes = 0x1U,  /*!< Source/Destination data transfer size is 2 bytes every time */
-    kEDMA_TransferSize4Bytes = 0x2U,  /*!< Source/Destination data transfer size is 4 bytes every time */
-    kEDMA_TransferSize16Bytes = 0x4U, /*!< Source/Destination data transfer size is 16 bytes every time */
-    kEDMA_TransferSize32Bytes = 0x5U, /*!< Source/Destination data transfer size is 32 bytes every time */
-} edma_transfer_size_t;
-
-/*! @brief eDMA modulo configuration */
-typedef enum _edma_modulo
-{
-    kEDMA_ModuloDisable = 0x0U, /*!< Disable modulo */
-    kEDMA_Modulo2bytes,         /*!< Circular buffer size is 2 bytes. */
-    kEDMA_Modulo4bytes,         /*!< Circular buffer size is 4 bytes. */
-    kEDMA_Modulo8bytes,         /*!< Circular buffer size is 8 bytes. */
-    kEDMA_Modulo16bytes,        /*!< Circular buffer size is 16 bytes. */
-    kEDMA_Modulo32bytes,        /*!< Circular buffer size is 32 bytes. */
-    kEDMA_Modulo64bytes,        /*!< Circular buffer size is 64 bytes. */
-    kEDMA_Modulo128bytes,       /*!< Circular buffer size is 128 bytes. */
-    kEDMA_Modulo256bytes,       /*!< Circular buffer size is 256 bytes. */
-    kEDMA_Modulo512bytes,       /*!< Circular buffer size is 512 bytes. */
-    kEDMA_Modulo1Kbytes,        /*!< Circular buffer size is 1K bytes. */
-    kEDMA_Modulo2Kbytes,        /*!< Circular buffer size is 2K bytes. */
-    kEDMA_Modulo4Kbytes,        /*!< Circular buffer size is 4K bytes. */
-    kEDMA_Modulo8Kbytes,        /*!< Circular buffer size is 8K bytes. */
-    kEDMA_Modulo16Kbytes,       /*!< Circular buffer size is 16K bytes. */
-    kEDMA_Modulo32Kbytes,       /*!< Circular buffer size is 32K bytes. */
-    kEDMA_Modulo64Kbytes,       /*!< Circular buffer size is 64K bytes. */
-    kEDMA_Modulo128Kbytes,      /*!< Circular buffer size is 128K bytes. */
-    kEDMA_Modulo256Kbytes,      /*!< Circular buffer size is 256K bytes. */
-    kEDMA_Modulo512Kbytes,      /*!< Circular buffer size is 512K bytes. */
-    kEDMA_Modulo1Mbytes,        /*!< Circular buffer size is 1M bytes. */
-    kEDMA_Modulo2Mbytes,        /*!< Circular buffer size is 2M bytes. */
-    kEDMA_Modulo4Mbytes,        /*!< Circular buffer size is 4M bytes. */
-    kEDMA_Modulo8Mbytes,        /*!< Circular buffer size is 8M bytes. */
-    kEDMA_Modulo16Mbytes,       /*!< Circular buffer size is 16M bytes. */
-    kEDMA_Modulo32Mbytes,       /*!< Circular buffer size is 32M bytes. */
-    kEDMA_Modulo64Mbytes,       /*!< Circular buffer size is 64M bytes. */
-    kEDMA_Modulo128Mbytes,      /*!< Circular buffer size is 128M bytes. */
-    kEDMA_Modulo256Mbytes,      /*!< Circular buffer size is 256M bytes. */
-    kEDMA_Modulo512Mbytes,      /*!< Circular buffer size is 512M bytes. */
-    kEDMA_Modulo1Gbytes,        /*!< Circular buffer size is 1G bytes. */
-    kEDMA_Modulo2Gbytes,        /*!< Circular buffer size is 2G bytes. */
-} edma_modulo_t;
-
-/*! @brief Bandwidth control */
-typedef enum _edma_bandwidth
-{
-    kEDMA_BandwidthStallNone = 0x0U,   /*!< No eDMA engine stalls. */
-    kEDMA_BandwidthStall4Cycle = 0x2U, /*!< eDMA engine stalls for 4 cycles after each read/write. */
-    kEDMA_BandwidthStall8Cycle = 0x3U, /*!< eDMA engine stalls for 8 cycles after each read/write. */
-} edma_bandwidth_t;
-
-/*! @brief Channel link type */
-typedef enum _edma_channel_link_type
-{
-    kEDMA_LinkNone = 0x0U, /*!< No channel link  */
-    kEDMA_MinorLink,       /*!< Channel link after each minor loop */
-    kEDMA_MajorLink,       /*!< Channel link while major loop count exhausted */
-} edma_channel_link_type_t;
-
-/*!@brief eDMA channel status flags. */
-enum _edma_channel_status_flags
-{
-    kEDMA_DoneFlag = 0x1U,      /*!< DONE flag, set while transfer finished, CITER value exhausted*/
-    kEDMA_ErrorFlag = 0x2U,     /*!< eDMA error flag, an error occurred in a transfer */
-    kEDMA_InterruptFlag = 0x4U, /*!< eDMA interrupt flag, set while an interrupt occurred of this channel */
-};
-
-/*! @brief eDMA channel error status flags. */
-enum _edma_error_status_flags
-{
-    kEDMA_DestinationBusErrorFlag = DMA_ES_DBE_MASK,    /*!< Bus error on destination address */
-    kEDMA_SourceBusErrorFlag = DMA_ES_SBE_MASK,         /*!< Bus error on the source address */
-    kEDMA_ScatterGatherErrorFlag = DMA_ES_SGE_MASK,     /*!< Error on the Scatter/Gather address, not 32byte aligned. */
-    kEDMA_NbytesErrorFlag = DMA_ES_NCE_MASK,            /*!< NBYTES/CITER configuration error */
-    kEDMA_DestinationOffsetErrorFlag = DMA_ES_DOE_MASK, /*!< Destination offset not aligned with destination size */
-    kEDMA_DestinationAddressErrorFlag = DMA_ES_DAE_MASK, /*!< Destination address not aligned with destination size */
-    kEDMA_SourceOffsetErrorFlag = DMA_ES_SOE_MASK,       /*!< Source offset not aligned with source size */
-    kEDMA_SourceAddressErrorFlag = DMA_ES_SAE_MASK,      /*!< Source address not aligned with source size*/
-    kEDMA_ErrorChannelFlag = DMA_ES_ERRCHN_MASK,         /*!< Error channel number of the cancelled channel number */
-    kEDMA_ChannelPriorityErrorFlag = DMA_ES_CPE_MASK,    /*!< Channel priority is not unique. */
-    kEDMA_TransferCanceledFlag = DMA_ES_ECX_MASK,        /*!< Transfer cancelled */
-#if defined(FSL_FEATURE_EDMA_CHANNEL_GROUP_COUNT) && FSL_FEATURE_EDMA_CHANNEL_GROUP_COUNT > 1
-    kEDMA_GroupPriorityErrorFlag = DMA_ES_GPE_MASK, /*!< Group priority is not unique. */
-#endif
-    kEDMA_ValidFlag = DMA_ES_VLD_MASK, /*!< No error occurred, this bit will be 0, otherwise be 1 */
-};
-
-/*! @brief eDMA interrupt source */
-typedef enum _edma_interrupt_enable
-{
-    kEDMA_ErrorInterruptEnable = 0x1U,                  /*!< Enable interrupt while channel error occurs. */
-    kEDMA_MajorInterruptEnable = DMA_CSR_INTMAJOR_MASK, /*!< Enable interrupt while major count exhausted. */
-    kEDMA_HalfInterruptEnable = DMA_CSR_INTHALF_MASK,   /*!< Enable interrupt while major count to half value. */
-} edma_interrupt_enable_t;
-
-/*! @brief eDMA transfer type */
-typedef enum _edma_transfer_type
-{
-    kEDMA_MemoryToMemory = 0x0U, /*!< Transfer from memory to memory */
-    kEDMA_PeripheralToMemory,    /*!< Transfer from peripheral to memory */
-    kEDMA_MemoryToPeripheral,    /*!< Transfer from memory to peripheral */
-} edma_transfer_type_t;
-
-/*! @brief eDMA transfer status */
-enum _edma_transfer_status
-{
-    kStatus_EDMA_QueueFull = MAKE_STATUS(kStatusGroup_EDMA, 0), /*!< TCD queue is full. */
-    kStatus_EDMA_Busy = MAKE_STATUS(kStatusGroup_EDMA, 1),      /*!< Channel is busy and can't handle the
-                                                                     transfer request. */
-};
-
-/*! @brief eDMA global configuration structure.*/
-typedef struct _edma_config
-{
-    bool enableContinuousLinkMode;    /*!< Enable (true) continuous link mode. Upon minor loop completion, the channel
-                                           activates again if that channel has a minor loop channel link enabled and
-                                           the link channel is itself. */
-    bool enableHaltOnError;           /*!< Enable (true) transfer halt on error. Any error causes the HALT bit to set.
-                                           Subsequently, all service requests are ignored until the HALT bit is cleared.*/
-    bool enableRoundRobinArbitration; /*!< Enable (true) round robin channel arbitration method, or fixed priority
-                                           arbitration is used for channel selection */
-    bool enableDebugMode; /*!< Enable(true) eDMA debug mode. When in debug mode, the eDMA stalls the start of
-                               a new channel. Executing channels are allowed to complete. */
-} edma_config_t;
-
-/*!
- * @brief eDMA transfer configuration
- *
- * This structure configures the source/destination transfer attribute.
- * This figure shows the eDMA's transfer model:
- *  _________________________________________________
- *              | Transfer Size |                    |
- *   Minor Loop |_______________| Major loop Count 1 |
- *     Bytes    | Transfer Size |                    |
- *  ____________|_______________|____________________|--> Minor loop complete
- *               ____________________________________
- *              |               |                    |
- *              |_______________| Major Loop Count 2 |
- *              |               |                    |
- *              |_______________|____________________|--> Minor loop  Complete
- *
- *               ---------------------------------------------------------> Transfer complete
- */
-typedef struct _edma_transfer_config
-{
-    uint32_t srcAddr;                      /*!< Source data address. */
-    uint32_t destAddr;                     /*!< Destination data address. */
-    edma_transfer_size_t srcTransferSize;  /*!< Source data transfer size. */
-    edma_transfer_size_t destTransferSize; /*!< Destination data transfer size. */
-    int16_t srcOffset;                     /*!< Sign-extended offset applied to the current source address to
-                                                form the next-state value as each source read is completed. */
-    int16_t destOffset;                    /*!< Sign-extended offset applied to the current destination address to
-                                                form the next-state value as each destination write is completed. */
-    uint16_t minorLoopBytes;               /*!< Bytes to transfer in a minor loop*/
-    uint32_t majorLoopCounts;              /*!< Major loop iteration count. */
-} edma_transfer_config_t;
-
-/*! @brief eDMA channel priority configuration */
-typedef struct _edma_channel_Preemption_config
-{
-    bool enableChannelPreemption; /*!< If true: channel can be suspended by other channel with higher priority */
-    bool enablePreemptAbility;    /*!< If true: channel can suspend other channel with low priority */
-    uint8_t channelPriority;      /*!< Channel priority */
-} edma_channel_Preemption_config_t;
-
-/*! @brief eDMA minor offset configuration */
-typedef struct _edma_minor_offset_config
-{
-    bool enableSrcMinorOffset;  /*!< Enable(true) or Disable(false) source minor loop offset. */
-    bool enableDestMinorOffset; /*!< Enable(true) or Disable(false) destination minor loop offset. */
-    uint32_t minorOffset;       /*!< Offset for minor loop mapping. */
-} edma_minor_offset_config_t;
-
-/*!
- * @brief eDMA TCD.
- *
- * This structure is same as TCD register which is described in reference manual,
- * and is used to configure scatter/gather feature as a next hardware TCD.
- */
-typedef struct _edma_tcd
-{
-    __IO uint32_t SADDR;     /*!< SADDR register, used to save source address */
-    __IO uint16_t SOFF;      /*!< SOFF register, save offset bytes every transfer */
-    __IO uint16_t ATTR;      /*!< ATTR register, source/destination transfer size and modulo */
-    __IO uint32_t NBYTES;    /*!< Nbytes register, minor loop length in bytes */
-    __IO uint32_t SLAST;     /*!< SLAST register */
-    __IO uint32_t DADDR;     /*!< DADDR register, used for destination address */
-    __IO uint16_t DOFF;      /*!< DOFF register, used for destination offset */
-    __IO uint16_t CITER;     /*!< CITER register, current minor loop numbers, for unfinished minor loop.*/
-    __IO uint32_t DLAST_SGA; /*!< DLASTSGA register, next stcd address used in scatter-gather mode */
-    __IO uint16_t CSR;       /*!< CSR register, for TCD control status */
-    __IO uint16_t BITER;     /*!< BITER register, begin minor loop count. */
-} edma_tcd_t;
-
-/*! @brief Callback for eDMA */
-struct _edma_handle;
-
-/*! @brief Define Callback function for eDMA. */
-typedef void (*edma_callback)(struct _edma_handle *handle, void *userData, bool transferDone, uint32_t tcds);
-
-/*! @brief eDMA transfer handle structure */
-typedef struct _edma_handle
-{
-    edma_callback callback;  /*!< Callback function for major count exhausted. */
-    void *userData;          /*!< Callback function parameter. */
-    DMA_Type *base;          /*!< eDMA peripheral base address. */
-    edma_tcd_t *tcdPool;     /*!< Pointer to memory stored TCDs. */
-    uint8_t channel;         /*!< eDMA channel number. */
-    volatile int8_t header;  /*!< The first TCD index. */
-    volatile int8_t tail;    /*!< The last TCD index. */
-    volatile int8_t tcdUsed; /*!< The number of used TCD slots. */
-    volatile int8_t tcdSize; /*!< The total number of TCD slots in the queue. */
-    uint8_t flags;           /*!< The status of the current channel. */
-} edma_handle_t;
-
-/*******************************************************************************
- * APIs
- ******************************************************************************/
-#if defined(__cplusplus)
-extern "C" {
-#endif /* __cplusplus */
-
-/*!
- * @name eDMA initialization and De-initialization
- * @{
- */
-
-/*!
- * @brief Initializes eDMA peripheral.
- *
- * This function ungates the eDMA clock and configure eDMA peripheral according
- * to the configuration structure.
- *
- * @param base eDMA peripheral base address.
- * @param config Pointer to configuration structure, see "edma_config_t".
- * @note This function enable the minor loop map feature.
- */
-void EDMA_Init(DMA_Type *base, const edma_config_t *config);
-
-/*!
- * @brief Deinitializes eDMA peripheral.
- *
- * This function gates the eDMA clock.
- *
- * @param base eDMA peripheral base address.
- */
-void EDMA_Deinit(DMA_Type *base);
-
-/*!
- * @brief Gets the eDMA default configuration structure.
- *
- * This function sets the configuration structure to a default value.
- * The default configuration is set to the following value:
- * @code
- *   config.enableContinuousLinkMode = false;
- *   config.enableHaltOnError = true;
- *   config.enableRoundRobinArbitration = false;
- *   config.enableDebugMode = false;
- * @endcode
- *
- * @param config Pointer to eDMA configuration structure.
- */
-void EDMA_GetDefaultConfig(edma_config_t *config);
-
-/* @} */
-/*!
- * @name eDMA Channel Operation
- * @{
- */
-
-/*!
- * @brief Sets all TCD registers to a default value.
- *
- * This function sets TCD registers for this channel to default value.
- *
- * @param base eDMA peripheral base address.
- * @param channel eDMA channel number.
- * @note This function must not be called while the channel transfer is on-going,
- *       or it will case unpredicated results.
- * @note This function will enable auto stop request feature.
- */
-void EDMA_ResetChannel(DMA_Type *base, uint32_t channel);
-
-/*!
- * @brief Configures the eDMA transfer attribute.
- *
- * This function configure the transfer attribute, including source address, destination address,
- * transfer size, address offset, and so on. It also configures the scatter gather feature if the
- * user supplies the TCD address.
- * Example:
- * @code
- *  edma_transfer_t config;
- *  edma_tcd_t tcd;
- *  config.srcAddr = ..;
- *  config.destAddr = ..;
- *  ...
- *  EDMA_SetTransferConfig(DMA0, channel, &config, &stcd);
- * @endcode
- *
- * @param base eDMA peripheral base address.
- * @param channel eDMA channel number.
- * @param config Pointer to eDMA transfer configuration structure.
- * @param nextTcd Point to TCD structure. It can be NULL if user
- *                do not want to enable scatter/gather feature.
- * @note If nextTcd is not NULL, it means scatter gather feature will be enabled.
- *       And DREQ bit will be cleared in the previous transfer configuration which
- *       will be set in eDMA_ResetChannel.
- */
-void EDMA_SetTransferConfig(DMA_Type *base,
-                            uint32_t channel,
-                            const edma_transfer_config_t *config,
-                            edma_tcd_t *nextTcd);
-
-/*!
- * @brief Configures the eDMA minor offset feature.
- *
- * Minor offset means signed-extended value added to source address or destination
- * address after each minor loop.
- *
- * @param base eDMA peripheral base address.
- * @param channel eDMA channel number.
- * @param config Pointer to Minor offset configuration structure.
- */
-void EDMA_SetMinorOffsetConfig(DMA_Type *base, uint32_t channel, const edma_minor_offset_config_t *config);
-
-/*!
- * @brief Configures the eDMA channel preemption feature.
- *
- * This function configures the channel preemption attribute and the priority of the channel.
- *
- * @param base eDMA peripheral base address.
- * @param channel eDMA channel number
- * @param config Pointer to channel preemption configuration structure.
- */
-static inline void EDMA_SetChannelPreemptionConfig(DMA_Type *base,
-                                                   uint32_t channel,
-                                                   const edma_channel_Preemption_config_t *config)
-{
-    assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
-    assert(config != NULL);
-
-    DMA_DCHPRIn(base, channel) =
-        (DMA_DCHPRI0_DPA(!config->enablePreemptAbility) | DMA_DCHPRI0_ECP(config->enableChannelPreemption) |
-         DMA_DCHPRI0_CHPRI(config->channelPriority));
-}
-
-/*!
- * @brief Sets the channel link for the eDMA transfer.
- *
- * This function configures  minor link or major link mode. The minor link means that the channel link is
- * triggered every time CITER decreases by 1. The major link means that the channel link is triggered when the CITER is exhausted.
- *
- * @param base eDMA peripheral base address.
- * @param channel eDMA channel number.
- * @param type Channel link type, it can be one of:
- *   @arg kEDMA_LinkNone
- *   @arg kEDMA_MinorLink
- *   @arg kEDMA_MajorLink
- * @param linkedChannel The linked channel number.
- * @note User should ensure that DONE flag is cleared before call this interface, or the configuration will be invalid.
- */
-void EDMA_SetChannelLink(DMA_Type *base, uint32_t channel, edma_channel_link_type_t type, uint32_t linkedChannel);
-
-/*!
- * @brief Sets the bandwidth for the eDMA transfer.
- *
- * In general, because the eDMA processes the minor loop, it continuously generates read/write sequences
- * until the minor count is exhausted. The bandwidth forces the eDMA to stall after the completion of
- * each read/write access to control the bus request bandwidth seen by the crossbar switch.
- *
- * @param base eDMA peripheral base address.
- * @param channel eDMA channel number.
- * @param bandWidth Bandwidth setting, it can be one of:
- *     @arg kEDMABandwidthStallNone
- *     @arg kEDMABandwidthStall4Cycle
- *     @arg kEDMABandwidthStall8Cycle
- */
-void EDMA_SetBandWidth(DMA_Type *base, uint32_t channel, edma_bandwidth_t bandWidth);
-
-/*!
- * @brief Sets the source modulo and destination modulo for eDMA transfer.
- *
- * This function defines a specific address range specified to be the value after (SADDR + SOFF)/(DADDR + DOFF)
- * calculation is performed or the original register value. It provides the ability to implement a circular data
- * queue easily.
- *
- * @param base eDMA peripheral base address.
- * @param channel eDMA channel number.
- * @param srcModulo Source modulo value.
- * @param destModulo Destination modulo value.
- */
-void EDMA_SetModulo(DMA_Type *base, uint32_t channel, edma_modulo_t srcModulo, edma_modulo_t destModulo);
-
-#if defined(FSL_FEATURE_EDMA_ASYNCHRO_REQUEST_CHANNEL_COUNT) && FSL_FEATURE_EDMA_ASYNCHRO_REQUEST_CHANNEL_COUNT
-/*!
- * @brief Enables an async request for the eDMA transfer.
- *
- * @param base eDMA peripheral base address.
- * @param channel eDMA channel number.
- * @param enable The command for enable(ture) or disable(false).
- */
-static inline void EDMA_EnableAsyncRequest(DMA_Type *base, uint32_t channel, bool enable)
-{
-    assert(channel < FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
-
-    base->EARS = (base->EARS & (~(1U << channel))) | ((uint32_t)enable << channel);
-}
-#endif /* FSL_FEATURE_EDMA_ASYNCHRO_REQUEST_CHANNEL_COUNT */
-
-/*!
- * @brief Enables an auto stop request for the eDMA transfer.
- *
- * If enabling the auto stop request, the eDMA hardware automatically disables the hardware channel request.
- *
- * @param base eDMA peripheral base address.
- * @param channel eDMA channel number.
- * @param enable The command for enable (true) or disable (false).
- */
-static inline void EDMA_EnableAutoStopRequest(DMA_Type *base, uint32_t channel, bool enable)
-{
-    assert(channel < FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
-
-    base->TCD[channel].CSR = (base->TCD[channel].CSR & (~DMA_CSR_DREQ_MASK)) | DMA_CSR_DREQ(enable);
-}
-
-/*!
- * @brief Enables the interrupt source for the eDMA transfer.
- *
- * @param base eDMA peripheral base address.
- * @param channel eDMA channel number.
- * @param mask The mask of interrupt source to be set. User need to use
- *             the defined edma_interrupt_enable_t type.
- */
-void EDMA_EnableChannelInterrupts(DMA_Type *base, uint32_t channel, uint32_t mask);
-
-/*!
- * @brief Disables the interrupt source for the eDMA transfer.
- *
- * @param base eDMA peripheral base address.
- * @param channel eDMA channel number.
- * @param mask The mask of interrupt source to be set. Use
- *             the defined edma_interrupt_enable_t type.
- */
-void EDMA_DisableChannelInterrupts(DMA_Type *base, uint32_t channel, uint32_t mask);
-
-/* @} */
-/*!
- * @name eDMA TCD Operation
- * @{
- */
-
-/*!
- * @brief Sets all fields to default values for the TCD structure.
- *
- * This function sets all fields for this TCD structure to default value.
- *
- * @param tcd Pointer to the TCD structure.
- * @note This function will enable auto stop request feature.
- */
-void EDMA_TcdReset(edma_tcd_t *tcd);
-
-/*!
- * @brief Configures the eDMA TCD transfer attribute.
- *
- * TCD is a transfer control descriptor. The content of the TCD is the same as hardware TCD registers.
- * STCD is used in scatter-gather mode.
- * This function configures the TCD transfer attribute, including source address, destination address,
- * transfer size, address offset, and so on. It also configures the scatter gather feature if the
- * user supplies the next TCD address.
- * Example:
- * @code
- *   edma_transfer_t config = {
- *   ...
- *   }
- *   edma_tcd_t tcd __aligned(32);
- *   edma_tcd_t nextTcd __aligned(32);
- *   EDMA_TcdSetTransferConfig(&tcd, &config, &nextTcd);
- * @endcode
- *
- * @param tcd Pointer to the TCD structure.
- * @param config Pointer to eDMA transfer configuration structure.
- * @param nextTcd Pointer to the next TCD structure. It can be NULL if user
- *                do not want to enable scatter/gather feature.
- * @note TCD address should be 32 bytes aligned, or it will cause eDMA error.
- * @note If nextTcd is not NULL, it means scatter gather feature will be enabled.
- *       And DREQ bit will be cleared in the previous transfer configuration which
- *       will be set in EDMA_TcdReset.
- */
-void EDMA_TcdSetTransferConfig(edma_tcd_t *tcd, const edma_transfer_config_t *config, edma_tcd_t *nextTcd);
-
-/*!
- * @brief Configures the eDMA TCD minor offset feature.
- *
- * Minor offset is a signed-extended value added to the source address or destination
- * address after each minor loop.
- *
- * @param tcd Point to the TCD structure.
- * @param config Pointer to Minor offset configuration structure.
- */
-void EDMA_TcdSetMinorOffsetConfig(edma_tcd_t *tcd, const edma_minor_offset_config_t *config);
-
-/*!
- * @brief Sets the channel link for eDMA TCD.
- *
- * This function configures either a minor link or a major link. The minor link means the channel link is
- * triggered every time CITER decreases by 1. The major link means that the channel link  is triggered when the CITER is exhausted.
- *
- * @note User should ensure that DONE flag is cleared before call this interface, or the configuration will be invalid.
- * @param tcd Point to the TCD structure.
- * @param type Channel link type, it can be one of:
- *   @arg kEDMA_LinkNone
- *   @arg kEDMA_MinorLink
- *   @arg kEDMA_MajorLink
- * @param linkedChannel The linked channel number.
- */
-void EDMA_TcdSetChannelLink(edma_tcd_t *tcd, edma_channel_link_type_t type, uint32_t linkedChannel);
-
-/*!
- * @brief Sets the bandwidth for the eDMA TCD.
- *
- * In general, because the eDMA processes the minor loop, it continuously generates read/write sequences
- * until the minor count is exhausted. Bandwidth forces the eDMA to stall after the completion of
- * each read/write access to control the bus request bandwidth seen by the crossbar switch.
- * @param tcd Point to the TCD structure.
- * @param bandWidth Bandwidth setting, it can be one of:
- *     @arg kEDMABandwidthStallNone
- *     @arg kEDMABandwidthStall4Cycle
- *     @arg kEDMABandwidthStall8Cycle
- */
-static inline void EDMA_TcdSetBandWidth(edma_tcd_t *tcd, edma_bandwidth_t bandWidth)
-{
-    assert(tcd != NULL);
-    assert(((uint32_t)tcd & 0x1FU) == 0);
-
-    tcd->CSR = (tcd->CSR & (~DMA_CSR_BWC_MASK)) | DMA_CSR_BWC(bandWidth);
-}
-
-/*!
- * @brief Sets the source modulo and destination modulo for eDMA TCD.
- *
- * This function defines a specific address range specified to be the value after (SADDR + SOFF)/(DADDR + DOFF)
- * calculation is performed or the original register value. It provides the ability to implement a circular data
- * queue easily.
- *
- * @param tcd Point to the TCD structure.
- * @param srcModulo Source modulo value.
- * @param destModulo Destination modulo value.
- */
-void EDMA_TcdSetModulo(edma_tcd_t *tcd, edma_modulo_t srcModulo, edma_modulo_t destModulo);
-
-/*!
- * @brief Sets the auto stop request for the eDMA TCD.
- *
- * If enabling the auto stop request, the eDMA hardware automatically disables the hardware channel request.
- *
- * @param tcd Point to the TCD structure.
- * @param enable The command for enable(ture) or disable(false).
- */
-static inline void EDMA_TcdEnableAutoStopRequest(edma_tcd_t *tcd, bool enable)
-{
-    assert(tcd != NULL);
-    assert(((uint32_t)tcd & 0x1FU) == 0);
-
-    tcd->CSR = (tcd->CSR & (~DMA_CSR_DREQ_MASK)) | DMA_CSR_DREQ(enable);
-}
-
-/*!
- * @brief Enables the interrupt source for the eDMA TCD.
- *
- * @param tcd Point to the TCD structure.
- * @param mask The mask of interrupt source to be set. User need to use
- *             the defined edma_interrupt_enable_t type.
- */
-void EDMA_TcdEnableInterrupts(edma_tcd_t *tcd, uint32_t mask);
-
-/*!
- * @brief Disables the interrupt source for the eDMA TCD.
- *
- * @param tcd Point to the TCD structure.
- * @param mask The mask of interrupt source to be set. User need to use
- *             the defined edma_interrupt_enable_t type.
- */
-void EDMA_TcdDisableInterrupts(edma_tcd_t *tcd, uint32_t mask);
-
-/*! @} */
-/*!
- * @name eDMA Channel Transfer Operation
- * @{
- */
-
-/*!
- * @brief Enables the eDMA hardware channel request.
- *
- * This function enables the hardware channel request.
- *
- * @param base eDMA peripheral base address.
- * @param channel eDMA channel number.
- */
-static inline void EDMA_EnableChannelRequest(DMA_Type *base, uint32_t channel)
-{
-    assert(channel < FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
-
-    base->SERQ = DMA_SERQ_SERQ(channel);
-}
-
-/*!
- * @brief Disables the eDMA hardware channel request.
- *
- * This function disables the hardware channel request.
- *
- * @param base eDMA peripheral base address.
- * @param channel eDMA channel number.
- */
-static inline void EDMA_DisableChannelRequest(DMA_Type *base, uint32_t channel)
-{
-    assert(channel < FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
-
-    base->CERQ = DMA_CERQ_CERQ(channel);
-}
-
-/*!
- * @brief Starts the eDMA transfer by software trigger.
- *
- * This function starts a minor loop transfer.
- *
- * @param base eDMA peripheral base address.
- * @param channel eDMA channel number.
- */
-static inline void EDMA_TriggerChannelStart(DMA_Type *base, uint32_t channel)
-{
-    assert(channel < FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
-
-    base->SSRT = DMA_SSRT_SSRT(channel);
-}
-
-/*! @} */
-/*!
- * @name eDMA Channel Status Operation
- * @{
- */
-
-/*!
- * @brief Gets the Remaining bytes from the eDMA current channel TCD.
- *
- * This function checks the TCD (Task Control Descriptor) status for a specified
- * eDMA channel and returns the the number of bytes that have not finished.
- *
- * @param base eDMA peripheral base address.
- * @param channel eDMA channel number.
- * @return Bytes have not been transferred yet for the current TCD.
- * @note This function can only be used to get unfinished bytes of transfer without
- *       the next TCD, or it might be inaccuracy.
- */
-uint32_t EDMA_GetRemainingBytes(DMA_Type *base, uint32_t channel);
-
-/*!
- * @brief Gets the eDMA channel error status flags.
- *
- * @param base eDMA peripheral base address.
- * @return The mask of error status flags. User need to use the
- *         _edma_error_status_flags type to decode the return variables.
- */
-static inline uint32_t EDMA_GetErrorStatusFlags(DMA_Type *base)
-{
-    return base->ES;
-}
-
-/*!
- * @brief Gets the eDMA channel status flags.
- *
- * @param base eDMA peripheral base address.
- * @param channel eDMA channel number.
- * @return The mask of channel status flags. User need to use the
- *         _edma_channel_status_flags type to decode the return variables.
- */
-uint32_t EDMA_GetChannelStatusFlags(DMA_Type *base, uint32_t channel);
-
-/*!
- * @brief Clears the eDMA channel status flags.
- *
- * @param base eDMA peripheral base address.
- * @param channel eDMA channel number.
- * @param mask The mask of channel status to be cleared. User need to use
- *             the defined _edma_channel_status_flags type.
- */
-void EDMA_ClearChannelStatusFlags(DMA_Type *base, uint32_t channel, uint32_t mask);
-
-/*! @} */
-/*!
- * @name eDMA Transactional Operation
- */
-
-/*!
- * @brief Creates the eDMA handle.
- *
- * This function is called if using transaction API for eDMA. This function
- * initializes the internal state of eDMA handle.
- *
- * @param handle eDMA handle pointer. The eDMA handle stores callback function and
- *               parameters.
- * @param base eDMA peripheral base address.
- * @param channel eDMA channel number.
- */
-void EDMA_CreateHandle(edma_handle_t *handle, DMA_Type *base, uint32_t channel);
-
-/*!
- * @brief Installs the TCDs memory pool into eDMA handle.
- *
- * This function is called after the EDMA_CreateHandle to use scatter/gather feature.
- *
- * @param handle eDMA handle pointer.
- * @param tcdPool Memory pool to store TCDs. It must be 32 bytes aligned.
- * @param tcdSize The number of TCD slots.
- */
-void EDMA_InstallTCDMemory(edma_handle_t *handle, edma_tcd_t *tcdPool, uint32_t tcdSize);
-
-/*!
- * @brief Installs a callback function for the eDMA transfer.
- *
- * This callback is called in eDMA IRQ handler. Use the callback to do something after
- * the current major loop transfer completes.
- *
- * @param handle eDMA handle pointer.
- * @param callback eDMA callback function pointer.
- * @param userData Parameter for callback function.
- */
-void EDMA_SetCallback(edma_handle_t *handle, edma_callback callback, void *userData);
-
-/*!
- * @brief Prepares the eDMA transfer structure.
- *
- * This function prepares the transfer configuration structure according to the user input.
- *
- * @param config The user configuration structure of type edma_transfer_t.
- * @param srcAddr eDMA transfer source address.
- * @param srcWidth eDMA transfer source address width(bytes).
- * @param destAddr eDMA transfer destination address.
- * @param destWidth eDMA transfer destination address width(bytes).
- * @param bytesEachRequest eDMA transfer bytes per channel request.
- * @param transferBytes eDMA transfer bytes to be transferred.
- * @param type eDMA transfer type.
- * @note The data address and the data width must be consistent. For example, if the SRC
- *       is 4 bytes, so the source address must be 4 bytes aligned, or it shall result in
- *       source address error(SAE).
- */
-void EDMA_PrepareTransfer(edma_transfer_config_t *config,
-                          void *srcAddr,
-                          uint32_t srcWidth,
-                          void *destAddr,
-                          uint32_t destWidth,
-                          uint32_t bytesEachRequest,
-                          uint32_t transferBytes,
-                          edma_transfer_type_t type);
-
-/*!
- * @brief Submits the eDMA transfer request.
- *
- * This function submits the eDMA transfer request according to the transfer configuration structure.
- * If the user submits the transfer request repeatedly, this function packs an unprocessed request as
- * a TCD and enables scatter/gather feature to process it in the next time.
- *
- * @param handle eDMA handle pointer.
- * @param config Pointer to eDMA transfer configuration structure.
- * @retval kStatus_EDMA_Success It means submit transfer request succeed.
- * @retval kStatus_EDMA_QueueFull It means TCD queue is full. Submit transfer request is not allowed.
- * @retval kStatus_EDMA_Busy It means the given channel is busy, need to submit request later.
- */
-status_t EDMA_SubmitTransfer(edma_handle_t *handle, const edma_transfer_config_t *config);
-
-/*!
- * @brief eDMA start transfer.
- *
- * This function enables the channel request. User can call this function after submitting the transfer request
- * or before submitting the transfer request.
- *
- * @param handle eDMA handle pointer.
- */
-void EDMA_StartTransfer(edma_handle_t *handle);
-
-/*!
- * @brief eDMA stop transfer.
- *
- * This function disables the channel request to pause the transfer. User can call EDMA_StartTransfer()
- * again to resume the transfer.
- *
- * @param handle eDMA handle pointer.
- */
-void EDMA_StopTransfer(edma_handle_t *handle);
-
-/*!
- * @brief eDMA abort transfer.
- *
- * This function disables the channel request and clear transfer status bits.
- * User can submit another transfer after calling this API.
- *
- * @param handle DMA handle pointer.
- */
-void EDMA_AbortTransfer(edma_handle_t *handle);
-
-/*!
- * @brief eDMA IRQ handler for current major loop transfer complete.
- *
- * This function clears the channel major interrupt flag and call
- * the callback function if it is not NULL.
- *
- * @param handle eDMA handle pointer.
- */
-void EDMA_HandleIRQ(edma_handle_t *handle);
-
-/* @} */
-
-#if defined(__cplusplus)
-}
-#endif /* __cplusplus */
-
-/* @} */
-
-#endif /*_FSL_EDMA_H_*/
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_enet.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1713 +0,0 @@
-/*
-* Copyright (c) 2015, Freescale Semiconductor, Inc.
-* All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without modification,
-* are permitted provided that the following conditions are met:
-*
-* o Redistributions of source code must retain the above copyright notice, this list
-*   of conditions and the following disclaimer.
-*
-* o Redistributions in binary form must reproduce the above copyright notice, this
-*   list of conditions and the following disclaimer in the documentation and/or
-*   other materials provided with the distribution.
-*
-* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-*   contributors may be used to endorse or promote products derived from this
-*   software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include "fsl_enet.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @brief IPv4 PTP message IP version offset. */
-#define ENET_PTP1588_IPVERSION_OFFSET 0x0EU
-/*! @brief IPv4 PTP message UDP protocol offset. */
-#define ENET_PTP1588_IPV4_UDP_PROTOCOL_OFFSET 0x17U
-/*! @brief IPv4 PTP message UDP port offset. */
-#define ENET_PTP1588_IPV4_UDP_PORT_OFFSET 0x24U
-/*! @brief IPv4 PTP message UDP message type offset. */
-#define ENET_PTP1588_IPV4_UDP_MSGTYPE_OFFSET 0x2AU
-/*! @brief IPv4 PTP message UDP version offset. */
-#define ENET_PTP1588_IPV4_UDP_VERSION_OFFSET 0x2BU
-/*! @brief IPv4 PTP message UDP clock id offset. */
-#define ENET_PTP1588_IPV4_UDP_CLKID_OFFSET 0x3EU
-/*! @brief IPv4 PTP message UDP sequence id offset. */
-#define ENET_PTP1588_IPV4_UDP_SEQUENCEID_OFFSET 0x48U
-/*! @brief IPv4 PTP message UDP control offset. */
-#define ENET_PTP1588_IPV4_UDP_CTL_OFFSET 0x4AU
-/*! @brief IPv6 PTP message UDP protocol offset. */
-#define ENET_PTP1588_IPV6_UDP_PROTOCOL_OFFSET 0x14U
-/*! @brief IPv6 PTP message UDP port offset. */
-#define ENET_PTP1588_IPV6_UDP_PORT_OFFSET 0x38U
-/*! @brief IPv6 PTP message UDP message type offset. */
-#define ENET_PTP1588_IPV6_UDP_MSGTYPE_OFFSET 0x3EU
-/*! @brief IPv6 PTP message UDP version offset. */
-#define ENET_PTP1588_IPV6_UDP_VERSION_OFFSET 0x3FU
-/*! @brief IPv6 PTP message UDP clock id offset. */
-#define ENET_PTP1588_IPV6_UDP_CLKID_OFFSET 0x52U
-/*! @brief IPv6 PTP message UDP sequence id offset. */
-#define ENET_PTP1588_IPV6_UDP_SEQUENCEID_OFFSET 0x5CU
-/*! @brief IPv6 PTP message UDP control offset. */
-#define ENET_PTP1588_IPV6_UDP_CTL_OFFSET 0x5EU
-/*! @brief PTPv2 message Ethernet packet type offset. */
-#define ENET_PTP1588_ETHL2_PACKETTYPE_OFFSET 0x0CU
-/*! @brief PTPv2 message Ethernet message type offset. */
-#define ENET_PTP1588_ETHL2_MSGTYPE_OFFSET 0x0EU
-/*! @brief PTPv2 message Ethernet version type offset. */
-#define ENET_PTP1588_ETHL2_VERSION_OFFSET 0X0FU
-/*! @brief PTPv2 message Ethernet clock id offset. */
-#define ENET_PTP1588_ETHL2_CLOCKID_OFFSET 0x22
-/*! @brief PTPv2 message Ethernet sequence id offset. */
-#define ENET_PTP1588_ETHL2_SEQUENCEID_OFFSET 0x2c
-/*! @brief Packet type Ethernet IEEE802.3 for PTPv2. */
-#define ENET_ETHERNETL2 0x88F7U
-/*! @brief Packet type IPv4. */
-#define ENET_IPV4 0x0800U
-/*! @brief Packet type IPv6. */
-#define ENET_IPV6 0x86ddU
-/*! @brief Packet type VLAN. */
-#define ENET_8021QVLAN 0x8100U
-/*! @brief UDP protocol type. */
-#define ENET_UDPVERSION 0x0011U
-/*! @brief Packet IP version IPv4. */
-#define ENET_IPV4VERSION 0x0004U
-/*! @brief Packet IP version IPv6. */
-#define ENET_IPV6VERSION 0x0006U
-/*! @brief Ethernet mac address length. */
-#define ENET_FRAME_MACLEN 6U
-/*! @brief Ethernet Frame header length. */
-#define ENET_FRAME_HEADERLEN 14U
-/*! @brief Ethernet VLAN header length. */
-#define ENET_FRAME_VLAN_HEADERLEN 18U
-/*! @brief MDC frequency. */
-#define ENET_MDC_FREQUENCY 2500000U
-/*! @brief NanoSecond in one second. */
-#define ENET_NANOSECOND_ONE_SECOND 1000000000U
-/*! @brief Define a common clock cycle delays used for time stamp capture. */
-#define ENET_1588TIME_DELAY_COUNT 10U
-/*! @brief Defines the macro for converting constants from host byte order to network byte order. */
-#define ENET_HTONS(n) __REV16(n)
-#define ENET_HTONL(n) __REV(n)
-#define ENET_NTOHS(n) __REV16(n)
-#define ENET_NTOHL(n) __REV(n)
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-
-/*!
- * @brief Get the ENET instance from peripheral base address.
- *
- * @param base ENET peripheral base address.
- * @return ENET instance.
- */
-uint32_t ENET_GetInstance(ENET_Type *base);
-
-/*!
- * @brief Set ENET MAC controller with the configuration.
- *
- * @param base ENET peripheral base address.
- * @param config ENET Mac configuration.
- * @param bufferConfig ENET buffer configuration.
- * @param macAddr ENET six-byte mac address.
- * @param srcClock_Hz ENET module clock source, normally it's system clock.
- */
-static void ENET_SetMacController(ENET_Type *base,
-                                  const enet_config_t *config,
-                                  const enet_buffer_config_t *bufferConfig,
-                                  uint8_t *macAddr,
-                                  uint32_t srcClock_Hz);
-
-/*!
- * @brief Set ENET MAC transmit buffer descriptors.
- *
- * @param txBdStartAlign The aligned start address of ENET transmit buffer descriptors.
- *        is recommended to evenly divisible by 16.
- * @param txBuffStartAlign The aligned start address of ENET transmit buffers, must be evenly divisible by 16.
- * @param txBuffSizeAlign The aligned ENET transmit buffer size, must be evenly divisible by 16.
- * @param txBdNumber The number of ENET transmit buffers.
- */
-static void ENET_SetTxBufferDescriptors(volatile enet_tx_bd_struct_t *txBdStartAlign,
-                                        uint8_t *txBuffStartAlign,
-                                        uint32_t txBuffSizeAlign,
-                                        uint32_t txBdNumber);
-
-/*!
- * @brief Set ENET MAC receive buffer descriptors.
- *
- * @param rxBdStartAlign The aligned start address of ENET receive buffer descriptors.
- *        is recommended to evenly divisible by 16.
- * @param rxBuffStartAlign The aligned start address of ENET receive buffers, must be evenly divisible by 16.
- * @param rxBuffSizeAlign The aligned ENET receive buffer size, must be evenly divisible by 16.
- * @param rxBdNumber The number of ENET receive buffers.
- * @param enableInterrupt Enable/disables to generate the receive byte and frame interrupt.
- *        It's used for ENET_ENHANCEDBUFFERDESCRIPTOR_MODE enabled case.
- */
-static void ENET_SetRxBufferDescriptors(volatile enet_rx_bd_struct_t *rxBdStartAlign,
-                                        uint8_t *rxBuffStartAlign,
-                                        uint32_t rxBuffSizeAlign,
-                                        uint32_t rxBdNumber,
-                                        bool enableInterrupt);
-
-/*!
- * @brief Updates the ENET read buffer descriptors.
- *
- * @param base ENET peripheral base address.
- * @param handle The ENET handle pointer.
- */
-static void ENET_UpdateReadBuffers(ENET_Type *base, enet_handle_t *handle);
-
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-/*!
- * @brief Parses the ENET frame for time-stamp process of PTP 1588 frame.
- *
- * @param data  The ENET read data for frame parse.
- * @param ptpTsData The ENET PTP message and time-stamp data pointer.
- * @param isFastEnabled The fast parse flag.
- *        - true , Fast processing, only check if this is a PTP message.
- *        - false, Store the PTP message data after check the PTP message.
- */
-static bool ENET_Ptp1588ParseFrame(uint8_t *data, enet_ptp_time_data_t *ptpTsData, bool isFastEnabled);
-
-/*!
- * @brief Updates the new PTP 1588 time-stamp to the time-stamp buffer ring.
- *
- * @param ptpTsDataRing The PTP message and time-stamp data ring pointer.
- * @param ptpTimeData   The new PTP 1588 time-stamp data pointer.
- */
-static status_t ENET_Ptp1588UpdateTimeRing(enet_ptp_time_data_ring_t *ptpTsDataRing, enet_ptp_time_data_t *ptpTimeData);
-
-/*!
- * @brief Search up the right PTP 1588 time-stamp from the time-stamp buffer ring.
- *
- * @param ptpTsDataRing The PTP message and time-stamp data ring pointer.
- * @param ptpTimeData   The find out right PTP 1588 time-stamp data pointer with the specific PTP message.
- */
-static status_t ENET_Ptp1588SearchTimeRing(enet_ptp_time_data_ring_t *ptpTsDataRing, enet_ptp_time_data_t *ptpTimedata);
-
-/*!
- * @brief Store the transmit time-stamp for event PTP frame in the time-stamp buffer ring.
- *
- * @param base   ENET peripheral base address.
- * @param handle The ENET handle pointer.
- */
-static status_t ENET_StoreTxFrameTime(ENET_Type *base, enet_handle_t *handle);
-
-/*!
- * @brief Store the receive time-stamp for event PTP frame in the time-stamp buffer ring.
- *
- * @param base   ENET peripheral base address.
- * @param handle The ENET handle pointer.
- * @param ptpTimeData The PTP 1588 time-stamp data pointer.
- */
-static status_t ENET_StoreRxFrameTime(ENET_Type *base, enet_handle_t *handle, enet_ptp_time_data_t *ptpTimeData);
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-
-/*! @brief Pointers to enet handles for each instance. */
-static enet_handle_t *s_ENETHandle[FSL_FEATURE_SOC_ENET_COUNT] = {NULL};
-
-/*! @brief Pointers to enet clocks for each instance. */
-const clock_ip_name_t s_enetClock[FSL_FEATURE_SOC_ENET_COUNT] = ENET_CLOCKS;
-
-/*! @brief Pointers to enet transmit IRQ number for each instance. */
-const IRQn_Type s_enetTxIrqId[] = ENET_Transmit_IRQS;
-/*! @brief Pointers to enet receive IRQ number for each instance. */
-const IRQn_Type s_enetRxIrqId[] = ENET_Receive_IRQS;
-#if defined(ENET_ENHANCEDBUFFERDESCRIPTOR_MODE) && ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-/*! @brief Pointers to enet timestamp IRQ number for each instance. */
-const IRQn_Type s_enetTsIrqId[] = ENET_1588_Timer_IRQS;
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-/*! @brief Pointers to enet error IRQ number for each instance. */
-const IRQn_Type s_enetErrIrqId[] = ENET_Error_IRQS;
-
-/*! @brief Pointers to enet bases for each instance. */
-static ENET_Type *const s_enetBases[] = ENET_BASE_PTRS;
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-
-uint32_t ENET_GetInstance(ENET_Type *base)
-{
-    uint32_t instance;
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < FSL_FEATURE_SOC_ENET_COUNT; instance++)
-    {
-        if (s_enetBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < FSL_FEATURE_SOC_ENET_COUNT);
-
-    return instance;
-}
-
-void ENET_GetDefaultConfig(enet_config_t *config)
-{
-    /* Checks input parameter. */
-    assert(config);
-
-    /* Initializes the MAC configure structure to zero. */
-    memset(config, 0, sizeof(enet_config_t));
-
-    /* Sets MII mode, full duplex, 100Mbps for MAC and PHY data interface. */
-    config->miiMode = kENET_RmiiMode;
-    config->miiSpeed = kENET_MiiSpeed100M;
-    config->miiDuplex = kENET_MiiFullDuplex;
-
-    /* Sets the maximum receive frame length. */
-    config->rxMaxFrameLen = ENET_FRAME_MAX_FRAMELEN;
-}
-
-void ENET_Init(ENET_Type *base,
-               enet_handle_t *handle,
-               const enet_config_t *config,
-               const enet_buffer_config_t *bufferConfig,
-               uint8_t *macAddr,
-               uint32_t srcClock_Hz)
-{
-    /* Checks input parameters. */
-    assert(handle);
-    assert(config);
-    assert(bufferConfig);
-    assert(bufferConfig->rxBdStartAddrAlign);
-    assert(bufferConfig->txBdStartAddrAlign);
-    assert(bufferConfig->rxBufferAlign);
-    assert(macAddr);
-
-    uint32_t instance = ENET_GetInstance(base);
-
-    /* Ungate ENET clock. */
-    CLOCK_EnableClock(s_enetClock[instance]);
-
-    /* Reset ENET module. */
-    ENET_Reset(base);
-
-    /* Initializes the ENET transmit buffer descriptors. */
-    ENET_SetTxBufferDescriptors(bufferConfig->txBdStartAddrAlign, bufferConfig->txBufferAlign,
-                                bufferConfig->txBuffSizeAlign, bufferConfig->txBdNumber);
-
-    /* Initializes the ENET receive buffer descriptors. */
-    ENET_SetRxBufferDescriptors(bufferConfig->rxBdStartAddrAlign, bufferConfig->rxBufferAlign,
-                                bufferConfig->rxBuffSizeAlign, bufferConfig->rxBdNumber,
-                                !!(config->interrupt & (kENET_RxFrameInterrupt | kENET_RxByteInterrupt)));
-
-    /* Initializes the ENET MAC controller. */
-    ENET_SetMacController(base, config, bufferConfig, macAddr, srcClock_Hz);
-
-    /* Initialize the handle to zero. */
-    memset(handle, 0, sizeof(enet_handle_t));
-
-    /* Store transfer parameters in handle pointer. */
-    handle->rxBdBase = bufferConfig->rxBdStartAddrAlign;
-    handle->rxBdCurrent = bufferConfig->rxBdStartAddrAlign;
-    handle->rxBdDirty = bufferConfig->rxBdStartAddrAlign;
-    handle->txBdBase = bufferConfig->txBdStartAddrAlign;
-    handle->txBdCurrent = bufferConfig->txBdStartAddrAlign;
-    handle->txBdDirty = bufferConfig->txBdStartAddrAlign;
-    handle->rxBuffSizeAlign = bufferConfig->rxBuffSizeAlign;
-    handle->txBuffSizeAlign = bufferConfig->txBuffSizeAlign;
-
-    /* Save the handle pointer in the global variables. */
-    s_ENETHandle[instance] = handle;
-}
-
-void ENET_Deinit(ENET_Type *base)
-{
-    /* Disable interrupt. */
-    base->EIMR = 0;
-
-    /* Disable ENET. */
-    base->ECR &= ~ENET_ECR_ETHEREN_MASK;
-
-    /* Disables the clock source. */
-    CLOCK_DisableClock(s_enetClock[ENET_GetInstance(base)]);
-}
-
-void ENET_SetCallback(enet_handle_t *handle, enet_callback_t callback, void *userData)
-{
-    assert(handle);
-
-    /* Set callback and userData. */
-    handle->callback = callback;
-    handle->userData = userData;
-}
-
-static void ENET_SetMacController(ENET_Type *base,
-                                  const enet_config_t *config,
-                                  const enet_buffer_config_t *bufferConfig,
-                                  uint8_t *macAddr,
-                                  uint32_t srcClock_Hz)
-{
-    uint32_t rcr = 0;
-    uint32_t tcr = 0;
-    uint32_t ecr = 0;
-    uint32_t macSpecialConfig = config->macSpecialConfig;
-    uint32_t instance = ENET_GetInstance(base);
-
-    /* Configures MAC receive controller with user configure structure. */
-    rcr = ENET_RCR_NLC(!!(macSpecialConfig & kENET_ControlRxPayloadCheckEnable)) |
-          ENET_RCR_CFEN(!!(macSpecialConfig & kENET_ControlFlowControlEnable)) |
-          ENET_RCR_FCE(!!(macSpecialConfig & kENET_ControlFlowControlEnable)) |
-          ENET_RCR_PADEN(!!(macSpecialConfig & kENET_ControlRxPadRemoveEnable)) |
-          ENET_RCR_BC_REJ(!!(macSpecialConfig & kENET_ControlRxBroadCastRejectEnable)) |
-          ENET_RCR_PROM(!!(macSpecialConfig & kENET_ControlPromiscuousEnable)) | ENET_RCR_MII_MODE(1) |
-          ENET_RCR_RMII_MODE(config->miiMode) | ENET_RCR_RMII_10T(!config->miiSpeed) |
-          ENET_RCR_MAX_FL(config->rxMaxFrameLen) | ENET_RCR_CRCFWD(1);
-    /* Receive setting for half duplex. */
-    if (config->miiDuplex == kENET_MiiHalfDuplex)
-    {
-        rcr |= ENET_RCR_DRT(1);
-    }
-    /* Sets internal loop only for MII mode. */
-    if ((config->macSpecialConfig & kENET_ControlMIILoopEnable) && (config->miiMode == kENET_MiiMode))
-    {
-        rcr |= ENET_RCR_LOOP(1);
-        rcr &= ~ENET_RCR_DRT_MASK;
-    }
-    base->RCR = rcr;
-
-    /* Configures MAC transmit controller: duplex mode, mac address insertion. */
-    tcr = base->TCR & ~(ENET_TCR_FDEN_MASK | ENET_TCR_ADDINS_MASK);
-    tcr |= ENET_TCR_FDEN(config->miiDuplex) | ENET_TCR_ADDINS(!!(macSpecialConfig & kENET_ControlMacAddrInsert));
-    base->TCR = tcr;
-
-    /* Configures receive and transmit accelerator. */
-    base->TACC = config->txAccelerConfig;
-    base->RACC = config->rxAccelerConfig;
-
-    /* Sets the pause duration and FIFO threshold for the flow control enabled case. */
-    if (macSpecialConfig & kENET_ControlFlowControlEnable)
-    {
-        uint32_t reemReg;
-        base->OPD = config->pauseDuration;
-        reemReg = ENET_RSEM_RX_SECTION_EMPTY(config->rxFifoEmptyThreshold);
-#if FSL_FEATURE_ENET_HAS_RECEIVE_STATUS_THRESHOLD
-        reemReg |= ENET_RSEM_STAT_SECTION_EMPTY(config->rxFifoStatEmptyThreshold);
-#endif /* FSL_FEATURE_ENET_HAS_RECEIVE_STATUS_THRESHOLD */
-        base->RSEM = reemReg;
-    }
-
-    /* FIFO threshold setting for store and forward enable/disable case. */
-    if (macSpecialConfig & kENET_ControlStoreAndFwdDisable)
-    {
-        /* Transmit fifo watermark settings. */
-        base->TFWR = config->txFifoWatermark & ENET_TFWR_TFWR_MASK;
-        /* Receive fifo full threshold settings. */
-        base->RSFL = config->rxFifoFullThreshold & ENET_RSFL_RX_SECTION_FULL_MASK;
-    }
-    else
-    {
-        /* Transmit fifo watermark settings. */
-        base->TFWR = ENET_TFWR_STRFWD_MASK;
-        base->RSFL = 0;
-    }
-
-    /* Enable store and forward when accelerator is enabled */
-    if (config->txAccelerConfig & (kENET_TxAccelIpCheckEnabled | kENET_TxAccelProtoCheckEnabled))
-    {
-        base->TFWR = ENET_TFWR_STRFWD_MASK;
-    }
-    if (config->rxAccelerConfig & (kENET_RxAccelIpCheckEnabled | kENET_RxAccelProtoCheckEnabled))
-    {
-        base->RSFL = 0;
-    }
-
-    /* Initializes transmit buffer descriptor rings start address, two start address should be aligned. */
-    base->TDSR = (uint32_t)bufferConfig->txBdStartAddrAlign;
-    base->RDSR = (uint32_t)bufferConfig->rxBdStartAddrAlign;
-    /* Initializes the maximum buffer size, the buffer size should be aligned. */
-    base->MRBR = bufferConfig->rxBuffSizeAlign;
-
-    /* Configures the Mac address. */
-    ENET_SetMacAddr(base, macAddr);
-
-    /* Initialize the SMI if uninitialized. */
-    if (!ENET_GetSMI(base))
-    {
-        ENET_SetSMI(base, srcClock_Hz, !!(config->macSpecialConfig & kENET_ControlSMIPreambleDisable));
-    }
-
-    /* Enables Ethernet interrupt and NVIC. */
-    ENET_EnableInterrupts(base, config->interrupt);
-    if (config->interrupt & (kENET_RxByteInterrupt | kENET_RxFrameInterrupt))
-    {
-        EnableIRQ(s_enetRxIrqId[instance]);
-    }
-    if (config->interrupt & (kENET_TxByteInterrupt | kENET_TxFrameInterrupt))
-    {
-        EnableIRQ(s_enetTxIrqId[instance]);
-    }
-    if (config->interrupt & (kENET_BabrInterrupt | kENET_BabtInterrupt | kENET_GraceStopInterrupt | kENET_MiiInterrupt |
-                             kENET_EBusERInterrupt | kENET_LateCollisionInterrupt | kENET_RetryLimitInterrupt |
-                             kENET_UnderrunInterrupt | kENET_PayloadRxInterrupt | kENET_WakeupInterrupt))
-    {
-        EnableIRQ(s_enetErrIrqId[instance]);
-    }
-
-    /* ENET control register setting. */
-    ecr = base->ECR;
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-    /* Sets the 1588 enhanced feature. */
-    ecr |= ENET_ECR_EN1588_MASK;
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-    /* Enables Ethernet module after all configuration except the buffer descriptor active. */
-    ecr |= ENET_ECR_ETHEREN_MASK | ENET_ECR_DBSWP_MASK;
-    base->ECR = ecr;
-}
-
-static void ENET_SetTxBufferDescriptors(volatile enet_tx_bd_struct_t *txBdStartAlign,
-                                        uint8_t *txBuffStartAlign,
-                                        uint32_t txBuffSizeAlign,
-                                        uint32_t txBdNumber)
-{
-    assert(txBdStartAlign);
-
-    uint32_t count;
-    volatile enet_tx_bd_struct_t *curBuffDescrip = txBdStartAlign;
-
-    for (count = 0; count < txBdNumber; count++)
-    {
-        if (txBuffSizeAlign != NULL)
-        {
-            /* Set data buffer address. */
-            curBuffDescrip->buffer = (uint8_t *)((uint32_t)&txBuffStartAlign[count * txBuffSizeAlign]);
-        }
-        else
-        {
-            /* User should provide the transmit buffer at a later time */
-            curBuffDescrip->buffer = NULL;
-        }
-        /* Initializes data length. */
-        curBuffDescrip->length = 0;
-        /* Sets the crc. */
-        curBuffDescrip->control = ENET_BUFFDESCRIPTOR_TX_TRANMITCRC_MASK;
-        /* Sets the last buffer descriptor with the wrap flag. */
-        if (count == txBdNumber - 1)
-        {
-            curBuffDescrip->control |= ENET_BUFFDESCRIPTOR_TX_WRAP_MASK;
-        }
-
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-        /* Enable transmit interrupt for store the transmit timestamp. */
-        curBuffDescrip->controlExtend1 |= ENET_BUFFDESCRIPTOR_TX_INTERRUPT_MASK;
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-        /* Increase the index. */
-        curBuffDescrip++;
-    }
-}
-
-static void ENET_SetRxBufferDescriptors(volatile enet_rx_bd_struct_t *rxBdStartAlign,
-                                        uint8_t *rxBuffStartAlign,
-                                        uint32_t rxBuffSizeAlign,
-                                        uint32_t rxBdNumber,
-                                        bool enableInterrupt)
-{
-    assert(rxBdStartAlign);
-    assert(rxBuffStartAlign);
-
-    volatile enet_rx_bd_struct_t *curBuffDescrip = rxBdStartAlign;
-    uint32_t count = 0;
-
-    /* Initializes receive buffer descriptors. */
-    for (count = 0; count < rxBdNumber; count++)
-    {
-        /* Set data buffer and the length. */
-        curBuffDescrip->buffer = (uint8_t *)(*((uint32_t *)(rxBuffStartAlign + count * 4)));
-        curBuffDescrip->length = 0;
-
-        /* Initializes the buffer descriptors with empty bit. */
-        curBuffDescrip->control = ENET_BUFFDESCRIPTOR_RX_EMPTY_MASK;
-        /* Sets the last buffer descriptor with the wrap flag. */
-        if (count == rxBdNumber - 1)
-        {
-            curBuffDescrip->control |= ENET_BUFFDESCRIPTOR_RX_WRAP_MASK;
-        }
-
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-        if (enableInterrupt)
-        {
-            /* Enable receive interrupt. */
-            curBuffDescrip->controlExtend1 |= ENET_BUFFDESCRIPTOR_RX_INTERRUPT_MASK;
-        }
-        else
-        {
-            curBuffDescrip->controlExtend1 = 0;
-        }
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-        /* Increase the index. */
-        curBuffDescrip++;
-    }
-}
-
-void ENET_SetMII(ENET_Type *base, enet_mii_speed_t speed, enet_mii_duplex_t duplex)
-{
-    uint32_t rcr;
-    uint32_t tcr;
-
-    rcr = base->RCR;
-    tcr = base->TCR;
-
-    /* Sets speed mode. */
-    if (kENET_MiiSpeed10M == speed)
-    {
-        rcr |= ENET_RCR_RMII_10T_MASK;
-    }
-    else
-    {
-        rcr &= ~ENET_RCR_RMII_10T_MASK;
-    }
-    /* Set duplex mode. */
-    if (duplex == kENET_MiiHalfDuplex)
-    {
-        rcr |= ENET_RCR_DRT_MASK;
-        tcr &= ~ENET_TCR_FDEN_MASK;
-    }
-    else
-    {
-        rcr &= ~ENET_RCR_DRT_MASK;
-        tcr |= ENET_TCR_FDEN_MASK;
-    }
-
-    base->RCR = rcr;
-    base->TCR = tcr;
-}
-
-void ENET_SetMacAddr(ENET_Type *base, uint8_t *macAddr)
-{
-    uint32_t address;
-
-    /* Set physical address lower register. */
-    address = (uint32_t)(((uint32_t)macAddr[0] << 24U) | ((uint32_t)macAddr[1] << 16U) | ((uint32_t)macAddr[2] << 8U) |
-                         (uint32_t)macAddr[3]);
-    base->PALR = address;
-    /* Set physical address high register. */
-    address = (uint32_t)(((uint32_t)macAddr[4] << 8U) | ((uint32_t)macAddr[5]));
-    base->PAUR = address << ENET_PAUR_PADDR2_SHIFT;
-}
-
-void ENET_GetMacAddr(ENET_Type *base, uint8_t *macAddr)
-{
-    assert(macAddr);
-
-    uint32_t address;
-
-    /* Get from physical address lower register. */
-    address = base->PALR;
-    macAddr[0] = 0xFFU & (address >> 24U);
-    macAddr[1] = 0xFFU & (address >> 16U);
-    macAddr[2] = 0xFFU & (address >> 8U);
-    macAddr[3] = 0xFFU & address;
-
-    /* Get from physical address high register. */
-    address = (base->PAUR & ENET_PAUR_PADDR2_MASK) >> ENET_PAUR_PADDR2_SHIFT;
-    macAddr[4] = 0xFFU & (address >> 8U);
-    macAddr[5] = 0xFFU & address;
-}
-
-void ENET_SetSMI(ENET_Type *base, uint32_t srcClock_Hz, bool isPreambleDisabled)
-{
-    assert(srcClock_Hz);
-
-    uint32_t clkCycle = 0;
-    uint32_t speed = 0;
-    uint32_t mscr = 0;
-
-    /* Calculate the MII speed which controls the frequency of the MDC. */
-    speed = srcClock_Hz / (2 * ENET_MDC_FREQUENCY);
-    /* Calculate the hold time on the MDIO output. */
-    clkCycle = (10 + ENET_NANOSECOND_ONE_SECOND / srcClock_Hz - 1) / (ENET_NANOSECOND_ONE_SECOND / srcClock_Hz) - 1;
-    /* Build the configuration for MDC/MDIO control. */
-    mscr = ENET_MSCR_MII_SPEED(speed) | ENET_MSCR_DIS_PRE(isPreambleDisabled) | ENET_MSCR_HOLDTIME(clkCycle);
-    base->MSCR = mscr;
-}
-
-void ENET_StartSMIWrite(ENET_Type *base, uint32_t phyAddr, uint32_t phyReg, enet_mii_write_t operation, uint32_t data)
-{
-    uint32_t mmfr = 0;
-
-    /* Build MII write command. */
-    mmfr = ENET_MMFR_ST(1) | ENET_MMFR_OP(operation) | ENET_MMFR_PA(phyAddr) | ENET_MMFR_RA(phyReg) | ENET_MMFR_TA(2) |
-           (data & 0xFFFF);
-    base->MMFR = mmfr;
-}
-
-void ENET_StartSMIRead(ENET_Type *base, uint32_t phyAddr, uint32_t phyReg, enet_mii_read_t operation)
-{
-    uint32_t mmfr = 0;
-
-    /* Build MII read command. */
-    mmfr = ENET_MMFR_ST(1) | ENET_MMFR_OP(operation) | ENET_MMFR_PA(phyAddr) | ENET_MMFR_RA(phyReg) | ENET_MMFR_TA(2);
-    base->MMFR = mmfr;
-}
-
-void ENET_GetRxErrBeforeReadFrame(enet_handle_t *handle, enet_data_error_stats_t *eErrorStatic)
-{
-    assert(handle);
-    assert(handle->rxBdCurrent);
-    assert(eErrorStatic);
-
-    uint16_t control = 0;
-    volatile enet_rx_bd_struct_t *curBuffDescrip = handle->rxBdCurrent;
-
-    do
-    {
-        /* The last buffer descriptor of a frame. */
-        if (curBuffDescrip->control & ENET_BUFFDESCRIPTOR_RX_LAST_MASK)
-        {
-            control = curBuffDescrip->control;
-            if (control & ENET_BUFFDESCRIPTOR_RX_TRUNC_MASK)
-            {
-                /* The receive truncate error. */
-                eErrorStatic->statsRxTruncateErr++;
-            }
-            if (control & ENET_BUFFDESCRIPTOR_RX_OVERRUN_MASK)
-            {
-                /* The receive over run error. */
-                eErrorStatic->statsRxOverRunErr++;
-            }
-            if (control & ENET_BUFFDESCRIPTOR_RX_LENVLIOLATE_MASK)
-            {
-                /* The receive length violation error. */
-                eErrorStatic->statsRxLenGreaterErr++;
-            }
-            if (control & ENET_BUFFDESCRIPTOR_RX_NOOCTET_MASK)
-            {
-                /* The receive alignment error. */
-                eErrorStatic->statsRxAlignErr++;
-            }
-            if (control & ENET_BUFFDESCRIPTOR_RX_CRC_MASK)
-            {
-                /* The receive CRC error. */
-                eErrorStatic->statsRxFcsErr++;
-            }
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-            uint16_t controlExt = curBuffDescrip->controlExtend1;
-            if (controlExt & ENET_BUFFDESCRIPTOR_RX_MACERR_MASK)
-            {
-                /* The MAC error. */
-                eErrorStatic->statsRxMacErr++;
-            }
-            if (controlExt & ENET_BUFFDESCRIPTOR_RX_PHYERR_MASK)
-            {
-                /* The PHY error. */
-                eErrorStatic->statsRxPhyErr++;
-            }
-            if (controlExt & ENET_BUFFDESCRIPTOR_RX_COLLISION_MASK)
-            {
-                /* The receive collision error. */
-                eErrorStatic->statsRxCollisionErr++;
-            }
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-
-            break;
-        }
-
-        /* Increase the buffer descriptor, if it is the last one, increase to first one of the ring buffer. */
-        if (curBuffDescrip->control & ENET_BUFFDESCRIPTOR_RX_WRAP_MASK)
-        {
-            curBuffDescrip = handle->rxBdBase;
-        }
-        else
-        {
-            curBuffDescrip++;
-        }
-
-    } while (curBuffDescrip != handle->rxBdCurrent);
-}
-
-status_t ENET_GetRxFrameSize(enet_handle_t *handle, uint32_t *length)
-{
-    assert(handle);
-    assert(handle->rxBdCurrent);
-    assert(length);
-
-    uint16_t validLastMask = ENET_BUFFDESCRIPTOR_RX_LAST_MASK | ENET_BUFFDESCRIPTOR_RX_EMPTY_MASK;
-    volatile enet_rx_bd_struct_t *curBuffDescrip = handle->rxBdCurrent;
-
-    /* Check the current buffer descriptor's empty flag.  if empty means there is no frame received. */
-    if (curBuffDescrip->control & ENET_BUFFDESCRIPTOR_RX_EMPTY_MASK)
-    {
-        *length = 0;
-        return kStatus_ENET_RxFrameEmpty;
-    }
-
-    do
-    {
-        /* Find the last buffer descriptor. */
-        if ((curBuffDescrip->control & validLastMask) == ENET_BUFFDESCRIPTOR_RX_LAST_MASK)
-        {
-            /* The last buffer descriptor in the frame check the status of the received frame. */
-            if ((curBuffDescrip->control & ENET_BUFFDESCRIPTOR_RX_ERR_MASK)
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-                || (curBuffDescrip->controlExtend1 & ENET_BUFFDESCRIPTOR_RX_EXT_ERR_MASK)
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-                    )
-            {
-                *length = 0;
-                return kStatus_ENET_RxFrameError;
-            }
-            /* FCS is removed by MAC. */
-            *length = curBuffDescrip->length;
-            return kStatus_Success;
-        }
-        /* Increase the buffer descriptor, if it is the last one, increase to first one of the ring buffer. */
-        if (curBuffDescrip->control & ENET_BUFFDESCRIPTOR_RX_WRAP_MASK)
-        {
-            curBuffDescrip = handle->rxBdBase;
-        }
-        else
-        {
-            curBuffDescrip++;
-        }
-
-    } while (curBuffDescrip != handle->rxBdCurrent);
-
-    /* The frame is on processing - set to empty status to make application to receive it next time. */
-    return kStatus_ENET_RxFrameEmpty;
-}
-
-status_t ENET_ReadFrame(ENET_Type *base, enet_handle_t *handle, uint8_t *data, uint32_t length)
-{
-    assert(handle);
-    assert(handle->rxBdCurrent);
-
-    uint32_t len = 0;
-    uint32_t offset = 0;
-    bool isLastBuff = false;
-    volatile enet_rx_bd_struct_t *curBuffDescrip;
-    status_t result = kStatus_Success;
-
-    /* For data-NULL input, only update the buffer descriptor. */
-    if (!data)
-    {
-        do
-        {
-            /* Get the current buffer descriptor. */
-            curBuffDescrip = handle->rxBdCurrent;
-            /* Increase current buffer descriptor to the next one. */
-            if (curBuffDescrip->control & ENET_BUFFDESCRIPTOR_RX_WRAP_MASK)
-            {
-                handle->rxBdCurrent = handle->rxBdBase;
-            }
-            else
-            {
-                handle->rxBdCurrent++;
-            }
-
-            /* The last buffer descriptor of a frame. */
-            if (curBuffDescrip->control & ENET_BUFFDESCRIPTOR_RX_LAST_MASK)
-            {
-                /* Find the last buffer descriptor for the frame*/
-                break;
-            }
-        } while (handle->rxBdCurrent != handle->rxBdDirty);
-
-        /* Update all receive buffer descriptors for the whole frame. */
-        ENET_UpdateReadBuffers(base, handle);
-
-        return result;
-    }
-    else
-    {
-        /* Frame read from the MAC to user buffer and update the buffer descriptors.
-        Process the frame, a frame on several receive buffers are considered . */
-        /* Get the current buffer descriptor. */
-        curBuffDescrip = handle->rxBdCurrent;
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-        enet_ptp_time_data_t ptpTimestamp;
-        bool isPtpEventMessage = false;
-
-        /* Parse the PTP message according to the header message. */
-        isPtpEventMessage = ENET_Ptp1588ParseFrame(curBuffDescrip->buffer, &ptpTimestamp, false);
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-
-        while (!isLastBuff)
-        {
-            /* Increase current buffer descriptor to the next one. */
-            if (curBuffDescrip->control & ENET_BUFFDESCRIPTOR_RX_WRAP_MASK)
-            {
-                handle->rxBdCurrent = handle->rxBdBase;
-            }
-            else
-            {
-                handle->rxBdCurrent++;
-            }
-
-            /* The last buffer descriptor of a frame. */
-            if (curBuffDescrip->control & ENET_BUFFDESCRIPTOR_RX_LAST_MASK)
-            {
-                /* This is a valid frame. */
-                isLastBuff = true;
-                if (length == curBuffDescrip->length)
-                {
-                    /* Copy the frame to user's buffer without FCS. */
-                    len = curBuffDescrip->length - offset;
-                    memcpy(data + offset, curBuffDescrip->buffer, len);
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-                    /* Store the PTP 1588 timestamp for received PTP event frame. */
-                    if (isPtpEventMessage)
-                    {
-                        /* Set the timestamp to the timestamp ring. */
-                        ptpTimestamp.timeStamp.nanosecond = curBuffDescrip->timestamp;
-                        result = ENET_StoreRxFrameTime(base, handle, &ptpTimestamp);
-                    }
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-                    ENET_UpdateReadBuffers(base, handle);
-                    return result;
-                }
-            }
-            else
-            {
-                /* Store the fragments of a frame on several buffer descriptors. */
-                isLastBuff = false;
-                memcpy(data + offset, curBuffDescrip->buffer, handle->rxBuffSizeAlign);
-                offset += handle->rxBuffSizeAlign;
-                if (offset >= length)
-                {
-                    break;
-                }
-            }
-
-            /* Get the current buffer descriptor. */
-            curBuffDescrip = handle->rxBdCurrent;
-        }
-        /* All error happens will break the while loop and arrive here to update receive buffers. */
-        ENET_UpdateReadBuffers(base, handle);
-    }
-    return kStatus_ENET_RxFrameFail;
-}
-
-static void ENET_UpdateReadBuffers(ENET_Type *base, enet_handle_t *handle)
-{
-    assert(handle);
-
-    do
-    {
-        /* Clears status. */
-        handle->rxBdDirty->control &= ENET_BUFFDESCRIPTOR_RX_WRAP_MASK;
-        /* Sets the receive buffer descriptor with the empty flag. */
-        handle->rxBdDirty->control |= ENET_BUFFDESCRIPTOR_RX_EMPTY_MASK;
-        /* Increases the buffer descriptor to the next one. */
-        if (handle->rxBdDirty->control & ENET_BUFFDESCRIPTOR_RX_WRAP_MASK)
-        {
-            handle->rxBdDirty = handle->rxBdBase;
-        }
-        else
-        {
-            handle->rxBdDirty++;
-        }
-
-        /* Actives the receive buffer descriptor. */
-        base->RDAR = ENET_RDAR_RDAR_MASK;
-
-    } while (handle->rxBdDirty != handle->rxBdCurrent);
-}
-
-status_t ENET_SendFrame(ENET_Type *base, enet_handle_t *handle, uint8_t *data, uint32_t length)
-{
-    assert(handle);
-    assert(handle->txBdCurrent);
-    assert(data);
-    assert(length <= (ENET_FRAME_MAX_VALNFRAMELEN - 4));
-
-    volatile enet_tx_bd_struct_t *curBuffDescrip = handle->txBdCurrent;
-    uint32_t len = 0;
-    uint32_t sizeleft = 0;
-
-    /* Check if the transmit buffer is ready. */
-    if (curBuffDescrip->control & ENET_BUFFDESCRIPTOR_TX_READY_MASK)
-    {
-        return kStatus_ENET_TxFrameBusy;
-    }
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-    bool isPtpEventMessage = false;
-    /* Check PTP message with the PTP header. */
-    isPtpEventMessage = ENET_Ptp1588ParseFrame(data, NULL, true);
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-    /* One transmit buffer is enough for one frame. */
-    if (handle->txBuffSizeAlign >= length)
-    {
-        /* Copy data to the buffer for uDMA transfer. */
-        memcpy(curBuffDescrip->buffer, data, length);
-        /* Set data length. */
-        curBuffDescrip->length = length;
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-        /* For enable the timestamp. */
-        if (isPtpEventMessage)
-        {
-            curBuffDescrip->controlExtend1 |= ENET_BUFFDESCRIPTOR_TX_TIMESTAMP_MASK;
-        }
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-        curBuffDescrip->control |= (ENET_BUFFDESCRIPTOR_TX_READY_MASK | ENET_BUFFDESCRIPTOR_TX_LAST_MASK);
-
-        /* Increase the buffer descriptor address. */
-        if (curBuffDescrip->control & ENET_BUFFDESCRIPTOR_TX_WRAP_MASK)
-        {
-            handle->txBdCurrent = handle->txBdBase;
-        }
-        else
-        {
-            handle->txBdCurrent++;
-        }
-
-        /* Active the transmit buffer descriptor. */
-        base->TDAR = ENET_TDAR_TDAR_MASK;
-        return kStatus_Success;
-    }
-    else
-    {
-        /* One frame requires more than one transmit buffers. */
-        do
-        {
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-            /* For enable the timestamp. */
-            if (isPtpEventMessage)
-            {
-                curBuffDescrip->controlExtend1 |= ENET_BUFFDESCRIPTOR_TX_TIMESTAMP_MASK;
-            }
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-
-            /* Increase the buffer descriptor address. */
-            if (curBuffDescrip->control & ENET_BUFFDESCRIPTOR_TX_WRAP_MASK)
-            {
-                handle->txBdCurrent = handle->txBdBase;
-            }
-            else
-            {
-                handle->txBdCurrent++;
-            }
-            /* update the size left to be transmit. */
-            sizeleft = length - len;
-            if (sizeleft > handle->txBuffSizeAlign)
-            {
-                /* Data copy. */
-                memcpy(curBuffDescrip->buffer, data + len, handle->txBuffSizeAlign);
-                /* Data length update. */
-                curBuffDescrip->length = handle->txBuffSizeAlign;
-                len += handle->txBuffSizeAlign;
-                /* Sets the control flag. */
-                curBuffDescrip->control |= ENET_BUFFDESCRIPTOR_TX_READY_MASK;
-                /* Active the transmit buffer descriptor*/
-                base->TDAR = ENET_TDAR_TDAR_MASK;
-            }
-            else
-            {
-                memcpy(curBuffDescrip->buffer, data + len, sizeleft);
-                curBuffDescrip->length = sizeleft;
-                /* Set Last buffer wrap flag. */
-                curBuffDescrip->control |= ENET_BUFFDESCRIPTOR_TX_READY_MASK | ENET_BUFFDESCRIPTOR_TX_LAST_MASK;
-                /* Active the transmit buffer descriptor. */
-                base->TDAR = ENET_TDAR_TDAR_MASK;
-                return kStatus_Success;
-            }
-
-            /* Get the current buffer descriptor address. */
-            curBuffDescrip = handle->txBdCurrent;
-
-        } while (!(curBuffDescrip->control & ENET_BUFFDESCRIPTOR_TX_READY_MASK));
-
-        return kStatus_ENET_TxFrameFail;
-    }
-}
-
-void ENET_AddMulticastGroup(ENET_Type *base, uint8_t *address)
-{
-    assert(address);
-
-    uint32_t crc = 0xFFFFFFFFU;
-    uint32_t count1 = 0;
-    uint32_t count2 = 0;
-
-    /* Calculates the CRC-32 polynomial on the multicast group address. */
-    for (count1 = 0; count1 < ENET_FRAME_MACLEN; count1++)
-    {
-        uint8_t c = address[count1];
-        for (count2 = 0; count2 < 0x08U; count2++)
-        {
-            if ((c ^ crc) & 1U)
-            {
-                crc >>= 1U;
-                c >>= 1U;
-                crc ^= 0xEDB88320U;
-            }
-            else
-            {
-                crc >>= 1U;
-                c >>= 1U;
-            }
-        }
-    }
-
-    /* Enable a multicast group address. */
-    if (!((crc >> 0x1FU) & 1U))
-    {
-        base->GALR = 1U << ((crc >> 0x1AU) & 0x1FU);
-    }
-    else
-    {
-        base->GAUR = 1U << ((crc >> 0x1AU) & 0x1FU);
-    }
-}
-
-void ENET_LeaveMulticastGroup(ENET_Type *base, uint8_t *address)
-{
-    assert(address);
-
-    uint32_t crc = 0xFFFFFFFFU;
-    uint32_t count1 = 0;
-    uint32_t count2 = 0;
-
-    /* Calculates the CRC-32 polynomial on the multicast group address. */
-    for (count1 = 0; count1 < ENET_FRAME_MACLEN; count1++)
-    {
-        uint8_t c = address[count1];
-        for (count2 = 0; count2 < 0x08U; count2++)
-        {
-            if ((c ^ crc) & 1U)
-            {
-                crc >>= 1U;
-                c >>= 1U;
-                crc ^= 0xEDB88320U;
-            }
-            else
-            {
-                crc >>= 1U;
-                c >>= 1U;
-            }
-        }
-    }
-
-    /* Set the hash table. */
-    if (!((crc >> 0x1FU) & 1U))
-    {
-        base->GALR &= ~(1U << ((crc >> 0x1AU) & 0x1FU));
-    }
-    else
-    {
-        base->GAUR &= ~(1U << ((crc >> 0x1AU) & 0x1FU));
-    }
-}
-
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-status_t ENET_GetTxErrAfterSendFrame(enet_handle_t *handle, enet_data_error_stats_t *eErrorStatic)
-{
-    assert(handle);
-    assert(eErrorStatic);
-
-    uint16_t control = 0;
-    uint16_t controlExt = 0;
-
-    do
-    {
-        /* Get the current dirty transmit buffer descriptor. */
-        control = handle->txBdDirtyStatic->control;
-        controlExt = handle->txBdDirtyStatic->controlExtend0;
-        /* Get the control status data, If the buffer descriptor has not been processed break out. */
-        if (control & ENET_BUFFDESCRIPTOR_TX_READY_MASK)
-        {
-            return kStatus_ENET_TxFrameBusy;
-        }
-        /* Increase the transmit dirty static pointer. */
-        if (handle->txBdDirtyStatic->control & ENET_BUFFDESCRIPTOR_TX_WRAP_MASK)
-        {
-            handle->txBdDirtyStatic = handle->txBdBase;
-        }
-        else
-        {
-            handle->txBdDirtyStatic++;
-        }
-
-        /* If the transmit buffer descriptor is ready and the last buffer descriptor, store packet statistic. */
-        if (control & ENET_BUFFDESCRIPTOR_TX_LAST_MASK)
-        {
-            if (controlExt & ENET_BUFFDESCRIPTOR_TX_ERR_MASK)
-            {
-                /* Transmit error. */
-                eErrorStatic->statsTxErr++;
-            }
-            if (controlExt & ENET_BUFFDESCRIPTOR_TX_EXCCOLLISIONERR_MASK)
-            {
-                /* Transmit excess collision error. */
-                eErrorStatic->statsTxExcessCollisionErr++;
-            }
-            if (controlExt & ENET_BUFFDESCRIPTOR_TX_LATECOLLISIONERR_MASK)
-            {
-                /* Transmit late collision error. */
-                eErrorStatic->statsTxLateCollisionErr++;
-            }
-            if (controlExt & ENET_BUFFDESCRIPTOR_TX_UNDERFLOWERR_MASK)
-            {
-                /* Transmit under flow error. */
-                eErrorStatic->statsTxUnderFlowErr++;
-            }
-            if (controlExt & ENET_BUFFDESCRIPTOR_TX_OVERFLOWERR_MASK)
-            {
-                /* Transmit over flow error. */
-                eErrorStatic->statsTxOverFlowErr++;
-            }
-            return kStatus_Success;
-        }
-
-    } while (handle->txBdDirtyStatic != handle->txBdCurrent);
-
-    return kStatus_ENET_TxFrameFail;
-}
-
-static bool ENET_Ptp1588ParseFrame(uint8_t *data, enet_ptp_time_data_t *ptpTsData, bool isFastEnabled)
-{
-    assert(data);
-    if (!isFastEnabled)
-    {
-        assert(ptpTsData);
-    }
-
-    bool isPtpMsg = false;
-    uint8_t *buffer = data;
-    uint16_t ptpType;
-
-    /* Check for VLAN frame. */
-    if (*(uint16_t *)(buffer + ENET_PTP1588_ETHL2_PACKETTYPE_OFFSET) == ENET_HTONS(ENET_8021QVLAN))
-    {
-        buffer += (ENET_FRAME_VLAN_HEADERLEN - ENET_FRAME_HEADERLEN);
-    }
-
-    ptpType = *(uint16_t *)(buffer + ENET_PTP1588_ETHL2_PACKETTYPE_OFFSET);
-    switch (ENET_HTONS(ptpType))
-    { /* Ethernet layer 2. */
-        case ENET_ETHERNETL2:
-            if (*(uint8_t *)(buffer + ENET_PTP1588_ETHL2_MSGTYPE_OFFSET) <= kENET_PtpEventMsgType)
-            {
-                isPtpMsg = true;
-                if (!isFastEnabled)
-                {
-                    /* It's a ptpv2 message and store the ptp header information. */
-                    ptpTsData->version = (*(uint8_t *)(buffer + ENET_PTP1588_ETHL2_VERSION_OFFSET)) & 0x0F;
-                    ptpTsData->messageType = (*(uint8_t *)(buffer + ENET_PTP1588_ETHL2_MSGTYPE_OFFSET)) & 0x0F;
-                    ptpTsData->sequenceId = ENET_HTONS(*(uint16_t *)(buffer + ENET_PTP1588_ETHL2_SEQUENCEID_OFFSET));
-                    memcpy((void *)&ptpTsData->sourcePortId[0], (void *)(buffer + ENET_PTP1588_ETHL2_CLOCKID_OFFSET),
-                           kENET_PtpSrcPortIdLen);
-                }
-            }
-            break;
-        /* IPV4. */
-        case ENET_IPV4:
-            if ((*(uint8_t *)(buffer + ENET_PTP1588_IPVERSION_OFFSET) >> 4) == ENET_IPV4VERSION)
-            {
-                if (((*(uint16_t *)(buffer + ENET_PTP1588_IPV4_UDP_PORT_OFFSET)) == ENET_HTONS(kENET_PtpEventPort)) &&
-                    (*(uint8_t *)(buffer + ENET_PTP1588_IPV4_UDP_PROTOCOL_OFFSET) == ENET_UDPVERSION))
-                {
-                    /* Set the PTP message flag. */
-                    isPtpMsg = true;
-                    if (!isFastEnabled)
-                    {
-                        /* It's a IPV4 ptp message and store the ptp header information. */
-                        ptpTsData->version = (*(uint8_t *)(buffer + ENET_PTP1588_IPV4_UDP_VERSION_OFFSET)) & 0x0F;
-                        ptpTsData->messageType = (*(uint8_t *)(buffer + ENET_PTP1588_IPV4_UDP_MSGTYPE_OFFSET)) & 0x0F;
-                        ptpTsData->sequenceId =
-                            ENET_HTONS(*(uint16_t *)(buffer + ENET_PTP1588_IPV4_UDP_SEQUENCEID_OFFSET));
-                        memcpy((void *)&ptpTsData->sourcePortId[0],
-                               (void *)(buffer + ENET_PTP1588_IPV4_UDP_CLKID_OFFSET), kENET_PtpSrcPortIdLen);
-                    }
-                }
-            }
-            break;
-        /* IPV6. */
-        case ENET_IPV6:
-            if ((*(uint8_t *)(buffer + ENET_PTP1588_IPVERSION_OFFSET) >> 4) == ENET_IPV6VERSION)
-            {
-                if (((*(uint16_t *)(buffer + ENET_PTP1588_IPV6_UDP_PORT_OFFSET)) == ENET_HTONS(kENET_PtpEventPort)) &&
-                    (*(uint8_t *)(buffer + ENET_PTP1588_IPV6_UDP_PROTOCOL_OFFSET) == ENET_UDPVERSION))
-                {
-                    /* Set the PTP message flag. */
-                    isPtpMsg = true;
-                    if (!isFastEnabled)
-                    {
-                        /* It's a IPV6 ptp message and store the ptp header information. */
-                        ptpTsData->version = (*(uint8_t *)(buffer + ENET_PTP1588_IPV6_UDP_VERSION_OFFSET)) & 0x0F;
-                        ptpTsData->messageType = (*(uint8_t *)(buffer + ENET_PTP1588_IPV6_UDP_MSGTYPE_OFFSET)) & 0x0F;
-                        ptpTsData->sequenceId =
-                            ENET_HTONS(*(uint16_t *)(buffer + ENET_PTP1588_IPV6_UDP_SEQUENCEID_OFFSET));
-                        memcpy((void *)&ptpTsData->sourcePortId[0],
-                               (void *)(buffer + ENET_PTP1588_IPV6_UDP_CLKID_OFFSET), kENET_PtpSrcPortIdLen);
-                    }
-                }
-            }
-            break;
-        default:
-            break;
-    }
-    return isPtpMsg;
-}
-
-void ENET_Ptp1588Configure(ENET_Type *base, enet_handle_t *handle, enet_ptp_config_t *ptpConfig)
-{
-    assert(handle);
-    assert(ptpConfig);
-
-    uint32_t instance = ENET_GetInstance(base);
-
-    /* Start the 1588 timer. */
-    ENET_Ptp1588StartTimer(base, ptpConfig->ptp1588ClockSrc_Hz);
-
-    /* Enables the time stamp interrupt for the master clock on a device. */
-    ENET_EnableInterrupts(base, kENET_TsTimerInterrupt);
-    EnableIRQ(s_enetTsIrqId[instance]);
-
-    /* Enables the transmit interrupt to store the transmit frame time-stamp. */
-    ENET_EnableInterrupts(base, kENET_TxFrameInterrupt);
-    EnableIRQ(s_enetTxIrqId[instance]);
-
-    /* Setting the receive and transmit state for transaction. */
-    handle->rxPtpTsDataRing.ptpTsData = ptpConfig->rxPtpTsData;
-    handle->rxPtpTsDataRing.size = ptpConfig->ptpTsRxBuffNum;
-    handle->rxPtpTsDataRing.front = 0;
-    handle->rxPtpTsDataRing.end = 0;
-    handle->txPtpTsDataRing.ptpTsData = ptpConfig->txPtpTsData;
-    handle->txPtpTsDataRing.size = ptpConfig->ptpTsTxBuffNum;
-    handle->txPtpTsDataRing.front = 0;
-    handle->txPtpTsDataRing.end = 0;
-    handle->msTimerSecond = 0;
-    handle->txBdDirtyTime = handle->txBdBase;
-    handle->txBdDirtyStatic = handle->txBdBase;
-}
-
-void ENET_Ptp1588StartTimer(ENET_Type *base, uint32_t ptpClkSrc)
-{
-    /* Restart PTP 1588 timer, master clock. */
-    base->ATCR = ENET_ATCR_RESTART_MASK;
-
-    /* Initializes PTP 1588 timer. */
-    base->ATINC = ENET_ATINC_INC(ENET_NANOSECOND_ONE_SECOND / ptpClkSrc);
-    base->ATPER = ENET_NANOSECOND_ONE_SECOND;
-    /* Sets periodical event and the event signal output assertion and Actives PTP 1588 timer.  */
-    base->ATCR = ENET_ATCR_PEREN_MASK | ENET_ATCR_PINPER_MASK | ENET_ATCR_EN_MASK;
-}
-
-void ENET_Ptp1588GetTimer(ENET_Type *base, enet_handle_t *handle, enet_ptp_time_t *ptpTime)
-{
-    assert(handle);
-    assert(ptpTime);
-    uint16_t count = ENET_1588TIME_DELAY_COUNT;
-    uint32_t primask;
-
-    /* Disables the interrupt. */
-    primask = DisableGlobalIRQ();
-
-    /* Get the current PTP time. */
-    ptpTime->second = handle->msTimerSecond;
-    /* Get the nanosecond from the master timer. */
-    base->ATCR |= ENET_ATCR_CAPTURE_MASK;
-    /* Add at least six clock cycle delay to get accurate time.
-       It's the requirement when the 1588 clock source is slower
-       than the register clock.
-    */
-    while (count--)
-    {
-        __NOP();
-    }
-    /* Get the captured time. */
-    ptpTime->nanosecond = base->ATVR;
-
-    /* Enables the interrupt. */
-    EnableGlobalIRQ(primask);
-}
-
-void ENET_Ptp1588SetTimer(ENET_Type *base, enet_handle_t *handle, enet_ptp_time_t *ptpTime)
-{
-    assert(handle);
-    assert(ptpTime);
-
-    uint32_t primask;
-
-    /* Disables the interrupt. */
-    primask = DisableGlobalIRQ();
-
-    /* Sets PTP timer. */
-    handle->msTimerSecond = ptpTime->second;
-    base->ATVR = ptpTime->nanosecond;
-
-    /* Enables the interrupt. */
-    EnableGlobalIRQ(primask);
-}
-
-void ENET_Ptp1588AdjustTimer(ENET_Type *base, uint32_t corrIncrease, uint32_t corrPeriod)
-{
-    /* Set correction for PTP timer increment. */
-    base->ATINC = (base->ATINC & ~ENET_ATINC_INC_CORR_MASK) | (corrIncrease << ENET_ATINC_INC_CORR_SHIFT);
-    /* Set correction for PTP timer period. */
-    base->ATCOR = (base->ATCOR & ~ENET_ATCOR_COR_MASK) | (corrPeriod << ENET_ATCOR_COR_SHIFT);
-}
-
-static status_t ENET_Ptp1588UpdateTimeRing(enet_ptp_time_data_ring_t *ptpTsDataRing, enet_ptp_time_data_t *ptpTimeData)
-{
-    assert(ptpTsDataRing);
-    assert(ptpTsDataRing->ptpTsData);
-    assert(ptpTimeData);
-
-    uint16_t usedBuffer = 0;
-
-    /* Check if the buffers ring is full. */
-    if (ptpTsDataRing->end >= ptpTsDataRing->front)
-    {
-        usedBuffer = ptpTsDataRing->end - ptpTsDataRing->front;
-    }
-    else
-    {
-        usedBuffer = ptpTsDataRing->size - (ptpTsDataRing->front - ptpTsDataRing->end);
-    }
-
-    if (usedBuffer == ptpTsDataRing->size)
-    {
-        return kStatus_ENET_PtpTsRingFull;
-    }
-
-    /* Copy the new data into the buffer. */
-    memcpy((ptpTsDataRing->ptpTsData + ptpTsDataRing->end), ptpTimeData, sizeof(enet_ptp_time_data_t));
-
-    /* Increase the buffer pointer to the next empty one. */
-    ptpTsDataRing->end = (ptpTsDataRing->end + 1) % ptpTsDataRing->size;
-
-    return kStatus_Success;
-}
-
-static status_t ENET_Ptp1588SearchTimeRing(enet_ptp_time_data_ring_t *ptpTsDataRing, enet_ptp_time_data_t *ptpTimedata)
-{
-    assert(ptpTsDataRing);
-    assert(ptpTsDataRing->ptpTsData);
-    assert(ptpTimedata);
-
-    uint32_t index;
-    uint32_t size;
-    uint16_t usedBuffer = 0;
-
-    /* Check the PTP 1588 timestamp ring. */
-    if (ptpTsDataRing->front == ptpTsDataRing->end)
-    {
-        return kStatus_ENET_PtpTsRingEmpty;
-    }
-
-    /* Search the element in the ring buffer */
-    index = ptpTsDataRing->front;
-    size = ptpTsDataRing->size;
-    while (index != ptpTsDataRing->end)
-    {
-        if (((ptpTsDataRing->ptpTsData + index)->sequenceId == ptpTimedata->sequenceId) &&
-            (!memcmp(((void *)&(ptpTsDataRing->ptpTsData + index)->sourcePortId[0]),
-                     (void *)&ptpTimedata->sourcePortId[0], kENET_PtpSrcPortIdLen)) &&
-            ((ptpTsDataRing->ptpTsData + index)->version == ptpTimedata->version) &&
-            ((ptpTsDataRing->ptpTsData + index)->messageType == ptpTimedata->messageType))
-        {
-            break;
-        }
-
-        /* Increase the ptp ring index. */
-        index = (index + 1) % size;
-    }
-
-    if (index == ptpTsDataRing->end)
-    {
-        /* Check if buffers is full. */
-        if (ptpTsDataRing->end >= ptpTsDataRing->front)
-        {
-            usedBuffer = ptpTsDataRing->end - ptpTsDataRing->front;
-        }
-        else
-        {
-            usedBuffer = ptpTsDataRing->size - (ptpTsDataRing->front - ptpTsDataRing->end);
-        }
-
-        if (usedBuffer == ptpTsDataRing->size)
-        { /* Drop one in the front. */
-            ptpTsDataRing->front = (ptpTsDataRing->front + 1) % size;
-        }
-        return kStatus_ENET_PtpTsRingFull;
-    }
-
-    /* Get the right timestamp of the required ptp messag. */
-    ptpTimedata->timeStamp.second = (ptpTsDataRing->ptpTsData + index)->timeStamp.second;
-    ptpTimedata->timeStamp.nanosecond = (ptpTsDataRing->ptpTsData + index)->timeStamp.nanosecond;
-
-    /* Increase the index. */
-    ptpTsDataRing->front = (ptpTsDataRing->front + 1) % size;
-
-    return kStatus_Success;
-}
-
-static status_t ENET_StoreRxFrameTime(ENET_Type *base, enet_handle_t *handle, enet_ptp_time_data_t *ptpTimeData)
-{
-    assert(handle);
-    assert(ptpTimeData);
-
-    bool ptpTimerWrap = false;
-    enet_ptp_time_t ptpTimer;
-    uint32_t primask;
-
-    /* Disables the interrupt. */
-    primask = DisableGlobalIRQ();
-
-    /* Get current PTP timer nanosecond value. */
-    ENET_Ptp1588GetTimer(base, handle, &ptpTimer);
-
-    /* Get PTP timer wrap event. */
-    ptpTimerWrap = base->EIR & kENET_TsTimerInterrupt;
-
-    /* Get transmit time stamp second. */
-    if ((ptpTimer.nanosecond > ptpTimeData->timeStamp.nanosecond) ||
-        ((ptpTimer.nanosecond < ptpTimeData->timeStamp.nanosecond) && ptpTimerWrap))
-    {
-        ptpTimeData->timeStamp.second = handle->msTimerSecond;
-    }
-    else
-    {
-        ptpTimeData->timeStamp.second = handle->msTimerSecond - 1;
-    }
-    /* Enable the interrupt. */
-    EnableGlobalIRQ(primask);
-
-    /* Store the timestamp to the receive time stamp ring. */
-    /* Check if the buffers ring is full. */
-    return ENET_Ptp1588UpdateTimeRing(&handle->rxPtpTsDataRing, ptpTimeData);
-}
-
-static status_t ENET_StoreTxFrameTime(ENET_Type *base, enet_handle_t *handle)
-{
-    assert(handle);
-
-    uint32_t primask;
-    bool ptpTimerWrap;
-    bool isPtpEventMessage = false;
-    enet_ptp_time_data_t ptpTimeData;
-    volatile enet_tx_bd_struct_t *curBuffDescrip = handle->txBdDirtyTime;
-
-    /* Get the control status data, If the buffer descriptor has not been processed break out. */
-    if (curBuffDescrip->control & ENET_BUFFDESCRIPTOR_TX_READY_MASK)
-    {
-        return kStatus_ENET_TxFrameBusy;
-    }
-
-    /* Parse the PTP message. */
-    isPtpEventMessage = ENET_Ptp1588ParseFrame(curBuffDescrip->buffer, &ptpTimeData, false);
-    if (isPtpEventMessage)
-    {
-        do
-        {
-            /* Increase current buffer descriptor to the next one. */
-            if (handle->txBdDirtyTime->control & ENET_BUFFDESCRIPTOR_TX_WRAP_MASK)
-            {
-                handle->txBdDirtyTime = handle->txBdBase;
-            }
-            else
-            {
-                handle->txBdDirtyTime++;
-            }
-
-            /* Do time stamp check on the last buffer descriptor of the frame. */
-            if (curBuffDescrip->control & ENET_BUFFDESCRIPTOR_TX_LAST_MASK)
-            {
-                /* Disables the interrupt. */
-                primask = DisableGlobalIRQ();
-
-                /* Get current PTP timer nanosecond value. */
-                ENET_Ptp1588GetTimer(base, handle, &ptpTimeData.timeStamp);
-
-                /* Get PTP timer wrap event. */
-                ptpTimerWrap = base->EIR & kENET_TsTimerInterrupt;
-
-                /* Get transmit time stamp second. */
-                if ((ptpTimeData.timeStamp.nanosecond > curBuffDescrip->timestamp) ||
-                    ((ptpTimeData.timeStamp.nanosecond < curBuffDescrip->timestamp) && ptpTimerWrap))
-                {
-                    ptpTimeData.timeStamp.second = handle->msTimerSecond;
-                }
-                else
-                {
-                    ptpTimeData.timeStamp.second = handle->msTimerSecond - 1;
-                }
-
-                /* Enable the interrupt. */
-                EnableGlobalIRQ(primask);
-
-                /* Store the timestamp to the transmit timestamp ring. */
-                return ENET_Ptp1588UpdateTimeRing(&handle->txPtpTsDataRing, &ptpTimeData);
-            }
-
-            /* Get the current transmit buffer descriptor. */
-            curBuffDescrip = handle->txBdDirtyTime;
-
-            /* Get the control status data, If the buffer descriptor has not been processed break out. */
-            if (curBuffDescrip->control & ENET_BUFFDESCRIPTOR_TX_READY_MASK)
-            {
-                return kStatus_ENET_TxFrameBusy;
-            }
-        } while (handle->txBdDirtyTime != handle->txBdCurrent);
-        return kStatus_ENET_TxFrameFail;
-    }
-    return kStatus_Success;
-}
-
-status_t ENET_GetTxFrameTime(enet_handle_t *handle, enet_ptp_time_data_t *ptpTimeData)
-{
-    assert(handle);
-    assert(ptpTimeData);
-
-    return ENET_Ptp1588SearchTimeRing(&handle->txPtpTsDataRing, ptpTimeData);
-}
-
-status_t ENET_GetRxFrameTime(enet_handle_t *handle, enet_ptp_time_data_t *ptpTimeData)
-{
-    assert(handle);
-    assert(ptpTimeData);
-
-    return ENET_Ptp1588SearchTimeRing(&handle->rxPtpTsDataRing, ptpTimeData);
-}
-
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-
-void ENET_TransmitIRQHandler(ENET_Type *base, enet_handle_t *handle)
-{
-    assert(handle);
-
-    /* Check if the transmit interrupt happen. */
-    if ((kENET_TxByteInterrupt | kENET_TxFrameInterrupt) & base->EIR)
-    {
-        /* Clear the transmit interrupt event. */
-        base->EIR = kENET_TxFrameInterrupt | kENET_TxByteInterrupt;
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-        /* Store the transmit timestamp from the buffer descriptor should be done here. */
-        ENET_StoreTxFrameTime(base, handle);
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-        /* Callback function. */
-        if (handle->callback)
-        {
-            handle->callback(base, handle, kENET_TxEvent, handle->userData);
-        }
-    }
-}
-
-void ENET_ReceiveIRQHandler(ENET_Type *base, enet_handle_t *handle)
-{
-    assert(handle);
-
-    /* Check if the receive interrupt happen. */
-    if ((kENET_RxByteInterrupt | kENET_RxFrameInterrupt) & base->EIR)
-    {
-        /* Clear the transmit interrupt event. */
-        base->EIR = kENET_RxFrameInterrupt | kENET_RxByteInterrupt;
-
-        /* Callback function. */
-        if (handle->callback)
-        {
-            handle->callback(base, handle, kENET_RxEvent, handle->userData);
-        }
-    }
-}
-
-void ENET_ErrorIRQHandler(ENET_Type *base, enet_handle_t *handle)
-{
-    assert(handle);
-
-    uint32_t errMask = kENET_BabrInterrupt | kENET_BabtInterrupt | kENET_EBusERInterrupt | kENET_PayloadRxInterrupt |
-                       kENET_LateCollisionInterrupt | kENET_RetryLimitInterrupt | kENET_UnderrunInterrupt;
-
-    /* Check if the PTP time stamp interrupt happen. */
-    if (kENET_WakeupInterrupt & base->EIR)
-    {
-        /* Clear the wakeup interrupt. */
-        base->EIR = kENET_WakeupInterrupt;
-        /* wake up and enter the normal mode. */
-        ENET_EnableSleepMode(base, false);
-        /* Callback function. */
-        if (handle->callback)
-        {
-            handle->callback(base, handle, kENET_WakeUpEvent, handle->userData);
-        }
-    }
-    else
-    {
-        /* Clear the time stamp interrupt. */
-        errMask &= base->EIR;
-        base->EIR = errMask;
-        /* Callback function. */
-        if (handle->callback)
-        {
-            handle->callback(base, handle, kENET_ErrEvent, handle->userData);
-        }
-    }
-}
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-void ENET_Ptp1588TimerIRQHandler(ENET_Type *base, enet_handle_t *handle)
-{
-    assert(handle);
-
-    /* Check if the PTP time stamp interrupt happen. */
-    if (kENET_TsTimerInterrupt & base->EIR)
-    {
-        /* Clear the time stamp interrupt. */
-        base->EIR = kENET_TsTimerInterrupt;
-
-        /* Increase timer second counter. */
-        handle->msTimerSecond++;
-
-        /* Callback function. */
-        if (handle->callback)
-        {
-            handle->callback(base, handle, kENET_TimeStampEvent, handle->userData);
-        }
-    }
-    else
-    {
-        /* Clear the time stamp interrupt. */
-        base->EIR = kENET_TsAvailInterrupt;
-        /* Callback function. */
-        if (handle->callback)
-        {
-            handle->callback(base, handle, kENET_TimeStampAvailEvent, handle->userData);
-        }
-    }
-}
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-
-void ENET_Transmit_IRQHandler(void)
-{
-    ENET_TransmitIRQHandler(ENET, s_ENETHandle[0]);
-}
-
-void ENET_Receive_IRQHandler(void)
-{
-    ENET_ReceiveIRQHandler(ENET, s_ENETHandle[0]);
-}
-
-void ENET_Error_IRQHandler(void)
-{
-    ENET_ErrorIRQHandler(ENET, s_ENETHandle[0]);
-}
-
-void ENET_1588_Timer_IRQHandler(void)
-{
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-    ENET_Ptp1588TimerIRQHandler(ENET, s_ENETHandle[0]);
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_enet.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1161 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_ENET_H_
-#define _FSL_ENET_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup enet
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief Defines the driver version. */
-#define FSL_ENET_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) /*!< Version 2.0.0. */
-/*@}*/
-
-/*! @name Control and status region bit masks of the receive buffer descriptor. */
-/*@{*/
-#define ENET_BUFFDESCRIPTOR_RX_EMPTY_MASK 0x8000U       /*!< Empty bit mask. */
-#define ENET_BUFFDESCRIPTOR_RX_SOFTOWNER1_MASK 0x4000U  /*!< Software owner one mask. */
-#define ENET_BUFFDESCRIPTOR_RX_WRAP_MASK 0x2000U        /*!< Next buffer descriptor is the start address. */
-#define ENET_BUFFDESCRIPTOR_RX_SOFTOWNER2_Mask 0x1000U  /*!< Software owner two mask. */
-#define ENET_BUFFDESCRIPTOR_RX_LAST_MASK 0x0800U        /*!< Last BD of the frame mask. */
-#define ENET_BUFFDESCRIPTOR_RX_MISS_MASK 0x0100U        /*!< Received because of the promiscuous mode. */
-#define ENET_BUFFDESCRIPTOR_RX_BROADCAST_MASK 0x0080U   /*!< Broadcast packet mask. */
-#define ENET_BUFFDESCRIPTOR_RX_MULTICAST_MASK 0x0040U   /*!< Multicast packet mask. */
-#define ENET_BUFFDESCRIPTOR_RX_LENVLIOLATE_MASK 0x0020U /*!< Length violation mask. */
-#define ENET_BUFFDESCRIPTOR_RX_NOOCTET_MASK 0x0010U     /*!< Non-octet aligned frame mask. */
-#define ENET_BUFFDESCRIPTOR_RX_CRC_MASK 0x0004U         /*!< CRC error mask. */
-#define ENET_BUFFDESCRIPTOR_RX_OVERRUN_MASK 0x0002U     /*!< FIFO overrun mask. */
-#define ENET_BUFFDESCRIPTOR_RX_TRUNC_MASK 0x0001U       /*!< Frame is truncated mask. */
-/*@}*/
-
-/*! @name Control and status bit masks of the transmit buffer descriptor. */
-/*@{*/
-#define ENET_BUFFDESCRIPTOR_TX_READY_MASK 0x8000U       /*!< Ready bit mask. */
-#define ENET_BUFFDESCRIPTOR_TX_SOFTOWENER1_MASK 0x4000U /*!< Software owner one mask. */
-#define ENET_BUFFDESCRIPTOR_TX_WRAP_MASK 0x2000U        /*!< Wrap buffer descriptor mask. */
-#define ENET_BUFFDESCRIPTOR_TX_SOFTOWENER2_MASK 0x1000U /*!< Software owner two mask. */
-#define ENET_BUFFDESCRIPTOR_TX_LAST_MASK 0x0800U        /*!< Last BD of the frame mask. */
-#define ENET_BUFFDESCRIPTOR_TX_TRANMITCRC_MASK 0x0400U  /*!< Transmit CRC mask. */
-/*@}*/
-
-/* Extended control regions for enhanced buffer descriptors. */
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-/*! @name First extended control region bit masks of the receive buffer descriptor. */
-/*@{*/
-#define ENET_BUFFDESCRIPTOR_RX_IPV4_MASK 0x0001U             /*!< Ipv4 frame mask. */
-#define ENET_BUFFDESCRIPTOR_RX_IPV6_MASK 0x0002U             /*!< Ipv6 frame mask. */
-#define ENET_BUFFDESCRIPTOR_RX_VLAN_MASK 0x0004U             /*!< VLAN frame mask. */
-#define ENET_BUFFDESCRIPTOR_RX_PROTOCOLCHECKSUM_MASK 0x0010U /*!< Protocol checksum error mask. */
-#define ENET_BUFFDESCRIPTOR_RX_IPHEADCHECKSUM_MASK 0x0020U   /*!< IP header checksum error mask. */
-/*@}*/
-
-/*! @name Second extended control region bit masks of the receive buffer descriptor. */
-/*@{*/
-#define ENET_BUFFDESCRIPTOR_RX_INTERRUPT_MASK 0x0080U /*!< BD interrupt mask. */
-#define ENET_BUFFDESCRIPTOR_RX_UNICAST_MASK 0x0100U   /*!< Unicast frame mask. */
-#define ENET_BUFFDESCRIPTOR_RX_COLLISION_MASK 0x0200U /*!< BD collision mask. */
-#define ENET_BUFFDESCRIPTOR_RX_PHYERR_MASK 0x0400U    /*!< PHY error mask. */
-#define ENET_BUFFDESCRIPTOR_RX_MACERR_MASK 0x8000U    /*!< Mac error mask. */
-/*@}*/
-
-/*! @name First extended control region bit masks of the transmit buffer descriptor. */
-/*@{*/
-#define ENET_BUFFDESCRIPTOR_TX_ERR_MASK 0x8000U              /*!< Transmit error mask. */
-#define ENET_BUFFDESCRIPTOR_TX_UNDERFLOWERR_MASK 0x2000U     /*!< Underflow error mask. */
-#define ENET_BUFFDESCRIPTOR_TX_EXCCOLLISIONERR_MASK 0x1000U  /*!< Excess collision error mask. */
-#define ENET_BUFFDESCRIPTOR_TX_FRAMEERR_MASK 0x0800U         /*!< Frame error mask. */
-#define ENET_BUFFDESCRIPTOR_TX_LATECOLLISIONERR_MASK 0x0400U /*!< Late collision error mask. */
-#define ENET_BUFFDESCRIPTOR_TX_OVERFLOWERR_MASK 0x0200U      /*!< Overflow error mask. */
-#define ENET_BUFFDESCRIPTOR_TX_TIMESTAMPERR_MASK 0x0100U     /*!< Timestamp error mask. */
-/*@}*/
-
-/*! @name Second extended control region bit masks of the transmit buffer descriptor. */
-/*@{*/
-#define ENET_BUFFDESCRIPTOR_TX_INTERRUPT_MASK 0x4000U /*!< Interrupt mask. */
-#define ENET_BUFFDESCRIPTOR_TX_TIMESTAMP_MASK 0x2000U /*!< Timestamp flag mask. */
-/*@}*/
-#endif                                                /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-
-/*! @brief Defines the receive error status flag mask. */
-#define ENET_BUFFDESCRIPTOR_RX_ERR_MASK                                        \
-    (ENET_BUFFDESCRIPTOR_RX_TRUNC_MASK | ENET_BUFFDESCRIPTOR_RX_OVERRUN_MASK | \
-     ENET_BUFFDESCRIPTOR_RX_LENVLIOLATE_MASK | ENET_BUFFDESCRIPTOR_RX_NOOCTET_MASK | ENET_BUFFDESCRIPTOR_RX_CRC_MASK)
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-#define ENET_BUFFDESCRIPTOR_RX_EXT_ERR_MASK \
-    (ENET_BUFFDESCRIPTOR_RX_MACERR_MASK | ENET_BUFFDESCRIPTOR_RX_PHYERR_MASK | ENET_BUFFDESCRIPTOR_RX_COLLISION_MASK)
-#endif
-
-/*! @name Defines the maximum Ethernet frame size. */
-/*@{*/
-#define ENET_FRAME_MAX_FRAMELEN 1518U     /*!< Maximum Ethernet frame size. */
-#define ENET_FRAME_MAX_VALNFRAMELEN 1522U /*!< Maximum VLAN frame size. */
-/*@}*/
-
-#define ENET_FIFO_MIN_RX_FULL 5U /*!< ENET minimum receive FIFO full. */
-#define ENET_RX_MIN_BUFFERSIZE 256U /*!< ENET minimum buffer size. */
-#define ENET_BUFF_ALIGNMENT 16U /*!< Ethernet buffer alignment. */
-
-/*! @brief Defines the PHY address scope for the ENET. */
-#define ENET_PHY_MAXADDRESS (ENET_MMFR_PA_MASK >> ENET_MMFR_PA_SHIFT)
-
-/*! @brief Defines the status return codes for transaction. */
-enum _enet_status
-{
-    kStatus_ENET_RxFrameError = MAKE_STATUS(kStatusGroup_ENET, 0U), /*!< A frame received but data error happen. */
-    kStatus_ENET_RxFrameFail = MAKE_STATUS(kStatusGroup_ENET, 1U),  /*!< Failed to receive a frame. */
-    kStatus_ENET_RxFrameEmpty = MAKE_STATUS(kStatusGroup_ENET, 2U), /*!< No frame arrive. */
-    kStatus_ENET_TxFrameBusy =
-        MAKE_STATUS(kStatusGroup_ENET, 3U),                       /*!< Transmit buffer descriptors are under process. */
-    kStatus_ENET_TxFrameFail = MAKE_STATUS(kStatusGroup_ENET, 4U) /*!< Transmit frame fail. */
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-    ,
-    kStatus_ENET_PtpTsRingFull = MAKE_STATUS(kStatusGroup_ENET, 5U), /*!< Timestamp ring full. */
-    kStatus_ENET_PtpTsRingEmpty = MAKE_STATUS(kStatusGroup_ENET, 6U) /*!< Timestamp ring empty. */
-#endif                                                               /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-};
-
-/*! @brief Defines the RMII or MII mode for data interface between the MAC and the PHY. */
-typedef enum _enet_mii_mode
-{
-    kENET_MiiMode = 0U, /*!< MII mode for data interface. */
-    kENET_RmiiMode      /*!< RMII mode for data interface. */
-} enet_mii_mode_t;
-
-/*! @brief Defines the 10 Mbps or 100 Mbps speed for the  MII data interface. */
-typedef enum _enet_mii_speed
-{
-    kENET_MiiSpeed10M = 0U, /*!< Speed 10 Mbps. */
-    kENET_MiiSpeed100M      /*!< Speed 100 Mbps. */
-} enet_mii_speed_t;
-
-/*! @brief Defines the half or full duplex for the MII data interface. */
-typedef enum _enet_mii_duplex
-{
-    kENET_MiiHalfDuplex = 0U, /*!< Half duplex mode. */
-    kENET_MiiFullDuplex       /*!< Full duplex mode. */
-} enet_mii_duplex_t;
-
-/*! @brief Defines the write operation for the MII management frame. */
-typedef enum _enet_mii_write
-{
-    kENET_MiiWriteNoCompliant = 0U, /*!< Write frame operation, but not MII-compliant. */
-    kENET_MiiWriteValidFrame        /*!< Write frame operation for a valid MII management frame. */
-} enet_mii_write_t;
-
-/*! @brief Defines the read operation for the MII management frame. */
-typedef enum _enet_mii_read
-{
-    kENET_MiiReadValidFrame = 2U, /*!< Read frame operation for a valid MII management frame. */
-    kENET_MiiReadNoCompliant = 3U /*!< Read frame operation, but not MII-compliant. */
-} enet_mii_read_t;
-
-/*! @brief Defines a special configuration for ENET MAC controller.
- *
- * These control flags are provided for special user requirements.
- * Normally, these control flags are unused for ENET initialization.
- * For special requirements, set the flags to
- * macSpecialConfig in the enet_config_t.
- * The kENET_ControlStoreAndFwdDisable is used to disable the FIFO store
- * and forward. FIFO store and forward means that the FIFO read/send is started
- * when a complete frame is stored in TX/RX FIFO. If this flag is set,
- * configure rxFifoFullThreshold and txFifoWatermark
- * in the enet_config_t.
- */
-typedef enum _enet_special_control_flag
-{
-    kENET_ControlFlowControlEnable = 0x0001U,       /*!< Enable ENET flow control: pause frame. */
-    kENET_ControlRxPayloadCheckEnable = 0x0002U,    /*!< Enable ENET receive payload length check. */
-    kENET_ControlRxPadRemoveEnable = 0x0004U,       /*!< Padding is removed from received frames. */
-    kENET_ControlRxBroadCastRejectEnable = 0x0008U, /*!< Enable broadcast frame reject. */
-    kENET_ControlMacAddrInsert = 0x0010U,           /*!< Enable MAC address insert. */
-    kENET_ControlStoreAndFwdDisable = 0x0020U,      /*!< Enable FIFO store and forward. */
-    kENET_ControlSMIPreambleDisable = 0x0040U,      /*!< Enable SMI preamble. */
-    kENET_ControlPromiscuousEnable = 0x0080U,       /*!< Enable promiscuous mode. */
-    kENET_ControlMIILoopEnable = 0x0100U,           /*!< Enable ENET MII loop back. */
-    kENET_ControlVLANTagEnable = 0x0200U            /*!< Enable VLAN tag frame. */
-} enet_special_control_flag_t;
-
-/*! @brief List of interrupts supported by the peripheral. This
- * enumeration uses one-bot encoding to allow a logical OR of multiple
- * members. Members usually map to interrupt enable bits in one or more
- * peripheral registers.
- */
-typedef enum _enet_interrupt_enable
-{
-    kENET_BabrInterrupt = ENET_EIR_BABR_MASK,        /*!< Babbling receive error interrupt source */
-    kENET_BabtInterrupt = ENET_EIR_BABT_MASK,        /*!< Babbling transmit error interrupt source */
-    kENET_GraceStopInterrupt = ENET_EIR_GRA_MASK,    /*!< Graceful stop complete interrupt source */
-    kENET_TxFrameInterrupt = ENET_EIR_TXF_MASK,      /*!< TX FRAME interrupt source */
-    kENET_TxByteInterrupt = ENET_EIR_TXB_MASK,       /*!< TX BYTE interrupt source */
-    kENET_RxFrameInterrupt = ENET_EIR_RXF_MASK,      /*!< RX FRAME interrupt source */
-    kENET_RxByteInterrupt = ENET_EIR_RXB_MASK,       /*!< RX BYTE interrupt source */
-    kENET_MiiInterrupt = ENET_EIR_MII_MASK,          /*!< MII interrupt source */
-    kENET_EBusERInterrupt = ENET_EIR_EBERR_MASK,     /*!< Ethernet bus error interrupt source */
-    kENET_LateCollisionInterrupt = ENET_EIR_LC_MASK, /*!< Late collision interrupt source */
-    kENET_RetryLimitInterrupt = ENET_EIR_RL_MASK,    /*!< Collision Retry Limit interrupt source */
-    kENET_UnderrunInterrupt = ENET_EIR_UN_MASK,      /*!< Transmit FIFO underrun interrupt source */
-    kENET_PayloadRxInterrupt = ENET_EIR_PLR_MASK,    /*!< Payload Receive interrupt source */
-    kENET_WakeupInterrupt = ENET_EIR_WAKEUP_MASK     /*!< WAKEUP interrupt source */
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-    ,
-    kENET_TsAvailInterrupt = ENET_EIR_TS_AVAIL_MASK, /*!< TS AVAIL interrupt source for PTP */
-    kENET_TsTimerInterrupt = ENET_EIR_TS_TIMER_MASK  /*!< TS WRAP interrupt source for PTP */
-#endif                                               /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-} enet_interrupt_enable_t;
-
-/*! @brief Defines the common interrupt event for callback use. */
-typedef enum _enet_event
-{
-    kENET_RxEvent,     /*!< Receive event. */
-    kENET_TxEvent,     /*!< Transmit event. */
-    kENET_ErrEvent,    /*!< Error event: BABR/BABT/EBERR/LC/RL/UN/PLR . */
-    kENET_WakeUpEvent, /*!< Wake up from sleep mode event. */
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-    kENET_TimeStampEvent,     /*!< Time stamp event. */
-    kENET_TimeStampAvailEvent /*!< Time stamp available event.*/
-#endif                        /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-} enet_event_t;
-
-/*! @brief Defines the transmit accelerator configuration. */
-typedef enum _enet_tx_accelerator
-{
-    kENET_TxAccelIsShift16Enabled = ENET_TACC_SHIFT16_MASK, /*!< Transmit FIFO shift-16. */
-    kENET_TxAccelIpCheckEnabled = ENET_TACC_IPCHK_MASK,     /*!< Insert IP header checksum. */
-    kENET_TxAccelProtoCheckEnabled = ENET_TACC_PROCHK_MASK  /*!< Insert protocol checksum. */
-} enet_tx_accelerator_t;
-
-/*! @brief Defines the receive accelerator configuration. */
-typedef enum _enet_rx_accelerator
-{
-    kENET_RxAccelPadRemoveEnabled = ENET_RACC_PADREM_MASK,  /*!< Padding removal for short IP frames. */
-    kENET_RxAccelIpCheckEnabled = ENET_RACC_IPDIS_MASK,     /*!< Discard with wrong IP header checksum. */
-    kENET_RxAccelProtoCheckEnabled = ENET_RACC_PRODIS_MASK, /*!< Discard with wrong protocol checksum. */
-    kENET_RxAccelMacCheckEnabled = ENET_RACC_LINEDIS_MASK,  /*!< Discard with Mac layer errors. */
-    kENET_RxAccelisShift16Enabled = ENET_RACC_SHIFT16_MASK  /*!< Receive FIFO shift-16. */
-} enet_rx_accelerator_t;
-
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-/*! @brief Defines the ENET PTP message related constant. */
-typedef enum _enet_ptp_event_type
-{
-    kENET_PtpEventMsgType = 3U,  /*!< PTP event message type. */
-    kENET_PtpSrcPortIdLen = 10U, /*!< PTP message sequence id length. */
-    kENET_PtpEventPort = 319U,   /*!< PTP event port number. */
-    kENET_PtpGnrlPort = 320U     /*!< PTP general port number. */
-} enet_ptp_event_type_t;
-
-/*! @brief Defines the IEEE 1588 PTP timer channel numbers. */
-typedef enum _enet_ptp_timer_channel
-{
-    kENET_PtpTimerChannel1 = 0U, /*!< IEEE 1588 PTP timer Channel 1. */
-    kENET_PtpTimerChannel2,      /*!< IEEE 1588 PTP timer Channel 2. */
-    kENET_PtpTimerChannel3,      /*!< IEEE 1588 PTP timer Channel 3. */
-    kENET_PtpTimerChannel4       /*!< IEEE 1588 PTP timer Channel 4. */
-} enet_ptp_timer_channel_t;
-
-/*! @brief Defines the capture or compare mode for IEEE 1588 PTP timer channels. */
-typedef enum _enet_ptp_timer_channel_mode
-{
-    kENET_PtpChannelDisable = 0U,                  /*!< Disable timer channel. */
-    kENET_PtpChannelRisingCapture = 1U,            /*!< Input capture on rising edge. */
-    kENET_PtpChannelFallingCapture = 2U,           /*!< Input capture on falling edge. */
-    kENET_PtpChannelBothCapture = 3U,              /*!< Input capture on both edges. */
-    kENET_PtpChannelSoftCompare = 4U,              /*!< Output compare software only. */
-    kENET_PtpChannelToggleCompare = 5U,            /*!< Toggle output on compare. */
-    kENET_PtpChannelClearCompare = 6U,             /*!< Clear output on compare. */
-    kENET_PtpChannelSetCompare = 7U,               /*!< Set output on compare. */
-    kENET_PtpChannelClearCompareSetOverflow = 10U, /*!< Clear output on compare, set output on overflow. */
-    kENET_PtpChannelSetCompareClearOverflow = 11U, /*!< Set output on compare, clear output on overflow. */
-    kENET_PtpChannelPulseLowonCompare = 14U,       /*!< Pulse output low on compare for one IEEE 1588 clock cycle. */
-    kENET_PtpChannelPulseHighonCompare = 15U       /*!< Pulse output high on compare for one IEEE 1588 clock cycle. */
-} enet_ptp_timer_channel_mode_t;
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-
-/*! @brief Defines the receive buffer descriptor structure for the little endian system.*/
-typedef struct _enet_rx_bd_struct
-{
-    uint16_t length;  /*!< Buffer descriptor data length. */
-    uint16_t control; /*!< Buffer descriptor control and status. */
-    uint8_t *buffer;  /*!< Data buffer pointer. */
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-    uint16_t controlExtend0;  /*!< Extend buffer descriptor control0. */
-    uint16_t controlExtend1;  /*!< Extend buffer descriptor control1. */
-    uint16_t payloadCheckSum; /*!< Internal payload checksum. */
-    uint8_t headerLength;     /*!< Header length. */
-    uint8_t protocolTyte;     /*!< Protocol type. */
-    uint16_t reserved0;
-    uint16_t controlExtend2; /*!< Extend buffer descriptor control2. */
-    uint32_t timestamp;      /*!< Timestamp. */
-    uint16_t reserved1;
-    uint16_t reserved2;
-    uint16_t reserved3;
-    uint16_t reserved4;
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-} enet_rx_bd_struct_t;
-
-/*! @brief Defines the enhanced transmit buffer descriptor structure for the little endian system. */
-typedef struct _enet_tx_bd_struct
-{
-    uint16_t length;  /*!< Buffer descriptor data length. */
-    uint16_t control; /*!< Buffer descriptor control and status. */
-    uint8_t *buffer;  /*!< Data buffer pointer. */
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-    uint16_t controlExtend0; /*!< Extend buffer descriptor control0. */
-    uint16_t controlExtend1; /*!< Extend buffer descriptor control1. */
-    uint16_t reserved0;
-    uint16_t reserved1;
-    uint16_t reserved2;
-    uint16_t controlExtend2; /*!< Extend buffer descriptor control2. */
-    uint32_t timestamp;      /*!< Timestamp. */
-    uint16_t reserved3;
-    uint16_t reserved4;
-    uint16_t reserved5;
-    uint16_t reserved6;
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-} enet_tx_bd_struct_t;
-
-/*! @brief Defines the ENET data error statistic structure. */
-typedef struct _enet_data_error_stats
-{
-    uint32_t statsRxLenGreaterErr; /*!< Receive length greater than RCR[MAX_FL]. */
-    uint32_t statsRxAlignErr;      /*!< Receive non-octet alignment/ */
-    uint32_t statsRxFcsErr;        /*!< Receive CRC error. */
-    uint32_t statsRxOverRunErr;    /*!< Receive over run. */
-    uint32_t statsRxTruncateErr;   /*!< Receive truncate. */
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-    uint32_t statsRxProtocolChecksumErr; /*!< Receive protocol checksum error. */
-    uint32_t statsRxIpHeadChecksumErr;   /*!< Receive IP header checksum error. */
-    uint32_t statsRxMacErr;              /*!< Receive Mac error. */
-    uint32_t statsRxPhyErr;              /*!< Receive PHY error. */
-    uint32_t statsRxCollisionErr;        /*!< Receive collision. */
-    uint32_t statsTxErr;                 /*!< The error happen when transmit the frame. */
-    uint32_t statsTxFrameErr;            /*!< The transmit frame is error. */
-    uint32_t statsTxOverFlowErr;         /*!< Transmit overflow. */
-    uint32_t statsTxLateCollisionErr;    /*!< Transmit late collision. */
-    uint32_t statsTxExcessCollisionErr;  /*!< Transmit excess collision.*/
-    uint32_t statsTxUnderFlowErr;        /*!< Transmit under flow error. */
-    uint32_t statsTxTsErr;               /*!< Transmit time stamp error. */
-#endif                                   /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-} enet_data_error_stats_t;
-
-/*! @brief Defines the receive buffer descriptor configure structure.
- *
- * Note: For the internal DMA requirements, the buffers have a corresponding alignment requirement:
- * 1. The aligned receive and transmit buffer size must be evenly divisible by 16.
- * 2. The aligned transmit and receive buffer descriptor start address must be at
- *    least 64 bit aligned. However, it's recommended to be evenly divisible by 16.
- * 3. The aligned transmit and receive buffer start address must be evenly divisible by 16.
- *    Receive buffers should be continuous with the total size equal to "rxBdNumber * rxBuffSizeAlign".
- *    Transmit buffers should be continuous with the total size equal to "txBdNumber * txBuffSizeAlign".
- */
-typedef struct _enet_buffer_config
-{
-    uint16_t rxBdNumber;                              /*!< Receive buffer descriptor number. */
-    uint16_t txBdNumber;                              /*!< Transmit buffer descriptor number. */
-    uint32_t rxBuffSizeAlign;                         /*!< Aligned receive data buffer size. */
-    uint32_t txBuffSizeAlign;                         /*!< Aligned transmit data buffer size. */
-    volatile enet_rx_bd_struct_t *rxBdStartAddrAlign; /*!< Aligned receive buffer descriptor start address. */
-    volatile enet_tx_bd_struct_t *txBdStartAddrAlign; /*!< Aligned transmit buffer descriptor start address. */
-    uint8_t *rxBufferAlign;                           /*!< Receive data buffer start address. */
-    uint8_t *txBufferAlign;                           /*!< Transmit data buffer start address. */
-} enet_buffer_config_t;
-
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-/*! @brief Defines the ENET PTP time stamp structure. */
-typedef struct _enet_ptp_time
-{
-    uint64_t second;     /*!< Second. */
-    uint32_t nanosecond; /*!< Nanosecond. */
-} enet_ptp_time_t;
-
-/*! @brief Defines the structure for the ENET PTP message data and timestamp data.*/
-typedef struct _enet_ptp_time_data
-{
-    uint8_t version;                             /*!< PTP version. */
-    uint8_t sourcePortId[kENET_PtpSrcPortIdLen]; /*!< PTP source port ID. */
-    uint16_t sequenceId;                         /*!< PTP sequence ID. */
-    uint8_t messageType;                         /*!< PTP message type. */
-    enet_ptp_time_t timeStamp;                   /*!< PTP timestamp. */
-} enet_ptp_time_data_t;
-
-/*! @brief Defines the ENET PTP ring buffer structure for the PTP message timestamp store.*/
-typedef struct _enet_ptp_time_data_ring
-{
-    uint32_t front;                  /*!< The first index of the ring. */
-    uint32_t end;                    /*!< The end index of the ring. */
-    uint32_t size;                   /*!< The size of the ring. */
-    enet_ptp_time_data_t *ptpTsData; /*!< PTP message data structure. */
-} enet_ptp_time_data_ring_t;
-
-/*! @brief Defines the ENET PTP configure structure. */
-typedef struct _enet_ptp_config
-{
-    uint8_t ptpTsRxBuffNum;            /*!< Receive 1588 timestamp buffer number*/
-    uint8_t ptpTsTxBuffNum;            /*!< Transmit 1588 timestamp buffer number*/
-    enet_ptp_time_data_t *rxPtpTsData; /*!< The start address of 1588 receive timestamp buffers */
-    enet_ptp_time_data_t *txPtpTsData; /*!< The start address of 1588 transmit timestamp buffers */
-    enet_ptp_timer_channel_t channel;  /*!< Used for ERRATA_2579: the PTP 1588 timer channel for time interrupt. */
-    uint32_t ptp1588ClockSrc_Hz;       /*!< The clock source of the PTP 1588 timer. */
-} enet_ptp_config_t;
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-
-
-
-/*! @brief Defines the basic configuration structure for the ENET device.
- *
- * Note:
- *  1. macSpecialConfig is used for a special control configuration, A logical OR of
- *  "enet_special_control_flag_t". For a special configuration for MAC,
- *  set this parameter to 0.
- *  2. txWatermark is used for a cut-through operation. It is in steps of 64 bytes:
- *  0/1  - 64 bytes written to TX FIFO before transmission of a frame begins.
- *  2    - 128 bytes written to TX FIFO ....
- *  3    - 192 bytes written to TX FIFO ....
- *  The maximum of txWatermark is 0x2F   - 4032 bytes written to TX FIFO ....
- *  txWatermark allows minimizing the transmit latency to set the txWatermark to 0 or 1
- *  or for larger bus access latency 3 or larger due to contention for the system bus.
- *  3. rxFifoFullThreshold is similar to the txWatermark for cut-through operation in RX.
- *  It is in 64-bit words. The minimum is ENET_FIFO_MIN_RX_FULL and the maximum is 0xFF.
- *  If the end of the frame is stored in FIFO and the frame size if smaller than the
- *  txWatermark, the frame is still transmitted. The rule  is the
- *  same for rxFifoFullThreshold in the receive direction.
- *  4. When "kENET_ControlFlowControlEnable" is set in the macSpecialConfig, ensure
- *  that the pauseDuration, rxFifoEmptyThreshold, and rxFifoStatEmptyThreshold
- *  are set for flow control enabled case.
- *  5. When "kENET_ControlStoreAndFwdDisabled" is set in the macSpecialConfig, ensure
- *  that the rxFifoFullThreshold and txFifoWatermark are set for store and forward disable.
- *  6. The rxAccelerConfig and txAccelerConfig default setting with 0 - accelerator
- *  are disabled. The "enet_tx_accelerator_t" and "enet_rx_accelerator_t" are
- *  recommended to be used to enable the transmit and receive accelerator.
- *  After the accelerators are enabled, the store and forward feature should be enabled.
- *  As a result, kENET_ControlStoreAndFwdDisabled should not be set.
- */
-typedef struct _enet_config
-{
-    uint32_t macSpecialConfig;    /*!< Mac special configuration. A logical OR of "enet_special_control_flag_t". */
-    uint32_t interrupt;           /*!< Mac interrupt source. A logical OR of "enet_interrupt_enable_t". */
-    uint16_t rxMaxFrameLen;       /*!< Receive maximum frame length. */
-    enet_mii_mode_t miiMode;      /*!< MII mode. */
-    enet_mii_speed_t miiSpeed;    /*!< MII Speed. */
-    enet_mii_duplex_t miiDuplex;  /*!< MII duplex. */
-    uint8_t rxAccelerConfig;      /*!< Receive accelerator, A logical OR of "enet_rx_accelerator_t". */
-    uint8_t txAccelerConfig;      /*!< Transmit accelerator, A logical OR of "enet_rx_accelerator_t". */
-    uint16_t pauseDuration;       /*!< For flow control enabled case: Pause duration. */
-    uint8_t rxFifoEmptyThreshold; /*!< For flow control enabled case:  when RX FIFO level reaches this value,
-                                     it makes MAC generate XOFF pause frame. */
-#if FSL_FEATURE_ENET_HAS_RECEIVE_STATUS_THRESHOLD
-    uint8_t rxFifoStatEmptyThreshold; /*!< For flow control enabled case: number of frames in the receive FIFO,
-                                    independent of size, that can be accept. If the limit is reached, reception
-                                    continues and a pause frame is triggered. */
-#endif                                /* FSL_FEATURE_ENET_HAS_RECEIVE_STATUS_THRESHOLD */
-    uint8_t rxFifoFullThreshold;      /*!< For store and forward disable case, the data required in RX FIFO to notify
-                                      the MAC receive ready status. */
-    uint8_t txFifoWatermark;          /*!< For store and forward disable case, the data required in TX FIFO
-                                      before a frame transmit start. */
-} enet_config_t;
-
-/* Forward declaration of the handle typedef. */
-typedef struct _enet_handle enet_handle_t;
-
-/*! @brief ENET callback function. */
-typedef void (*enet_callback_t)(ENET_Type *base, enet_handle_t *handle, enet_event_t event, void *userData);
-
-/*! @brief Defines the ENET handler structure. */
-struct _enet_handle
-{
-    volatile enet_rx_bd_struct_t *rxBdBase;    /*!< Receive buffer descriptor base address pointer. */
-    volatile enet_rx_bd_struct_t *rxBdCurrent; /*!< The current available receive buffer descriptor pointer. */
-    volatile enet_rx_bd_struct_t *rxBdDirty;   /*!< The dirty receive buffer descriptor needed to be updated from. */
-    volatile enet_tx_bd_struct_t *txBdBase;    /*!< Transmit buffer descriptor base address pointer. */
-    volatile enet_tx_bd_struct_t *txBdCurrent; /*!< The current available transmit buffer descriptor pointer. */
-    volatile enet_tx_bd_struct_t *txBdDirty;   /*!< The dirty transmit buffer descriptor needed to be updated from. */
-    uint32_t rxBuffSizeAlign;                  /*!< Receive buffer size alignment. */
-    uint32_t txBuffSizeAlign;                  /*!< Transmit buffer size alignment. */
-    enet_callback_t callback;                  /*!< Callback function. */
-    void *userData;                            /*!< Callback function parameter.*/
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-    volatile enet_tx_bd_struct_t *txBdDirtyStatic; /*!< The dirty transmit buffer descriptor for error static update. */
-    volatile enet_tx_bd_struct_t *txBdDirtyTime;   /*!< The dirty transmit buffer descriptor for time stamp update. */
-    uint64_t msTimerSecond;                        /*!< The second for Master PTP timer .*/
-    enet_ptp_time_data_ring_t rxPtpTsDataRing;     /*!< Receive PTP 1588 time stamp data ring buffer. */
-    enet_ptp_time_data_ring_t txPtpTsDataRing;     /*!< Transmit PTP 1588 time stamp data ring buffer. */
-#endif                                             /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-};
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
-  * @name Initialization and De-initialization
-  * @{
-  */
-
-/*!
- * @brief Gets the ENET default configuration structure.
- *
- * The purpose of this API is to get the default ENET MAC controller
- * configure structure for ENET_Init(). User may use the initialized
- * structure unchanged in ENET_Init(), or modify some fields of the
- * structure before calling ENET_Init().
- * Example:
-   @code
-   enet_config_t config;
-   ENET_GetDefaultConfig(&config);
-   @endcode
- * @param config The ENET mac controller configuration structure pointer.
- */
-void ENET_GetDefaultConfig(enet_config_t *config);
-
-/*!
- * @brief Initializes the ENET module.
- *
- * This function ungates the module clock and initializes it with the ENET configuration.
- *
- * @param base    ENET peripheral base address.
- * @param handle  ENET handler pointer.
- * @param config  ENET mac configuration structure pointer.
- *        The "enet_config_t" type mac configuration return from ENET_GetDefaultConfig
- *        can be used directly. It is also possible to verify the Mac configuration using other methods.
- * @param bufferConfig  ENET buffer configuration structure pointer.
- *        The buffer configuration should be prepared for ENET Initialization.
- * @param macAddr  ENET mac address of Ethernet device. This MAC address should be
- *        provided.
- * @param srcClock_Hz The internal module clock source for MII clock.
- *
- * @note ENET has two buffer descriptors: legacy buffer descriptors and
- * enhanced 1588 buffer descriptors. The legacy descriptor is used by default. To
- * use 1588 feature, use the enhanced 1588 buffer descriptor
- * by defining "ENET_ENHANCEDBUFFERDESCRIPTOR_MODE" and calling ENET_Ptp1588Configure()
- * to configure the 1588 feature and related buffers after calling ENET_Init().
- */
-void ENET_Init(ENET_Type *base,
-               enet_handle_t *handle,
-               const enet_config_t *config,
-               const enet_buffer_config_t *bufferConfig,
-               uint8_t *macAddr,
-               uint32_t srcClock_Hz);
-/*!
- * @brief Deinitializes the ENET module.
-
- * This function gates the module clock, clears ENET interrupts, and disables the ENET module.
- *
- * @param base  ENET peripheral base address.
- */
-void ENET_Deinit(ENET_Type *base);
-
-/*!
- * @brief Resets the ENET module.
- *
- * This function restores the ENET module to reset state.
- * Note that this function sets all registers to
- * reset state. As a result, the ENET module can't work after calling this function.
- *
- * @param base  ENET peripheral base address.
- */
-static inline void ENET_Reset(ENET_Type *base)
-{
-    base->ECR |= ENET_ECR_RESET_MASK;
-}
-
-/* @} */
-
-/*!
- * @name MII interface operation
- * @{
- */
-
-/*!
- * @brief Sets the ENET MII speed and duplex.
- *
- * @param base  ENET peripheral base address.
- * @param speed The speed of the RMII mode.
- * @param duplex The duplex of the RMII mode.
- */
-void ENET_SetMII(ENET_Type *base, enet_mii_speed_t speed, enet_mii_duplex_t duplex);
-
-/*!
- * @brief Sets the ENET SMI(serial management interface)- MII management interface.
- *
- * @param base  ENET peripheral base address.
- * @param srcClock_Hz This is the ENET module clock frequency. Normally it's the system clock. See clock distribution.
- * @param isPreambleDisabled The preamble disable flag.
- *        - true   Enables the preamble.
- *        - false  Disables the preamble.
- */
-void ENET_SetSMI(ENET_Type *base, uint32_t srcClock_Hz, bool isPreambleDisabled);
-
-/*!
- * @brief Gets the ENET SMI- MII management interface configuration.
- *
- * This API is used to get the SMI configuration to check if the MII management
- * interface has been set.
- *
- * @param base  ENET peripheral base address.
- * @return The SMI setup status true or false.
- */
-static inline bool ENET_GetSMI(ENET_Type *base)
-{
-    return (0 != (base->MSCR & 0x7E));
-}
-
-/*!
- * @brief Reads data from the PHY register through SMI interface.
- *
- * @param base  ENET peripheral base address.
- * @return The data read from PHY
- */
-static inline uint32_t ENET_ReadSMIData(ENET_Type *base)
-{
-    return (uint32_t)((base->MMFR & ENET_MMFR_DATA_MASK) >> ENET_MMFR_DATA_SHIFT);
-}
-
-/*!
- * @brief Starts an SMI (Serial Management Interface) read command.
- *
- * @param base  ENET peripheral base address.
- * @param phyAddr The PHY address.
- * @param phyReg The PHY register.
- * @param operation The read operation.
- */
-void ENET_StartSMIRead(ENET_Type *base, uint32_t phyAddr, uint32_t phyReg, enet_mii_read_t operation);
-
-/*!
- * @brief Starts a SMI write command.
- *
- * @param base  ENET peripheral base address.
- * @param phyAddr The PHY address.
- * @param phyReg The PHY register.
- * @param operation The write operation.
- * @param data The data written to PHY.
- */
-void ENET_StartSMIWrite(ENET_Type *base, uint32_t phyAddr, uint32_t phyReg, enet_mii_write_t operation, uint32_t data);
-
-/* @} */
-
-/*!
- * @name MAC Address Filter
- * @{
- */
-
-/*!
- * @brief Sets the ENET module Mac address.
- *
- * @param base  ENET peripheral base address.
- * @param macAddr The six-byte Mac address pointer.
- *        The pointer is allocated by application and input into the API.
- */
-void ENET_SetMacAddr(ENET_Type *base, uint8_t *macAddr);
-
-/*!
- * @brief Gets the ENET module Mac address.
- *
- * @param base  ENET peripheral base address.
- * @param macAddr The six-byte Mac address pointer.
- *        The pointer is allocated by application and input into the API.
- */
-void ENET_GetMacAddr(ENET_Type *base, uint8_t *macAddr);
-
-/*!
- * @brief Adds the ENET device to a multicast group.
- *
- * @param base    ENET peripheral base address.
- * @param address The six-byte multicast group address which is provided by application.
- */
-void ENET_AddMulticastGroup(ENET_Type *base, uint8_t *address);
-
-/*!
- * @brief Moves the ENET device from a multicast group.
- *
- * @param base  ENET peripheral base address.
- * @param address The six-byte multicast group address which is provided by application.
- */
-void ENET_LeaveMulticastGroup(ENET_Type *base, uint8_t *address);
-
-/* @} */
-
-/*!
- * @name Other basic operation
- * @{
- */
-
-/*!
- * @brief Activates ENET read or receive.
- *
- * @param base  ENET peripheral base address.
- *
- * @note This must be called after the MAC configuration and
- * state are ready. It must be called after the ENET_Init() and
- * ENET_Ptp1588Configure(). This should be called when the ENET receive required.
- */
-static inline void ENET_ActiveRead(ENET_Type *base)
-{
-    base->RDAR = ENET_RDAR_RDAR_MASK;
-}
-
-/*!
- * @brief Enables/disables the MAC to enter sleep mode.
- * This function is used to set the MAC enter sleep mode.
- * When entering sleep mode, the magic frame wakeup interrupt should be enabled
- * to wake up MAC from the sleep mode and reset it to normal mode.
- *
- * @param base    ENET peripheral base address.
- * @param enable  True enable sleep mode, false disable sleep mode.
- */
-static inline void ENET_EnableSleepMode(ENET_Type *base, bool enable)
-{
-    if (enable)
-    {
-        /* When this field is set, MAC enters sleep mode. */
-        base->ECR |= ENET_ECR_SLEEP_MASK | ENET_ECR_MAGICEN_MASK;
-    }
-    else
-    { /* MAC exits sleep mode. */
-        base->ECR &= ~(ENET_ECR_SLEEP_MASK | ENET_ECR_MAGICEN_MASK);
-    }
-}
-
-/*!
- * @brief Gets ENET transmit and receive accelerator functions from MAC controller.
- *
- * @param base  ENET peripheral base address.
- * @param txAccelOption The transmit accelerator option. The "enet_tx_accelerator_t" is
- *         recommended to be used to as the mask to get the exact the accelerator option.
- * @param rxAccelOption The receive accelerator option. The "enet_rx_accelerator_t" is
- *         recommended to be used to as the mask to get the exact the accelerator option.
- */
-static inline void ENET_GetAccelFunction(ENET_Type *base, uint32_t *txAccelOption, uint32_t *rxAccelOption)
-{
-    assert(txAccelOption);
-    assert(txAccelOption);
-
-    *txAccelOption = base->TACC;
-    *rxAccelOption = base->RACC;
-}
-
-/* @} */
-
-/*!
- * @name Interrupts.
- * @{
- */
-
-/*!
- * @brief Enables the ENET interrupt.
- *
- * This function enables the ENET interrupt according to the provided mask. The mask
- * is a logical OR of enumeration members. See @ref enet_interrupt_enable_t.
- * For example, to enable the TX frame interrupt and RX frame interrupt, do this:
- * @code
- *     ENET_EnableInterrupts(ENET, kENET_TxFrameInterrupt | kENET_RxFrameInterrupt);
- * @endcode
- *
- * @param base  ENET peripheral base address.
- * @param mask  ENET interrupts to enable. This is a logical OR of the
- *             enumeration :: enet_interrupt_enable_t.
- */
-static inline void ENET_EnableInterrupts(ENET_Type *base, uint32_t mask)
-{
-    base->EIMR |= mask;
-}
-
-/*!
- * @brief Disables the ENET interrupt.
- *
- * This function disables the ENET interrupts according to the provided mask. The mask
- * is a logical OR of enumeration members. See @ref enet_interrupt_enable_t.
- * For example, to disable the TX frame interrupt and RX frame interrupt, do this:
- * @code
- *     ENET_DisableInterrupts(ENET, kENET_TxFrameInterrupt | kENET_RxFrameInterrupt);
- * @endcode
- *
- * @param base  ENET peripheral base address.
- * @param mask  ENET interrupts to disable. This is a logical OR of the
- *             enumeration :: enet_interrupt_enable_t.
- */
-static inline void ENET_DisableInterrupts(ENET_Type *base, uint32_t mask)
-{
-    base->EIMR &= ~mask;
-}
-
-/*!
- * @brief Gets the ENET interrupt status flag.
- *
- * @param base  ENET peripheral base address.
- * @return The event status of the interrupt source. This is the logical OR of members
- *         of the enumeration :: enet_interrupt_enable_t.
- */
-static inline uint32_t ENET_GetInterruptStatus(ENET_Type *base)
-{
-    return base->EIR;
-}
-
-/*!
- * @brief Clears the ENET interrupt events status flag.
- *
- * This function clears enabled ENET interrupts according to the provided mask. The mask
- * is a logical OR of enumeration members. See the @ref enet_interrupt_enable_t.
- * For example, to clear the TX frame interrupt and RX frame interrupt, do this:
- * @code
- *     ENET_ClearInterruptStatus(ENET, kENET_TxFrameInterrupt | kENET_RxFrameInterrupt);
- * @endcode
- *
- * @param base  ENET peripheral base address.
- * @param mask  ENET interrupt source to be cleared.
- * This is the logical OR of members of the enumeration :: enet_interrupt_enable_t.
- */
-static inline void ENET_ClearInterruptStatus(ENET_Type *base, uint32_t mask)
-{
-    base->EIR = mask;
-}
-
-/* @} */
-
-/*!
- * @name Transactional operation
- * @{
- */
-
-/*!
- * @brief Set the callback function.
- * This API is provided for application callback required case when ENET
- * interrupt is enabled. This API should be called after calling ENET_Init.
- *
- * @param handle ENET handler pointer. Should be provided by application.
- * @param callback The ENET callback function.
- * @param userData The callback function parameter.
- */
-void ENET_SetCallback(enet_handle_t *handle, enet_callback_t callback, void *userData);
-
-/*!
- * @brief Gets the ENET the error statistics of a received frame.
- *
- * This API must be called after the ENET_GetRxFrameSize and before the ENET_ReadFrame().
- * If the ENET_GetRxFrameSize returns kStatus_ENET_RxFrameError,
- * the ENET_GetRxErrBeforeReadFrame can be used to get the exact error statistics.
- * For example:
- * @code
- *       status = ENET_GetRxFrameSize(&g_handle, &length);
- *       if (status == kStatus_ENET_RxFrameError)
- *       {
- *           // Get the error information of the received frame.
- *           ENET_GetRxErrBeforeReadFrame(&g_handle, &eErrStatic);
- *           // update the receive buffer.
- *           ENET_ReadFrame(EXAMPLE_ENET, &g_handle, NULL, 0);
- *       }
- * @endcode
- * @param handle The ENET handler structure pointer. This is the same handler pointer used in the ENET_Init.
- * @param eErrorStatic The error statistics structure pointer.
- */
-void ENET_GetRxErrBeforeReadFrame(enet_handle_t *handle, enet_data_error_stats_t *eErrorStatic);
-
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-/*!
- * @brief Gets the ENET transmit frame statistics after the data send.
- *
- * This interface gets the error statistics of the transmit frame.
- * Because the error information is reported by the uDMA after the data delivery, this interface
- * should be called after the data transmit API. It is recommended to call this function on
- * transmit interrupt handler. After calling the ENET_SendFrame, the
- * transmit interrupt notifies the transmit completion.
- *
- * @param handle The PTP handler pointer. This is the same handler pointer used in the ENET_Init.
- * @param eErrorStatic The error statistics structure pointer.
- * @return The execute status.
- */
-status_t ENET_GetTxErrAfterSendFrame(enet_handle_t *handle, enet_data_error_stats_t *eErrorStatic);
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-       /*!
-       * @brief Gets the size of the read frame.
-       * This function reads a received frame size from the ENET buffer descriptors.
-       * @note The FCS of the frame is removed by MAC controller and the size is the length without the FCS.
-       * After calling ENET_GetRxFrameSize, ENET_ReadFrame() should be called to update the
-       * receive buffers If the result is not "kStatus_ENET_RxFrameEmpty".
-       *
-       * @param handle The ENET handler structure. This is the same handler pointer used in the ENET_Init.
-       * @param length The length of the valid frame received.
-       * @retval kStatus_ENET_RxFrameEmpty No frame received. Should not call ENET_ReadFrame to read frame.
-       * @retval kStatus_ENET_RxFrameError Data error happens. ENET_ReadFrame should be called with NULL data
-       *         and NULL length to update the receive buffers.
-       * @retval kStatus_Success Receive a frame Successfully then the ENET_ReadFrame
-       *         should be called with the right data buffer and the captured data length input.
-       */
-status_t ENET_GetRxFrameSize(enet_handle_t *handle, uint32_t *length);
-
-/*!
- * @brief Reads a frame from the ENET device.
- * This function reads a frame (both the data and the length) from the ENET buffer descriptors.
- * The ENET_GetRxFrameSize should be used to get the size of the prepared data buffer.
- * @note The FCS of the frame is removed by MAC controller and is not delivered to the application.
- *
- * @param base  ENET peripheral base address.
- * @param handle The ENET handler structure. This is the same handler pointer used in the ENET_Init.
- * @param data The data buffer provided by user to store the frame which memory size should be at least "length".
- * @param length The size of the data buffer which is still the length of the received frame.
- * @return The execute status, successful or failure.
- */
-status_t ENET_ReadFrame(ENET_Type *base, enet_handle_t *handle, uint8_t *data, uint32_t length);
-
-/*!
- * @brief Transmits an ENET frame.
- * @note The CRC is automatically appended to the data. Input the data
- * to send without the CRC.
- *
- * @param base  ENET peripheral base address.
- * @param handle The ENET handler pointer. This is the same handler pointer used in the ENET_Init.
- * @param data The data buffer provided by user to be send.
- * @param length The length of the data to be send.
- * @retval kStatus_Success  Send frame succeed.
- * @retval kStatus_ENET_TxFrameBusy  Transmit buffer descriptor is busy under transmit.
- * @retval kStatus_ENET_TxFrameFail  Transmit frame fail.
- */
-status_t ENET_SendFrame(ENET_Type *base, enet_handle_t *handle, uint8_t *data, uint32_t length);
-
-/*!
- * @brief The transmit IRQ handler.
- *
- * @param base  ENET peripheral base address.
- * @param handle The ENET handler pointer.
- */
-void ENET_TransmitIRQHandler(ENET_Type *base, enet_handle_t *handle);
-
-/*!
- * @brief The receive IRQ handler.
- *
- * @param base  ENET peripheral base address.
- * @param handle The ENET handler pointer.
- */
-void ENET_ReceiveIRQHandler(ENET_Type *base, enet_handle_t *handle);
-
-/*!
- * @brief The error IRQ handler.
- *
- * @param base  ENET peripheral base address.
- * @param handle The ENET handler pointer.
- */
-void ENET_ErrorIRQHandler(ENET_Type *base, enet_handle_t *handle);
-
-/* @} */
-
-#ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
-/*!
- * @name ENET PTP 1588 function operation
- * @{
- */
-
-/*!
- * @brief Configures the ENET PTP 1588 feature with the basic configuration.
- * The function sets the clock for PTP 1588 timer and enables
- * time stamp interrupts and transmit interrupts for PTP 1588 features.
- * This API should be called when the 1588 feature is enabled
- * or the ENET_ENHANCEDBUFFERDESCRIPTOR_MODE is defined.
- * ENET_Init should be called before calling this API.
- *
- * @note The PTP 1588 time-stamp second increase though time-stamp interrupt handler
- *  and the transmit time-stamp store is done through transmit interrupt handler.
- *  As a result, the TS interrupt and TX interrupt are enabled when you call this API.
- *
- * @param base    ENET peripheral base address.
- * @param handle  ENET handler pointer.
- * @param ptpConfig The ENET PTP1588 configuration.
- */
-void ENET_Ptp1588Configure(ENET_Type *base, enet_handle_t *handle, enet_ptp_config_t *ptpConfig);
-
-/*!
- * @brief Starts the ENET PTP 1588 Timer.
- * This function is used to initialize the PTP timer. After the PTP starts,
- * the PTP timer starts running.
- *
- * @param base  ENET peripheral base address.
- * @param ptpClkSrc The clock source of the PTP timer.
- */
-void ENET_Ptp1588StartTimer(ENET_Type *base, uint32_t ptpClkSrc);
-
-/*!
- * @brief Stops the ENET PTP 1588 Timer.
- * This function is used to stops the ENET PTP timer.
- *
- * @param base  ENET peripheral base address.
- */
-static inline void ENET_Ptp1588StopTimer(ENET_Type *base)
-{
-    /* Disable PTP timer and reset the timer. */
-    base->ATCR &= ~ENET_ATCR_EN_MASK;
-    base->ATCR |= ENET_ATCR_RESTART_MASK;
-}
-
-/*!
- * @brief Adjusts the ENET PTP 1588 timer.
- *
- * @param base  ENET peripheral base address.
- * @param corrIncrease The correction increment value. This value is added every time the correction
- *       timer expires. A value less than the PTP timer frequency(1/ptpClkSrc) slows down the timer,
- *        a value greater than the 1/ptpClkSrc speeds up the timer.
- * @param corrPeriod The PTP timer correction counter wrap-around value. This defines after how
- *       many timer clock the correction counter should be reset and trigger a correction
- *       increment on the timer. A value of 0 disables the correction counter and no correction occurs.
- */
-void ENET_Ptp1588AdjustTimer(ENET_Type *base, uint32_t corrIncrease, uint32_t corrPeriod);
-
-/*!
- * @brief Sets ENET PTP 1588 timer channel mode.
- *
- * @param base  ENET peripheral base address.
- * @param channel The ENET PTP timer channel number.
- * @param mode The PTP timer channel mode, see "enet_ptp_timer_channel_mode_t".
- * @param intEnable Enables or disables the interrupt.
- */
-static inline void ENET_Ptp1588SetChannelMode(ENET_Type *base,
-                                              enet_ptp_timer_channel_t channel,
-                                              enet_ptp_timer_channel_mode_t mode,
-                                              bool intEnable)
-{
-    uint32_t tcrReg = 0;
-
-    tcrReg = ENET_TCSR_TMODE(mode) | ENET_TCSR_TIE(intEnable);
-    /* Disable channel mode first. */
-    base->CHANNEL[channel].TCSR = 0;
-    base->CHANNEL[channel].TCSR = tcrReg;
-}
-
-/*!
- * @brief Sets ENET PTP 1588 timer channel comparison value.
- *
- * @param base  ENET peripheral base address.
- * @param channel The PTP timer channel, see "enet_ptp_timer_channel_t".
- * @param cmpValue The compare value for the compare setting.
- */
-static inline void ENET_Ptp1588SetChannelCmpValue(ENET_Type *base, enet_ptp_timer_channel_t channel, uint32_t cmpValue)
-{
-    base->CHANNEL[channel].TCCR = cmpValue;
-}
-
-/*!
- * @brief Gets the ENET PTP 1588 timer channel status.
- *
- * @param base  ENET peripheral base address.
- * @param channel The IEEE 1588 timer channel number.
- * @return True or false, Compare or capture operation status
- */
-static inline bool ENET_Ptp1588GetChannelStatus(ENET_Type *base, enet_ptp_timer_channel_t channel)
-{
-    return (0 != (base->CHANNEL[channel].TCSR & ENET_TCSR_TF_MASK));
-}
-
-/*!
- * @brief Clears the ENET PTP 1588 timer channel status.
- *
- * @param base  ENET peripheral base address.
- * @param channel The IEEE 1588 timer channel number.
- */
-static inline void ENET_Ptp1588ClearChannelStatus(ENET_Type *base, enet_ptp_timer_channel_t channel)
-{
-    base->CHANNEL[channel].TCSR |= ENET_TCSR_TF_MASK;
-    base->TGSR = (1U << channel);
-}
-
-/*!
- * @brief Gets the current ENET time from the PTP 1588 timer.
- *
- * @param base  ENET peripheral base address.
- * @param handle The ENET state pointer. This is the same state pointer used in the ENET_Init.
- * @param ptpTime The PTP timer structure.
- */
-void ENET_Ptp1588GetTimer(ENET_Type *base, enet_handle_t *handle, enet_ptp_time_t *ptpTime);
-
-/*!
- * @brief Sets the ENET PTP 1588 timer to the assigned time.
- *
- * @param base  ENET peripheral base address.
- * @param handle The ENET state pointer. This is the same state pointer used in the ENET_Init.
- * @param ptpTime The timer to be set to the PTP timer.
- */
-void ENET_Ptp1588SetTimer(ENET_Type *base, enet_handle_t *handle, enet_ptp_time_t *ptpTime);
-
-/*!
- * @brief The IEEE 1588 PTP time stamp interrupt handler.
- *
- * @param base  ENET peripheral base address.
- * @param handle The ENET state pointer. This is the same state pointer used in the ENET_Init.
- */
-void ENET_Ptp1588TimerIRQHandler(ENET_Type *base, enet_handle_t *handle);
-
-/*!
- * @brief Gets the time stamp of the received frame.
- *
- * This function is used for PTP stack to get the timestamp captured by the ENET driver.
- *
- * @param handle The ENET handler pointer.This is the same state pointer used in
- *        ENET_Init.
- * @param ptpTimeData The special PTP timestamp data for search the receive timestamp.
- * @retval kStatus_Success Get 1588 timestamp success.
- * @retval kStatus_ENET_PtpTsRingEmpty 1588 timestamp ring empty.
- * @retval kStatus_ENET_PtpTsRingFull 1588 timestamp ring full.
- */
-status_t ENET_GetRxFrameTime(enet_handle_t *handle, enet_ptp_time_data_t *ptpTimeData);
-
-/*!
- * @brief Gets the time stamp of the transmit frame.
- *
- * This function is used for PTP stack to get the timestamp captured by the ENET driver.
- *
- * @param handle The ENET handler pointer.This is the same state pointer used in
- *        ENET_Init.
- * @param ptpTimeData The special PTP timestamp data for search the receive timestamp.
- * @retval kStatus_Success Get 1588 timestamp success.
- * @retval kStatus_ENET_PtpTsRingEmpty 1588 timestamp ring empty.
- * @retval kStatus_ENET_PtpTsRingFull 1588 timestamp ring full.
- */
-status_t ENET_GetTxFrameTime(enet_handle_t *handle, enet_ptp_time_data_t *ptpTimeData);
-#endif /* ENET_ENHANCEDBUFFERDESCRIPTOR_MODE */
-/* @} */
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*! @}*/
-
-#endif /* _FSL_ENET_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_ewm.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_ewm.h"
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-
-void EWM_Init(EWM_Type *base, const ewm_config_t *config)
-{
-    assert(config);
-
-    uint32_t value = 0U;
-
-    CLOCK_EnableClock(kCLOCK_Ewm0);
-    value = EWM_CTRL_EWMEN(config->enableEwm) | EWM_CTRL_ASSIN(config->setInputAssertLogic) |
-            EWM_CTRL_INEN(config->enableEwmInput) | EWM_CTRL_INTEN(config->enableInterrupt);
-#if defined(FSL_FEATURE_EWM_HAS_PRESCALER) && FSL_FEATURE_EWM_HAS_PRESCALER
-    base->CLKPRESCALER = config->prescaler;
-#endif /* FSL_FEATURE_EWM_HAS_PRESCALER */
-
-#if defined(FSL_FEATURE_EWM_HAS_CLOCK_SELECT) && FSL_FEATURE_EWM_HAS_CLOCK_SELECT
-    base->CLKCTRL = config->clockSource;
-#endif /* FSL_FEATURE_EWM_HAS_CLOCK_SELECT*/
-
-    base->CMPL = config->compareLowValue;
-    base->CMPH = config->compareHighValue;
-    base->CTRL = value;
-}
-
-void EWM_Deinit(EWM_Type *base)
-{
-    EWM_DisableInterrupts(base, kEWM_InterruptEnable);
-    CLOCK_DisableClock(kCLOCK_Ewm0);
-}
-
-void EWM_GetDefaultConfig(ewm_config_t *config)
-{
-    assert(config);
-
-    config->enableEwm = true;
-    config->enableEwmInput = false;
-    config->setInputAssertLogic = false;
-    config->enableInterrupt = false;
-#if defined(FSL_FEATURE_EWM_HAS_CLOCK_SELECT) && FSL_FEATURE_EWM_HAS_CLOCK_SELECT
-    config->clockSource = kEWM_LpoClockSource0;
-#endif /* FSL_FEATURE_EWM_HAS_CLOCK_SELECT*/
-#if defined(FSL_FEATURE_EWM_HAS_PRESCALER) && FSL_FEATURE_EWM_HAS_PRESCALER
-    config->prescaler = 0U;
-#endif /* FSL_FEATURE_EWM_HAS_PRESCALER */
-    config->compareLowValue = 0U;
-    config->compareHighValue = 0xFEU;
-}
-
-void EWM_Refresh(EWM_Type *base)
-{
-    uint32_t primaskValue = 0U;
-
-    /* Disable the global interrupt to protect refresh sequence */
-    primaskValue = DisableGlobalIRQ();
-    base->SERV = (uint8_t)0xB4U;
-    base->SERV = (uint8_t)0x2CU;
-    EnableGlobalIRQ(primaskValue);
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_ewm.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,242 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_EWM_H_
-#define _FSL_EWM_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup ewm_driver
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- *******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief EWM driver version 2.0.1. */
-#define FSL_EWM_DRIVER_VERSION (MAKE_VERSION(2, 0, 1))
-/*@}*/
-
-/*! @brief Describes ewm clock source. */
-#if defined(FSL_FEATURE_EWM_HAS_CLOCK_SELECT) && FSL_FEATURE_EWM_HAS_CLOCK_SELECT
-typedef enum _ewm_lpo_clock_source
-{
-    kEWM_LpoClockSource0 = 0U, /*!< ewm clock sourced from lpo_clk[0]*/
-    kEWM_LpoClockSource1 = 1U, /*!< ewm clock sourced from lpo_clk[1]*/
-    kEWM_LpoClockSource2 = 2U, /*!< ewm clock sourced from lpo_clk[2]*/
-    kEWM_LpoClockSource3 = 3U, /*!< ewm clock sourced from lpo_clk[3]*/
-} ewm_lpo_clock_source_t;
-#endif /* FSL_FEATURE_EWM_HAS_CLOCK_SELECT */
-
-/*!
-* @brief Data structure for EWM configuration.
-*
-* This structure is used to configure the EWM.
-*/
-typedef struct _ewm_config
-{
-    bool enableEwm;           /*!< Enable EWM module */
-    bool enableEwmInput;      /*!< Enable EWM_in input */
-    bool setInputAssertLogic; /*!< EWM_in signal assertion state */
-    bool enableInterrupt;     /*!< Enable EWM interrupt */
-#if defined(FSL_FEATURE_EWM_HAS_CLOCK_SELECT) && FSL_FEATURE_EWM_HAS_CLOCK_SELECT
-    ewm_lpo_clock_source_t clockSource; /*!< Clock source select */
-#endif                                  /* FSL_FEATURE_EWM_HAS_CLOCK_SELECT */
-#if defined(FSL_FEATURE_EWM_HAS_PRESCALER) && FSL_FEATURE_EWM_HAS_PRESCALER
-    uint8_t prescaler;        /*!< Clock prescaler value */
-#endif                        /* FSL_FEATURE_EWM_HAS_PRESCALER */
-    uint8_t compareLowValue;  /*!< Compare low register value */
-    uint8_t compareHighValue; /*!< Compare high register value */
-} ewm_config_t;
-
-/*!
- * @brief EWM interrupt configuration structure, default settings all disabled.
- *
- * This structure contains the settings for all of the EWM interrupt configurations.
- */
-enum _ewm_interrupt_enable_t
-{
-    kEWM_InterruptEnable = EWM_CTRL_INTEN_MASK, /*!< Enable EWM to generate an interrupt*/
-};
-
-/*!
- * @brief EWM status flags.
- *
- * This structure contains the constants for the EWM status flags for use in the EWM functions.
- */
-enum _ewm_status_flags_t
-{
-    kEWM_RunningFlag = EWM_CTRL_EWMEN_MASK, /*!< Running flag, set when ewm is enabled*/
-};
-
-/*******************************************************************************
- * API
- *******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif /* __cplusplus */
-
-/*!
- * @name EWM Initialization and De-initialization
- * @{
- */
-
-/*!
- * @brief Initializes the EWM peripheral.
- *
- * This function is used to initialize the EWM. After calling, the EWM
- * runs immediately according to the configuration.
- * Note that except for interrupt enable control bit, other control bits and registers are write once after a
- * CPU reset. Modifying them more than once generates a bus transfer error.
- *
- * Example:
- * @code
- *   ewm_config_t config;
- *   EWM_GetDefaultConfig(&config);
- *   config.compareHighValue = 0xAAU;
- *   EWM_Init(ewm_base,&config);
- * @endcode
- *
- * @param base EWM peripheral base address
- * @param config The configuration of EWM
-*/
-void EWM_Init(EWM_Type *base, const ewm_config_t *config);
-
-/*!
- * @brief Deinitializes the EWM peripheral.
- *
- * This function is used to shut down the EWM.
- *
- * @param base EWM peripheral base address
-*/
-void EWM_Deinit(EWM_Type *base);
-
-/*!
- * @brief Initializes the EWM configuration structure.
- *
- * This function initializes the EWM configure structure to default values. The default
- * values are:
- * @code
- *   ewmConfig->enableEwm = true;
- *   ewmConfig->enableEwmInput = false;
- *   ewmConfig->setInputAssertLogic = false;
- *   ewmConfig->enableInterrupt = false;
- *   ewmConfig->ewm_lpo_clock_source_t = kEWM_LpoClockSource0;
- *   ewmConfig->prescaler = 0;
- *   ewmConfig->compareLowValue = 0;
- *   ewmConfig->compareHighValue = 0xFEU;
- * @endcode
- *
- * @param config Pointer to EWM configuration structure.
- * @see ewm_config_t
- */
-void EWM_GetDefaultConfig(ewm_config_t *config);
-
-/* @} */
-
-/*!
- * @name EWM functional Operation
- * @{
- */
-
-/*!
- * @brief Enables the EWM interrupt.
- *
- * This function enables the EWM interrupt.
- *
- * @param base EWM peripheral base address
- * @param mask The interrupts to enable
- *        The parameter can be combination of the following source if defined:
- *        @arg kEWM_InterruptEnable
- */
-static inline void EWM_EnableInterrupts(EWM_Type *base, uint32_t mask)
-{
-    base->CTRL |= mask;
-}
-
-/*!
- * @brief Disables the EWM interrupt.
- *
- * This function enables the EWM interrupt.
- *
- * @param base EWM peripheral base address
- * @param mask The interrupts to disable
- *        The parameter can be combination of the following source if defined:
- *        @arg kEWM_InterruptEnable
- */
-static inline void EWM_DisableInterrupts(EWM_Type *base, uint32_t mask)
-{
-    base->CTRL &= ~mask;
-}
-
-/*!
- * @brief Gets EWM all status flags.
- *
- * This function gets all status flags.
- *
- * Example for getting Running Flag:
- * @code
- *   uint32_t status;
- *   status = EWM_GetStatusFlags(ewm_base) & kEWM_RunningFlag;
- * @endcode
- * @param base        EWM peripheral base address
- * @return            State of the status flag: asserted (true) or not-asserted (false).@see _ewm_status_flags_t
- *                    - true: related status flag has been set.
- *                    - false: related status flag is not set.
- */
-static inline uint32_t EWM_GetStatusFlags(EWM_Type *base)
-{
-    return (base->CTRL & EWM_CTRL_EWMEN_MASK);
-}
-
-/*!
- * @brief Service EWM.
- *
- * This function reset EWM counter to zero.
- *
- * @param base EWM peripheral base address
-*/
-void EWM_Refresh(EWM_Type *base);
-
-/*@}*/
-
-#if defined(__cplusplus)
-}
-#endif /* __cplusplus */
-
-/*! @}*/
-
-#endif /* _FSL_EWM_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_flash.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2610 +0,0 @@
-/*
- * Copyright (c) 2015-2016, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_flash.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*!
- * @name Misc utility defines
- * @{
- */
-#ifndef ALIGN_DOWN
-#define ALIGN_DOWN(x, a) ((x) & (uint32_t)(-((int32_t)(a))))
-#endif
-#ifndef ALIGN_UP
-#define ALIGN_UP(x, a) (-((int32_t)((uint32_t)(-((int32_t)(x))) & (uint32_t)(-((int32_t)(a))))))
-#endif
-
-#define BYTES_JOIN_TO_WORD_1_3(x, y) ((((uint32_t)(x)&0xFFU) << 24) | ((uint32_t)(y)&0xFFFFFFU))
-#define BYTES_JOIN_TO_WORD_2_2(x, y) ((((uint32_t)(x)&0xFFFFU) << 16) | ((uint32_t)(y)&0xFFFFU))
-#define BYTES_JOIN_TO_WORD_3_1(x, y) ((((uint32_t)(x)&0xFFFFFFU) << 8) | ((uint32_t)(y)&0xFFU))
-#define BYTES_JOIN_TO_WORD_1_1_2(x, y, z) \
-    ((((uint32_t)(x)&0xFFU) << 24) | (((uint32_t)(y)&0xFFU) << 16) | ((uint32_t)(z)&0xFFFFU))
-#define BYTES_JOIN_TO_WORD_1_2_1(x, y, z) \
-    ((((uint32_t)(x)&0xFFU) << 24) | (((uint32_t)(y)&0xFFFFU) << 8) | ((uint32_t)(z)&0xFFU))
-#define BYTES_JOIN_TO_WORD_2_1_1(x, y, z) \
-    ((((uint32_t)(x)&0xFFFFU) << 16) | (((uint32_t)(y)&0xFFU) << 8) | ((uint32_t)(z)&0xFFU))
-#define BYTES_JOIN_TO_WORD_1_1_1_1(x, y, z, w)                                                      \
-    ((((uint32_t)(x)&0xFFU) << 24) | (((uint32_t)(y)&0xFFU) << 16) | (((uint32_t)(z)&0xFFU) << 8) | \
-     ((uint32_t)(w)&0xFFU))
-/*@}*/
-
-/*! @brief Data flash IFR map Field*/
-#if defined(FSL_FEATURE_FLASH_IS_FTFE) && FSL_FEATURE_FLASH_IS_FTFE
-#define DFLASH_IFR_READRESOURCE_START_ADDRESS 0x8003F8U
-#else /* FSL_FEATURE_FLASH_IS_FTFL == 1 or FSL_FEATURE_FLASH_IS_FTFA = =1 */
-#define DFLASH_IFR_READRESOURCE_START_ADDRESS 0x8000F8U
-#endif
-
-/*!
- * @name Reserved FlexNVM size (For a variety of purposes) defines
- * @{
- */
-#define FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED 0xFFFFFFFFU
-#define FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_RESERVED 0xFFFFU
-/*@}*/
-
-/*!
- * @name Flash Program Once Field defines
- * @{
- */
-#if defined(FSL_FEATURE_FLASH_IS_FTFA) && FSL_FEATURE_FLASH_IS_FTFA
-/* FTFA parts(eg. K80, KL80, L5K) support both 4-bytes and 8-bytes unit size */
-#define FLASH_PROGRAM_ONCE_MIN_ID_8BYTES \
-    0x10U /* Minimum Index indcating one of Progam Once Fields which is accessed in 8-byte records */
-#define FLASH_PROGRAM_ONCE_MAX_ID_8BYTES \
-    0x13U /* Maximum Index indcating one of Progam Once Fields which is accessed in 8-byte records */
-#define FLASH_PROGRAM_ONCE_IS_4BYTES_UNIT_SUPPORT 1
-#define FLASH_PROGRAM_ONCE_IS_8BYTES_UNIT_SUPPORT 1
-#elif defined(FSL_FEATURE_FLASH_IS_FTFE) && FSL_FEATURE_FLASH_IS_FTFE
-/* FTFE parts(eg. K65, KE18) only support 8-bytes unit size */
-#define FLASH_PROGRAM_ONCE_IS_4BYTES_UNIT_SUPPORT 0
-#define FLASH_PROGRAM_ONCE_IS_8BYTES_UNIT_SUPPORT 1
-#elif defined(FSL_FEATURE_FLASH_IS_FTFL) && FSL_FEATURE_FLASH_IS_FTFL
-/* FTFL parts(eg. K20) only support 4-bytes unit size */
-#define FLASH_PROGRAM_ONCE_IS_4BYTES_UNIT_SUPPORT 1
-#define FLASH_PROGRAM_ONCE_IS_8BYTES_UNIT_SUPPORT 0
-#endif
-/*@}*/
-
-/*!
- * @name Flash security status defines
- * @{
- */
-#define FLASH_SECURITY_STATE_KEYEN 0x80U
-#define FLASH_SECURITY_STATE_UNSECURED 0x02U
-#define FLASH_NOT_SECURE 0x01U
-#define FLASH_SECURE_BACKDOOR_ENABLED 0x02U
-#define FLASH_SECURE_BACKDOOR_DISABLED 0x04U
-/*@}*/
-
-/*!
- * @name Flash controller command numbers
- * @{
- */
-#define FTFx_VERIFY_BLOCK 0x00U                    /*!< RD1BLK*/
-#define FTFx_VERIFY_SECTION 0x01U                  /*!< RD1SEC*/
-#define FTFx_PROGRAM_CHECK 0x02U                   /*!< PGMCHK*/
-#define FTFx_READ_RESOURCE 0x03U                   /*!< RDRSRC*/
-#define FTFx_PROGRAM_LONGWORD 0x06U                /*!< PGM4*/
-#define FTFx_PROGRAM_PHRASE 0x07U                  /*!< PGM8*/
-#define FTFx_ERASE_BLOCK 0x08U                     /*!< ERSBLK*/
-#define FTFx_ERASE_SECTOR 0x09U                    /*!< ERSSCR*/
-#define FTFx_PROGRAM_SECTION 0x0BU                 /*!< PGMSEC*/
-#define FTFx_VERIFY_ALL_BLOCK 0x40U                /*!< RD1ALL*/
-#define FTFx_READ_ONCE 0x41U                       /*!< RDONCE or RDINDEX*/
-#define FTFx_PROGRAM_ONCE 0x43U                    /*!< PGMONCE or PGMINDEX*/
-#define FTFx_ERASE_ALL_BLOCK 0x44U                 /*!< ERSALL*/
-#define FTFx_SECURITY_BY_PASS 0x45U                /*!< VFYKEY*/
-#define FTFx_SWAP_CONTROL 0x46U                    /*!< SWAP*/
-#define FTFx_ERASE_ALL_BLOCK_UNSECURE 0x49U        /*!< ERSALLU*/
-#define FTFx_VERIFY_ALL_EXECUTE_ONLY_SEGMENT 0x4AU /*!< RD1XA*/
-#define FTFx_ERASE_ALL_EXECUTE_ONLY_SEGMENT 0x4BU  /*!< ERSXA*/
-#define FTFx_PROGRAM_PARTITION 0x80U               /*!< PGMPART)*/
-#define FTFx_SET_FLEXRAM_FUNCTION 0x81U            /*!< SETRAM*/
-                                                   /*@}*/
-
-/*!
- * @name Common flash register info defines
- * @{
- */
-#if defined(FTFA)
-#define FTFx FTFA
-#define FTFx_BASE FTFA_BASE
-#define FTFx_FSTAT_CCIF_MASK FTFA_FSTAT_CCIF_MASK
-#define FTFx_FSTAT_RDCOLERR_MASK FTFA_FSTAT_RDCOLERR_MASK
-#define FTFx_FSTAT_ACCERR_MASK FTFA_FSTAT_ACCERR_MASK
-#define FTFx_FSTAT_FPVIOL_MASK FTFA_FSTAT_FPVIOL_MASK
-#define FTFx_FSTAT_MGSTAT0_MASK FTFA_FSTAT_MGSTAT0_MASK
-#define FTFx_FSEC_SEC_MASK FTFA_FSEC_SEC_MASK
-#define FTFx_FSEC_KEYEN_MASK FTFA_FSEC_KEYEN_MASK
-#if defined(FSL_FEATURE_FLASH_HAS_FLEX_RAM) && FSL_FEATURE_FLASH_HAS_FLEX_RAM
-#define FTFx_FCNFG_RAMRDY_MASK FTFA_FCNFG_RAMRDY_MASK
-#endif /* FSL_FEATURE_FLASH_HAS_FLEX_RAM */
-#if defined(FSL_FEATURE_FLASH_HAS_FLEX_NVM) && FSL_FEATURE_FLASH_HAS_FLEX_NVM
-#define FTFx_FCNFG_EEERDY_MASK FTFA_FCNFG_EEERDY_MASK
-#endif /* FSL_FEATURE_FLASH_HAS_FLEX_NVM */
-#elif defined(FTFE)
-#define FTFx FTFE
-#define FTFx_BASE FTFE_BASE
-#define FTFx_FSTAT_CCIF_MASK FTFE_FSTAT_CCIF_MASK
-#define FTFx_FSTAT_RDCOLERR_MASK FTFE_FSTAT_RDCOLERR_MASK
-#define FTFx_FSTAT_ACCERR_MASK FTFE_FSTAT_ACCERR_MASK
-#define FTFx_FSTAT_FPVIOL_MASK FTFE_FSTAT_FPVIOL_MASK
-#define FTFx_FSTAT_MGSTAT0_MASK FTFE_FSTAT_MGSTAT0_MASK
-#define FTFx_FSEC_SEC_MASK FTFE_FSEC_SEC_MASK
-#define FTFx_FSEC_KEYEN_MASK FTFE_FSEC_KEYEN_MASK
-#if defined(FSL_FEATURE_FLASH_HAS_FLEX_RAM) && FSL_FEATURE_FLASH_HAS_FLEX_RAM
-#define FTFx_FCNFG_RAMRDY_MASK FTFE_FCNFG_RAMRDY_MASK
-#endif /* FSL_FEATURE_FLASH_HAS_FLEX_RAM */
-#if defined(FSL_FEATURE_FLASH_HAS_FLEX_NVM) && FSL_FEATURE_FLASH_HAS_FLEX_NVM
-#define FTFx_FCNFG_EEERDY_MASK FTFE_FCNFG_EEERDY_MASK
-#endif /* FSL_FEATURE_FLASH_HAS_FLEX_NVM */
-#elif defined(FTFL)
-#define FTFx FTFL
-#define FTFx_BASE FTFL_BASE
-#define FTFx_FSTAT_CCIF_MASK FTFL_FSTAT_CCIF_MASK
-#define FTFx_FSTAT_RDCOLERR_MASK FTFL_FSTAT_RDCOLERR_MASK
-#define FTFx_FSTAT_ACCERR_MASK FTFL_FSTAT_ACCERR_MASK
-#define FTFx_FSTAT_FPVIOL_MASK FTFL_FSTAT_FPVIOL_MASK
-#define FTFx_FSTAT_MGSTAT0_MASK FTFL_FSTAT_MGSTAT0_MASK
-#define FTFx_FSEC_SEC_MASK FTFL_FSEC_SEC_MASK
-#define FTFx_FSEC_KEYEN_MASK FTFL_FSEC_KEYEN_MASK
-#if defined(FSL_FEATURE_FLASH_HAS_FLEX_RAM) && FSL_FEATURE_FLASH_HAS_FLEX_RAM
-#define FTFx_FCNFG_RAMRDY_MASK FTFL_FCNFG_RAMRDY_MASK
-#endif /* FSL_FEATURE_FLASH_HAS_FLEX_RAM */
-#if defined(FSL_FEATURE_FLASH_HAS_FLEX_NVM) && FSL_FEATURE_FLASH_HAS_FLEX_NVM
-#define FTFx_FCNFG_EEERDY_MASK FTFL_FCNFG_EEERDY_MASK
-#endif /* FSL_FEATURE_FLASH_HAS_FLEX_NVM */
-#else
-#error "Unknown flash controller"
-#endif
-/*@}*/
-
-/*!
- * @brief Enumeration for access segment property.
- */
-enum _flash_access_segment_property
-{
-    kFLASH_accessSegmentBase = 256UL,
-};
-
-/*!
- * @brief Enumeration for acceleration ram property.
- */
-enum _flash_acceleration_ram_property
-{
-    kFLASH_accelerationRamSize = 0x400U
-};
-
-/*!
- * @brief Enumeration for flash config area.
- */
-enum _flash_config_area_range
-{
-    kFLASH_configAreaStart = 0x400U,
-    kFLASH_configAreaEnd = 0x40FU
-};
-
-/*! @brief program Flash block base address*/
-#define PFLASH_BLOCK_BASE 0x00U
-
-/*! @brief Total flash region count*/
-#define FSL_FEATURE_FTFx_REGION_COUNT (32U)
-
-/*!
- * @name Flash register access type defines
- * @{
- */
-#if FLASH_DRIVER_IS_FLASH_RESIDENT
-#define FTFx_REG_ACCESS_TYPE volatile uint8_t *
-#define FTFx_REG32_ACCESS_TYPE volatile uint32_t *
-#endif /* FLASH_DRIVER_IS_FLASH_RESIDENT */
-       /*@}*/
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-
-#if FLASH_DRIVER_IS_FLASH_RESIDENT
-/*! @brief Copy flash_run_command() to RAM*/
-static void copy_flash_run_command(uint8_t *flashRunCommand);
-/*! @brief Copy flash_cache_clear_command() to RAM*/
-static void copy_flash_cache_clear_command(uint8_t *flashCacheClearCommand);
-/*! @brief Check whether flash execute-in-ram functions are ready*/
-static status_t flash_check_execute_in_ram_function_info(flash_config_t *config);
-#endif /* FLASH_DRIVER_IS_FLASH_RESIDENT */
-
-/*! @brief Internal function Flash command sequence. Called by driver APIs only*/
-static status_t flash_command_sequence(flash_config_t *config);
-
-/*! @brief Perform the cache clear to the flash*/
-void flash_cache_clear(flash_config_t *config);
-
-/*! @brief Validates the range and alignment of the given address range.*/
-static status_t flash_check_range(flash_config_t *config,
-                                  uint32_t startAddress,
-                                  uint32_t lengthInBytes,
-                                  uint32_t alignmentBaseline);
-/*! @brief Gets the right address, sector and block size of current flash type which is indicated by address.*/
-static status_t flash_get_matched_operation_info(flash_config_t *config,
-                                                 uint32_t address,
-                                                 flash_operation_config_t *info);
-/*! @brief Validates the given user key for flash erase APIs.*/
-static status_t flash_check_user_key(uint32_t key);
-
-#if FLASH_SSD_IS_FLEXNVM_ENABLED
-/*! @brief Updates FlexNVM memory partition status according to data flash 0 IFR.*/
-static status_t flash_update_flexnvm_memory_partition_status(flash_config_t *config);
-#endif /* FLASH_SSD_IS_FLEXNVM_ENABLED */
-
-#if defined(FSL_FEATURE_FLASH_HAS_READ_RESOURCE_CMD) && FSL_FEATURE_FLASH_HAS_READ_RESOURCE_CMD
-/*! @brief Validates the range of the given resource address.*/
-static status_t flash_check_resource_range(uint32_t start,
-                                           uint32_t lengthInBytes,
-                                           uint32_t alignmentBaseline,
-                                           flash_read_resource_option_t option);
-#endif /* FSL_FEATURE_FLASH_HAS_READ_RESOURCE_CMD */
-
-#if defined(FSL_FEATURE_FLASH_HAS_SWAP_CONTROL_CMD) && FSL_FEATURE_FLASH_HAS_SWAP_CONTROL_CMD
-/*! @brief Validates the gived swap control option.*/
-static status_t flash_check_swap_control_option(flash_swap_control_option_t option);
-#endif /* FSL_FEATURE_FLASH_HAS_SWAP_CONTROL_CMD */
-
-#if defined(FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP) && FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP
-/*! @brief Validates the gived address to see if it is equal to swap indicator address in pflash swap IFR.*/
-static status_t flash_validate_swap_indicator_address(flash_config_t *config, uint32_t address);
-#endif /* FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP */
-
-#if defined(FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD) && FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD
-/*! @brief Validates the gived flexram function option.*/
-static inline status_t flasn_check_flexram_function_option_range(flash_flexram_function_option_t option);
-#endif /* FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD */
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-
-/*! @brief Access to FTFx->FCCOB */
-#if defined(FSL_FEATURE_FLASH_IS_FTFA) && FSL_FEATURE_FLASH_IS_FTFA
-volatile uint32_t *const kFCCOBx = (volatile uint32_t *)&FTFA->FCCOB3;
-#elif defined(FSL_FEATURE_FLASH_IS_FTFE) && FSL_FEATURE_FLASH_IS_FTFE
-volatile uint32_t *const kFCCOBx = (volatile uint32_t *)&FTFE->FCCOB3;
-#elif defined(FSL_FEATURE_FLASH_IS_FTFL) && FSL_FEATURE_FLASH_IS_FTFL
-volatile uint32_t *const kFCCOBx = (volatile uint32_t *)&FTFL->FCCOB3;
-#else
-#error "Unknown flash controller"
-#endif
-
-/*! @brief Access to FTFx->FPROT */
-#if defined(FSL_FEATURE_FLASH_IS_FTFA) && FSL_FEATURE_FLASH_IS_FTFA
-volatile uint32_t *const kFPROT = (volatile uint32_t *)&FTFA->FPROT3;
-#elif defined(FSL_FEATURE_FLASH_IS_FTFE) && FSL_FEATURE_FLASH_IS_FTFE
-volatile uint32_t *const kFPROT = (volatile uint32_t *)&FTFE->FPROT3;
-#elif defined(FSL_FEATURE_FLASH_IS_FTFL) && FSL_FEATURE_FLASH_IS_FTFL
-volatile uint32_t *const kFPROT = (volatile uint32_t *)&FTFL->FPROT3;
-#else
-#error "Unknown flash controller"
-#endif
-
-#if FLASH_DRIVER_IS_FLASH_RESIDENT
-/*! @brief A function pointer used to point to relocated flash_run_command() */
-static void (*callFlashRunCommand)(FTFx_REG_ACCESS_TYPE ftfx_fstat);
-/*! @brief A function pointer used to point to relocated flash_cache_clear_command() */
-static void (*callFlashCacheClearCommand)(FTFx_REG32_ACCESS_TYPE ftfx_reg);
-#endif /* FLASH_DRIVER_IS_FLASH_RESIDENT */
-
-#if (FLASH_DRIVER_IS_FLASH_RESIDENT && !FLASH_DRIVER_IS_EXPORTED)
-/*! @brief A static buffer used to hold flash_run_command() */
-static uint8_t s_flashRunCommand[kFLASH_executeInRamFunctionMaxSize];
-/*! @brief A static buffer used to hold flash_cache_clear_command() */
-static uint8_t s_flashCacheClearCommand[kFLASH_executeInRamFunctionMaxSize];
-/*! @brief Flash execute-in-ram function information */
-static flash_execute_in_ram_function_config_t s_flashExecuteInRamFunctionInfo;
-#endif
-
-/*!
- * @brief Table of pflash sizes.
- *
- *  The index into this table is the value of the SIM_FCFG1.PFSIZE bitfield.
- *
- *  The values in this table have been right shifted 10 bits so that they will all fit within
- *  an 16-bit integer. To get the actual flash density, you must left shift the looked up value
- *  by 10 bits.
- *
- *  Elements of this table have a value of 0 in cases where the PFSIZE bitfield value is
- *  reserved.
- *
- *  Code to use the table:
- *  @code
- *      uint8_t pfsize = (SIM->FCFG1 & SIM_FCFG1_PFSIZE_MASK) >> SIM_FCFG1_PFSIZE_SHIFT;
- *      flashDensity = ((uint32_t)kPFlashDensities[pfsize]) << 10;
- *  @endcode
- */
-const uint16_t kPFlashDensities[] = {
-    8,    /* 0x0 - 8192, 8KB */
-    16,   /* 0x1 - 16384, 16KB */
-    24,   /* 0x2 - 24576, 24KB */
-    32,   /* 0x3 - 32768, 32KB */
-    48,   /* 0x4 - 49152, 48KB */
-    64,   /* 0x5 - 65536, 64KB */
-    96,   /* 0x6 - 98304, 96KB */
-    128,  /* 0x7 - 131072, 128KB */
-    192,  /* 0x8 - 196608, 192KB */
-    256,  /* 0x9 - 262144, 256KB */
-    384,  /* 0xa - 393216, 384KB */
-    512,  /* 0xb - 524288, 512KB */
-    768,  /* 0xc - 786432, 768KB */
-    1024, /* 0xd - 1048576, 1MB */
-    1536, /* 0xe - 1572864, 1.5MB */
-    /* 2048,  0xf - 2097152, 2MB */
-};
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-
-status_t FLASH_Init(flash_config_t *config)
-{
-    uint32_t flashDensity;
-
-    if (config == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    /* calculate the flash density from SIM_FCFG1.PFSIZE */
-    uint8_t pfsize = (SIM->FCFG1 & SIM_FCFG1_PFSIZE_MASK) >> SIM_FCFG1_PFSIZE_SHIFT;
-    /* PFSIZE=0xf means that on customer parts the IFR was not correctly programmed.
-     * We just use the pre-defined flash size in feature file here to support pre-production parts */
-    if (pfsize == 0xf)
-    {
-        flashDensity = FSL_FEATURE_FLASH_PFLASH_BLOCK_COUNT * FSL_FEATURE_FLASH_PFLASH_BLOCK_SIZE;
-    }
-    else
-    {
-        flashDensity = ((uint32_t)kPFlashDensities[pfsize]) << 10;
-    }
-
-    /* fill out a few of the structure members */
-    config->PFlashBlockBase = PFLASH_BLOCK_BASE;
-    config->PFlashTotalSize = flashDensity;
-    config->PFlashBlockCount = FSL_FEATURE_FLASH_PFLASH_BLOCK_COUNT;
-    config->PFlashSectorSize = FSL_FEATURE_FLASH_PFLASH_BLOCK_SECTOR_SIZE;
-
-#if defined(FSL_FEATURE_FLASH_HAS_ACCESS_CONTROL) && FSL_FEATURE_FLASH_HAS_ACCESS_CONTROL
-    config->PFlashAccessSegmentSize = kFLASH_accessSegmentBase << FTFx->FACSS;
-    config->PFlashAccessSegmentCount = FTFx->FACSN;
-#else
-    config->PFlashAccessSegmentSize = 0;
-    config->PFlashAccessSegmentCount = 0;
-#endif /* FSL_FEATURE_FLASH_HAS_ACCESS_CONTROL */
-
-    config->PFlashCallback = NULL;
-
-/* copy required flash commands to RAM */
-#if (FLASH_DRIVER_IS_FLASH_RESIDENT && !FLASH_DRIVER_IS_EXPORTED)
-    if (kStatus_FLASH_Success != flash_check_execute_in_ram_function_info(config))
-    {
-        s_flashExecuteInRamFunctionInfo.activeFunctionCount = 0;
-        s_flashExecuteInRamFunctionInfo.flashRunCommand = s_flashRunCommand;
-        s_flashExecuteInRamFunctionInfo.flashCacheClearCommand = s_flashCacheClearCommand;
-        config->flashExecuteInRamFunctionInfo = &s_flashExecuteInRamFunctionInfo.activeFunctionCount;
-        FLASH_PrepareExecuteInRamFunctions(config);
-    }
-#endif
-
-    config->FlexRAMBlockBase = FSL_FEATURE_FLASH_FLEX_RAM_START_ADDRESS;
-    config->FlexRAMTotalSize = FSL_FEATURE_FLASH_FLEX_RAM_SIZE;
-
-#if FLASH_SSD_IS_FLEXNVM_ENABLED
-    {
-        status_t returnCode;
-        config->DFlashBlockBase = FSL_FEATURE_FLASH_FLEX_NVM_START_ADDRESS;
-        returnCode = flash_update_flexnvm_memory_partition_status(config);
-        if (returnCode != kStatus_FLASH_Success)
-        {
-            return returnCode;
-        }
-    }
-#endif
-
-    return kStatus_FLASH_Success;
-}
-
-status_t FLASH_SetCallback(flash_config_t *config, flash_callback_t callback)
-{
-    if (config == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    config->PFlashCallback = callback;
-
-    return kStatus_FLASH_Success;
-}
-
-#if FLASH_DRIVER_IS_FLASH_RESIDENT
-status_t FLASH_PrepareExecuteInRamFunctions(flash_config_t *config)
-{
-    flash_execute_in_ram_function_config_t *flashExecuteInRamFunctionInfo;
-
-    if (config == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    flashExecuteInRamFunctionInfo = (flash_execute_in_ram_function_config_t *)config->flashExecuteInRamFunctionInfo;
-
-    copy_flash_run_command(flashExecuteInRamFunctionInfo->flashRunCommand);
-    copy_flash_cache_clear_command(flashExecuteInRamFunctionInfo->flashCacheClearCommand);
-    flashExecuteInRamFunctionInfo->activeFunctionCount = kFLASH_executeInRamFunctionTotalNum;
-
-    return kStatus_FLASH_Success;
-}
-#endif /* FLASH_DRIVER_IS_FLASH_RESIDENT */
-
-status_t FLASH_EraseAll(flash_config_t *config, uint32_t key)
-{
-    status_t returnCode;
-
-    if (config == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    /* preparing passing parameter to erase all flash blocks */
-    kFCCOBx[0] = BYTES_JOIN_TO_WORD_1_3(FTFx_ERASE_ALL_BLOCK, 0xFFFFFFU);
-
-    /* Validate the user key */
-    returnCode = flash_check_user_key(key);
-    if (returnCode)
-    {
-        return returnCode;
-    }
-
-    /* calling flash command sequence function to execute the command */
-    returnCode = flash_command_sequence(config);
-
-    flash_cache_clear(config);
-
-#if FLASH_SSD_IS_FLEXNVM_ENABLED
-    /* Data flash IFR will be erased by erase all command, so we need to
-     *  update FlexNVM memory partition status synchronously */
-    if (returnCode == kStatus_FLASH_Success)
-    {
-        returnCode = flash_update_flexnvm_memory_partition_status(config);
-    }
-#endif
-
-    return returnCode;
-}
-
-status_t FLASH_Erase(flash_config_t *config, uint32_t start, uint32_t lengthInBytes, uint32_t key)
-{
-    uint32_t sectorSize;
-    flash_operation_config_t flashInfo;
-    uint32_t endAddress;      /* storing end address */
-    uint32_t numberOfSectors; /* number of sectors calculated by endAddress */
-    status_t returnCode;
-
-    flash_get_matched_operation_info(config, start, &flashInfo);
-
-    /* Check the supplied address range. */
-    returnCode = flash_check_range(config, start, lengthInBytes, flashInfo.sectorCmdAddressAligment);
-    if (returnCode)
-    {
-        return returnCode;
-    }
-
-    start = flashInfo.convertedAddress;
-    sectorSize = flashInfo.activeSectorSize;
-
-    /* calculating Flash end address */
-    endAddress = start + lengthInBytes - 1;
-
-    /* re-calculate the endAddress and align it to the start of the next sector
-     * which will be used in the comparison below */
-    if (endAddress % sectorSize)
-    {
-        numberOfSectors = endAddress / sectorSize + 1;
-        endAddress = numberOfSectors * sectorSize - 1;
-    }
-
-    /* the start address will increment to the next sector address
-     * until it reaches the endAdddress */
-    while (start <= endAddress)
-    {
-        /* preparing passing parameter to erase a flash block */
-        kFCCOBx[0] = BYTES_JOIN_TO_WORD_1_3(FTFx_ERASE_SECTOR, start);
-
-        /* Validate the user key */
-        returnCode = flash_check_user_key(key);
-        if (returnCode)
-        {
-            return returnCode;
-        }
-
-        /* calling flash command sequence function to execute the command */
-        returnCode = flash_command_sequence(config);
-
-        /* calling flash callback function if it is available */
-        if (config->PFlashCallback)
-        {
-            config->PFlashCallback();
-        }
-
-        /* checking the success of command execution */
-        if (kStatus_FLASH_Success != returnCode)
-        {
-            break;
-        }
-        else
-        {
-            /* Increment to the next sector */
-            start += sectorSize;
-        }
-    }
-
-    flash_cache_clear(config);
-
-    return (returnCode);
-}
-
-#if defined(FSL_FEATURE_FLASH_HAS_ERASE_ALL_BLOCKS_UNSECURE_CMD) && FSL_FEATURE_FLASH_HAS_ERASE_ALL_BLOCKS_UNSECURE_CMD
-status_t FLASH_EraseAllUnsecure(flash_config_t *config, uint32_t key)
-{
-    status_t returnCode;
-
-    if (config == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    /* Prepare passing parameter to erase all flash blocks (unsecure). */
-    kFCCOBx[0] = BYTES_JOIN_TO_WORD_1_3(FTFx_ERASE_ALL_BLOCK_UNSECURE, 0xFFFFFFU);
-
-    /* Validate the user key */
-    returnCode = flash_check_user_key(key);
-    if (returnCode)
-    {
-        return returnCode;
-    }
-
-    /* calling flash command sequence function to execute the command */
-    returnCode = flash_command_sequence(config);
-
-    flash_cache_clear(config);
-
-#if FLASH_SSD_IS_FLEXNVM_ENABLED
-    /* Data flash IFR will be erased by erase all unsecure command, so we need to
-     *  update FlexNVM memory partition status synchronously */
-    if (returnCode == kStatus_FLASH_Success)
-    {
-        returnCode = flash_update_flexnvm_memory_partition_status(config);
-    }
-#endif
-
-    return returnCode;
-}
-#endif /* FSL_FEATURE_FLASH_HAS_ERASE_ALL_BLOCKS_UNSECURE_CMD */
-
-status_t FLASH_EraseAllExecuteOnlySegments(flash_config_t *config, uint32_t key)
-{
-    status_t returnCode;
-
-    if (config == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    /* preparing passing parameter to erase all execute-only segments
-     * 1st element for the FCCOB register */
-    kFCCOBx[0] = BYTES_JOIN_TO_WORD_1_3(FTFx_ERASE_ALL_EXECUTE_ONLY_SEGMENT, 0xFFFFFFU);
-
-    /* Validate the user key */
-    returnCode = flash_check_user_key(key);
-    if (returnCode)
-    {
-        return returnCode;
-    }
-
-    /* calling flash command sequence function to execute the command */
-    returnCode = flash_command_sequence(config);
-
-    flash_cache_clear(config);
-
-    return returnCode;
-}
-
-status_t FLASH_Program(flash_config_t *config, uint32_t start, uint32_t *src, uint32_t lengthInBytes)
-{
-    status_t returnCode;
-    flash_operation_config_t flashInfo;
-
-    if (src == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    flash_get_matched_operation_info(config, start, &flashInfo);
-
-    /* Check the supplied address range. */
-    returnCode = flash_check_range(config, start, lengthInBytes, flashInfo.blockWriteUnitSize);
-    if (returnCode)
-    {
-        return returnCode;
-    }
-
-    start = flashInfo.convertedAddress;
-
-    while (lengthInBytes > 0)
-    {
-        /* preparing passing parameter to program the flash block */
-        kFCCOBx[1] = *src++;
-        if (4 == flashInfo.blockWriteUnitSize)
-        {
-            kFCCOBx[0] = BYTES_JOIN_TO_WORD_1_3(FTFx_PROGRAM_LONGWORD, start);
-        }
-        else if (8 == flashInfo.blockWriteUnitSize)
-        {
-            kFCCOBx[2] = *src++;
-            kFCCOBx[0] = BYTES_JOIN_TO_WORD_1_3(FTFx_PROGRAM_PHRASE, start);
-        }
-        else
-        {
-        }
-
-        /* calling flash command sequence function to execute the command */
-        returnCode = flash_command_sequence(config);
-
-        /* calling flash callback function if it is available */
-        if (config->PFlashCallback)
-        {
-            config->PFlashCallback();
-        }
-
-        /* checking for the success of command execution */
-        if (kStatus_FLASH_Success != returnCode)
-        {
-            break;
-        }
-        else
-        {
-            /* update start address for next iteration */
-            start += flashInfo.blockWriteUnitSize;
-
-            /* update lengthInBytes for next iteration */
-            lengthInBytes -= flashInfo.blockWriteUnitSize;
-        }
-    }
-
-    flash_cache_clear(config);
-
-    return (returnCode);
-}
-
-status_t FLASH_ProgramOnce(flash_config_t *config, uint32_t index, uint32_t *src, uint32_t lengthInBytes)
-{
-    status_t returnCode;
-
-    if ((config == NULL) || (src == NULL))
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    /* pass paramters to FTFx */
-    kFCCOBx[0] = BYTES_JOIN_TO_WORD_1_1_2(FTFx_PROGRAM_ONCE, index, 0xFFFFU);
-
-    kFCCOBx[1] = *src;
-
-/* Note: Have to seperate the first index from the rest if it equals 0
- * to avoid a pointless comparison of unsigned int to 0 compiler warning */
-#if FLASH_PROGRAM_ONCE_IS_8BYTES_UNIT_SUPPORT
-#if FLASH_PROGRAM_ONCE_IS_4BYTES_UNIT_SUPPORT
-    if (((index == FLASH_PROGRAM_ONCE_MIN_ID_8BYTES) ||
-         /* Range check */
-         ((index >= FLASH_PROGRAM_ONCE_MIN_ID_8BYTES + 1) && (index <= FLASH_PROGRAM_ONCE_MAX_ID_8BYTES))) &&
-        (lengthInBytes == 8))
-#endif /* FLASH_PROGRAM_ONCE_IS_4BYTES_UNIT_SUPPORT */
-    {
-        kFCCOBx[2] = *(src + 1);
-    }
-#endif /* FLASH_PROGRAM_ONCE_IS_8BYTES_UNIT_SUPPORT */
-
-    /* calling flash command sequence function to execute the command */
-    returnCode = flash_command_sequence(config);
-
-    flash_cache_clear(config);
-
-    return returnCode;
-}
-
-#if defined(FSL_FEATURE_FLASH_HAS_PROGRAM_SECTION_CMD) && FSL_FEATURE_FLASH_HAS_PROGRAM_SECTION_CMD
-status_t FLASH_ProgramSection(flash_config_t *config, uint32_t start, uint32_t *src, uint32_t lengthInBytes)
-{
-    status_t returnCode;
-    uint32_t sectorSize;
-    flash_operation_config_t flashInfo;
-#if defined(FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD) && FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD
-    bool needSwitchFlexRamMode = false;
-#endif /* FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD */
-
-    if (src == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    flash_get_matched_operation_info(config, start, &flashInfo);
-
-    /* Check the supplied address range. */
-    returnCode = flash_check_range(config, start, lengthInBytes, flashInfo.sectionCmdAddressAligment);
-    if (returnCode)
-    {
-        return returnCode;
-    }
-
-    start = flashInfo.convertedAddress;
-    sectorSize = flashInfo.activeSectorSize;
-
-#if defined(FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD) && FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD
-    /* Switch function of FlexRAM if needed */
-    if (!(FTFx->FCNFG & FTFx_FCNFG_RAMRDY_MASK))
-    {
-        needSwitchFlexRamMode = true;
-
-        returnCode = FLASH_SetFlexramFunction(config, kFLASH_flexramFunctionOptionAvailableAsRam);
-        if (returnCode != kStatus_FLASH_Success)
-        {
-            return kStatus_FLASH_SetFlexramAsRamError;
-        }
-    }
-#endif /* FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD */
-
-    while (lengthInBytes > 0)
-    {
-        /* Make sure the write operation doesn't span two sectors */
-        uint32_t endAddressOfCurrentSector = ALIGN_UP(start, sectorSize);
-        uint32_t lengthTobeProgrammedOfCurrentSector;
-        uint32_t currentOffset = 0;
-
-        if (endAddressOfCurrentSector == start)
-        {
-            endAddressOfCurrentSector += sectorSize;
-        }
-
-        if (lengthInBytes + start > endAddressOfCurrentSector)
-        {
-            lengthTobeProgrammedOfCurrentSector = endAddressOfCurrentSector - start;
-        }
-        else
-        {
-            lengthTobeProgrammedOfCurrentSector = lengthInBytes;
-        }
-
-        /* Program Current Sector */
-        while (lengthTobeProgrammedOfCurrentSector > 0)
-        {
-            /* Make sure the program size doesn't exceeds Acceleration RAM size */
-            uint32_t programSizeOfCurrentPass;
-            uint32_t numberOfPhases;
-
-            if (lengthTobeProgrammedOfCurrentSector > kFLASH_accelerationRamSize)
-            {
-                programSizeOfCurrentPass = kFLASH_accelerationRamSize;
-            }
-            else
-            {
-                programSizeOfCurrentPass = lengthTobeProgrammedOfCurrentSector;
-            }
-
-            /* Copy data to FlexRAM */
-            memcpy((void *)FSL_FEATURE_FLASH_FLEX_RAM_START_ADDRESS, src + currentOffset / 4, programSizeOfCurrentPass);
-            /* Set start address of the data to be programmed */
-            kFCCOBx[0] = BYTES_JOIN_TO_WORD_1_3(FTFx_PROGRAM_SECTION, start + currentOffset);
-            /* Set program size in terms of FEATURE_FLASH_SECTION_CMD_ADDRESS_ALIGMENT */
-            numberOfPhases = programSizeOfCurrentPass / flashInfo.sectionCmdAddressAligment;
-
-            kFCCOBx[1] = BYTES_JOIN_TO_WORD_2_2(numberOfPhases, 0xFFFFU);
-
-            /* Peform command sequence */
-            returnCode = flash_command_sequence(config);
-
-            /* calling flash callback function if it is available */
-            if (config->PFlashCallback)
-            {
-                config->PFlashCallback();
-            }
-
-            if (returnCode != kStatus_FLASH_Success)
-            {
-                flash_cache_clear(config);
-                return returnCode;
-            }
-
-            lengthTobeProgrammedOfCurrentSector -= programSizeOfCurrentPass;
-            currentOffset += programSizeOfCurrentPass;
-        }
-
-        src += currentOffset / 4;
-        start += currentOffset;
-        lengthInBytes -= currentOffset;
-    }
-
-    flash_cache_clear(config);
-
-#if defined(FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD) && FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD
-    /* Restore function of FlexRAM if needed. */
-    if (needSwitchFlexRamMode)
-    {
-        returnCode = FLASH_SetFlexramFunction(config, kFLASH_flexramFunctionOptionAvailableForEeprom);
-        if (returnCode != kStatus_FLASH_Success)
-        {
-            return kStatus_FLASH_RecoverFlexramAsEepromError;
-        }
-    }
-#endif /* FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD */
-
-    return returnCode;
-}
-#endif /* FSL_FEATURE_FLASH_HAS_PROGRAM_SECTION_CMD */
-
-#if FLASH_SSD_IS_FLEXNVM_ENABLED
-status_t FLASH_EepromWrite(flash_config_t *config, uint32_t start, uint8_t *src, uint32_t lengthInBytes)
-{
-    status_t returnCode;
-    bool needSwitchFlexRamMode = false;
-
-    if (config == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    /* Validates the range of the given address */
-    if ((start < config->FlexRAMBlockBase) ||
-        ((start + lengthInBytes) > (config->FlexRAMBlockBase + config->EEpromTotalSize)))
-    {
-        return kStatus_FLASH_AddressError;
-    }
-
-    returnCode = kStatus_FLASH_Success;
-
-    /* Switch function of FlexRAM if needed */
-    if (!(FTFx->FCNFG & FTFx_FCNFG_EEERDY_MASK))
-    {
-        needSwitchFlexRamMode = true;
-
-        returnCode = FLASH_SetFlexramFunction(config, kFLASH_flexramFunctionOptionAvailableForEeprom);
-        if (returnCode != kStatus_FLASH_Success)
-        {
-            return kStatus_FLASH_SetFlexramAsEepromError;
-        }
-    }
-
-    /* Write data to FlexRAM when it is used as EEPROM emulator */
-    while (lengthInBytes > 0)
-    {
-        if ((!(start & 0x3U)) && (lengthInBytes >= 4))
-        {
-            *(uint32_t *)start = *(uint32_t *)src;
-            start += 4;
-            src += 4;
-            lengthInBytes -= 4;
-        }
-        else if ((!(start & 0x1U)) && (lengthInBytes >= 2))
-        {
-            *(uint16_t *)start = *(uint16_t *)src;
-            start += 2;
-            src += 2;
-            lengthInBytes -= 2;
-        }
-        else
-        {
-            *(uint8_t *)start = *src;
-            start += 1;
-            src += 1;
-            lengthInBytes -= 1;
-        }
-        /* Wait till EEERDY bit is set */
-        while (!(FTFx->FCNFG & FTFx_FCNFG_EEERDY_MASK))
-        {
-        }
-
-        /* Check for protection violation error */
-        if (FTFx->FSTAT & FTFx_FSTAT_FPVIOL_MASK)
-        {
-            return kStatus_FLASH_ProtectionViolation;
-        }
-    }
-
-    /* Switch function of FlexRAM if needed */
-    if (needSwitchFlexRamMode)
-    {
-        returnCode = FLASH_SetFlexramFunction(config, kFLASH_flexramFunctionOptionAvailableAsRam);
-        if (returnCode != kStatus_FLASH_Success)
-        {
-            return kStatus_FLASH_RecoverFlexramAsRamError;
-        }
-    }
-
-    return returnCode;
-}
-#endif /* FLASH_SSD_IS_FLEXNVM_ENABLED */
-
-#if defined(FSL_FEATURE_FLASH_HAS_READ_RESOURCE_CMD) && FSL_FEATURE_FLASH_HAS_READ_RESOURCE_CMD
-status_t FLASH_ReadResource(
-    flash_config_t *config, uint32_t start, uint32_t *dst, uint32_t lengthInBytes, flash_read_resource_option_t option)
-{
-    status_t returnCode;
-    flash_operation_config_t flashInfo;
-
-    if ((config == NULL) || (dst == NULL))
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    flash_get_matched_operation_info(config, start, &flashInfo);
-
-    /* Check the supplied address range. */
-    returnCode = flash_check_resource_range(start, lengthInBytes, flashInfo.resourceCmdAddressAligment, option);
-    if (returnCode != kStatus_FLASH_Success)
-    {
-        return returnCode;
-    }
-
-    while (lengthInBytes > 0)
-    {
-        /* preparing passing parameter */
-        kFCCOBx[0] = BYTES_JOIN_TO_WORD_1_3(FTFx_READ_RESOURCE, start);
-        if (flashInfo.resourceCmdAddressAligment == 4)
-        {
-            kFCCOBx[2] = BYTES_JOIN_TO_WORD_1_3(option, 0xFFFFFFU);
-        }
-        else if (flashInfo.resourceCmdAddressAligment == 8)
-        {
-            kFCCOBx[1] = BYTES_JOIN_TO_WORD_1_3(option, 0xFFFFFFU);
-        }
-        else
-        {
-        }
-
-        /* calling flash command sequence function to execute the command */
-        returnCode = flash_command_sequence(config);
-
-        if (kStatus_FLASH_Success != returnCode)
-        {
-            break;
-        }
-
-        /* fetch data */
-        *dst++ = kFCCOBx[1];
-        if (flashInfo.resourceCmdAddressAligment == 8)
-        {
-            *dst++ = kFCCOBx[2];
-        }
-        /* update start address for next iteration */
-        start += flashInfo.resourceCmdAddressAligment;
-        /* update lengthInBytes for next iteration */
-        lengthInBytes -= flashInfo.resourceCmdAddressAligment;
-    }
-
-    return (returnCode);
-}
-#endif /* FSL_FEATURE_FLASH_HAS_READ_RESOURCE_CMD */
-
-status_t FLASH_ReadOnce(flash_config_t *config, uint32_t index, uint32_t *dst, uint32_t lengthInBytes)
-{
-    status_t returnCode;
-
-    if ((config == NULL) || (dst == NULL))
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    /* pass paramters to FTFx */
-    kFCCOBx[0] = BYTES_JOIN_TO_WORD_1_1_2(FTFx_READ_ONCE, index, 0xFFFFU);
-
-    /* calling flash command sequence function to execute the command */
-    returnCode = flash_command_sequence(config);
-
-    if (kStatus_FLASH_Success == returnCode)
-    {
-        *dst = kFCCOBx[1];
-/* Note: Have to seperate the first index from the rest if it equals 0
- *       to avoid a pointless comparison of unsigned int to 0 compiler warning */
-#if FLASH_PROGRAM_ONCE_IS_8BYTES_UNIT_SUPPORT
-#if FLASH_PROGRAM_ONCE_IS_4BYTES_UNIT_SUPPORT
-        if (((index == FLASH_PROGRAM_ONCE_MIN_ID_8BYTES) ||
-             /* Range check */
-             ((index >= FLASH_PROGRAM_ONCE_MIN_ID_8BYTES + 1) && (index <= FLASH_PROGRAM_ONCE_MAX_ID_8BYTES))) &&
-            (lengthInBytes == 8))
-#endif /* FLASH_PROGRAM_ONCE_IS_4BYTES_UNIT_SUPPORT */
-        {
-            *(dst + 1) = kFCCOBx[2];
-        }
-#endif /* FLASH_PROGRAM_ONCE_IS_8BYTES_UNIT_SUPPORT */
-    }
-
-    return returnCode;
-}
-
-status_t FLASH_GetSecurityState(flash_config_t *config, flash_security_state_t *state)
-{
-    /* store data read from flash register */
-    uint8_t registerValue;
-
-    if ((config == NULL) || (state == NULL))
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    /* Get flash security register value */
-    registerValue = FTFx->FSEC;
-
-    /* check the status of the flash security bits in the security register */
-    if (FLASH_SECURITY_STATE_UNSECURED == (registerValue & FTFx_FSEC_SEC_MASK))
-    {
-        /* Flash in unsecured state */
-        *state = kFLASH_securityStateNotSecure;
-    }
-    else
-    {
-        /* Flash in secured state
-         * check for backdoor key security enable bit */
-        if (FLASH_SECURITY_STATE_KEYEN == (registerValue & FTFx_FSEC_KEYEN_MASK))
-        {
-            /* Backdoor key security enabled */
-            *state = kFLASH_securityStateBackdoorEnabled;
-        }
-        else
-        {
-            /* Backdoor key security disabled */
-            *state = kFLASH_securityStateBackdoorDisabled;
-        }
-    }
-
-    return (kStatus_FLASH_Success);
-}
-
-status_t FLASH_SecurityBypass(flash_config_t *config, const uint8_t *backdoorKey)
-{
-    uint8_t registerValue; /* registerValue */
-    status_t returnCode;   /* return code variable */
-
-    if ((config == NULL) || (backdoorKey == NULL))
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    /* set the default return code as kStatus_Success */
-    returnCode = kStatus_FLASH_Success;
-
-    /* Get flash security register value */
-    registerValue = FTFx->FSEC;
-
-    /* Check to see if flash is in secure state (any state other than 0x2)
-     * If not, then skip this since flash is not secure */
-    if (0x02 != (registerValue & 0x03))
-    {
-        /* preparing passing parameter to erase a flash block */
-        kFCCOBx[0] = BYTES_JOIN_TO_WORD_1_3(FTFx_SECURITY_BY_PASS, 0xFFFFFFU);
-        kFCCOBx[1] = BYTES_JOIN_TO_WORD_1_1_1_1(backdoorKey[0], backdoorKey[1], backdoorKey[2], backdoorKey[3]);
-        kFCCOBx[2] = BYTES_JOIN_TO_WORD_1_1_1_1(backdoorKey[4], backdoorKey[5], backdoorKey[6], backdoorKey[7]);
-
-        /* calling flash command sequence function to execute the command */
-        returnCode = flash_command_sequence(config);
-    }
-
-    return (returnCode);
-}
-
-status_t FLASH_VerifyEraseAll(flash_config_t *config, flash_margin_value_t margin)
-{
-    if (config == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    /* preparing passing parameter to verify all block command */
-    kFCCOBx[0] = BYTES_JOIN_TO_WORD_1_1_2(FTFx_VERIFY_ALL_BLOCK, margin, 0xFFFFU);
-
-    /* calling flash command sequence function to execute the command */
-    return flash_command_sequence(config);
-}
-
-status_t FLASH_VerifyErase(flash_config_t *config, uint32_t start, uint32_t lengthInBytes, flash_margin_value_t margin)
-{
-    /* Check arguments. */
-    uint32_t blockSize;
-    flash_operation_config_t flashInfo;
-    uint32_t nextBlockStartAddress;
-    uint32_t remainingBytes;
-    status_t returnCode;
-
-    flash_get_matched_operation_info(config, start, &flashInfo);
-
-    returnCode = flash_check_range(config, start, lengthInBytes, flashInfo.sectionCmdAddressAligment);
-    if (returnCode)
-    {
-        return returnCode;
-    }
-
-    flash_get_matched_operation_info(config, start, &flashInfo);
-    start = flashInfo.convertedAddress;
-    blockSize = flashInfo.activeBlockSize;
-
-    nextBlockStartAddress = ALIGN_UP(start, blockSize);
-    if (nextBlockStartAddress == start)
-    {
-        nextBlockStartAddress += blockSize;
-    }
-
-    remainingBytes = lengthInBytes;
-
-    while (remainingBytes)
-    {
-        uint32_t numberOfPhrases;
-        uint32_t verifyLength = nextBlockStartAddress - start;
-        if (verifyLength > remainingBytes)
-        {
-            verifyLength = remainingBytes;
-        }
-
-        numberOfPhrases = verifyLength / flashInfo.sectionCmdAddressAligment;
-
-        /* Fill in verify section command parameters. */
-        kFCCOBx[0] = BYTES_JOIN_TO_WORD_1_3(FTFx_VERIFY_SECTION, start);
-        kFCCOBx[1] = BYTES_JOIN_TO_WORD_2_1_1(numberOfPhrases, margin, 0xFFU);
-
-        /* calling flash command sequence function to execute the command */
-        returnCode = flash_command_sequence(config);
-        if (returnCode)
-        {
-            return returnCode;
-        }
-
-        remainingBytes -= verifyLength;
-        start += verifyLength;
-        nextBlockStartAddress += blockSize;
-    }
-
-    return kStatus_FLASH_Success;
-}
-
-status_t FLASH_VerifyProgram(flash_config_t *config,
-                             uint32_t start,
-                             uint32_t lengthInBytes,
-                             const uint32_t *expectedData,
-                             flash_margin_value_t margin,
-                             uint32_t *failedAddress,
-                             uint32_t *failedData)
-{
-    status_t returnCode;
-    flash_operation_config_t flashInfo;
-
-    if (expectedData == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    flash_get_matched_operation_info(config, start, &flashInfo);
-
-    returnCode = flash_check_range(config, start, lengthInBytes, flashInfo.checkCmdAddressAligment);
-    if (returnCode)
-    {
-        return returnCode;
-    }
-
-    start = flashInfo.convertedAddress;
-
-    while (lengthInBytes)
-    {
-        /* preparing passing parameter to program check the flash block */
-        kFCCOBx[0] = BYTES_JOIN_TO_WORD_1_3(FTFx_PROGRAM_CHECK, start);
-        kFCCOBx[1] = BYTES_JOIN_TO_WORD_1_3(margin, 0xFFFFFFU);
-        kFCCOBx[2] = *expectedData;
-
-        /* calling flash command sequence function to execute the command */
-        returnCode = flash_command_sequence(config);
-
-        /* checking for the success of command execution */
-        if (kStatus_FLASH_Success != returnCode)
-        {
-            if (failedAddress)
-            {
-                *failedAddress = start;
-            }
-            if (failedData)
-            {
-                *failedData = 0;
-            }
-            break;
-        }
-
-        lengthInBytes -= flashInfo.checkCmdAddressAligment;
-        expectedData += flashInfo.checkCmdAddressAligment / sizeof(*expectedData);
-        start += flashInfo.checkCmdAddressAligment;
-    }
-
-    return (returnCode);
-}
-
-status_t FLASH_VerifyEraseAllExecuteOnlySegments(flash_config_t *config, flash_margin_value_t margin)
-{
-    if (config == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    /* preparing passing parameter to verify erase all execute-only segments command */
-    kFCCOBx[0] = BYTES_JOIN_TO_WORD_1_1_2(FTFx_VERIFY_ALL_EXECUTE_ONLY_SEGMENT, margin, 0xFFFFU);
-
-    /* calling flash command sequence function to execute the command */
-    return flash_command_sequence(config);
-}
-
-status_t FLASH_IsProtected(flash_config_t *config,
-                           uint32_t start,
-                           uint32_t lengthInBytes,
-                           flash_protection_state_t *protection_state)
-{
-    uint32_t endAddress;           /* end address for protection check */
-    uint32_t protectionRegionSize; /* size of flash protection region */
-    uint32_t regionCheckedCounter; /* increments each time the flash address was checked for
-                                    * protection status */
-    uint32_t regionCounter;        /* incrementing variable used to increment through the flash
-                                    * protection regions */
-    uint32_t protectStatusCounter; /* increments each time a flash region was detected as protected */
-
-    uint8_t flashRegionProtectStatus[FSL_FEATURE_FTFx_REGION_COUNT]; /* array of the protection status for each
-                                                                      * protection region */
-    uint32_t flashRegionAddress[FSL_FEATURE_FTFx_REGION_COUNT + 1];  /* array of the start addresses for each flash
-                                                                      * protection region. Note this is REGION_COUNT+1
-                                                                      * due to requiring the next start address after
-                                                                      * the end of flash for loop-check purposes below */
-    status_t returnCode;
-
-    if (protection_state == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    /* Check the supplied address range. */
-    returnCode = flash_check_range(config, start, lengthInBytes, FSL_FEATURE_FLASH_PFLASH_BLOCK_WRITE_UNIT_SIZE);
-    if (returnCode)
-    {
-        return returnCode;
-    }
-
-    /* calculating Flash end address */
-    endAddress = start + lengthInBytes;
-
-    /* Calculate the size of the flash protection region
-     * If the flash density is > 32KB, then protection region is 1/32 of total flash density
-     * Else if flash density is < 32KB, then flash protection region is set to 1KB */
-    if (config->PFlashTotalSize > 32 * 1024)
-    {
-        protectionRegionSize = (config->PFlashTotalSize) / FSL_FEATURE_FTFx_REGION_COUNT;
-    }
-    else
-    {
-        protectionRegionSize = 1024;
-    }
-
-    /* populate the flashRegionAddress array with the start address of each flash region */
-    regionCounter = 0; /* make sure regionCounter is initialized to 0 first */
-
-    /* populate up to 33rd element of array, this is the next address after end of flash array */
-    while (regionCounter <= FSL_FEATURE_FTFx_REGION_COUNT)
-    {
-        flashRegionAddress[regionCounter] = config->PFlashBlockBase + protectionRegionSize * regionCounter;
-        regionCounter++;
-    }
-
-    /* populate flashRegionProtectStatus array with status information
-     * Protection status for each region is stored in the FPROT[3:0] registers
-     * Each bit represents one region of flash
-     * 4 registers * 8-bits-per-register = 32-bits (32-regions)
-     * The convention is:
-     * FPROT3[bit 0] is the first protection region (start of flash memory)
-     * FPROT0[bit 7] is the last protection region (end of flash memory)
-     * regionCounter is used to determine which FPROT[3:0] register to check for protection status
-     * Note: FPROT=1 means NOT protected, FPROT=0 means protected */
-    regionCounter = 0; /* make sure regionCounter is initialized to 0 first */
-    while (regionCounter < FSL_FEATURE_FTFx_REGION_COUNT)
-    {
-        if (regionCounter < 8)
-        {
-            flashRegionProtectStatus[regionCounter] = ((FTFx->FPROT3) >> regionCounter) & (0x01u);
-        }
-        else if ((regionCounter >= 8) && (regionCounter < 16))
-        {
-            flashRegionProtectStatus[regionCounter] = ((FTFx->FPROT2) >> (regionCounter - 8)) & (0x01u);
-        }
-        else if ((regionCounter >= 16) && (regionCounter < 24))
-        {
-            flashRegionProtectStatus[regionCounter] = ((FTFx->FPROT1) >> (regionCounter - 16)) & (0x01u);
-        }
-        else
-        {
-            flashRegionProtectStatus[regionCounter] = ((FTFx->FPROT0) >> (regionCounter - 24)) & (0x01u);
-        }
-        regionCounter++;
-    }
-
-    /* loop through the flash regions and check
-     * desired flash address range for protection status
-     * loop stops when it is detected that start has exceeded the endAddress */
-    regionCounter = 0; /* make sure regionCounter is initialized to 0 first */
-    regionCheckedCounter = 0;
-    protectStatusCounter = 0; /* make sure protectStatusCounter is initialized to 0 first */
-    while (start < endAddress)
-    {
-        /* check to see if the address falls within this protection region
-         * Note that if the entire flash is to be checked, the last protection
-         * region checked would consist of the last protection start address and
-         * the start address following the end of flash */
-        if ((start >= flashRegionAddress[regionCounter]) && (start < flashRegionAddress[regionCounter + 1]))
-        {
-            /* increment regionCheckedCounter to indicate this region was checked */
-            regionCheckedCounter++;
-
-            /* check the protection status of this region
-             * Note: FPROT=1 means NOT protected, FPROT=0 means protected */
-            if (!flashRegionProtectStatus[regionCounter])
-            {
-                /* increment protectStatusCounter to indicate this region is protected */
-                protectStatusCounter++;
-            }
-            start += protectionRegionSize; /* increment to an address within the next region */
-        }
-        regionCounter++; /* increment regionCounter to check for the next flash protection region */
-    }
-
-    /* if protectStatusCounter == 0, then no region of the desired flash region is protected */
-    if (protectStatusCounter == 0)
-    {
-        *protection_state = kFLASH_protectionStateUnprotected;
-    }
-    /* if protectStatusCounter == regionCheckedCounter, then each region checked was protected */
-    else if (protectStatusCounter == regionCheckedCounter)
-    {
-        *protection_state = kFLASH_protectionStateProtected;
-    }
-    /* if protectStatusCounter != regionCheckedCounter, then protection status is mixed
-     * In other words, some regions are protected while others are unprotected */
-    else
-    {
-        *protection_state = kFLASH_protectionStateMixed;
-    }
-
-    return (returnCode);
-}
-
-status_t FLASH_IsExecuteOnly(flash_config_t *config,
-                             uint32_t start,
-                             uint32_t lengthInBytes,
-                             flash_execute_only_access_state_t *access_state)
-{
-    status_t returnCode;
-
-    if (access_state == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    /* Check the supplied address range. */
-    returnCode = flash_check_range(config, start, lengthInBytes, FSL_FEATURE_FLASH_PFLASH_BLOCK_WRITE_UNIT_SIZE);
-    if (returnCode)
-    {
-        return returnCode;
-    }
-
-#if defined(FSL_FEATURE_FLASH_HAS_ACCESS_CONTROL) && FSL_FEATURE_FLASH_HAS_ACCESS_CONTROL
-    {
-        uint32_t executeOnlySegmentCounter = 0;
-
-        /* calculating end address */
-        uint32_t endAddress = start + lengthInBytes;
-
-        /* Aligning start address and end address */
-        uint32_t alignedStartAddress = ALIGN_DOWN(start, config->PFlashAccessSegmentSize);
-        uint32_t alignedEndAddress = ALIGN_UP(endAddress, config->PFlashAccessSegmentSize);
-
-        uint32_t segmentIndex = 0;
-        uint32_t maxSupportedExecuteOnlySegmentCount =
-            (alignedEndAddress - alignedStartAddress) / config->PFlashAccessSegmentSize;
-
-        while (start < endAddress)
-        {
-            uint32_t xacc;
-
-            segmentIndex = start / config->PFlashAccessSegmentSize;
-
-            if (segmentIndex < 32)
-            {
-                xacc = *(const volatile uint32_t *)&FTFx->XACCL3;
-            }
-            else if (segmentIndex < config->PFlashAccessSegmentCount)
-            {
-                xacc = *(const volatile uint32_t *)&FTFx->XACCH3;
-                segmentIndex -= 32;
-            }
-            else
-            {
-                break;
-            }
-
-            /* Determine if this address range is in a execute-only protection flash segment. */
-            if ((~xacc) & (1u << segmentIndex))
-            {
-                executeOnlySegmentCounter++;
-            }
-
-            start += config->PFlashAccessSegmentSize;
-        }
-
-        if (executeOnlySegmentCounter < 1u)
-        {
-            *access_state = kFLASH_accessStateUnLimited;
-        }
-        else if (executeOnlySegmentCounter < maxSupportedExecuteOnlySegmentCount)
-        {
-            *access_state = kFLASH_accessStateMixed;
-        }
-        else
-        {
-            *access_state = kFLASH_accessStateExecuteOnly;
-        }
-    }
-#else
-    *access_state = kFLASH_accessStateUnLimited;
-#endif /* FSL_FEATURE_FLASH_HAS_ACCESS_CONTROL */
-
-    return (returnCode);
-}
-
-status_t FLASH_GetProperty(flash_config_t *config, flash_property_tag_t whichProperty, uint32_t *value)
-{
-    if ((config == NULL) || (value == NULL))
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    switch (whichProperty)
-    {
-        case kFLASH_propertyPflashSectorSize:
-            *value = config->PFlashSectorSize;
-            break;
-
-        case kFLASH_propertyPflashTotalSize:
-            *value = config->PFlashTotalSize;
-            break;
-
-        case kFLASH_propertyPflashBlockSize:
-            *value = config->PFlashTotalSize / FSL_FEATURE_FLASH_PFLASH_BLOCK_COUNT;
-            break;
-
-        case kFLASH_propertyPflashBlockCount:
-            *value = config->PFlashBlockCount;
-            break;
-
-        case kFLASH_propertyPflashBlockBaseAddr:
-            *value = config->PFlashBlockBase;
-            break;
-
-        case kFLASH_propertyPflashFacSupport:
-#if defined(FSL_FEATURE_FLASH_HAS_ACCESS_CONTROL)
-            *value = FSL_FEATURE_FLASH_HAS_ACCESS_CONTROL;
-#else
-            *value = 0;
-#endif /* FSL_FEATURE_FLASH_HAS_ACCESS_CONTROL */
-            break;
-
-        case kFLASH_propertyPflashAccessSegmentSize:
-            *value = config->PFlashAccessSegmentSize;
-            break;
-
-        case kFLASH_propertyPflashAccessSegmentCount:
-            *value = config->PFlashAccessSegmentCount;
-            break;
-
-#if FLASH_SSD_IS_FLEXNVM_ENABLED
-        case kFLASH_propertyDflashSectorSize:
-            *value = FSL_FEATURE_FLASH_FLEX_NVM_BLOCK_SECTOR_SIZE;
-            break;
-        case kFLASH_propertyDflashTotalSize:
-            *value = config->DFlashTotalSize;
-            break;
-        case kFLASH_propertyDflashBlockSize:
-            *value = FSL_FEATURE_FLASH_FLEX_NVM_BLOCK_SIZE;
-            break;
-        case kFLASH_propertyDflashBlockCount:
-            *value = FSL_FEATURE_FLASH_FLEX_NVM_BLOCK_COUNT;
-            break;
-        case kFLASH_propertyDflashBlockBaseAddr:
-            *value = config->DFlashBlockBase;
-            break;
-        case kFLASH_propertyEepromTotalSize:
-            *value = config->EEpromTotalSize;
-            break;
-#endif /* FLASH_SSD_IS_FLEXNVM_ENABLED */
-
-        default: /* catch inputs that are not recognized */
-            return kStatus_FLASH_UnknownProperty;
-    }
-
-    return kStatus_FLASH_Success;
-}
-
-#if defined(FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD) && FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD
-status_t FLASH_SetFlexramFunction(flash_config_t *config, flash_flexram_function_option_t option)
-{
-    status_t status;
-
-    if (config == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    status = flasn_check_flexram_function_option_range(option);
-    if (status != kStatus_FLASH_Success)
-    {
-        return status;
-    }
-
-    /* preparing passing parameter to verify all block command */
-    kFCCOBx[0] = BYTES_JOIN_TO_WORD_1_1_2(FTFx_SET_FLEXRAM_FUNCTION, option, 0xFFFFU);
-
-    /* calling flash command sequence function to execute the command */
-    return flash_command_sequence(config);
-}
-#endif /* FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD */
-
-#if defined(FSL_FEATURE_FLASH_HAS_SWAP_CONTROL_CMD) && FSL_FEATURE_FLASH_HAS_SWAP_CONTROL_CMD
-status_t FLASH_SwapControl(flash_config_t *config,
-                           uint32_t address,
-                           flash_swap_control_option_t option,
-                           flash_swap_state_config_t *returnInfo)
-{
-    status_t returnCode;
-
-    if ((config == NULL) || (returnInfo == NULL))
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    if (address & (FSL_FEATURE_FLASH_PFLASH_SWAP_CONTROL_CMD_ADDRESS_ALIGMENT - 1))
-    {
-        return kStatus_FLASH_AlignmentError;
-    }
-
-    /* Make sure address provided is in the lower half of Program flash but not in the Flash Configuration Field */
-    if ((address >= (config->PFlashTotalSize / 2)) ||
-        ((address >= kFLASH_configAreaStart) && (address <= kFLASH_configAreaEnd)))
-    {
-        return kStatus_FLASH_SwapIndicatorAddressError;
-    }
-
-    /* Check the option. */
-    returnCode = flash_check_swap_control_option(option);
-    if (returnCode)
-    {
-        return returnCode;
-    }
-
-    kFCCOBx[0] = BYTES_JOIN_TO_WORD_1_3(FTFx_SWAP_CONTROL, address);
-    kFCCOBx[1] = BYTES_JOIN_TO_WORD_1_3(option, 0xFFFFFFU);
-
-    returnCode = flash_command_sequence(config);
-
-    returnInfo->flashSwapState = (flash_swap_state_t)FTFx->FCCOB5;
-    returnInfo->currentSwapBlockStatus = (flash_swap_block_status_t)FTFx->FCCOB6;
-    returnInfo->nextSwapBlockStatus = (flash_swap_block_status_t)FTFx->FCCOB7;
-
-    return returnCode;
-}
-#endif /* FSL_FEATURE_FLASH_HAS_SWAP_CONTROL_CMD */
-
-#if defined(FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP) && FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP
-status_t FLASH_Swap(flash_config_t *config, uint32_t address, flash_swap_function_option_t option)
-{
-    flash_swap_state_config_t returnInfo;
-    status_t returnCode;
-
-    memset(&returnInfo, 0xFFU, sizeof(returnInfo));
-
-    do
-    {
-        returnCode = FLASH_SwapControl(config, address, kFLASH_swapControlOptionReportStatus, &returnInfo);
-        if (returnCode != kStatus_FLASH_Success)
-        {
-            return returnCode;
-        }
-
-        if (kFLASH_swapFunctionOptionDisable == option)
-        {
-            if (returnInfo.flashSwapState == kFLASH_swapStateDisabled)
-            {
-                return kStatus_FLASH_Success;
-            }
-            else if (returnInfo.flashSwapState == kFLASH_swapStateUninitialized)
-            {
-                /* The swap system changed to the DISABLED state with Program flash block 0
-                 * located at relative flash address 0x0_0000 */
-                returnCode = FLASH_SwapControl(config, address, kFLASH_swapControlOptionDisableSystem, &returnInfo);
-            }
-            else
-            {
-                /* Swap disable should be requested only when swap system is in the uninitialized state */
-                return kStatus_FLASH_SwapSystemNotInUninitialized;
-            }
-        }
-        else
-        {
-            /* When first swap: the initial swap state is Uninitialized, flash swap inidicator address is unset,
-             *    the swap procedure should be Uninitialized -> Update-Erased -> Complete.
-             * After the first swap has been completed, the flash swap inidicator address cannot be modified
-             *    unless EraseAllBlocks command is issued, the swap procedure is changed to Update -> Update-Erased ->
-             *    Complete. */
-            switch (returnInfo.flashSwapState)
-            {
-                case kFLASH_swapStateUninitialized:
-                    /* If current swap mode is Uninitialized, Initialize Swap to Initialized/READY state. */
-                    returnCode =
-                        FLASH_SwapControl(config, address, kFLASH_swapControlOptionIntializeSystem, &returnInfo);
-                    break;
-                case kFLASH_swapStateReady:
-                    /* Validate whether the address provided to the swap system is matched to
-                     * swap indicator address in the IFR */
-                    returnCode = flash_validate_swap_indicator_address(config, address);
-                    if (returnCode == kStatus_FLASH_Success)
-                    {
-                        /* If current swap mode is Initialized/Ready, Initialize Swap to UPDATE state. */
-                        returnCode =
-                            FLASH_SwapControl(config, address, kFLASH_swapControlOptionSetInUpdateState, &returnInfo);
-                    }
-                    break;
-                case kFLASH_swapStateUpdate:
-                    /* If current swap mode is Update, Erase indicator sector in non active block
-                     * to proceed swap system to update-erased state */
-                    returnCode = FLASH_Erase(config, address + (config->PFlashTotalSize >> 1),
-                                             FSL_FEATURE_FLASH_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT, kFLASH_apiEraseKey);
-                    break;
-                case kFLASH_swapStateUpdateErased:
-                    /* If current swap mode is Update or Update-Erased, progress Swap to COMPLETE State */
-                    returnCode =
-                        FLASH_SwapControl(config, address, kFLASH_swapControlOptionSetInCompleteState, &returnInfo);
-                    break;
-                case kFLASH_swapStateComplete:
-                    break;
-                case kFLASH_swapStateDisabled:
-                    /* When swap system is in disabled state, We need to clear swap system back to uninitialized
-                     * by issuing EraseAllBlocks command */
-                    returnCode = kStatus_FLASH_SwapSystemNotInUninitialized;
-                    break;
-                default:
-                    returnCode = kStatus_FLASH_InvalidArgument;
-                    break;
-            }
-        }
-        if (returnCode != kStatus_FLASH_Success)
-        {
-            break;
-        }
-    } while (!((kFLASH_swapStateComplete == returnInfo.flashSwapState) && (kFLASH_swapFunctionOptionEnable == option)));
-
-    return returnCode;
-}
-#endif /* FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP */
-
-#if defined(FSL_FEATURE_FLASH_HAS_PROGRAM_PARTITION_CMD) && FSL_FEATURE_FLASH_HAS_PROGRAM_PARTITION_CMD
-status_t FLASH_ProgramPartition(flash_config_t *config,
-                                flash_partition_flexram_load_option_t option,
-                                uint32_t eepromDataSizeCode,
-                                uint32_t flexnvmPartitionCode)
-{
-    status_t returnCode;
-
-    if (config == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    /* eepromDataSizeCode[7:6], flexnvmPartitionCode[7:4] should be all 1'b0
-     *  or it will cause access error. */
-    /* eepromDataSizeCode &= 0x3FU;  */
-    /* flexnvmPartitionCode &= 0x0FU; */
-
-    /* preparing passing parameter to program the flash block */
-    kFCCOBx[0] = BYTES_JOIN_TO_WORD_1_2_1(FTFx_PROGRAM_PARTITION, 0xFFFFU, option);
-    kFCCOBx[1] = BYTES_JOIN_TO_WORD_1_1_2(eepromDataSizeCode, flexnvmPartitionCode, 0xFFFFU);
-
-    /* calling flash command sequence function to execute the command */
-    returnCode = flash_command_sequence(config);
-
-    flash_cache_clear(config);
-
-#if FLASH_SSD_IS_FLEXNVM_ENABLED
-    /* Data flash IFR will be updated by program partition command during reset sequence,
-     * so we just set reserved values for partitioned FlexNVM size here */
-    config->EEpromTotalSize = FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_RESERVED;
-    config->DFlashTotalSize = FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED;
-#endif
-
-    return (returnCode);
-}
-#endif /* FSL_FEATURE_FLASH_HAS_PROGRAM_PARTITION_CMD */
-
-status_t FLASH_PflashSetProtection(flash_config_t *config, uint32_t protectStatus)
-{
-    if (config == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    *kFPROT = protectStatus;
-
-    if (protectStatus != *kFPROT)
-    {
-        return kStatus_FLASH_CommandFailure;
-    }
-
-    return kStatus_FLASH_Success;
-}
-
-status_t FLASH_PflashGetProtection(flash_config_t *config, uint32_t *protectStatus)
-{
-    if ((config == NULL) || (protectStatus == NULL))
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    *protectStatus = *kFPROT;
-
-    return kStatus_FLASH_Success;
-}
-
-#if FLASH_SSD_IS_FLEXNVM_ENABLED
-status_t FLASH_DflashSetProtection(flash_config_t *config, uint8_t protectStatus)
-{
-    if (config == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    if ((config->DFlashTotalSize == 0) || (config->DFlashTotalSize == FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED))
-    {
-        return kStatus_FLASH_CommandNotSupported;
-    }
-
-    FTFx->FDPROT = protectStatus;
-
-    if (FTFx->FDPROT != protectStatus)
-    {
-        return kStatus_FLASH_CommandFailure;
-    }
-
-    return kStatus_FLASH_Success;
-}
-#endif /* FLASH_SSD_IS_FLEXNVM_ENABLED */
-
-#if FLASH_SSD_IS_FLEXNVM_ENABLED
-status_t FLASH_DflashGetProtection(flash_config_t *config, uint8_t *protectStatus)
-{
-    if ((config == NULL) || (protectStatus == NULL))
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    if ((config->DFlashTotalSize == 0) || (config->DFlashTotalSize == FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED))
-    {
-        return kStatus_FLASH_CommandNotSupported;
-    }
-
-    *protectStatus = FTFx->FDPROT;
-
-    return kStatus_FLASH_Success;
-}
-#endif /* FLASH_SSD_IS_FLEXNVM_ENABLED */
-
-#if FLASH_SSD_IS_FLEXNVM_ENABLED
-status_t FLASH_EepromSetProtection(flash_config_t *config, uint8_t protectStatus)
-{
-    if (config == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    if ((config->EEpromTotalSize == 0) || (config->EEpromTotalSize == FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_RESERVED))
-    {
-        return kStatus_FLASH_CommandNotSupported;
-    }
-
-    FTFx->FEPROT = protectStatus;
-
-    if (FTFx->FEPROT != protectStatus)
-    {
-        return kStatus_FLASH_CommandFailure;
-    }
-
-    return kStatus_FLASH_Success;
-}
-#endif /* FLASH_SSD_IS_FLEXNVM_ENABLED */
-
-#if FLASH_SSD_IS_FLEXNVM_ENABLED
-status_t FLASH_EepromGetProtection(flash_config_t *config, uint8_t *protectStatus)
-{
-    if ((config == NULL) || (protectStatus == NULL))
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    if ((config->EEpromTotalSize == 0) || (config->EEpromTotalSize == FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_RESERVED))
-    {
-        return kStatus_FLASH_CommandNotSupported;
-    }
-
-    *protectStatus = FTFx->FEPROT;
-
-    return kStatus_FLASH_Success;
-}
-#endif /* FLASH_SSD_IS_FLEXNVM_ENABLED */
-
-#if FLASH_DRIVER_IS_FLASH_RESIDENT
-/*!
- * @brief Run flash command
- *
- * This function should be copied to RAM for execution to make sure that code works
- * properly even flash cache is disabled.
- * It is for flash-resident bootloader only, not technically required for ROM or
- *  flashloader (RAM-resident bootloader).
- */
-void flash_run_command(FTFx_REG_ACCESS_TYPE ftfx_fstat)
-{
-    /* clear CCIF bit */
-    *ftfx_fstat = FTFx_FSTAT_CCIF_MASK;
-
-    /* Check CCIF bit of the flash status register, wait till it is set.
-     * IP team indicates that this loop will always complete. */
-    while (!((*ftfx_fstat) & FTFx_FSTAT_CCIF_MASK))
-    {
-    }
-}
-
-/*!
- * @brief Be used for determining the size of flash_run_command()
- *
- * This function must be defined that lexically follows flash_run_command(),
- * so we can determine the size of flash_run_command() at runtime and not worry
- * about toolchain or code generation differences.
- */
-void flash_run_command_end(void)
-{
-}
-
-/*!
- * @brief Copy flash_run_command() to RAM
- *
- * This function copys the memory between flash_run_command() and flash_run_command_end()
- * into the buffer which is also means that copying flash_run_command() to RAM.
- */
-static void copy_flash_run_command(uint8_t *flashRunCommand)
-{
-    /* Calculate the valid length of flash_run_command() memory.
-     * Set max size(64 bytes) as default function size, in case some compiler allocates
-     * flash_run_command_end ahead of flash_run_command. */
-    uint32_t funcLength = kFLASH_executeInRamFunctionMaxSize;
-    uint32_t flash_run_command_start_addr = (uint32_t)flash_run_command & (~1U);
-    uint32_t flash_run_command_end_addr = (uint32_t)flash_run_command_end & (~1U);
-    if (flash_run_command_end_addr > flash_run_command_start_addr)
-    {
-        funcLength = flash_run_command_end_addr - flash_run_command_start_addr;
-
-        assert(funcLength <= kFLASH_executeInRamFunctionMaxSize);
-
-        /* In case some compiler allocates other function in the middle of flash_run_command
-         * and flash_run_command_end. */
-        if (funcLength > kFLASH_executeInRamFunctionMaxSize)
-        {
-            funcLength = kFLASH_executeInRamFunctionMaxSize;
-        }
-    }
-
-    /* Since the value of ARM function pointer is always odd, but the real start address
-     * of function memory should be even, that's why -1 and +1 operation exist. */
-    memcpy((void *)flashRunCommand, (void *)flash_run_command_start_addr, funcLength);
-    callFlashRunCommand = (void (*)(FTFx_REG_ACCESS_TYPE ftfx_fstat))((uint32_t)flashRunCommand + 1);
-}
-#endif /* FLASH_DRIVER_IS_FLASH_RESIDENT */
-
-/*!
- * @brief Flash Command Sequence
- *
- * This function is used to perform the command write sequence to the flash.
- *
- * @param driver Pointer to storage for the driver runtime state.
- * @return An error code or kStatus_FLASH_Success
- */
-static status_t flash_command_sequence(flash_config_t *config)
-{
-    uint8_t registerValue;
-
-#if FLASH_DRIVER_IS_FLASH_RESIDENT
-    /* clear RDCOLERR & ACCERR & FPVIOL flag in flash status register */
-    FTFx->FSTAT = FTFx_FSTAT_RDCOLERR_MASK | FTFx_FSTAT_ACCERR_MASK | FTFx_FSTAT_FPVIOL_MASK;
-
-    status_t returnCode = flash_check_execute_in_ram_function_info(config);
-    if (kStatus_FLASH_Success != returnCode)
-    {
-        return returnCode;
-    }
-
-    /* We pass the ftfx_fstat address as a parameter to flash_run_comamnd() instead of using
-     * pre-processed MICRO sentences or operating global variable in flash_run_comamnd()
-     * to make sure that flash_run_command() will be compiled into position-independent code (PIC). */
-    callFlashRunCommand((FTFx_REG_ACCESS_TYPE)(&FTFx->FSTAT));
-#else
-    /* clear RDCOLERR & ACCERR & FPVIOL flag in flash status register */
-    FTFx->FSTAT = FTFx_FSTAT_RDCOLERR_MASK | FTFx_FSTAT_ACCERR_MASK | FTFx_FSTAT_FPVIOL_MASK;
-
-    /* clear CCIF bit */
-    FTFx->FSTAT = FTFx_FSTAT_CCIF_MASK;
-
-    /* Check CCIF bit of the flash status register, wait till it is set.
-     * IP team indicates that this loop will always complete. */
-    while (!(FTFx->FSTAT & FTFx_FSTAT_CCIF_MASK))
-    {
-    }
-#endif /* FLASH_DRIVER_IS_FLASH_RESIDENT */
-
-    /* Check error bits */
-    /* Get flash status register value */
-    registerValue = FTFx->FSTAT;
-
-    /* checking access error */
-    if (registerValue & FTFx_FSTAT_ACCERR_MASK)
-    {
-        return kStatus_FLASH_AccessError;
-    }
-    /* checking protection error */
-    else if (registerValue & FTFx_FSTAT_FPVIOL_MASK)
-    {
-        return kStatus_FLASH_ProtectionViolation;
-    }
-    /* checking MGSTAT0 non-correctable error */
-    else if (registerValue & FTFx_FSTAT_MGSTAT0_MASK)
-    {
-        return kStatus_FLASH_CommandFailure;
-    }
-    else
-    {
-        return kStatus_FLASH_Success;
-    }
-}
-
-#if FLASH_DRIVER_IS_FLASH_RESIDENT
-/*!
- * @brief Run flash cache clear command
- *
- * This function should be copied to RAM for execution to make sure that code works
- * properly even flash cache is disabled.
- * It is for flash-resident bootloader only, not technically required for ROM or
- * flashloader (RAM-resident bootloader).
- */
-void flash_cache_clear_command(FTFx_REG32_ACCESS_TYPE ftfx_reg)
-{
-#if defined(FSL_FEATURE_FLASH_HAS_MCM_FLASH_CACHE_CONTROLS) && FSL_FEATURE_FLASH_HAS_MCM_FLASH_CACHE_CONTROLS
-    *ftfx_reg |= MCM_PLACR_CFCC_MASK;
-#elif defined(FSL_FEATURE_FLASH_HAS_FMC_FLASH_CACHE_CONTROLS) && FSL_FEATURE_FLASH_HAS_FMC_FLASH_CACHE_CONTROLS
-#if defined(FMC_PFB01CR_CINV_WAY_MASK)
-    *ftfx_reg = (*ftfx_reg & ~FMC_PFB01CR_CINV_WAY_MASK) | FMC_PFB01CR_CINV_WAY(~0);
-#else
-    *ftfx_reg = (*ftfx_reg & ~FMC_PFB0CR_CINV_WAY_MASK) | FMC_PFB0CR_CINV_WAY(~0);
-#endif
-#elif defined(FSL_FEATURE_FLASH_HAS_MSCM_FLASH_CACHE_CONTROLS) && FSL_FEATURE_FLASH_HAS_MSCM_FLASH_CACHE_CONTROLS
-    *ftfx_reg |= MSCM_OCMDR_OCMC1(2);
-    *ftfx_reg |= MSCM_OCMDR_OCMC1(1);
-#else
-/*    #error "Unknown flash cache controller"  */
-#endif /* FSL_FEATURE_FTFx_MCM_FLASH_CACHE_CONTROLS */
-       /* Memory barriers for good measure.
-        * All Cache, Branch predictor and TLB maintenance operations before this instruction complete */
-    __ISB();
-    __DSB();
-}
-
-/*!
- * @brief Be used for determining the size of flash_cache_clear_command()
- *
- * This function must be defined that lexically follows flash_cache_clear_command(),
- * so we can determine the size of flash_cache_clear_command() at runtime and not worry
- * about toolchain or code generation differences.
- */
-void flash_cache_clear_command_end(void)
-{
-}
-
-/*!
- * @brief Copy flash_cache_clear_command() to RAM
- *
- * This function copys the memory between flash_cache_clear_command() and flash_cache_clear_command_end()
- * into the buffer which is also means that copying flash_cache_clear_command() to RAM.
- */
-static void copy_flash_cache_clear_command(uint8_t *flashCacheClearCommand)
-{
-    /* Calculate the valid length of flash_cache_clear_command() memory.
-     * Set max size(64 bytes) as default function size, in case some compiler allocates
-     * flash_cache_clear_command_end ahead of flash_cache_clear_command. */
-    uint32_t funcLength = kFLASH_executeInRamFunctionMaxSize;
-    uint32_t flash_cache_clear_command_start_addr = (uint32_t)flash_cache_clear_command & (~1U);
-    uint32_t flash_cache_clear_command_end_addr = (uint32_t)flash_cache_clear_command_end & (~1U);
-    if (flash_cache_clear_command_end_addr > flash_cache_clear_command_start_addr)
-    {
-        funcLength = flash_cache_clear_command_end_addr - flash_cache_clear_command_start_addr;
-
-        assert(funcLength <= kFLASH_executeInRamFunctionMaxSize);
-
-        /* In case some compiler allocates other function in the middle of flash_cache_clear_command
-         * and flash_cache_clear_command_end. */
-        if (funcLength > kFLASH_executeInRamFunctionMaxSize)
-        {
-            funcLength = kFLASH_executeInRamFunctionMaxSize;
-        }
-    }
-
-    /* Since the value of ARM function pointer is always odd, but the real start address
-     * of function memory should be even, that's why -1 and +1 operation exist. */
-    memcpy((void *)flashCacheClearCommand, (void *)flash_cache_clear_command_start_addr, funcLength);
-    callFlashCacheClearCommand = (void (*)(FTFx_REG32_ACCESS_TYPE ftfx_reg))((uint32_t)flashCacheClearCommand + 1);
-}
-#endif /* FLASH_DRIVER_IS_FLASH_RESIDENT */
-
-/*!
- * @brief Flash Cache Clear
- *
- * This function is used to perform the cache clear to the flash.
- */
-#if (defined(__GNUC__))
-/* #pragma GCC push_options */
-/* #pragma GCC optimize("O0") */
-void __attribute__((optimize("O0"))) flash_cache_clear(flash_config_t *config)
-#else
-#if (defined(__ICCARM__))
-#pragma optimize = none
-#endif
-#if (defined(__CC_ARM))
-#pragma push
-#pragma O0
-#endif
-void flash_cache_clear(flash_config_t *config)
-#endif
-{
-#if FLASH_DRIVER_IS_FLASH_RESIDENT
-    status_t returnCode = flash_check_execute_in_ram_function_info(config);
-    if (kStatus_FLASH_Success != returnCode)
-    {
-        return;
-    }
-
-/* We pass the ftfx register address as a parameter to flash_cache_clear_comamnd() instead of using
- * pre-processed MACROs or a global variable in flash_cache_clear_comamnd()
- * to make sure that flash_cache_clear_command() will be compiled into position-independent code (PIC). */
-#if defined(FSL_FEATURE_FLASH_HAS_MCM_FLASH_CACHE_CONTROLS) && FSL_FEATURE_FLASH_HAS_MCM_FLASH_CACHE_CONTROLS
-#if defined(MCM)
-    callFlashCacheClearCommand((FTFx_REG32_ACCESS_TYPE)&MCM->PLACR);
-#endif
-#if defined(MCM0)
-    callFlashCacheClearCommand((FTFx_REG32_ACCESS_TYPE)&MCM0->PLACR);
-#endif
-#if defined(MCM1)
-    callFlashCacheClearCommand((FTFx_REG32_ACCESS_TYPE)&MCM1->PLACR);
-#endif
-#elif defined(FSL_FEATURE_FLASH_HAS_FMC_FLASH_CACHE_CONTROLS) && FSL_FEATURE_FLASH_HAS_FMC_FLASH_CACHE_CONTROLS
-#if defined(FMC_PFB01CR_CINV_WAY_MASK)
-    callFlashCacheClearCommand((FTFx_REG32_ACCESS_TYPE)&FMC->PFB01CR);
-#else
-    callFlashCacheClearCommand((FTFx_REG32_ACCESS_TYPE)&FMC->PFB0CR);
-#endif
-#elif defined(FSL_FEATURE_FLASH_HAS_MSCM_FLASH_CACHE_CONTROLS) && FSL_FEATURE_FLASH_HAS_MSCM_FLASH_CACHE_CONTROLS
-    callFlashCacheClearCommand((FTFx_REG32_ACCESS_TYPE)&MSCM->OCMDR[0]);
-#else
-    /* #error "Unknown flash cache controller" */
-    /* meaningless code, just a workaround to solve warning*/
-    callFlashCacheClearCommand((FTFx_REG32_ACCESS_TYPE)0);
-#endif /* FSL_FEATURE_FTFx_MCM_FLASH_CACHE_CONTROLS */
-
-#else
-
-#if defined(FSL_FEATURE_FLASH_HAS_MCM_FLASH_CACHE_CONTROLS) && FSL_FEATURE_FLASH_HAS_MCM_FLASH_CACHE_CONTROLS
-#if defined(MCM)
-    MCM->PLACR |= MCM_PLACR_CFCC_MASK;
-#endif
-#if defined(MCM0)
-    MCM0->PLACR |= MCM_PLACR_CFCC_MASK;
-#endif
-#if defined(MCM1)
-    MCM1->PLACR |= MCM_PLACR_CFCC_MASK;
-#endif
-#elif defined(FSL_FEATURE_FLASH_HAS_FMC_FLASH_CACHE_CONTROLS) && FSL_FEATURE_FLASH_HAS_FMC_FLASH_CACHE_CONTROLS
-#if defined(FMC_PFB01CR_CINV_WAY_MASK)
-    FMC->PFB01CR = (FMC->PFB01CR & ~FMC_PFB01CR_CINV_WAY_MASK) | FMC_PFB01CR_CINV_WAY(~0);
-#else
-    FMC->PFB0CR = (FMC->PFB0CR & ~FMC_PFB0CR_CINV_WAY_MASK) | FMC_PFB0CR_CINV_WAY(~0);
-#endif
-#elif defined(FSL_FEATURE_FLASH_HAS_MSCM_FLASH_CACHE_CONTROLS) && FSL_FEATURE_FLASH_HAS_MSCM_FLASH_CACHE_CONTROLS
-    MSCM->OCMDR[0] |= MSCM_OCMDR_OCMC1(2);
-    MSCM->OCMDR[0] |= MSCM_OCMDR_OCMC1(1);
-#else
-/*    #error "Unknown flash cache controller" */
-#endif /* FSL_FEATURE_FTFx_MCM_FLASH_CACHE_CONTROLS */
-#endif /* FLASH_DRIVER_IS_FLASH_RESIDENT */
-}
-#if (defined(__CC_ARM))
-#pragma pop
-#endif
-#if (defined(__GNUC__))
-/* #pragma GCC pop_options */
-#endif
-
-#if FLASH_DRIVER_IS_FLASH_RESIDENT
-/*! @brief Check whether flash execute-in-ram functions are ready  */
-static status_t flash_check_execute_in_ram_function_info(flash_config_t *config)
-{
-    flash_execute_in_ram_function_config_t *flashExecuteInRamFunctionInfo;
-
-    if (config == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    flashExecuteInRamFunctionInfo = (flash_execute_in_ram_function_config_t *)config->flashExecuteInRamFunctionInfo;
-
-    if ((config->flashExecuteInRamFunctionInfo) &&
-        (kFLASH_executeInRamFunctionTotalNum == flashExecuteInRamFunctionInfo->activeFunctionCount))
-    {
-        return kStatus_FLASH_Success;
-    }
-
-    return kStatus_FLASH_ExecuteInRamFunctionNotReady;
-}
-#endif /* FLASH_DRIVER_IS_FLASH_RESIDENT */
-
-/*! @brief Validates the range and alignment of the given address range.*/
-static status_t flash_check_range(flash_config_t *config,
-                                  uint32_t startAddress,
-                                  uint32_t lengthInBytes,
-                                  uint32_t alignmentBaseline)
-{
-    if (config == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    /* Verify the start and length are alignmentBaseline aligned. */
-    if ((startAddress & (alignmentBaseline - 1)) || (lengthInBytes & (alignmentBaseline - 1)))
-    {
-        return kStatus_FLASH_AlignmentError;
-    }
-
-/* check for valid range of the target addresses */
-#if !FLASH_SSD_IS_FLEXNVM_ENABLED
-    if ((startAddress < config->PFlashBlockBase) ||
-        ((startAddress + lengthInBytes) > (config->PFlashBlockBase + config->PFlashTotalSize)))
-#else
-    if (!(((startAddress >= config->PFlashBlockBase) &&
-           ((startAddress + lengthInBytes) <= (config->PFlashBlockBase + config->PFlashTotalSize))) ||
-          ((startAddress >= config->DFlashBlockBase) &&
-           ((startAddress + lengthInBytes) <= (config->DFlashBlockBase + config->DFlashTotalSize)))))
-#endif
-    {
-        return kStatus_FLASH_AddressError;
-    }
-
-    return kStatus_FLASH_Success;
-}
-
-/*! @brief Gets the right address, sector and block size of current flash type which is indicated by address.*/
-static status_t flash_get_matched_operation_info(flash_config_t *config,
-                                                 uint32_t address,
-                                                 flash_operation_config_t *info)
-{
-    if (config == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    /* Clean up info Structure*/
-    memset(info, 0, sizeof(flash_operation_config_t));
-
-#if FLASH_SSD_IS_FLEXNVM_ENABLED
-    if ((address >= config->DFlashBlockBase) && (address <= (config->DFlashBlockBase + config->DFlashTotalSize)))
-    {
-        info->convertedAddress = address - config->DFlashBlockBase + 0x800000U;
-        info->activeSectorSize = FSL_FEATURE_FLASH_FLEX_NVM_BLOCK_SECTOR_SIZE;
-        info->activeBlockSize = config->DFlashTotalSize / FSL_FEATURE_FLASH_FLEX_NVM_BLOCK_COUNT;
-
-        info->blockWriteUnitSize = FSL_FEATURE_FLASH_FLEX_NVM_BLOCK_WRITE_UNIT_SIZE;
-        info->sectorCmdAddressAligment = FSL_FEATURE_FLASH_FLEX_NVM_SECTOR_CMD_ADDRESS_ALIGMENT;
-        info->sectionCmdAddressAligment = FSL_FEATURE_FLASH_FLEX_NVM_SECTION_CMD_ADDRESS_ALIGMENT;
-        info->resourceCmdAddressAligment = FSL_FEATURE_FLASH_FLEX_NVM_RESOURCE_CMD_ADDRESS_ALIGMENT;
-        info->checkCmdAddressAligment = FSL_FEATURE_FLASH_FLEX_NVM_CHECK_CMD_ADDRESS_ALIGMENT;
-    }
-    else
-#endif /* FLASH_SSD_IS_FLEXNVM_ENABLED */
-    {
-        info->convertedAddress = address;
-        info->activeSectorSize = config->PFlashSectorSize;
-        info->activeBlockSize = config->PFlashTotalSize / config->PFlashBlockCount;
-
-        info->blockWriteUnitSize = FSL_FEATURE_FLASH_PFLASH_BLOCK_WRITE_UNIT_SIZE;
-        info->sectorCmdAddressAligment = FSL_FEATURE_FLASH_PFLASH_SECTOR_CMD_ADDRESS_ALIGMENT;
-        info->sectionCmdAddressAligment = FSL_FEATURE_FLASH_PFLASH_SECTION_CMD_ADDRESS_ALIGMENT;
-        info->resourceCmdAddressAligment = FSL_FEATURE_FLASH_PFLASH_RESOURCE_CMD_ADDRESS_ALIGMENT;
-        info->checkCmdAddressAligment = FSL_FEATURE_FLASH_PFLASH_CHECK_CMD_ADDRESS_ALIGMENT;
-    }
-
-    return kStatus_FLASH_Success;
-}
-
-/*! @brief Validates the given user key for flash erase APIs.*/
-static status_t flash_check_user_key(uint32_t key)
-{
-    /* Validate the user key */
-    if (key != kFLASH_apiEraseKey)
-    {
-        return kStatus_FLASH_EraseKeyError;
-    }
-
-    return kStatus_FLASH_Success;
-}
-
-#if FLASH_SSD_IS_FLEXNVM_ENABLED
-/*! @brief Updates FlexNVM memory partition status according to data flash 0 IFR.*/
-static status_t flash_update_flexnvm_memory_partition_status(flash_config_t *config)
-{
-    struct
-    {
-        uint32_t reserved0;
-        uint8_t FlexNVMPartitionCode;
-        uint8_t EEPROMDataSetSize;
-        uint16_t reserved1;
-    } dataIFRReadOut;
-    status_t returnCode;
-
-    if (config == NULL)
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    /* Get FlexNVM memory partition info from data flash IFR */
-    returnCode = FLASH_ReadResource(config, DFLASH_IFR_READRESOURCE_START_ADDRESS, (uint32_t *)&dataIFRReadOut,
-                                    sizeof(dataIFRReadOut), kFLASH_resourceOptionFlashIfr);
-    if (returnCode != kStatus_FLASH_Success)
-    {
-        return kStatus_FLASH_PartitionStatusUpdateFailure;
-    }
-
-    /* Fill out partitioned EEPROM size */
-    dataIFRReadOut.EEPROMDataSetSize &= 0x0FU;
-    switch (dataIFRReadOut.EEPROMDataSetSize)
-    {
-        case 0x00U:
-            config->EEpromTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0000;
-            break;
-        case 0x01U:
-            config->EEpromTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0001;
-            break;
-        case 0x02U:
-            config->EEpromTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0010;
-            break;
-        case 0x03U:
-            config->EEpromTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0011;
-            break;
-        case 0x04U:
-            config->EEpromTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0100;
-            break;
-        case 0x05U:
-            config->EEpromTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0101;
-            break;
-        case 0x06U:
-            config->EEpromTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0110;
-            break;
-        case 0x07U:
-            config->EEpromTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_0111;
-            break;
-        case 0x08U:
-            config->EEpromTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1000;
-            break;
-        case 0x09U:
-            config->EEpromTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1001;
-            break;
-        case 0x0AU:
-            config->EEpromTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1010;
-            break;
-        case 0x0BU:
-            config->EEpromTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1011;
-            break;
-        case 0x0CU:
-            config->EEpromTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1100;
-            break;
-        case 0x0DU:
-            config->EEpromTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1101;
-            break;
-        case 0x0EU:
-            config->EEpromTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1110;
-            break;
-        case 0x0FU:
-            config->EEpromTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_1111;
-            break;
-        default:
-            config->EEpromTotalSize = FLEX_NVM_EEPROM_SIZE_FOR_EEESIZE_RESERVED;
-            break;
-    }
-
-    /* Fill out partitioned DFlash size */
-    dataIFRReadOut.FlexNVMPartitionCode &= 0x0FU;
-    switch (dataIFRReadOut.FlexNVMPartitionCode)
-    {
-        case 0x00U:
-#if (FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0000 != 0xFFFFFFFF)
-            config->DFlashTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0000;
-#else
-            config->DFlashTotalSize = FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED;
-#endif /* FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0000 */
-            break;
-        case 0x01U:
-#if (FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0001 != 0xFFFFFFFF)
-            config->DFlashTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0001;
-#else
-            config->DFlashTotalSize = FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED;
-#endif /* FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0001 */
-            break;
-        case 0x02U:
-#if (FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0010 != 0xFFFFFFFF)
-            config->DFlashTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0010;
-#else
-            config->DFlashTotalSize = FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED;
-#endif /* FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0010 */
-            break;
-        case 0x03U:
-#if (FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0011 != 0xFFFFFFFF)
-            config->DFlashTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0011;
-#else
-            config->DFlashTotalSize = FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED;
-#endif /* FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0011 */
-            break;
-        case 0x04U:
-#if (FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0100 != 0xFFFFFFFF)
-            config->DFlashTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0100;
-#else
-            config->DFlashTotalSize = FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED;
-#endif /* FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0100 */
-            break;
-        case 0x05U:
-#if (FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0101 != 0xFFFFFFFF)
-            config->DFlashTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0101;
-#else
-            config->DFlashTotalSize = FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED;
-#endif /* FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0101 */
-            break;
-        case 0x06U:
-#if (FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0110 != 0xFFFFFFFF)
-            config->DFlashTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0110;
-#else
-            config->DFlashTotalSize = FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED;
-#endif /* FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0110 */
-            break;
-        case 0x07U:
-#if (FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0111 != 0xFFFFFFFF)
-            config->DFlashTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0111;
-#else
-            config->DFlashTotalSize = FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED;
-#endif /* FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_0111 */
-            break;
-        case 0x08U:
-#if (FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1000 != 0xFFFFFFFF)
-            config->DFlashTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1000;
-#else
-            config->DFlashTotalSize = FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED;
-#endif /* FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1000 */
-            break;
-        case 0x09U:
-#if (FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1001 != 0xFFFFFFFF)
-            config->DFlashTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1001;
-#else
-            config->DFlashTotalSize = FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED;
-#endif /* FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1001 */
-            break;
-        case 0x0AU:
-#if (FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1010 != 0xFFFFFFFF)
-            config->DFlashTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1010;
-#else
-            config->DFlashTotalSize = FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED;
-#endif /* FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1010 */
-            break;
-        case 0x0BU:
-#if (FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1011 != 0xFFFFFFFF)
-            config->DFlashTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1011;
-#else
-            config->DFlashTotalSize = FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED;
-#endif /* FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1011 */
-            break;
-        case 0x0CU:
-#if (FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1100 != 0xFFFFFFFF)
-            config->DFlashTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1100;
-#else
-            config->DFlashTotalSize = FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED;
-#endif /* FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1100 */
-            break;
-        case 0x0DU:
-#if (FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1101 != 0xFFFFFFFF)
-            config->DFlashTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1101;
-#else
-            config->DFlashTotalSize = FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED;
-#endif /* FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1101 */
-            break;
-        case 0x0EU:
-#if (FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1110 != 0xFFFFFFFF)
-            config->DFlashTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1110;
-#else
-            config->DFlashTotalSize = FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED;
-#endif /* FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1110 */
-            break;
-        case 0x0FU:
-#if (FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1111 != 0xFFFFFFFF)
-            config->DFlashTotalSize = FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1111;
-#else
-            config->DFlashTotalSize = FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED;
-#endif /* FSL_FEATURE_FLASH_FLEX_NVM_DFLASH_SIZE_FOR_DEPART_1111 */
-            break;
-        default:
-            config->DFlashTotalSize = FLEX_NVM_DFLASH_SIZE_FOR_DEPART_RESERVED;
-            break;
-    }
-
-    return kStatus_FLASH_Success;
-}
-#endif /* FLASH_SSD_IS_FLEXNVM_ENABLED */
-
-#if defined(FSL_FEATURE_FLASH_HAS_READ_RESOURCE_CMD) && FSL_FEATURE_FLASH_HAS_READ_RESOURCE_CMD
-/*! @brief Validates the range of the given resource address.*/
-static status_t flash_check_resource_range(uint32_t start,
-                                           uint32_t lengthInBytes,
-                                           uint32_t alignmentBaseline,
-                                           flash_read_resource_option_t option)
-{
-    status_t status;
-    uint32_t maxReadbleAddress;
-
-    if ((start & (alignmentBaseline - 1)) || (lengthInBytes & (alignmentBaseline - 1)))
-    {
-        return kStatus_FLASH_AlignmentError;
-    }
-
-    status = kStatus_FLASH_Success;
-
-    maxReadbleAddress = start + lengthInBytes - 1;
-    if (option == kFLASH_resourceOptionVersionId)
-    {
-        if ((start != kFLASH_resourceRangeVersionIdStart) ||
-            ((start + lengthInBytes - 1) != kFLASH_resourceRangeVersionIdEnd))
-        {
-            status = kStatus_FLASH_InvalidArgument;
-        }
-    }
-    else if (option == kFLASH_resourceOptionFlashIfr)
-    {
-        if (maxReadbleAddress < kFLASH_resourceRangePflashIfrSizeInBytes)
-        {
-        }
-#if defined(FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP) && FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP
-        else if ((start >= kFLASH_resourceRangePflashSwapIfrStart) &&
-                 (maxReadbleAddress <= kFLASH_resourceRangePflashSwapIfrEnd))
-        {
-        }
-#endif /* FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP */
-        else if ((start >= kFLASH_resourceRangeDflashIfrStart) &&
-                 (maxReadbleAddress <= kFLASH_resourceRangeDflashIfrEnd))
-        {
-        }
-        else
-        {
-            status = kStatus_FLASH_InvalidArgument;
-        }
-    }
-    else
-    {
-        status = kStatus_FLASH_InvalidArgument;
-    }
-
-    return status;
-}
-#endif /* FSL_FEATURE_FLASH_HAS_READ_RESOURCE_CMD */
-
-#if defined(FSL_FEATURE_FLASH_HAS_SWAP_CONTROL_CMD) && FSL_FEATURE_FLASH_HAS_SWAP_CONTROL_CMD
-/*! @brief Validates the gived swap control option.*/
-static status_t flash_check_swap_control_option(flash_swap_control_option_t option)
-{
-    if ((option == kFLASH_swapControlOptionIntializeSystem) || (option == kFLASH_swapControlOptionSetInUpdateState) ||
-        (option == kFLASH_swapControlOptionSetInCompleteState) || (option == kFLASH_swapControlOptionReportStatus) ||
-        (option == kFLASH_swapControlOptionDisableSystem))
-    {
-        return kStatus_FLASH_Success;
-    }
-
-    return kStatus_FLASH_InvalidArgument;
-}
-#endif /* FSL_FEATURE_FLASH_HAS_SWAP_CONTROL_CMD */
-
-#if defined(FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP) && FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP
-/*! @brief Validates the gived address to see if it is equal to swap indicator address in pflash swap IFR.*/
-static status_t flash_validate_swap_indicator_address(flash_config_t *config, uint32_t address)
-{
-    flash_swap_ifr_field_config_t flashSwapIfrField;
-    uint32_t swapIndicatorAddress;
-
-    status_t returnCode;
-    returnCode = FLASH_ReadResource(config, kFLASH_resourceRangePflashSwapIfrStart, (uint32_t *)&flashSwapIfrField,
-                                    sizeof(flash_swap_ifr_field_config_t), kFLASH_resourceOptionFlashIfr);
-    if (returnCode != kStatus_FLASH_Success)
-    {
-        return returnCode;
-    }
-
-    /* The high 2 byte value of Swap Indicator Address is stored in Program Flash Swap IFR Field,
-     * the low 4 bit value of Swap Indicator Address is always 4'b0000 */
-    swapIndicatorAddress =
-        (uint32_t)flashSwapIfrField.swapIndicatorAddress * FSL_FEATURE_FLASH_PFLASH_SWAP_CONTROL_CMD_ADDRESS_ALIGMENT;
-    if (address != swapIndicatorAddress)
-    {
-        return kStatus_FLASH_SwapIndicatorAddressError;
-    }
-
-    return returnCode;
-}
-#endif /* FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP */
-
-#if defined(FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD) && FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD
-/*! @brief Validates the gived flexram function option.*/
-static inline status_t flasn_check_flexram_function_option_range(flash_flexram_function_option_t option)
-{
-    if ((option != kFLASH_flexramFunctionOptionAvailableAsRam) &&
-        (option != kFLASH_flexramFunctionOptionAvailableForEeprom))
-    {
-        return kStatus_FLASH_InvalidArgument;
-    }
-
-    return kStatus_FLASH_Success;
-}
-#endif /* FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_flash.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1177 +0,0 @@
-/*
- * Copyright (c) 2013-2016, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _FSL_FLASH_H_
-#define _FSL_FLASH_H_
-
-#if (defined(BL_TARGET_FLASH) || defined(BL_TARGET_ROM) || defined(BL_TARGET_RAM))
-#include <assert.h>
-#include <string.h>
-#include "fsl_device_registers.h"
-#include "bootloader_common.h"
-#else
-#include "fsl_common.h"
-#endif
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*!
- * @addtogroup flash_driver
- * @{
- */
-
-/*!
- * @name Flash version
- * @{
- */
-/*! @brief Construct the version number for drivers. */
-#if !defined(MAKE_VERSION)
-#define MAKE_VERSION(major, minor, bugfix) (((major) << 16) | ((minor) << 8) | (bugfix))
-#endif
-
-/*! @brief FLASH driver version for SDK*/
-#define FSL_FLASH_DRIVER_VERSION (MAKE_VERSION(2, 1, 0)) /*!< Version 2.1.0. */
-
-/*! @brief FLASH driver version for ROM*/
-enum _flash_driver_version_constants
-{
-    kFLASH_driverVersionName = 'F', /*!< Flash driver version name.*/
-    kFLASH_driverVersionMajor = 2,  /*!< Major flash driver version.*/
-    kFLASH_driverVersionMinor = 1,  /*!< Minor flash driver version.*/
-    kFLASH_driverVersionBugfix = 0  /*!< Bugfix for flash driver version.*/
-};
-/*@}*/
-
-/*!
- * @name Flash configuration
- * @{
- */
-/*! @brief Whether to support FlexNVM in flash driver */
-#if !defined(FLASH_SSD_CONFIG_ENABLE_FLEXNVM_SUPPORT)
-#define FLASH_SSD_CONFIG_ENABLE_FLEXNVM_SUPPORT 1 /*!< Enable FlexNVM support by default. */
-#endif
-
-/*! @brief Whether the FlexNVM is enabled in flash driver */
-#define FLASH_SSD_IS_FLEXNVM_ENABLED (FLASH_SSD_CONFIG_ENABLE_FLEXNVM_SUPPORT && FSL_FEATURE_FLASH_HAS_FLEX_NVM)
-
-/*! @brief Flash driver location. */
-#if !defined(FLASH_DRIVER_IS_FLASH_RESIDENT)
-#if (!defined(BL_TARGET_ROM) && !defined(BL_TARGET_RAM))
-#define FLASH_DRIVER_IS_FLASH_RESIDENT 1 /*!< Used for flash resident application. */
-#else
-#define FLASH_DRIVER_IS_FLASH_RESIDENT 0 /*!< Used for non-flash resident application. */
-#endif
-#endif
-
-/*! @brief Flash Driver Export option */
-#if !defined(FLASH_DRIVER_IS_EXPORTED)
-#if (defined(BL_TARGET_ROM) || defined(BL_TARGET_FLASH))
-#define FLASH_DRIVER_IS_EXPORTED 1 /*!< Used for ROM bootloader. */
-#else
-#define FLASH_DRIVER_IS_EXPORTED 0 /*!< Used for SDK application. */
-#endif
-#endif
-/*@}*/
-
-/*!
- * @name Flash status
- * @{
- */
-/*! @brief Flash driver status group. */
-#if defined(kStatusGroup_FlashDriver)
-#define kStatusGroupGeneric kStatusGroup_Generic
-#define kStatusGroupFlashDriver kStatusGroup_FlashDriver
-#elif defined(kStatusGroup_FLASH)
-#define kStatusGroupGeneric kStatusGroup_Generic
-#define kStatusGroupFlashDriver kStatusGroup_FLASH
-#else
-#define kStatusGroupGeneric 0
-#define kStatusGroupFlashDriver 1
-#endif
-
-/*! @brief Construct a status code value from a group and code number. */
-#if !defined(MAKE_STATUS)
-#define MAKE_STATUS(group, code) ((((group)*100) + (code)))
-#endif
-
-/*!
- * @brief Flash driver status codes.
- */
-enum _flash_status
-{
-    kStatus_FLASH_Success = MAKE_STATUS(kStatusGroupGeneric, 0),         /*!< Api is executed successfully*/
-    kStatus_FLASH_InvalidArgument = MAKE_STATUS(kStatusGroupGeneric, 4), /*!< Invalid argument*/
-    kStatus_FLASH_SizeError = MAKE_STATUS(kStatusGroupFlashDriver, 0),   /*!< Error size*/
-    kStatus_FLASH_AlignmentError =
-        MAKE_STATUS(kStatusGroupFlashDriver, 1), /*!< Parameter is not aligned with specified baseline*/
-    kStatus_FLASH_AddressError = MAKE_STATUS(kStatusGroupFlashDriver, 2), /*!< Address is out of range */
-    kStatus_FLASH_AccessError =
-        MAKE_STATUS(kStatusGroupFlashDriver, 3), /*!< Invalid instruction codes and out-of bounds addresses */
-    kStatus_FLASH_ProtectionViolation = MAKE_STATUS(
-        kStatusGroupFlashDriver, 4), /*!< The program/erase operation is requested to execute on protected areas */
-    kStatus_FLASH_CommandFailure =
-        MAKE_STATUS(kStatusGroupFlashDriver, 5), /*!< Run-time error during command execution. */
-    kStatus_FLASH_UnknownProperty = MAKE_STATUS(kStatusGroupFlashDriver, 6),   /*!< Unknown property.*/
-    kStatus_FLASH_EraseKeyError = MAKE_STATUS(kStatusGroupFlashDriver, 7),     /*!< Api erase key is invalid.*/
-    kStatus_FLASH_RegionExecuteOnly = MAKE_STATUS(kStatusGroupFlashDriver, 8), /*!< Current region is execute only.*/
-    kStatus_FLASH_ExecuteInRamFunctionNotReady =
-        MAKE_STATUS(kStatusGroupFlashDriver, 9), /*!< Execute-in-ram function is not available.*/
-    kStatus_FLASH_PartitionStatusUpdateFailure =
-        MAKE_STATUS(kStatusGroupFlashDriver, 10), /*!< Failed to update partition status.*/
-    kStatus_FLASH_SetFlexramAsEepromError =
-        MAKE_STATUS(kStatusGroupFlashDriver, 11), /*!< Failed to set flexram as eeprom.*/
-    kStatus_FLASH_RecoverFlexramAsRamError =
-        MAKE_STATUS(kStatusGroupFlashDriver, 12), /*!< Failed to recover flexram as ram.*/
-    kStatus_FLASH_SetFlexramAsRamError = MAKE_STATUS(kStatusGroupFlashDriver, 13), /*!< Failed to set flexram as ram.*/
-    kStatus_FLASH_RecoverFlexramAsEepromError =
-        MAKE_STATUS(kStatusGroupFlashDriver, 14), /*!< Failed to recover flexram as eeprom.*/
-    kStatus_FLASH_CommandNotSupported = MAKE_STATUS(kStatusGroupFlashDriver, 15), /*!< Flash api is not supported.*/
-    kStatus_FLASH_SwapSystemNotInUninitialized =
-        MAKE_STATUS(kStatusGroupFlashDriver, 16), /*!< Swap system is not in uninitialzed state.*/
-    kStatus_FLASH_SwapIndicatorAddressError =
-        MAKE_STATUS(kStatusGroupFlashDriver, 17), /*!< Swap indicator address is invalid.*/
-};
-/*@}*/
-
-/*!
- * @name Flash API key
- * @{
- */
-/*! @brief Construct the four char code for flash driver API key. */
-#if !defined(FOUR_CHAR_CODE)
-#define FOUR_CHAR_CODE(a, b, c, d) (((d) << 24) | ((c) << 16) | ((b) << 8) | ((a)))
-#endif
-
-/*!
- * @brief Enumeration for flash driver API keys.
- *
- * @note The resulting value is built with a byte order such that the string
- * being readable in expected order when viewed in a hex editor, if the value
- * is treated as a 32-bit little endian value.
- */
-enum _flash_driver_api_keys
-{
-    kFLASH_apiEraseKey = FOUR_CHAR_CODE('k', 'f', 'e', 'k') /*!< Key value used to validate all flash erase APIs.*/
-};
-/*@}*/
-
-/*!
- * @brief Enumeration for supported flash margin levels.
- */
-typedef enum _flash_margin_value
-{
-    kFLASH_marginValueNormal,  /*!< Use the 'normal' read level for 1s.*/
-    kFLASH_marginValueUser,    /*!< Apply the 'User' margin to the normal read-1 level.*/
-    kFLASH_marginValueFactory, /*!< Apply the 'Factory' margin to the normal read-1 level.*/
-    kFLASH_marginValueInvalid  /*!< Not real margin level, Used to determine the range of valid margin level. */
-} flash_margin_value_t;
-
-/*!
- * @brief Enumeration for the three possible flash security states.
- */
-typedef enum _flash_security_state
-{
-    kFLASH_securityStateNotSecure,       /*!< Flash is not secure.*/
-    kFLASH_securityStateBackdoorEnabled, /*!< Flash backdoor is enabled.*/
-    kFLASH_securityStateBackdoorDisabled /*!< Flash backdoor is disabled.*/
-} flash_security_state_t;
-
-/*!
- * @brief Enumeration for the three possible flash protection levels.
- */
-typedef enum _flash_protection_state
-{
-    kFLASH_protectionStateUnprotected, /*!< Flash region is not protected.*/
-    kFLASH_protectionStateProtected,   /*!< Flash region is protected.*/
-    kFLASH_protectionStateMixed        /*!< Flash is mixed with protected and unprotected region.*/
-} flash_protection_state_t;
-
-/*!
- * @brief Enumeration for the three possible flash execute access levels.
- */
-typedef enum _flash_execute_only_access_state
-{
-    kFLASH_accessStateUnLimited,   /*!< Flash region is unLimited.*/
-    kFLASH_accessStateExecuteOnly, /*!< Flash region is execute only.*/
-    kFLASH_accessStateMixed        /*!< Flash is mixed with unLimited and execute only region.*/
-} flash_execute_only_access_state_t;
-
-/*!
- * @brief Enumeration for various flash properties.
- */
-typedef enum _flash_property_tag
-{
-    kFLASH_propertyPflashSectorSize = 0x00U,         /*!< Pflash sector size property.*/
-    kFLASH_propertyPflashTotalSize = 0x01U,          /*!< Pflash total size property.*/
-    kFLASH_propertyPflashBlockSize = 0x02U,          /*!< Pflash block size property.*/
-    kFLASH_propertyPflashBlockCount = 0x03U,         /*!< Pflash block count property.*/
-    kFLASH_propertyPflashBlockBaseAddr = 0x04U,      /*!< Pflash block base address property.*/
-    kFLASH_propertyPflashFacSupport = 0x05U,         /*!< Pflash fac support property.*/
-    kFLASH_propertyPflashAccessSegmentSize = 0x06U,  /*!< Pflash access segment size property.*/
-    kFLASH_propertyPflashAccessSegmentCount = 0x07U, /*!< Pflash access segment count property.*/
-    kFLASH_propertyFlexRamBlockBaseAddr = 0x08U,     /*!< FlexRam block base address property.*/
-    kFLASH_propertyFlexRamTotalSize = 0x09U,         /*!< FlexRam total size property.*/
-    kFLASH_propertyDflashSectorSize = 0x10U,         /*!< Dflash sector size property.*/
-    kFLASH_propertyDflashTotalSize = 0x11U,          /*!< Dflash total size property.*/
-    kFLASH_propertyDflashBlockSize = 0x12U,          /*!< Dflash block count property.*/
-    kFLASH_propertyDflashBlockCount = 0x13U,         /*!< Dflash block base address property.*/
-    kFLASH_propertyDflashBlockBaseAddr = 0x14U,      /*!< Eeprom total size property.*/
-    kFLASH_propertyEepromTotalSize = 0x15U
-} flash_property_tag_t;
-
-/*!
- * @brief Constants for execute-in-ram flash function.
- */
-enum _flash_execute_in_ram_function_constants
-{
-    kFLASH_executeInRamFunctionMaxSize = 64U, /*!< Max size of execute-in-ram function.*/
-    kFLASH_executeInRamFunctionTotalNum = 2U  /*!< Total number of execute-in-ram functions.*/
-};
-
-/*!
- * @brief Flash execute-in-ram function information.
- */
-typedef struct _flash_execute_in_ram_function_config
-{
-    uint32_t activeFunctionCount;    /*!< Number of available execute-in-ram functions.*/
-    uint8_t *flashRunCommand;        /*!< execute-in-ram function: flash_run_command.*/
-    uint8_t *flashCacheClearCommand; /*!< execute-in-ram function: flash_cache_clear_command.*/
-} flash_execute_in_ram_function_config_t;
-
-/*!
- * @brief Enumeration for the two possible options of flash read resource command.
- */
-typedef enum _flash_read_resource_option
-{
-    kFLASH_resourceOptionFlashIfr =
-        0x00U, /*!< Select code for Program flash 0 IFR, Program flash swap 0 IFR, Data flash 0 IFR */
-    kFLASH_resourceOptionVersionId = 0x01U /*!< Select code for Version ID*/
-} flash_read_resource_option_t;
-
-/*!
- * @brief Enumeration for the range of special-purpose flash resource
- */
-enum _flash_read_resource_range
-{
-#if (FSL_FEATURE_FLASH_IS_FTFE == 1)
-    kFLASH_resourceRangePflashIfrSizeInBytes = 1024U, /*!< Pflash IFR size in byte.*/
-    kFLASH_resourceRangeVersionIdSizeInBytes = 8U,    /*!< Version ID IFR size in byte.*/
-    kFLASH_resourceRangeVersionIdStart = 0x08U,       /*!< Version ID IFR start address.*/
-    kFLASH_resourceRangeVersionIdEnd = 0x0FU,         /*!< Version ID IFR end address.*/
-#else                                                 /* FSL_FEATURE_FLASH_IS_FTFL == 1 or FSL_FEATURE_FLASH_IS_FTFA = =1 */
-    kFLASH_resourceRangePflashIfrSizeInBytes = 256U, /*!< Pflash IFR size in byte.*/
-    kFLASH_resourceRangeVersionIdSizeInBytes = 8U,   /*!< Version ID IFR size in byte.*/
-    kFLASH_resourceRangeVersionIdStart = 0x00U,      /*!< Version ID IFR start address.*/
-    kFLASH_resourceRangeVersionIdEnd = 0x07U,        /*!< Version ID IFR end address.*/
-#endif
-    kFLASH_resourceRangePflashSwapIfrStart = 0x40000U, /*!< Pflash swap IFR start address.*/
-    kFLASH_resourceRangePflashSwapIfrEnd = 0x403FFU,   /*!< Pflash swap IFR end address.*/
-    kFLASH_resourceRangeDflashIfrStart = 0x800000U,    /*!< Dflash IFR start address.*/
-    kFLASH_resourceRangeDflashIfrEnd = 0x8003FFU,      /*!< Dflash IFR end address.*/
-};
-
-/*!
- * @brief Enumeration for the two possilbe options of set flexram function command.
- */
-typedef enum _flash_flexram_function_option
-{
-    kFLASH_flexramFunctionOptionAvailableAsRam = 0xFFU,    /*!< Option used to make FlexRAM available as RAM */
-    kFLASH_flexramFunctionOptionAvailableForEeprom = 0x00U /*!< Option used to make FlexRAM available for EEPROM */
-} flash_flexram_function_option_t;
-
-/*!
- * @brief Enumeration for the possible options of Swap function
- */
-typedef enum _flash_swap_function_option
-{
-    kFLASH_swapFunctionOptionEnable = 0x00U, /*!< Option used to enable Swap function */
-    kFLASH_swapFunctionOptionDisable = 0x01U /*!< Option used to Disable Swap function */
-} flash_swap_function_option_t;
-
-/*!
- * @brief Enumeration for the possible options of Swap Control commands
- */
-typedef enum _flash_swap_control_option
-{
-    kFLASH_swapControlOptionIntializeSystem = 0x01U,    /*!< Option used to Intialize Swap System */
-    kFLASH_swapControlOptionSetInUpdateState = 0x02U,   /*!< Option used to Set Swap in Update State */
-    kFLASH_swapControlOptionSetInCompleteState = 0x04U, /*!< Option used to Set Swap in Complete State */
-    kFLASH_swapControlOptionReportStatus = 0x08U,       /*!< Option used to Report Swap Status */
-    kFLASH_swapControlOptionDisableSystem = 0x10U       /*!< Option used to Disable Swap Status */
-} flash_swap_control_option_t;
-
-/*!
- * @brief Enumeration for the possible flash swap status.
- */
-typedef enum _flash_swap_state
-{
-    kFLASH_swapStateUninitialized = 0x00U, /*!< Flash swap system is in uninitialized state.*/
-    kFLASH_swapStateReady = 0x01U,         /*!< Flash swap system is in ready state.*/
-    kFLASH_swapStateUpdate = 0x02U,        /*!< Flash swap system is in update state.*/
-    kFLASH_swapStateUpdateErased = 0x03U,  /*!< Flash swap system is in updateErased state.*/
-    kFLASH_swapStateComplete = 0x04U,      /*!< Flash swap system is in complete state.*/
-    kFLASH_swapStateDisabled = 0x05U       /*!< Flash swap system is in disabled state.*/
-} flash_swap_state_t;
-
-/*!
- * @breif Enumeration for the possible flash swap block status
- */
-typedef enum _flash_swap_block_status
-{
-    kFLASH_swapBlockStatusLowerHalfProgramBlocksAtZero =
-        0x00U, /*!< Swap block status is that lower half program block at zero.*/
-    kFLASH_swapBlockStatusUpperHalfProgramBlocksAtZero =
-        0x01U, /*!< Swap block status is that upper half program block at zero.*/
-} flash_swap_block_status_t;
-
-/*!
- * @brief Flash Swap information.
- */
-typedef struct _flash_swap_state_config
-{
-    flash_swap_state_t flashSwapState;                /*!< Current swap system status.*/
-    flash_swap_block_status_t currentSwapBlockStatus; /*!< Current swap block status.*/
-    flash_swap_block_status_t nextSwapBlockStatus;    /*!< Next swap block status.*/
-} flash_swap_state_config_t;
-
-/*!
- * @brief Flash Swap IFR fileds.
- */
-typedef struct _flash_swap_ifr_field_config
-{
-    uint16_t swapIndicatorAddress; /*!< Swap indicator address field.*/
-    uint16_t swapEnableWord;       /*!< Swap enable word field.*/
-    uint8_t reserved0[6];          /*!< Reserved field.*/
-    uint16_t swapDisableWord;      /*!< Swap disable word field.*/
-    uint8_t reserved1[4];          /*!< Reserved field.*/
-} flash_swap_ifr_field_config_t;
-
-/*!
- * @brief Enumeration for FlexRAM load during reset option.
- */
-typedef enum _flash_partition_flexram_load_option
-{
-    kFLASH_partitionFlexramLoadOptionLoadedWithValidEepromData =
-        0x00U, /*!< FlexRAM is loaded with valid EEPROM data during reset sequence.*/
-    kFLASH_partitionFlexramLoadOptionNotLoaded = 0x01U /*!< FlexRAM is not loaded during reset sequence.*/
-} flash_partition_flexram_load_option_t;
-
-/*! @brief callback type used for pflash block*/
-typedef void (*flash_callback_t)(void);
-
-/*!
- * @brief Active flash information for current operation.
- */
-typedef struct _flash_operation_config
-{
-    uint32_t convertedAddress;           /*!< Converted address for current flash type.*/
-    uint32_t activeSectorSize;           /*!< Sector size of current flash type.*/
-    uint32_t activeBlockSize;            /*!< Block size of current flash type.*/
-    uint32_t blockWriteUnitSize;         /*!< write unit size.*/
-    uint32_t sectorCmdAddressAligment;   /*!< Erase sector command address alignment.*/
-    uint32_t sectionCmdAddressAligment;  /*!< Program/Verify section command address alignment.*/
-    uint32_t resourceCmdAddressAligment; /*!< Read resource command address alignment.*/
-    uint32_t checkCmdAddressAligment;    /*!< Program check command address alignment.*/
-} flash_operation_config_t;
-
-/*! @brief Flash driver state information.
- *
- * An instance of this structure is allocated by the user of the flash driver and
- * passed into each of the driver APIs.
- */
-typedef struct _flash_config
-{
-    uint32_t PFlashBlockBase;                /*!< Base address of the first PFlash block */
-    uint32_t PFlashTotalSize;                /*!< Size of all combined PFlash block. */
-    uint32_t PFlashBlockCount;               /*!< Number of PFlash blocks. */
-    uint32_t PFlashSectorSize;               /*!< Size in bytes of a sector of PFlash. */
-    flash_callback_t PFlashCallback;         /*!< Callback function for flash API. */
-    uint32_t PFlashAccessSegmentSize;        /*!< Size in bytes of a access segment of PFlash. */
-    uint32_t PFlashAccessSegmentCount;       /*!< Number of PFlash access segments. */
-    uint32_t *flashExecuteInRamFunctionInfo; /*!< Info struct of flash execute-in-ram function. */
-    uint32_t FlexRAMBlockBase;               /*!< For FlexNVM device, this is the base address of FlexRAM
-                                                  For non-FlexNVM device, this is the base address of acceleration RAM memory */
-    uint32_t FlexRAMTotalSize;               /*!< For FlexNVM device, this is the size of FlexRAM
-                                                  For non-FlexNVM device, this is the size of acceleration RAM memory */
-    uint32_t DFlashBlockBase; /*!< For FlexNVM device, this is the base address of D-Flash memory (FlexNVM memory);
-                                   For non-FlexNVM device, this field is unused */
-    uint32_t DFlashTotalSize; /*!< For FlexNVM device, this is total size of the FlexNVM memory;
-                                   For non-FlexNVM device, this field is unused */
-    uint32_t EEpromTotalSize; /*!< For FlexNVM device, this is the size in byte of EEPROM area which was partitioned
-                                 from FlexRAM;
-                                   For non-FlexNVM device, this field is unused */
-} flash_config_t;
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
- * @name Initialization
- * @{
- */
-
-/*!
- * @brief Initializes global flash properties structure members
- *
- * This function checks and initializes Flash module for the other Flash APIs.
- *
- * @param config Pointer to storage for the driver runtime state.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_PartitionStatusUpdateFailure Failed to update partition status.
- */
-status_t FLASH_Init(flash_config_t *config);
-
-/*!
- * @brief Set the desired flash callback function
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param callback callback function to be stored in driver
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- */
-status_t FLASH_SetCallback(flash_config_t *config, flash_callback_t callback);
-
-/*!
- * @brief Prepare flash execute-in-ram functions
- *
- * @param config Pointer to storage for the driver runtime state.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- */
-#if FLASH_DRIVER_IS_FLASH_RESIDENT
-status_t FLASH_PrepareExecuteInRamFunctions(flash_config_t *config);
-#endif
-
-/*@}*/
-
-/*!
- * @name Erasing
- * @{
- */
-
-/*!
- * @brief Erases entire flash
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param key value used to validate all flash erase APIs.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_EraseKeyError Api erase key is invalid.
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_AccessError Invalid instruction codes and out-of bounds addresses.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- * @retval #kStatus_FLASH_PartitionStatusUpdateFailure Failed to update partition status
- */
-status_t FLASH_EraseAll(flash_config_t *config, uint32_t key);
-
-/*!
- * @brief Erases flash sectors encompassed by parameters passed into function
- *
- * This function erases the appropriate number of flash sectors based on the
- * desired start address and length.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param start The start address of the desired flash memory to be erased.
- *              The start address does not need to be sector aligned but must be word-aligned.
- * @param lengthInBytes The length, given in bytes (not words or long-words)
- *                      to be erased. Must be word aligned.
- * @param key value used to validate all flash erase APIs.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_AlignmentError Parameter is not aligned with specified baseline.
- * @retval #kStatus_FLASH_AddressError Address is out of range.
- * @retval #kStatus_FLASH_EraseKeyError Api erase key is invalid.
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_AccessError Invalid instruction codes and out-of bounds addresses.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- */
-status_t FLASH_Erase(flash_config_t *config, uint32_t start, uint32_t lengthInBytes, uint32_t key);
-
-/*!
- * @brief Erases entire flash, including protected sectors.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param key value used to validate all flash erase APIs.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_EraseKeyError Api erase key is invalid.
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_AccessError Invalid instruction codes and out-of bounds addresses.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- * @retval #kStatus_FLASH_PartitionStatusUpdateFailure Failed to update partition status
- */
-#if defined(FSL_FEATURE_FLASH_HAS_ERASE_ALL_BLOCKS_UNSECURE_CMD) && FSL_FEATURE_FLASH_HAS_ERASE_ALL_BLOCKS_UNSECURE_CMD
-status_t FLASH_EraseAllUnsecure(flash_config_t *config, uint32_t key);
-#endif
-
-/*!
- * @brief Erases all program flash execute-only segments defined by the FXACC registers.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param key value used to validate all flash erase APIs.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_EraseKeyError Api erase key is invalid.
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_AccessError Invalid instruction codes and out-of bounds addresses.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- */
-status_t FLASH_EraseAllExecuteOnlySegments(flash_config_t *config, uint32_t key);
-
-/*@}*/
-
-/*!
- * @name Programming
- * @{
- */
-
-/*!
- * @brief Programs flash with data at locations passed in through parameters
- *
- * This function programs the flash memory with desired data for a given
- * flash area as determined by the start address and length.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param start The start address of the desired flash memory to be programmed. Must be
- *              word-aligned.
- * @param src Pointer to the source buffer of data that is to be programmed
- *            into the flash.
- * @param lengthInBytes The length, given in bytes (not words or long-words)
- *                      to be programmed. Must be word-aligned.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_AlignmentError Parameter is not aligned with specified baseline.
- * @retval #kStatus_FLASH_AddressError Address is out of range.
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_AccessError Invalid instruction codes and out-of bounds addresses.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- */
-status_t FLASH_Program(flash_config_t *config, uint32_t start, uint32_t *src, uint32_t lengthInBytes);
-
-/*!
- * @brief Programs Program Once Field through parameters
- *
- * This function programs the Program Once Field with desired data for a given
- * flash area as determined by the index and length.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param index The index indicating which area of Program Once Field to be programmed.
- * @param src Pointer to the source buffer of data that is to be programmed
- *            into the Program Once Field.
- * @param lengthInBytes The length, given in bytes (not words or long-words)
- *                      to be programmed. Must be word-aligned.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_AccessError Invalid instruction codes and out-of bounds addresses.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- */
-status_t FLASH_ProgramOnce(flash_config_t *config, uint32_t index, uint32_t *src, uint32_t lengthInBytes);
-
-/*!
- * @brief Programs flash with data at locations passed in through parameters via Program Section command
- *
- * This function programs the flash memory with desired data for a given
- * flash area as determined by the start address and length.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param start The start address of the desired flash memory to be programmed. Must be
- *              word-aligned.
- * @param src Pointer to the source buffer of data that is to be programmed
- *            into the flash.
- * @param lengthInBytes The length, given in bytes (not words or long-words)
- *                      to be programmed. Must be word-aligned.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_AlignmentError Parameter is not aligned with specified baseline.
- * @retval #kStatus_FLASH_AddressError Address is out of range.
- * @retval #kStatus_FLASH_SetFlexramAsRamError Failed to set flexram as ram
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_AccessError Invalid instruction codes and out-of bounds addresses.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- * @retval #kStatus_FLASH_RecoverFlexramAsEepromError Failed to recover flexram as eeprom
- */
-#if defined(FSL_FEATURE_FLASH_HAS_PROGRAM_SECTION_CMD) && FSL_FEATURE_FLASH_HAS_PROGRAM_SECTION_CMD
-status_t FLASH_ProgramSection(flash_config_t *config, uint32_t start, uint32_t *src, uint32_t lengthInBytes);
-#endif
-
-/*!
- * @brief Programs EEPROM with data at locations passed in through parameters
- *
- * This function programs the Emulated EEPROM with desired data for a given
- * flash area as determined by the start address and length.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param start The start address of the desired flash memory to be programmed. Must be
- *              word-aligned.
- * @param src Pointer to the source buffer of data that is to be programmed
- *            into the flash.
- * @param lengthInBytes The length, given in bytes (not words or long-words)
- *                      to be programmed. Must be word-aligned.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_AddressError Address is out of range.
- * @retval #kStatus_FLASH_SetFlexramAsEepromError Failed to set flexram as eeprom.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_RecoverFlexramAsRamError Failed to recover flexram as ram
- */
-#if FLASH_SSD_IS_FLEXNVM_ENABLED
-status_t FLASH_EepromWrite(flash_config_t *config, uint32_t start, uint8_t *src, uint32_t lengthInBytes);
-#endif
-
-/*@}*/
-
-/*!
- * @name Reading
- * @{
- */
-
-/*!
- * @brief Read resource with data at locations passed in through parameters
- *
- * This function reads the flash memory with desired location for a given
- * flash area as determined by the start address and length.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param start The start address of the desired flash memory to be programmed. Must be
- *              word-aligned.
- * @param dst Pointer to the destination buffer of data that is used to store
- *        data to be read.
- * @param lengthInBytes The length, given in bytes (not words or long-words)
- *        to be read. Must be word-aligned.
- * @param option The resource option which indicates which area should be read back.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_AlignmentError Parameter is not aligned with specified baseline.
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_AccessError Invalid instruction codes and out-of bounds addresses.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- */
-#if defined(FSL_FEATURE_FLASH_HAS_READ_RESOURCE_CMD) && FSL_FEATURE_FLASH_HAS_READ_RESOURCE_CMD
-status_t FLASH_ReadResource(
-    flash_config_t *config, uint32_t start, uint32_t *dst, uint32_t lengthInBytes, flash_read_resource_option_t option);
-#endif
-
-/*!
- * @brief Read Program Once Field through parameters
- *
- * This function reads the read once feild with given index and length
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param index The index indicating the area of program once field to be read.
- * @param dst Pointer to the destination buffer of data that is used to store
- *        data to be read.
- * @param lengthInBytes The length, given in bytes (not words or long-words)
- *        to be programmed. Must be word-aligned.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_AccessError Invalid instruction codes and out-of bounds addresses.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- */
-status_t FLASH_ReadOnce(flash_config_t *config, uint32_t index, uint32_t *dst, uint32_t lengthInBytes);
-
-/*@}*/
-
-/*!
- * @name Security
- * @{
- */
-
-/*!
- * @brief Returns the security state via the pointer passed into the function
- *
- * This function retrieves the current Flash security status, including the
- * security enabling state and the backdoor key enabling state.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param state Pointer to the value returned for the current security status code:
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- */
-status_t FLASH_GetSecurityState(flash_config_t *config, flash_security_state_t *state);
-
-/*!
- * @brief Allows user to bypass security with a backdoor key
- *
- * If the MCU is in secured state, this function will unsecure the MCU by
- * comparing the provided backdoor key with ones in the Flash Configuration
- * Field.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param backdoorKey Pointer to the user buffer containing the backdoor key.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_AccessError Invalid instruction codes and out-of bounds addresses.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- */
-status_t FLASH_SecurityBypass(flash_config_t *config, const uint8_t *backdoorKey);
-
-/*@}*/
-
-/*!
- * @name Verification
- * @{
- */
-
-/*!
- * @brief Verifies erasure of entire flash at specified margin level
- *
- * This function will check to see if the flash have been erased to the
- * specified read margin level.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param margin Read margin choice
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_AccessError Invalid instruction codes and out-of bounds addresses.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- */
-status_t FLASH_VerifyEraseAll(flash_config_t *config, flash_margin_value_t margin);
-
-/*!
- * @brief Verifies erasure of desired flash area at specified margin level
- *
- * This function will check the appropriate number of flash sectors based on
- * the desired start address and length to see if the flash have been erased
- * to the specified read margin level.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param start The start address of the desired flash memory to be verified.
- *        The start address does not need to be sector aligned but must be word-aligned.
- * @param lengthInBytes The length, given in bytes (not words or long-words)
- *        to be verified. Must be word-aligned.
- * @param margin Read margin choice
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_AlignmentError Parameter is not aligned with specified baseline.
- * @retval #kStatus_FLASH_AddressError Address is out of range.
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_AccessError Invalid instruction codes and out-of bounds addresses.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- */
-status_t FLASH_VerifyErase(flash_config_t *config, uint32_t start, uint32_t lengthInBytes, flash_margin_value_t margin);
-
-/*!
- * @brief Verifies programming of desired flash area at specified margin level
- *
- * This function verifies the data programed in the flash memory using the
- * Flash Program Check Command and compares it with expected data for a given
- * flash area as determined by the start address and length.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param start The start address of the desired flash memory to be verified. Must be word-aligned.
- * @param lengthInBytes The length, given in bytes (not words or long-words)
- *        to be verified. Must be word-aligned.
- * @param expectedData Pointer to the expected data that is to be
- *        verified against.
- * @param margin Read margin choice
- * @param failedAddress Pointer to returned failing address.
- * @param failedData Pointer to returned failing data.  Some derivitives do
- *        not included failed data as part of the FCCOBx registers.  In this
- *        case, zeros are returned upon failure.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_AlignmentError Parameter is not aligned with specified baseline.
- * @retval #kStatus_FLASH_AddressError Address is out of range.
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_AccessError Invalid instruction codes and out-of bounds addresses.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- */
-status_t FLASH_VerifyProgram(flash_config_t *config,
-                             uint32_t start,
-                             uint32_t lengthInBytes,
-                             const uint32_t *expectedData,
-                             flash_margin_value_t margin,
-                             uint32_t *failedAddress,
-                             uint32_t *failedData);
-
-/*!
- * @brief Verifies if the program flash executeonly segments have been erased to
- *  the specified read margin level
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param margin Read margin choice
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_AccessError Invalid instruction codes and out-of bounds addresses.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- */
-status_t FLASH_VerifyEraseAllExecuteOnlySegments(flash_config_t *config, flash_margin_value_t margin);
-
-/*@}*/
-
-/*!
- * @name Protection
- * @{
- */
-
-/*!
- * @brief Returns the protection state of desired flash area via the pointer passed into the function
- *
- * This function retrieves the current Flash protect status for a given
- * flash area as determined by the start address and length.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param start The start address of the desired flash memory to be checked. Must be word-aligned.
- * @param lengthInBytes The length, given in bytes (not words or long-words)
- *        to be checked.  Must be word-aligned.
- * @param protection_state Pointer to the value returned for the current
- *        protection status code for the desired flash area.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_AlignmentError Parameter is not aligned with specified baseline.
- * @retval #kStatus_FLASH_AddressError Address is out of range.
- */
-status_t FLASH_IsProtected(flash_config_t *config,
-                           uint32_t start,
-                           uint32_t lengthInBytes,
-                           flash_protection_state_t *protection_state);
-
-/*!
- * @brief Returns the access state of desired flash area via the pointer passed into the function
- *
- * This function retrieves the current Flash access status for a given
- * flash area as determined by the start address and length.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param start The start address of the desired flash memory to be checked. Must be word-aligned.
- * @param lengthInBytes The length, given in bytes (not words or long-words)
- *        to be checked.  Must be word-aligned.
- * @param access_state Pointer to the value returned for the current
- *        access status code for the desired flash area.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_AlignmentError Parameter is not aligned with specified baseline.
- * @retval #kStatus_FLASH_AddressError Address is out of range.
- */
-status_t FLASH_IsExecuteOnly(flash_config_t *config,
-                             uint32_t start,
-                             uint32_t lengthInBytes,
-                             flash_execute_only_access_state_t *access_state);
-
-/*@}*/
-
-/*!
- * @name Properties
- * @{
- */
-
-/*!
- * @brief Returns the desired flash property.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param whichProperty The desired property from the list of properties in
- *        enum flash_property_tag_t
- * @param value Pointer to the value returned for the desired flash property
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_UnknownProperty unknown property tag
- */
-status_t FLASH_GetProperty(flash_config_t *config, flash_property_tag_t whichProperty, uint32_t *value);
-
-/*@}*/
-
-/*!
- * @name FlexRAM
- * @{
- */
-
-/*!
- * @brief Set FlexRAM Function command
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param option The option used to set work mode of FlexRAM
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_AccessError Invalid instruction codes and out-of bounds addresses.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- */
-#if defined(FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD) && FSL_FEATURE_FLASH_HAS_SET_FLEXRAM_FUNCTION_CMD
-status_t FLASH_SetFlexramFunction(flash_config_t *config, flash_flexram_function_option_t option);
-#endif
-
-/*@}*/
-
-/*!
- * @name Swap
- * @{
- */
-
-/*!
- * @brief Configure Swap function or Check the swap state of Flash Module
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param address Address used to configure the flash swap function
- * @param option The possible option used to configure Flash Swap function or check the flash swap status
- * @param returnInfo Pointer to the data which is used to return the information of flash swap.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_AlignmentError Parameter is not aligned with specified baseline.
- * @retval #kStatus_FLASH_SwapIndicatorAddressError Swap indicator address is invalid
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_AccessError Invalid instruction codes and out-of bounds addresses.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- */
-#if defined(FSL_FEATURE_FLASH_HAS_SWAP_CONTROL_CMD) && FSL_FEATURE_FLASH_HAS_SWAP_CONTROL_CMD
-status_t FLASH_SwapControl(flash_config_t *config,
-                           uint32_t address,
-                           flash_swap_control_option_t option,
-                           flash_swap_state_config_t *returnInfo);
-#endif
-
-/*!
- * @brief Swap the lower half flash with the higher half flaock
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param address Address used to configure the flash swap function
- * @param option The possible option used to configure Flash Swap function or check the flash swap status
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_AlignmentError Parameter is not aligned with specified baseline.
- * @retval #kStatus_FLASH_SwapIndicatorAddressError Swap indicator address is invalid
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_AccessError Invalid instruction codes and out-of bounds addresses.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- * @retval #kStatus_FLASH_SwapSystemNotInUninitialized Swap system is not in uninitialzed state
- */
-#if defined(FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP) && FSL_FEATURE_FLASH_HAS_PFLASH_BLOCK_SWAP
-status_t FLASH_Swap(flash_config_t *config, uint32_t address, flash_swap_function_option_t option);
-#endif
-
-/*!
- * @name FlexNVM
- * @{
- */
-
-/*!
- * @brief Prepares the FlexNVM block for use as data flash, EEPROM backup, or a combination of both and initializes the
- * FlexRAM.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param option The option used to set FlexRAM load behavior during reset.
- * @param eepromDataSizeCode Determines the amount of FlexRAM used in each of the available EEPROM subsystems.
- * @param flexnvmPartitionCode Specifies how to split the FlexNVM block between data flash memory and EEPROM backup
- *        memory supporting EEPROM functions.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_ExecuteInRamFunctionNotReady Execute-in-ram function is not available.
- * @retval #kStatus_FLASH_AccessError Invalid instruction codes and out-of bounds addresses.
- * @retval #kStatus_FLASH_ProtectionViolation The program/erase operation is requested to execute on protected areas.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- */
-#if defined(FSL_FEATURE_FLASH_HAS_PROGRAM_PARTITION_CMD) && FSL_FEATURE_FLASH_HAS_PROGRAM_PARTITION_CMD
-status_t FLASH_ProgramPartition(flash_config_t *config,
-                                flash_partition_flexram_load_option_t option,
-                                uint32_t eepromDataSizeCode,
-                                uint32_t flexnvmPartitionCode);
-#endif
-
-/*@}*/
-
-/*!
-* @name Flash Protection Utilities
-* @{
-*/
-
-/*!
- * @brief Set PFLASH Protection to the intended protection status.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param protectStatus The expected protect status user wants to set to PFlash protection register. Each bit is
- * corresponding to protection of 1/32 of the total PFlash. The least significant bit is corresponding to the lowest
- * address area of P-Flash. The most significant bit is corresponding to the highest address area of PFlash. There are
- * two possible cases as shown below:
- *       0: this area is protected.
- *       1: this area is unprotected.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- */
-status_t FLASH_PflashSetProtection(flash_config_t *config, uint32_t protectStatus);
-
-/*!
- * @brief Get PFLASH Protection Status.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param protectStatus  Protect status returned by PFlash IP. Each bit is corresponding to protection of 1/32 of the
- * total PFlash. The least significant bit is corresponding to the lowest address area of PFlash. The most significant
- * bit is corresponding to the highest address area of PFlash. Thee are two possible cases as below:
- *       0: this area is protected.
- *       1: this area is unprotected.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- */
-status_t FLASH_PflashGetProtection(flash_config_t *config, uint32_t *protectStatus);
-
-/*!
- * @brief Set DFLASH Protection to the intended protection status.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param protectStatus The expected protect status user wants to set to DFlash protection register. Each bit is
- * corresponding to protection of 1/8 of the total DFlash. The least significant bit is corresponding to the lowest
- * address area of DFlash. The most significant bit is corresponding to the highest address area of  DFlash. There are
- * two possible cases as shown below:
- *       0: this area is protected.
- *       1: this area is unprotected.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_CommandNotSupported Flash api is not supported
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- */
-#if FLASH_SSD_IS_FLEXNVM_ENABLED
-status_t FLASH_DflashSetProtection(flash_config_t *config, uint8_t protectStatus);
-#endif
-
-/*!
- * @brief Get DFLASH Protection Status.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param protectStatus  DFlash Protect status returned by PFlash IP. Each bit is corresponding to protection of 1/8 of
- * the total DFlash. The least significant bit is corresponding to the lowest address area of DFlash. The most
- * significant bit is corresponding to the highest address area of DFlash and so on. There are two possible cases as
- * below:
- *       0: this area is protected.
- *       1: this area is unprotected.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_CommandNotSupported Flash api is not supported
- */
-#if FLASH_SSD_IS_FLEXNVM_ENABLED
-status_t FLASH_DflashGetProtection(flash_config_t *config, uint8_t *protectStatus);
-#endif
-
-/*!
- * @brief Set EEPROM Protection to the intended protection status.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param protectStatus The expected protect status user wants to set to EEPROM protection register. Each bit is
- * corresponding to protection of 1/8 of the total EEPROM. The least significant bit is corresponding to the lowest
- * address area of EEPROM. The most significant bit is corresponding to the highest address area of EEPROM, and so on.
- * There are two possible cases as shown below:
- *       0: this area is protected.
- *       1: this area is unprotected.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_CommandNotSupported Flash api is not supported
- * @retval #kStatus_FLASH_CommandFailure Run-time error during command execution.
- */
-#if FLASH_SSD_IS_FLEXNVM_ENABLED
-status_t FLASH_EepromSetProtection(flash_config_t *config, uint8_t protectStatus);
-#endif
-
-/*!
- * @brief Get DFLASH Protection Status.
- *
- * @param config Pointer to storage for the driver runtime state.
- * @param protectStatus  DFlash Protect status returned by PFlash IP. Each bit is corresponding to protection of 1/8 of
- * the total EEPROM. The least significant bit is corresponding to the lowest address area of EEPROM. The most
- * significant bit is corresponding to the highest address area of EEPROM. There are two possible cases as below:
- *       0: this area is protected.
- *       1: this area is unprotected.
- *
- * @retval #kStatus_FLASH_Success Api was executed successfully.
- * @retval #kStatus_FLASH_InvalidArgument Invalid argument is provided.
- * @retval #kStatus_FLASH_CommandNotSupported Flash api is not supported.
- */
-#if FLASH_SSD_IS_FLEXNVM_ENABLED
-status_t FLASH_EepromGetProtection(flash_config_t *config, uint8_t *protectStatus);
-#endif
-
-/*@}*/
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*! @}*/
-
-#endif /* _FSL_FLASH_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_flexbus.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_flexbus.h"
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-
-/*!
- * @brief Gets the instance from the base address
- *
- * @param base FLEXBUS peripheral base address
- *
- * @return The FLEXBUS instance
- */
-static uint32_t FLEXBUS_GetInstance(FB_Type *base);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-
-/*! @brief Pointers to FLEXBUS bases for each instance. */
-static FB_Type *const s_flexbusBases[] = FB_BASE_PTRS;
-
-/*! @brief Pointers to FLEXBUS clocks for each instance. */
-static const clock_ip_name_t s_flexbusClocks[] = FLEXBUS_CLOCKS;
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-
-static uint32_t FLEXBUS_GetInstance(FB_Type *base)
-{
-    uint32_t instance;
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < FSL_FEATURE_SOC_FB_COUNT; instance++)
-    {
-        if (s_flexbusBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < FSL_FEATURE_SOC_FB_COUNT);
-
-    return instance;
-}
-
-void FLEXBUS_Init(FB_Type *base, const flexbus_config_t *config)
-{
-    assert(config != NULL);
-    assert(config->chip < FB_CSAR_COUNT);
-    assert(config->waitStates <= 0x3FU);
-
-    uint32_t chip = 0;
-    uint32_t reg_value = 0;
-
-    /* Ungate clock for FLEXBUS */
-    CLOCK_EnableClock(s_flexbusClocks[FLEXBUS_GetInstance(base)]);
-
-    /* Reset all the register to default state */
-    for (chip = 0; chip < FB_CSAR_COUNT; chip++)
-    {
-        /* Reset CSMR register, all chips not valid (disabled) */
-        base->CS[chip].CSMR = 0x0000U;
-        /* Set default base address */
-        base->CS[chip].CSAR &= (~FB_CSAR_BA_MASK);
-        /* Reset FB_CSCRx register */
-        base->CS[chip].CSCR = 0x0000U;
-    }
-    /* Set FB_CSPMCR register */
-    /* FlexBus signal group 1 multiplex control */
-    reg_value |= kFLEXBUS_MultiplexGroup1_FB_ALE << FB_CSPMCR_GROUP1_SHIFT;
-    /* FlexBus signal group 2 multiplex control */
-    reg_value |= kFLEXBUS_MultiplexGroup2_FB_CS4 << FB_CSPMCR_GROUP2_SHIFT;
-    /* FlexBus signal group 3 multiplex control */
-    reg_value |= kFLEXBUS_MultiplexGroup3_FB_CS5 << FB_CSPMCR_GROUP3_SHIFT;
-    /* FlexBus signal group 4 multiplex control */
-    reg_value |= kFLEXBUS_MultiplexGroup4_FB_TBST << FB_CSPMCR_GROUP4_SHIFT;
-    /* FlexBus signal group 5 multiplex control */
-    reg_value |= kFLEXBUS_MultiplexGroup5_FB_TA << FB_CSPMCR_GROUP5_SHIFT;
-    /* Write to CSPMCR register */
-    base->CSPMCR = reg_value;
-
-    /* Update chip value */
-    chip = config->chip;
-
-    /* Base address */
-    reg_value = config->chipBaseAddress;
-    /* Write to CSAR register */
-    base->CS[chip].CSAR = reg_value;
-    /* Chip-select validation */
-    reg_value = 0x1U << FB_CSMR_V_SHIFT;
-    /* Write protect */
-    reg_value |= (uint32_t)(config->writeProtect) << FB_CSMR_WP_SHIFT;
-    /* Base address mask */
-    reg_value |= config->chipBaseAddressMask << FB_CSMR_BAM_SHIFT;
-    /* Write to CSMR register */
-    base->CS[chip].CSMR = reg_value;
-    /* Burst write */
-    reg_value = (uint32_t)(config->burstWrite) << FB_CSCR_BSTW_SHIFT;
-    /* Burst read */
-    reg_value |= (uint32_t)(config->burstRead) << FB_CSCR_BSTR_SHIFT;
-    /* Byte-enable mode */
-    reg_value |= (uint32_t)(config->byteEnableMode) << FB_CSCR_BEM_SHIFT;
-    /* Port size */
-    reg_value |= (uint32_t)config->portSize << FB_CSCR_PS_SHIFT;
-    /* The internal transfer acknowledge for accesses */
-    reg_value |= (uint32_t)(config->autoAcknowledge) << FB_CSCR_AA_SHIFT;
-    /* Byte-Lane shift */
-    reg_value |= (uint32_t)config->byteLaneShift << FB_CSCR_BLS_SHIFT;
-    /* The number of wait states */
-    reg_value |= (uint32_t)config->waitStates << FB_CSCR_WS_SHIFT;
-    /* Write address hold or deselect */
-    reg_value |= (uint32_t)config->writeAddressHold << FB_CSCR_WRAH_SHIFT;
-    /* Read address hold or deselect */
-    reg_value |= (uint32_t)config->readAddressHold << FB_CSCR_RDAH_SHIFT;
-    /* Address setup */
-    reg_value |= (uint32_t)config->addressSetup << FB_CSCR_ASET_SHIFT;
-    /* Extended transfer start/extended address latch */
-    reg_value |= (uint32_t)(config->extendTransferAddress) << FB_CSCR_EXTS_SHIFT;
-    /* Secondary wait state */
-    reg_value |= (uint32_t)(config->secondaryWaitStates) << FB_CSCR_SWSEN_SHIFT;
-    /* Write to CSCR register */
-    base->CS[chip].CSCR = reg_value;
-    /* FlexBus signal group 1 multiplex control */
-    reg_value = (uint32_t)config->group1MultiplexControl << FB_CSPMCR_GROUP1_SHIFT;
-    /* FlexBus signal group 2 multiplex control */
-    reg_value |= (uint32_t)config->group2MultiplexControl << FB_CSPMCR_GROUP2_SHIFT;
-    /* FlexBus signal group 3 multiplex control */
-    reg_value |= (uint32_t)config->group3MultiplexControl << FB_CSPMCR_GROUP3_SHIFT;
-    /* FlexBus signal group 4 multiplex control */
-    reg_value |= (uint32_t)config->group4MultiplexControl << FB_CSPMCR_GROUP4_SHIFT;
-    /* FlexBus signal group 5 multiplex control */
-    reg_value |= (uint32_t)config->group5MultiplexControl << FB_CSPMCR_GROUP5_SHIFT;
-    /* Write to CSPMCR register */
-    base->CSPMCR = reg_value;
-}
-
-void FLEXBUS_Deinit(FB_Type *base)
-{
-    /* Gate clock for FLEXBUS */
-    CLOCK_EnableClock(s_flexbusClocks[FLEXBUS_GetInstance(base)]);
-}
-
-void FLEXBUS_GetDefaultConfig(flexbus_config_t *config)
-{
-    config->chip = 0;                                  /* Chip 0 FlexBus for validation */
-    config->writeProtect = 0;                          /* Write accesses are allowed */
-    config->burstWrite = 0;                            /* Burst-Write disable */
-    config->burstRead = 0;                             /* Burst-Read disable */
-    config->byteEnableMode = 0;                        /* Byte-Enable mode is asserted for data write only */
-    config->autoAcknowledge = true;                    /* Auto-Acknowledge enable */
-    config->extendTransferAddress = 0;                 /* Extend transfer start/extend address latch disable */
-    config->secondaryWaitStates = 0;                   /* Secondary wait state disable */
-    config->byteLaneShift = kFLEXBUS_NotShifted;       /* Byte-Lane shift disable */
-    config->writeAddressHold = kFLEXBUS_Hold1Cycle;    /* Write address hold 1 cycles */
-    config->readAddressHold = kFLEXBUS_Hold1Or0Cycles; /* Read address hold 0 cycles */
-    config->addressSetup =
-        kFLEXBUS_FirstRisingEdge;      /* Assert ~FB_CSn on the first rising clock edge after the address is asserted */
-    config->portSize = kFLEXBUS_1Byte; /* 1 byte port size of transfer */
-    config->group1MultiplexControl = kFLEXBUS_MultiplexGroup1_FB_ALE;  /* FB_ALE */
-    config->group2MultiplexControl = kFLEXBUS_MultiplexGroup2_FB_CS4;  /* FB_CS4 */
-    config->group3MultiplexControl = kFLEXBUS_MultiplexGroup3_FB_CS5;  /* FB_CS5 */
-    config->group4MultiplexControl = kFLEXBUS_MultiplexGroup4_FB_TBST; /* FB_TBST */
-    config->group5MultiplexControl = kFLEXBUS_MultiplexGroup5_FB_TA;   /* FB_TA */
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_flexbus.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,266 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _FSL_FLEXBUS_H_
-#define _FSL_FLEXBUS_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup flexbus
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-#define FSL_FLEXBUS_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) /*!< Version 2.0.0. */
-/*@}*/
-
-/*!
- * @brief Defines port size for FlexBus peripheral.
- */
-typedef enum _flexbus_port_size
-{
-    kFLEXBUS_4Bytes = 0x00U, /*!< 32-bit port size */
-    kFLEXBUS_1Byte = 0x01U,  /*!< 8-bit port size */
-    kFLEXBUS_2Bytes = 0x02U  /*!< 16-bit port size */
-} flexbus_port_size_t;
-
-/*!
- * @brief Defines number of cycles to hold address and attributes for FlexBus peripheral.
- */
-typedef enum _flexbus_write_address_hold
-{
-    kFLEXBUS_Hold1Cycle = 0x00U,  /*!< Hold address and attributes one cycles after FB_CSn negates on writes */
-    kFLEXBUS_Hold2Cycles = 0x01U, /*!< Hold address and attributes two cycles after FB_CSn negates on writes */
-    kFLEXBUS_Hold3Cycles = 0x02U, /*!< Hold address and attributes three cycles after FB_CSn negates on writes */
-    kFLEXBUS_Hold4Cycles = 0x03U  /*!< Hold address and attributes four cycles after FB_CSn negates on writes */
-} flexbus_write_address_hold_t;
-
-/*!
- * @brief Defines number of cycles to hold address and attributes for FlexBus peripheral.
- */
-typedef enum _flexbus_read_address_hold
-{
-    kFLEXBUS_Hold1Or0Cycles = 0x00U, /*!< Hold address and attributes 1 or 0 cycles on reads */
-    kFLEXBUS_Hold2Or1Cycles = 0x01U, /*!< Hold address and attributes 2 or 1 cycles on reads */
-    kFLEXBUS_Hold3Or2Cycle = 0x02U,  /*!< Hold address and attributes 3 or 2 cycles on reads */
-    kFLEXBUS_Hold4Or3Cycle = 0x03U   /*!< Hold address and attributes 4 or 3 cycles on reads */
-} flexbus_read_address_hold_t;
-
-/*!
- * @brief Address setup for FlexBus peripheral.
- */
-typedef enum _flexbus_address_setup
-{
-    kFLEXBUS_FirstRisingEdge = 0x00U,  /*!< Assert FB_CSn on first rising clock edge after address is asserted */
-    kFLEXBUS_SecondRisingEdge = 0x01U, /*!< Assert FB_CSn on second rising clock edge after address is asserted */
-    kFLEXBUS_ThirdRisingEdge = 0x02U,  /*!< Assert FB_CSn on third rising clock edge after address is asserted */
-    kFLEXBUS_FourthRisingEdge = 0x03U, /*!< Assert FB_CSn on fourth rising clock edge after address is asserted */
-} flexbus_address_setup_t;
-
-/*!
- * @brief Defines byte-lane shift for FlexBus peripheral.
- */
-typedef enum _flexbus_bytelane_shift
-{
-    kFLEXBUS_NotShifted = 0x00U, /*!< Not shifted. Data is left-justified on FB_AD */
-    kFLEXBUS_Shifted = 0x01U,    /*!< Shifted. Data is right justified on FB_AD */
-} flexbus_bytelane_shift_t;
-
-/*!
- * @brief Defines multiplex group1 valid signals.
- */
-typedef enum _flexbus_multiplex_group1_signal
-{
-    kFLEXBUS_MultiplexGroup1_FB_ALE = 0x00U, /*!< FB_ALE */
-    kFLEXBUS_MultiplexGroup1_FB_CS1 = 0x01U, /*!< FB_CS1 */
-    kFLEXBUS_MultiplexGroup1_FB_TS = 0x02U,  /*!< FB_TS */
-} flexbus_multiplex_group1_t;
-
-/*!
- * @brief Defines multiplex group2 valid signals.
- */
-typedef enum _flexbus_multiplex_group2_signal
-{
-    kFLEXBUS_MultiplexGroup2_FB_CS4 = 0x00U,      /*!< FB_CS4 */
-    kFLEXBUS_MultiplexGroup2_FB_TSIZ0 = 0x01U,    /*!< FB_TSIZ0 */
-    kFLEXBUS_MultiplexGroup2_FB_BE_31_24 = 0x02U, /*!< FB_BE_31_24 */
-} flexbus_multiplex_group2_t;
-
-/*!
- * @brief Defines multiplex group3 valid signals.
- */
-typedef enum _flexbus_multiplex_group3_signal
-{
-    kFLEXBUS_MultiplexGroup3_FB_CS5 = 0x00U,      /*!< FB_CS5 */
-    kFLEXBUS_MultiplexGroup3_FB_TSIZ1 = 0x01U,    /*!< FB_TSIZ1 */
-    kFLEXBUS_MultiplexGroup3_FB_BE_23_16 = 0x02U, /*!< FB_BE_23_16 */
-} flexbus_multiplex_group3_t;
-
-/*!
- * @brief Defines multiplex group4 valid signals.
- */
-typedef enum _flexbus_multiplex_group4_signal
-{
-    kFLEXBUS_MultiplexGroup4_FB_TBST = 0x00U,    /*!< FB_TBST */
-    kFLEXBUS_MultiplexGroup4_FB_CS2 = 0x01U,     /*!< FB_CS2 */
-    kFLEXBUS_MultiplexGroup4_FB_BE_15_8 = 0x02U, /*!< FB_BE_15_8 */
-} flexbus_multiplex_group4_t;
-
-/*!
- * @brief Defines multiplex group5 valid signals.
- */
-typedef enum _flexbus_multiplex_group5_signal
-{
-    kFLEXBUS_MultiplexGroup5_FB_TA = 0x00U,     /*!< FB_TA */
-    kFLEXBUS_MultiplexGroup5_FB_CS3 = 0x01U,    /*!< FB_CS3 */
-    kFLEXBUS_MultiplexGroup5_FB_BE_7_0 = 0x02U, /*!< FB_BE_7_0 */
-} flexbus_multiplex_group5_t;
-
-/*!
- * @brief Configuration structure that the user needs to set.
- */
-typedef struct _flexbus_config
-{
-    uint8_t chip;                                      /*!< Chip FlexBus for validation */
-    uint8_t waitStates;                                /*!< Value of wait states */
-    uint32_t chipBaseAddress;                          /*!< Chip base address for using FlexBus */
-    uint32_t chipBaseAddressMask;                      /*!< Chip base address mask */
-    bool writeProtect;                                 /*!< Write protected */
-    bool burstWrite;                                   /*!< Burst-Write enable */
-    bool burstRead;                                    /*!< Burst-Read enable */
-    bool byteEnableMode;                               /*!< Byte-enable mode support */
-    bool autoAcknowledge;                              /*!< Auto acknowledge setting */
-    bool extendTransferAddress;                        /*!< Extend transfer start/extend address latch enable */
-    bool secondaryWaitStates;                          /*!< Secondary wait states number */
-    flexbus_port_size_t portSize;                      /*!< Port size of transfer */
-    flexbus_bytelane_shift_t byteLaneShift;            /*!< Byte-lane shift enable */
-    flexbus_write_address_hold_t writeAddressHold;     /*!< Write address hold or deselect option */
-    flexbus_read_address_hold_t readAddressHold;       /*!< Read address hold or deselect option */
-    flexbus_address_setup_t addressSetup;              /*!< Address setup setting */
-    flexbus_multiplex_group1_t group1MultiplexControl; /*!< FlexBus Signal Group 1 Multiplex control */
-    flexbus_multiplex_group2_t group2MultiplexControl; /*!< FlexBus Signal Group 2 Multiplex control */
-    flexbus_multiplex_group3_t group3MultiplexControl; /*!< FlexBus Signal Group 3 Multiplex control */
-    flexbus_multiplex_group4_t group4MultiplexControl; /*!< FlexBus Signal Group 4 Multiplex control */
-    flexbus_multiplex_group5_t group5MultiplexControl; /*!< FlexBus Signal Group 5 Multiplex control */
-} flexbus_config_t;
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif /* __cplusplus */
-
-/*!
- * @name FlexBus functional operation
- * @{
- */
-
-/*!
- * @brief Initializes and configures the FlexBus module.
- *
- * This function enables the clock gate for FlexBus module.
- * Only chip 0 is validated and set to known values. Other chips are disabled.
- * NOTE: In this function, certain parameters, depending on external memories,  must
- * be set before using FLEXBUS_Init() function.
- * This example shows how to set up the uart_state_t and the
- * flexbus_config_t parameters and how to call the FLEXBUS_Init function by passing
- * in these parameters:
-   @code
-    flexbus_config_t flexbusConfig;
-    FLEXBUS_GetDefaultConfig(&flexbusConfig);
-    flexbusConfig.waitStates            = 2U;
-    flexbusConfig.chipBaseAddress       = 0x60000000U;
-    flexbusConfig.chipBaseAddressMask   = 7U;
-    FLEXBUS_Init(FB, &flexbusConfig);
-   @endcode
- *
- * @param base FlexBus peripheral address.
- * @param config Pointer to the configure structure
-*/
-void FLEXBUS_Init(FB_Type *base, const flexbus_config_t *config);
-
-/*!
- * @brief De-initializes a FlexBus instance.
- *
- * This function disables the clock gate of the FlexBus module clock.
- *
- * @param base FlexBus peripheral address.
- */
-void FLEXBUS_Deinit(FB_Type *base);
-
-/*!
- * @brief Initializes the FlexBus configuration structure.
- *
- * This function initializes the FlexBus configuration structure to default value. The default
- * values are:
-   @code
-   fbConfig->chip                   = 0;
-   fbConfig->writeProtect           = 0;
-   fbConfig->burstWrite             = 0;
-   fbConfig->burstRead              = 0;
-   fbConfig->byteEnableMode         = 0;
-   fbConfig->autoAcknowledge        = true;
-   fbConfig->extendTransferAddress  = 0;
-   fbConfig->secondaryWaitStates    = 0;
-   fbConfig->byteLaneShift          = kFLEXBUS_NotShifted;
-   fbConfig->writeAddressHold       = kFLEXBUS_Hold1Cycle;
-   fbConfig->readAddressHold        = kFLEXBUS_Hold1Or0Cycles;
-   fbConfig->addressSetup           = kFLEXBUS_FirstRisingEdge;
-   fbConfig->portSize               = kFLEXBUS_1Byte;
-   fbConfig->group1MultiplexControl = kFLEXBUS_MultiplexGroup1_FB_ALE;
-   fbConfig->group2MultiplexControl = kFLEXBUS_MultiplexGroup2_FB_CS4 ;
-   fbConfig->group3MultiplexControl = kFLEXBUS_MultiplexGroup3_FB_CS5;
-   fbConfig->group4MultiplexControl = kFLEXBUS_MultiplexGroup4_FB_TBST;
-   fbConfig->group5MultiplexControl = kFLEXBUS_MultiplexGroup5_FB_TA;
-   @endcode
- * @param config Pointer to the initialization structure.
- * @see FLEXBUS_Init
- */
-void FLEXBUS_GetDefaultConfig(flexbus_config_t *config);
-
-/*! @}*/
-
-#if defined(__cplusplus)
-}
-#endif /* __cplusplus */
-
-/*! @}*/
-
-#endif /* _FSL_FLEXBUS_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_flexcan.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1314 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_flexcan.h"
-
-/*******************************************************************************
- * Definitons
- ******************************************************************************/
-
-#define FLEXCAN_TIME_QUANTA_NUM (10)
-
-/*! @brief FlexCAN Internal State. */
-enum _flexcan_state
-{
-    kFLEXCAN_StateIdle = 0x0,     /*!< MB/RxFIFO idle.*/
-    kFLEXCAN_StateRxData = 0x1,   /*!< MB receiving.*/
-    kFLEXCAN_StateRxRemote = 0x2, /*!< MB receiving remote reply.*/
-    kFLEXCAN_StateTxData = 0x3,   /*!< MB transmitting.*/
-    kFLEXCAN_StateTxRemote = 0x4, /*!< MB transmitting remote request.*/
-    kFLEXCAN_StateRxFifo = 0x5,   /*!< RxFIFO receiving.*/
-};
-
-/*! @brief FlexCAN message buffer CODE for Rx buffers. */
-enum _flexcan_mb_code_rx
-{
-    kFLEXCAN_RxMbInactive = 0x0, /*!< MB is not active.*/
-    kFLEXCAN_RxMbFull = 0x2,     /*!< MB is full.*/
-    kFLEXCAN_RxMbEmpty = 0x4,    /*!< MB is active and empty.*/
-    kFLEXCAN_RxMbOverrun = 0x6,  /*!< MB is overwritten into a full buffer.*/
-    kFLEXCAN_RxMbBusy = 0x8,     /*!< FlexCAN is updating the contents of the MB.*/
-                                 /*!  The CPU must not access the MB.*/
-    kFLEXCAN_RxMbRanswer = 0xA,  /*!< A frame was configured to recognize a Remote Request Frame */
-                                 /*!  and transmit a Response Frame in return.*/
-    kFLEXCAN_RxMbNotUsed = 0xF,  /*!< Not used.*/
-};
-
-/*! @brief FlexCAN message buffer CODE FOR Tx buffers. */
-enum _flexcan_mb_code_tx
-{
-    kFLEXCAN_TxMbInactive = 0x8,     /*!< MB is not active.*/
-    kFLEXCAN_TxMbAbort = 0x9,        /*!< MB is aborted.*/
-    kFLEXCAN_TxMbDataOrRemote = 0xC, /*!< MB is a TX Data Frame(when MB RTR = 0) or */
-                                     /*!< MB is a TX Remote Request Frame (when MB RTR = 1).*/
-    kFLEXCAN_TxMbTanswer = 0xE,      /*!< MB is a TX Response Request Frame from */
-                                     /*!  an incoming Remote Request Frame.*/
-    kFLEXCAN_TxMbNotUsed = 0xF,      /*!< Not used.*/
-};
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-
-/*!
- * @brief Get the FlexCAN instance from peripheral base address.
- *
- * @param base FlexCAN peripheral base address.
- * @return FlexCAN instance.
- */
-uint32_t FLEXCAN_GetInstance(CAN_Type *base);
-
-/*!
- * @brief Enter FlexCAN Fraze Mode.
- *
- * This function makes the FlexCAN work under Fraze Mode.
- *
- * @param base FlexCAN peripheral base address.
- */
-static void FLEXCAN_EnterFrazeMode(CAN_Type *base);
-
-/*!
- * @brief Exit FlexCAN Fraze Mode.
- *
- * This function makes the FlexCAN leave Fraze Mode.
- *
- * @param base FlexCAN peripheral base address.
- */
-static void FLEXCAN_ExitFrazeMode(CAN_Type *base);
-
-/*!
- * @brief Check if Message Buffer is occupied by Rx FIFO.
- *
- * This function check if Message Buffer is occupied by Rx FIFO.
- *
- * @param base FlexCAN peripheral base address.
- * @param mbIdx The FlexCAN Message Buffer index.
- */
-static bool FLEXCAN_IsMbOccupied(CAN_Type *base, uint8_t mbIdx);
-
-/*!
- * @brief Check if Message Buffer interrupt is enabled.
- *
- * This function check if Message Buffer interrupt is enabled.
- *
- * @param base FlexCAN peripheral base address.
- * @param mbIdx The FlexCAN Message Buffer index.
- */
-static bool FLEXCAN_IsMbIntEnabled(CAN_Type *base, uint8_t mbIdx);
-
-/*!
- * @brief Reset the FlexCAN Instance.
- *
- * Restores the FlexCAN module to reset state, notice that this function
- * will set all the registers to reset state so the FlexCAN module can not work
- * after calling this API.
- *
- * @param base FlexCAN peripheral base address.
-*/
-static void FLEXCAN_Reset(CAN_Type *base);
-
-/*!
- * @brief Set Baud Rate of FlexCAN.
- *
- * This function set the baud rate of FlexCAN.
- *
- * @param base FlexCAN peripheral base address.
- * @param sourceClock_Hz Source Clock in Hz.
- * @param baudRate_Bps Baud Rate in Bps.
- */
-static void FLEXCAN_SetBaudRate(CAN_Type *base, uint32_t sourceClock_Hz, uint32_t baudRate_Bps);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-/* Array of FlexCAN handle. */
-static flexcan_handle_t *s_flexcanHandle[FSL_FEATURE_SOC_FLEXCAN_COUNT];
-
-/* Array of FlexCAN peripheral base address. */
-static CAN_Type *const s_flexcanBases[] = CAN_BASE_PTRS;
-
-/* Array of FlexCAN IRQ number. */
-static const IRQn_Type s_flexcanRxWarningIRQ[] = CAN_Rx_Warning_IRQS;
-static const IRQn_Type s_flexcanTxWarningIRQ[] = CAN_Tx_Warning_IRQS;
-static const IRQn_Type s_flexcanWakeUpIRQ[] = CAN_Wake_Up_IRQS;
-static const IRQn_Type s_flexcanErrorIRQ[] = CAN_Error_IRQS;
-static const IRQn_Type s_flexcanBusOffIRQ[] = CAN_Bus_Off_IRQS;
-static const IRQn_Type s_flexcanMbIRQ[] = CAN_ORed_Message_buffer_IRQS;
-
-/* Array of FlexCAN clock name. */
-static const clock_ip_name_t s_flexcanClock[] = FLEXCAN_CLOCKS;
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-
-uint32_t FLEXCAN_GetInstance(CAN_Type *base)
-{
-    uint32_t instance;
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < FSL_FEATURE_SOC_FLEXCAN_COUNT; instance++)
-    {
-        if (s_flexcanBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < FSL_FEATURE_SOC_FLEXCAN_COUNT);
-
-    return instance;
-}
-
-static void FLEXCAN_EnterFrazeMode(CAN_Type *base)
-{
-    /* Set Freeze, Halt bits. */
-    base->MCR |= CAN_MCR_FRZ_MASK | CAN_MCR_HALT_MASK;
-
-    /* Wait until the FlexCAN Module enter freeze mode. */
-    while (!(base->MCR & CAN_MCR_FRZACK_MASK))
-    {
-    }
-}
-
-static void FLEXCAN_ExitFrazeMode(CAN_Type *base)
-{
-    /* Clear Freeze, Halt bits. */
-    base->MCR &= ~(CAN_MCR_FRZ_MASK | CAN_MCR_HALT_MASK);
-
-    /* Wait until the FlexCAN Module exit freeze mode. */
-    while (base->MCR & CAN_MCR_FRZACK_MASK)
-    {
-    }
-}
-
-static bool FLEXCAN_IsMbOccupied(CAN_Type *base, uint8_t mbIdx)
-{
-    uint8_t lastOccupiedMb;
-
-    /* Is Rx FIFO enabled? */
-    if (base->MCR & CAN_MCR_RFEN_MASK)
-    {
-        /* Get RFFN value. */
-        lastOccupiedMb = ((base->CTRL2 & CAN_CTRL2_RFFN_MASK) >> CAN_CTRL2_RFFN_SHIFT);
-        /* Calculate the number of last Message Buffer occupied by Rx FIFO. */
-        lastOccupiedMb = ((lastOccupiedMb + 1) * 2) + 5;
-
-        if (mbIdx <= lastOccupiedMb)
-        {
-            return true;
-        }
-        else
-        {
-            return false;
-        }
-    }
-    else
-    {
-        return false;
-    }
-}
-
-static bool FLEXCAN_IsMbIntEnabled(CAN_Type *base, uint8_t mbIdx)
-{
-    /* Assertion. */
-    assert(mbIdx < FSL_FEATURE_FLEXCAN_HAS_MESSAGE_BUFFER_MAX_NUMBERn(base));
-
-#if (FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER > 0)
-    if (mbIdx < 32)
-    {
-#endif
-        if (base->IMASK1 & ((uint32_t)(1 << mbIdx)))
-        {
-            return true;
-        }
-        else
-        {
-            return false;
-        }
-#if (FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER > 0)
-    }
-    else
-    {
-        if (base->IMASK2 & ((uint32_t)(1 << (mbIdx - 32))))
-            return true;
-        else
-            return false;
-    }
-#endif
-}
-
-static void FLEXCAN_Reset(CAN_Type *base)
-{
-    /* The module must should be first exit from low power
-     * mode, and then soft reset can be applied.
-     */
-    assert(!(base->MCR & CAN_MCR_MDIS_MASK));
-
-    uint8_t i;
-
-#if (FSL_FEATURE_FLEXCAN_HAS_DOZE_MODE_SUPPORT != 0)
-    /* De-assert DOZE Enable Bit. */
-    base->MCR &= ~CAN_MCR_DOZE_MASK;
-#endif
-
-    /* Wait until FlexCAN exit from any Low Power Mode. */
-    while (base->MCR & CAN_MCR_LPMACK_MASK)
-    {
-    }
-
-    /* Assert Soft Reset Signal. */
-    base->MCR |= CAN_MCR_SOFTRST_MASK;
-    /* Wait until FlexCAN reset completes. */
-    while (base->MCR & CAN_MCR_SOFTRST_MASK)
-    {
-    }
-
-/* Reset MCR rigister. */
-#if (defined(FSL_FEATURE_FLEXCAN_HAS_GLITCH_FILTER) && FSL_FEATURE_FLEXCAN_HAS_GLITCH_FILTER)
-    base->MCR |= CAN_MCR_WRNEN_MASK | CAN_MCR_WAKSRC_MASK |
-                 CAN_MCR_MAXMB(FSL_FEATURE_FLEXCAN_HAS_MESSAGE_BUFFER_MAX_NUMBERn(base) - 1);
-#else
-        base->MCR |= CAN_MCR_WRNEN_MASK | CAN_MCR_MAXMB(FSL_FEATURE_FLEXCAN_HAS_MESSAGE_BUFFER_MAX_NUMBERn(base) - 1);
-#endif
-
-    /* Reset CTRL1 and CTRL2 rigister. */
-    base->CTRL1 = CAN_CTRL1_SMP_MASK;
-    base->CTRL2 = CAN_CTRL2_TASD(0x16) | CAN_CTRL2_RRS_MASK | CAN_CTRL2_EACEN_MASK;
-
-    /* Clean all individual Rx Mask of Message Buffers. */
-    for (i = 0; i < FSL_FEATURE_FLEXCAN_HAS_MESSAGE_BUFFER_MAX_NUMBERn(base); i++)
-    {
-        base->RXIMR[i] = 0x3FFFFFFF;
-    }
-
-    /* Clean Global Mask of Message Buffers. */
-    base->RXMGMASK = 0x3FFFFFFF;
-    /* Clean Global Mask of Message Buffer 14. */
-    base->RX14MASK = 0x3FFFFFFF;
-    /* Clean Global Mask of Message Buffer 15. */
-    base->RX15MASK = 0x3FFFFFFF;
-    /* Clean Global Mask of Rx FIFO. */
-    base->RXFGMASK = 0x3FFFFFFF;
-
-    /* Clean all Message Buffer CS fields. */
-    for (i = 0; i < FSL_FEATURE_FLEXCAN_HAS_MESSAGE_BUFFER_MAX_NUMBERn(base); i++)
-    {
-        base->MB[i].CS = 0x0;
-    }
-}
-
-static void FLEXCAN_SetBaudRate(CAN_Type *base, uint32_t sourceClock_Hz, uint32_t baudRate_Bps)
-{
-    flexcan_timing_config_t timingConfig;
-    uint32_t priDiv = baudRate_Bps * FLEXCAN_TIME_QUANTA_NUM;
-
-    /* Assertion: Desired baud rate is too high. */
-    assert(baudRate_Bps <= 1000000U);
-    /* Assertion: Source clock should greater than baud rate * FLEXCAN_TIME_QUANTA_NUM. */
-    assert(priDiv <= sourceClock_Hz);
-
-    if (0 == priDiv)
-    {
-        priDiv = 1;
-    }
-
-    priDiv = (sourceClock_Hz / priDiv) - 1;
-
-    /* Desired baud rate is too low. */
-    if (priDiv > 0xFF)
-    {
-        priDiv = 0xFF;
-    }
-
-    /* FlexCAN timing setting formula:
-     * FLEXCAN_TIME_QUANTA_NUM = 1 + (PSEG1 + 1) + (PSEG2 + 1) + (PROPSEG + 1);
-     */
-    timingConfig.preDivider = priDiv;
-    timingConfig.phaseSeg1 = 3;
-    timingConfig.phaseSeg2 = 2;
-    timingConfig.propSeg = 1;
-    timingConfig.rJumpwidth = 1;
-
-    /* Update actual timing characteristic. */
-    FLEXCAN_SetTimingConfig(base, &timingConfig);
-}
-
-void FLEXCAN_Init(CAN_Type *base, const flexcan_config_t *config, uint32_t sourceClock_Hz)
-{
-    uint32_t mcrTemp;
-
-    /* Assertion. */
-    assert(config);
-    assert((config->maxMbNum > 0) && (config->maxMbNum <= FSL_FEATURE_FLEXCAN_HAS_MESSAGE_BUFFER_MAX_NUMBERn(base)));
-
-    /* Enable FlexCAN clock. */
-    CLOCK_EnableClock(s_flexcanClock[FLEXCAN_GetInstance(base)]);
-
-    /* Disable FlexCAN Module. */
-    FLEXCAN_Enable(base, false);
-
-    /* Protocol-Engine clock source selection, This bit must be set
-     * when FlexCAN Module in Disable Mode.
-     */
-    base->CTRL1 = (kFLEXCAN_ClkSrcOsc == config->clkSrc) ? base->CTRL1 & ~CAN_CTRL1_CLKSRC_MASK :
-                                                           base->CTRL1 | CAN_CTRL1_CLKSRC_MASK;
-
-    /* Enable FlexCAN Module for configuartion. */
-    FLEXCAN_Enable(base, true);
-
-    /* Reset to known status. */
-    FLEXCAN_Reset(base);
-
-    /* Save current MCR value. */
-    mcrTemp = base->MCR;
-
-    /* Set the maximum number of Message Buffers */
-    mcrTemp = (mcrTemp & ~CAN_MCR_MAXMB_MASK) | CAN_MCR_MAXMB(config->maxMbNum - 1);
-
-    /* Enable Loop Back Mode? */
-    base->CTRL1 = (config->enableLoopBack) ? base->CTRL1 | CAN_CTRL1_LPB_MASK : base->CTRL1 & ~CAN_CTRL1_LPB_MASK;
-
-    /* Enable Self Wake Up Mode? */
-    mcrTemp = (config->enableSelfWakeup) ? mcrTemp | CAN_MCR_SLFWAK_MASK : mcrTemp & ~CAN_MCR_SLFWAK_MASK;
-
-    /* Enable Individual Rx Masking? */
-    mcrTemp = (config->enableIndividMask) ? mcrTemp | CAN_MCR_IRMQ_MASK : mcrTemp & ~CAN_MCR_IRMQ_MASK;
-
-#if (defined(FSL_FEATURE_FLEXCAN_HAS_DOZE_MODE_SUPPORT) && FSL_FEATURE_FLEXCAN_HAS_DOZE_MODE_SUPPORT)
-    /* Enable Doze Mode? */
-    mcrTemp = (config->enableDoze) ? mcrTemp | CAN_MCR_DOZE_MASK : mcrTemp & ~CAN_MCR_DOZE_MASK;
-#endif
-
-    /* Save MCR Configuation. */
-    base->MCR = mcrTemp;
-
-    /* Baud Rate Configuration.*/
-    FLEXCAN_SetBaudRate(base, sourceClock_Hz, config->baudRate);
-}
-
-void FLEXCAN_Deinit(CAN_Type *base)
-{
-    /* Reset all Register Contents. */
-    FLEXCAN_Reset(base);
-
-    /* Disable FlexCAN module. */
-    FLEXCAN_Enable(base, false);
-
-    /* Disable FlexCAN clock. */
-    CLOCK_DisableClock(s_flexcanClock[FLEXCAN_GetInstance(base)]);
-}
-
-void FLEXCAN_GetDefaultConfig(flexcan_config_t *config)
-{
-    /* Assertion. */
-    assert(config);
-
-    /* Initialize FlexCAN Module config struct with default value. */
-    config->clkSrc = kFLEXCAN_ClkSrcOsc;
-    config->baudRate = 125000U;
-    config->maxMbNum = 16;
-    config->enableLoopBack = false;
-    config->enableSelfWakeup = false;
-    config->enableIndividMask = false;
-#if (defined(FSL_FEATURE_FLEXCAN_HAS_DOZE_MODE_SUPPORT) && FSL_FEATURE_FLEXCAN_HAS_DOZE_MODE_SUPPORT)
-    config->enableDoze = false;
-#endif
-}
-
-void FLEXCAN_SetTimingConfig(CAN_Type *base, const flexcan_timing_config_t *config)
-{
-    /* Assertion. */
-    assert(config);
-
-    /* Enter Fraze Mode. */
-    FLEXCAN_EnterFrazeMode(base);
-
-    /* Cleaning previous Timing Setting. */
-    base->CTRL1 &= ~(CAN_CTRL1_PRESDIV_MASK | CAN_CTRL1_RJW_MASK | CAN_CTRL1_PSEG1_MASK | CAN_CTRL1_PSEG2_MASK |
-                     CAN_CTRL1_PROPSEG_MASK);
-
-    /* Updating Timing Setting according to configuration structure. */
-    base->CTRL1 |=
-        (CAN_CTRL1_PRESDIV(config->preDivider) | CAN_CTRL1_RJW(config->rJumpwidth) |
-         CAN_CTRL1_PSEG1(config->phaseSeg1) | CAN_CTRL1_PSEG2(config->phaseSeg2) | CAN_CTRL1_PROPSEG(config->propSeg));
-
-    /* Exit Fraze Mode. */
-    FLEXCAN_ExitFrazeMode(base);
-}
-
-void FlEXCAN_SetRxMbGlobalMask(CAN_Type *base, uint32_t mask)
-{
-    /* Enter Fraze Mode. */
-    FLEXCAN_EnterFrazeMode(base);
-
-    /* Setting Rx Message Buffer Global Mask value. */
-    base->RXMGMASK = mask;
-    base->RX14MASK = mask;
-    base->RX15MASK = mask;
-
-    /* Exit Fraze Mode. */
-    FLEXCAN_ExitFrazeMode(base);
-}
-
-void FlEXCAN_SetRxFifoGlobalMask(CAN_Type *base, uint32_t mask)
-{
-    /* Enter Fraze Mode. */
-    FLEXCAN_EnterFrazeMode(base);
-
-    /* Setting Rx FIFO Global Mask value. */
-    base->RXFGMASK = mask;
-
-    /* Exit Fraze Mode. */
-    FLEXCAN_ExitFrazeMode(base);
-}
-
-void FlEXCAN_SetRxIndividualMask(CAN_Type *base, uint8_t maskIdx, uint32_t mask)
-{
-    assert(maskIdx <= (base->MCR & CAN_MCR_MAXMB_MASK));
-
-    /* Enter Fraze Mode. */
-    FLEXCAN_EnterFrazeMode(base);
-
-    /* Setting Rx Individual Mask value. */
-    base->RXIMR[maskIdx] = mask;
-
-    /* Exit Fraze Mode. */
-    FLEXCAN_ExitFrazeMode(base);
-}
-
-void FLEXCAN_SetTxMbConfig(CAN_Type *base, uint8_t mbIdx, bool enable)
-{
-    /* Assertion. */
-    assert(mbIdx <= (base->MCR & CAN_MCR_MAXMB_MASK));
-
-    if (FLEXCAN_IsMbOccupied(base, mbIdx))
-    {
-        assert(false);
-    }
-
-    /* Inactivate Message Buffer. */
-    if (enable)
-    {
-        base->MB[mbIdx].CS = CAN_CS_CODE(kFLEXCAN_TxMbInactive);
-    }
-    else
-    {
-        base->MB[mbIdx].CS = 0;
-    }
-
-    /* Clean Message Buffer content. */
-    base->MB[mbIdx].ID = 0x0;
-    base->MB[mbIdx].WORD0 = 0x0;
-    base->MB[mbIdx].WORD1 = 0x0;
-}
-
-void FLEXCAN_SetRxMbConfig(CAN_Type *base, uint8_t mbIdx, const flexcan_rx_mb_config_t *config, bool enable)
-{
-    /* Assertion. */
-    assert(mbIdx <= (base->MCR & CAN_MCR_MAXMB_MASK));
-    assert(((config) || (false == enable)));
-
-    uint32_t cs_temp = 0;
-
-    if (FLEXCAN_IsMbOccupied(base, mbIdx))
-    {
-        assert(false);
-    }
-
-    /* Inactivate Message Buffer. */
-    base->MB[mbIdx].CS = 0;
-
-    /* Clean Message Buffer content. */
-    base->MB[mbIdx].ID = 0x0;
-    base->MB[mbIdx].WORD0 = 0x0;
-    base->MB[mbIdx].WORD1 = 0x0;
-
-    if (enable)
-    {
-        /* Setup Message Buffer ID. */
-        base->MB[mbIdx].ID = config->id;
-
-        /* Setup Message Buffer format. */
-        if (kFLEXCAN_FrameFormatExtend == config->format)
-        {
-            cs_temp |= CAN_CS_IDE_MASK;
-        }
-
-        /* Setup Message Buffer type. */
-        if (kFLEXCAN_FrameTypeRemote == config->type)
-        {
-            cs_temp |= CAN_CS_RTR_MASK;
-        }
-
-        /* Activate Rx Message Buffer. */
-        cs_temp |= CAN_CS_CODE(kFLEXCAN_RxMbEmpty);
-        base->MB[mbIdx].CS = cs_temp;
-    }
-}
-
-void FlEXCAN_SetRxFifoConfig(CAN_Type *base, const flexcan_rx_fifo_config_t *config, bool enable)
-{
-    /* Assertion. */
-    assert((config) || (false == enable));
-
-    volatile uint32_t *idFilterRegion = (volatile uint32_t *)(&base->MB[6].CS);
-    uint8_t setup_mb, i, rffn = 0;
-
-    /* Enter Fraze Mode. */
-    FLEXCAN_EnterFrazeMode(base);
-
-    if (enable)
-    {
-        assert(config->idFilterNum <= 128);
-
-        /* Get the setup_mb value. */
-        setup_mb = (base->MCR & CAN_MCR_MAXMB_MASK) >> CAN_MCR_MAXMB_SHIFT;
-        setup_mb = (setup_mb < FSL_FEATURE_FLEXCAN_HAS_MESSAGE_BUFFER_MAX_NUMBERn(base)) ?
-                       setup_mb :
-                       FSL_FEATURE_FLEXCAN_HAS_MESSAGE_BUFFER_MAX_NUMBERn(base);
-
-        /* Determine RFFN value. */
-        for (i = 0; i <= 0xF; i++)
-        {
-            if ((8 * (i + 1)) >= config->idFilterNum)
-            {
-                rffn = i;
-                assert(((setup_mb - 8) - (2 * rffn)) > 0);
-
-                base->CTRL2 = (base->CTRL2 & ~CAN_CTRL2_RFFN_MASK) | CAN_CTRL2_RFFN(rffn);
-                break;
-            }
-        }
-    }
-    else
-    {
-        rffn = (base->CTRL2 & CAN_CTRL2_RFFN_MASK) >> CAN_CTRL2_RFFN_SHIFT;
-    }
-
-    /* Clean ID filter table occuyied Message Buffer Region. */
-    rffn = (rffn + 1) * 8;
-    for (i = 0; i < rffn; i++)
-    {
-        idFilterRegion[i] = 0x0;
-    }
-
-    if (enable)
-    {
-        /* Disable unused Rx FIFO Filter. */
-        for (i = config->idFilterNum; i < rffn; i++)
-        {
-            idFilterRegion[i] = 0xFFFFFFFFU;
-        }
-
-        /* Copy ID filter table to Message Buffer Region. */
-        for (i = 0; i < config->idFilterNum; i++)
-        {
-            idFilterRegion[i] = config->idFilterTable[i];
-        }
-
-        /* Setup ID Fitlter Type. */
-        switch (config->idFilterType)
-        {
-            case kFLEXCAN_RxFifoFilterTypeA:
-                base->MCR = (base->MCR & ~CAN_MCR_IDAM_MASK) | CAN_MCR_IDAM(0x0);
-                break;
-            case kFLEXCAN_RxFifoFilterTypeB:
-                base->MCR = (base->MCR & ~CAN_MCR_IDAM_MASK) | CAN_MCR_IDAM(0x1);
-                break;
-            case kFLEXCAN_RxFifoFilterTypeC:
-                base->MCR = (base->MCR & ~CAN_MCR_IDAM_MASK) | CAN_MCR_IDAM(0x2);
-                break;
-            case kFLEXCAN_RxFifoFilterTypeD:
-                /* All frames rejected. */
-                base->MCR = (base->MCR & ~CAN_MCR_IDAM_MASK) | CAN_MCR_IDAM(0x3);
-                break;
-            default:
-                break;
-        }
-
-        /* Setting Message Reception Priority. */
-        base->CTRL2 = (config->priority == kFLEXCAN_RxFifoPrioHigh) ? base->CTRL2 & ~CAN_CTRL2_MRP_MASK :
-                                                                      base->CTRL2 | CAN_CTRL2_MRP_MASK;
-
-        /* Enable Rx Message FIFO. */
-        base->MCR |= CAN_MCR_RFEN_MASK;
-    }
-    else
-    {
-        /* Disable Rx Message FIFO. */
-        base->MCR &= ~CAN_MCR_RFEN_MASK;
-
-        /* Clean MB0 ~ MB5. */
-        FLEXCAN_SetRxMbConfig(base, 0, NULL, false);
-        FLEXCAN_SetRxMbConfig(base, 1, NULL, false);
-        FLEXCAN_SetRxMbConfig(base, 2, NULL, false);
-        FLEXCAN_SetRxMbConfig(base, 3, NULL, false);
-        FLEXCAN_SetRxMbConfig(base, 4, NULL, false);
-        FLEXCAN_SetRxMbConfig(base, 5, NULL, false);
-    }
-
-    /* Exit Fraze Mode. */
-    FLEXCAN_ExitFrazeMode(base);
-}
-
-#if (defined(FSL_FEATURE_FLEXCAN_HAS_RX_FIFO_DMA) && FSL_FEATURE_FLEXCAN_HAS_RX_FIFO_DMA)
-void FLEXCAN_EnableRxFifoDMA(CAN_Type *base, bool enable)
-{
-    if (enable)
-    {
-        /* Enter Fraze Mode. */
-        FLEXCAN_EnterFrazeMode(base);
-
-        /* Enable FlexCAN DMA. */
-        base->MCR |= CAN_MCR_DMA_MASK;
-
-        /* Exit Fraze Mode. */
-        FLEXCAN_ExitFrazeMode(base);
-    }
-    else
-    {
-        /* Enter Fraze Mode. */
-        FLEXCAN_EnterFrazeMode(base);
-
-        /* Disable FlexCAN DMA. */
-        base->MCR &= ~CAN_MCR_DMA_MASK;
-
-        /* Exit Fraze Mode. */
-        FLEXCAN_ExitFrazeMode(base);
-    }
-}
-#endif /* FSL_FEATURE_FLEXCAN_HAS_RX_FIFO_DMA */
-
-status_t FLEXCAN_WriteTxMb(CAN_Type *base, uint8_t mbIdx, const flexcan_frame_t *txFrame)
-{
-    /* Assertion. */
-    assert(mbIdx <= (base->MCR & CAN_MCR_MAXMB_MASK));
-    assert(txFrame);
-    assert(txFrame->length <= 8);
-
-    uint32_t cs_temp = 0;
-
-    if (FLEXCAN_IsMbOccupied(base, mbIdx))
-    {
-        assert(false);
-    }
-
-    /* Check if Message Buffer is available. */
-    if (CAN_CS_CODE(kFLEXCAN_TxMbDataOrRemote) != (base->MB[mbIdx].CS & CAN_CS_CODE_MASK))
-    {
-        /* Inactive Tx Message Buffer. */
-        base->MB[mbIdx].CS = (base->MB[mbIdx].CS & ~CAN_CS_CODE_MASK) | CAN_CS_CODE(kFLEXCAN_TxMbInactive);
-
-        /* Fill Message ID field. */
-        base->MB[mbIdx].ID = txFrame->id;
-
-        /* Fill Message Format field. */
-        if (kFLEXCAN_FrameFormatExtend == txFrame->format)
-        {
-            cs_temp |= CAN_CS_SRR_MASK | CAN_CS_IDE_MASK;
-        }
-
-        /* Fill Message Type field. */
-        if (kFLEXCAN_FrameTypeRemote == txFrame->type)
-        {
-            cs_temp |= CAN_CS_RTR_MASK;
-        }
-
-        cs_temp |= CAN_CS_CODE(kFLEXCAN_TxMbDataOrRemote) | CAN_CS_DLC(txFrame->length);
-
-        /* Load Message Payload. */
-        base->MB[mbIdx].WORD0 = txFrame->dataWord0;
-        base->MB[mbIdx].WORD1 = txFrame->dataWord1;
-
-        /* Activate Tx Message Buffer. */
-        base->MB[mbIdx].CS = cs_temp;
-
-        return kStatus_Success;
-    }
-    else
-    {
-        /* Tx Message Buffer is activated, return immediately. */
-        return kStatus_Fail;
-    }
-}
-
-status_t FLEXCAN_ReadRxMb(CAN_Type *base, uint8_t mbIdx, flexcan_frame_t *rxFrame)
-{
-    /* Assertion. */
-    assert(mbIdx <= (base->MCR & CAN_MCR_MAXMB_MASK));
-    assert(rxFrame);
-
-    uint32_t cs_temp;
-    uint8_t rx_code;
-
-    if (FLEXCAN_IsMbOccupied(base, mbIdx))
-    {
-        assert(false);
-    }
-
-    /* Read CS field of Rx Message Buffer to lock Message Buffer. */
-    cs_temp = base->MB[mbIdx].CS;
-    /* Get Rx Message Buffer Code field. */
-    rx_code = (cs_temp & CAN_CS_CODE_MASK) >> CAN_CS_CODE_SHIFT;
-
-    /* Check to see if Rx Message Buffer is full. */
-    if ((kFLEXCAN_RxMbFull == rx_code) || (kFLEXCAN_RxMbOverrun == rx_code))
-    {
-        /* Store Message ID. */
-        rxFrame->id = base->MB[mbIdx].ID & (CAN_ID_EXT_MASK | CAN_ID_STD_MASK);
-
-        /* Get the message ID and format. */
-        rxFrame->format = (cs_temp & CAN_CS_IDE_MASK) ? kFLEXCAN_FrameFormatExtend : kFLEXCAN_FrameFormatStandard;
-
-        /* Get the message type. */
-        rxFrame->type = (cs_temp & CAN_CS_RTR_MASK) ? kFLEXCAN_FrameTypeRemote : kFLEXCAN_FrameTypeData;
-
-        /* Get the message length. */
-        rxFrame->length = (cs_temp & CAN_CS_DLC_MASK) >> CAN_CS_DLC_SHIFT;
-
-        /* Store Message Payload. */
-        rxFrame->dataWord0 = base->MB[mbIdx].WORD0;
-        rxFrame->dataWord1 = base->MB[mbIdx].WORD1;
-
-        /* Read free-running timer to unlock Rx Message Buffer. */
-        (void)base->TIMER;
-
-        if (kFLEXCAN_RxMbFull == rx_code)
-        {
-            return kStatus_Success;
-        }
-        else
-        {
-            return kStatus_FLEXCAN_RxOverflow;
-        }
-    }
-    else
-    {
-        /* Read free-running timer to unlock Rx Message Buffer. */
-        (void)base->TIMER;
-
-        return kStatus_Fail;
-    }
-}
-
-status_t FlEXCAN_ReadRxFifo(CAN_Type *base, flexcan_frame_t *rxFrame)
-{
-    /* Assertion. */
-    assert(rxFrame);
-
-    uint32_t cs_temp;
-
-    /* Check if Rx FIFO is Enabled. */
-    if (base->MCR & CAN_MCR_RFEN_MASK)
-    {
-        /* Read CS field of Rx Message Buffer to lock Message Buffer. */
-        cs_temp = base->MB[0].CS;
-
-        /* Read data from Rx FIFO output port. */
-        /* Store Message ID. */
-        rxFrame->id = base->MB[0].ID & (CAN_ID_EXT_MASK | CAN_ID_STD_MASK);
-
-        /* Get the message ID and format. */
-        rxFrame->format = (cs_temp & CAN_CS_IDE_MASK) ? kFLEXCAN_FrameFormatExtend : kFLEXCAN_FrameFormatStandard;
-
-        /* Get the message type. */
-        rxFrame->type = (cs_temp & CAN_CS_RTR_MASK) ? kFLEXCAN_FrameTypeRemote : kFLEXCAN_FrameTypeData;
-
-        /* Get the message length. */
-        rxFrame->length = (cs_temp & CAN_CS_DLC_MASK) >> CAN_CS_DLC_SHIFT;
-
-        /* Store Message Payload. */
-        rxFrame->dataWord0 = base->MB[0].WORD0;
-        rxFrame->dataWord1 = base->MB[0].WORD1;
-
-        /* Store ID Filter Hit Index. */
-        rxFrame->idhit = (uint8_t)(base->RXFIR & CAN_RXFIR_IDHIT_MASK);
-
-        /* Read free-running timer to unlock Rx Message Buffer. */
-        (void)base->TIMER;
-
-        return kStatus_Success;
-    }
-    else
-    {
-        return kStatus_Fail;
-    }
-}
-
-status_t FlEXCAN_TransferSendBlocking(CAN_Type *base, uint8_t mbIdx, flexcan_frame_t *txFrame)
-{
-    /* Write Tx Message Buffer to initiate a data sending. */
-    if (kStatus_Success == FLEXCAN_WriteTxMb(base, mbIdx, txFrame))
-    {
-        /* Wait until CAN Message send out. */
-        while (!FLEXCAN_GetMbStatusFlags(base, 1 << mbIdx))
-        {
-        }
-
-        /* Clean Tx Message Buffer Flag. */
-        FLEXCAN_ClearMbStatusFlags(base, 1 << mbIdx);
-
-        return kStatus_Success;
-    }
-    else
-    {
-        return kStatus_Fail;
-    }
-}
-
-status_t FlEXCAN_TransferReceiveBlocking(CAN_Type *base, uint8_t mbIdx, flexcan_frame_t *rxFrame)
-{
-    /* Wait until Rx Message Buffer non-empty. */
-    while (!FLEXCAN_GetMbStatusFlags(base, 1 << mbIdx))
-    {
-    }
-
-    /* Clean Rx Message Buffer Flag. */
-    FLEXCAN_ClearMbStatusFlags(base, 1 << mbIdx);
-
-    /* Read Received CAN Message. */
-    return FLEXCAN_ReadRxMb(base, mbIdx, rxFrame);
-}
-
-status_t FlEXCAN_TransferReceiveFifoBlocking(CAN_Type *base, flexcan_frame_t *rxFrame)
-{
-    status_t rxFifoStatus;
-
-    /* Wait until Rx FIFO non-empty. */
-    while (!FLEXCAN_GetMbStatusFlags(base, kFLEXCAN_RxFifoFrameAvlFlag))
-    {
-    }
-
-    /*  */
-    rxFifoStatus = FlEXCAN_ReadRxFifo(base, rxFrame);
-
-    /* Clean Rx Fifo available flag. */
-    FLEXCAN_ClearMbStatusFlags(base, kFLEXCAN_RxFifoFrameAvlFlag);
-
-    return rxFifoStatus;
-}
-
-void FLEXCAN_TransferCreateHandle(CAN_Type *base,
-                                  flexcan_handle_t *handle,
-                                  flexcan_transfer_callback_t callback,
-                                  void *userData)
-{
-    assert(handle);
-
-    uint8_t instance;
-
-    /* Clean FlexCAN transfer handle. */
-    memset(handle, 0, sizeof(*handle));
-
-    /* Get instance from peripheral base address. */
-    instance = FLEXCAN_GetInstance(base);
-
-    /* Save the context in global variables to support the double weak mechanism. */
-    s_flexcanHandle[instance] = handle;
-
-    /* Register Callback function. */
-    handle->callback = callback;
-    handle->userData = userData;
-
-    /* We Enable Error & Status interrupt here, because this interrupt just
-     * report current status of FlexCAN module through Callback function.
-     * It is insignificance without a available callback function.
-     */
-    if (handle->callback != NULL)
-    {
-        FLEXCAN_EnableInterrupts(base, kFLEXCAN_BusOffInterruptEnable | kFLEXCAN_ErrorInterruptEnable |
-                                           kFLEXCAN_RxWarningInterruptEnable | kFLEXCAN_TxWarningInterruptEnable |
-                                           kFLEXCAN_WakeUpInterruptEnable);
-    }
-    else
-    {
-        FLEXCAN_DisableInterrupts(base, kFLEXCAN_BusOffInterruptEnable | kFLEXCAN_ErrorInterruptEnable |
-                                            kFLEXCAN_RxWarningInterruptEnable | kFLEXCAN_TxWarningInterruptEnable |
-                                            kFLEXCAN_WakeUpInterruptEnable);
-    }
-
-    /* Enable interrupts in NVIC. */
-    EnableIRQ((IRQn_Type)(s_flexcanRxWarningIRQ[instance]));
-    EnableIRQ((IRQn_Type)(s_flexcanTxWarningIRQ[instance]));
-    EnableIRQ((IRQn_Type)(s_flexcanWakeUpIRQ[instance]));
-    EnableIRQ((IRQn_Type)(s_flexcanErrorIRQ[instance]));
-    EnableIRQ((IRQn_Type)(s_flexcanBusOffIRQ[instance]));
-    EnableIRQ((IRQn_Type)(s_flexcanMbIRQ[instance]));
-}
-
-status_t FLEXCAN_TransferSendNonBlocking(CAN_Type *base, flexcan_handle_t *handle, flexcan_mb_transfer_t *xfer)
-{
-    /* Assertion. */
-    assert(handle);
-    assert(xfer);
-    assert(xfer->mbIdx <= (base->MCR & CAN_MCR_MAXMB_MASK));
-
-    if (FLEXCAN_IsMbOccupied(base, xfer->mbIdx))
-    {
-        assert(false);
-    }
-
-    /* Check if Message Buffer is idle. */
-    if (kFLEXCAN_StateIdle == handle->mbState[xfer->mbIdx])
-    {
-        /* Distinguish transmit type. */
-        if (kFLEXCAN_FrameTypeRemote == xfer->frame->type)
-        {
-            handle->mbState[xfer->mbIdx] = kFLEXCAN_StateTxRemote;
-
-            /* Register user Frame buffer to receive remote Frame. */
-            handle->mbFrameBuf[xfer->mbIdx] = xfer->frame;
-        }
-        else
-        {
-            handle->mbState[xfer->mbIdx] = kFLEXCAN_StateTxData;
-        }
-
-        if (kStatus_Success == FLEXCAN_WriteTxMb(base, xfer->mbIdx, xfer->frame))
-        {
-            /* Enable Message Buffer Interrupt. */
-            FLEXCAN_EnableMbInterrupts(base, 1 << xfer->mbIdx);
-
-            return kStatus_Success;
-        }
-        else
-        {
-            handle->mbState[xfer->mbIdx] = kFLEXCAN_StateIdle;
-            return kStatus_Fail;
-        }
-    }
-    else
-    {
-        return kStatus_FLEXCAN_TxBusy;
-    }
-}
-
-status_t FLEXCAN_TransferReceiveNonBlocking(CAN_Type *base, flexcan_handle_t *handle, flexcan_mb_transfer_t *xfer)
-{
-    /* Assertion. */
-    assert(handle);
-    assert(xfer);
-    assert(xfer->mbIdx <= (base->MCR & CAN_MCR_MAXMB_MASK));
-
-    if (FLEXCAN_IsMbOccupied(base, xfer->mbIdx))
-    {
-        assert(false);
-    }
-
-    /* Check if Message Buffer is idle. */
-    if (kFLEXCAN_StateIdle == handle->mbState[xfer->mbIdx])
-    {
-        handle->mbState[xfer->mbIdx] = kFLEXCAN_StateRxData;
-
-        /* Register Message Buffer. */
-        handle->mbFrameBuf[xfer->mbIdx] = xfer->frame;
-
-        /* Enable Message Buffer Interrupt. */
-        FLEXCAN_EnableMbInterrupts(base, 1 << xfer->mbIdx);
-
-        return kStatus_Success;
-    }
-    else
-    {
-        return kStatus_FLEXCAN_RxBusy;
-    }
-}
-
-status_t FLEXCAN_TransferReceiveFifoNonBlocking(CAN_Type *base, flexcan_handle_t *handle, flexcan_fifo_transfer_t *xfer)
-{
-    /* Assertion. */
-    assert(handle);
-    assert(xfer);
-
-    /* Check if Message Buffer is idle. */
-    if (kFLEXCAN_StateIdle == handle->rxFifoState)
-    {
-        handle->rxFifoState = kFLEXCAN_StateRxFifo;
-
-        /* Register Message Buffer. */
-        handle->rxFifoFrameBuf = xfer->frame;
-
-        /* Enable Message Buffer Interrupt. */
-        FLEXCAN_EnableMbInterrupts(
-            base, kFLEXCAN_RxFifoOverflowFlag | kFLEXCAN_RxFifoWarningFlag | kFLEXCAN_RxFifoFrameAvlFlag);
-
-        return kStatus_Success;
-    }
-    else
-    {
-        return kStatus_FLEXCAN_RxFifoBusy;
-    }
-}
-
-void FLEXCAN_TransferAbortSend(CAN_Type *base, flexcan_handle_t *handle, uint8_t mbIdx)
-{
-    /* Assertion. */
-    assert(handle);
-    assert(mbIdx <= (base->MCR & CAN_MCR_MAXMB_MASK));
-
-    if (FLEXCAN_IsMbOccupied(base, mbIdx))
-    {
-        assert(false);
-    }
-
-    /* Disable Message Buffer Interrupt. */
-    FLEXCAN_DisableMbInterrupts(base, 1 << mbIdx);
-
-    /* Un-register handle. */
-    handle->mbFrameBuf[mbIdx] = 0x0;
-
-    /* Clean Message Buffer. */
-    FLEXCAN_SetTxMbConfig(base, mbIdx, true);
-
-    handle->mbState[mbIdx] = kFLEXCAN_StateIdle;
-}
-
-void FLEXCAN_TransferAbortReceive(CAN_Type *base, flexcan_handle_t *handle, uint8_t mbIdx)
-{
-    /* Assertion. */
-    assert(handle);
-    assert(mbIdx <= (base->MCR & CAN_MCR_MAXMB_MASK));
-
-    if (FLEXCAN_IsMbOccupied(base, mbIdx))
-    {
-        assert(false);
-    }
-
-    /* Disable Message Buffer Interrupt. */
-    FLEXCAN_DisableMbInterrupts(base, 1 << mbIdx);
-
-    /* Un-register handle. */
-    handle->mbFrameBuf[mbIdx] = 0x0;
-    handle->mbState[mbIdx] = kFLEXCAN_StateIdle;
-}
-
-void FLEXCAN_TransferAbortReceiveFifo(CAN_Type *base, flexcan_handle_t *handle)
-{
-    /* Assertion. */
-    assert(handle);
-
-    /* Check if Rx FIFO is enabled. */
-    if (base->MCR & CAN_MCR_RFEN_MASK)
-    {
-        /* Disable Rx Message FIFO Interrupts. */
-        FLEXCAN_DisableMbInterrupts(
-            base, kFLEXCAN_RxFifoOverflowFlag | kFLEXCAN_RxFifoWarningFlag | kFLEXCAN_RxFifoFrameAvlFlag);
-
-        /* Un-register handle. */
-        handle->rxFifoFrameBuf = 0x0;
-    }
-
-    handle->rxFifoState = kFLEXCAN_StateIdle;
-}
-
-void FLEXCAN_TransferHandleIRQ(CAN_Type *base, flexcan_handle_t *handle)
-{
-    /* Assertion. */
-    assert(handle);
-
-    status_t status = kStatus_FLEXCAN_UnHandled;
-    uint32_t result;
-
-    /* Store Current FlexCAN Module Error and Status. */
-    result = base->ESR1;
-
-    do
-    {
-        /* Solve FlexCAN Error and Status Interrupt. */
-        if (result & (kFLEXCAN_TxWarningIntFlag | kFLEXCAN_RxWarningIntFlag | kFLEXCAN_BusOffIntFlag |
-                      kFLEXCAN_ErrorIntFlag | kFLEXCAN_WakeUpIntFlag))
-        {
-            status = kStatus_FLEXCAN_ErrorStatus;
-
-            /* Clear FlexCAN Error and Status Interrupt. */
-            FLEXCAN_ClearStatusFlags(base, kFLEXCAN_TxWarningIntFlag | kFLEXCAN_RxWarningIntFlag |
-                                               kFLEXCAN_BusOffIntFlag | kFLEXCAN_ErrorIntFlag | kFLEXCAN_WakeUpIntFlag);
-        }
-        /* Solve FlexCAN Rx FIFO & Message Buffer Interrupt. */
-        else
-        {
-            /* For this implementation, we solve the Message with lowest MB index first. */
-            for (result = 0; result < FSL_FEATURE_FLEXCAN_HAS_MESSAGE_BUFFER_MAX_NUMBERn(base); result++)
-            {
-                /* Get the lowest unhandled Message Buffer */
-                if ((FLEXCAN_GetMbStatusFlags(base, 1 << result)) && (FLEXCAN_IsMbIntEnabled(base, result)))
-                {
-                    break;
-                }
-            }
-
-            /* Does not find Message to deal with. */
-            if (result == FSL_FEATURE_FLEXCAN_HAS_MESSAGE_BUFFER_MAX_NUMBERn(base))
-            {
-                break;
-            }
-
-            /* Solve Rx FIFO interrupt. */
-            if ((kFLEXCAN_StateIdle != handle->rxFifoState) && ((1 << result) <= kFLEXCAN_RxFifoOverflowFlag))
-            {
-                switch (1 << result)
-                {
-                    case kFLEXCAN_RxFifoOverflowFlag:
-                        status = kStatus_FLEXCAN_RxFifoOverflow;
-                        break;
-
-                    case kFLEXCAN_RxFifoWarningFlag:
-                        status = kStatus_FLEXCAN_RxFifoWarning;
-                        break;
-
-                    case kFLEXCAN_RxFifoFrameAvlFlag:
-                        status = FlEXCAN_ReadRxFifo(base, handle->rxFifoFrameBuf);
-                        if (kStatus_Success == status)
-                        {
-                            status = kStatus_FLEXCAN_RxFifoIdle;
-                        }
-                        FLEXCAN_TransferAbortReceiveFifo(base, handle);
-                        break;
-
-                    default:
-                        status = kStatus_FLEXCAN_UnHandled;
-                        break;
-                }
-            }
-            else
-            {
-                /* Get current State of Message Buffer. */
-                switch (handle->mbState[result])
-                {
-                    /* Solve Rx Data Frame. */
-                    case kFLEXCAN_StateRxData:
-                        status = FLEXCAN_ReadRxMb(base, result, handle->mbFrameBuf[result]);
-                        if (kStatus_Success == status)
-                        {
-                            status = kStatus_FLEXCAN_RxIdle;
-                        }
-                        FLEXCAN_TransferAbortReceive(base, handle, result);
-                        break;
-
-                    /* Solve Rx Remote Frame. */
-                    case kFLEXCAN_StateRxRemote:
-                        status = FLEXCAN_ReadRxMb(base, result, handle->mbFrameBuf[result]);
-                        if (kStatus_Success == status)
-                        {
-                            status = kStatus_FLEXCAN_RxIdle;
-                        }
-                        FLEXCAN_TransferAbortReceive(base, handle, result);
-                        break;
-
-                    /* Solve Tx Data Frame. */
-                    case kFLEXCAN_StateTxData:
-                        status = kStatus_FLEXCAN_TxIdle;
-                        FLEXCAN_TransferAbortSend(base, handle, result);
-                        break;
-
-                    /* Solve Tx Remote Frame. */
-                    case kFLEXCAN_StateTxRemote:
-                        handle->mbState[result] = kFLEXCAN_StateRxRemote;
-                        status = kStatus_FLEXCAN_TxSwitchToRx;
-                        break;
-
-                    default:
-                        status = kStatus_FLEXCAN_UnHandled;
-                        break;
-                }
-            }
-
-            /* Clear resolved Message Buffer IRQ. */
-            FLEXCAN_ClearMbStatusFlags(base, 1 << result);
-        }
-
-        /* Calling Callback Function if has one. */
-        if (handle->callback != NULL)
-        {
-            handle->callback(base, handle, status, result, handle->userData);
-        }
-
-        /* Reset return status */
-        status = kStatus_FLEXCAN_UnHandled;
-
-        /* Store Current FlexCAN Module Error and Status. */
-        result = base->ESR1;
-    }
-#if (defined(FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER)) && (FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER > 0)
-    while ((0 != FLEXCAN_GetMbStatusFlags(base, 0xFFFFFFFFFFFFFFFFU)) ||
-           (0 != (result & (kFLEXCAN_TxWarningIntFlag | kFLEXCAN_RxWarningIntFlag | kFLEXCAN_BusOffIntFlag |
-                            kFLEXCAN_ErrorIntFlag | kFLEXCAN_WakeUpIntFlag))));
-#else
-        while ((0 != FLEXCAN_GetMbStatusFlags(base, 0xFFFFFFFFU)) ||
-               (0 != (result & (kFLEXCAN_TxWarningIntFlag | kFLEXCAN_RxWarningIntFlag | kFLEXCAN_BusOffIntFlag |
-                                kFLEXCAN_ErrorIntFlag | kFLEXCAN_WakeUpIntFlag))));
-#endif
-}
-
-#if (FSL_FEATURE_SOC_FLEXCAN_COUNT > 0)
-void CAN0_DriverIRQHandler(void)
-{
-    assert(s_flexcanHandle[0]);
-
-    FLEXCAN_TransferHandleIRQ(CAN0, s_flexcanHandle[0]);
-}
-#endif
-
-#if (FSL_FEATURE_SOC_FLEXCAN_COUNT > 1)
-void CAN1_DriverIRQHandler(void)
-{
-    assert(s_flexcanHandle[1]);
-
-    FLEXCAN_TransferHandleIRQ(CAN1, s_flexcanHandle[1]);
-}
-#endif
-
-#if (FSL_FEATURE_SOC_FLEXCAN_COUNT > 2)
-void CAN2_DriverIRQHandler(void)
-{
-    assert(s_flexcanHandle[2]);
-
-    FLEXCAN_TransferHandleIRQ(CAN2, s_flexcanHandle[2]);
-}
-#endif
-
-#if (FSL_FEATURE_SOC_FLEXCAN_COUNT > 3)
-void CAN3_DriverIRQHandler(void)
-{
-    assert(s_flexcanHandle[3]);
-
-    FLEXCAN_TransferHandleIRQ(CAN3, s_flexcanHandle[3]);
-}
-#endif
-
-#if (FSL_FEATURE_SOC_FLEXCAN_COUNT > 4)
-void CAN4_DriverIRQHandler(void)
-{
-    assert(s_flexcanHandle[4]);
-
-    FLEXCAN_TransferHandleIRQ(CAN4, s_flexcanHandle[4]);
-}
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_flexcan.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1053 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_FLEXCAN_H_
-#define _FSL_FLEXCAN_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup flexcan_driver
- * @{
- */
-
-/*! @file*/
-
-/******************************************************************************
- * Definitions
- *****************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief FlexCAN driver version 2.1.0. */
-#define FLEXCAN_DRIVER_VERSION (MAKE_VERSION(2, 1, 0))
-/*@}*/
-
-/*! @brief FlexCAN Frame ID helper macro. */
-#define FLEXCAN_ID_STD(id) \
-    (((uint32_t)(((uint32_t)(id)) << CAN_ID_STD_SHIFT)) & CAN_ID_STD_MASK) /*!< Standard Frame ID helper macro. */
-#define FLEXCAN_ID_EXT(id)                                \
-    (((uint32_t)(((uint32_t)(id)) << CAN_ID_EXT_SHIFT)) & \
-     (CAN_ID_EXT_MASK | CAN_ID_STD_MASK)) /*!< Extend Frame ID helper macro. */
-
-/*! @brief FlexCAN Rx Message Buffer Mask helper macro. */
-#define FLEXCAN_RX_MB_STD_MASK(id, rtr, ide)                                   \
-    (((uint32_t)((uint32_t)(rtr) << 31) | (uint32_t)((uint32_t)(ide) << 30)) | \
-     FLEXCAN_ID_STD(id)) /*!< Standard Rx Message Buffer Mask helper macro. */
-#define FLEXCAN_RX_MB_EXT_MASK(id, rtr, ide)                                   \
-    (((uint32_t)((uint32_t)(rtr) << 31) | (uint32_t)((uint32_t)(ide) << 30)) | \
-     FLEXCAN_ID_EXT(id)) /*!< Extend Rx Message Buffer Mask helper macro. */
-
-/*! @brief FlexCAN Rx FIFO Mask helper macro. */
-#define FLEXCAN_RX_FIFO_STD_MASK_TYPE_A(id, rtr, ide)                          \
-    (((uint32_t)((uint32_t)(rtr) << 31) | (uint32_t)((uint32_t)(ide) << 30)) | \
-     (FLEXCAN_ID_STD(id) << 1)) /*!< Standard Rx FIFO Mask helper macro Type A helper macro. */
-#define FLEXCAN_RX_FIFO_STD_MASK_TYPE_B_HIGH(id, rtr, ide)                     \
-    (((uint32_t)((uint32_t)(rtr) << 31) | (uint32_t)((uint32_t)(ide) << 30)) | \
-     (FLEXCAN_ID_STD(id) << 16)) /*!< Standard Rx FIFO Mask helper macro Type B upper part helper macro. */
-#define FLEXCAN_RX_FIFO_STD_MASK_TYPE_B_LOW(id, rtr, ide)                      \
-    (((uint32_t)((uint32_t)(rtr) << 15) | (uint32_t)((uint32_t)(ide) << 14)) | \
-     FLEXCAN_ID_STD(id)) /*!< Standard Rx FIFO Mask helper macro Type B lower part helper macro. */
-#define FLEXCAN_RX_FIFO_STD_MASK_TYPE_C_HIGH(id) \
-    ((FLEXCAN_ID_STD(id) & 0x7F8) << 21) /*!< Standard Rx FIFO Mask helper macro Type C upper part helper macro. */
-#define FLEXCAN_RX_FIFO_STD_MASK_TYPE_C_MID_HIGH(id)                                                                 \
-    ((FLEXCAN_ID_STD(id) & 0x7F8) << 13) /*!< Standard Rx FIFO Mask helper macro Type C mid-upper part helper macro. \
-                                                */
-#define FLEXCAN_RX_FIFO_STD_MASK_TYPE_C_MID_LOW(id) \
-    ((FLEXCAN_ID_STD(id) & 0x7F8) << 5) /*!< Standard Rx FIFO Mask helper macro Type C mid-lower part helper macro. */
-#define FLEXCAN_RX_FIFO_STD_MASK_TYPE_C_LOW(id) \
-    ((FLEXCAN_ID_STD(id) & 0x7F8) >> 3) /*!< Standard Rx FIFO Mask helper macro Type C lower part helper macro. */
-#define FLEXCAN_RX_FIFO_EXT_MASK_TYPE_A(id, rtr, ide)                          \
-    (((uint32_t)((uint32_t)(rtr) << 31) | (uint32_t)((uint32_t)(ide) << 30)) | \
-     (FLEXCAN_ID_EXT(id) << 1)) /*!< Extend Rx FIFO Mask helper macro Type A helper macro. */
-#define FLEXCAN_RX_FIFO_EXT_MASK_TYPE_B_HIGH(id, rtr, ide)                        \
-    (                                                                             \
-        ((uint32_t)((uint32_t)(rtr) << 31) | (uint32_t)((uint32_t)(ide) << 30)) | \
-        ((FLEXCAN_ID_EXT(id) & 0x1FFF8000)                                        \
-         << 1)) /*!< Extend Rx FIFO Mask helper macro Type B upper part helper macro. */
-#define FLEXCAN_RX_FIFO_EXT_MASK_TYPE_B_LOW(id, rtr, ide)                      \
-    (((uint32_t)((uint32_t)(rtr) << 15) | (uint32_t)((uint32_t)(ide) << 14)) | \
-     ((FLEXCAN_ID_EXT(id) & 0x1FFF8000) >>                                     \
-      15)) /*!< Extend Rx FIFO Mask helper macro Type B lower part helper macro. */
-#define FLEXCAN_RX_FIFO_EXT_MASK_TYPE_C_HIGH(id) \
-    ((FLEXCAN_ID_EXT(id) & 0x1FE00000) << 3) /*!< Extend Rx FIFO Mask helper macro Type C upper part helper macro. */
-#define FLEXCAN_RX_FIFO_EXT_MASK_TYPE_C_MID_HIGH(id) \
-    ((FLEXCAN_ID_EXT(id) & 0x1FE00000) >>            \
-     5) /*!< Extend Rx FIFO Mask helper macro Type C mid-upper part helper macro. */
-#define FLEXCAN_RX_FIFO_EXT_MASK_TYPE_C_MID_LOW(id) \
-    ((FLEXCAN_ID_EXT(id) & 0x1FE00000) >>           \
-     13) /*!< Extend Rx FIFO Mask helper macro Type C mid-lower part helper macro. */
-#define FLEXCAN_RX_FIFO_EXT_MASK_TYPE_C_LOW(id) \
-    ((FLEXCAN_ID_EXT(id) & 0x1FE00000) >> 21) /*!< Extend Rx FIFO Mask helper macro Type C lower part helper macro. */
-
-/*! @brief FlexCAN Rx FIFO Filter helper macro. */
-#define FLEXCAN_RX_FIFO_STD_FILTER_TYPE_A(id, rtr, ide) \
-    FLEXCAN_RX_FIFO_STD_MASK_TYPE_A(id, rtr, ide) /*!< Standard Rx FIFO Filter helper macro Type A helper macro. */
-#define FLEXCAN_RX_FIFO_STD_FILTER_TYPE_B_HIGH(id, rtr, ide) \
-    FLEXCAN_RX_FIFO_STD_MASK_TYPE_B_HIGH(                    \
-        id, rtr, ide) /*!< Standard Rx FIFO Filter helper macro Type B upper part helper macro. */
-#define FLEXCAN_RX_FIFO_STD_FILTER_TYPE_B_LOW(id, rtr, ide) \
-    FLEXCAN_RX_FIFO_STD_MASK_TYPE_B_LOW(                    \
-        id, rtr, ide) /*!< Standard Rx FIFO Filter helper macro Type B lower part helper macro. */
-#define FLEXCAN_RX_FIFO_STD_FILTER_TYPE_C_HIGH(id) \
-    FLEXCAN_RX_FIFO_STD_MASK_TYPE_C_HIGH(          \
-        id) /*!< Standard Rx FIFO Filter helper macro Type C upper part helper macro. */
-#define FLEXCAN_RX_FIFO_STD_FILTER_TYPE_C_MID_HIGH(id) \
-    FLEXCAN_RX_FIFO_STD_MASK_TYPE_C_MID_HIGH(          \
-        id) /*!< Standard Rx FIFO Filter helper macro Type C mid-upper part helper macro. */
-#define FLEXCAN_RX_FIFO_STD_FILTER_TYPE_C_MID_LOW(id) \
-    FLEXCAN_RX_FIFO_STD_MASK_TYPE_C_MID_LOW(          \
-        id) /*!< Standard Rx FIFO Filter helper macro Type C mid-lower part helper macro. */
-#define FLEXCAN_RX_FIFO_STD_FILTER_TYPE_C_LOW(id)                                                                     \
-    FLEXCAN_RX_FIFO_STD_MASK_TYPE_C_LOW(id) /*!< Standard Rx FIFO Filter helper macro Type C lower part helper macro. \
-                                               */
-#define FLEXCAN_RX_FIFO_EXT_FILTER_TYPE_A(id, rtr, ide) \
-    FLEXCAN_RX_FIFO_EXT_MASK_TYPE_A(id, rtr, ide) /*!< Extend Rx FIFO Filter helper macro Type A helper macro. */
-#define FLEXCAN_RX_FIFO_EXT_FILTER_TYPE_B_HIGH(id, rtr, ide) \
-    FLEXCAN_RX_FIFO_EXT_MASK_TYPE_B_HIGH(                    \
-        id, rtr, ide) /*!< Extend Rx FIFO Filter helper macro Type B upper part helper macro. */
-#define FLEXCAN_RX_FIFO_EXT_FILTER_TYPE_B_LOW(id, rtr, ide) \
-    FLEXCAN_RX_FIFO_EXT_MASK_TYPE_B_LOW(                    \
-        id, rtr, ide) /*!< Extend Rx FIFO Filter helper macro Type B lower part helper macro. */
-#define FLEXCAN_RX_FIFO_EXT_FILTER_TYPE_C_HIGH(id)                                                                   \
-    FLEXCAN_RX_FIFO_EXT_MASK_TYPE_C_HIGH(id) /*!< Extend Rx FIFO Filter helper macro Type C upper part helper macro. \
-                                                */
-#define FLEXCAN_RX_FIFO_EXT_FILTER_TYPE_C_MID_HIGH(id) \
-    FLEXCAN_RX_FIFO_EXT_MASK_TYPE_C_MID_HIGH(          \
-        id) /*!< Extend Rx FIFO Filter helper macro Type C mid-upper part helper macro. */
-#define FLEXCAN_RX_FIFO_EXT_FILTER_TYPE_C_MID_LOW(id) \
-    FLEXCAN_RX_FIFO_EXT_MASK_TYPE_C_MID_LOW(          \
-        id) /*!< Extend Rx FIFO Filter helper macro Type C mid-lower part helper macro. */
-#define FLEXCAN_RX_FIFO_EXT_FILTER_TYPE_C_LOW(id) \
-    FLEXCAN_RX_FIFO_EXT_MASK_TYPE_C_LOW(id) /*!< Extend Rx FIFO Filter helper macro Type C lower part helper macro. */
-
-/*! @brief FlexCAN transfer status. */
-enum _flexcan_status
-{
-    kStatus_FLEXCAN_TxBusy = MAKE_STATUS(kStatusGroup_FLEXCAN, 0), /*!< Tx Message Buffer is Busy. */
-    kStatus_FLEXCAN_TxIdle = MAKE_STATUS(kStatusGroup_FLEXCAN, 1), /*!< Tx Message Buffer is Idle. */
-    kStatus_FLEXCAN_TxSwitchToRx = MAKE_STATUS(
-        kStatusGroup_FLEXCAN, 2), /*!< Remote Message is send out and Message buffer changed to Receive one. */
-    kStatus_FLEXCAN_RxBusy = MAKE_STATUS(kStatusGroup_FLEXCAN, 3),         /*!< Rx Message Buffer is Busy. */
-    kStatus_FLEXCAN_RxIdle = MAKE_STATUS(kStatusGroup_FLEXCAN, 4),         /*!< Rx Message Buffer is Idle. */
-    kStatus_FLEXCAN_RxOverflow = MAKE_STATUS(kStatusGroup_FLEXCAN, 5),     /*!< Rx Message Buffer is Overflowed. */
-    kStatus_FLEXCAN_RxFifoBusy = MAKE_STATUS(kStatusGroup_FLEXCAN, 6),     /*!< Rx Message FIFO is Busy. */
-    kStatus_FLEXCAN_RxFifoIdle = MAKE_STATUS(kStatusGroup_FLEXCAN, 7),     /*!< Rx Message FIFO is Idle. */
-    kStatus_FLEXCAN_RxFifoOverflow = MAKE_STATUS(kStatusGroup_FLEXCAN, 8), /*!< Rx Message FIFO is overflowed. */
-    kStatus_FLEXCAN_RxFifoWarning = MAKE_STATUS(kStatusGroup_FLEXCAN, 0),  /*!< Rx Message FIFO is almost overflowed. */
-    kStatus_FLEXCAN_ErrorStatus = MAKE_STATUS(kStatusGroup_FLEXCAN, 10),   /*!< FlexCAN Module Error and Status. */
-    kStatus_FLEXCAN_UnHandled = MAKE_STATUS(kStatusGroup_FLEXCAN, 11),     /*!< UnHadled Interrupt asserted. */
-};
-
-/*! @brief FlexCAN frame format. */
-typedef enum _flexcan_frame_format
-{
-    kFLEXCAN_FrameFormatStandard = 0x0U, /*!< Standard frame format attribute. */
-    kFLEXCAN_FrameFormatExtend = 0x1U,   /*!< Extend frame format attribute. */
-} flexcan_frame_format_t;
-
-/*! @brief FlexCAN frame type. */
-typedef enum _flexcan_frame_type
-{
-    kFLEXCAN_FrameTypeData = 0x0U,   /*!< Data frame type attribute. */
-    kFLEXCAN_FrameTypeRemote = 0x1U, /*!< Remote frame type attribute. */
-} flexcan_frame_type_t;
-
-/*! @brief FlexCAN clock source. */
-typedef enum _flexcan_clock_source
-{
-    kFLEXCAN_ClkSrcOsc = 0x0U,  /*!< FlexCAN Protocol Engine clock from Oscillator. */
-    kFLEXCAN_ClkSrcPeri = 0x1U, /*!< FlexCAN Protocol Engine clock from Peripheral Clock. */
-} flexcan_clock_source_t;
-
-/*! @brief FlexCAN Rx Fifo Filter type. */
-typedef enum _flexcan_rx_fifo_filter_type
-{
-    kFLEXCAN_RxFifoFilterTypeA = 0x0U, /*!< One full ID (standard and extended) per ID Filter element. */
-    kFLEXCAN_RxFifoFilterTypeB =
-        0x1U, /*!< Two full standard IDs or two partial 14-bit ID slices per ID Filter Table element. */
-    kFLEXCAN_RxFifoFilterTypeC =
-        0x2U, /*!< Four partial 8-bit Standard or extended ID slices per ID Filter Table element. */
-    kFLEXCAN_RxFifoFilterTypeD = 0x3U, /*!< All frames rejected. */
-} flexcan_rx_fifo_filter_type_t;
-
-/*!
- * @brief FlexCAN Rx FIFO priority
- *
- * The matching process starts from the Rx MB(or Rx FIFO) with higher priority.
- * If no MB(or Rx FIFO filter) is satisfied, the matching process goes on with
- * the Rx FIFO(or Rx MB) with lower priority.
- */
-typedef enum _flexcan_rx_fifo_priority
-{
-    kFLEXCAN_RxFifoPrioLow = 0x0U,  /*!< Matching process start from Rx Message Buffer first*/
-    kFLEXCAN_RxFifoPrioHigh = 0x1U, /*!< Matching process start from Rx FIFO first*/
-} flexcan_rx_fifo_priority_t;
-
-/*!
- * @brief FlexCAN interrupt configuration structure, default settings all disabled.
- *
- * This structure contains the settings for all of the FlexCAN Module interrupt configurations.
- * Note: FlexCAN Message Buffers and Rx FIFO have their own interrupts.
- */
-enum _flexcan_interrupt_enable
-{
-    kFLEXCAN_BusOffInterruptEnable = CAN_CTRL1_BOFFMSK_MASK,    /*!< Bus Off interrupt. */
-    kFLEXCAN_ErrorInterruptEnable = CAN_CTRL1_ERRMSK_MASK,      /*!< Error interrupt. */
-    kFLEXCAN_RxWarningInterruptEnable = CAN_CTRL1_RWRNMSK_MASK, /*!< Rx Warning interrupt. */
-    kFLEXCAN_TxWarningInterruptEnable = CAN_CTRL1_TWRNMSK_MASK, /*!< Tx Warning interrupt. */
-    kFLEXCAN_WakeUpInterruptEnable = CAN_MCR_WAKMSK_MASK,       /*!< Wake Up interrupt. */
-};
-
-/*!
- * @brief FlexCAN status flags.
- *
- * This provides constants for the FlexCAN status flags for use in the FlexCAN functions.
- * Note: The CPU read action clears FlEXCAN_ErrorFlag, therefore user need to
- * read FlEXCAN_ErrorFlag and distinguish which error is occur using
- * @ref _flexcan_error_flags enumerations.
- */
-enum _flexcan_flags
-{
-    kFLEXCAN_SynchFlag = CAN_ESR1_SYNCH_MASK,              /*!< CAN Synchronization Status. */
-    kFLEXCAN_TxWarningIntFlag = CAN_ESR1_TWRNINT_MASK,     /*!< Tx Warning Interrupt Flag. */
-    kFLEXCAN_RxWarningIntFlag = CAN_ESR1_RWRNINT_MASK,     /*!< Rx Warning Interrupt Flag. */
-    kFLEXCAN_TxErrorWarningFlag = CAN_ESR1_TXWRN_MASK,     /*!< Tx Error Warning Status. */
-    kFLEXCAN_RxErrorWarningFlag = CAN_ESR1_RXWRN_MASK,     /*!< Rx Error Warning Status. */
-    kFLEXCAN_IdleFlag = CAN_ESR1_IDLE_MASK,                /*!< CAN IDLE Status Flag. */
-    kFLEXCAN_FaultConfinementFlag = CAN_ESR1_FLTCONF_MASK, /*!< Fault Confinement State Flag. */
-    kFLEXCAN_TransmittingFlag = CAN_ESR1_TX_MASK,          /*!< FlexCAN In Transmission Status. */
-    kFLEXCAN_ReceivingFlag = CAN_ESR1_RX_MASK,             /*!< FlexCAN In Reception Status. */
-    kFLEXCAN_BusOffIntFlag = CAN_ESR1_BOFFINT_MASK,        /*!< Bus Off Interrupt Flag. */
-    kFLEXCAN_ErrorIntFlag = CAN_ESR1_ERRINT_MASK,          /*!< Error Interrupt Flag. */
-    kFLEXCAN_WakeUpIntFlag = CAN_ESR1_WAKINT_MASK,         /*!< Wake-Up Interrupt Flag. */
-    kFLEXCAN_ErrorFlag = CAN_ESR1_BIT1ERR_MASK |           /*!< All FlexCAN Error Status. */
-                         CAN_ESR1_BIT0ERR_MASK |
-                         CAN_ESR1_ACKERR_MASK | CAN_ESR1_CRCERR_MASK | CAN_ESR1_FRMERR_MASK | CAN_ESR1_STFERR_MASK,
-};
-
-/*!
- * @brief FlexCAN error status flags.
- *
- * The FlexCAN Error Status enumerations is used to report current error of the FlexCAN bus.
- * This enumerations should be used with KFLEXCAN_ErrorFlag in @ref _flexcan_flags enumerations
- * to ditermine which error is generated.
- */
-enum _flexcan_error_flags
-{
-    kFLEXCAN_StuffingError = CAN_ESR1_STFERR_MASK, /*!< Stuffing Error. */
-    kFLEXCAN_FormError = CAN_ESR1_FRMERR_MASK,     /*!< Form Error. */
-    kFLEXCAN_CrcError = CAN_ESR1_CRCERR_MASK,      /*!< Cyclic Redundancy Check Error. */
-    kFLEXCAN_AckError = CAN_ESR1_ACKERR_MASK,      /*!< Received no ACK on transmission. */
-    kFLEXCAN_Bit0Error = CAN_ESR1_BIT0ERR_MASK,    /*!< Unable to send dominant bit. */
-    kFLEXCAN_Bit1Error = CAN_ESR1_BIT1ERR_MASK,    /*!< Unable to send recessive bit. */
-};
-
-/*!
- * @brief FlexCAN Rx FIFO status flags.
- *
- * The FlexCAN Rx FIFO Status enumerations are used to determine the status of the
- * Rx FIFO. Because Rx FIFO occupy the MB0 ~ MB7 (Rx Fifo filter also occupies
- * more Message Buffer space), Rx FIFO status flags are mapped to the corresponding
- * Message Buffer status flags.
- */
-enum _flexcan_rx_fifo_flags
-{
-    kFLEXCAN_RxFifoOverflowFlag = CAN_IFLAG1_BUF7I_MASK, /*!< Rx FIFO overflow flag. */
-    kFLEXCAN_RxFifoWarningFlag = CAN_IFLAG1_BUF6I_MASK,  /*!< Rx FIFO almost full flag. */
-    kFLEXCAN_RxFifoFrameAvlFlag = CAN_IFLAG1_BUF5I_MASK, /*!< Frames available in Rx FIFO flag. */
-};
-
-#if defined(__CC_ARM)
-#pragma anon_unions
-#endif
-/*! @brief FlexCAN message frame structure. */
-typedef struct _flexcan_frame
-{
-    struct
-    {
-        uint32_t timestamp : 16; /*!< FlexCAN internal Free-Running Counter Time Stamp. */
-        uint32_t length : 4;     /*!< CAN frame payload length in bytes(Range: 0~8). */
-        uint32_t type : 1;       /*!< CAN Frame Type(DATA or REMOTE). */
-        uint32_t format : 1;     /*!< CAN Frame Identifier(STD or EXT format). */
-        uint32_t reserve1 : 1;   /*!< Reserved for placeholder. */
-        uint32_t idhit : 9;      /*!< CAN Rx FIFO filter hit id(This value is only used in Rx FIFO receive mode). */
-    };
-    struct
-    {
-        uint32_t id : 29; /*!< CAN Frame Identifier, should be set using FLEXCAN_ID_EXT() or FLEXCAN_ID_STD() macro. */
-        uint32_t reserve2 : 3; /*!< Reserved for place holder. */
-    };
-    union
-    {
-        struct
-        {
-            uint32_t dataWord0; /*!< CAN Frame payload word0. */
-            uint32_t dataWord1; /*!< CAN Frame payload word1. */
-        };
-        struct
-        {
-            uint8_t dataByte3; /*!< CAN Frame payload byte3. */
-            uint8_t dataByte2; /*!< CAN Frame payload byte2. */
-            uint8_t dataByte1; /*!< CAN Frame payload byte1. */
-            uint8_t dataByte0; /*!< CAN Frame payload byte0. */
-            uint8_t dataByte7; /*!< CAN Frame payload byte7. */
-            uint8_t dataByte6; /*!< CAN Frame payload byte6. */
-            uint8_t dataByte5; /*!< CAN Frame payload byte5. */
-            uint8_t dataByte4; /*!< CAN Frame payload byte4. */
-        };
-    };
-} flexcan_frame_t;
-
-/*! @brief FlexCAN module configuration structure. */
-typedef struct _flexcan_config
-{
-    uint32_t baudRate;             /*!< FlexCAN baud rate in bps. */
-    flexcan_clock_source_t clkSrc; /*!< Clock source for FlexCAN Protocol Engine. */
-    uint8_t maxMbNum;              /*!< The maximum number of Message Buffers used by user. */
-    bool enableLoopBack;           /*!< Enable or Disable Loop Back Self Test Mode. */
-    bool enableSelfWakeup;         /*!< Enable or Disable Self Wakeup Mode. */
-    bool enableIndividMask;        /*!< Enable or Disable Rx Individual Mask. */
-#if (defined(FSL_FEATURE_FLEXCAN_HAS_DOZE_MODE_SUPPORT) && FSL_FEATURE_FLEXCAN_HAS_DOZE_MODE_SUPPORT)
-    bool enableDoze; /*!< Enable or Disable Doze Mode. */
-#endif
-} flexcan_config_t;
-
-/*! @brief FlexCAN protocol timing characteristic configuration structure. */
-typedef struct _flexcan_timing_config
-{
-    uint8_t preDivider; /*!< Clock Pre-scaler Division Factor. */
-    uint8_t rJumpwidth; /*!< Re-sync Jump Width. */
-    uint8_t phaseSeg1;  /*!< Phase Segment 1. */
-    uint8_t phaseSeg2;  /*!< Phase Segment 2. */
-    uint8_t propSeg;    /*!< Propagation Segment. */
-} flexcan_timing_config_t;
-
-/*!
- * @brief FlexCAN Receive Message Buffer configuration structure
- *
- * This structure is used as the parameter of FLEXCAN_SetRxMbConfig() function.
- * The FLEXCAN_SetRxMbConfig() function is used to configure FlexCAN Receive
- * Message Buffer. The function abort previous receiving process, clean the
- * Message Buffer and activate the Rx Message Buffer using given Message Buffer
- * setting.
- */
-typedef struct _flexcan_rx_mb_config
-{
-    uint32_t id;                   /*!< CAN Message Buffer Frame Identifier, should be set using
-                                        FLEXCAN_ID_EXT() or FLEXCAN_ID_STD() macro. */
-    flexcan_frame_format_t format; /*!< CAN Frame Identifier format(Standard of Extend). */
-    flexcan_frame_type_t type;     /*!< CAN Frame Type(Data or Remote). */
-} flexcan_rx_mb_config_t;
-
-/*! @brief FlexCAN Rx FIFO configure structure. */
-typedef struct _flexcan_rx_fifo_config
-{
-    uint32_t *idFilterTable;                    /*!< Pointer to FlexCAN Rx FIFO identifier filter table. */
-    uint8_t idFilterNum;                        /*!< The quantity of filter elements. */
-    flexcan_rx_fifo_filter_type_t idFilterType; /*!< The FlexCAN Rx FIFO Filter type. */
-    flexcan_rx_fifo_priority_t priority;        /*!< The FlexCAN Rx FIFO receive priority. */
-} flexcan_rx_fifo_config_t;
-
-/*! @brief FlexCAN Message Buffer transfer. */
-typedef struct _flexcan_mb_transfer
-{
-    flexcan_frame_t *frame; /*!< The buffer of CAN Message to be transfer. */
-    uint8_t mbIdx;          /*!< The index of Message buffer used to transfer Message. */
-} flexcan_mb_transfer_t;
-
-/*! @brief FlexCAN Rx FIFO transfer. */
-typedef struct _flexcan_fifo_transfer
-{
-    flexcan_frame_t *frame; /*!< The buffer of CAN Message to be received from Rx FIFO. */
-} flexcan_fifo_transfer_t;
-
-/*! @brief FlexCAN handle structure definition. */
-typedef struct _flexcan_handle flexcan_handle_t;
-
-/*! @brief FlexCAN transfer callback function.
- *
- *  The FlexCAN transfer callback returns a value from the underlying layer.
- *  If the status equals to kStatus_FLEXCAN_ErrorStatus, the result parameter is the Content of
- *  FlexCAN status register which can be used to get the working status(or error status) of FlexCAN module.
- *  If the status equals to other FlexCAN Message Buffer transfer status, the result is the index of
- *  Message Buffer that generate transfer event.
- *  If the status equals to other FlexCAN Message Buffer transfer status, the result is meaningless and should be
- *  Ignored.
- */
-typedef void (*flexcan_transfer_callback_t)(
-    CAN_Type *base, flexcan_handle_t *handle, status_t status, uint32_t result, void *userData);
-
-/*! @brief FlexCAN handle structure. */
-struct _flexcan_handle
-{
-    flexcan_transfer_callback_t callback; /*!< Callback function. */
-    void *userData;                       /*!< FlexCAN callback function parameter.*/
-    flexcan_frame_t *volatile mbFrameBuf[CAN_WORD1_COUNT];
-    /*!< The buffer for received data from Message Buffers. */
-    flexcan_frame_t *volatile rxFifoFrameBuf;  /*!< The buffer for received data from Rx FIFO. */
-    volatile uint8_t mbState[CAN_WORD1_COUNT]; /*!< Message Buffer transfer state. */
-    volatile uint8_t rxFifoState;              /*!< Rx FIFO transfer state. */
-};
-
-/******************************************************************************
- * API
- *****************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
- * @name Initialization and deinitialization
- * @{
- */
-
-/*!
- * @brief Initializes a FlexCAN instance.
- *
- * This function initializes the FlexCAN module with user-defined settings.
- * This example shows how to set up the flexcan_config_t parameters and how
- * to call the FLEXCAN_Init function by passing in these parameters:
- *  @code
- *   flexcan_config_t flexcanConfig;
- *   flexcanConfig.clkSrc            = KFLEXCAN_ClkSrcOsc;
- *   flexcanConfig.baudRate          = 125000U;
- *   flexcanConfig.maxMbNum          = 16;
- *   flexcanConfig.enableLoopBack    = false;
- *   flexcanConfig.enableSelfWakeup  = false;
- *   flexcanConfig.enableIndividMask = false;
- *   flexcanConfig.enableDoze        = false;
- *   FLEXCAN_Init(CAN0, &flexcanConfig, 8000000UL);
- *   @endcode
- *
- * @param base FlexCAN peripheral base address.
- * @param config Pointer to user-defined configuration structure.
- * @param sourceClock_Hz FlexCAN Protocol Engine clock source frequency in Hz.
- */
-void FLEXCAN_Init(CAN_Type *base, const flexcan_config_t *config, uint32_t sourceClock_Hz);
-
-/*!
- * @brief De-initializes a FlexCAN instance.
- *
- * This function disable the FlexCAN module clock and set all register value
- * to reset value.
- *
- * @param base FlexCAN peripheral base address.
- */
-void FLEXCAN_Deinit(CAN_Type *base);
-
-/*!
- * @brief Get the default configuration structure.
- *
- * This function initializes the FlexCAN configure structure to default value. The default
- * value are:
- *   flexcanConfig->clkSrc            = KFLEXCAN_ClkSrcOsc;
- *   flexcanConfig->baudRate          = 125000U;
- *   flexcanConfig->maxMbNum          = 16;
- *   flexcanConfig->enableLoopBack    = false;
- *   flexcanConfig->enableSelfWakeup  = false;
- *   flexcanConfig->enableIndividMask = false;
- *   flexcanConfig->enableDoze        = false;
- *
- * @param config Pointer to FlexCAN configuration structure.
- */
-void FLEXCAN_GetDefaultConfig(flexcan_config_t *config);
-
-/* @} */
-
-/*!
- * @name Configuration.
- * @{
- */
-
-/*!
- * @brief Sets the FlexCAN protocol timing characteristic.
- *
- * This function gives user settings to CAN bus timing characteristic.
- * The function is for an experienced user. For less experienced users, call
- * the FLEXCAN_Init() and fill the baud rate field with a desired value.
- * This provides the default timing characteristics to the module.
- *
- * Note that calling FLEXCAN_SetTimingConfig() overrides the baud rate set
- * in FLEXCAN_Init().
- *
- * @param base FlexCAN peripheral base address.
- * @param config Pointer to the timing configuration structure.
- */
-void FLEXCAN_SetTimingConfig(CAN_Type *base, const flexcan_timing_config_t *config);
-
-/*!
- * @brief Sets the FlexCAN receive message buffer global mask.
- *
- * This function sets the global mask for FlexCAN message buffer in a matching process.
- * The configuration is only effective when the Rx individual mask is disabled in the FLEXCAN_Init().
- *
- * @param base FlexCAN peripheral base address.
- * @param mask Rx Message Buffer Global Mask value.
- */
-void FlEXCAN_SetRxMbGlobalMask(CAN_Type *base, uint32_t mask);
-
-/*!
- * @brief Sets the FlexCAN receive FIFO global mask.
- *
- * This function sets the global mask for FlexCAN FIFO in a matching process.
- *
- * @param base FlexCAN peripheral base address.
- * @param mask Rx Fifo Global Mask value.
- */
-void FlEXCAN_SetRxFifoGlobalMask(CAN_Type *base, uint32_t mask);
-
-/*!
- * @brief Sets the FlexCAN receive individual mask.
- *
- * This function sets the individual mask for FlexCAN matching process.
- * The configuration is only effective when the Rx individual mask is enabled in FLEXCAN_Init().
- * If Rx FIFO is disabled, the individual mask is applied to the corresponding Message Buffer.
- * If Rx FIFO is enabled, the individual mask for Rx FIFO occupied Message Buffer is applied to
- * the Rx Filter with same index. What calls for special attention is that only the first 32
- * individual masks can be used as Rx FIFO filter mask.
- *
- * @param base FlexCAN peripheral base address.
- * @param maskIdx The Index of individual Mask.
- * @param mask Rx Individual Mask value.
- */
-void FlEXCAN_SetRxIndividualMask(CAN_Type *base, uint8_t maskIdx, uint32_t mask);
-
-/*!
- * @brief Configures a FlexCAN transmit message buffer.
- *
- * This function aborts the previous transmission, cleans the Message Buffer, and
- * configures it as a Transmit Message Buffer.
- *
- * @param base FlexCAN peripheral base address.
- * @param mbIdx The Message Buffer index.
- * @param enable Enable/Disable Tx Message Buffer.
- *               - true: Enable Tx Message Buffer.
- *               - false: Disable Tx Message Buffer.
- */
-void FLEXCAN_SetTxMbConfig(CAN_Type *base, uint8_t mbIdx, bool enable);
-
-/*!
- * @brief Configures a FlexCAN Receive Message Buffer.
- *
- * This function cleans a FlexCAN build-in Message Buffer and configures it
- * as a Receive Message Buffer.
- *
- * @param base FlexCAN peripheral base address.
- * @param mbIdx The Message Buffer index.
- * @param config Pointer to FlexCAN Message Buffer configuration structure.
- * @param enable Enable/Disable Rx Message Buffer.
- *               - true: Enable Rx Message Buffer.
- *               - false: Disable Rx Message Buffer.
- */
-void FLEXCAN_SetRxMbConfig(CAN_Type *base, uint8_t mbIdx, const flexcan_rx_mb_config_t *config, bool enable);
-
-/*!
- * @brief Configures the FlexCAN Rx FIFO.
- *
- * This function configures the Rx FIFO with given Rx FIFO configuration.
- *
- * @param base FlexCAN peripheral base address.
- * @param config Pointer to FlexCAN Rx FIFO configuration structure.
- * @param enable Enable/Disable Rx FIFO.
- *               - true: Enable Rx FIFO.
- *               - false: Disable Rx FIFO.
- */
-void FlEXCAN_SetRxFifoConfig(CAN_Type *base, const flexcan_rx_fifo_config_t *config, bool enable);
-
-/* @} */
-
-/*!
- * @name Status
- * @{
- */
-
-/*!
- * @brief Gets the FlexCAN module interrupt flags.
- *
- * This function gets all FlexCAN status flags. The flags are returned as the logical
- * OR value of the enumerators @ref _flexcan_flags. To check the specific status,
- * compare the return value with enumerators in @ref _flexcan_flags.
- *
- * @param base FlexCAN peripheral base address.
- * @return FlexCAN status flags which are ORed by the enumerators in the _flexcan_flags.
- */
-static inline uint32_t FLEXCAN_GetStatusFlags(CAN_Type *base)
-{
-    return base->ESR1;
-}
-
-/*!
- * @brief Clears status flags with the provided mask.
- *
- * This function clears the FlexCAN status flags with a provided mask. An automatically cleared flag
- * can't be cleared by this function.
- *
- * @param base FlexCAN peripheral base address.
- * @param mask The status flags to be cleared, it is logical OR value of @ref _flexcan_flags.
- */
-static inline void FLEXCAN_ClearStatusFlags(CAN_Type *base, uint32_t mask)
-{
-    /* Write 1 to clear status flag. */
-    base->ESR1 = mask;
-}
-
-/*!
- * @brief Gets the FlexCAN Bus Error Counter value.
- *
- * This function gets the FlexCAN Bus Error Counter value for both Tx and
- * Rx direction. These values may be needed in the upper layer error handling.
- *
- * @param base FlexCAN peripheral base address.
- * @param txErrBuf Buffer to store Tx Error Counter value.
- * @param rxErrBuf Buffer to store Rx Error Counter value.
- */
-static inline void FlEXCAN_GetBusErrCount(CAN_Type *base, uint8_t *txErrBuf, uint8_t *rxErrBuf)
-{
-    if (txErrBuf)
-    {
-        *txErrBuf = (uint8_t)((base->ECR & CAN_ECR_TXERRCNT_MASK) >> CAN_ECR_TXERRCNT_SHIFT);
-    }
-
-    if (rxErrBuf)
-    {
-        *rxErrBuf = (uint8_t)((base->ECR & CAN_ECR_RXERRCNT_MASK) >> CAN_ECR_RXERRCNT_SHIFT);
-    }
-}
-
-/*!
- * @brief Gets the FlexCAN Message Buffer interrupt flags.
- *
- * This function gets the interrupt flags of a given Message Buffers.
- *
- * @param base FlexCAN peripheral base address.
- * @param mask The ORed FlexCAN Message Buffer mask.
- * @return The status of given Message Buffers.
- */
-#if (defined(FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER)) && (FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER > 0)
-static inline uint64_t FLEXCAN_GetMbStatusFlags(CAN_Type *base, uint64_t mask)
-#else
-static inline uint32_t FLEXCAN_GetMbStatusFlags(CAN_Type *base, uint32_t mask)
-#endif
-{
-#if (defined(FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER)) && (FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER > 0)
-    return ((((uint64_t)base->IFLAG1) & mask) | ((((uint64_t)base->IFLAG2) << 32) & mask));
-#else
-    return (base->IFLAG1 & mask);
-#endif
-}
-
-/*!
- * @brief Clears the FlexCAN Message Buffer interrupt flags.
- *
- * This function clears the interrupt flags of a given Message Buffers.
- *
- * @param base FlexCAN peripheral base address.
- * @param mask The ORed FlexCAN Message Buffer mask.
- */
-#if (defined(FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER)) && (FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER > 0)
-static inline void FLEXCAN_ClearMbStatusFlags(CAN_Type *base, uint64_t mask)
-#else
-static inline void FLEXCAN_ClearMbStatusFlags(CAN_Type *base, uint32_t mask)
-#endif
-{
-#if (defined(FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER)) && (FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER > 0)
-    base->IFLAG1 = (uint32_t)(mask & 0xFFFFFFFF);
-    base->IFLAG2 = (uint32_t)(mask >> 32);
-#else
-    base->IFLAG1 = mask;
-#endif
-}
-
-/* @} */
-
-/*!
- * @name Interrupts
- * @{
- */
-
-/*!
- * @brief Enables FlexCAN interrupts according to provided mask.
- *
- * This function enables the FlexCAN interrupts according to provided mask. The mask
- * is a logical OR of enumeration members, see @ref _flexcan_interrupt_enable.
- *
- * @param base FlexCAN peripheral base address.
- * @param mask The interrupts to enable. Logical OR of @ref _flexcan_interrupt_enable.
- */
-static inline void FLEXCAN_EnableInterrupts(CAN_Type *base, uint32_t mask)
-{
-    /* Solve Wake Up Interrupt. */
-    if (mask & kFLEXCAN_WakeUpInterruptEnable)
-    {
-        base->MCR |= CAN_MCR_WAKMSK_MASK;
-    }
-
-    /* Solve others. */
-    base->CTRL1 |= (mask & (~((uint32_t)kFLEXCAN_WakeUpInterruptEnable)));
-}
-
-/*!
- * @brief Disables FlexCAN interrupts according to provided mask.
- *
- * This function disables the FlexCAN interrupts according to provided mask. The mask
- * is a logical OR of enumeration members, see @ref _flexcan_interrupt_enable.
- *
- * @param base FlexCAN peripheral base address.
- * @param mask The interrupts to disable. Logical OR of @ref _flexcan_interrupt_enable.
- */
-static inline void FLEXCAN_DisableInterrupts(CAN_Type *base, uint32_t mask)
-{
-    /* Solve Wake Up Interrupt. */
-    if (mask & kFLEXCAN_WakeUpInterruptEnable)
-    {
-        base->MCR &= ~CAN_MCR_WAKMSK_MASK;
-    }
-
-    /* Solve others. */
-    base->CTRL1 &= ~(mask & (~((uint32_t)kFLEXCAN_WakeUpInterruptEnable)));
-}
-
-/*!
- * @brief Enables FlexCAN Message Buffer interrupts.
- *
- * This function enables the interrupts of given Message Buffers
- *
- * @param base FlexCAN peripheral base address.
- * @param mask The ORed FlexCAN Message Buffer mask.
- */
-#if (defined(FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER)) && (FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER > 0)
-static inline void FLEXCAN_EnableMbInterrupts(CAN_Type *base, uint64_t mask)
-#else
-static inline void FLEXCAN_EnableMbInterrupts(CAN_Type *base, uint32_t mask)
-#endif
-{
-#if (defined(FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER)) && (FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER > 0)
-    base->IMASK1 |= (uint32_t)(mask & 0xFFFFFFFF);
-    base->IMASK2 |= (uint32_t)(mask >> 32);
-#else
-    base->IMASK1 |= mask;
-#endif
-}
-
-/*!
- * @brief Disables FlexCAN Message Buffer interrupts.
- *
- * This function disables the interrupts of given Message Buffers
- *
- * @param base FlexCAN peripheral base address.
- * @param mask The ORed FlexCAN Message Buffer mask.
- */
-#if (defined(FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER)) && (FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER > 0)
-static inline void FLEXCAN_DisableMbInterrupts(CAN_Type *base, uint64_t mask)
-#else
-static inline void FLEXCAN_DisableMbInterrupts(CAN_Type *base, uint32_t mask)
-#endif
-{
-#if (defined(FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER)) && (FSL_FEATURE_FLEXCAN_HAS_EXTENDED_FLAG_REGISTER > 0)
-    base->IMASK1 &= ~((uint32_t)(mask & 0xFFFFFFFF));
-    base->IMASK2 &= ~((uint32_t)(mask >> 32));
-#else
-    base->IMASK1 &= ~mask;
-#endif
-}
-
-/* @} */
-
-#if (defined(FSL_FEATURE_FLEXCAN_HAS_RX_FIFO_DMA) && FSL_FEATURE_FLEXCAN_HAS_RX_FIFO_DMA)
-/*!
- * @name DMA Control
- * @{
- */
-
-/*!
- * @brief Enables or disables the FlexCAN Rx FIFO DMA request.
- *
- * This function enables or disables the DMA feature of FlexCAN build-in Rx FIFO.
- *
- * @param base FlexCAN peripheral base address.
- * @param enable true to enable, false to disable.
- */
-void FLEXCAN_EnableRxFifoDMA(CAN_Type *base, bool enable);
-
-/*!
- * @brief Gets the Rx FIFO Head address.
- *
- * This function returns the FlexCAN Rx FIFO Head address, which is mainly used for the DMA/eDMA use case.
- *
- * @param base FlexCAN peripheral base address.
- * @return FlexCAN Rx FIFO Head address.
- */
-static inline uint32_t FLEXCAN_GetRxFifoHeadAddr(CAN_Type *base)
-{
-    return (uint32_t) & (base->MB[0].CS);
-}
-
-/* @} */
-#endif /* FSL_FEATURE_FLEXCAN_HAS_RX_FIFO_DMA */
-
-/*!
- * @name Bus Operations
- * @{
- */
-
-/*!
- * @brief Enables or disables the FlexCAN module operation.
- *
- * This function enables or disables the FlexCAN module.
- *
- * @param base FlexCAN base pointer.
- * @param enable true to enable, false to disable.
- */
-static inline void FLEXCAN_Enable(CAN_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->MCR &= ~CAN_MCR_MDIS_MASK;
-
-        /* Wait FlexCAN exit from low-power mode. */
-        while (base->MCR & CAN_MCR_LPMACK_MASK)
-        {
-        }
-    }
-    else
-    {
-        base->MCR |= CAN_MCR_MDIS_MASK;
-
-        /* Wait FlexCAN enter low-power mode. */
-        while (!(base->MCR & CAN_MCR_LPMACK_MASK))
-        {
-        }
-    }
-}
-
-/*!
- * @brief Writes a FlexCAN Message to Transmit Message Buffer.
- *
- * This function writes a CAN Message to the specified Transmit Message Buffer
- * and changes the Message Buffer state to start CAN Message transmit. After
- * that the function returns immediately.
- *
- * @param base FlexCAN peripheral base address.
- * @param mbIdx The FlexCAN Message Buffer index.
- * @param txFrame Pointer to CAN message frame to be sent.
- * @retval kStatus_Success - Write Tx Message Buffer Successfully.
- * @retval kStatus_Fail    - Tx Message Buffer is currently in use.
- */
-status_t FLEXCAN_WriteTxMb(CAN_Type *base, uint8_t mbIdx, const flexcan_frame_t *txFrame);
-
-/*!
- * @brief Reads a FlexCAN Message from Receive Message Buffer.
- *
- * This function reads a CAN message from a specified Receive Message Buffer.
- * The function fills a receive CAN message frame structure with
- * just received data and activates the Message Buffer again.
- * The function returns immediately.
- *
- * @param base FlexCAN peripheral base address.
- * @param mbIdx The FlexCAN Message Buffer index.
- * @param rxFrame Pointer to CAN message frame structure for reception.
- * @retval kStatus_Success            - Rx Message Buffer is full and has been read successfully.
- * @retval kStatus_FLEXCAN_RxOverflow - Rx Message Buffer is already overflowed and has been read successfully.
- * @retval kStatus_Fail               - Rx Message Buffer is empty.
- */
-status_t FLEXCAN_ReadRxMb(CAN_Type *base, uint8_t mbIdx, flexcan_frame_t *rxFrame);
-
-/*!
- * @brief Reads a FlexCAN Message from Rx FIFO.
- *
- * This function reads a CAN message from the FlexCAN build-in Rx FIFO.
- *
- * @param base FlexCAN peripheral base address.
- * @param rxFrame Pointer to CAN message frame structure for reception.
- * @retval kStatus_Success - Read Message from Rx FIFO successfully.
- * @retval kStatus_Fail    - Rx FIFO is not enabled.
- */
-status_t FlEXCAN_ReadRxFifo(CAN_Type *base, flexcan_frame_t *rxFrame);
-
-/* @} */
-
-/*!
- * @name Transactional
- * @{
- */
-
-/*!
- * @brief Performs a polling send transaction on the CAN bus.
- *
- * Note that a transfer handle does not need to be created  before calling this API.
- *
- * @param base FlexCAN peripheral base pointer.
- * @param mbIdx The FlexCAN Message Buffer index.
- * @param txFrame Pointer to CAN message frame to be sent.
- * @retval kStatus_Success - Write Tx Message Buffer Successfully.
- * @retval kStatus_Fail    - Tx Message Buffer is currently in use.
- */
-status_t FlEXCAN_TransferSendBlocking(CAN_Type *base, uint8_t mbIdx, flexcan_frame_t *txFrame);
-
-/*!
- * @brief Performs a polling receive transaction on the CAN bus.
- *
- * Note that a transfer handle does not need to be created  before calling this API.
- *
- * @param base FlexCAN peripheral base pointer.
- * @param mbIdx The FlexCAN Message Buffer index.
- * @param rxFrame Pointer to CAN message frame structure for reception.
- * @retval kStatus_Success            - Rx Message Buffer is full and has been read successfully.
- * @retval kStatus_FLEXCAN_RxOverflow - Rx Message Buffer is already overflowed and has been read successfully.
- * @retval kStatus_Fail               - Rx Message Buffer is empty.
- */
-status_t FlEXCAN_TransferReceiveBlocking(CAN_Type *base, uint8_t mbIdx, flexcan_frame_t *rxFrame);
-
-/*!
- * @brief Performs a polling receive transaction from Rx FIFO on the CAN bus.
- *
- * Note that a transfer handle does not need to be created  before calling this API.
- *
- * @param base FlexCAN peripheral base pointer.
- * @param rxFrame Pointer to CAN message frame structure for reception.
- * @retval kStatus_Success - Read Message from Rx FIFO successfully.
- * @retval kStatus_Fail    - Rx FIFO is not enabled.
- */
-status_t FlEXCAN_TransferReceiveFifoBlocking(CAN_Type *base, flexcan_frame_t *rxFrame);
-
-/*!
- * @brief Initializes the FlexCAN handle.
- *
- * This function initializes the FlexCAN handle which can be used for other FlexCAN
- * transactional APIs. Usually, for a specified FlexCAN instance,
- * call this API once to get the initialized handle.
- *
- * @param base FlexCAN peripheral base address.
- * @param handle FlexCAN handle pointer.
- * @param callback The callback function.
- * @param userData The parameter of the callback function.
- */
-void FLEXCAN_TransferCreateHandle(CAN_Type *base,
-                                  flexcan_handle_t *handle,
-                                  flexcan_transfer_callback_t callback,
-                                  void *userData);
-
-/*!
- * @brief Sends a message using IRQ.
- *
- * This function sends a message using IRQ. This is a non-blocking function, which returns
- * right away. When messages have been sent out, the send callback function is called.
- *
- * @param base FlexCAN peripheral base address.
- * @param handle FlexCAN handle pointer.
- * @param xfer FlexCAN Message Buffer transfer structure. See the #flexcan_mb_transfer_t.
- * @retval kStatus_Success        Start Tx Message Buffer sending process successfully.
- * @retval kStatus_Fail           Write Tx Message Buffer failed.
- * @retval kStatus_FLEXCAN_TxBusy Tx Message Buffer is in use.
- */
-status_t FLEXCAN_TransferSendNonBlocking(CAN_Type *base, flexcan_handle_t *handle, flexcan_mb_transfer_t *xfer);
-
-/*!
- * @brief Receives a message using IRQ.
- *
- * This function receives a message using IRQ. This is non-blocking function, which returns
- * right away. When the message has been received, the receive callback function is called.
- *
- * @param base FlexCAN peripheral base address.
- * @param handle FlexCAN handle pointer.
- * @param xfer FlexCAN Message Buffer transfer structure. See the #flexcan_mb_transfer_t.
- * @retval kStatus_Success        - Start Rx Message Buffer receiving process successfully.
- * @retval kStatus_FLEXCAN_RxBusy - Rx Message Buffer is in use.
- */
-status_t FLEXCAN_TransferReceiveNonBlocking(CAN_Type *base, flexcan_handle_t *handle, flexcan_mb_transfer_t *xfer);
-
-/*!
- * @brief Receives a message from Rx FIFO using IRQ.
- *
- * This function receives a message using IRQ. This is a non-blocking function, which returns
- * right away. When all messages have been received, the receive callback function is called.
- *
- * @param base FlexCAN peripheral base address.
- * @param handle FlexCAN handle pointer.
- * @param xfer FlexCAN Rx FIFO transfer structure. See the @ref flexcan_fifo_transfer_t.
- * @retval kStatus_Success            - Start Rx FIFO receiving process successfully.
- * @retval kStatus_FLEXCAN_RxFifoBusy - Rx FIFO is currently in use.
- */
-status_t FLEXCAN_TransferReceiveFifoNonBlocking(CAN_Type *base,
-                                                flexcan_handle_t *handle,
-                                                flexcan_fifo_transfer_t *xfer);
-
-/*!
- * @brief Aborts the interrupt driven message send process.
- *
- * This function aborts the interrupt driven message send process.
- *
- * @param base FlexCAN peripheral base address.
- * @param handle FlexCAN handle pointer.
- * @param mbIdx The FlexCAN Message Buffer index.
- */
-void FLEXCAN_TransferAbortSend(CAN_Type *base, flexcan_handle_t *handle, uint8_t mbIdx);
-
-/*!
- * @brief Aborts the interrupt driven message receive process.
- *
- * This function aborts the interrupt driven message receive process.
- *
- * @param base FlexCAN peripheral base address.
- * @param handle FlexCAN handle pointer.
- * @param mbIdx The FlexCAN Message Buffer index.
- */
-void FLEXCAN_TransferAbortReceive(CAN_Type *base, flexcan_handle_t *handle, uint8_t mbIdx);
-
-/*!
- * @brief Aborts the interrupt driven message receive from Rx FIFO process.
- *
- * This function aborts the interrupt driven message receive from Rx FIFO process.
- *
- * @param base FlexCAN peripheral base address.
- * @param handle FlexCAN handle pointer.
- */
-void FLEXCAN_TransferAbortReceiveFifo(CAN_Type *base, flexcan_handle_t *handle);
-
-/*!
- * @brief FlexCAN IRQ handle function.
- *
- * This function handles the FlexCAN Error, the Message Buffer, and the Rx FIFO IRQ request.
- *
- * @param base FlexCAN peripheral base address.
- * @param handle FlexCAN handle pointer.
- */
-void FLEXCAN_TransferHandleIRQ(CAN_Type *base, flexcan_handle_t *handle);
-
-/* @} */
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*! @}*/
-
-#endif /* _FSL_FLEXCAN_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_ftm.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,896 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_ftm.h"
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-/*!
- * @brief Gets the instance from the base address
- *
- * @param base FTM peripheral base address
- *
- * @return The FTM instance
- */
-static uint32_t FTM_GetInstance(FTM_Type *base);
-
-/*!
- * @brief Sets the FTM register PWM synchronization method
- *
- * This function will set the necessary bits for the PWM synchronization mode that
- * user wishes to use.
- *
- * @param base       FTM peripheral base address
- * @param syncMethod Syncronization methods to use to update buffered registers. This is a logical
- *                   OR of members of the enumeration ::ftm_pwm_sync_method_t
- */
-static void FTM_SetPwmSync(FTM_Type *base, uint32_t syncMethod);
-
-/*!
- * @brief Sets the reload points used as loading points for register update
- *
- * This function will set the necessary bits based on what the user wishes to use as loading
- * points for FTM register update. When using this it is not required to use PWM synchnronization.
- *
- * @param base         FTM peripheral base address
- * @param reloadPoints FTM reload points. This is a logical OR of members of the
- *                     enumeration ::ftm_reload_point_t
- */
-static void FTM_SetReloadPoints(FTM_Type *base, uint32_t reloadPoints);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-/*! @brief Pointers to FTM bases for each instance. */
-static FTM_Type *const s_ftmBases[] = FTM_BASE_PTRS;
-
-/*! @brief Pointers to FTM clocks for each instance. */
-static const clock_ip_name_t s_ftmClocks[] = FTM_CLOCKS;
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-static uint32_t FTM_GetInstance(FTM_Type *base)
-{
-    uint32_t instance;
-    uint32_t ftmArrayCount = (sizeof(s_ftmBases) / sizeof(s_ftmBases[0]));
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < ftmArrayCount; instance++)
-    {
-        if (s_ftmBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < ftmArrayCount);
-
-    return instance;
-}
-
-static void FTM_SetPwmSync(FTM_Type *base, uint32_t syncMethod)
-{
-    uint8_t chnlNumber = 0;
-    uint32_t reg = 0, syncReg = 0;
-
-    syncReg = base->SYNC;
-    /* Enable PWM synchronization of output mask register */
-    syncReg |= FTM_SYNC_SYNCHOM_MASK;
-
-    reg = base->COMBINE;
-    for (chnlNumber = 0; chnlNumber < (FSL_FEATURE_FTM_CHANNEL_COUNTn(base) / 2); chnlNumber++)
-    {
-        /* Enable PWM synchronization of registers C(n)V and C(n+1)V */
-        reg |= (1U << (FTM_COMBINE_SYNCEN0_SHIFT + (FTM_COMBINE_COMBINE1_SHIFT * chnlNumber)));
-    }
-    base->COMBINE = reg;
-
-    reg = base->SYNCONF;
-
-    /* Use enhanced PWM synchronization method. Use PWM sync to update register values */
-    reg |= (FTM_SYNCONF_SYNCMODE_MASK | FTM_SYNCONF_CNTINC_MASK | FTM_SYNCONF_INVC_MASK | FTM_SYNCONF_SWOC_MASK);
-
-    if (syncMethod & FTM_SYNC_SWSYNC_MASK)
-    {
-        /* Enable needed bits for software trigger to update registers with its buffer value */
-        reg |= (FTM_SYNCONF_SWRSTCNT_MASK | FTM_SYNCONF_SWWRBUF_MASK | FTM_SYNCONF_SWINVC_MASK |
-                FTM_SYNCONF_SWSOC_MASK | FTM_SYNCONF_SWOM_MASK);
-    }
-
-    if (syncMethod & (FTM_SYNC_TRIG0_MASK | FTM_SYNC_TRIG1_MASK | FTM_SYNC_TRIG2_MASK))
-    {
-        /* Enable needed bits for hardware trigger to update registers with its buffer value */
-        reg |= (FTM_SYNCONF_HWRSTCNT_MASK | FTM_SYNCONF_HWWRBUF_MASK | FTM_SYNCONF_HWINVC_MASK |
-                FTM_SYNCONF_HWSOC_MASK | FTM_SYNCONF_HWOM_MASK);
-
-        /* Enable the appropriate hardware trigger that is used for PWM sync */
-        if (syncMethod & FTM_SYNC_TRIG0_MASK)
-        {
-            syncReg |= FTM_SYNC_TRIG0_MASK;
-        }
-        if (syncMethod & FTM_SYNC_TRIG1_MASK)
-        {
-            syncReg |= FTM_SYNC_TRIG1_MASK;
-        }
-        if (syncMethod & FTM_SYNC_TRIG2_MASK)
-        {
-            syncReg |= FTM_SYNC_TRIG2_MASK;
-        }
-    }
-
-    /* Write back values to the SYNC register */
-    base->SYNC = syncReg;
-
-    /* Write the PWM synch values to the SYNCONF register */
-    base->SYNCONF = reg;
-}
-
-static void FTM_SetReloadPoints(FTM_Type *base, uint32_t reloadPoints)
-{
-    uint32_t chnlNumber = 0;
-    uint32_t reg = 0;
-
-    /* Need CNTINC bit to be 1 for CNTIN register to update with its buffer value on reload  */
-    base->SYNCONF |= FTM_SYNCONF_CNTINC_MASK;
-
-    reg = base->COMBINE;
-    for (chnlNumber = 0; chnlNumber < (FSL_FEATURE_FTM_CHANNEL_COUNTn(base) / 2); chnlNumber++)
-    {
-        /* Need SYNCEN bit to be 1 for CnV reg to update with its buffer value on reload  */
-        reg |= (1U << (FTM_COMBINE_SYNCEN0_SHIFT + (FTM_COMBINE_COMBINE1_SHIFT * chnlNumber)));
-    }
-    base->COMBINE = reg;
-
-    /* Set the reload points */
-    reg = base->PWMLOAD;
-
-    /* Enable the selected channel match reload points */
-    reg &= ~((1U << FSL_FEATURE_FTM_CHANNEL_COUNTn(base)) - 1);
-    reg |= (reloadPoints & ((1U << FSL_FEATURE_FTM_CHANNEL_COUNTn(base)) - 1));
-
-#if defined(FSL_FEATURE_FTM_HAS_HALFCYCLE_RELOAD) && (FSL_FEATURE_FTM_HAS_HALFCYCLE_RELOAD)
-    /* Enable half cycle match as a reload point */
-    if (reloadPoints & kFTM_HalfCycMatch)
-    {
-        reg |= FTM_PWMLOAD_HCSEL_MASK;
-    }
-    else
-    {
-        reg &= ~FTM_PWMLOAD_HCSEL_MASK;
-    }
-#endif /* FSL_FEATURE_FTM_HAS_HALFCYCLE_RELOAD */
-
-    base->PWMLOAD = reg;
-
-    /* These reload points are used when counter is in up-down counting mode */
-    reg = base->SYNC;
-    if (reloadPoints & kFTM_CntMax)
-    {
-        /* Reload when counter turns from up to down */
-        reg |= FTM_SYNC_CNTMAX_MASK;
-    }
-    else
-    {
-        reg &= ~FTM_SYNC_CNTMAX_MASK;
-    }
-
-    if (reloadPoints & kFTM_CntMin)
-    {
-        /* Reload when counter turns from down to up */
-        reg |= FTM_SYNC_CNTMIN_MASK;
-    }
-    else
-    {
-        reg &= ~FTM_SYNC_CNTMIN_MASK;
-    }
-    base->SYNC = reg;
-}
-
-status_t FTM_Init(FTM_Type *base, const ftm_config_t *config)
-{
-    assert(config);
-
-    uint32_t reg;
-
-    if (!(config->pwmSyncMode &
-          (FTM_SYNC_TRIG0_MASK | FTM_SYNC_TRIG1_MASK | FTM_SYNC_TRIG2_MASK | FTM_SYNC_SWSYNC_MASK)))
-    {
-        /* Invalid PWM sync mode */
-        return kStatus_Fail;
-    }
-
-    /* Ungate the FTM clock*/
-    CLOCK_EnableClock(s_ftmClocks[FTM_GetInstance(base)]);
-
-    /* Configure the fault mode, enable FTM mode and disable write protection */
-    base->MODE = FTM_MODE_FAULTM(config->faultMode) | FTM_MODE_FTMEN_MASK | FTM_MODE_WPDIS_MASK;
-
-    /* Configure the update mechanism for buffered registers */
-    FTM_SetPwmSync(base, config->pwmSyncMode);
-
-    /* Setup intermediate register reload points */
-    FTM_SetReloadPoints(base, config->reloadPoints);
-
-    /* Set the clock prescale factor */
-    base->SC = FTM_SC_PS(config->prescale);
-
-    /* Setup the counter operation */
-    base->CONF = (FTM_CONF_BDMMODE(config->bdmMode) | FTM_CONF_GTBEEN(config->useGlobalTimeBase));
-
-    /* Initial state of channel output */
-    base->OUTINIT = config->chnlInitState;
-
-    /* Channel polarity */
-    base->POL = config->chnlPolarity;
-
-    /* Set the external trigger sources */
-    base->EXTTRIG = config->extTriggers;
-#if defined(FSL_FEATURE_FTM_HAS_RELOAD_INITIALIZATION_TRIGGER) && (FSL_FEATURE_FTM_HAS_RELOAD_INITIALIZATION_TRIGGER)
-    if (config->extTriggers & kFTM_ReloadInitTrigger)
-    {
-        base->CONF |= FTM_CONF_ITRIGR_MASK;
-    }
-    else
-    {
-        base->CONF &= ~FTM_CONF_ITRIGR_MASK;
-    }
-#endif /* FSL_FEATURE_FTM_HAS_RELOAD_INITIALIZATION_TRIGGER */
-
-    /* FTM deadtime insertion control */
-    base->DEADTIME = (FTM_DEADTIME_DTPS(config->deadTimePrescale) | FTM_DEADTIME_DTVAL(config->deadTimeValue));
-
-    /* FTM fault filter value */
-    reg = base->FLTCTRL;
-    reg &= ~FTM_FLTCTRL_FFVAL_MASK;
-    reg |= FTM_FLTCTRL_FFVAL(config->faultFilterValue);
-    base->FLTCTRL = reg;
-
-    return kStatus_Success;
-}
-
-void FTM_Deinit(FTM_Type *base)
-{
-    /* Set clock source to none to disable counter */
-    base->SC &= ~(FTM_SC_CLKS_MASK);
-
-    /* Gate the FTM clock */
-    CLOCK_DisableClock(s_ftmClocks[FTM_GetInstance(base)]);
-}
-
-void FTM_GetDefaultConfig(ftm_config_t *config)
-{
-    assert(config);
-
-    /* Divide FTM clock by 1 */
-    config->prescale = kFTM_Prescale_Divide_1;
-    /* FTM behavior in BDM mode */
-    config->bdmMode = kFTM_BdmMode_0;
-    /* Software trigger will be used to update registers */
-    config->pwmSyncMode = kFTM_SoftwareTrigger;
-    /* No intermediate register load */
-    config->reloadPoints = 0;
-    /* Fault control disabled for all channels */
-    config->faultMode = kFTM_Fault_Disable;
-    /* Disable the fault filter */
-    config->faultFilterValue = 0;
-    /* Divide the system clock by 1 */
-    config->deadTimePrescale = kFTM_Deadtime_Prescale_1;
-    /* No counts are inserted */
-    config->deadTimeValue = 0;
-    /* No external trigger */
-    config->extTriggers = 0;
-    /* Initialization value is 0 for all channels */
-    config->chnlInitState = 0;
-    /* Active high polarity for all channels */
-    config->chnlPolarity = 0;
-    /* Use internal FTM counter as timebase */
-    config->useGlobalTimeBase = false;
-}
-
-status_t FTM_SetupPwm(FTM_Type *base,
-                      const ftm_chnl_pwm_signal_param_t *chnlParams,
-                      uint8_t numOfChnls,
-                      ftm_pwm_mode_t mode,
-                      uint32_t pwmFreq_Hz,
-                      uint32_t srcClock_Hz)
-{
-    assert(chnlParams);
-    assert(srcClock_Hz);
-    assert(pwmFreq_Hz);
-    assert(numOfChnls);
-
-    uint32_t mod, reg;
-    uint32_t ftmClock = (srcClock_Hz / (1U << (base->SC & FTM_SC_PS_MASK)));
-    uint16_t cnv, cnvFirstEdge;
-    uint8_t i;
-
-    switch (mode)
-    {
-        case kFTM_EdgeAlignedPwm:
-        case kFTM_CombinedPwm:
-            base->SC &= ~FTM_SC_CPWMS_MASK;
-            mod = (ftmClock / pwmFreq_Hz) - 1;
-            break;
-        case kFTM_CenterAlignedPwm:
-            base->SC |= FTM_SC_CPWMS_MASK;
-            mod = ftmClock / (pwmFreq_Hz * 2);
-            break;
-        default:
-            return kStatus_Fail;
-    }
-
-    /* Return an error in case we overflow the registers, probably would require changing
-     * clock source to get the desired frequency */
-    if (mod > 65535U)
-    {
-        return kStatus_Fail;
-    }
-    /* Set the PWM period */
-    base->MOD = mod;
-
-    /* Setup each FTM channel */
-    for (i = 0; i < numOfChnls; i++)
-    {
-        /* Return error if requested dutycycle is greater than the max allowed */
-        if (chnlParams->dutyCyclePercent > 100)
-        {
-            return kStatus_Fail;
-        }
-
-        if ((mode == kFTM_EdgeAlignedPwm) || (mode == kFTM_CenterAlignedPwm))
-        {
-            /* Clear the current mode and edge level bits */
-            reg = base->CONTROLS[chnlParams->chnlNumber].CnSC;
-            reg &= ~(FTM_CnSC_MSA_MASK | FTM_CnSC_MSB_MASK | FTM_CnSC_ELSA_MASK | FTM_CnSC_ELSB_MASK);
-
-            /* Setup the active level */
-            reg |= (uint32_t)(chnlParams->level << FTM_CnSC_ELSA_SHIFT);
-
-            /* Edge-aligned mode needs MSB to be 1, don't care for Center-aligned mode */
-            reg |= FTM_CnSC_MSB(1U);
-
-            /* Update the mode and edge level */
-            base->CONTROLS[chnlParams->chnlNumber].CnSC = reg;
-
-            if (chnlParams->dutyCyclePercent == 0)
-            {
-                /* Signal stays low */
-                cnv = 0;
-            }
-            else
-            {
-                cnv = (mod * chnlParams->dutyCyclePercent) / 100;
-                /* For 100% duty cycle */
-                if (cnv >= mod)
-                {
-                    cnv = mod + 1;
-                }
-            }
-
-            base->CONTROLS[chnlParams->chnlNumber].CnV = cnv;
-#if defined(FSL_FEATURE_FTM_HAS_ENABLE_PWM_OUTPUT) && (FSL_FEATURE_FTM_HAS_ENABLE_PWM_OUTPUT)
-            /* Set to output mode */
-            FTM_SetPwmOutputEnable(base, chnlParams->chnlNumber, true);
-#endif
-        }
-        else
-        {
-            /* This check is added for combined mode as the channel number should be the pair number */
-            if (chnlParams->chnlNumber >= (FSL_FEATURE_FTM_CHANNEL_COUNTn(base) / 2))
-            {
-                return kStatus_Fail;
-            }
-
-            /* Return error if requested value is greater than the max allowed */
-            if (chnlParams->firstEdgeDelayPercent > 100)
-            {
-                return kStatus_Fail;
-            }
-
-            /* Configure delay of the first edge */
-            if (chnlParams->firstEdgeDelayPercent == 0)
-            {
-                /* No delay for the first edge */
-                cnvFirstEdge = 0;
-            }
-            else
-            {
-                cnvFirstEdge = (mod * chnlParams->firstEdgeDelayPercent) / 100;
-            }
-
-            /* Configure dutycycle */
-            if (chnlParams->dutyCyclePercent == 0)
-            {
-                /* Signal stays low */
-                cnv = 0;
-                cnvFirstEdge = 0;
-            }
-            else
-            {
-                cnv = (mod * chnlParams->dutyCyclePercent) / 100;
-                /* For 100% duty cycle */
-                if (cnv >= mod)
-                {
-                    cnv = mod + 1;
-                }
-            }
-
-            /* Clear the current mode and edge level bits for channel n */
-            reg = base->CONTROLS[chnlParams->chnlNumber * 2].CnSC;
-            reg &= ~(FTM_CnSC_MSA_MASK | FTM_CnSC_MSB_MASK | FTM_CnSC_ELSA_MASK | FTM_CnSC_ELSB_MASK);
-
-            /* Setup the active level for channel n */
-            reg |= (uint32_t)(chnlParams->level << FTM_CnSC_ELSA_SHIFT);
-
-            /* Update the mode and edge level for channel n */
-            base->CONTROLS[chnlParams->chnlNumber * 2].CnSC = reg;
-
-            /* Clear the current mode and edge level bits for channel n + 1 */
-            reg = base->CONTROLS[(chnlParams->chnlNumber * 2) + 1].CnSC;
-            reg &= ~(FTM_CnSC_MSA_MASK | FTM_CnSC_MSB_MASK | FTM_CnSC_ELSA_MASK | FTM_CnSC_ELSB_MASK);
-
-            /* Setup the active level for channel n + 1 */
-            reg |= (uint32_t)(chnlParams->level << FTM_CnSC_ELSA_SHIFT);
-
-            /* Update the mode and edge level for channel n + 1*/
-            base->CONTROLS[(chnlParams->chnlNumber * 2) + 1].CnSC = reg;
-
-            /* Set the combine bit for the channel pair */
-            base->COMBINE |=
-                (1U << (FTM_COMBINE_COMBINE0_SHIFT + (FTM_COMBINE_COMBINE1_SHIFT * chnlParams->chnlNumber)));
-
-            /* Set the channel pair values */
-            base->CONTROLS[chnlParams->chnlNumber * 2].CnV = cnvFirstEdge;
-            base->CONTROLS[(chnlParams->chnlNumber * 2) + 1].CnV = cnvFirstEdge + cnv;
-
-#if defined(FSL_FEATURE_FTM_HAS_ENABLE_PWM_OUTPUT) && (FSL_FEATURE_FTM_HAS_ENABLE_PWM_OUTPUT)
-            /* Set to output mode */
-            FTM_SetPwmOutputEnable(base, (ftm_chnl_t)((uint8_t)chnlParams->chnlNumber * 2), true);
-            FTM_SetPwmOutputEnable(base, (ftm_chnl_t)((uint8_t)chnlParams->chnlNumber * 2 + 1), true);
-#endif
-        }
-        chnlParams++;
-    }
-
-    return kStatus_Success;
-}
-
-void FTM_UpdatePwmDutycycle(FTM_Type *base,
-                            ftm_chnl_t chnlNumber,
-                            ftm_pwm_mode_t currentPwmMode,
-                            uint8_t dutyCyclePercent)
-{
-    uint16_t cnv, cnvFirstEdge = 0, mod;
-
-    mod = base->MOD;
-    if ((currentPwmMode == kFTM_EdgeAlignedPwm) || (currentPwmMode == kFTM_CenterAlignedPwm))
-    {
-        cnv = (mod * dutyCyclePercent) / 100;
-        /* For 100% duty cycle */
-        if (cnv >= mod)
-        {
-            cnv = mod + 1;
-        }
-        base->CONTROLS[chnlNumber].CnV = cnv;
-    }
-    else
-    {
-        /* This check is added for combined mode as the channel number should be the pair number */
-        if (chnlNumber >= (FSL_FEATURE_FTM_CHANNEL_COUNTn(base) / 2))
-        {
-            return;
-        }
-
-        cnv = (mod * dutyCyclePercent) / 100;
-        cnvFirstEdge = base->CONTROLS[chnlNumber * 2].CnV;
-        /* For 100% duty cycle */
-        if (cnv >= mod)
-        {
-            cnv = mod + 1;
-        }
-        base->CONTROLS[(chnlNumber * 2) + 1].CnV = cnvFirstEdge + cnv;
-    }
-}
-
-void FTM_UpdateChnlEdgeLevelSelect(FTM_Type *base, ftm_chnl_t chnlNumber, uint8_t level)
-{
-    uint32_t reg = base->CONTROLS[chnlNumber].CnSC;
-
-    /* Clear the field and write the new level value */
-    reg &= ~(FTM_CnSC_ELSA_MASK | FTM_CnSC_ELSB_MASK);
-    reg |= ((uint32_t)level << FTM_CnSC_ELSA_SHIFT) & (FTM_CnSC_ELSA_MASK | FTM_CnSC_ELSB_MASK);
-
-    base->CONTROLS[chnlNumber].CnSC = reg;
-}
-
-void FTM_SetupInputCapture(FTM_Type *base,
-                           ftm_chnl_t chnlNumber,
-                           ftm_input_capture_edge_t captureMode,
-                           uint32_t filterValue)
-{
-    uint32_t reg;
-
-    /* Clear the combine bit for the channel pair */
-    base->COMBINE &= ~(1U << (FTM_COMBINE_COMBINE0_SHIFT + (FTM_COMBINE_COMBINE1_SHIFT * (chnlNumber >> 1))));
-    /* Clear the dual edge capture mode because it's it's higher priority */
-    base->COMBINE &= ~(1U << (FTM_COMBINE_DECAPEN0_SHIFT + (FTM_COMBINE_COMBINE1_SHIFT * (chnlNumber >> 1))));
-    /* Clear the quadrature decoder mode beacause it's higher priority */
-    base->QDCTRL &= ~FTM_QDCTRL_QUADEN_MASK;
-
-    reg = base->CONTROLS[chnlNumber].CnSC;
-    reg &= ~(FTM_CnSC_MSA_MASK | FTM_CnSC_MSB_MASK | FTM_CnSC_ELSA_MASK | FTM_CnSC_ELSB_MASK);
-    reg |= captureMode;
-
-    /* Set the requested input capture mode */
-    base->CONTROLS[chnlNumber].CnSC = reg;
-    /* Input filter available only for channels 0, 1, 2, 3 */
-    if (chnlNumber < kFTM_Chnl_4)
-    {
-        reg = base->FILTER;
-        reg &= ~(FTM_FILTER_CH0FVAL_MASK << (FTM_FILTER_CH1FVAL_SHIFT * chnlNumber));
-        reg |= (filterValue << (FTM_FILTER_CH1FVAL_SHIFT * chnlNumber));
-        base->FILTER = reg;
-    }
-#if defined(FSL_FEATURE_FTM_HAS_ENABLE_PWM_OUTPUT) && (FSL_FEATURE_FTM_HAS_ENABLE_PWM_OUTPUT)
-    /* Set to input mode */
-    FTM_SetPwmOutputEnable(base, chnlNumber, false);
-#endif
-}
-
-void FTM_SetupOutputCompare(FTM_Type *base,
-                            ftm_chnl_t chnlNumber,
-                            ftm_output_compare_mode_t compareMode,
-                            uint32_t compareValue)
-{
-    uint32_t reg;
-
-    /* Clear the combine bit for the channel pair */
-    base->COMBINE &= ~(1U << (FTM_COMBINE_COMBINE0_SHIFT + (FTM_COMBINE_COMBINE1_SHIFT * (chnlNumber >> 1))));
-    /* Clear the dual edge capture mode because it's it's higher priority */
-    base->COMBINE &= ~(1U << (FTM_COMBINE_DECAPEN0_SHIFT + (FTM_COMBINE_COMBINE1_SHIFT * (chnlNumber >> 1))));
-    /* Clear the quadrature decoder mode beacause it's higher priority */
-    base->QDCTRL &= ~FTM_QDCTRL_QUADEN_MASK;
-
-    reg = base->CONTROLS[chnlNumber].CnSC;
-    reg &= ~(FTM_CnSC_MSA_MASK | FTM_CnSC_MSB_MASK | FTM_CnSC_ELSA_MASK | FTM_CnSC_ELSB_MASK);
-    reg |= compareMode;
-    /* Setup the channel output behaviour when a match occurs with the compare value */
-    base->CONTROLS[chnlNumber].CnSC = reg;
-
-    /* Set output on match to the requested level */
-    base->CONTROLS[chnlNumber].CnV = compareValue;
-
-#if defined(FSL_FEATURE_FTM_HAS_ENABLE_PWM_OUTPUT) && (FSL_FEATURE_FTM_HAS_ENABLE_PWM_OUTPUT)
-    /* Set to output mode */
-    FTM_SetPwmOutputEnable(base, chnlNumber, true);
-#endif
-}
-
-void FTM_SetupDualEdgeCapture(FTM_Type *base,
-                              ftm_chnl_t chnlPairNumber,
-                              const ftm_dual_edge_capture_param_t *edgeParam,
-                              uint32_t filterValue)
-{
-    assert(edgeParam);
-
-    uint32_t reg;
-
-    reg = base->COMBINE;
-    /* Clear the combine bit for the channel pair */
-    reg &= ~(1U << (FTM_COMBINE_COMBINE0_SHIFT + (FTM_COMBINE_COMBINE1_SHIFT * chnlPairNumber)));
-    /* Enable the DECAPEN bit */
-    reg |= (1U << (FTM_COMBINE_DECAPEN0_SHIFT + (FTM_COMBINE_COMBINE1_SHIFT * chnlPairNumber)));
-    reg |= (1U << (FTM_COMBINE_DECAP0_SHIFT + (FTM_COMBINE_COMBINE1_SHIFT * chnlPairNumber)));
-    base->COMBINE = reg;
-
-    /* Setup the edge detection from channel n and n + 1 */
-    reg = base->CONTROLS[chnlPairNumber * 2].CnSC;
-    reg &= ~(FTM_CnSC_MSA_MASK | FTM_CnSC_MSB_MASK | FTM_CnSC_ELSA_MASK | FTM_CnSC_ELSB_MASK);
-    reg |= ((uint32_t)edgeParam->mode | (uint32_t)edgeParam->currChanEdgeMode);
-    base->CONTROLS[chnlPairNumber * 2].CnSC = reg;
-
-    reg = base->CONTROLS[(chnlPairNumber * 2) + 1].CnSC;
-    reg &= ~(FTM_CnSC_MSA_MASK | FTM_CnSC_MSB_MASK | FTM_CnSC_ELSA_MASK | FTM_CnSC_ELSB_MASK);
-    reg |= ((uint32_t)edgeParam->mode | (uint32_t)edgeParam->nextChanEdgeMode);
-    base->CONTROLS[(chnlPairNumber * 2) + 1].CnSC = reg;
-
-    /* Input filter available only for channels 0, 1, 2, 3 */
-    if (chnlPairNumber < kFTM_Chnl_4)
-    {
-        reg = base->FILTER;
-        reg &= ~(FTM_FILTER_CH0FVAL_MASK << (FTM_FILTER_CH1FVAL_SHIFT * chnlPairNumber));
-        reg |= (filterValue << (FTM_FILTER_CH1FVAL_SHIFT * chnlPairNumber));
-        base->FILTER = reg;
-    }
-
-#if defined(FSL_FEATURE_FTM_HAS_ENABLE_PWM_OUTPUT) && (FSL_FEATURE_FTM_HAS_ENABLE_PWM_OUTPUT)
-    /* Set to input mode */
-    FTM_SetPwmOutputEnable(base, chnlPairNumber, false);
-#endif
-}
-
-void FTM_SetupQuadDecode(FTM_Type *base,
-                         const ftm_phase_params_t *phaseAParams,
-                         const ftm_phase_params_t *phaseBParams,
-                         ftm_quad_decode_mode_t quadMode)
-{
-    assert(phaseAParams);
-    assert(phaseBParams);
-
-    uint32_t reg;
-
-    /* Set Phase A filter value if phase filter is enabled */
-    if (phaseAParams->enablePhaseFilter)
-    {
-        reg = base->FILTER;
-        reg &= ~(FTM_FILTER_CH0FVAL_MASK);
-        reg |= FTM_FILTER_CH0FVAL(phaseAParams->phaseFilterVal);
-        base->FILTER = reg;
-    }
-
-    /* Set Phase B filter value if phase filter is enabled */
-    if (phaseBParams->enablePhaseFilter)
-    {
-        reg = base->FILTER;
-        reg &= ~(FTM_FILTER_CH1FVAL_MASK);
-        reg |= FTM_FILTER_CH1FVAL(phaseBParams->phaseFilterVal);
-        base->FILTER = reg;
-    }
-
-    /* Set Quadrature decode properties */
-    reg = base->QDCTRL;
-    reg &= ~(FTM_QDCTRL_QUADMODE_MASK | FTM_QDCTRL_PHAFLTREN_MASK | FTM_QDCTRL_PHBFLTREN_MASK | FTM_QDCTRL_PHAPOL_MASK |
-             FTM_QDCTRL_PHBPOL_MASK);
-    reg |= (FTM_QDCTRL_QUADMODE(quadMode) | FTM_QDCTRL_PHAFLTREN(phaseAParams->enablePhaseFilter) |
-            FTM_QDCTRL_PHBFLTREN(phaseBParams->enablePhaseFilter) | FTM_QDCTRL_PHAPOL(phaseAParams->phasePolarity) |
-            FTM_QDCTRL_PHBPOL(phaseBParams->phasePolarity));
-    base->QDCTRL = reg;
-    /* Enable Quad decode */
-    base->QDCTRL |= FTM_QDCTRL_QUADEN_MASK;
-}
-
-void FTM_SetupFault(FTM_Type *base, ftm_fault_input_t faultNumber, const ftm_fault_param_t *faultParams)
-{
-    assert(faultParams);
-
-    uint32_t reg;
-
-    reg = base->FLTCTRL;
-    if (faultParams->enableFaultInput)
-    {
-        /* Enable the fault input */
-        reg |= (FTM_FLTCTRL_FAULT0EN_MASK << faultNumber);
-    }
-    else
-    {
-        /* Disable the fault input */
-        reg &= ~(FTM_FLTCTRL_FAULT0EN_MASK << faultNumber);
-    }
-
-    if (faultParams->useFaultFilter)
-    {
-        /* Enable the fault filter */
-        reg |= (FTM_FLTCTRL_FFLTR0EN_MASK << (FTM_FLTCTRL_FFLTR0EN_SHIFT + faultNumber));
-    }
-    else
-    {
-        /* Disable the fault filter */
-        reg &= ~(FTM_FLTCTRL_FFLTR0EN_MASK << (FTM_FLTCTRL_FFLTR0EN_SHIFT + faultNumber));
-    }
-    base->FLTCTRL = reg;
-
-    if (faultParams->faultLevel)
-    {
-        /* Active low polarity for the fault input pin */
-        base->FLTPOL |= (1U << faultNumber);
-    }
-    else
-    {
-        /* Active high polarity for the fault input pin */
-        base->FLTPOL &= ~(1U << faultNumber);
-    }
-}
-
-void FTM_EnableInterrupts(FTM_Type *base, uint32_t mask)
-{
-    uint32_t chnlInts = (mask & 0xFFU);
-    uint8_t chnlNumber = 0;
-
-    /* Enable the timer overflow interrupt */
-    if (mask & kFTM_TimeOverflowInterruptEnable)
-    {
-        base->SC |= FTM_SC_TOIE_MASK;
-    }
-
-    /* Enable the fault interrupt */
-    if (mask & kFTM_FaultInterruptEnable)
-    {
-        base->MODE |= FTM_MODE_FAULTIE_MASK;
-    }
-
-#if defined(FSL_FEATURE_FTM_HAS_RELOAD_INTERRUPT) && (FSL_FEATURE_FTM_HAS_RELOAD_INTERRUPT)
-    /* Enable the reload interrupt available only on certain SoC's */
-    if (mask & kFTM_ReloadInterruptEnable)
-    {
-        base->SC |= FTM_SC_RIE_MASK;
-    }
-#endif
-
-    /* Enable the channel interrupts */
-    while (chnlInts)
-    {
-        if (chnlInts & 0x1)
-        {
-            base->CONTROLS[chnlNumber].CnSC |= FTM_CnSC_CHIE_MASK;
-        }
-        chnlNumber++;
-        chnlInts = chnlInts >> 1U;
-    }
-}
-
-void FTM_DisableInterrupts(FTM_Type *base, uint32_t mask)
-{
-    uint32_t chnlInts = (mask & 0xFF);
-    uint8_t chnlNumber = 0;
-
-    /* Disable the timer overflow interrupt */
-    if (mask & kFTM_TimeOverflowInterruptEnable)
-    {
-        base->SC &= ~FTM_SC_TOIE_MASK;
-    }
-    /* Disable the fault interrupt */
-    if (mask & kFTM_FaultInterruptEnable)
-    {
-        base->MODE &= ~FTM_MODE_FAULTIE_MASK;
-    }
-
-#if defined(FSL_FEATURE_FTM_HAS_RELOAD_INTERRUPT) && (FSL_FEATURE_FTM_HAS_RELOAD_INTERRUPT)
-    /* Disable the reload interrupt available only on certain SoC's */
-    if (mask & kFTM_ReloadInterruptEnable)
-    {
-        base->SC &= ~FTM_SC_RIE_MASK;
-    }
-#endif
-
-    /* Disable the channel interrupts */
-    while (chnlInts)
-    {
-        if (chnlInts & 0x1)
-        {
-            base->CONTROLS[chnlNumber].CnSC &= ~FTM_CnSC_CHIE_MASK;
-        }
-        chnlNumber++;
-        chnlInts = chnlInts >> 1U;
-    }
-}
-
-uint32_t FTM_GetEnabledInterrupts(FTM_Type *base)
-{
-    uint32_t enabledInterrupts = 0;
-    int8_t chnlCount = FSL_FEATURE_FTM_CHANNEL_COUNTn(base);
-
-    /* The CHANNEL_COUNT macro returns -1 if it cannot match the FTM instance */
-    assert(chnlCount != -1);
-
-    /* Check if timer overflow interrupt is enabled */
-    if (base->SC & FTM_SC_TOIE_MASK)
-    {
-        enabledInterrupts |= kFTM_TimeOverflowInterruptEnable;
-    }
-    /* Check if fault interrupt is enabled */
-    if (base->MODE & FTM_MODE_FAULTIE_MASK)
-    {
-        enabledInterrupts |= kFTM_FaultInterruptEnable;
-    }
-
-#if defined(FSL_FEATURE_FTM_HAS_RELOAD_INTERRUPT) && (FSL_FEATURE_FTM_HAS_RELOAD_INTERRUPT)
-    /* Check if the reload interrupt is enabled */
-    if (base->SC & FTM_SC_RIE_MASK)
-    {
-        enabledInterrupts |= kFTM_ReloadInterruptEnable;
-    }
-#endif
-
-    /* Check if the channel interrupts are enabled */
-    while (chnlCount > 0)
-    {
-        chnlCount--;
-        if (base->CONTROLS[chnlCount].CnSC & FTM_CnSC_CHIE_MASK)
-        {
-            enabledInterrupts |= (1U << chnlCount);
-        }
-    }
-
-    return enabledInterrupts;
-}
-
-uint32_t FTM_GetStatusFlags(FTM_Type *base)
-{
-    uint32_t statusFlags = 0;
-
-    /* Check the timer flag */
-    if (base->SC & FTM_SC_TOF_MASK)
-    {
-        statusFlags |= kFTM_TimeOverflowFlag;
-    }
-    /* Check fault flag */
-    if (base->FMS & FTM_FMS_FAULTF_MASK)
-    {
-        statusFlags |= kFTM_FaultFlag;
-    }
-    /* Check channel trigger flag */
-    if (base->EXTTRIG & FTM_EXTTRIG_TRIGF_MASK)
-    {
-        statusFlags |= kFTM_ChnlTriggerFlag;
-    }
-#if defined(FSL_FEATURE_FTM_HAS_RELOAD_INTERRUPT) && (FSL_FEATURE_FTM_HAS_RELOAD_INTERRUPT)
-    /* Check reload flag */
-    if (base->SC & FTM_SC_RF_MASK)
-    {
-        statusFlags |= kFTM_ReloadFlag;
-    }
-#endif
-
-    /* Lower 8 bits contain the channel status flags */
-    statusFlags |= (base->STATUS & 0xFFU);
-
-    return statusFlags;
-}
-
-void FTM_ClearStatusFlags(FTM_Type *base, uint32_t mask)
-{
-    /* Clear the timer overflow flag by writing a 0 to the bit while it is set */
-    if (mask & kFTM_TimeOverflowFlag)
-    {
-        base->SC &= ~FTM_SC_TOF_MASK;
-    }
-    /* Clear fault flag by writing a 0 to the bit while it is set */
-    if (mask & kFTM_FaultFlag)
-    {
-        base->FMS &= ~FTM_FMS_FAULTF_MASK;
-    }
-    /* Clear channel trigger flag */
-    if (mask & kFTM_ChnlTriggerFlag)
-    {
-        base->EXTTRIG &= ~FTM_EXTTRIG_TRIGF_MASK;
-    }
-
-#if defined(FSL_FEATURE_FTM_HAS_RELOAD_INTERRUPT) && (FSL_FEATURE_FTM_HAS_RELOAD_INTERRUPT)
-    /* Check reload flag by writing a 0 to the bit while it is set */
-    if (mask & kFTM_ReloadFlag)
-    {
-        base->SC &= ~FTM_SC_RF_MASK;
-    }
-#endif
-    /* Clear the channel status flags by writing a 0 to the bit */
-    base->STATUS &= ~(mask & 0xFFU);
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_ftm.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,862 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_FTM_H_
-#define _FSL_FTM_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup ftm
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-#define FSL_FTM_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) /*!< Version 2.0.0 */
-/*@}*/
-
-/*!
- * @brief List of FTM channels
- * @note Actual number of available channels is SoC dependent
- */
-typedef enum _ftm_chnl
-{
-    kFTM_Chnl_0 = 0U, /*!< FTM channel number 0*/
-    kFTM_Chnl_1,      /*!< FTM channel number 1 */
-    kFTM_Chnl_2,      /*!< FTM channel number 2 */
-    kFTM_Chnl_3,      /*!< FTM channel number 3 */
-    kFTM_Chnl_4,      /*!< FTM channel number 4 */
-    kFTM_Chnl_5,      /*!< FTM channel number 5 */
-    kFTM_Chnl_6,      /*!< FTM channel number 6 */
-    kFTM_Chnl_7       /*!< FTM channel number 7 */
-} ftm_chnl_t;
-
-/*! @brief List of FTM faults */
-typedef enum _ftm_fault_input
-{
-    kFTM_Fault_0 = 0U, /*!< FTM fault 0 input pin */
-    kFTM_Fault_1,      /*!< FTM fault 1 input pin */
-    kFTM_Fault_2,      /*!< FTM fault 2 input pin */
-    kFTM_Fault_3       /*!< FTM fault 3 input pin */
-} ftm_fault_input_t;
-
-/*! @brief FTM PWM operation modes */
-typedef enum _ftm_pwm_mode
-{
-    kFTM_EdgeAlignedPwm = 0U, /*!< Edge-aligned PWM */
-    kFTM_CenterAlignedPwm,    /*!< Center-aligned PWM */
-    kFTM_CombinedPwm          /*!< Combined PWM */
-} ftm_pwm_mode_t;
-
-/*! @brief FTM PWM output pulse mode: high-true, low-true or no output */
-typedef enum _ftm_pwm_level_select
-{
-    kFTM_NoPwmSignal = 0U, /*!< No PWM output on pin */
-    kFTM_LowTrue,          /*!< Low true pulses */
-    kFTM_HighTrue          /*!< High true pulses */
-} ftm_pwm_level_select_t;
-
-/*! @brief Options to configure a FTM channel's PWM signal */
-typedef struct _ftm_chnl_pwm_signal_param
-{
-    ftm_chnl_t chnlNumber;         /*!< The channel/channel pair number.
-                                        In combined mode, this represents the channel pair number. */
-    ftm_pwm_level_select_t level;  /*!< PWM output active level select. */
-    uint8_t dutyCyclePercent;      /*!< PWM pulse width, value should be between 0 to 100
-                                        0 = inactive signal(0% duty cycle)...
-                                        100 = always active signal (100% duty cycle).*/
-    uint8_t firstEdgeDelayPercent; /*!< Used only in combined PWM mode to generate an asymmetrical PWM.
-                                        Specifies the delay to the first edge in a PWM period.
-                                        If unsure leave as 0; Should be specified as a
-                                        percentage of the PWM period */
-} ftm_chnl_pwm_signal_param_t;
-
-/*! @brief FlexTimer output compare mode */
-typedef enum _ftm_output_compare_mode
-{
-    kFTM_NoOutputSignal = (1U << FTM_CnSC_MSA_SHIFT), /*!< No channel output when counter reaches CnV  */
-    kFTM_ToggleOnMatch = ((1U << FTM_CnSC_MSA_SHIFT) | (1U << FTM_CnSC_ELSA_SHIFT)), /*!< Toggle output */
-    kFTM_ClearOnMatch = ((1U << FTM_CnSC_MSA_SHIFT) | (2U << FTM_CnSC_ELSA_SHIFT)),  /*!< Clear output */
-    kFTM_SetOnMatch = ((1U << FTM_CnSC_MSA_SHIFT) | (3U << FTM_CnSC_ELSA_SHIFT))     /*!< Set output */
-} ftm_output_compare_mode_t;
-
-/*! @brief FlexTimer input capture edge */
-typedef enum _ftm_input_capture_edge
-{
-    kFTM_RisingEdge = (1U << FTM_CnSC_ELSA_SHIFT),     /*!< Capture on rising edge only*/
-    kFTM_FallingEdge = (2U << FTM_CnSC_ELSA_SHIFT),    /*!< Capture on falling edge only*/
-    kFTM_RiseAndFallEdge = (3U << FTM_CnSC_ELSA_SHIFT) /*!< Capture on rising or falling edge */
-} ftm_input_capture_edge_t;
-
-/*! @brief FlexTimer dual edge capture modes */
-typedef enum _ftm_dual_edge_capture_mode
-{
-    kFTM_OneShot = 0U,                           /*!< One-shot capture mode */
-    kFTM_Continuous = (1U << FTM_CnSC_MSA_SHIFT) /*!< Continuous capture mode */
-} ftm_dual_edge_capture_mode_t;
-
-/*! @brief FlexTimer dual edge capture parameters */
-typedef struct _ftm_dual_edge_capture_param
-{
-    ftm_dual_edge_capture_mode_t mode;         /*!< Dual Edge Capture mode */
-    ftm_input_capture_edge_t currChanEdgeMode; /*!< Input capture edge select for channel n */
-    ftm_input_capture_edge_t nextChanEdgeMode; /*!< Input capture edge select for channel n+1 */
-} ftm_dual_edge_capture_param_t;
-
-/*! @brief FlexTimer quadrature decode modes */
-typedef enum _ftm_quad_decode_mode
-{
-    kFTM_QuadPhaseEncode = 0U, /*!< Phase A and Phase B encoding mode */
-    kFTM_QuadCountAndDir       /*!< Count and direction encoding mode */
-} ftm_quad_decode_mode_t;
-
-/*! @brief FlexTimer quadrature phase polarities */
-typedef enum _ftm_phase_polarity
-{
-    kFTM_QuadPhaseNormal = 0U, /*!< Phase input signal is not inverted */
-    kFTM_QuadPhaseInvert       /*!< Phase input signal is inverted */
-} ftm_phase_polarity_t;
-
-/*! @brief FlexTimer quadrature decode phase parameters */
-typedef struct _ftm_phase_param
-{
-    bool enablePhaseFilter;             /*!< True: enable phase filter; false: disable filter */
-    uint32_t phaseFilterVal;            /*!< Filter value, used only if phase filter is enabled */
-    ftm_phase_polarity_t phasePolarity; /*!< Phase polarity */
-} ftm_phase_params_t;
-
-/*! @brief Structure is used to hold the parameters to configure a FTM fault */
-typedef struct _ftm_fault_param
-{
-    bool enableFaultInput; /*!< True: Fault input is enabled; false: Fault input is disabled */
-    bool faultLevel;       /*!< True: Fault polarity is active low i.e., '0' indicates a fault;
-                                False: Fault polarity is active high */
-    bool useFaultFilter;   /*!< True: Use the filtered fault signal;
-                                False: Use the direct path from fault input */
-} ftm_fault_param_t;
-
-/*! @brief FlexTimer pre-scaler factor for the dead time insertion*/
-typedef enum _ftm_deadtime_prescale
-{
-    kFTM_Deadtime_Prescale_1 = 1U, /*!< Divide by 1 */
-    kFTM_Deadtime_Prescale_4,      /*!< Divide by 4 */
-    kFTM_Deadtime_Prescale_16      /*!< Divide by 16 */
-} ftm_deadtime_prescale_t;
-
-/*! @brief FlexTimer clock source selection*/
-typedef enum _ftm_clock_source
-{
-    kFTM_SystemClock = 1U, /*!< System clock selected */
-    kFTM_FixedClock,       /*!< Fixed frequency clock */
-    kFTM_ExternalClock     /*!< External clock */
-} ftm_clock_source_t;
-
-/*! @brief FlexTimer pre-scaler factor selection for the clock source*/
-typedef enum _ftm_clock_prescale
-{
-    kFTM_Prescale_Divide_1 = 0U, /*!< Divide by 1 */
-    kFTM_Prescale_Divide_2,      /*!< Divide by 2 */
-    kFTM_Prescale_Divide_4,      /*!< Divide by 4 */
-    kFTM_Prescale_Divide_8,      /*!< Divide by 8 */
-    kFTM_Prescale_Divide_16,     /*!< Divide by 16 */
-    kFTM_Prescale_Divide_32,     /*!< Divide by 32 */
-    kFTM_Prescale_Divide_64,     /*!< Divide by 64 */
-    kFTM_Prescale_Divide_128     /*!< Divide by 128 */
-} ftm_clock_prescale_t;
-
-/*! @brief Options for the FlexTimer behaviour in BDM Mode */
-typedef enum _ftm_bdm_mode
-{
-    kFTM_BdmMode_0 = 0U,
-    /*!< FTM counter stopped, CH(n)F bit can be set, FTM channels in functional mode, writes to MOD,CNTIN and C(n)V
-       registers bypass the register buffers */
-    kFTM_BdmMode_1,
-    /*!< FTM counter stopped, CH(n)F bit is not set, FTM channels outputs are forced to their safe value , writes to
-       MOD,CNTIN and C(n)V registers bypass the register buffers */
-    kFTM_BdmMode_2,
-    /*!< FTM counter stopped, CH(n)F bit is not set, FTM channels outputs are frozen when chip enters in BDM mode,
-       writes to MOD,CNTIN and C(n)V registers bypass the register buffers */
-    kFTM_BdmMode_3
-    /*!< FTM counter in functional mode, CH(n)F bit can be set, FTM channels in functional mode, writes to MOD,CNTIN and
-       C(n)V registers is in fully functional mode */
-} ftm_bdm_mode_t;
-
-/*! @brief Options for the FTM fault control mode */
-typedef enum _ftm_fault_mode
-{
-    kFTM_Fault_Disable = 0U, /*!< Fault control is disabled for all channels */
-    kFTM_Fault_EvenChnls,    /*!< Enabled for even channels only(0,2,4,6) with manual fault clearing */
-    kFTM_Fault_AllChnlsMan,  /*!< Enabled for all channels with manual fault clearing */
-    kFTM_Fault_AllChnlsAuto  /*!< Enabled for all channels with automatic fault clearing */
-} ftm_fault_mode_t;
-
-/*!
- * @brief FTM external trigger options
- * @note Actual available external trigger sources are SoC-specific
- */
-typedef enum _ftm_external_trigger
-{
-    kFTM_Chnl0Trigger = (1U << 4), /*!< Generate trigger when counter equals chnl 0 CnV reg */
-    kFTM_Chnl1Trigger = (1U << 5), /*!< Generate trigger when counter equals chnl 1 CnV reg */
-    kFTM_Chnl2Trigger = (1U << 0), /*!< Generate trigger when counter equals chnl 2 CnV reg */
-    kFTM_Chnl3Trigger = (1U << 1), /*!< Generate trigger when counter equals chnl 3 CnV reg */
-    kFTM_Chnl4Trigger = (1U << 2), /*!< Generate trigger when counter equals chnl 4 CnV reg */
-    kFTM_Chnl5Trigger = (1U << 3), /*!< Generate trigger when counter equals chnl 5 CnV reg */
-    kFTM_Chnl6Trigger =
-        (1U << 8), /*!< Available on certain SoC's, generate trigger when counter equals chnl 6 CnV reg */
-    kFTM_Chnl7Trigger =
-        (1U << 9), /*!< Available on certain SoC's, generate trigger when counter equals chnl 7 CnV reg */
-    kFTM_InitTrigger = (1U << 6),      /*!< Generate Trigger when counter is updated with CNTIN */
-    kFTM_ReloadInitTrigger = (1U << 7) /*!< Available on certain SoC's, trigger on reload point */
-} ftm_external_trigger_t;
-
-/*! @brief FlexTimer PWM sync options to update registers with buffer */
-typedef enum _ftm_pwm_sync_method
-{
-    kFTM_SoftwareTrigger = FTM_SYNC_SWSYNC_MASK,  /*!< Software triggers PWM sync */
-    kFTM_HardwareTrigger_0 = FTM_SYNC_TRIG0_MASK, /*!< Hardware trigger 0 causes PWM sync */
-    kFTM_HardwareTrigger_1 = FTM_SYNC_TRIG1_MASK, /*!< Hardware trigger 1 causes PWM sync */
-    kFTM_HardwareTrigger_2 = FTM_SYNC_TRIG2_MASK  /*!< Hardware trigger 2 causes PWM sync */
-} ftm_pwm_sync_method_t;
-
-/*!
- * @brief FTM options available as loading point for register reload
- * @note Actual available reload points are SoC-specific
- */
-typedef enum _ftm_reload_point
-{
-    kFTM_Chnl0Match = (1U << 0),   /*!< Channel 0 match included as a reload point */
-    kFTM_Chnl1Match = (1U << 1),   /*!< Channel 1 match included as a reload point */
-    kFTM_Chnl2Match = (1U << 2),   /*!< Channel 2 match included as a reload point */
-    kFTM_Chnl3Match = (1U << 3),   /*!< Channel 3 match included as a reload point */
-    kFTM_Chnl4Match = (1U << 4),   /*!< Channel 4 match included as a reload point */
-    kFTM_Chnl5Match = (1U << 5),   /*!< Channel 5 match included as a reload point */
-    kFTM_Chnl6Match = (1U << 6),   /*!< Channel 6 match included as a reload point */
-    kFTM_Chnl7Match = (1U << 7),   /*!< Channel 7 match included as a reload point */
-    kFTM_CntMax = (1U << 8),       /*!< Use in up-down count mode only, reload when counter reaches the maximum value */
-    kFTM_CntMin = (1U << 9),       /*!< Use in up-down count mode only, reload when counter reaches the minimum value */
-    kFTM_HalfCycMatch = (1U << 10) /*!< Available on certain SoC's, half cycle match reload point */
-} ftm_reload_point_t;
-
-/*!
- * @brief List of FTM interrupts
- * @note Actual available interrupts are SoC-specific
- */
-typedef enum _ftm_interrupt_enable
-{
-    kFTM_Chnl0InterruptEnable = (1U << 0),        /*!< Channel 0 interrupt */
-    kFTM_Chnl1InterruptEnable = (1U << 1),        /*!< Channel 1 interrupt */
-    kFTM_Chnl2InterruptEnable = (1U << 2),        /*!< Channel 2 interrupt */
-    kFTM_Chnl3InterruptEnable = (1U << 3),        /*!< Channel 3 interrupt */
-    kFTM_Chnl4InterruptEnable = (1U << 4),        /*!< Channel 4 interrupt */
-    kFTM_Chnl5InterruptEnable = (1U << 5),        /*!< Channel 5 interrupt */
-    kFTM_Chnl6InterruptEnable = (1U << 6),        /*!< Channel 6 interrupt */
-    kFTM_Chnl7InterruptEnable = (1U << 7),        /*!< Channel 7 interrupt */
-    kFTM_FaultInterruptEnable = (1U << 8),        /*!< Fault interrupt */
-    kFTM_TimeOverflowInterruptEnable = (1U << 9), /*!< Time overflow interrupt */
-    kFTM_ReloadInterruptEnable = (1U << 10)       /*!< Reload interrupt; Available only on certain SoC's */
-} ftm_interrupt_enable_t;
-
-/*!
- * @brief List of FTM flags
- * @note Actual available flags are SoC-specific
- */
-typedef enum _ftm_status_flags
-{
-    kFTM_Chnl0Flag = (1U << 0),        /*!< Channel 0 Flag */
-    kFTM_Chnl1Flag = (1U << 1),        /*!< Channel 1 Flag */
-    kFTM_Chnl2Flag = (1U << 2),        /*!< Channel 2 Flag */
-    kFTM_Chnl3Flag = (1U << 3),        /*!< Channel 3 Flag */
-    kFTM_Chnl4Flag = (1U << 4),        /*!< Channel 4 Flag */
-    kFTM_Chnl5Flag = (1U << 5),        /*!< Channel 5 Flag */
-    kFTM_Chnl6Flag = (1U << 6),        /*!< Channel 6 Flag */
-    kFTM_Chnl7Flag = (1U << 7),        /*!< Channel 7 Flag */
-    kFTM_FaultFlag = (1U << 8),        /*!< Fault Flag */
-    kFTM_TimeOverflowFlag = (1U << 9), /*!< Time overflow Flag */
-    kFTM_ChnlTriggerFlag = (1U << 10), /*!< Channel trigger Flag */
-    kFTM_ReloadFlag = (1U << 11)       /*!< Reload Flag; Available only on certain SoC's */
-} ftm_status_flags_t;
-
-/*!
- * @brief FTM configuration structure
- *
- * This structure holds the configuration settings for the FTM peripheral. To initialize this
- * structure to reasonable defaults, call the FTM_GetDefaultConfig() function and pass a
- * pointer to the configuration structure instance.
- *
- * The configuration structure can be made constant so as to reside in flash.
- */
-typedef struct _ftm_config
-{
-    ftm_clock_prescale_t prescale;            /*!< FTM clock prescale value */
-    ftm_bdm_mode_t bdmMode;                   /*!< FTM behavior in BDM mode */
-    uint32_t pwmSyncMode;                     /*!< Synchronization methods to use to update buffered registers; Multiple
-                                                   update modes can be used by providing an OR'ed list of options
-                                                   available in enumeration ::ftm_pwm_sync_method_t. */
-    uint32_t reloadPoints;                    /*!< FTM reload points; When using this, the PWM
-                                                   synchronization is not required. Multiple reload points can be used by providing
-                                                   an OR'ed list of options available in
-                                                   enumeration ::ftm_reload_point_t. */
-    ftm_fault_mode_t faultMode;               /*!< FTM fault control mode */
-    uint8_t faultFilterValue;                 /*!< Fault input filter value */
-    ftm_deadtime_prescale_t deadTimePrescale; /*!< The dead time prescalar value */
-    uint8_t deadTimeValue;                    /*!< The dead time value */
-    uint32_t extTriggers;                     /*!< External triggers to enable. Multiple trigger sources can be
-                                                   enabled by providing an OR'ed list of options available in
-                                                   enumeration ::ftm_external_trigger_t. */
-    uint8_t chnlInitState;  /*!< Defines the initialization value of the channels in OUTINT register */
-    uint8_t chnlPolarity;   /*!< Defines the output polarity of the channels in POL register */
-    bool useGlobalTimeBase; /*!< True: Use of an external global time base is enabled;
-                                 False: disabled */
-} ftm_config_t;
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
- * @name Initialization and deinitialization
- * @{
- */
-
-/*!
- * @brief Ungates the FTM clock and configures the peripheral for basic operation.
- *
- * @note This API should be called at the beginning of the application using the FTM driver.
- *
- * @param base   FTM peripheral base address
- * @param config Pointer to the user configuration structure.
- *
- * @return kStatus_Success indicates success; Else indicates failure.
- */
-status_t FTM_Init(FTM_Type *base, const ftm_config_t *config);
-
-/*!
- * @brief Gates the FTM clock.
- *
- * @param base FTM peripheral base address
- */
-void FTM_Deinit(FTM_Type *base);
-
-/*!
- * @brief  Fills in the FTM configuration structure with the default settings.
- *
- * The default values are:
- * @code
- *   config->prescale = kFTM_Prescale_Divide_1;
- *   config->bdmMode = kFTM_BdmMode_0;
- *   config->pwmSyncMode = kFTM_SoftwareTrigger;
- *   config->reloadPoints = 0;
- *   config->faultMode = kFTM_Fault_Disable;
- *   config->faultFilterValue = 0;
- *   config->deadTimePrescale = kFTM_Deadtime_Prescale_1;
- *   config->deadTimeValue =  0;
- *   config->extTriggers = 0;
- *   config->chnlInitState = 0;
- *   config->chnlPolarity = 0;
- *   config->useGlobalTimeBase = false;
- * @endcode
- * @param config Pointer to the user configuration structure.
- */
-void FTM_GetDefaultConfig(ftm_config_t *config);
-
-/*! @}*/
-
-/*!
- * @name Channel mode operations
- * @{
- */
-
-/*!
- * @brief Configures the PWM signal parameters.
- *
- * Call this function to configure the PWM signal period, mode, duty cycle, and edge. Use this
- * function to configure all FTM channels that are used to output a PWM signal.
- *
- * @param base        FTM peripheral base address
- * @param chnlParams  Array of PWM channel parameters to configure the channel(s)
- * @param numOfChnls  Number of channels to configure; This should be the size of the array passed in
- * @param mode        PWM operation mode, options available in enumeration ::ftm_pwm_mode_t
- * @param pwmFreq_Hz  PWM signal frequency in Hz
- * @param srcClock_Hz FTM counter clock in Hz
- *
- * @return kStatus_Success if the PWM setup was successful
- *         kStatus_Error on failure
- */
-status_t FTM_SetupPwm(FTM_Type *base,
-                      const ftm_chnl_pwm_signal_param_t *chnlParams,
-                      uint8_t numOfChnls,
-                      ftm_pwm_mode_t mode,
-                      uint32_t pwmFreq_Hz,
-                      uint32_t srcClock_Hz);
-
-/*!
- * @brief Updates the duty cycle of an active PWM signal.
- *
- * @param base              FTM peripheral base address
- * @param chnlNumber        The channel/channel pair number. In combined mode, this represents
- *                          the channel pair number
- * @param currentPwmMode    The current PWM mode set during PWM setup
- * @param dutyCyclePercent  New PWM pulse width; The value should be between 0 to 100
- *                          0=inactive signal(0% duty cycle)...
- *                          100=active signal (100% duty cycle)
- */
-void FTM_UpdatePwmDutycycle(FTM_Type *base,
-                            ftm_chnl_t chnlNumber,
-                            ftm_pwm_mode_t currentPwmMode,
-                            uint8_t dutyCyclePercent);
-
-/*!
- * @brief Updates the edge level selection for a channel.
- *
- * @param base       FTM peripheral base address
- * @param chnlNumber The channel number
- * @param level      The level to be set to the ELSnB:ELSnA field; Valid values are 00, 01, 10, 11.
- *                   See the Kinetis SoC reference manual for details about this field.
- */
-void FTM_UpdateChnlEdgeLevelSelect(FTM_Type *base, ftm_chnl_t chnlNumber, uint8_t level);
-
-/*!
- * @brief Enables capturing an input signal on the channel using the function parameters.
- *
- * When the edge specified in the captureMode argument occurs on the channel, the FTM counter is
- * captured into the CnV register. The user has to read the CnV register separately to get this
- * value. The filter function is disabled if the filterVal argument passed in is 0. The filter
- * function is available only for channels 0, 1, 2, 3.
- *
- * @param base        FTM peripheral base address
- * @param chnlNumber  The channel number
- * @param captureMode Specifies which edge to capture
- * @param filterValue Filter value, specify 0 to disable filter. Available only for channels 0-3.
- */
-void FTM_SetupInputCapture(FTM_Type *base,
-                           ftm_chnl_t chnlNumber,
-                           ftm_input_capture_edge_t captureMode,
-                           uint32_t filterValue);
-
-/*!
- * @brief Configures the FTM to generate timed pulses.
- *
- * When the FTM counter matches the value of compareVal argument (this is written into CnV reg),
- * the channel output is changed based on what is specified in the compareMode argument.
- *
- * @param base         FTM peripheral base address
- * @param chnlNumber   The channel number
- * @param compareMode  Action to take on the channel output when the compare condition is met
- * @param compareValue Value to be programmed in the CnV register.
- */
-void FTM_SetupOutputCompare(FTM_Type *base,
-                            ftm_chnl_t chnlNumber,
-                            ftm_output_compare_mode_t compareMode,
-                            uint32_t compareValue);
-
-/*!
- * @brief Configures the dual edge capture mode of the FTM.
- *
- * This function sets up the dual edge capture mode on a channel pair. The capture edge for the
- * channel pair and the capture mode (one-shot or continuous) is specified in the parameter
- * argument. The filter function is disabled if the filterVal argument passed is zero. The filter
- * function is available only on channels 0 and 2. The user has to read the channel CnV registers
- * separately to get the capture values.
- *
- * @param base           FTM peripheral base address
- * @param chnlPairNumber The FTM channel pair number; options are 0, 1, 2, 3
- * @param edgeParam      Sets up the dual edge capture function
- * @param filterValue    Filter value, specify 0 to disable filter. Available only for channel pair 0 and 1.
- */
-void FTM_SetupDualEdgeCapture(FTM_Type *base,
-                              ftm_chnl_t chnlPairNumber,
-                              const ftm_dual_edge_capture_param_t *edgeParam,
-                              uint32_t filterValue);
-
-/*! @}*/
-
-/*!
- * @brief Configures the parameters and activates the quadrature decoder mode.
- *
- * @param base         FTM peripheral base address
- * @param phaseAParams Phase A configuration parameters
- * @param phaseBParams Phase B configuration parameters
- * @param quadMode     Selects encoding mode used in quadrature decoder mode
- */
-void FTM_SetupQuadDecode(FTM_Type *base,
-                         const ftm_phase_params_t *phaseAParams,
-                         const ftm_phase_params_t *phaseBParams,
-                         ftm_quad_decode_mode_t quadMode);
-
-/*!
- * @brief Sets up the working of the FTM fault protection.
- *
- * FTM can have up to 4 fault inputs. This function sets up fault parameters, fault level, and a filter.
- *
- * @param base        FTM peripheral base address
- * @param faultNumber FTM fault to configure.
- * @param faultParams Parameters passed in to set up the fault
- */
-void FTM_SetupFault(FTM_Type *base, ftm_fault_input_t faultNumber, const ftm_fault_param_t *faultParams);
-
-/*!
- * @name Interrupt Interface
- * @{
- */
-
-/*!
- * @brief Enables the selected FTM interrupts.
- *
- * @param base FTM peripheral base address
- * @param mask The interrupts to enable. This is a logical OR of members of the
- *             enumeration ::ftm_interrupt_enable_t
- */
-void FTM_EnableInterrupts(FTM_Type *base, uint32_t mask);
-
-/*!
- * @brief Disables the selected FTM interrupts.
- *
- * @param base FTM peripheral base address
- * @param mask The interrupts to enable. This is a logical OR of members of the
- *             enumeration ::ftm_interrupt_enable_t
- */
-void FTM_DisableInterrupts(FTM_Type *base, uint32_t mask);
-
-/*!
- * @brief Gets the enabled FTM interrupts.
- *
- * @param base FTM peripheral base address
- *
- * @return The enabled interrupts. This is the logical OR of members of the
- *         enumeration ::ftm_interrupt_enable_t
- */
-uint32_t FTM_GetEnabledInterrupts(FTM_Type *base);
-
-/*! @}*/
-
-/*!
- * @name Status Interface
- * @{
- */
-
-/*!
- * @brief Gets the FTM status flags.
- *
- * @param base FTM peripheral base address
- *
- * @return The status flags. This is the logical OR of members of the
- *         enumeration ::ftm_status_flags_t
- */
-uint32_t FTM_GetStatusFlags(FTM_Type *base);
-
-/*!
- * @brief Clears the FTM status flags.
- *
- * @param base FTM peripheral base address
- * @param mask The status flags to clear. This is a logical OR of members of the
- *             enumeration ::ftm_status_flags_t
- */
-void FTM_ClearStatusFlags(FTM_Type *base, uint32_t mask);
-
-/*! @}*/
-
-/*!
- * @name Timer Start and Stop
- * @{
- */
-
-/*!
- * @brief Starts the FTM counter.
- *
- * @param base        FTM peripheral base address
- * @param clockSource FTM clock source; After the clock source is set, the counter starts running.
- */
-static inline void FTM_StartTimer(FTM_Type *base, ftm_clock_source_t clockSource)
-{
-    uint32_t reg = base->SC;
-
-    reg &= ~(FTM_SC_CLKS_MASK);
-    reg |= FTM_SC_CLKS(clockSource);
-    base->SC = reg;
-}
-
-/*!
- * @brief Stops the FTM counter.
- *
- * @param base FTM peripheral base address
- */
-static inline void FTM_StopTimer(FTM_Type *base)
-{
-    /* Set clock source to none to disable counter */
-    base->SC &= ~(FTM_SC_CLKS_MASK);
-}
-
-/*! @}*/
-
-/*!
- * @name Software output control
- * @{
- */
-
-/*!
- * @brief Enables or disables the channel software output control.
- *
- * @param base       FTM peripheral base address
- * @param chnlNumber Channel to be enabled or disabled
- * @param value      true: channel output is affected by software output control
-                     false: channel output is unaffected by software output control
- */
-static inline void FTM_SetSoftwareCtrlEnable(FTM_Type *base, ftm_chnl_t chnlNumber, bool value)
-{
-    if (value)
-    {
-        base->SWOCTRL |= (1U << chnlNumber);
-    }
-    else
-    {
-        base->SWOCTRL &= ~(1U << chnlNumber);
-    }
-}
-
-/*!
- * @brief Sets the channel software output control value.
- *
- * @param base       FTM peripheral base address.
- * @param chnlNumber Channel to be configured
- * @param value      true to set 1, false to set 0
- */
-static inline void FTM_SetSoftwareCtrlVal(FTM_Type *base, ftm_chnl_t chnlNumber, bool value)
-{
-    if (value)
-    {
-        base->SWOCTRL |= (1U << (chnlNumber + FTM_SWOCTRL_CH0OCV_SHIFT));
-    }
-    else
-    {
-        base->SWOCTRL &= ~(1U << (chnlNumber + FTM_SWOCTRL_CH0OCV_SHIFT));
-    }
-}
-
-/*! @}*/
-
-/*!
- * @brief Enables or disables the FTM global time base signal generation to other FTMs.
- *
- * @param base   FTM peripheral base address
- * @param enable true to enable, false to disable
- */
-static inline void FTM_SetGlobalTimeBaseOutputEnable(FTM_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->CONF |= FTM_CONF_GTBEOUT_MASK;
-    }
-    else
-    {
-        base->CONF &= ~FTM_CONF_GTBEOUT_MASK;
-    }
-}
-
-/*!
- * @brief Sets the FTM peripheral timer channel output mask.
- *
- * @param base       FTM peripheral base address
- * @param chnlNumber Channel to be configured
- * @param mask       true: masked, channel is forced to its inactive state; false: unmasked
- */
-static inline void FTM_SetOutputMask(FTM_Type *base, ftm_chnl_t chnlNumber, bool mask)
-{
-    if (mask)
-    {
-        base->OUTMASK |= (1U << chnlNumber);
-    }
-    else
-    {
-        base->OUTMASK &= ~(1U << chnlNumber);
-    }
-}
-
-#if defined(FSL_FEATURE_FTM_HAS_ENABLE_PWM_OUTPUT) && (FSL_FEATURE_FTM_HAS_ENABLE_PWM_OUTPUT)
-/*!
- * @brief Allows user to enable an output on an FTM channel.
- *
- * To enable the PWM channel output call this function with val=true. For input mode,
- * call this function with val=false.
- *
- * @param base       FTM peripheral base address
- * @param chnlNumber Channel to be configured
- * @param value      true: enable output; false: output is disabled, used in input mode
- */
-static inline void FTM_SetPwmOutputEnable(FTM_Type *base, ftm_chnl_t chnlNumber, bool value)
-{
-    if (value)
-    {
-        base->SC |= (1U << (chnlNumber + FTM_SC_PWMEN0_SHIFT));
-    }
-    else
-    {
-        base->SC &= ~(1U << (chnlNumber + FTM_SC_PWMEN0_SHIFT));
-    }
-}
-#endif
-
-/*!
- * @name Channel pair operations
- * @{
- */
-
-/*!
- * @brief This function enables/disables the fault control in a channel pair.
- *
- * @param base           FTM peripheral base address
- * @param chnlPairNumber The FTM channel pair number; options are 0, 1, 2, 3
- * @param value          true: Enable fault control for this channel pair; false: No fault control
- */
-static inline void FTM_SetFaultControlEnable(FTM_Type *base, ftm_chnl_t chnlPairNumber, bool value)
-{
-    if (value)
-    {
-        base->COMBINE |= (1U << (FTM_COMBINE_FAULTEN0_SHIFT + (FTM_COMBINE_COMBINE1_SHIFT * chnlPairNumber)));
-    }
-    else
-    {
-        base->COMBINE &= ~(1U << (FTM_COMBINE_FAULTEN0_SHIFT + (FTM_COMBINE_COMBINE1_SHIFT * chnlPairNumber)));
-    }
-}
-
-/*!
- * @brief This function enables/disables the dead time insertion in a channel pair.
- *
- * @param base           FTM peripheral base address
- * @param chnlPairNumber The FTM channel pair number; options are 0, 1, 2, 3
- * @param value          true: Insert dead time in this channel pair; false: No dead time inserted
- */
-static inline void FTM_SetDeadTimeEnable(FTM_Type *base, ftm_chnl_t chnlPairNumber, bool value)
-{
-    if (value)
-    {
-        base->COMBINE |= (1U << (FTM_COMBINE_DTEN0_SHIFT + (FTM_COMBINE_COMBINE1_SHIFT * chnlPairNumber)));
-    }
-    else
-    {
-        base->COMBINE &= ~(1U << (FTM_COMBINE_DTEN0_SHIFT + (FTM_COMBINE_COMBINE1_SHIFT * chnlPairNumber)));
-    }
-}
-
-/*!
- * @brief This function enables/disables complementary mode in a channel pair.
- *
- * @param base           FTM peripheral base address
- * @param chnlPairNumber The FTM channel pair number; options are 0, 1, 2, 3
- * @param value          true: enable complementary mode; false: disable complementary mode
- */
-static inline void FTM_SetComplementaryEnable(FTM_Type *base, ftm_chnl_t chnlPairNumber, bool value)
-{
-    if (value)
-    {
-        base->COMBINE |= (1U << (FTM_COMBINE_COMP0_SHIFT + (FTM_COMBINE_COMBINE1_SHIFT * chnlPairNumber)));
-    }
-    else
-    {
-        base->COMBINE &= ~(1U << (FTM_COMBINE_COMP0_SHIFT + (FTM_COMBINE_COMBINE1_SHIFT * chnlPairNumber)));
-    }
-}
-
-/*!
- * @brief This function enables/disables inverting control in a channel pair.
- *
- * @param base            FTM peripheral base address
- * @param chnlPairNumber  The FTM channel pair number; options are 0, 1, 2, 3
- * @param value           true: enable inverting; false: disable inverting
- */
-static inline void FTM_SetInvertEnable(FTM_Type *base, ftm_chnl_t chnlPairNumber, bool value)
-{
-    if (value)
-    {
-        base->INVCTRL |= (1U << chnlPairNumber);
-    }
-    else
-    {
-        base->INVCTRL &= ~(1U << chnlPairNumber);
-    }
-}
-
-/*! @}*/
-
-/*!
- * @brief Enables or disables the FTM software trigger for PWM synchronization.
- *
- * @param base   FTM peripheral base address
- * @param enable true: software trigger is selected, false: software trigger is not selected
- */
-static inline void FTM_SetSoftwareTrigger(FTM_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->SYNC |= FTM_SYNC_SWSYNC_MASK;
-    }
-    else
-    {
-        base->SYNC &= ~FTM_SYNC_SWSYNC_MASK;
-    }
-}
-
-/*!
- * @brief Enables or disables the FTM write protection.
- *
- * @param base   FTM peripheral base address
- * @param enable true: Write-protection is enabled, false: Write-protection is disabled
- */
-static inline void FTM_SetWriteProtection(FTM_Type *base, bool enable)
-{
-    /* Configure write protection */
-    if (enable)
-    {
-        base->FMS |= FTM_FMS_WPEN_MASK;
-    }
-    else
-    {
-        base->MODE |= FTM_MODE_WPDIS_MASK;
-    }
-}
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*! @}*/
-
-#endif /* _FSL_FTM_H_*/
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_gpio.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,179 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_gpio.h"
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-static PORT_Type *const s_portBases[] = PORT_BASE_PTRS;
-static GPIO_Type *const s_gpioBases[] = GPIO_BASE_PTRS;
-
-/*******************************************************************************
-* Prototypes
-******************************************************************************/
-
-/*!
-* @brief Gets the GPIO instance according to the GPIO base
-*
-* @param base    GPIO peripheral base pointer(PTA, PTB, PTC, etc.)
-* @retval GPIO instance
-*/
-static uint32_t GPIO_GetInstance(GPIO_Type *base);
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-
-static uint32_t GPIO_GetInstance(GPIO_Type *base)
-{
-    uint32_t instance;
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < FSL_FEATURE_SOC_GPIO_COUNT; instance++)
-    {
-        if (s_gpioBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < FSL_FEATURE_SOC_GPIO_COUNT);
-
-    return instance;
-}
-
-void GPIO_PinInit(GPIO_Type *base, uint32_t pin, const gpio_pin_config_t *config)
-{
-    assert(config);
-
-    if (config->pinDirection == kGPIO_DigitalInput)
-    {
-        base->PDDR &= ~(1U << pin);
-    }
-    else
-    {
-        GPIO_WritePinOutput(base, pin, config->outputLogic);
-        base->PDDR |= (1U << pin);
-    }
-}
-
-uint32_t GPIO_GetPinsInterruptFlags(GPIO_Type *base)
-{
-    uint8_t instance;
-    PORT_Type *portBase;
-    instance = GPIO_GetInstance(base);
-    portBase = s_portBases[instance];
-    return portBase->ISFR;
-}
-
-void GPIO_ClearPinsInterruptFlags(GPIO_Type *base, uint32_t mask)
-{
-    uint8_t instance;
-    PORT_Type *portBase;
-    instance = GPIO_GetInstance(base);
-    portBase = s_portBases[instance];
-    portBase->ISFR = mask;
-}
-
-#if defined(FSL_FEATURE_SOC_FGPIO_COUNT) && FSL_FEATURE_SOC_FGPIO_COUNT
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-static FGPIO_Type *const s_fgpioBases[] = FGPIO_BASE_PTRS;
-
-/*******************************************************************************
-* Prototypes
-******************************************************************************/
-/*!
-* @brief Gets the FGPIO instance according to the GPIO base
-*
-* @param base    FGPIO peripheral base pointer(PTA, PTB, PTC, etc.)
-* @retval FGPIO instance
-*/
-static uint32_t FGPIO_GetInstance(FGPIO_Type *base);
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-
-static uint32_t FGPIO_GetInstance(FGPIO_Type *base)
-{
-    uint32_t instance;
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < FSL_FEATURE_SOC_FGPIO_COUNT; instance++)
-    {
-        if (s_fgpioBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < FSL_FEATURE_SOC_FGPIO_COUNT);
-
-    return instance;
-}
-
-void FGPIO_PinInit(FGPIO_Type *base, uint32_t pin, const gpio_pin_config_t *config)
-{
-    assert(config);
-
-    if (config->pinDirection == kGPIO_DigitalInput)
-    {
-        base->PDDR &= ~(1U << pin);
-    }
-    else
-    {
-        FGPIO_WritePinOutput(base, pin, config->outputLogic);
-        base->PDDR |= (1U << pin);
-    }
-}
-
-uint32_t FGPIO_GetPinsInterruptFlags(FGPIO_Type *base)
-{
-    uint8_t instance;
-    instance = FGPIO_GetInstance(base);
-    PORT_Type *portBase;
-    portBase = s_portBases[instance];
-    return portBase->ISFR;
-}
-
-void FGPIO_ClearPinsInterruptFlags(FGPIO_Type *base, uint32_t mask)
-{
-    uint8_t instance;
-    instance = FGPIO_GetInstance(base);
-    PORT_Type *portBase;
-    portBase = s_portBases[instance];
-    portBase->ISFR = mask;
-}
-
-#endif /* FSL_FEATURE_SOC_FGPIO_COUNT */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_gpio.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,390 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SDRVL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _FSL_GPIO_H_
-#define _FSL_GPIO_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup gpio
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief GPIO driver version 2.1.0. */
-#define FSL_GPIO_DRIVER_VERSION (MAKE_VERSION(2, 1, 0))
-/*@}*/
-
-/*! @brief GPIO direction definition*/
-typedef enum _gpio_pin_direction
-{
-    kGPIO_DigitalInput = 0U,  /*!< Set current pin as digital input*/
-    kGPIO_DigitalOutput = 1U, /*!< Set current pin as digital output*/
-} gpio_pin_direction_t;
-
-/*!
- * @brief The GPIO pin configuration structure.
- *
- * Every pin can only be configured as either output pin or input pin at a time.
- * If configured as a input pin, then leave the outputConfig unused
- * Note : In some cases, the corresponding port property should be configured in advance
- *        with the PORT_SetPinConfig()
- */
-typedef struct _gpio_pin_config
-{
-    gpio_pin_direction_t pinDirection; /*!< gpio direction, input or output */
-    /* Output configurations, please ignore if configured as a input one */
-    uint8_t outputLogic; /*!< Set default output logic, no use in input */
-} gpio_pin_config_t;
-
-/*! @} */
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
- * @addtogroup gpio_driver
- * @{
- */
-
-/*! @name GPIO Configuration */
-/*@{*/
-
-/*!
- * @brief Initializes a GPIO pin used by the board.
- *
- * To initialize the GPIO, define a pin configuration, either input or output, in the user file.
- * Then, call the GPIO_PinInit() function.
- *
- * This is an example to define an input pin or output pin configuration:
- * @code
- * // Define a digital input pin configuration,
- * gpio_pin_config_t config =
- * {
- *   kGPIO_DigitalInput,
- *   0,
- * }
- * //Define a digital output pin configuration,
- * gpio_pin_config_t config =
- * {
- *   kGPIO_DigitalOutput,
- *   0,
- * }
- * @endcode
- *
- * @param base   GPIO peripheral base pointer(GPIOA, GPIOB, GPIOC, and so on.)
- * @param pin    GPIO port pin number
- * @param config GPIO pin configuration pointer
- */
-void GPIO_PinInit(GPIO_Type *base, uint32_t pin, const gpio_pin_config_t *config);
-
-/*@}*/
-
-/*! @name GPIO Output Operations */
-/*@{*/
-
-/*!
- * @brief Sets the output level of the multiple GPIO pins to the logic 1 or 0.
- *
- * @param base    GPIO peripheral base pointer(GPIOA, GPIOB, GPIOC, and so on.)
- * @param pin     GPIO pin's number
- * @param output  GPIO pin output logic level.
- *        - 0: corresponding pin output low logic level.
- *        - 1: corresponding pin output high logic level.
- */
-static inline void GPIO_WritePinOutput(GPIO_Type *base, uint32_t pin, uint8_t output)
-{
-    if (output == 0U)
-    {
-        base->PCOR = 1 << pin;
-    }
-    else
-    {
-        base->PSOR = 1 << pin;
-    }
-}
-
-/*!
- * @brief Sets the output level of the multiple GPIO pins to the logic 1.
- *
- * @param base GPIO peripheral base pointer(GPIOA, GPIOB, GPIOC, and so on.)
- * @param mask GPIO pins' numbers macro
- */
-static inline void GPIO_SetPinsOutput(GPIO_Type *base, uint32_t mask)
-{
-    base->PSOR = mask;
-}
-
-/*!
- * @brief Sets the output level of the multiple GPIO pins to the logic 0.
- *
- * @param base GPIO peripheral base pointer(GPIOA, GPIOB, GPIOC, and so on.)
- * @param mask GPIO pins' numbers macro
- */
-static inline void GPIO_ClearPinsOutput(GPIO_Type *base, uint32_t mask)
-{
-    base->PCOR = mask;
-}
-
-/*!
- * @brief Reverses current output logic of the multiple GPIO pins.
- *
- * @param base GPIO peripheral base pointer(GPIOA, GPIOB, GPIOC, and so on.)
- * @param mask GPIO pins' numbers macro
- */
-static inline void GPIO_TogglePinsOutput(GPIO_Type *base, uint32_t mask)
-{
-    base->PTOR = mask;
-}
-/*@}*/
-
-/*! @name GPIO Input Operations */
-/*@{*/
-
-/*!
- * @brief Reads the current input value of the whole GPIO port.
- *
- * @param base GPIO peripheral base pointer(GPIOA, GPIOB, GPIOC, and so on.)
- * @param pin     GPIO pin's number
- * @retval GPIO port input value
- *        - 0: corresponding pin input low logic level.
- *        - 1: corresponding pin input high logic level.
- */
-static inline uint32_t GPIO_ReadPinInput(GPIO_Type *base, uint32_t pin)
-{
-    return (((base->PDIR) >> pin) & 0x01U);
-}
-/*@}*/
-
-/*! @name GPIO Interrupt */
-/*@{*/
-
-/*!
- * @brief Reads whole GPIO port interrupt status flag.
- *
- * If a pin is configured to generate the DMA request, the corresponding flag
- * is cleared automatically at the completion of the requested DMA transfer.
- * Otherwise, the flag remains set until a logic one is written to that flag.
- * If configured for a level sensitive interrupt that remains asserted, the flag
- * is set again immediately.
- *
- * @param base GPIO peripheral base pointer(GPIOA, GPIOB, GPIOC, and so on.)
- * @retval Current GPIO port interrupt status flag, for example, 0x00010001 means the
- *         pin 0 and 17 have the interrupt.
- */
-uint32_t GPIO_GetPinsInterruptFlags(GPIO_Type *base);
-
-/*!
- * @brief Clears multiple GPIO pins' interrupt status flag.
- *
- * @param base GPIO peripheral base pointer(GPIOA, GPIOB, GPIOC, and so on.)
- * @param mask GPIO pins' numbers macro
- */
-void GPIO_ClearPinsInterruptFlags(GPIO_Type *base, uint32_t mask);
-
-/*@}*/
-/*! @} */
-
-/*!
- * @addtogroup fgpio_driver
- * @{
- */
-
-/*
- * Introduce the FGPIO feature.
- *
- * The FGPIO features are only support on some of Kinetis chips. The FGPIO registers are aliased to the IOPORT
- * interface. Accesses via the IOPORT interface occur in parallel with any instruction fetches and will therefore
- * complete in a single cycle. This aliased Fast GPIO memory map is called FGPIO.
- */
-
-#if defined(FSL_FEATURE_SOC_FGPIO_COUNT) && FSL_FEATURE_SOC_FGPIO_COUNT
-
-/*! @name FGPIO Configuration */
-/*@{*/
-
-/*!
- * @brief Initializes a FGPIO pin used by the board.
- *
- * To initialize the FGPIO driver, define a pin configuration, either input or output, in the user file.
- * Then, call the FGPIO_PinInit() function.
- *
- * This is an example to define an input pin or output pin configuration:
- * @code
- * // Define a digital input pin configuration,
- * gpio_pin_config_t config =
- * {
- *   kGPIO_DigitalInput,
- *   0,
- * }
- * //Define a digital output pin configuration,
- * gpio_pin_config_t config =
- * {
- *   kGPIO_DigitalOutput,
- *   0,
- * }
- * @endcode
- *
- * @param base   FGPIO peripheral base pointer(GPIOA, GPIOB, GPIOC, and so on.)
- * @param pin    FGPIO port pin number
- * @param config FGPIO pin configuration pointer
- */
-void FGPIO_PinInit(FGPIO_Type *base, uint32_t pin, const gpio_pin_config_t *config);
-
-/*@}*/
-
-/*! @name FGPIO Output Operations */
-/*@{*/
-
-/*!
- * @brief Sets the output level of the multiple FGPIO pins to the logic 1 or 0.
- *
- * @param base    FGPIO peripheral base pointer(GPIOA, GPIOB, GPIOC, and so on.)
- * @param pin     FGPIO pin's number
- * @param output  FGPIOpin output logic level.
- *        - 0: corresponding pin output low logic level.
- *        - 1: corresponding pin output high logic level.
- */
-static inline void FGPIO_WritePinOutput(FGPIO_Type *base, uint32_t pin, uint8_t output)
-{
-    if (output == 0U)
-    {
-        base->PCOR = 1 << pin;
-    }
-    else
-    {
-        base->PSOR = 1 << pin;
-    }
-}
-
-/*!
- * @brief Sets the output level of the multiple FGPIO pins to the logic 1.
- *
- * @param base FGPIO peripheral base pointer(GPIOA, GPIOB, GPIOC, and so on.)
- * @param mask FGPIO pins' numbers macro
- */
-static inline void FGPIO_SetPinsOutput(FGPIO_Type *base, uint32_t mask)
-{
-    base->PSOR = mask;
-}
-
-/*!
- * @brief Sets the output level of the multiple FGPIO pins to the logic 0.
- *
- * @param base FGPIO peripheral base pointer(GPIOA, GPIOB, GPIOC, and so on.)
- * @param mask FGPIO pins' numbers macro
- */
-static inline void FGPIO_ClearPinsOutput(FGPIO_Type *base, uint32_t mask)
-{
-    base->PCOR = mask;
-}
-
-/*!
- * @brief Reverses current output logic of the multiple FGPIO pins.
- *
- * @param base FGPIO peripheral base pointer(GPIOA, GPIOB, GPIOC, and so on.)
- * @param mask FGPIO pins' numbers macro
- */
-static inline void FGPIO_TogglePinsOutput(FGPIO_Type *base, uint32_t mask)
-{
-    base->PTOR = mask;
-}
-/*@}*/
-
-/*! @name FGPIO Input Operations */
-/*@{*/
-
-/*!
- * @brief Reads the current input value of the whole FGPIO port.
- *
- * @param base FGPIO peripheral base pointer(GPIOA, GPIOB, GPIOC, and so on.)
- * @param pin  FGPIO pin's number
- * @retval FGPIO port input value
- *        - 0: corresponding pin input low logic level.
- *        - 1: corresponding pin input high logic level.
- */
-static inline uint32_t FGPIO_ReadPinInput(FGPIO_Type *base, uint32_t pin)
-{
-    return (((base->PDIR) >> pin) & 0x01U);
-}
-/*@}*/
-
-/*! @name FGPIO Interrupt */
-/*@{*/
-
-/*!
- * @brief Reads the whole FGPIO port interrupt status flag.
- *
- * If a pin is configured to generate the DMA request,  the corresponding flag
- * is cleared automatically at the completion of the requested DMA transfer.
- * Otherwise, the flag remains set until a logic one is written to that flag.
- * If configured for a level sensitive interrupt that remains asserted, the flag
- * is set again immediately.
- *
- * @param base FGPIO peripheral base pointer(GPIOA, GPIOB, GPIOC, and so on.)
- * @retval Current FGPIO port interrupt status flags, for example, 0x00010001 means the
- *         pin 0 and 17 have the interrupt.
- */
-uint32_t FGPIO_GetPinsInterruptFlags(FGPIO_Type *base);
-
-/*!
- * @brief Clears the multiple FGPIO pins' interrupt status flag.
- *
- * @param base FGPIO peripheral base pointer(GPIOA, GPIOB, GPIOC, and so on.)
- * @param mask FGPIO pins' numbers macro
- */
-void FGPIO_ClearPinsInterruptFlags(FGPIO_Type *base, uint32_t mask);
-
-/*@}*/
-
-#endif /* FSL_FEATURE_SOC_FGPIO_COUNT */
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*!
- * @}
- */
-
-#endif /* _FSL_GPIO_H_*/
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_i2c.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1536 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "fsl_i2c.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @brief i2c transfer state. */
-enum _i2c_transfer_states
-{
-    kIdleState = 0x0U,             /*!< I2C bus idle. */
-    kCheckAddressState = 0x1U,     /*!< 7-bit address check state. */
-    kSendCommandState = 0x2U,      /*!< Send command byte phase. */
-    kSendDataState = 0x3U,         /*!< Send data transfer phase. */
-    kReceiveDataBeginState = 0x4U, /*!< Receive data transfer phase begin. */
-    kReceiveDataState = 0x5U,      /*!< Receive data transfer phase. */
-};
-
-/*! @brief Common sets of flags used by the driver. */
-enum _i2c_flag_constants
-{
-/*! All flags which are cleared by the driver upon starting a transfer. */
-#if defined(FSL_FEATURE_I2C_HAS_START_STOP_DETECT) && FSL_FEATURE_I2C_HAS_START_STOP_DETECT
-    kClearFlags = kI2C_ArbitrationLostFlag | kI2C_IntPendingFlag | kI2C_StartDetectFlag | kI2C_StopDetectFlag,
-    kIrqFlags = kI2C_GlobalInterruptEnable | kI2C_StartStopDetectInterruptEnable,
-#elif defined(FSL_FEATURE_I2C_HAS_STOP_DETECT) && FSL_FEATURE_I2C_HAS_STOP_DETECT
-    kClearFlags = kI2C_ArbitrationLostFlag | kI2C_IntPendingFlag | kI2C_StopDetectFlag,
-    kIrqFlags = kI2C_GlobalInterruptEnable | kI2C_StopDetectInterruptEnable,
-#else
-    kClearFlags = kI2C_ArbitrationLostFlag | kI2C_IntPendingFlag,
-    kIrqFlags = kI2C_GlobalInterruptEnable,
-#endif
-
-};
-
-/*! @brief Typedef for interrupt handler. */
-typedef void (*i2c_isr_t)(I2C_Type *base, void *i2cHandle);
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-
-/*!
- * @brief Get instance number for I2C module.
- *
- * @param base I2C peripheral base address.
- */
-uint32_t I2C_GetInstance(I2C_Type *base);
-
-/*!
- * @brief Set up master transfer, send slave address and decide the initial
- * transfer state.
- *
- * @param base I2C peripheral base address.
- * @param handle pointer to i2c_master_handle_t structure which stores the transfer state.
- * @param xfer pointer to i2c_master_transfer_t structure.
- */
-static status_t I2C_InitTransferStateMachine(I2C_Type *base, i2c_master_handle_t *handle, i2c_master_transfer_t *xfer);
-
-/*!
- * @brief Check and clear status operation.
- *
- * @param base I2C peripheral base address.
- * @param status current i2c hardware status.
- * @retval kStatus_Success No error found.
- * @retval kStatus_I2C_ArbitrationLost Transfer error, arbitration lost.
- * @retval kStatus_I2C_Nak Received Nak error.
- */
-static status_t I2C_CheckAndClearError(I2C_Type *base, uint32_t status);
-
-/*!
- * @brief Master run transfer state machine to perform a byte of transfer.
- *
- * @param base I2C peripheral base address.
- * @param handle pointer to i2c_master_handle_t structure which stores the transfer state
- * @param isDone input param to get whether the thing is done, true is done
- * @retval kStatus_Success No error found.
- * @retval kStatus_I2C_ArbitrationLost Transfer error, arbitration lost.
- * @retval kStatus_I2C_Nak Received Nak error.
- * @retval kStatus_I2C_Timeout Transfer error, wait signal timeout.
- */
-static status_t I2C_MasterTransferRunStateMachine(I2C_Type *base, i2c_master_handle_t *handle, bool *isDone);
-
-/*!
- * @brief I2C common interrupt handler.
- *
- * @param base I2C peripheral base address.
- * @param handle pointer to i2c_master_handle_t structure which stores the transfer state
- */
-static void I2C_TransferCommonIRQHandler(I2C_Type *base, void *handle);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-
-/*! @brief Pointers to i2c handles for each instance. */
-static void *s_i2cHandle[FSL_FEATURE_SOC_I2C_COUNT] = {NULL};
-
-/*! @brief SCL clock divider used to calculate baudrate. */
-const uint16_t s_i2cDividerTable[] = {20,   22,   24,   26,   28,   30,   34,   40,   28,   32,   36,   40,  44,
-                                      48,   56,   68,   48,   56,   64,   72,   80,   88,   104,  128,  80,  96,
-                                      112,  128,  144,  160,  192,  240,  160,  192,  224,  256,  288,  320, 384,
-                                      480,  320,  384,  448,  512,  576,  640,  768,  960,  640,  768,  896, 1024,
-                                      1152, 1280, 1536, 1920, 1280, 1536, 1792, 2048, 2304, 2560, 3072, 3840};
-
-/*! @brief Pointers to i2c bases for each instance. */
-static I2C_Type *const s_i2cBases[] = I2C_BASE_PTRS;
-
-/*! @brief Pointers to i2c IRQ number for each instance. */
-const IRQn_Type s_i2cIrqs[] = I2C_IRQS;
-
-/*! @brief Pointers to i2c clocks for each instance. */
-const clock_ip_name_t s_i2cClocks[] = I2C_CLOCKS;
-
-/*! @brief Pointer to master IRQ handler for each instance. */
-static i2c_isr_t s_i2cMasterIsr;
-
-/*! @brief Pointer to slave IRQ handler for each instance. */
-static i2c_isr_t s_i2cSlaveIsr;
-
-/*******************************************************************************
- * Codes
- ******************************************************************************/
-
-uint32_t I2C_GetInstance(I2C_Type *base)
-{
-    uint32_t instance;
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < FSL_FEATURE_SOC_I2C_COUNT; instance++)
-    {
-        if (s_i2cBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < FSL_FEATURE_SOC_I2C_COUNT);
-
-    return instance;
-}
-
-static status_t I2C_InitTransferStateMachine(I2C_Type *base, i2c_master_handle_t *handle, i2c_master_transfer_t *xfer)
-{
-    status_t result = kStatus_Success;
-    i2c_direction_t direction = xfer->direction;
-    uint16_t timeout = UINT16_MAX;
-
-    /* Initialize the handle transfer information. */
-    handle->transfer = *xfer;
-
-    /* Save total transfer size. */
-    handle->transferSize = xfer->dataSize;
-
-    /* Initial transfer state. */
-    if (handle->transfer.subaddressSize > 0)
-    {
-        handle->state = kSendCommandState;
-        if (xfer->direction == kI2C_Read)
-        {
-            direction = kI2C_Write;
-        }
-    }
-    else
-    {
-        handle->state = kCheckAddressState;
-    }
-
-    /* Wait until the data register is ready for transmit. */
-    while ((!(base->S & kI2C_TransferCompleteFlag)) && (--timeout))
-    {
-    }
-
-    /* Failed to start the transfer. */
-    if (timeout == 0)
-    {
-        return kStatus_I2C_Timeout;
-    }
-
-    /* Clear all status before transfer. */
-    I2C_MasterClearStatusFlags(base, kClearFlags);
-
-    /* If repeated start is requested, send repeated start. */
-    if (handle->transfer.flags & kI2C_TransferRepeatedStartFlag)
-    {
-        result = I2C_MasterRepeatedStart(base, handle->transfer.slaveAddress, direction);
-    }
-    else /* For normal transfer, send start. */
-    {
-        result = I2C_MasterStart(base, handle->transfer.slaveAddress, direction);
-    }
-
-    return result;
-}
-
-static status_t I2C_CheckAndClearError(I2C_Type *base, uint32_t status)
-{
-    status_t result = kStatus_Success;
-
-    /* Check arbitration lost. */
-    if (status & kI2C_ArbitrationLostFlag)
-    {
-        /* Clear arbitration lost flag. */
-        base->S = kI2C_ArbitrationLostFlag;
-        result = kStatus_I2C_ArbitrationLost;
-    }
-    /* Check NAK */
-    else if (status & kI2C_ReceiveNakFlag)
-    {
-        result = kStatus_I2C_Nak;
-    }
-    else
-    {
-    }
-
-    return result;
-}
-
-static status_t I2C_MasterTransferRunStateMachine(I2C_Type *base, i2c_master_handle_t *handle, bool *isDone)
-{
-    status_t result = kStatus_Success;
-    uint32_t statusFlags = base->S;
-    *isDone = false;
-    volatile uint8_t dummy = 0;
-    bool ignoreNak = ((handle->state == kSendDataState) && (handle->transfer.dataSize == 0U)) ||
-                     ((handle->state == kReceiveDataState) && (handle->transfer.dataSize == 1U));
-
-    /* Add this to avoid build warning. */
-    dummy++;
-
-    /* Check & clear error flags. */
-    result = I2C_CheckAndClearError(base, statusFlags);
-
-    /* Ignore Nak when it's appeared for last byte. */
-    if ((result == kStatus_I2C_Nak) && ignoreNak)
-    {
-        result = kStatus_Success;
-    }
-
-    if (result)
-    {
-        return result;
-    }
-
-    /* Handle Check address state to check the slave address is Acked in slave
-       probe application. */
-    if (handle->state == kCheckAddressState)
-    {
-        if (statusFlags & kI2C_ReceiveNakFlag)
-        {
-            return kStatus_I2C_Nak;
-        }
-        else
-        {
-            if (handle->transfer.direction == kI2C_Write)
-            {
-                /* Next state, send data. */
-                handle->state = kSendDataState;
-            }
-            else
-            {
-                /* Next state, receive data begin. */
-                handle->state = kReceiveDataBeginState;
-            }
-        }
-    }
-
-    /* Run state machine. */
-    switch (handle->state)
-    {
-        /* Send I2C command. */
-        case kSendCommandState:
-            if (handle->transfer.subaddressSize)
-            {
-                handle->transfer.subaddressSize--;
-                base->D = ((handle->transfer.subaddress) >> (8 * handle->transfer.subaddressSize));
-            }
-            else
-            {
-                if (handle->transfer.direction == kI2C_Write)
-                {
-                    /* Next state, send data. */
-                    handle->state = kSendDataState;
-
-                    /* Send first byte of data. */
-                    if (handle->transfer.dataSize > 0)
-                    {
-                        base->D = *handle->transfer.data;
-                        handle->transfer.data++;
-                        handle->transfer.dataSize--;
-                    }
-                }
-                else
-                {
-                    /* Send repeated start and slave address. */
-                    result = I2C_MasterRepeatedStart(base, handle->transfer.slaveAddress, kI2C_Read);
-
-                    /* Next state, receive data begin. */
-                    handle->state = kReceiveDataBeginState;
-                }
-            }
-            break;
-
-        /* Send I2C data. */
-        case kSendDataState:
-            /* Send one byte of data. */
-            if (handle->transfer.dataSize > 0)
-            {
-                base->D = *handle->transfer.data;
-                handle->transfer.data++;
-                handle->transfer.dataSize--;
-            }
-            else
-            {
-                *isDone = true;
-            }
-            break;
-
-        /* Start I2C data receive. */
-        case kReceiveDataBeginState:
-            base->C1 &= ~(I2C_C1_TX_MASK | I2C_C1_TXAK_MASK);
-
-            /* Send nak at the last receive byte. */
-            if (handle->transfer.dataSize == 1)
-            {
-                base->C1 |= I2C_C1_TXAK_MASK;
-            }
-
-            /* Read dummy to release the bus. */
-            dummy = base->D;
-
-            /* Next state, receive data. */
-            handle->state = kReceiveDataState;
-            break;
-
-        /* Receive I2C data. */
-        case kReceiveDataState:
-            /* Receive one byte of data. */
-            if (handle->transfer.dataSize--)
-            {
-                if (handle->transfer.dataSize == 0)
-                {
-                    *isDone = true;
-
-                    /* Send stop if kI2C_TransferNoStop is not asserted. */
-                    if (!(handle->transfer.flags & kI2C_TransferNoStopFlag))
-                    {
-                        result = I2C_MasterStop(base);
-                    }
-                }
-
-                /* Send NAK at the last receive byte. */
-                if (handle->transfer.dataSize == 1)
-                {
-                    base->C1 |= I2C_C1_TXAK_MASK;
-                }
-
-                /* Read the data byte into the transfer buffer. */
-                *handle->transfer.data = base->D;
-                handle->transfer.data++;
-            }
-            break;
-
-        default:
-            break;
-    }
-
-    return result;
-}
-
-static void I2C_TransferCommonIRQHandler(I2C_Type *base, void *handle)
-{
-    /* Check if master interrupt. */
-    if ((base->S & kI2C_ArbitrationLostFlag) || (base->C1 & I2C_C1_MST_MASK))
-    {
-        s_i2cMasterIsr(base, handle);
-    }
-    else
-    {
-        s_i2cSlaveIsr(base, handle);
-    }
-}
-
-void I2C_MasterInit(I2C_Type *base, const i2c_master_config_t *masterConfig, uint32_t srcClock_Hz)
-{
-    assert(masterConfig && srcClock_Hz);
-
-    /* Temporary register for filter read. */
-    uint8_t fltReg;
-#if defined(FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION) && FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION
-    uint8_t c2Reg;
-#endif
-
-    /* Enable I2C clock. */
-    CLOCK_EnableClock(s_i2cClocks[I2C_GetInstance(base)]);
-
-    /* Disable I2C prior to configuring it. */
-    base->C1 &= ~(I2C_C1_IICEN_MASK);
-
-    /* Clear all flags. */
-    I2C_MasterClearStatusFlags(base, kClearFlags);
-
-    /* Configure baud rate. */
-    I2C_MasterSetBaudRate(base, masterConfig->baudRate_Bps, srcClock_Hz);
-
-#if defined(FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION) && FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION
-    /* Configure high drive feature. */
-    c2Reg = base->C2;
-    c2Reg &= ~(I2C_C2_HDRS_MASK);
-    c2Reg |= I2C_C2_HDRS(masterConfig->enableHighDrive);
-    base->C2 = c2Reg;
-#endif
-
-    /* Read out the FLT register. */
-    fltReg = base->FLT;
-
-#if defined(FSL_FEATURE_I2C_HAS_STOP_HOLD_OFF) && FSL_FEATURE_I2C_HAS_STOP_HOLD_OFF
-    /* Configure the stop / hold enable. */
-    fltReg &= ~(I2C_FLT_SHEN_MASK);
-    fltReg |= I2C_FLT_SHEN(masterConfig->enableStopHold);
-#endif
-
-    /* Configure the glitch filter value. */
-    fltReg &= ~(I2C_FLT_FLT_MASK);
-    fltReg |= I2C_FLT_FLT(masterConfig->glitchFilterWidth);
-
-    /* Write the register value back to the filter register. */
-    base->FLT = fltReg;
-
-    /* Enable the I2C peripheral based on the configuration. */
-    base->C1 = I2C_C1_IICEN(masterConfig->enableMaster);
-}
-
-void I2C_MasterDeinit(I2C_Type *base)
-{
-    /* Disable I2C module. */
-    I2C_Enable(base, false);
-
-    /* Disable I2C clock. */
-    CLOCK_DisableClock(s_i2cClocks[I2C_GetInstance(base)]);
-}
-
-void I2C_MasterGetDefaultConfig(i2c_master_config_t *masterConfig)
-{
-    assert(masterConfig);
-
-    /* Default baud rate at 100kbps. */
-    masterConfig->baudRate_Bps = 100000U;
-
-/* Default pin high drive is disabled. */
-#if defined(FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION) && FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION
-    masterConfig->enableHighDrive = false;
-#endif
-
-/* Default stop hold enable is disabled. */
-#if defined(FSL_FEATURE_I2C_HAS_STOP_HOLD_OFF) && FSL_FEATURE_I2C_HAS_STOP_HOLD_OFF
-    masterConfig->enableStopHold = false;
-#endif
-
-    /* Default glitch filter value is no filter. */
-    masterConfig->glitchFilterWidth = 0U;
-
-    /* Enable the I2C peripheral. */
-    masterConfig->enableMaster = true;
-}
-
-void I2C_EnableInterrupts(I2C_Type *base, uint32_t mask)
-{
-    if (mask & kI2C_GlobalInterruptEnable)
-    {
-        base->C1 |= I2C_C1_IICIE_MASK;
-    }
-
-#if defined(FSL_FEATURE_I2C_HAS_STOP_DETECT) && FSL_FEATURE_I2C_HAS_STOP_DETECT
-    if (mask & kI2C_StopDetectInterruptEnable)
-    {
-        base->FLT |= I2C_FLT_STOPIE_MASK;
-    }
-#endif /* FSL_FEATURE_I2C_HAS_STOP_DETECT */
-
-#if defined(FSL_FEATURE_I2C_HAS_START_STOP_DETECT) && FSL_FEATURE_I2C_HAS_START_STOP_DETECT
-    if (mask & kI2C_StartStopDetectInterruptEnable)
-    {
-        base->FLT |= I2C_FLT_SSIE_MASK;
-    }
-#endif /* FSL_FEATURE_I2C_HAS_START_STOP_DETECT */
-}
-
-void I2C_DisableInterrupts(I2C_Type *base, uint32_t mask)
-{
-    if (mask & kI2C_GlobalInterruptEnable)
-    {
-        base->C1 &= ~I2C_C1_IICIE_MASK;
-    }
-
-#if defined(FSL_FEATURE_I2C_HAS_STOP_DETECT) && FSL_FEATURE_I2C_HAS_STOP_DETECT
-    if (mask & kI2C_StopDetectInterruptEnable)
-    {
-        base->FLT &= ~I2C_FLT_STOPIE_MASK;
-    }
-#endif /* FSL_FEATURE_I2C_HAS_STOP_DETECT */
-
-#if defined(FSL_FEATURE_I2C_HAS_START_STOP_DETECT) && FSL_FEATURE_I2C_HAS_START_STOP_DETECT
-    if (mask & kI2C_StartStopDetectInterruptEnable)
-    {
-        base->FLT &= ~I2C_FLT_SSIE_MASK;
-    }
-#endif /* FSL_FEATURE_I2C_HAS_START_STOP_DETECT */
-}
-
-void I2C_MasterSetBaudRate(I2C_Type *base, uint32_t baudRate_Bps, uint32_t srcClock_Hz)
-{
-    uint32_t multiplier;
-    uint32_t computedRate;
-    uint32_t absError;
-    uint32_t bestError = UINT32_MAX;
-    uint32_t bestMult = 0u;
-    uint32_t bestIcr = 0u;
-    uint8_t mult;
-    uint8_t i;
-
-    /* Search for the settings with the lowest error. Mult is the MULT field of the I2C_F register,
-     * and ranges from 0-2. It selects the multiplier factor for the divider. */
-    for (mult = 0u; (mult <= 2u) && (bestError != 0); ++mult)
-    {
-        multiplier = 1u << mult;
-
-        /* Scan table to find best match. */
-        for (i = 0u; i < sizeof(s_i2cDividerTable) / sizeof(uint16_t); ++i)
-        {
-            computedRate = srcClock_Hz / (multiplier * s_i2cDividerTable[i]);
-            absError = baudRate_Bps > computedRate ? (baudRate_Bps - computedRate) : (computedRate - baudRate_Bps);
-
-            if (absError < bestError)
-            {
-                bestMult = mult;
-                bestIcr = i;
-                bestError = absError;
-
-                /* If the error is 0, then we can stop searching because we won't find a better match. */
-                if (absError == 0)
-                {
-                    break;
-                }
-            }
-        }
-    }
-
-    /* Set frequency register based on best settings. */
-    base->F = I2C_F_MULT(bestMult) | I2C_F_ICR(bestIcr);
-}
-
-status_t I2C_MasterStart(I2C_Type *base, uint8_t address, i2c_direction_t direction)
-{
-    status_t result = kStatus_Success;
-    uint32_t statusFlags = I2C_MasterGetStatusFlags(base);
-
-    /* Return an error if the bus is already in use. */
-    if (statusFlags & kI2C_BusBusyFlag)
-    {
-        result = kStatus_I2C_Busy;
-    }
-    else
-    {
-        /* Send the START signal. */
-        base->C1 |= I2C_C1_MST_MASK | I2C_C1_TX_MASK;
-
-#if defined(FSL_FEATURE_I2C_HAS_DOUBLE_BUFFERING) && FSL_FEATURE_I2C_HAS_DOUBLE_BUFFERING
-        while (!(base->S2 & I2C_S2_EMPTY_MASK))
-        {
-        }
-#endif /* FSL_FEATURE_I2C_HAS_DOUBLE_BUFFERING */
-
-        base->D = (((uint32_t)address) << 1U | ((direction == kI2C_Read) ? 1U : 0U));
-    }
-
-    return result;
-}
-
-status_t I2C_MasterRepeatedStart(I2C_Type *base, uint8_t address, i2c_direction_t direction)
-{
-    status_t result = kStatus_Success;
-    uint8_t savedMult;
-    uint32_t statusFlags = I2C_MasterGetStatusFlags(base);
-    uint8_t timeDelay = 6;
-
-    /* Return an error if the bus is already in use, but not by us. */
-    if ((statusFlags & kI2C_BusBusyFlag) && ((base->C1 & I2C_C1_MST_MASK) == 0))
-    {
-        result = kStatus_I2C_Busy;
-    }
-    else
-    {
-        savedMult = base->F;
-        base->F = savedMult & (~I2C_F_MULT_MASK);
-
-        /* We are already in a transfer, so send a repeated start. */
-        base->C1 |= I2C_C1_RSTA_MASK;
-
-        /* Restore the multiplier factor. */
-        base->F = savedMult;
-
-        /* Add some delay to wait the Re-Start signal. */
-        while (timeDelay--)
-        {
-            __NOP();
-        }
-
-#if defined(FSL_FEATURE_I2C_HAS_DOUBLE_BUFFERING) && FSL_FEATURE_I2C_HAS_DOUBLE_BUFFERING
-        while (!(base->S2 & I2C_S2_EMPTY_MASK))
-        {
-        }
-#endif /* FSL_FEATURE_I2C_HAS_DOUBLE_BUFFERING */
-
-        base->D = (((uint32_t)address) << 1U | ((direction == kI2C_Read) ? 1U : 0U));
-    }
-
-    return result;
-}
-
-status_t I2C_MasterStop(I2C_Type *base)
-{
-    status_t result = kStatus_Success;
-    uint16_t timeout = UINT16_MAX;
-
-    /* Issue the STOP command on the bus. */
-    base->C1 &= ~(I2C_C1_MST_MASK | I2C_C1_TX_MASK | I2C_C1_TXAK_MASK);
-
-    /* Wait until data transfer complete. */
-    while ((base->S & kI2C_BusBusyFlag) && (--timeout))
-    {
-    }
-
-    if (timeout == 0)
-    {
-        result = kStatus_I2C_Timeout;
-    }
-
-    return result;
-}
-
-uint32_t I2C_MasterGetStatusFlags(I2C_Type *base)
-{
-    uint32_t statusFlags = base->S;
-
-#ifdef I2C_HAS_STOP_DETECT
-    /* Look up the STOPF bit from the filter register. */
-    if (base->FLT & I2C_FLT_STOPF_MASK)
-    {
-        statusFlags |= kI2C_StopDetectFlag;
-    }
-#endif
-
-#if defined(FSL_FEATURE_I2C_HAS_START_STOP_DETECT) && FSL_FEATURE_I2C_HAS_START_STOP_DETECT
-    /* Look up the STARTF bit from the filter register. */
-    if (base->FLT & I2C_FLT_STARTF_MASK)
-    {
-        statusFlags |= kI2C_StartDetectFlag;
-    }
-#endif /* FSL_FEATURE_I2C_HAS_START_STOP_DETECT */
-
-    return statusFlags;
-}
-
-status_t I2C_MasterWriteBlocking(I2C_Type *base, const uint8_t *txBuff, size_t txSize)
-{
-    status_t result = kStatus_Success;
-    uint8_t statusFlags = 0;
-
-    /* Wait until the data register is ready for transmit. */
-    while (!(base->S & kI2C_TransferCompleteFlag))
-    {
-    }
-
-    /* Clear the IICIF flag. */
-    base->S = kI2C_IntPendingFlag;
-
-    /* Setup the I2C peripheral to transmit data. */
-    base->C1 |= I2C_C1_TX_MASK;
-
-    while (txSize--)
-    {
-        /* Send a byte of data. */
-        base->D = *txBuff++;
-
-        /* Wait until data transfer complete. */
-        while (!(base->S & kI2C_IntPendingFlag))
-        {
-        }
-
-        statusFlags = base->S;
-
-        /* Clear the IICIF flag. */
-        base->S = kI2C_IntPendingFlag;
-
-        /* Check if arbitration lost or no acknowledgement (NAK), return failure status. */
-        if (statusFlags & kI2C_ArbitrationLostFlag)
-        {
-            base->S = kI2C_ArbitrationLostFlag;
-            result = kStatus_I2C_ArbitrationLost;
-        }
-
-        if (statusFlags & kI2C_ReceiveNakFlag)
-        {
-            base->S = kI2C_ReceiveNakFlag;
-            result = kStatus_I2C_Nak;
-        }
-
-        if (result != kStatus_Success)
-        {
-            /* Breaking out of the send loop. */
-            break;
-        }
-    }
-
-    return result;
-}
-
-status_t I2C_MasterReadBlocking(I2C_Type *base, uint8_t *rxBuff, size_t rxSize)
-{
-    status_t result = kStatus_Success;
-    volatile uint8_t dummy = 0;
-
-    /* Add this to avoid build warning. */
-    dummy++;
-
-    /* Wait until the data register is ready for transmit. */
-    while (!(base->S & kI2C_TransferCompleteFlag))
-    {
-    }
-
-    /* Clear the IICIF flag. */
-    base->S = kI2C_IntPendingFlag;
-
-    /* Setup the I2C peripheral to receive data. */
-    base->C1 &= ~(I2C_C1_TX_MASK | I2C_C1_TXAK_MASK);
-
-    /* If rxSize equals 1, configure to send NAK. */
-    if (rxSize == 1)
-    {
-        /* Issue NACK on read. */
-        base->C1 |= I2C_C1_TXAK_MASK;
-    }
-
-    /* Do dummy read. */
-    dummy = base->D;
-
-    while ((rxSize--))
-    {
-        /* Wait until data transfer complete. */
-        while (!(base->S & kI2C_IntPendingFlag))
-        {
-        }
-
-        /* Clear the IICIF flag. */
-        base->S = kI2C_IntPendingFlag;
-
-        /* Single byte use case. */
-        if (rxSize == 0)
-        {
-            /* Read the final byte. */
-            result = I2C_MasterStop(base);
-        }
-
-        if (rxSize == 1)
-        {
-            /* Issue NACK on read. */
-            base->C1 |= I2C_C1_TXAK_MASK;
-        }
-
-        /* Read from the data register. */
-        *rxBuff++ = base->D;
-    }
-
-    return result;
-}
-
-status_t I2C_MasterTransferBlocking(I2C_Type *base, i2c_master_transfer_t *xfer)
-{
-    assert(xfer);
-
-    i2c_direction_t direction = xfer->direction;
-    status_t result = kStatus_Success;
-
-    /* Clear all status before transfer. */
-    I2C_MasterClearStatusFlags(base, kClearFlags);
-
-    /* Wait until ready to complete. */
-    while (!(base->S & kI2C_TransferCompleteFlag))
-    {
-    }
-
-    /* Change to send write address when it's a read operation with command. */
-    if ((xfer->subaddressSize > 0) && (xfer->direction == kI2C_Read))
-    {
-        direction = kI2C_Write;
-    }
-
-    /* If repeated start is requested, send repeated start. */
-    if (xfer->flags & kI2C_TransferRepeatedStartFlag)
-    {
-        result = I2C_MasterRepeatedStart(base, xfer->slaveAddress, direction);
-    }
-    else /* For normal transfer, send start. */
-    {
-        result = I2C_MasterStart(base, xfer->slaveAddress, direction);
-    }
-
-    /* Return if error. */
-    if (result)
-    {
-        return result;
-    }
-
-    /* Send subaddress. */
-    if (xfer->subaddressSize)
-    {
-        do
-        {
-            /* Wait until data transfer complete. */
-            while (!(base->S & kI2C_IntPendingFlag))
-            {
-            }
-
-            /* Clear interrupt pending flag. */
-            base->S = kI2C_IntPendingFlag;
-
-            /* Check if there's transfer error. */
-            result = I2C_CheckAndClearError(base, base->S);
-
-            if (result)
-            {
-                if (result == kStatus_I2C_Nak)
-                {
-                    I2C_MasterStop(base);
-                }
-
-                return result;
-            }
-
-            xfer->subaddressSize--;
-            base->D = ((xfer->subaddress) >> (8 * xfer->subaddressSize));
-
-        } while ((xfer->subaddressSize > 0) && (result == kStatus_Success));
-
-        if (xfer->direction == kI2C_Read)
-        {
-            /* Wait until data transfer complete. */
-            while (!(base->S & kI2C_IntPendingFlag))
-            {
-            }
-
-            /* Clear pending flag. */
-            base->S = kI2C_IntPendingFlag;
-
-            /* Check if there's transfer error. */
-            result = I2C_CheckAndClearError(base, base->S);
-
-            if (result)
-            {
-                if (result == kStatus_I2C_Nak)
-                {
-                    I2C_MasterStop(base);
-                }
-
-                return result;
-            }
-
-            /* Send repeated start and slave address. */
-            result = I2C_MasterRepeatedStart(base, xfer->slaveAddress, kI2C_Read);
-
-            /* Return if error. */
-            if (result)
-            {
-                return result;
-            }
-        }
-    }
-
-    /* Wait until address + command transfer complete. */
-    while (!(base->S & kI2C_IntPendingFlag))
-    {
-    }
-
-    /* Check if there's transfer error. */
-    result = I2C_CheckAndClearError(base, base->S);
-
-    /* Return if error. */
-    if (result)
-    {
-        if (result == kStatus_I2C_Nak)
-        {
-            I2C_MasterStop(base);
-        }
-
-        return result;
-    }
-
-    /* Transmit data. */
-    if ((xfer->direction == kI2C_Write) && (xfer->dataSize > 0))
-    {
-        /* Send Data. */
-        result = I2C_MasterWriteBlocking(base, xfer->data, xfer->dataSize);
-
-        if (((result == kStatus_Success) && (!(xfer->flags & kI2C_TransferNoStopFlag))) || (result == kStatus_I2C_Nak))
-        {
-            /* Clear the IICIF flag. */
-            base->S = kI2C_IntPendingFlag;
-
-            /* Send stop. */
-            result = I2C_MasterStop(base);
-        }
-    }
-
-    /* Receive Data. */
-    if ((xfer->direction == kI2C_Read) && (xfer->dataSize > 0))
-    {
-        result = I2C_MasterReadBlocking(base, xfer->data, xfer->dataSize);
-    }
-
-    return result;
-}
-
-void I2C_MasterTransferCreateHandle(I2C_Type *base,
-                                    i2c_master_handle_t *handle,
-                                    i2c_master_transfer_callback_t callback,
-                                    void *userData)
-{
-    assert(handle);
-
-    uint32_t instance = I2C_GetInstance(base);
-
-    /* Zero handle. */
-    memset(handle, 0, sizeof(*handle));
-
-    /* Set callback and userData. */
-    handle->completionCallback = callback;
-    handle->userData = userData;
-
-    /* Save the context in global variables to support the double weak mechanism. */
-    s_i2cHandle[instance] = handle;
-
-    /* Save master interrupt handler. */
-    s_i2cMasterIsr = I2C_MasterTransferHandleIRQ;
-
-    /* Enable NVIC interrupt. */
-    EnableIRQ(s_i2cIrqs[instance]);
-}
-
-status_t I2C_MasterTransferNonBlocking(I2C_Type *base, i2c_master_handle_t *handle, i2c_master_transfer_t *xfer)
-{
-    assert(handle);
-    assert(xfer);
-
-    status_t result = kStatus_Success;
-
-    /* Check if the I2C bus is idle - if not return busy status. */
-    if (handle->state != kIdleState)
-    {
-        result = kStatus_I2C_Busy;
-    }
-    else
-    {
-        /* Start up the master transfer state machine. */
-        result = I2C_InitTransferStateMachine(base, handle, xfer);
-
-        if (result == kStatus_Success)
-        {
-            /* Enable the I2C interrupts. */
-            I2C_EnableInterrupts(base, kI2C_GlobalInterruptEnable);
-        }
-    }
-
-    return result;
-}
-
-void I2C_MasterTransferAbort(I2C_Type *base, i2c_master_handle_t *handle)
-{
-    assert(handle);
-
-    /* Disable interrupt. */
-    I2C_DisableInterrupts(base, kI2C_GlobalInterruptEnable);
-
-    /* Reset the state to idle. */
-    handle->state = kIdleState;
-}
-
-status_t I2C_MasterTransferGetCount(I2C_Type *base, i2c_master_handle_t *handle, size_t *count)
-{
-    assert(handle);
-
-    if (!count)
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    *count = handle->transferSize - handle->transfer.dataSize;
-
-    return kStatus_Success;
-}
-
-void I2C_MasterTransferHandleIRQ(I2C_Type *base, void *i2cHandle)
-{
-    assert(i2cHandle);
-
-    i2c_master_handle_t *handle = (i2c_master_handle_t *)i2cHandle;
-    status_t result = kStatus_Success;
-    bool isDone;
-
-    /* Clear the interrupt flag. */
-    base->S = kI2C_IntPendingFlag;
-
-    /* Check transfer complete flag. */
-    result = I2C_MasterTransferRunStateMachine(base, handle, &isDone);
-
-    if (isDone || result)
-    {
-        /* Send stop command if transfer done or received Nak. */
-        if ((!(handle->transfer.flags & kI2C_TransferNoStopFlag)) || (result == kStatus_I2C_Nak))
-        {
-            /* Ensure stop command is a need. */
-            if ((base->C1 & I2C_C1_MST_MASK))
-            {
-                if (I2C_MasterStop(base) != kStatus_Success)
-                {
-                    result = kStatus_I2C_Timeout;
-                }
-            }
-        }
-
-        /* Restore handle to idle state. */
-        handle->state = kIdleState;
-
-        /* Disable interrupt. */
-        I2C_DisableInterrupts(base, kI2C_GlobalInterruptEnable);
-
-        /* Call the callback function after the function has completed. */
-        if (handle->completionCallback)
-        {
-            handle->completionCallback(base, handle, result, handle->userData);
-        }
-    }
-}
-
-void I2C_SlaveInit(I2C_Type *base, const i2c_slave_config_t *slaveConfig)
-{
-    assert(slaveConfig);
-
-    uint8_t tmpReg;
-
-    CLOCK_EnableClock(s_i2cClocks[I2C_GetInstance(base)]);
-
-    /* Configure addressing mode. */
-    switch (slaveConfig->addressingMode)
-    {
-        case kI2C_Address7bit:
-            base->A1 = ((uint32_t)(slaveConfig->slaveAddress)) << 1U;
-            break;
-
-        case kI2C_RangeMatch:
-            assert(slaveConfig->slaveAddress < slaveConfig->upperAddress);
-            base->A1 = ((uint32_t)(slaveConfig->slaveAddress)) << 1U;
-            base->RA = ((uint32_t)(slaveConfig->upperAddress)) << 1U;
-            base->C2 |= I2C_C2_RMEN_MASK;
-            break;
-
-        default:
-            break;
-    }
-
-    /* Configure low power wake up feature. */
-    tmpReg = base->C1;
-    tmpReg &= ~I2C_C1_WUEN_MASK;
-    base->C1 = tmpReg | I2C_C1_WUEN(slaveConfig->enableWakeUp) | I2C_C1_IICEN(slaveConfig->enableSlave);
-
-    /* Configure general call & baud rate control & high drive feature. */
-    tmpReg = base->C2;
-    tmpReg &= ~(I2C_C2_SBRC_MASK | I2C_C2_GCAEN_MASK);
-    tmpReg |= I2C_C2_SBRC(slaveConfig->enableBaudRateCtl) | I2C_C2_GCAEN(slaveConfig->enableGeneralCall);
-#if defined(FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION) && FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION
-    tmpReg &= ~I2C_C2_HDRS_MASK;
-    tmpReg |= I2C_C2_HDRS(slaveConfig->enableHighDrive);
-#endif
-    base->C2 = tmpReg;
-}
-
-void I2C_SlaveDeinit(I2C_Type *base)
-{
-    /* Disable I2C module. */
-    I2C_Enable(base, false);
-
-    /* Disable I2C clock. */
-    CLOCK_DisableClock(s_i2cClocks[I2C_GetInstance(base)]);
-}
-
-void I2C_SlaveGetDefaultConfig(i2c_slave_config_t *slaveConfig)
-{
-    assert(slaveConfig);
-
-    /* By default slave is addressed with 7-bit address. */
-    slaveConfig->addressingMode = kI2C_Address7bit;
-
-    /* General call mode is disabled by default. */
-    slaveConfig->enableGeneralCall = false;
-
-    /* Slave address match waking up MCU from low power mode is disabled. */
-    slaveConfig->enableWakeUp = false;
-
-#if defined(FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION) && FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION
-    /* Default pin high drive is disabled. */
-    slaveConfig->enableHighDrive = false;
-#endif
-
-    /* Independent slave mode baud rate at maximum frequency is disabled. */
-    slaveConfig->enableBaudRateCtl = false;
-
-    /* Enable the I2C peripheral. */
-    slaveConfig->enableSlave = true;
-}
-
-status_t I2C_SlaveWriteBlocking(I2C_Type *base, const uint8_t *txBuff, size_t txSize)
-{
-    return I2C_MasterWriteBlocking(base, txBuff, txSize);
-}
-
-void I2C_SlaveReadBlocking(I2C_Type *base, uint8_t *rxBuff, size_t rxSize)
-{
-    /* Clear the IICIF flag. */
-    base->S = kI2C_IntPendingFlag;
-
-    /* Wait until the data register is ready for receive. */
-    while (!(base->S & kI2C_TransferCompleteFlag))
-    {
-    }
-
-    /* Setup the I2C peripheral to receive data. */
-    base->C1 &= ~(I2C_C1_TX_MASK);
-
-    while (rxSize--)
-    {
-        /* Clear the IICIF flag. */
-        base->S = kI2C_IntPendingFlag;
-
-        /* Read from the data register. */
-        *rxBuff++ = base->D;
-
-        /* Wait until data transfer complete. */
-        while (!(base->S & kI2C_IntPendingFlag))
-        {
-        }
-    }
-}
-
-void I2C_SlaveTransferCreateHandle(I2C_Type *base,
-                                   i2c_slave_handle_t *handle,
-                                   i2c_slave_transfer_callback_t callback,
-                                   void *userData)
-{
-    assert(handle);
-
-    uint32_t instance = I2C_GetInstance(base);
-
-    /* Zero handle. */
-    memset(handle, 0, sizeof(*handle));
-
-    /* Set callback and userData. */
-    handle->callback = callback;
-    handle->userData = userData;
-
-    /* Save the context in global variables to support the double weak mechanism. */
-    s_i2cHandle[instance] = handle;
-
-    /* Save slave interrupt handler. */
-    s_i2cSlaveIsr = I2C_SlaveTransferHandleIRQ;
-
-    /* Enable NVIC interrupt. */
-    EnableIRQ(s_i2cIrqs[instance]);
-}
-
-status_t I2C_SlaveTransferNonBlocking(I2C_Type *base, i2c_slave_handle_t *handle, uint32_t eventMask)
-{
-    assert(handle);
-
-    /* Check if the I2C bus is idle - if not return busy status. */
-    if (handle->isBusy)
-    {
-        return kStatus_I2C_Busy;
-    }
-    else
-    {
-        /* Disable LPI2C IRQ sources while we configure stuff. */
-        I2C_DisableInterrupts(base, kIrqFlags);
-
-        /* Clear transfer in handle. */
-        memset(&handle->transfer, 0, sizeof(handle->transfer));
-
-        /* Record that we're busy. */
-        handle->isBusy = true;
-
-        /* Set up event mask. tx and rx are always enabled. */
-        handle->eventMask = eventMask | kI2C_SlaveTransmitEvent | kI2C_SlaveReceiveEvent;
-
-        /* Clear all flags. */
-        I2C_SlaveClearStatusFlags(base, kClearFlags);
-
-        /* Enable I2C internal IRQ sources. NVIC IRQ was enabled in CreateHandle() */
-        I2C_EnableInterrupts(base, kIrqFlags);
-    }
-
-    return kStatus_Success;
-}
-
-void I2C_SlaveTransferAbort(I2C_Type *base, i2c_slave_handle_t *handle)
-{
-    assert(handle);
-
-    if (handle->isBusy)
-    {
-        /* Disable interrupts. */
-        I2C_DisableInterrupts(base, kIrqFlags);
-
-        /* Reset transfer info. */
-        memset(&handle->transfer, 0, sizeof(handle->transfer));
-
-        /* Reset the state to idle. */
-        handle->isBusy = false;
-    }
-}
-
-status_t I2C_SlaveTransferGetCount(I2C_Type *base, i2c_slave_handle_t *handle, size_t *count)
-{
-    assert(handle);
-
-    if (!count)
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* Catch when there is not an active transfer. */
-    if (!handle->isBusy)
-    {
-        *count = 0;
-        return kStatus_NoTransferInProgress;
-    }
-
-    /* For an active transfer, just return the count from the handle. */
-    *count = handle->transfer.transferredCount;
-
-    return kStatus_Success;
-}
-
-void I2C_SlaveTransferHandleIRQ(I2C_Type *base, void *i2cHandle)
-{
-    assert(i2cHandle);
-
-    uint16_t status;
-    bool doTransmit = false;
-    i2c_slave_handle_t *handle = (i2c_slave_handle_t *)i2cHandle;
-    i2c_slave_transfer_t *xfer;
-    volatile uint8_t dummy = 0;
-
-    /* Add this to avoid build warning. */
-    dummy++;
-
-    status = I2C_SlaveGetStatusFlags(base);
-    xfer = &(handle->transfer);
-
-#ifdef I2C_HAS_STOP_DETECT
-    /* Check stop flag. */
-    if (status & kI2C_StopDetectFlag)
-    {
-        I2C_MasterClearStatusFlags(base, kI2C_StopDetectFlag);
-
-        /* Clear the interrupt flag. */
-        base->S = kI2C_IntPendingFlag;
-
-        /* Call slave callback if this is the STOP of the transfer. */
-        if (handle->isBusy)
-        {
-            xfer->event = kI2C_SlaveCompletionEvent;
-            xfer->completionStatus = kStatus_Success;
-            handle->isBusy = false;
-
-            if ((handle->eventMask & xfer->event) && (handle->callback))
-            {
-                handle->callback(base, xfer, handle->userData);
-            }
-        }
-
-        return;
-    }
-#endif /* I2C_HAS_STOP_DETECT */
-
-#if defined(FSL_FEATURE_I2C_HAS_START_STOP_DETECT) && FSL_FEATURE_I2C_HAS_START_STOP_DETECT
-    /* Check start flag. */
-    if (status & kI2C_StartDetectFlag)
-    {
-        I2C_MasterClearStatusFlags(base, kI2C_StartDetectFlag);
-
-        /* Clear the interrupt flag. */
-        base->S = kI2C_IntPendingFlag;
-
-        xfer->event = kI2C_SlaveRepeatedStartEvent;
-
-        if ((handle->eventMask & xfer->event) && (handle->callback))
-        {
-            handle->callback(base, xfer, handle->userData);
-        }
-
-        if (!(status & kI2C_AddressMatchFlag))
-        {
-            return;
-        }
-    }
-#endif /* FSL_FEATURE_I2C_HAS_START_STOP_DETECT */
-
-    /* Clear the interrupt flag. */
-    base->S = kI2C_IntPendingFlag;
-
-    /* Check NAK */
-    if (status & kI2C_ReceiveNakFlag)
-    {
-        /* Set receive mode. */
-        base->C1 &= ~(I2C_C1_TX_MASK | I2C_C1_TXAK_MASK);
-
-        /* Read dummy. */
-        dummy = base->D;
-
-        if (handle->transfer.dataSize != 0)
-        {
-            xfer->event = kI2C_SlaveCompletionEvent;
-            xfer->completionStatus = kStatus_I2C_Nak;
-            handle->isBusy = false;
-
-            if ((handle->eventMask & xfer->event) && (handle->callback))
-            {
-                handle->callback(base, xfer, handle->userData);
-            }
-        }
-        else
-        {
-#ifndef I2C_HAS_STOP_DETECT
-            xfer->event = kI2C_SlaveCompletionEvent;
-            xfer->completionStatus = kStatus_Success;
-            handle->isBusy = false;
-
-            if ((handle->eventMask & xfer->event) && (handle->callback))
-            {
-                handle->callback(base, xfer, handle->userData);
-            }
-#endif /* !FSL_FEATURE_I2C_HAS_START_STOP_DETECT or !FSL_FEATURE_I2C_HAS_STOP_DETECT */
-        }
-    }
-    /* Check address match. */
-    else if (status & kI2C_AddressMatchFlag)
-    {
-        handle->isBusy = true;
-        xfer->event = kI2C_SlaveAddressMatchEvent;
-
-        if ((handle->eventMask & xfer->event) && (handle->callback))
-        {
-            handle->callback(base, xfer, handle->userData);
-        }
-
-        /* Slave transmit, master reading from slave. */
-        if (status & kI2C_TransferDirectionFlag)
-        {
-            /* Change direction to send data. */
-            base->C1 |= I2C_C1_TX_MASK;
-
-            /* If we're out of data, invoke callback to get more. */
-            if ((!xfer->data) || (!xfer->dataSize))
-            {
-                xfer->event = kI2C_SlaveTransmitEvent;
-
-                if (handle->callback)
-                {
-                    handle->callback(base, xfer, handle->userData);
-                }
-
-                /* Clear the transferred count now that we have a new buffer. */
-                xfer->transferredCount = 0;
-            }
-
-            doTransmit = true;
-        }
-        else
-        {
-            /* Slave receive, master writing to slave. */
-            base->C1 &= ~(I2C_C1_TX_MASK | I2C_C1_TXAK_MASK);
-
-            /* If we're out of data, invoke callback to get more. */
-            if ((!xfer->data) || (!xfer->dataSize))
-            {
-                xfer->event = kI2C_SlaveReceiveEvent;
-
-                if (handle->callback)
-                {
-                    handle->callback(base, xfer, handle->userData);
-                }
-
-                /* Clear the transferred count now that we have a new buffer. */
-                xfer->transferredCount = 0;
-            }
-
-            /* Read dummy to release the bus. */
-            dummy = base->D;
-        }
-    }
-    /* Check transfer complete flag. */
-    else if (status & kI2C_TransferCompleteFlag)
-    {
-        /* Slave transmit, master reading from slave. */
-        if (status & kI2C_TransferDirectionFlag)
-        {
-            doTransmit = true;
-        }
-        else
-        {
-            /* Slave receive, master writing to slave. */
-            uint8_t data = base->D;
-
-            if (handle->transfer.dataSize)
-            {
-                /* Receive data. */
-                *handle->transfer.data++ = data;
-                handle->transfer.dataSize--;
-                xfer->transferredCount++;
-                if (!handle->transfer.dataSize)
-                {
-#ifndef I2C_HAS_STOP_DETECT
-                    xfer->event = kI2C_SlaveCompletionEvent;
-                    xfer->completionStatus = kStatus_Success;
-                    handle->isBusy = false;
-
-                    /* Proceed receive complete event. */
-                    if ((handle->eventMask & xfer->event) && (handle->callback))
-                    {
-                        handle->callback(base, xfer, handle->userData);
-                    }
-#endif /* !FSL_FEATURE_I2C_HAS_START_STOP_DETECT or !FSL_FEATURE_I2C_HAS_STOP_DETECT */
-                }
-            }
-        }
-    }
-    else
-    {
-        /* Read dummy to release bus. */
-        dummy = base->D;
-    }
-
-    /* Send data if there is the need. */
-    if (doTransmit)
-    {
-        if (handle->transfer.dataSize)
-        {
-            /* Send data. */
-            base->D = *handle->transfer.data++;
-            handle->transfer.dataSize--;
-            xfer->transferredCount++;
-        }
-        else
-        {
-            /* Switch to receive mode. */
-            base->C1 &= ~(I2C_C1_TX_MASK | I2C_C1_TXAK_MASK);
-
-            /* Read dummy to release bus. */
-            dummy = base->D;
-
-#ifndef I2C_HAS_STOP_DETECT
-            xfer->event = kI2C_SlaveCompletionEvent;
-            xfer->completionStatus = kStatus_Success;
-            handle->isBusy = false;
-
-            /* Proceed txdone event. */
-            if ((handle->eventMask & xfer->event) && (handle->callback))
-            {
-                handle->callback(base, xfer, handle->userData);
-            }
-#endif /* !FSL_FEATURE_I2C_HAS_START_STOP_DETECT or !FSL_FEATURE_I2C_HAS_STOP_DETECT */
-        }
-    }
-}
-
-void I2C0_DriverIRQHandler(void)
-{
-    I2C_TransferCommonIRQHandler(I2C0, s_i2cHandle[0]);
-}
-
-#if (FSL_FEATURE_SOC_I2C_COUNT > 1)
-void I2C1_DriverIRQHandler(void)
-{
-    I2C_TransferCommonIRQHandler(I2C1, s_i2cHandle[1]);
-}
-#endif /* I2C COUNT > 1 */
-
-#if (FSL_FEATURE_SOC_I2C_COUNT > 2)
-void I2C2_DriverIRQHandler(void)
-{
-    I2C_TransferCommonIRQHandler(I2C2, s_i2cHandle[2]);
-}
-#endif /* I2C COUNT > 2 */
-#if (FSL_FEATURE_SOC_I2C_COUNT > 3)
-void I2C3_DriverIRQHandler(void)
-{
-    I2C_TransferCommonIRQHandler(I2C3, s_i2cHandle[3]);
-}
-#endif /* I2C COUNT > 3 */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_i2c.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,781 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_I2C_H_
-#define _FSL_I2C_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup i2c_driver
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief I2C driver version 2.0.0. */
-#define FSL_I2C_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
-/*@}*/
-
-#if (defined(FSL_FEATURE_I2C_HAS_START_STOP_DETECT) && FSL_FEATURE_I2C_HAS_START_STOP_DETECT || \
-     defined(FSL_FEATURE_I2C_HAS_STOP_DETECT) && FSL_FEATURE_I2C_HAS_STOP_DETECT)
-#define I2C_HAS_STOP_DETECT
-#endif /* FSL_FEATURE_I2C_HAS_START_STOP_DETECT / FSL_FEATURE_I2C_HAS_STOP_DETECT */
-
-/*! @brief  I2C status return codes. */
-enum _i2c_status
-{
-    kStatus_I2C_Busy = MAKE_STATUS(kStatusGroup_I2C, 0),            /*!< I2C is busy with current transfer. */
-    kStatus_I2C_Idle = MAKE_STATUS(kStatusGroup_I2C, 1),            /*!< Bus is Idle. */
-    kStatus_I2C_Nak = MAKE_STATUS(kStatusGroup_I2C, 2),             /*!< NAK received during transfer. */
-    kStatus_I2C_ArbitrationLost = MAKE_STATUS(kStatusGroup_I2C, 3), /*!< Arbitration lost during transfer. */
-    kStatus_I2C_Timeout = MAKE_STATUS(kStatusGroup_I2C, 4),         /*!< Wait event timeout. */
-};
-
-/*!
- * @brief I2C peripheral flags
- *
- * The following status register flags can be cleared:
- * - #kI2C_ArbitrationLostFlag
- * - #kI2C_IntPendingFlag
- * - #kI2C_StartDetectFlag
- * - #kI2C_StopDetectFlag
- *
- * @note These enumerations are meant to be OR'd together to form a bit mask.
- *
- */
-enum _i2c_flags
-{
-    kI2C_ReceiveNakFlag = I2C_S_RXAK_MASK,       /*!< I2C receive NAK flag. */
-    kI2C_IntPendingFlag = I2C_S_IICIF_MASK,      /*!< I2C interrupt pending flag. */
-    kI2C_TransferDirectionFlag = I2C_S_SRW_MASK, /*!< I2C transfer direction flag. */
-    kI2C_RangeAddressMatchFlag = I2C_S_RAM_MASK, /*!< I2C range address match flag. */
-    kI2C_ArbitrationLostFlag = I2C_S_ARBL_MASK,  /*!< I2C arbitration lost flag. */
-    kI2C_BusBusyFlag = I2C_S_BUSY_MASK,          /*!< I2C bus busy flag. */
-    kI2C_AddressMatchFlag = I2C_S_IAAS_MASK,     /*!< I2C address match flag. */
-    kI2C_TransferCompleteFlag = I2C_S_TCF_MASK,  /*!< I2C transfer complete flag. */
-#ifdef I2C_HAS_STOP_DETECT
-    kI2C_StopDetectFlag = I2C_FLT_STOPF_MASK << 8, /*!< I2C stop detect flag. */
-#endif /* FSL_FEATURE_I2C_HAS_START_STOP_DETECT / FSL_FEATURE_I2C_HAS_STOP_DETECT */
-
-#if defined(FSL_FEATURE_I2C_HAS_START_STOP_DETECT) && FSL_FEATURE_I2C_HAS_START_STOP_DETECT
-    kI2C_StartDetectFlag = I2C_FLT_STARTF_MASK << 8, /*!< I2C start detect flag. */
-#endif                                               /* FSL_FEATURE_I2C_HAS_START_STOP_DETECT */
-};
-
-/*! @brief I2C feature interrupt source. */
-enum _i2c_interrupt_enable
-{
-    kI2C_GlobalInterruptEnable = I2C_C1_IICIE_MASK, /*!< I2C global interrupt. */
-
-#if defined(FSL_FEATURE_I2C_HAS_STOP_DETECT) && FSL_FEATURE_I2C_HAS_STOP_DETECT
-    kI2C_StopDetectInterruptEnable = I2C_FLT_STOPIE_MASK, /*!< I2C stop detect interrupt. */
-#endif                                                    /* FSL_FEATURE_I2C_HAS_STOP_DETECT */
-
-#if defined(FSL_FEATURE_I2C_HAS_START_STOP_DETECT) && FSL_FEATURE_I2C_HAS_START_STOP_DETECT
-    kI2C_StartStopDetectInterruptEnable = I2C_FLT_SSIE_MASK, /*!< I2C start&stop detect interrupt. */
-#endif                                                       /* FSL_FEATURE_I2C_HAS_START_STOP_DETECT */
-};
-
-/*! @brief Direction of master and slave transfers. */
-typedef enum _i2c_direction
-{
-    kI2C_Write = 0x0U, /*!< Master transmit to slave. */
-    kI2C_Read = 0x1U,  /*!< Master receive from slave. */
-} i2c_direction_t;
-
-/*! @brief Addressing mode. */
-typedef enum _i2c_slave_address_mode
-{
-    kI2C_Address7bit = 0x0U, /*!< 7-bit addressing mode. */
-    kI2C_RangeMatch = 0X2U,  /*!< Range address match addressing mode. */
-} i2c_slave_address_mode_t;
-
-/*! @brief I2C transfer control flag. */
-enum _i2c_master_transfer_flags
-{
-    kI2C_TransferDefaultFlag = 0x0U,       /*!< Transfer starts with a start signal, stops with a stop signal. */
-    kI2C_TransferNoStartFlag = 0x1U,       /*!< Transfer starts without a start signal. */
-    kI2C_TransferRepeatedStartFlag = 0x2U, /*!< Transfer starts with a repeated start signal. */
-    kI2C_TransferNoStopFlag = 0x4U,        /*!< Transfer ends without a stop signal. */
-};
-
-/*!
- * @brief Set of events sent to the callback for nonblocking slave transfers.
- *
- * These event enumerations are used for two related purposes. First, a bit mask created by OR'ing together
- * events is passed to I2C_SlaveTransferNonBlocking() in order to specify which events to enable.
- * Then, when the slave callback is invoked, it is passed the current event through its @a transfer
- * parameter.
- *
- * @note These enumerations are meant to be OR'd together to form a bit mask of events.
- */
-typedef enum _i2c_slave_transfer_event
-{
-    kI2C_SlaveAddressMatchEvent = 0x01U, /*!< Received the slave address after a start or repeated start. */
-    kI2C_SlaveTransmitEvent = 0x02U,     /*!< Callback is requested to provide data to transmit
-                                                (slave-transmitter role). */
-    kI2C_SlaveReceiveEvent = 0x04U,      /*!< Callback is requested to provide a buffer in which to place received
-                                                 data (slave-receiver role). */
-    kI2C_SlaveTransmitAckEvent = 0x08U,  /*!< Callback needs to either transmit an ACK or NACK. */
-#if defined(FSL_FEATURE_I2C_HAS_START_STOP_DETECT) && FSL_FEATURE_I2C_HAS_START_STOP_DETECT
-    kI2C_SlaveRepeatedStartEvent = 0x10U, /*!< A repeated start was detected. */
-#endif
-    kI2C_SlaveCompletionEvent = 0x20U, /*!< A stop was detected or finished transfer, completing the transfer. */
-
-    /*! Bit mask of all available events. */
-    kI2C_SlaveAllEvents = kI2C_SlaveAddressMatchEvent | kI2C_SlaveTransmitEvent | kI2C_SlaveReceiveEvent |
-#if defined(FSL_FEATURE_I2C_HAS_START_STOP_DETECT) && FSL_FEATURE_I2C_HAS_START_STOP_DETECT
-                          kI2C_SlaveRepeatedStartEvent |
-#endif
-                          kI2C_SlaveCompletionEvent,
-} i2c_slave_transfer_event_t;
-
-/*! @brief I2C master user configuration. */
-typedef struct _i2c_master_config
-{
-    bool enableMaster; /*!< Enables the I2C peripheral at initialization time. */
-#if defined(FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION) && FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION
-    bool enableHighDrive; /*!< Controls the drive capability of the I2C pads. */
-#endif
-#if defined(FSL_FEATURE_I2C_HAS_STOP_HOLD_OFF) && FSL_FEATURE_I2C_HAS_STOP_HOLD_OFF
-    bool enableStopHold; /*!< Controls the stop hold enable. */
-#endif
-    uint32_t baudRate_Bps;     /*!< Baud rate configuration of I2C peripheral. */
-    uint8_t glitchFilterWidth; /*!< Controls the width of the glitch. */
-} i2c_master_config_t;
-
-/*! @brief I2C slave user configuration. */
-typedef struct _i2c_slave_config
-{
-    bool enableSlave;       /*!< Enables the I2C peripheral at initialization time. */
-    bool enableGeneralCall; /*!< Enable general call addressing mode. */
-    bool enableWakeUp;      /*!< Enables/disables waking up MCU from low power mode. */
-#if defined(FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION) && FSL_FEATURE_I2C_HAS_HIGH_DRIVE_SELECTION
-    bool enableHighDrive; /*!< Controls the drive capability of the I2C pads. */
-#endif
-    bool enableBaudRateCtl; /*!< Enables/disables independent slave baud rate on SCL in very fast I2C modes. */
-    uint16_t slaveAddress;  /*!< Slave address configuration. */
-    uint16_t upperAddress;  /*!< Maximum boundary slave address used in range matching mode. */
-    i2c_slave_address_mode_t addressingMode; /*!< Addressing mode configuration of i2c_slave_address_mode_config_t. */
-} i2c_slave_config_t;
-
-/*! @brief I2C master handle typedef. */
-typedef struct _i2c_master_handle i2c_master_handle_t;
-
-/*! @brief I2C master transfer callback typedef. */
-typedef void (*i2c_master_transfer_callback_t)(I2C_Type *base,
-                                               i2c_master_handle_t *handle,
-                                               status_t status,
-                                               void *userData);
-
-/*! @brief I2C slave handle typedef. */
-typedef struct _i2c_slave_handle i2c_slave_handle_t;
-
-/*! @brief I2C master transfer structure. */
-typedef struct _i2c_master_transfer
-{
-    uint32_t flags;            /*!< Transfer flag which controls the transfer. */
-    uint8_t slaveAddress;      /*!< 7-bit slave address. */
-    i2c_direction_t direction; /*!< Transfer direction, read or write. */
-    uint32_t subaddress;       /*!< Sub address. Transferred MSB first. */
-    uint8_t subaddressSize;    /*!< Size of command buffer. */
-    uint8_t *volatile data;    /*!< Transfer buffer. */
-    volatile size_t dataSize;  /*!< Transfer size. */
-} i2c_master_transfer_t;
-
-/*! @brief I2C master handle structure. */
-struct _i2c_master_handle
-{
-    i2c_master_transfer_t transfer;                    /*!< I2C master transfer copy. */
-    size_t transferSize;                               /*!< Total bytes to be transferred. */
-    uint8_t state;                                     /*!< Transfer state maintained during transfer. */
-    i2c_master_transfer_callback_t completionCallback; /*!< Callback function called when transfer finished. */
-    void *userData;                                    /*!< Callback parameter passed to callback function. */
-};
-
-/*! @brief I2C slave transfer structure. */
-typedef struct _i2c_slave_transfer
-{
-    i2c_slave_transfer_event_t event; /*!< Reason the callback is being invoked. */
-    uint8_t *volatile data;           /*!< Transfer buffer. */
-    volatile size_t dataSize;         /*!< Transfer size. */
-    status_t completionStatus;        /*!< Success or error code describing how the transfer completed. Only applies for
-                                         #kI2C_SlaveCompletionEvent. */
-    size_t transferredCount;          /*!< Number of bytes actually transferred since start or last repeated start. */
-} i2c_slave_transfer_t;
-
-/*! @brief I2C slave transfer callback typedef. */
-typedef void (*i2c_slave_transfer_callback_t)(I2C_Type *base, i2c_slave_transfer_t *xfer, void *userData);
-
-/*! @brief I2C slave handle structure. */
-struct _i2c_slave_handle
-{
-    bool isBusy;                            /*!< Whether transfer is busy. */
-    i2c_slave_transfer_t transfer;          /*!< I2C slave transfer copy. */
-    uint32_t eventMask;                     /*!< Mask of enabled events. */
-    i2c_slave_transfer_callback_t callback; /*!< Callback function called at transfer event. */
-    void *userData;                         /*!< Callback parameter passed to callback. */
-};
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif /*_cplusplus. */
-
-/*!
- * @name Initialization and deinitialization
- * @{
- */
-
-/*!
- * @brief Initializes the I2C peripheral. Call this API to ungate the I2C clock
- * and configure the I2C with master configuration.
- *
- * @note This API should be called at the beginning of the application to use
- * the I2C driver, or any operation to the I2C module could cause hard fault
- * because clock is not enabled. The configuration structure can be filled by user
- * from scratch, or be set with default values by I2C_MasterGetDefaultConfig().
- * After calling this API, the master is ready to transfer.
- * Example:
- * @code
- * i2c_master_config_t config = {
- * .enableMaster = true,
- * .enableStopHold = false,
- * .highDrive = false,
- * .baudRate_Bps = 100000,
- * .glitchFilterWidth = 0
- * };
- * I2C_MasterInit(I2C0, &config, 12000000U);
- * @endcode
- *
- * @param base I2C base pointer
- * @param masterConfig pointer to master configuration structure
- * @param srcClock_Hz I2C peripheral clock frequency in Hz
- */
-void I2C_MasterInit(I2C_Type *base, const i2c_master_config_t *masterConfig, uint32_t srcClock_Hz);
-
-/*!
- * @brief Initializes the I2C peripheral. Call this API to ungate the I2C clock
- * and initializes the I2C with slave configuration.
- *
- * @note This API should be called at the beginning of the application to use
- * the I2C driver, or any operation to the I2C module can cause a hard fault
- * because the clock is not enabled. The configuration structure can partly be set
- * with default values by I2C_SlaveGetDefaultConfig(), or can be filled by the user.
- * Example
- * @code
- * i2c_slave_config_t config = {
- * .enableSlave = true,
- * .enableGeneralCall = false,
- * .addressingMode = kI2C_Address7bit,
- * .slaveAddress = 0x1DU,
- * .enableWakeUp = false,
- * .enablehighDrive = false,
- * .enableBaudRateCtl = false
- * };
- * I2C_SlaveInit(I2C0, &config);
- * @endcode
- *
- * @param base I2C base pointer
- * @param slaveConfig pointer to slave configuration structure
- */
-void I2C_SlaveInit(I2C_Type *base, const i2c_slave_config_t *slaveConfig);
-
-/*!
- * @brief De-initializes the I2C master peripheral. Call this API to gate the I2C clock.
- * The I2C master module can't work unless the I2C_MasterInit is called.
- * @param base I2C base pointer
- */
-void I2C_MasterDeinit(I2C_Type *base);
-
-/*!
- * @brief De-initializes the I2C slave peripheral. Calling this API gates the I2C clock.
- * The I2C slave module can't work unless the I2C_SlaveInit is called to enable the clock.
- * @param base I2C base pointer
- */
-void I2C_SlaveDeinit(I2C_Type *base);
-
-/*!
- * @brief  Sets the I2C master configuration structure to default values.
- *
- * The purpose of this API is to get the configuration structure initialized for use in the I2C_MasterConfigure().
- * Use the initialized structure unchanged in I2C_MasterConfigure(), or modify some fields of
- * the structure before calling I2C_MasterConfigure().
- * Example:
- * @code
- * i2c_master_config_t config;
- * I2C_MasterGetDefaultConfig(&config);
- * @endcode
- * @param masterConfig Pointer to the master configuration structure.
-*/
-void I2C_MasterGetDefaultConfig(i2c_master_config_t *masterConfig);
-
-/*!
- * @brief  Sets the I2C slave configuration structure to default values.
- *
- * The purpose of this API is to get the configuration structure initialized for use in I2C_SlaveConfigure().
- * Modify fields of the structure before calling the I2C_SlaveConfigure().
- * Example:
- * @code
- * i2c_slave_config_t config;
- * I2C_SlaveGetDefaultConfig(&config);
- * @endcode
- * @param slaveConfig Pointer to the slave configuration structure.
- */
-void I2C_SlaveGetDefaultConfig(i2c_slave_config_t *slaveConfig);
-
-/*!
- * @brief Enables or disabless the I2C peripheral operation.
- *
- * @param base I2C base pointer
- * @param enable pass true to enable module, false to disable module
- */
-static inline void I2C_Enable(I2C_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->C1 |= I2C_C1_IICEN_MASK;
-    }
-    else
-    {
-        base->C1 &= ~I2C_C1_IICEN_MASK;
-    }
-}
-
-/* @} */
-
-/*!
- * @name Status
- * @{
- */
-
-/*!
- * @brief Gets the I2C status flags.
- *
- * @param base I2C base pointer
- * @return status flag, use status flag to AND #_i2c_flags could get the related status.
- */
-uint32_t I2C_MasterGetStatusFlags(I2C_Type *base);
-
-/*!
- * @brief Gets the I2C status flags.
- *
- * @param base I2C base pointer
- * @return status flag, use status flag to AND #_i2c_flags could get the related status.
- */
-static inline uint32_t I2C_SlaveGetStatusFlags(I2C_Type *base)
-{
-    return I2C_MasterGetStatusFlags(base);
-}
-
-/*!
- * @brief Clears the I2C status flag state.
- *
- * The following status register flags can be cleared: kI2C_ArbitrationLostFlag and kI2C_IntPendingFlag
- *
- * @param base I2C base pointer
- * @param statusMask The status flag mask, defined in type i2c_status_flag_t.
- *      The parameter could be any combination of the following values:
- *          @arg kI2C_StartDetectFlag (if available)
- *          @arg kI2C_StopDetectFlag (if available)
- *          @arg kI2C_ArbitrationLostFlag
- *          @arg kI2C_IntPendingFlagFlag
- */
-static inline void I2C_MasterClearStatusFlags(I2C_Type *base, uint32_t statusMask)
-{
-/* Must clear the STARTF / STOPF bits prior to clearing IICIF */
-#if defined(FSL_FEATURE_I2C_HAS_START_STOP_DETECT) && FSL_FEATURE_I2C_HAS_START_STOP_DETECT
-    if (statusMask & kI2C_StartDetectFlag)
-    {
-        /* Shift the odd-ball flags back into place. */
-        base->FLT |= (uint8_t)(statusMask >> 8U);
-    }
-#endif
-
-#ifdef I2C_HAS_STOP_DETECT
-    if (statusMask & kI2C_StopDetectFlag)
-    {
-        /* Shift the odd-ball flags back into place. */
-        base->FLT |= (uint8_t)(statusMask >> 8U);
-    }
-#endif
-
-    base->S = (uint8_t)statusMask;
-}
-
-/*!
- * @brief Clears the I2C status flag state.
- *
- * The following status register flags can be cleared: kI2C_ArbitrationLostFlag and kI2C_IntPendingFlag
- *
-  * @param base I2C base pointer
-  * @param statusMask The status flag mask, defined in type i2c_status_flag_t.
- *      The parameter could be any combination of the following values:
- *          @arg kI2C_StartDetectFlag (if available)
- *          @arg kI2C_StopDetectFlag (if available)
- *          @arg kI2C_ArbitrationLostFlag
- *          @arg kI2C_IntPendingFlagFlag
- */
-static inline void I2C_SlaveClearStatusFlags(I2C_Type *base, uint32_t statusMask)
-{
-    I2C_MasterClearStatusFlags(base, statusMask);
-}
-
-/* @} */
-
-/*!
- * @name Interrupts
- * @{
- */
-
-/*!
- * @brief Enables I2C interrupt requests.
- *
- * @param base I2C base pointer
- * @param mask interrupt source
- *     The parameter can be combination of the following source if defined:
- *     @arg kI2C_GlobalInterruptEnable
- *     @arg kI2C_StopDetectInterruptEnable/kI2C_StartDetectInterruptEnable
- *     @arg kI2C_SdaTimeoutInterruptEnable
- */
-void I2C_EnableInterrupts(I2C_Type *base, uint32_t mask);
-
-/*!
- * @brief Disables I2C interrupt requests.
- *
- * @param base I2C base pointer
- * @param mask interrupt source
- *     The parameter can be combination of the following source if defined:
- *     @arg kI2C_GlobalInterruptEnable
- *     @arg kI2C_StopDetectInterruptEnable/kI2C_StartDetectInterruptEnable
- *     @arg kI2C_SdaTimeoutInterruptEnable
- */
-void I2C_DisableInterrupts(I2C_Type *base, uint32_t mask);
-
-/*!
- * @name DMA Control
- * @{
- */
-#if defined(FSL_FEATURE_I2C_HAS_DMA_SUPPORT) && FSL_FEATURE_I2C_HAS_DMA_SUPPORT
-/*!
- * @brief Enables/disables the I2C DMA interrupt.
- *
- * @param base I2C base pointer
- * @param enable true to enable, false to disable
-*/
-static inline void I2C_EnableDMA(I2C_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->C1 |= I2C_C1_DMAEN_MASK;
-    }
-    else
-    {
-        base->C1 &= ~I2C_C1_DMAEN_MASK;
-    }
-}
-
-#endif /* FSL_FEATURE_I2C_HAS_DMA_SUPPORT */
-
-/*!
- * @brief  Gets the I2C tx/rx data register address. This API is used to provide a transfer address
- * for I2C DMA transfer configuration.
- *
- * @param base I2C base pointer
- * @return data register address
- */
-static inline uint32_t I2C_GetDataRegAddr(I2C_Type *base)
-{
-    return (uint32_t)(&(base->D));
-}
-
-/* @} */
-/*!
- * @name Bus Operations
- * @{
- */
-
-/*!
- * @brief Sets the I2C master transfer baud rate.
- *
- * @param base I2C base pointer
- * @param baudRate_Bps the baud rate value in bps
- * @param srcClock_Hz Source clock
- */
-void I2C_MasterSetBaudRate(I2C_Type *base, uint32_t baudRate_Bps, uint32_t srcClock_Hz);
-
-/*!
- * @brief Sends a START on the I2C bus.
- *
- * This function is used to initiate a new master mode transfer by sending the START signal.
- * The slave address is sent following the I2C START signal.
- *
- * @param base I2C peripheral base pointer
- * @param address 7-bit slave device address.
- * @param direction Master transfer directions(transmit/receive).
- * @retval kStatus_Success Successfully send the start signal.
- * @retval kStatus_I2C_Busy Current bus is busy.
- */
-status_t I2C_MasterStart(I2C_Type *base, uint8_t address, i2c_direction_t direction);
-
-/*!
- * @brief Sends a STOP signal on the I2C bus.
- *
- * @retval kStatus_Success Successfully send the stop signal.
- * @retval kStatus_I2C_Timeout Send stop signal failed, timeout.
- */
-status_t I2C_MasterStop(I2C_Type *base);
-
-/*!
- * @brief Sends a REPEATED START on the I2C bus.
- *
- * @param base I2C peripheral base pointer
- * @param address 7-bit slave device address.
- * @param direction Master transfer directions(transmit/receive).
- * @retval kStatus_Success Successfully send the start signal.
- * @retval kStatus_I2C_Busy Current bus is busy but not occupied by current I2C master.
- */
-status_t I2C_MasterRepeatedStart(I2C_Type *base, uint8_t address, i2c_direction_t direction);
-
-/*!
- * @brief Performs a polling send transaction on the I2C bus without a STOP signal.
- *
- * @param base  The I2C peripheral base pointer.
- * @param txBuff The pointer to the data to be transferred.
- * @param txSize The length in bytes of the data to be transferred.
- * @retval kStatus_Success Successfully complete the data transmission.
- * @retval kStatus_I2C_ArbitrationLost Transfer error, arbitration lost.
- * @retval kStataus_I2C_Nak Transfer error, receive NAK during transfer.
- */
-status_t I2C_MasterWriteBlocking(I2C_Type *base, const uint8_t *txBuff, size_t txSize);
-
-/*!
- * @brief Performs a polling receive transaction on the I2C bus with a STOP signal.
- *
- * @note The I2C_MasterReadBlocking function stops the bus before reading the final byte.
- * Without stopping the bus prior for the final read, the bus issues another read, resulting
- * in garbage data being read into the data register.
- *
- * @param base I2C peripheral base pointer.
- * @param rxBuff The pointer to the data to store the received data.
- * @param rxSize The length in bytes of the data to be received.
- * @retval kStatus_Success Successfully complete the data transmission.
- * @retval kStatus_I2C_Timeout Send stop signal failed, timeout.
- */
-status_t I2C_MasterReadBlocking(I2C_Type *base, uint8_t *rxBuff, size_t rxSize);
-
-/*!
- * @brief Performs a polling send transaction on the I2C bus.
- *
- * @param base  The I2C peripheral base pointer.
- * @param txBuff The pointer to the data to be transferred.
- * @param txSize The length in bytes of the data to be transferred.
- * @retval kStatus_Success Successfully complete the data transmission.
- * @retval kStatus_I2C_ArbitrationLost Transfer error, arbitration lost.
- * @retval kStataus_I2C_Nak Transfer error, receive NAK during transfer.
- */
-status_t I2C_SlaveWriteBlocking(I2C_Type *base, const uint8_t *txBuff, size_t txSize);
-
-/*!
- * @brief Performs a polling receive transaction on the I2C bus.
- *
- * @param base I2C peripheral base pointer.
- * @param rxBuff The pointer to the data to store the received data.
- * @param rxSize The length in bytes of the data to be received.
- */
-void I2C_SlaveReadBlocking(I2C_Type *base, uint8_t *rxBuff, size_t rxSize);
-
-/*!
- * @brief Performs a master polling transfer on the I2C bus.
- *
- * @note The API does not return until the transfer succeeds or fails due
- * to arbitration lost or receiving a NAK.
- *
- * @param base I2C peripheral base address.
- * @param xfer Pointer to the transfer structure.
- * @retval kStatus_Success Successfully complete the data transmission.
- * @retval kStatus_I2C_Busy Previous transmission still not finished.
- * @retval kStatus_I2C_Timeout Transfer error, wait signal timeout.
- * @retval kStatus_I2C_ArbitrationLost Transfer error, arbitration lost.
- * @retval kStataus_I2C_Nak Transfer error, receive NAK during transfer.
- */
-status_t I2C_MasterTransferBlocking(I2C_Type *base, i2c_master_transfer_t *xfer);
-
-/* @} */
-
-/*!
- * @name Transactional
- * @{
- */
-
-/*!
- * @brief Initializes the I2C handle which is used in transactional functions.
- *
- * @param base I2C base pointer.
- * @param handle pointer to i2c_master_handle_t structure to store the transfer state.
- * @param callback pointer to user callback function.
- * @param userData user paramater passed to the callback function.
- */
-void I2C_MasterTransferCreateHandle(I2C_Type *base,
-                                    i2c_master_handle_t *handle,
-                                    i2c_master_transfer_callback_t callback,
-                                    void *userData);
-
-/*!
- * @brief Performs a master interrupt non-blocking transfer on the I2C bus.
- *
- * @note Calling the API will return immediately after transfer initiates, user needs
- * to call I2C_MasterGetTransferCount to poll the transfer status to check whether
- * the transfer is finished, if the return status is not kStatus_I2C_Busy, the transfer
- * is finished.
- *
- * @param base I2C base pointer.
- * @param handle pointer to i2c_master_handle_t structure which stores the transfer state.
- * @param xfer pointer to i2c_master_transfer_t structure.
- * @retval kStatus_Success Sucessully start the data transmission.
- * @retval kStatus_I2C_Busy Previous transmission still not finished.
- * @retval kStatus_I2C_Timeout Transfer error, wait signal timeout.
- */
-status_t I2C_MasterTransferNonBlocking(I2C_Type *base, i2c_master_handle_t *handle, i2c_master_transfer_t *xfer);
-
-/*!
- * @brief Gets the master transfer status during a interrupt non-blocking transfer.
- *
- * @param base I2C base pointer.
- * @param handle pointer to i2c_master_handle_t structure which stores the transfer state.
- * @param count Number of bytes transferred so far by the non-blocking transaction.
- * @retval kStatus_InvalidArgument count is Invalid.
- * @retval kStatus_Success Successfully return the count.
- */
-status_t I2C_MasterTransferGetCount(I2C_Type *base, i2c_master_handle_t *handle, size_t *count);
-
-/*!
- * @brief Aborts an interrupt non-blocking transfer early.
- *
- * @note This API can be called at any time when an interrupt non-blocking transfer initiates
- * to abort the transfer early.
- *
- * @param base I2C base pointer.
- * @param handle pointer to i2c_master_handle_t structure which stores the transfer state
- */
-void I2C_MasterTransferAbort(I2C_Type *base, i2c_master_handle_t *handle);
-
-/*!
- * @brief Master interrupt handler.
- *
- * @param base I2C base pointer.
- * @param i2cHandle pointer to i2c_master_handle_t structure.
- */
-void I2C_MasterTransferHandleIRQ(I2C_Type *base, void *i2cHandle);
-
-/*!
- * @brief Initializes the I2C handle which is used in transactional functions.
- *
- * @param base I2C base pointer.
- * @param handle pointer to i2c_slave_handle_t structure to store the transfer state.
- * @param callback pointer to user callback function.
- * @param userData user parameter passed to the callback function.
- */
-void I2C_SlaveTransferCreateHandle(I2C_Type *base,
-                                   i2c_slave_handle_t *handle,
-                                   i2c_slave_transfer_callback_t callback,
-                                   void *userData);
-
-/*!
- * @brief Starts accepting slave transfers.
- *
- * Call this API after calling the I2C_SlaveInit() and I2C_SlaveTransferCreateHandle() to start processing
- * transactions driven by an I2C master. The slave monitors the I2C bus and passes events to the
- * callback that was passed into the call to I2C_SlaveTransferCreateHandle(). The callback is always invoked
- * from the interrupt context.
- *
- * The set of events received by the callback is customizable. To do so, set the @a eventMask parameter to
- * the OR'd combination of #i2c_slave_transfer_event_t enumerators for the events you wish to receive.
- * The #kI2C_SlaveTransmitEvent and #kLPI2C_SlaveReceiveEvent events are always enabled and do not need
- * to be included in the mask. Alternatively, pass 0 to get a default set of only the transmit and
- * receive events that are always enabled. In addition, the #kI2C_SlaveAllEvents constant is provided as
- * a convenient way to enable all events.
- *
- * @param base The I2C peripheral base address.
- * @param handle Pointer to #i2c_slave_handle_t structure which stores the transfer state.
- * @param eventMask Bit mask formed by OR'ing together #i2c_slave_transfer_event_t enumerators to specify
- *      which events to send to the callback. Other accepted values are 0 to get a default set of
- *      only the transmit and receive events, and #kI2C_SlaveAllEvents to enable all events.
- *
- * @retval #kStatus_Success Slave transfers were successfully started.
- * @retval #kStatus_I2C_Busy Slave transfers have already been started on this handle.
- */
-status_t I2C_SlaveTransferNonBlocking(I2C_Type *base, i2c_slave_handle_t *handle, uint32_t eventMask);
-
-/*!
- * @brief Aborts the slave transfer.
- *
- * @note This API can be called at any time to stop slave for handling the bus events.
- *
- * @param base I2C base pointer.
- * @param handle pointer to i2c_slave_handle_t structure which stores the transfer state.
- */
-void I2C_SlaveTransferAbort(I2C_Type *base, i2c_slave_handle_t *handle);
-
-/*!
- * @brief Gets the slave transfer remaining bytes during a interrupt non-blocking transfer.
- *
- * @param base I2C base pointer.
- * @param handle pointer to i2c_slave_handle_t structure.
- * @param count Number of bytes transferred so far by the non-blocking transaction.
- * @retval kStatus_InvalidArgument count is Invalid.
- * @retval kStatus_Success Successfully return the count.
- */
-status_t I2C_SlaveTransferGetCount(I2C_Type *base, i2c_slave_handle_t *handle, size_t *count);
-
-/*!
- * @brief Slave interrupt handler.
- *
- * @param base I2C base pointer.
- * @param i2cHandle pointer to i2c_slave_handle_t structure which stores the transfer state
- */
-void I2C_SlaveTransferHandleIRQ(I2C_Type *base, void *i2cHandle);
-
-/* @} */
-#if defined(__cplusplus)
-}
-#endif /*_cplusplus. */
-/*@}*/
-
-#endif /* _FSL_I2C_H_*/
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_i2c_edma.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,526 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_i2c_edma.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*<! @breif Structure definition for i2c_master_edma_private_handle_t. The structure is private. */
-typedef struct _i2c_master_edma_private_handle
-{
-    I2C_Type *base;
-    i2c_master_edma_handle_t *handle;
-} i2c_master_edma_private_handle_t;
-
-/*! @brief i2c master DMA transfer state. */
-enum _i2c_master_dma_transfer_states
-{
-    kIdleState = 0x0U,         /*!< I2C bus idle. */
-    kTransferDataState = 0x1U, /*!< 7-bit address check state. */
-};
-
-/*! @brief Common sets of flags used by the driver. */
-enum _i2c_flag_constants
-{
-/*! All flags which are cleared by the driver upon starting a transfer. */
-#if defined(FSL_FEATURE_I2C_HAS_START_STOP_DETECT) && FSL_FEATURE_I2C_HAS_START_STOP_DETECT
-    kClearFlags = kI2C_ArbitrationLostFlag | kI2C_IntPendingFlag | kI2C_StartDetectFlag | kI2C_StopDetectFlag,
-#elif defined(FSL_FEATURE_I2C_HAS_STOP_DETECT) && FSL_FEATURE_I2C_HAS_STOP_DETECT
-    kClearFlags = kI2C_ArbitrationLostFlag | kI2C_IntPendingFlag | kI2C_StopDetectFlag,
-#else
-    kClearFlags = kI2C_ArbitrationLostFlag | kI2C_IntPendingFlag,
-#endif
-};
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-
-/*!
- * @brief EDMA callback for I2C master EDMA driver.
- *
- * @param handle EDMA handler for I2C master EDMA driver
- * @param userData user param passed to the callback function
- */
-static void I2C_MasterTransferCallbackEDMA(edma_handle_t *handle, void *userData, bool transferDone, uint32_t tcds);
-
-/*!
- * @brief Check and clear status operation.
- *
- * @param base I2C peripheral base address.
- * @param status current i2c hardware status.
- * @retval kStatus_Success No error found.
- * @retval kStatus_I2C_ArbitrationLost Transfer error, arbitration lost.
- * @retval kStatus_I2C_Nak Received Nak error.
- */
-static status_t I2C_CheckAndClearError(I2C_Type *base, uint32_t status);
-
-/*!
- * @brief EDMA config for I2C master driver.
- *
- * @param base I2C peripheral base address.
- * @param handle pointer to i2c_master_edma_handle_t structure which stores the transfer state
- */
-static void I2C_MasterTransferEDMAConfig(I2C_Type *base, i2c_master_edma_handle_t *handle);
-
-/*!
- * @brief Set up master transfer, send slave address and sub address(if any), wait until the
- * wait until address sent status return.
- *
- * @param base I2C peripheral base address.
- * @param handle pointer to i2c_master_edma_handle_t structure which stores the transfer state
- * @param xfer pointer to i2c_master_transfer_t structure
- */
-static status_t I2C_InitTransferStateMachineEDMA(I2C_Type *base,
-                                                 i2c_master_edma_handle_t *handle,
-                                                 i2c_master_transfer_t *xfer);
-
-/*!
- * @brief Get the I2C instance from peripheral base address.
- *
- * @param base I2C peripheral base address.
- * @return I2C instance.
- */
-extern uint32_t I2C_GetInstance(I2C_Type *base);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-
-/*<! Private handle only used for internally. */
-static i2c_master_edma_private_handle_t s_edmaPrivateHandle[FSL_FEATURE_SOC_I2C_COUNT];
-
-/*******************************************************************************
- * Codes
- ******************************************************************************/
-
-static void I2C_MasterTransferCallbackEDMA(edma_handle_t *handle, void *userData, bool transferDone, uint32_t tcds)
-{
-    i2c_master_edma_private_handle_t *i2cPrivateHandle = (i2c_master_edma_private_handle_t *)userData;
-    status_t result = kStatus_Success;
-
-    /* Disable DMA. */
-    I2C_EnableDMA(i2cPrivateHandle->base, false);
-
-    /* Send stop if kI2C_TransferNoStop flag is not asserted. */
-    if (!(i2cPrivateHandle->handle->transfer.flags & kI2C_TransferNoStopFlag))
-    {
-        if (i2cPrivateHandle->handle->transfer.direction == kI2C_Read)
-        {
-            /* Change to send NAK at the last byte. */
-            i2cPrivateHandle->base->C1 |= I2C_C1_TXAK_MASK;
-
-            /* Wait the last data to be received. */
-            while (!(i2cPrivateHandle->base->S & kI2C_TransferCompleteFlag))
-            {
-            }
-
-            /* Send stop signal. */
-            result = I2C_MasterStop(i2cPrivateHandle->base);
-
-            /* Read the last data byte. */
-            *(i2cPrivateHandle->handle->transfer.data + i2cPrivateHandle->handle->transfer.dataSize - 1) =
-                i2cPrivateHandle->base->D;
-        }
-        else
-        {
-            /* Wait the last data to be sent. */
-            while (!(i2cPrivateHandle->base->S & kI2C_TransferCompleteFlag))
-            {
-            }
-
-            /* Send stop signal. */
-            result = I2C_MasterStop(i2cPrivateHandle->base);
-        }
-    }
-
-    i2cPrivateHandle->handle->state = kIdleState;
-
-    if (i2cPrivateHandle->handle->completionCallback)
-    {
-        i2cPrivateHandle->handle->completionCallback(i2cPrivateHandle->base, i2cPrivateHandle->handle, result,
-                                                     i2cPrivateHandle->handle->userData);
-    }
-}
-
-static status_t I2C_CheckAndClearError(I2C_Type *base, uint32_t status)
-{
-    status_t result = kStatus_Success;
-
-    /* Check arbitration lost. */
-    if (status & kI2C_ArbitrationLostFlag)
-    {
-        /* Clear arbitration lost flag. */
-        base->S = kI2C_ArbitrationLostFlag;
-        result = kStatus_I2C_ArbitrationLost;
-    }
-    /* Check NAK */
-    else if (status & kI2C_ReceiveNakFlag)
-    {
-        result = kStatus_I2C_Nak;
-    }
-    else
-    {
-    }
-
-    return result;
-}
-
-static status_t I2C_InitTransferStateMachineEDMA(I2C_Type *base,
-                                                 i2c_master_edma_handle_t *handle,
-                                                 i2c_master_transfer_t *xfer)
-{
-    assert(handle);
-    assert(xfer);
-
-    status_t result = kStatus_Success;
-    uint16_t timeout = UINT16_MAX;
-
-    if (handle->state != kIdleState)
-    {
-        return kStatus_I2C_Busy;
-    }
-    else
-    {
-        i2c_direction_t direction = xfer->direction;
-
-        /* Init the handle member. */
-        handle->transfer = *xfer;
-
-        /* Save total transfer size. */
-        handle->transferSize = xfer->dataSize;
-
-        handle->state = kTransferDataState;
-
-        /* Wait until ready to complete. */
-        while ((!(base->S & kI2C_TransferCompleteFlag)) && (--timeout))
-        {
-        }
-
-        /* Failed to start the transfer. */
-        if (timeout == 0)
-        {
-            return kStatus_I2C_Timeout;
-        }
-        /* Clear all status before transfer. */
-        I2C_MasterClearStatusFlags(base, kClearFlags);
-
-        /* Change to send write address when it's a read operation with command. */
-        if ((xfer->subaddressSize > 0) && (xfer->direction == kI2C_Read))
-        {
-            direction = kI2C_Write;
-        }
-
-        /* If repeated start is requested, send repeated start. */
-        if (handle->transfer.flags & kI2C_TransferRepeatedStartFlag)
-        {
-            result = I2C_MasterRepeatedStart(base, handle->transfer.slaveAddress, direction);
-        }
-        else /* For normal transfer, send start. */
-        {
-            result = I2C_MasterStart(base, handle->transfer.slaveAddress, direction);
-        }
-
-        /* Send subaddress. */
-        if (handle->transfer.subaddressSize)
-        {
-            do
-            {
-                /* Wait until data transfer complete. */
-                while (!(base->S & kI2C_IntPendingFlag))
-                {
-                }
-
-                /* Clear interrupt pending flag. */
-                base->S = kI2C_IntPendingFlag;
-
-                handle->transfer.subaddressSize--;
-                base->D = ((handle->transfer.subaddress) >> (8 * handle->transfer.subaddressSize));
-
-                /* Check if there's transfer error. */
-                result = I2C_CheckAndClearError(base, base->S);
-
-                if (result)
-                {
-                    return result;
-                }
-
-            } while ((handle->transfer.subaddressSize > 0) && (result == kStatus_Success));
-
-            if (handle->transfer.direction == kI2C_Read)
-            {
-                /* Wait until data transfer complete. */
-                while (!(base->S & kI2C_IntPendingFlag))
-                {
-                }
-
-                /* Clear pending flag. */
-                base->S = kI2C_IntPendingFlag;
-
-                /* Send repeated start and slave address. */
-                result = I2C_MasterRepeatedStart(base, handle->transfer.slaveAddress, kI2C_Read);
-            }
-        }
-
-        if (result)
-        {
-            return result;
-        }
-
-        /* Wait until data transfer complete. */
-        while (!(base->S & kI2C_IntPendingFlag))
-        {
-        }
-
-        /* Clear pending flag. */
-        base->S = kI2C_IntPendingFlag;
-
-        /* Check if there's transfer error. */
-        result = I2C_CheckAndClearError(base, base->S);
-    }
-
-    return result;
-}
-
-static void I2C_MasterTransferEDMAConfig(I2C_Type *base, i2c_master_edma_handle_t *handle)
-{
-    edma_transfer_config_t transfer_config;
-
-    if (handle->transfer.direction == kI2C_Read)
-    {
-        transfer_config.srcAddr = (uint32_t)I2C_GetDataRegAddr(base);
-        transfer_config.destAddr = (uint32_t)(handle->transfer.data);
-
-        /* Send stop if kI2C_TransferNoStop flag is not asserted. */
-        if (!(handle->transfer.flags & kI2C_TransferNoStopFlag))
-        {
-            transfer_config.majorLoopCounts = (handle->transfer.dataSize - 1);
-        }
-        else
-        {
-            transfer_config.majorLoopCounts = handle->transfer.dataSize;
-        }
-
-        transfer_config.srcTransferSize = kEDMA_TransferSize1Bytes;
-        transfer_config.srcOffset = 0;
-        transfer_config.destTransferSize = kEDMA_TransferSize1Bytes;
-        transfer_config.destOffset = 1;
-        transfer_config.minorLoopBytes = 1;
-    }
-    else
-    {
-        transfer_config.srcAddr = (uint32_t)(handle->transfer.data + 1);
-        transfer_config.destAddr = (uint32_t)I2C_GetDataRegAddr(base);
-        transfer_config.majorLoopCounts = (handle->transfer.dataSize - 1);
-        transfer_config.srcTransferSize = kEDMA_TransferSize1Bytes;
-        transfer_config.srcOffset = 1;
-        transfer_config.destTransferSize = kEDMA_TransferSize1Bytes;
-        transfer_config.destOffset = 0;
-        transfer_config.minorLoopBytes = 1;
-    }
-
-    EDMA_SubmitTransfer(handle->dmaHandle, &transfer_config);
-    EDMA_StartTransfer(handle->dmaHandle);
-}
-
-void I2C_MasterCreateEDMAHandle(I2C_Type *base,
-                                i2c_master_edma_handle_t *handle,
-                                i2c_master_edma_transfer_callback_t callback,
-                                void *userData,
-                                edma_handle_t *edmaHandle)
-{
-    assert(handle);
-    assert(edmaHandle);
-
-    uint32_t instance = I2C_GetInstance(base);
-
-    /* Zero handle. */
-    memset(handle, 0, sizeof(*handle));
-
-    /* Set the user callback and userData. */
-    handle->completionCallback = callback;
-    handle->userData = userData;
-
-    /* Set the base for the handle. */
-    base = base;
-
-    /* Set the handle for EDMA. */
-    handle->dmaHandle = edmaHandle;
-
-    s_edmaPrivateHandle[instance].base = base;
-    s_edmaPrivateHandle[instance].handle = handle;
-
-    EDMA_SetCallback(edmaHandle, (edma_callback)I2C_MasterTransferCallbackEDMA, &s_edmaPrivateHandle[instance]);
-}
-
-status_t I2C_MasterTransferEDMA(I2C_Type *base, i2c_master_edma_handle_t *handle, i2c_master_transfer_t *xfer)
-{
-    assert(handle);
-    assert(xfer);
-
-    status_t result;
-    uint8_t tmpReg;
-    volatile uint8_t dummy = 0;
-
-    /* Add this to avoid build warning. */
-    dummy++;
-
-    /* Disable dma xfer. */
-    I2C_EnableDMA(base, false);
-
-    /* Send address and command buffer(if there is), until senddata phase or receive data phase. */
-    result = I2C_InitTransferStateMachineEDMA(base, handle, xfer);
-
-    if (result)
-    {
-        /* Send stop if received Nak. */
-        if (result == kStatus_I2C_Nak)
-        {
-            if (I2C_MasterStop(base) != kStatus_Success)
-            {
-                result = kStatus_I2C_Timeout;
-            }
-        }
-
-        /* Reset the state to idle state. */
-        handle->state = kIdleState;
-
-        return result;
-    }
-
-    /* Configure dma transfer. */
-    /* For i2c send, need to send 1 byte first to trigger the dma, for i2c read,
-    need to send stop before reading the last byte, so the dma transfer size should
-    be (xSize - 1). */
-    if (handle->transfer.dataSize > 1)
-    {
-        I2C_MasterTransferEDMAConfig(base, handle);
-        if (handle->transfer.direction == kI2C_Read)
-        {
-            /* Change direction for receive. */
-            base->C1 &= ~I2C_C1_TX_MASK;
-
-            /* Read dummy to release the bus. */
-            dummy = base->D;
-
-            /* Enabe dma transfer. */
-            I2C_EnableDMA(base, true);
-        }
-        else
-        {
-            /* Enabe dma transfer. */
-            I2C_EnableDMA(base, true);
-
-            /* Send the first data. */
-            base->D = *handle->transfer.data;
-        }
-    }
-    else /* If transfer size is 1, use polling method. */
-    {
-        if (handle->transfer.direction == kI2C_Read)
-        {
-            tmpReg = base->C1;
-
-            /* Change direction to Rx. */
-            tmpReg &= ~I2C_C1_TX_MASK;
-
-            /* Configure send NAK */
-            tmpReg |= I2C_C1_TXAK_MASK;
-
-            base->C1 = tmpReg;
-
-            /* Read dummy to release the bus. */
-            dummy = base->D;
-        }
-        else
-        {
-            base->D = *handle->transfer.data;
-        }
-
-        /* Wait until data transfer complete. */
-        while (!(base->S & kI2C_IntPendingFlag))
-        {
-        }
-
-        /* Clear pending flag. */
-        base->S = kI2C_IntPendingFlag;
-
-        /* Send stop if kI2C_TransferNoStop flag is not asserted. */
-        if (!(handle->transfer.flags & kI2C_TransferNoStopFlag))
-        {
-            result = I2C_MasterStop(base);
-        }
-
-        /* Read the last byte of data. */
-        if (handle->transfer.direction == kI2C_Read)
-        {
-            *handle->transfer.data = base->D;
-        }
-
-        /* Reset the state to idle. */
-        handle->state = kIdleState;
-    }
-
-    return result;
-}
-
-status_t I2C_MasterTransferGetCountEDMA(I2C_Type *base, i2c_master_edma_handle_t *handle, size_t *count)
-{
-    assert(handle->dmaHandle);
-
-    if (!count)
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    if (kIdleState != handle->state)
-    {
-        *count = (handle->transferSize - EDMA_GetRemainingBytes(handle->dmaHandle->base, handle->dmaHandle->channel));
-    }
-    else
-    {
-        *count = handle->transferSize;
-    }
-
-    return kStatus_Success;
-}
-
-void I2C_MasterTransferAbortEDMA(I2C_Type *base, i2c_master_edma_handle_t *handle)
-{
-    EDMA_AbortTransfer(handle->dmaHandle);
-
-    /* Disable dma transfer. */
-    I2C_EnableDMA(base, false);
-
-    /* Reset the state to idle. */
-    handle->state = kIdleState;
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_i2c_edma.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_I2C_DMA_H_
-#define _FSL_I2C_DMA_H_
-
-#include "fsl_i2c.h"
-#include "fsl_dmamux.h"
-#include "fsl_edma.h"
-
-/*!
- * @addtogroup i2c_edma_driver
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @brief I2C master edma handle typedef. */
-typedef struct _i2c_master_edma_handle i2c_master_edma_handle_t;
-
-/*! @brief I2C master edma transfer callback typedef. */
-typedef void (*i2c_master_edma_transfer_callback_t)(I2C_Type *base,
-                                                    i2c_master_edma_handle_t *handle,
-                                                    status_t status,
-                                                    void *userData);
-
-/*! @brief I2C master edma transfer structure. */
-struct _i2c_master_edma_handle
-{
-    i2c_master_transfer_t transfer; /*!< I2C master transfer struct. */
-    size_t transferSize;            /*!< Total bytes to be transferred. */
-    uint8_t state;                  /*!< I2C master transfer status. */
-    edma_handle_t *dmaHandle;       /*!< The eDMA handler used. */
-    i2c_master_edma_transfer_callback_t
-        completionCallback; /*!< Callback function called after edma transfer finished. */
-    void *userData;         /*!< Callback parameter passed to callback function. */
-};
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif /*_cplusplus. */
-
-/*!
- * @name I2C Block EDMA Transfer Operation
- * @{
- */
-
-/*!
- * @brief Init the I2C handle which is used in transcational functions.
- *
- * @param base I2C peripheral base address.
- * @param handle pointer to i2c_master_edma_handle_t structure.
- * @param callback pointer to user callback function.
- * @param userData user param passed to the callback function.
- * @param edmaHandle EDMA handle pointer.
- */
-void I2C_MasterCreateEDMAHandle(I2C_Type *base,
-                                i2c_master_edma_handle_t *handle,
-                                i2c_master_edma_transfer_callback_t callback,
-                                void *userData,
-                                edma_handle_t *edmaHandle);
-
-/*!
- * @brief Performs a master edma non-blocking transfer on the I2C bus.
- *
- * @param base I2C peripheral base address.
- * @param handle pointer to i2c_master_edma_handle_t structure.
- * @param xfer pointer to transfer structure of i2c_master_transfer_t.
- * @retval kStatus_Success Sucessully complete the data transmission.
- * @retval kStatus_I2C_Busy Previous transmission still not finished.
- * @retval kStatus_I2C_Timeout Transfer error, wait signal timeout.
- * @retval kStatus_I2C_ArbitrationLost Transfer error, arbitration lost.
- * @retval kStataus_I2C_Nak Transfer error, receive Nak during transfer.
- */
-status_t I2C_MasterTransferEDMA(I2C_Type *base, i2c_master_edma_handle_t *handle, i2c_master_transfer_t *xfer);
-
-/*!
- * @brief Get master transfer status during a edma non-blocking transfer.
- *
- * @param base I2C peripheral base address.
- * @param handle pointer to i2c_master_edma_handle_t structure.
- * @param count Number of bytes transferred so far by the non-blocking transaction.
- */
-status_t I2C_MasterTransferGetCountEDMA(I2C_Type *base, i2c_master_edma_handle_t *handle, size_t *count);
-
-/*!
- * @brief Abort a master edma non-blocking transfer in a early time.
- *
- * @param base I2C peripheral base address.
- * @param handle pointer to i2c_master_edma_handle_t structure.
- */
-void I2C_MasterTransferAbortEDMA(I2C_Type *base, i2c_master_edma_handle_t *handle);
-
-/* @} */
-#if defined(__cplusplus)
-}
-#endif /*_cplusplus. */
-/*@}*/
-#endif /*_FSL_I2C_DMA_H_*/
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_llwu.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,404 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_llwu.h"
-
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN)
-void LLWU_SetExternalWakeupPinMode(LLWU_Type *base, uint32_t pinIndex, llwu_external_pin_mode_t pinMode)
-{
-#if (defined(FSL_FEATURE_LLWU_REG_BITWIDTH) && (FSL_FEATURE_LLWU_REG_BITWIDTH == 32))
-    volatile uint32_t *regBase;
-    uint32_t regOffset;
-    uint32_t reg;
-
-    switch (pinIndex >> 4U)
-    {
-        case 0U:
-            regBase = &base->PE1;
-            break;
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 16))
-        case 1U:
-            regBase = &base->PE2;
-            break;
-#endif
-        default:
-            regBase = NULL;
-            break;
-    }
-#else
-    volatile uint8_t *regBase;
-    uint8_t regOffset;
-    uint8_t reg;
-    switch (pinIndex >> 2U)
-    {
-        case 0U:
-            regBase = &base->PE1;
-            break;
-        case 1U:
-            regBase = &base->PE2;
-            break;
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 8))
-        case 2U:
-            regBase = &base->PE3;
-            break;
-#endif
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 12))
-        case 3U:
-            regBase = &base->PE4;
-            break;
-#endif
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 16))
-        case 4U:
-            regBase = &base->PE5;
-            break;
-#endif
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 20))
-        case 5U:
-            regBase = &base->PE6;
-            break;
-#endif
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 24))
-        case 6U:
-            regBase = &base->PE7;
-            break;
-#endif
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 28))
-        case 7U:
-            regBase = &base->PE8;
-            break;
-#endif
-        default:
-            regBase = NULL;
-            break;
-    }
-#endif /* FSL_FEATURE_LLWU_REG_BITWIDTH == 32 */
-
-    if (regBase)
-    {
-        reg = *regBase;
-#if (defined(FSL_FEATURE_LLWU_REG_BITWIDTH) && (FSL_FEATURE_LLWU_REG_BITWIDTH == 32))
-        regOffset = ((pinIndex & 0x0FU) << 1U);
-#else
-        regOffset = ((pinIndex & 0x03U) << 1U);
-#endif
-        reg &= ~(0x3U << regOffset);
-        reg |= ((uint32_t)pinMode << regOffset);
-        *regBase = reg;
-    }
-}
-
-bool LLWU_GetExternalWakeupPinFlag(LLWU_Type *base, uint32_t pinIndex)
-{
-#if (defined(FSL_FEATURE_LLWU_REG_BITWIDTH) && (FSL_FEATURE_LLWU_REG_BITWIDTH == 32))
-    return (bool)(base->PF & (1U << pinIndex));
-#else
-    volatile uint8_t *regBase;
-
-    switch (pinIndex >> 3U)
-    {
-#if (defined(FSL_FEATURE_LLWU_HAS_PF) && FSL_FEATURE_LLWU_HAS_PF)
-        case 0U:
-            regBase = &base->PF1;
-            break;
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 8))
-        case 1U:
-            regBase = &base->PF2;
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN */
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 16))
-        case 2U:
-            regBase = &base->PF3;
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN */
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 24))
-        case 3U:
-            regBase = &base->PF4;
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN */
-#else
-        case 0U:
-            regBase = &base->F1;
-            break;
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 8))
-        case 1U:
-            regBase = &base->F2;
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN */
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 16))
-        case 2U:
-            regBase = &base->F3;
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN */
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 24))
-        case 3U:
-            regBase = &base->F4;
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN */
-#endif /* FSL_FEATURE_LLWU_HAS_PF */
-        default:
-            regBase = NULL;
-            break;
-    }
-
-    if (regBase)
-    {
-        return (bool)(*regBase & (1U << pinIndex % 8));
-    }
-    else
-    {
-        return false;
-    }
-#endif /* FSL_FEATURE_LLWU_REG_BITWIDTH */
-}
-
-void LLWU_ClearExternalWakeupPinFlag(LLWU_Type *base, uint32_t pinIndex)
-{
-#if (defined(FSL_FEATURE_LLWU_REG_BITWIDTH) && (FSL_FEATURE_LLWU_REG_BITWIDTH == 32))
-    base->PF = (1U << pinIndex);
-#else
-    volatile uint8_t *regBase;
-    switch (pinIndex >> 3U)
-    {
-#if (defined(FSL_FEATURE_LLWU_HAS_PF) && FSL_FEATURE_LLWU_HAS_PF)
-        case 0U:
-            regBase = &base->PF1;
-            break;
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 8))
-        case 1U:
-            regBase = &base->PF2;
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN */
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 16))
-        case 2U:
-            regBase = &base->PF3;
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN */
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 24))
-        case 3U:
-            regBase = &base->PF4;
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN */
-#else
-        case 0U:
-            regBase = &base->F1;
-            break;
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 8))
-        case 1U:
-            regBase = &base->F2;
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN */
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 16))
-        case 2U:
-            regBase = &base->F3;
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN */
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 24))
-        case 3U:
-            regBase = &base->F4;
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN */
-#endif /* FSL_FEATURE_LLWU_HAS_PF */
-        default:
-            regBase = NULL;
-            break;
-    }
-    if (regBase)
-    {
-        *regBase = (1U << pinIndex % 8U);
-    }
-#endif /* FSL_FEATURE_LLWU_REG_BITWIDTH */
-}
-#endif /* FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN */
-
-#if (defined(FSL_FEATURE_LLWU_HAS_PIN_FILTER) && FSL_FEATURE_LLWU_HAS_PIN_FILTER)
-void LLWU_SetPinFilterMode(LLWU_Type *base, uint32_t filterIndex, llwu_external_pin_filter_mode_t filterMode)
-{
-#if (defined(FSL_FEATURE_LLWU_REG_BITWIDTH) && (FSL_FEATURE_LLWU_REG_BITWIDTH == 32))
-    uint32_t reg;
-
-    reg = base->FILT;
-    reg &= ~((LLWU_FILT_FILTSEL1_MASK | LLWU_FILT_FILTE1_MASK) << (filterIndex * 8U - 1U));
-    reg |= (((filterMode.pinIndex << LLWU_FILT_FILTSEL1_SHIFT) | (filterMode.filterMode << LLWU_FILT_FILTE1_SHIFT)
-             /* Clear the Filter Detect Flag */
-             | LLWU_FILT_FILTF1_MASK)
-            << (filterIndex * 8U - 1U));
-    base->FILT = reg;
-#else
-    volatile uint8_t *regBase;
-    uint8_t reg;
-
-    switch (filterIndex)
-    {
-        case 1:
-            regBase = &base->FILT1;
-            break;
-#if (defined(FSL_FEATURE_LLWU_HAS_PIN_FILTER) && (FSL_FEATURE_LLWU_HAS_PIN_FILTER > 1))
-        case 2:
-            regBase = &base->FILT2;
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_PIN_FILTER */
-#if (defined(FSL_FEATURE_LLWU_HAS_PIN_FILTER) && (FSL_FEATURE_LLWU_HAS_PIN_FILTER > 2))
-        case 3:
-            regBase = &base->FILT3;
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_PIN_FILTER */
-#if (defined(FSL_FEATURE_LLWU_HAS_PIN_FILTER) && (FSL_FEATURE_LLWU_HAS_PIN_FILTER > 3))
-        case 4:
-            regBase = &base->FILT4;
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_PIN_FILTER */
-        default:
-            regBase = NULL;
-            break;
-    }
-
-    if (regBase)
-    {
-        reg = *regBase;
-        reg &= ~(LLWU_FILT1_FILTSEL_MASK | LLWU_FILT1_FILTE_MASK);
-        reg |= ((uint32_t)filterMode.pinIndex << LLWU_FILT1_FILTSEL_SHIFT);
-        reg |= ((uint32_t)filterMode.filterMode << LLWU_FILT1_FILTE_SHIFT);
-        /* Clear the Filter Detect Flag */
-        reg |= LLWU_FILT1_FILTF_MASK;
-        *regBase = reg;
-    }
-#endif /* FSL_FEATURE_LLWU_REG_BITWIDTH */
-}
-
-bool LLWU_GetPinFilterFlag(LLWU_Type *base, uint32_t filterIndex)
-{
-#if (defined(FSL_FEATURE_LLWU_REG_BITWIDTH) && (FSL_FEATURE_LLWU_REG_BITWIDTH == 32))
-    return (bool)(base->FILT & (1U << (filterIndex * 8U - 1)));
-#else
-    bool status = false;
-
-    switch (filterIndex)
-    {
-        case 1:
-            status = (base->FILT1 & LLWU_FILT1_FILTF_MASK);
-            break;
-#if (defined(FSL_FEATURE_LLWU_HAS_PIN_FILTER) && (FSL_FEATURE_LLWU_HAS_PIN_FILTER > 1))
-        case 2:
-            status = (base->FILT2 & LLWU_FILT2_FILTF_MASK);
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_PIN_FILTER */
-#if (defined(FSL_FEATURE_LLWU_HAS_PIN_FILTER) && (FSL_FEATURE_LLWU_HAS_PIN_FILTER > 2))
-        case 3:
-            status = (base->FILT3 & LLWU_FILT3_FILTF_MASK);
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_PIN_FILTER */
-#if (defined(FSL_FEATURE_LLWU_HAS_PIN_FILTER) && (FSL_FEATURE_LLWU_HAS_PIN_FILTER > 3))
-        case 4:
-            status = (base->FILT4 & LLWU_FILT4_FILTF_MASK);
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_PIN_FILTER */
-        default:
-            break;
-    }
-
-    return status;
-#endif /* FSL_FEATURE_LLWU_REG_BITWIDTH */
-}
-
-void LLWU_ClearPinFilterFlag(LLWU_Type *base, uint32_t filterIndex)
-{
-#if (defined(FSL_FEATURE_LLWU_REG_BITWIDTH) && (FSL_FEATURE_LLWU_REG_BITWIDTH == 32))
-    uint32_t reg;
-
-    reg = base->FILT;
-    switch (filterIndex)
-    {
-        case 1:
-            reg |= LLWU_FILT_FILTF1_MASK;
-            break;
-        case 2:
-            reg |= LLWU_FILT_FILTF2_MASK;
-            break;
-        case 3:
-            reg |= LLWU_FILT_FILTF3_MASK;
-            break;
-        case 4:
-            reg |= LLWU_FILT_FILTF4_MASK;
-            break;
-        default:
-            break;
-    }
-    base->FILT = reg;
-#else
-    volatile uint8_t *regBase;
-    uint8_t reg;
-
-    switch (filterIndex)
-    {
-        case 1:
-            regBase = &base->FILT1;
-            break;
-#if (defined(FSL_FEATURE_LLWU_HAS_PIN_FILTER) && (FSL_FEATURE_LLWU_HAS_PIN_FILTER > 1))
-        case 2:
-            regBase = &base->FILT2;
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_PIN_FILTER */
-#if (defined(FSL_FEATURE_LLWU_HAS_PIN_FILTER) && (FSL_FEATURE_LLWU_HAS_PIN_FILTER > 2))
-        case 3:
-            regBase = &base->FILT3;
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_PIN_FILTER */
-#if (defined(FSL_FEATURE_LLWU_HAS_PIN_FILTER) && (FSL_FEATURE_LLWU_HAS_PIN_FILTER > 3))
-        case 4:
-            regBase = &base->FILT4;
-            break;
-#endif /* FSL_FEATURE_LLWU_HAS_PIN_FILTER */
-        default:
-            regBase = NULL;
-            break;
-    }
-
-    if (regBase)
-    {
-        reg = *regBase;
-        reg |= LLWU_FILT1_FILTF_MASK;
-        *regBase = reg;
-    }
-#endif /* FSL_FEATURE_LLWU_REG_BITWIDTH */
-}
-#endif /* FSL_FEATURE_LLWU_HAS_PIN_FILTER */
-
-#if (defined(FSL_FEATURE_LLWU_HAS_RESET_ENABLE) && FSL_FEATURE_LLWU_HAS_RESET_ENABLE)
-void LLWU_SetResetPinMode(LLWU_Type *base, bool pinEnable, bool enableInLowLeakageMode)
-{
-    uint8_t reg;
-
-    reg = base->RST;
-    reg &= ~(LLWU_RST_LLRSTE_MASK | LLWU_RST_RSTFILT_MASK);
-    reg |=
-        (((uint32_t)pinEnable << LLWU_RST_LLRSTE_SHIFT) | ((uint32_t)enableInLowLeakageMode << LLWU_RST_RSTFILT_SHIFT));
-    base->RST = reg;
-}
-#endif /* FSL_FEATURE_LLWU_HAS_RESET_ENABLE */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_llwu.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,321 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_LLWU_H_
-#define _FSL_LLWU_H_
-
-#include "fsl_common.h"
-
-/*! @addtogroup llwu */
-/*! @{ */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief LLWU driver version 2.0.1. */
-#define FSL_LLWU_DRIVER_VERSION (MAKE_VERSION(2, 0, 1))
-/*@}*/
-
-/*!
- * @brief External input pin control modes
- */
-typedef enum _llwu_external_pin_mode
-{
-    kLLWU_ExternalPinDisable = 0U,     /*!< Pin disabled as wakeup input.           */
-    kLLWU_ExternalPinRisingEdge = 1U,  /*!< Pin enabled with rising edge detection. */
-    kLLWU_ExternalPinFallingEdge = 2U, /*!< Pin enabled with falling edge detection.*/
-    kLLWU_ExternalPinAnyEdge = 3U      /*!< Pin enabled with any change detection.  */
-} llwu_external_pin_mode_t;
-
-/*!
- * @brief Digital filter control modes
- */
-typedef enum _llwu_pin_filter_mode
-{
-    kLLWU_PinFilterDisable = 0U,     /*!< Filter disabled.               */
-    kLLWU_PinFilterRisingEdge = 1U,  /*!< Filter positive edge detection.*/
-    kLLWU_PinFilterFallingEdge = 2U, /*!< Filter negative edge detection.*/
-    kLLWU_PinFilterAnyEdge = 3U      /*!< Filter any edge detection.     */
-} llwu_pin_filter_mode_t;
-
-#if (defined(FSL_FEATURE_LLWU_HAS_VERID) && FSL_FEATURE_LLWU_HAS_VERID)
-/*!
- * @brief IP version ID definition.
- */
-typedef struct _llwu_version_id
-{
-    uint16_t feature; /*!< Feature Specification Number. */
-    uint8_t minor;    /*!< Minor version number.         */
-    uint8_t major;    /*!< Major version number.         */
-} llwu_version_id_t;
-#endif /* FSL_FEATURE_LLWU_HAS_VERID */
-
-#if (defined(FSL_FEATURE_LLWU_HAS_PARAM) && FSL_FEATURE_LLWU_HAS_PARAM)
-/*!
- * @brief IP parameter definition.
- */
-typedef struct _llwu_param
-{
-    uint8_t filters; /*!< Number of pin filter.      */
-    uint8_t dmas;    /*!< Number of wakeup DMA.      */
-    uint8_t modules; /*!< Number of wakeup module.   */
-    uint8_t pins;    /*!< Number of wake up pin.     */
-} llwu_param_t;
-#endif /* FSL_FEATURE_LLWU_HAS_PARAM */
-
-#if (defined(FSL_FEATURE_LLWU_HAS_PIN_FILTER) && FSL_FEATURE_LLWU_HAS_PIN_FILTER)
-/*!
- * @brief External input pin filter control structure
- */
-typedef struct _llwu_external_pin_filter_mode
-{
-    uint32_t pinIndex;                 /*!< Pin number  */
-    llwu_pin_filter_mode_t filterMode; /*!< Filter mode */
-} llwu_external_pin_filter_mode_t;
-#endif /* FSL_FEATURE_LLWU_HAS_PIN_FILTER */
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
- * @name Low-Leakage Wakeup Unit Control APIs
- * @{
- */
-
-#if (defined(FSL_FEATURE_LLWU_HAS_VERID) && FSL_FEATURE_LLWU_HAS_VERID)
-/*!
- * @brief Gets the LLWU version ID.
- *
- * This function gets the LLWU version ID, including major version number,
- * minor version number, and feature specification number.
- *
- * @param base LLWU peripheral base address.
- * @param versionId     Pointer to version ID structure.
- */
-static inline void LLWU_GetVersionId(LLWU_Type *base, llwu_version_id_t *versionId)
-{
-    *((uint32_t *)versionId) = base->VERID;
-}
-#endif /* FSL_FEATURE_LLWU_HAS_VERID */
-
-#if (defined(FSL_FEATURE_LLWU_HAS_PARAM) && FSL_FEATURE_LLWU_HAS_PARAM)
-/*!
- * @brief Gets the LLWU parameter.
- *
- * This function gets the LLWU parameter, including wakeup pin number, module
- * number, DMA number, and pin filter number.
- *
- * @param base LLWU peripheral base address.
- * @param param         Pointer to LLWU param structure.
- */
-static inline void LLWU_GetParam(LLWU_Type *base, llwu_param_t *param)
-{
-    *((uint32_t *)param) = base->PARAM;
-}
-#endif /* FSL_FEATURE_LLWU_HAS_PARAM */
-
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN)
-/*!
- * @brief Sets the external input pin source mode.
- *
- * This function sets the external input pin source mode that is used
- * as a wake up source.
- *
- * @param base LLWU peripheral base address.
- * @param pinIndex pin index which to be enabled as external wakeup source, start from 1.
- * @param pinMode pin configuration mode defined in llwu_external_pin_modes_t
- */
-void LLWU_SetExternalWakeupPinMode(LLWU_Type *base, uint32_t pinIndex, llwu_external_pin_mode_t pinMode);
-
-/*!
- * @brief Gets the external wakeup source flag.
- *
- * This function checks the external pin flag to detect whether the MCU is
- * woke up by the specific pin.
- *
- * @param base LLWU peripheral base address.
- * @param pinIndex     pin index, start from 1.
- * @return true if the specific pin is wake up source.
- */
-bool LLWU_GetExternalWakeupPinFlag(LLWU_Type *base, uint32_t pinIndex);
-
-/*!
- * @brief Clears the external wakeup source flag.
- *
- * This function clears the external wakeup source flag for a specific pin.
- *
- * @param base LLWU peripheral base address.
- * @param pinIndex pin index, start from 1.
- */
-void LLWU_ClearExternalWakeupPinFlag(LLWU_Type *base, uint32_t pinIndex);
-#endif /* FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN */
-
-#if (defined(FSL_FEATURE_LLWU_HAS_INTERNAL_MODULE) && FSL_FEATURE_LLWU_HAS_INTERNAL_MODULE)
-/*!
- * @brief Enables/disables the internal module source.
- *
- * This function enables/disables the internal module source mode that is used
- * as a wake up source.
- *
- * @param base LLWU peripheral base address.
- * @param moduleIndex   module index which to be enabled as internal wakeup source, start from 1.
- * @param enable        enable or disable setting
- */
-static inline void LLWU_EnableInternalModuleInterruptWakup(LLWU_Type *base, uint32_t moduleIndex, bool enable)
-{
-    if (enable)
-    {
-        base->ME |= 1U << moduleIndex;
-    }
-    else
-    {
-        base->ME &= ~(1U << moduleIndex);
-    }
-}
-
-/*!
- * @brief Gets the external wakeup source flag.
- *
- * This function checks the external pin flag to detect whether the system is
- * woke up by the specific pin.
- *
- * @param base LLWU peripheral base address.
- * @param moduleIndex  module index, start from 1.
- * @return true if the specific pin is wake up source.
- */
-static inline bool LLWU_GetInternalWakeupModuleFlag(LLWU_Type *base, uint32_t moduleIndex)
-{
-#if (defined(FSL_FEATURE_LLWU_REG_BITWIDTH) && (FSL_FEATURE_LLWU_REG_BITWIDTH == 32))
-    return (bool)(base->MF & (1U << moduleIndex));
-#else
-#if (defined(FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN) && (FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN > 16))
-#if (defined(FSL_FEATURE_LLWU_HAS_PF) && FSL_FEATURE_LLWU_HAS_PF)
-    return (bool)(base->MF5 & (1U << moduleIndex));
-#else
-    return (bool)(base->F5 & (1U << moduleIndex));
-#endif /* FSL_FEATURE_LLWU_HAS_PF */
-#else
-#if (defined(FSL_FEATURE_LLWU_HAS_PF) && FSL_FEATURE_LLWU_HAS_PF)
-    return (bool)(base->PF3 & (1U << moduleIndex));
-#else
-    return (bool)(base->F3 & (1U << moduleIndex));
-#endif
-#endif /* FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN */
-#endif /* FSL_FEATURE_LLWU_REG_BITWIDTH */
-}
-#endif /* FSL_FEATURE_LLWU_HAS_INTERNAL_MODULE */
-
-#if (defined(FSL_FEATURE_LLWU_HAS_DMA_ENABLE_REG) && FSL_FEATURE_LLWU_HAS_DMA_ENABLE_REG)
-/*!
- * @brief Enables/disables the internal module DMA wakeup source.
- *
- * This function enables/disables the internal DMA that is used as a wake up source.
- *
- * @param base LLWU peripheral base address.
- * @param moduleIndex   Internal module index which used as DMA request source, start from 1.
- * @param enable        Enable or disable DMA request source
- */
-static inline void LLWU_EnableInternalModuleDmaRequestWakup(LLWU_Type *base, uint32_t moduleIndex, bool enable)
-{
-    if (enable)
-    {
-        base->DE |= 1U << moduleIndex;
-    }
-    else
-    {
-        base->DE &= ~(1U << moduleIndex);
-    }
-}
-#endif /* FSL_FEATURE_LLWU_HAS_DMA_ENABLE_REG */
-
-#if (defined(FSL_FEATURE_LLWU_HAS_PIN_FILTER) && FSL_FEATURE_LLWU_HAS_PIN_FILTER)
-/*!
- * @brief Sets the pin filter configuration.
- *
- * This function sets the pin filter configuration.
- *
- * @param base LLWU peripheral base address.
- * @param filterIndex pin filter index which used to enable/disable the digital filter, start from 1.
- * @param filterMode filter mode configuration
- */
-void LLWU_SetPinFilterMode(LLWU_Type *base, uint32_t filterIndex, llwu_external_pin_filter_mode_t filterMode);
-
-/*!
- * @brief Gets the pin filter configuration.
- *
- * This function gets the pin filter flag.
- *
- * @param base LLWU peripheral base address.
- * @param filterIndex pin filter index, start from 1.
- * @return true if the flag is a source of existing a low-leakage power mode.
- */
-bool LLWU_GetPinFilterFlag(LLWU_Type *base, uint32_t filterIndex);
-
-/*!
- * @brief Clear the pin filter configuration.
- *
- * This function clear the pin filter flag.
- *
- * @param base LLWU peripheral base address.
- * @param filterIndex pin filter index which to be clear the flag, start from 1.
- */
-void LLWU_ClearPinFilterFlag(LLWU_Type *base, uint32_t filterIndex);
-
-#endif /* FSL_FEATURE_LLWU_HAS_PIN_FILTER */
-
-#if (defined(FSL_FEATURE_LLWU_HAS_RESET_ENABLE) && FSL_FEATURE_LLWU_HAS_RESET_ENABLE)
-/*!
- * @brief Sets the reset pin mode.
- *
- * This function sets how the reset pin is used as a low leakage mode exit source.
- *
- * @param pinEnable       Enable reset pin filter
- * @param pinFilterEnable Specify whether pin filter is enabled in Low-Leakage power mode.
- */
-void LLWU_SetResetPinMode(LLWU_Type *base, bool pinEnable, bool enableInLowLeakageMode);
-#endif /* FSL_FEATURE_LLWU_HAS_RESET_ENABLE */
-
-/*@}*/
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*! @}*/
-#endif /* _FSL_LLWU_H_*/
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_lptmr.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_lptmr.h"
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-/*!
- * @brief Gets the instance from the base address to be used to gate or ungate the module clock
- *
- * @param base LPTMR peripheral base address
- *
- * @return The LPTMR instance
- */
-static uint32_t LPTMR_GetInstance(LPTMR_Type *base);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-/*! @brief Pointers to LPTMR bases for each instance. */
-static LPTMR_Type *const s_lptmrBases[] = LPTMR_BASE_PTRS;
-
-/*! @brief Pointers to LPTMR clocks for each instance. */
-static const clock_ip_name_t s_lptmrClocks[] = LPTMR_CLOCKS;
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-static uint32_t LPTMR_GetInstance(LPTMR_Type *base)
-{
-    uint32_t instance;
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < FSL_FEATURE_SOC_LPTMR_COUNT; instance++)
-    {
-        if (s_lptmrBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < FSL_FEATURE_SOC_LPTMR_COUNT);
-
-    return instance;
-}
-
-void LPTMR_Init(LPTMR_Type *base, const lptmr_config_t *config)
-{
-    assert(config);
-
-    /* Ungate the LPTMR clock*/
-    CLOCK_EnableClock(s_lptmrClocks[LPTMR_GetInstance(base)]);
-
-    /* Configure the timers operation mode and input pin setup */
-    base->CSR = (LPTMR_CSR_TMS(config->timerMode) | LPTMR_CSR_TFC(config->enableFreeRunning) |
-                 LPTMR_CSR_TPP(config->pinPolarity) | LPTMR_CSR_TPS(config->pinSelect));
-
-    /* Configure the prescale value and clock source */
-    base->PSR = (LPTMR_PSR_PRESCALE(config->value) | LPTMR_PSR_PBYP(config->bypassPrescaler) |
-                 LPTMR_PSR_PCS(config->prescalerClockSource));
-}
-
-void LPTMR_Deinit(LPTMR_Type *base)
-{
-    /* Disable the LPTMR and reset the internal logic */
-    base->CSR &= ~LPTMR_CSR_TEN_MASK;
-    /* Gate the LPTMR clock*/
-    CLOCK_DisableClock(s_lptmrClocks[LPTMR_GetInstance(base)]);
-}
-
-void LPTMR_GetDefaultConfig(lptmr_config_t *config)
-{
-    assert(config);
-
-    /* Use time counter mode */
-    config->timerMode = kLPTMR_TimerModeTimeCounter;
-    /* Use input 0 as source in pulse counter mode */
-    config->pinSelect = kLPTMR_PinSelectInput_0;
-    /* Pulse input pin polarity is active-high */
-    config->pinPolarity = kLPTMR_PinPolarityActiveHigh;
-    /* Counter resets whenever TCF flag is set */
-    config->enableFreeRunning = false;
-    /* Bypass the prescaler */
-    config->bypassPrescaler = true;
-    /* LPTMR clock source */
-    config->prescalerClockSource = kLPTMR_PrescalerClock_1;
-    /* Divide the prescaler clock by 2 */
-    config->value = kLPTMR_Prescale_Glitch_0;
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_lptmr.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,351 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_LPTMR_H_
-#define _FSL_LPTMR_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup lptmr_driver
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-#define FSL_LPTMR_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) /*!< Version 2.0.0 */
-/*@}*/
-
-/*! @brief LPTMR pin selection, used in pulse counter mode.*/
-typedef enum _lptmr_pin_select
-{
-    kLPTMR_PinSelectInput_0 = 0x0U, /*!< Pulse counter input 0 is selected */
-    kLPTMR_PinSelectInput_1 = 0x1U, /*!< Pulse counter input 1 is selected */
-    kLPTMR_PinSelectInput_2 = 0x2U, /*!< Pulse counter input 2 is selected */
-    kLPTMR_PinSelectInput_3 = 0x3U  /*!< Pulse counter input 3 is selected */
-} lptmr_pin_select_t;
-
-/*! @brief LPTMR pin polarity, used in pulse counter mode.*/
-typedef enum _lptmr_pin_polarity
-{
-    kLPTMR_PinPolarityActiveHigh = 0x0U, /*!< Pulse Counter input source is active-high */
-    kLPTMR_PinPolarityActiveLow = 0x1U   /*!< Pulse Counter input source is active-low */
-} lptmr_pin_polarity_t;
-
-/*! @brief LPTMR timer mode selection.*/
-typedef enum _lptmr_timer_mode
-{
-    kLPTMR_TimerModeTimeCounter = 0x0U, /*!< Time Counter mode */
-    kLPTMR_TimerModePulseCounter = 0x1U /*!< Pulse Counter mode */
-} lptmr_timer_mode_t;
-
-/*! @brief LPTMR prescaler/glitch filter values*/
-typedef enum _lptmr_prescaler_glitch_value
-{
-    kLPTMR_Prescale_Glitch_0 = 0x0U,  /*!< Prescaler divide 2, glitch filter does not support this setting */
-    kLPTMR_Prescale_Glitch_1 = 0x1U,  /*!< Prescaler divide 4, glitch filter 2 */
-    kLPTMR_Prescale_Glitch_2 = 0x2U,  /*!< Prescaler divide 8, glitch filter 4 */
-    kLPTMR_Prescale_Glitch_3 = 0x3U,  /*!< Prescaler divide 16, glitch filter 8 */
-    kLPTMR_Prescale_Glitch_4 = 0x4U,  /*!< Prescaler divide 32, glitch filter 16 */
-    kLPTMR_Prescale_Glitch_5 = 0x5U,  /*!< Prescaler divide 64, glitch filter 32 */
-    kLPTMR_Prescale_Glitch_6 = 0x6U,  /*!< Prescaler divide 128, glitch filter 64 */
-    kLPTMR_Prescale_Glitch_7 = 0x7U,  /*!< Prescaler divide 256, glitch filter 128 */
-    kLPTMR_Prescale_Glitch_8 = 0x8U,  /*!< Prescaler divide 512, glitch filter 256 */
-    kLPTMR_Prescale_Glitch_9 = 0x9U,  /*!< Prescaler divide 1024, glitch filter 512*/
-    kLPTMR_Prescale_Glitch_10 = 0xAU, /*!< Prescaler divide 2048 glitch filter 1024 */
-    kLPTMR_Prescale_Glitch_11 = 0xBU, /*!< Prescaler divide 4096, glitch filter 2048 */
-    kLPTMR_Prescale_Glitch_12 = 0xCU, /*!< Prescaler divide 8192, glitch filter 4096 */
-    kLPTMR_Prescale_Glitch_13 = 0xDU, /*!< Prescaler divide 16384, glitch filter 8192 */
-    kLPTMR_Prescale_Glitch_14 = 0xEU, /*!< Prescaler divide 32768, glitch filter 16384 */
-    kLPTMR_Prescale_Glitch_15 = 0xFU  /*!< Prescaler divide 65536, glitch filter 32768 */
-} lptmr_prescaler_glitch_value_t;
-
-/*!
- * @brief LPTMR prescaler/glitch filter clock select.
- * @note Clock connections are SoC-specific
- */
-typedef enum _lptmr_prescaler_clock_select
-{
-    kLPTMR_PrescalerClock_0 = 0x0U, /*!< Prescaler/glitch filter clock 0 selected. */
-    kLPTMR_PrescalerClock_1 = 0x1U, /*!< Prescaler/glitch filter clock 1 selected. */
-    kLPTMR_PrescalerClock_2 = 0x2U, /*!< Prescaler/glitch filter clock 2 selected. */
-    kLPTMR_PrescalerClock_3 = 0x3U, /*!< Prescaler/glitch filter clock 3 selected. */
-} lptmr_prescaler_clock_select_t;
-
-/*! @brief List of LPTMR interrupts */
-typedef enum _lptmr_interrupt_enable
-{
-    kLPTMR_TimerInterruptEnable = LPTMR_CSR_TIE_MASK, /*!< Timer interrupt enable */
-} lptmr_interrupt_enable_t;
-
-/*! @brief List of LPTMR status flags */
-typedef enum _lptmr_status_flags
-{
-    kLPTMR_TimerCompareFlag = LPTMR_CSR_TCF_MASK, /*!< Timer compare flag */
-} lptmr_status_flags_t;
-
-/*!
- * @brief LPTMR config structure
- *
- * This structure holds the configuration settings for the LPTMR peripheral. To initialize this
- * structure to reasonable defaults, call the LPTMR_GetDefaultConfig() function and pass a
- * pointer to your config structure instance.
- *
- * The config struct can be made const so it resides in flash
- */
-typedef struct _lptmr_config
-{
-    lptmr_timer_mode_t timerMode;     /*!< Time counter mode or pulse counter mode */
-    lptmr_pin_select_t pinSelect;     /*!< LPTMR pulse input pin select; used only in pulse counter mode */
-    lptmr_pin_polarity_t pinPolarity; /*!< LPTMR pulse input pin polarity; used only in pulse counter mode */
-    bool enableFreeRunning;           /*!< true: enable free running, counter is reset on overflow
-                                           false: counter is reset when the compare flag is set */
-    bool bypassPrescaler;             /*!< true: bypass prescaler; false: use clock from prescaler */
-    lptmr_prescaler_clock_select_t prescalerClockSource; /*!< LPTMR clock source */
-    lptmr_prescaler_glitch_value_t value;                /*!< Prescaler or glitch filter value */
-} lptmr_config_t;
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
- * @name Initialization and deinitialization
- * @{
- */
-
-/*!
- * @brief Ungate the LPTMR clock and configures the peripheral for basic operation.
- *
- * @note This API should be called at the beginning of the application using the LPTMR driver.
- *
- * @param base   LPTMR peripheral base address
- * @param config Pointer to user's LPTMR config structure.
- */
-void LPTMR_Init(LPTMR_Type *base, const lptmr_config_t *config);
-
-/*!
- * @brief Gate the LPTMR clock
- *
- * @param base LPTMR peripheral base address
- */
-void LPTMR_Deinit(LPTMR_Type *base);
-
-/*!
- * @brief Fill in the LPTMR config struct with the default settings
- *
- * The default values are:
- * @code
- *    config->timerMode = kLPTMR_TimerModeTimeCounter;
- *    config->pinSelect = kLPTMR_PinSelectInput_0;
- *    config->pinPolarity = kLPTMR_PinPolarityActiveHigh;
- *    config->enableFreeRunning = false;
- *    config->bypassPrescaler = true;
- *    config->prescalerClockSource = kLPTMR_PrescalerClock_1;
- *    config->value = kLPTMR_Prescale_Glitch_0;
- * @endcode
- * @param config Pointer to user's LPTMR config structure.
- */
-void LPTMR_GetDefaultConfig(lptmr_config_t *config);
-
-/*! @}*/
-
-/*!
- * @name Interrupt Interface
- * @{
- */
-
-/*!
- * @brief Enables the selected LPTMR interrupts.
- *
- * @param base LPTMR peripheral base address
- * @param mask The interrupts to enable. This is a logical OR of members of the
- *             enumeration ::lptmr_interrupt_enable_t
- */
-static inline void LPTMR_EnableInterrupts(LPTMR_Type *base, uint32_t mask)
-{
-    base->CSR |= mask;
-}
-
-/*!
- * @brief Disables the selected LPTMR interrupts.
- *
- * @param base LPTMR peripheral base address
- * @param mask The interrupts to disable. This is a logical OR of members of the
- *             enumeration ::lptmr_interrupt_enable_t
- */
-static inline void LPTMR_DisableInterrupts(LPTMR_Type *base, uint32_t mask)
-{
-    base->CSR &= ~mask;
-}
-
-/*!
- * @brief Gets the enabled LPTMR interrupts.
- *
- * @param base LPTMR peripheral base address
- *
- * @return The enabled interrupts. This is the logical OR of members of the
- *         enumeration ::lptmr_interrupt_enable_t
- */
-static inline uint32_t LPTMR_GetEnabledInterrupts(LPTMR_Type *base)
-{
-    return (base->CSR & LPTMR_CSR_TIE_MASK);
-}
-
-/*! @}*/
-
-/*!
- * @name Status Interface
- * @{
- */
-
-/*!
- * @brief Gets the LPTMR status flags
- *
- * @param base LPTMR peripheral base address
- *
- * @return The status flags. This is the logical OR of members of the
- *         enumeration ::lptmr_status_flags_t
- */
-static inline uint32_t LPTMR_GetStatusFlags(LPTMR_Type *base)
-{
-    return (base->CSR & LPTMR_CSR_TCF_MASK);
-}
-
-/*!
- * @brief  Clears the LPTMR status flags
- *
- * @param base LPTMR peripheral base address
- * @param mask The status flags to clear. This is a logical OR of members of the
- *             enumeration ::lptmr_status_flags_t
- */
-static inline void LPTMR_ClearStatusFlags(LPTMR_Type *base, uint32_t mask)
-{
-    base->CSR |= mask;
-}
-
-/*! @}*/
-
-/*!
- * @name Read and Write the timer period
- * @{
- */
-
-/*!
- * @brief Sets the timer period in units of count.
- *
- * Timers counts from 0 till it equals the count value set here. The count value is written to
- * the CMR register.
- *
- * @note
- * 1. The TCF flag is set with the CNR equals the count provided here and then increments.
- * 2. User can call the utility macros provided in fsl_common.h to convert to ticks
- *
- * @param base  LPTMR peripheral base address
- * @param ticks Timer period in units of ticks
- */
-static inline void LPTMR_SetTimerPeriod(LPTMR_Type *base, uint16_t ticks)
-{
-    base->CMR = ticks;
-}
-
-/*!
- * @brief Reads the current timer counting value.
- *
- * This function returns the real-time timer counting value, in a range from 0 to a
- * timer period.
- *
- * @note User can call the utility macros provided in fsl_common.h to convert ticks to usec or msec
- *
- * @param base LPTMR peripheral base address
- *
- * @return Current counter value in ticks
- */
-static inline uint16_t LPTMR_GetCurrentTimerCount(LPTMR_Type *base)
-{
-    /* Must first write any value to the CNR. This will synchronize and register the current value
-     * of the CNR into a temporary register which can then be read
-     */
-    base->CNR = 0U;
-    return (uint16_t)base->CNR;
-}
-
-/*! @}*/
-
-/*!
- * @name Timer Start and Stop
- * @{
- */
-
-/*!
- * @brief Starts the timer counting.
- *
- * After calling this function, the timer counts up to the CMR register value.
- * Each time the timer reaches CMR value and then increments, it generates a
- * trigger pulse and sets the timeout interrupt flag. An interrupt will also be
- * triggered if the timer interrupt is enabled.
- *
- * @param base LPTMR peripheral base address
- */
-static inline void LPTMR_StartTimer(LPTMR_Type *base)
-{
-    base->CSR |= LPTMR_CSR_TEN_MASK;
-}
-
-/*!
- * @brief Stops the timer counting.
- *
- * This function stops the timer counting and resets the timer's counter register
- *
- * @param base LPTMR peripheral base address
- */
-static inline void LPTMR_StopTimer(LPTMR_Type *base)
-{
-    base->CSR &= ~LPTMR_CSR_TEN_MASK;
-}
-
-/*! @}*/
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*! @}*/
-
-#endif /* _FSL_LPTMR_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_mpu.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,232 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_mpu.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/* Defines the register numbers of the region descriptor configure. */
-#define MPU_REGIONDESCRIPTOR_WROD_REGNUM (4U)
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-
-const clock_ip_name_t g_mpuClock[FSL_FEATURE_SOC_MPU_COUNT] = MPU_CLOCKS;
-
-/*******************************************************************************
- * Codes
- ******************************************************************************/
-
-void MPU_Init(MPU_Type *base, const mpu_config_t *config)
-{
-    assert(config);
-    uint8_t count;
-
-    /* Un-gate MPU clock */
-    CLOCK_EnableClock(g_mpuClock[0]);
-
-    /* Initializes the regions. */
-    for (count = 1; count < FSL_FEATURE_MPU_DESCRIPTOR_COUNT; count++)
-    {
-        base->WORD[count][3] = 0; /* VLD/VID+PID. */
-        base->WORD[count][0] = 0; /* Start address. */
-        base->WORD[count][1] = 0; /* End address. */
-        base->WORD[count][2] = 0; /* Access rights. */
-        base->RGDAAC[count] = 0;  /* Alternate access rights. */
-    }
-
-    /* MPU configure. */
-    while (config)
-    {
-        MPU_SetRegionConfig(base, &(config->regionConfig));
-        config = config->next;
-    }
-    /* Enable MPU. */
-    MPU_Enable(base, true);
-}
-
-void MPU_Deinit(MPU_Type *base)
-{
-    /* Disable MPU. */
-    MPU_Enable(base, false);
-
-    /* Gate the clock. */
-    CLOCK_DisableClock(g_mpuClock[0]);
-}
-
-void MPU_GetHardwareInfo(MPU_Type *base, mpu_hardware_info_t *hardwareInform)
-{
-    assert(hardwareInform);
-
-    uint32_t cesReg = base->CESR;
-
-    hardwareInform->hardwareRevisionLevel = (cesReg & MPU_CESR_HRL_MASK) >> MPU_CESR_HRL_SHIFT;
-    hardwareInform->slavePortsNumbers = (cesReg & MPU_CESR_NSP_MASK) >> MPU_CESR_NSP_SHIFT;
-    hardwareInform->regionsNumbers = (mpu_region_total_num_t)((cesReg & MPU_CESR_NRGD_MASK) >> MPU_CESR_NRGD_SHIFT);
-}
-
-void MPU_SetRegionConfig(MPU_Type *base, const mpu_region_config_t *regionConfig)
-{
-    assert(regionConfig);
-
-    uint32_t wordReg = 0;
-    uint8_t count;
-    uint8_t number = regionConfig->regionNum;
-
-    /* The start and end address of the region descriptor. */
-    base->WORD[number][0] = regionConfig->startAddress;
-    base->WORD[number][1] = regionConfig->endAddress;
-
-    /* The region descriptor access rights control. */
-    for (count = 0; count < MPU_REGIONDESCRIPTOR_WROD_REGNUM; count++)
-    {
-        wordReg |= MPU_WORD_LOW_MASTER(count, (((uint32_t)regionConfig->accessRights1[count].superAccessRights << 3U) |
-                                               (uint8_t)regionConfig->accessRights1[count].userAccessRights)) |
-                   MPU_WORD_HIGH_MASTER(count, ((uint32_t)regionConfig->accessRights2[count].readEnable << 1U |
-                                                (uint8_t)regionConfig->accessRights2[count].writeEnable));
-
-#if FSL_FEATURE_MPU_HAS_PROCESS_IDENTIFIER
-        wordReg |= MPU_WORD_MASTER_PE(count, regionConfig->accessRights1[count].processIdentifierEnable);
-#endif /* FSL_FEATURE_MPU_HAS_PROCESS_IDENTIFIER */
-    }
-
-    /* Set region descriptor access rights. */
-    base->WORD[number][2] = wordReg;
-
-    wordReg = MPU_WORD_VLD(1);
-#if FSL_FEATURE_MPU_HAS_PROCESS_IDENTIFIER
-    wordReg |= MPU_WORD_PID(regionConfig->processIdentifier) | MPU_WORD_PIDMASK(regionConfig->processIdMask);
-#endif /* FSL_FEATURE_MPU_HAS_PROCESS_IDENTIFIER */
-
-    base->WORD[number][3] = wordReg;
-}
-
-void MPU_SetRegionAddr(MPU_Type *base, mpu_region_num_t regionNum, uint32_t startAddr, uint32_t endAddr)
-{
-    base->WORD[regionNum][0] = startAddr;
-    base->WORD[regionNum][1] = endAddr;
-}
-
-void MPU_SetRegionLowMasterAccessRights(MPU_Type *base,
-                                        mpu_region_num_t regionNum,
-                                        mpu_master_t masterNum,
-                                        const mpu_low_masters_access_rights_t *accessRights)
-{
-    assert(accessRights);
-#if FSL_FEATURE_MPU_HAS_MASTER4
-    assert(masterNum < kMPU_Master4);
-#endif
-    uint32_t mask = MPU_WORD_LOW_MASTER_MASK(masterNum);
-    uint32_t right = base->RGDAAC[regionNum];
-
-#if FSL_FEATURE_MPU_HAS_PROCESS_IDENTIFIER
-    mask |= MPU_LOW_MASTER_PE_MASK(masterNum);
-#endif
-
-    /* Build rights control value. */
-    right &= ~mask;
-    right |= MPU_WORD_LOW_MASTER(masterNum,
-                                 ((uint32_t)(accessRights->superAccessRights << 3U) | accessRights->userAccessRights));
-#if FSL_FEATURE_MPU_HAS_PROCESS_IDENTIFIER
-    right |= MPU_WORD_MASTER_PE(masterNum, accessRights->processIdentifierEnable);
-#endif /* FSL_FEATURE_MPU_HAS_PROCESS_IDENTIFIER */
-
-    /* Set low master region access rights. */
-    base->RGDAAC[regionNum] = right;
-}
-
-void MPU_SetRegionHighMasterAccessRights(MPU_Type *base,
-                                         mpu_region_num_t regionNum,
-                                         mpu_master_t masterNum,
-                                         const mpu_high_masters_access_rights_t *accessRights)
-{
-    assert(accessRights);
-#if FSL_FEATURE_MPU_HAS_MASTER3
-    assert(masterNum > kMPU_Master3);
-#endif
-    uint32_t mask = MPU_WORD_HIGH_MASTER_MASK(masterNum);
-    uint32_t right = base->RGDAAC[regionNum];
-
-    /* Build rights control value. */
-    right &= ~mask;
-    right |= MPU_WORD_HIGH_MASTER((masterNum - (uint8_t)kMPU_RegionNum04),
-                                  (((uint32_t)accessRights->readEnable << 1U) | accessRights->writeEnable));
-    /* Set low master region access rights. */
-    base->RGDAAC[regionNum] = right;
-}
-
-bool MPU_GetSlavePortErrorStatus(MPU_Type *base, mpu_slave_t slaveNum)
-{
-    uint8_t sperr;
-
-    sperr = ((base->CESR & MPU_CESR_SPERR_MASK) >> MPU_CESR_SPERR_SHIFT) & (0x1U << slaveNum);
-
-    return (sperr != 0) ? true : false;
-}
-
-void MPU_GetDetailErrorAccessInfo(MPU_Type *base, mpu_slave_t slaveNum, mpu_access_err_info_t *errInform)
-{
-    assert(errInform);
-
-    uint16_t value;
-
-    /* Error address. */
-    errInform->address = base->SP[slaveNum].EAR;
-
-    /* Error detail information. */
-    value = (base->SP[slaveNum].EDR & MPU_EDR_EACD_MASK) >> MPU_EDR_EACD_SHIFT;
-    if (!value)
-    {
-        errInform->accessControl = kMPU_NoRegionHit;
-    }
-    else if (!(value & (uint16_t)(value - 1)))
-    {
-        errInform->accessControl = kMPU_NoneOverlappRegion;
-    }
-    else
-    {
-        errInform->accessControl = kMPU_OverlappRegion;
-    }
-
-    value = base->SP[slaveNum].EDR;
-    errInform->master = (mpu_master_t)((value & MPU_EDR_EMN_MASK) >> MPU_EDR_EMN_SHIFT);
-    errInform->attributes = (mpu_err_attributes_t)((value & MPU_EDR_EATTR_MASK) >> MPU_EDR_EATTR_SHIFT);
-    errInform->accessType = (mpu_err_access_type_t)((value & MPU_EDR_ERW_MASK) >> MPU_EDR_ERW_SHIFT);
-#if FSL_FEATURE_MPU_HAS_PROCESS_IDENTIFIER
-    errInform->processorIdentification = (uint8_t)((value & MPU_EDR_EPID_MASK) >> MPU_EDR_EPID_SHIFT);
-#endif
-
-    /*!< Clears error slave port bit. */
-    value = (base->CESR & ~MPU_CESR_SPERR_MASK) | (0x1U << slaveNum);
-    base->CESR = value;
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_mpu.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,495 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_MPU_H_
-#define _FSL_MPU_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup mpu
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief MPU driver version 2.0.0. */
-#define FSL_MPU_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
-/*@}*/
-
-/*! @brief MPU low master bit shift. */
-#define MPU_WORD_LOW_MASTER_SHIFT(n) (n * 6)
-
-/*! @brief MPU low master bit mask. */
-#define MPU_WORD_LOW_MASTER_MASK(n) (0x1Fu << MPU_WORD_LOW_MASTER_SHIFT(n))
-
-/*! @brief MPU low master bit width. */
-#define MPU_WORD_LOW_MASTER_WIDTH 5
-
-/*! @brief MPU low master priority setting. */
-#define MPU_WORD_LOW_MASTER(n, x) \
-    (((uint32_t)(((uint32_t)(x)) << MPU_WORD_LOW_MASTER_SHIFT(n))) & MPU_WORD_LOW_MASTER_MASK(n))
-
-/*! @brief MPU low master process enable bit shift. */
-#define MPU_LOW_MASTER_PE_SHIFT(n) (n * 6 + 5)
-
-/*! @brief MPU low master process enable bit mask. */
-#define MPU_LOW_MASTER_PE_MASK(n) (0x1u << MPU_LOW_MASTER_PE_SHIFT(n))
-
-/*! @brief MPU low master process enable width. */
-#define MPU_WORD_MASTER_PE_WIDTH 1
-
-/*! @brief MPU low master process enable setting. */
-#define MPU_WORD_MASTER_PE(n, x) \
-    (((uint32_t)(((uint32_t)(x)) << MPU_LOW_MASTER_PE_SHIFT(n))) & MPU_LOW_MASTER_PE_MASK(n))
-
-/*! @brief MPU high master bit shift. */
-#define MPU_WORD_HIGH_MASTER_SHIFT(n) (n * 2 + 24)
-
-/*! @brief MPU high master bit mask. */
-#define MPU_WORD_HIGH_MASTER_MASK(n) (0x03u << MPU_WORD_HIGH_MASTER_SHIFT(n))
-
-/*! @brief MPU high master bit width. */
-#define MPU_WORD_HIGH_MASTER_WIDTH 2
-
-/*! @brief MPU high master priority setting. */
-#define MPU_WORD_HIGH_MASTER(n, x) \
-    (((uint32_t)(((uint32_t)(x)) << MPU_WORD_HIGH_MASTER_SHIFT(n))) & MPU_WORD_HIGH_MASTER_MASK(n))
-
-/*! @brief MPU region number. */
-typedef enum _mpu_region_num
-{
-#if FSL_FEATURE_MPU_DESCRIPTOR_COUNT > 0U
-    kMPU_RegionNum00 = 0U, /*!< MPU region number 0. */
-#endif
-#if FSL_FEATURE_MPU_DESCRIPTOR_COUNT > 1U
-    kMPU_RegionNum01 = 1U, /*!< MPU region number 1. */
-#endif
-#if FSL_FEATURE_MPU_DESCRIPTOR_COUNT > 2U
-    kMPU_RegionNum02 = 2U, /*!< MPU region number 2. */
-#endif
-#if FSL_FEATURE_MPU_DESCRIPTOR_COUNT > 3U
-    kMPU_RegionNum03 = 3U, /*!< MPU region number 3. */
-#endif
-#if FSL_FEATURE_MPU_DESCRIPTOR_COUNT > 4U
-    kMPU_RegionNum04 = 4U, /*!< MPU region number 4. */
-#endif
-#if FSL_FEATURE_MPU_DESCRIPTOR_COUNT > 5U
-    kMPU_RegionNum05 = 5U, /*!< MPU region number 5. */
-#endif
-#if FSL_FEATURE_MPU_DESCRIPTOR_COUNT > 6U
-    kMPU_RegionNum06 = 6U, /*!< MPU region number 6. */
-#endif
-#if FSL_FEATURE_MPU_DESCRIPTOR_COUNT > 7U
-    kMPU_RegionNum07 = 7U, /*!< MPU region number 7. */
-#endif
-#if FSL_FEATURE_MPU_DESCRIPTOR_COUNT > 8U
-    kMPU_RegionNum08 = 8U, /*!< MPU region number 8. */
-#endif
-#if FSL_FEATURE_MPU_DESCRIPTOR_COUNT > 9U
-    kMPU_RegionNum09 = 9U, /*!< MPU region number 9. */
-#endif
-#if FSL_FEATURE_MPU_DESCRIPTOR_COUNT > 10U
-    kMPU_RegionNum10 = 10U, /*!< MPU region number 10. */
-#endif
-#if FSL_FEATURE_MPU_DESCRIPTOR_COUNT > 11U
-    kMPU_RegionNum11 = 11U, /*!< MPU region number 11. */
-#endif
-#if FSL_FEATURE_MPU_DESCRIPTOR_COUNT > 12U
-    kMPU_RegionNum12 = 12U, /*!< MPU region number 12. */
-#endif
-#if FSL_FEATURE_MPU_DESCRIPTOR_COUNT > 13U
-    kMPU_RegionNum13 = 13U, /*!< MPU region number 13. */
-#endif
-#if FSL_FEATURE_MPU_DESCRIPTOR_COUNT > 14U
-    kMPU_RegionNum14 = 14U, /*!< MPU region number 14. */
-#endif
-#if FSL_FEATURE_MPU_DESCRIPTOR_COUNT > 15U
-    kMPU_RegionNum15 = 15U, /*!< MPU region number 15. */
-#endif
-} mpu_region_num_t;
-
-/*! @brief MPU master number. */
-typedef enum _mpu_master
-{
-#if FSL_FEATURE_MPU_HAS_MASTER0
-    kMPU_Master0 = 0U, /*!< MPU master core. */
-#endif
-#if FSL_FEATURE_MPU_HAS_MASTER1
-    kMPU_Master1 = 1U, /*!< MPU master defined in SoC. */
-#endif
-#if FSL_FEATURE_MPU_HAS_MASTER2
-    kMPU_Master2 = 2U, /*!< MPU master defined in SoC. */
-#endif
-#if FSL_FEATURE_MPU_HAS_MASTER3
-    kMPU_Master3 = 3U, /*!< MPU master defined in SoC. */
-#endif
-#if FSL_FEATURE_MPU_HAS_MASTER4
-    kMPU_Master4 = 4U, /*!< MPU master defined in SoC. */
-#endif
-#if FSL_FEATURE_MPU_HAS_MASTER5
-    kMPU_Master5 = 5U, /*!< MPU master defined in SoC. */
-#endif
-#if FSL_FEATURE_MPU_HAS_MASTER6
-    kMPU_Master6 = 6U, /*!< MPU master defined in SoC. */
-#endif
-#if FSL_FEATURE_MPU_HAS_MASTER7
-    kMPU_Master7 = 7U /*!< MPU master defined in SoC. */
-#endif
-} mpu_master_t;
-
-/*! @brief Describes the number of MPU regions. */
-typedef enum _mpu_region_total_num
-{
-    kMPU_8Regions = 0x0U,  /*!< MPU supports 8 regions.  */
-    kMPU_12Regions = 0x1U, /*!< MPU supports 12 regions. */
-    kMPU_16Regions = 0x2U  /*!< MPU supports 16 regions. */
-} mpu_region_total_num_t;
-
-/*! @brief MPU slave port number. */
-typedef enum _mpu_slave
-{
-    kMPU_Slave0 = 4U, /*!< MPU slave port 0. */
-    kMPU_Slave1 = 3U, /*!< MPU slave port 1. */
-    kMPU_Slave2 = 2U, /*!< MPU slave port 2. */
-    kMPU_Slave3 = 1U, /*!< MPU slave port 3. */
-    kMPU_Slave4 = 0U  /*!< MPU slave port 4. */
-} mpu_slave_t;
-
-/*! @brief MPU error access control detail. */
-typedef enum _mpu_err_access_control
-{
-    kMPU_NoRegionHit = 0U,        /*!< No region hit error. */
-    kMPU_NoneOverlappRegion = 1U, /*!< Access single region error. */
-    kMPU_OverlappRegion = 2U      /*!< Access overlapping region error. */
-} mpu_err_access_control_t;
-
-/*! @brief MPU error access type. */
-typedef enum _mpu_err_access_type
-{
-    kMPU_ErrTypeRead = 0U, /*!< MPU error access type --- read.  */
-    kMPU_ErrTypeWrite = 1U /*!< MPU error access type --- write. */
-} mpu_err_access_type_t;
-
-/*! @brief MPU access error attributes.*/
-typedef enum _mpu_err_attributes
-{
-    kMPU_InstructionAccessInUserMode = 0U,       /*!< Access instruction error in user mode. */
-    kMPU_DataAccessInUserMode = 1U,              /*!< Access data error in user mode. */
-    kMPU_InstructionAccessInSupervisorMode = 2U, /*!< Access instruction error in supervisor mode. */
-    kMPU_DataAccessInSupervisorMode = 3U         /*!< Access data error in supervisor mode. */
-} mpu_err_attributes_t;
-
-/*! @brief MPU access rights in supervisor mode for master port 0 ~ port 3. */
-typedef enum _mpu_supervisor_access_rights
-{
-    kMPU_SupervisorReadWriteExecute = 0U, /*!< Read write and execute operations are allowed in supervisor mode. */
-    kMPU_SupervisorReadExecute = 1U,      /*!< Read and execute operations are allowed in supervisor mode. */
-    kMPU_SupervisorReadWrite = 2U,        /*!< Read write operations are allowed in supervisor mode. */
-    kMPU_SupervisorEqualToUsermode = 3U   /*!< Access permission equal to user mode. */
-} mpu_supervisor_access_rights_t;
-
-/*! @brief MPU access rights in user mode for master port 0 ~ port 3. */
-typedef enum _mpu_user_access_rights
-{
-    kMPU_UserNoAccessRights = 0U,  /*!< No access allowed in user mode.  */
-    kMPU_UserExecute = 1U,         /*!< Execute operation is allowed in user mode. */
-    kMPU_UserWrite = 2U,           /*!< Write operation is allowed in user mode. */
-    kMPU_UserWriteExecute = 3U,    /*!< Write and execute operations are allowed in user mode. */
-    kMPU_UserRead = 4U,            /*!< Read is allowed in user mode. */
-    kMPU_UserReadExecute = 5U,     /*!< Read and execute operations are allowed in user mode. */
-    kMPU_UserReadWrite = 6U,       /*!< Read and write operations are allowed in user mode. */
-    kMPU_UserReadWriteExecute = 7U /*!< Read write and execute operations are allowed in user mode. */
-} mpu_user_access_rights_t;
-
-/*! @brief MPU hardware basic information. */
-typedef struct _mpu_hardware_info
-{
-    uint8_t hardwareRevisionLevel;         /*!< Specifies the MPU's hardware and definition reversion level. */
-    uint8_t slavePortsNumbers;             /*!< Specifies the number of slave ports connected to MPU. */
-    mpu_region_total_num_t regionsNumbers; /*!< Indicates the number of region descriptors implemented. */
-} mpu_hardware_info_t;
-
-/*! @brief MPU detail error access information. */
-typedef struct _mpu_access_err_info
-{
-    mpu_master_t master;                    /*!< Access error master. */
-    mpu_err_attributes_t attributes;        /*!< Access error attributes. */
-    mpu_err_access_type_t accessType;       /*!< Access error type. */
-    mpu_err_access_control_t accessControl; /*!< Access error control. */
-    uint32_t address;                       /*!< Access error address. */
-#if FSL_FEATURE_MPU_HAS_PROCESS_IDENTIFIER
-    uint8_t processorIdentification; /*!< Access error processor identification. */
-#endif                               /* FSL_FEATURE_MPU_HAS_PROCESS_IDENTIFIER */
-} mpu_access_err_info_t;
-
-/*! @brief MPU access rights for low master master port 0 ~ port 3. */
-typedef struct _mpu_low_masters_access_rights
-{
-    mpu_supervisor_access_rights_t superAccessRights; /*!< Master access rights in supervisor mode. */
-    mpu_user_access_rights_t userAccessRights;        /*!< Master access rights in user mode. */
-#if FSL_FEATURE_MPU_HAS_PROCESS_IDENTIFIER
-    bool processIdentifierEnable; /*!< Enables or disables process identifier. */
-#endif                            /* FSL_FEATURE_MPU_HAS_PROCESS_IDENTIFIER */
-} mpu_low_masters_access_rights_t;
-
-/*! @brief MPU access rights mode for high master port 4 ~ port 7. */
-typedef struct _mpu_high_masters_access_rights
-{
-    bool writeEnable; /*!< Enables or disables write permission. */
-    bool readEnable;  /*!< Enables or disables read permission.  */
-} mpu_high_masters_access_rights_t;
-
-/*!
- * @brief MPU region configuration structure.
- *
- * This structure is used to configure the regionNum region.
- * The accessRights1[0] ~ accessRights1[3] are used to configure the four low master
- * numbers: master 0 ~ master 3.   The accessRights2[0] ~ accessRights2[3] are
- * used to configure the four high master numbers: master 4 ~ master 7.
- * The master port assignment is the chip configuration. Normally, the core is the
- * master 0, debugger is the master 1.
- * Note: MPU assigns a priority scheme where the debugger is treated as the highest
- * priority master followed by the core and then all the remaining masters.
- * MPU protection does not allow writes from the core to affect the "regionNum 0" start
- * and end address nor the permissions associated with the debugger. It can only write
- * the permission fields associated with the other masters. This protection guarantee
- * the debugger always has access to the entire address space and those rights can't
- * be changed by the core or any other bus master. Prepare
- * the region configuration when regionNum is kMPU_RegionNum00.
- */
-typedef struct _mpu_region_config
-{
-    mpu_region_num_t regionNum; /*!< MPU region number. */
-    uint32_t startAddress; /*!< Memory region start address. Note: bit0 ~ bit4 always be marked as 0 by MPU. The actual
-                              start address is 0-modulo-32 byte address.  */
-    uint32_t endAddress; /*!< Memory region end address. Note: bit0 ~ bit4 always be marked as 1 by MPU. The actual end
-                            address is 31-modulo-32 byte address. */
-    mpu_low_masters_access_rights_t accessRights1[4];  /*!< Low masters access permission.  */
-    mpu_high_masters_access_rights_t accessRights2[4]; /*!< High masters access permission. */
-#if FSL_FEATURE_MPU_HAS_PROCESS_IDENTIFIER
-    uint8_t processIdentifier; /*!< Process identifier used when "processIdentifierEnable" set with true. */
-    uint8_t
-        processIdMask; /*!< Process identifier mask. The setting bit will ignore the same bit in process identifier. */
-#endif                 /* FSL_FEATURE_MPU_HAS_PROCESS_IDENTIFIER */
-} mpu_region_config_t;
-
-/*!
- * @brief The configuration structure for the MPU initialization.
- *
- * This structure is used when calling the MPU_Init function.
- */
-typedef struct _mpu_config
-{
-    mpu_region_config_t regionConfig; /*!< region access permission. */
-    struct _mpu_config *next;         /*!< pointer to the next structure. */
-} mpu_config_t;
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif /* _cplusplus */
-
-/*!
- * @name Initialization and deinitialization
- * @{
- */
-
-/*!
- * @brief Initializes the MPU with the user configuration structure.
- *
- * This function configures the MPU module with the user-defined configuration.
- *
- * @param base     MPU peripheral base address.
- * @param config   The pointer to the configuration structure.
- */
-void MPU_Init(MPU_Type *base, const mpu_config_t *config);
-
-/*!
- * @brief Deinitializes the MPU regions.
- *
- * @param base     MPU peripheral base address.
- */
-void MPU_Deinit(MPU_Type *base);
-
-/* @}*/
-
-/*!
- * @name Basic Control Operations
- * @{
- */
-
-/*!
- * @brief Enables/disables the MPU globally.
- *
- * Call this API to enable or disable the MPU module.
- *
- * @param base     MPU peripheral base address.
- * @param enable   True enable MPU, false disable MPU.
- */
-static inline void MPU_Enable(MPU_Type *base, bool enable)
-{
-    if (enable)
-    {
-        /* Enable the MPU globally. */
-        base->CESR |= MPU_CESR_VLD_MASK;
-    }
-    else
-    { /* Disable the MPU globally. */
-        base->CESR &= ~MPU_CESR_VLD_MASK;
-    }
-}
-
-/*!
- * @brief Enables/disables the MPU for a special region.
- *
- * When MPU is enabled, call this API to disable an unused region
- * of an enabled MPU. Call this API to minimize the power dissipation.
- *
- * @param base     MPU peripheral base address.
- * @param number   MPU region number.
- * @param enable   True enable the special region MPU, false disable the special region MPU.
- */
-static inline void MPU_RegionEnable(MPU_Type *base, mpu_region_num_t number, bool enable)
-{
-    if (enable)
-    {
-        /* Enable the #number region MPU. */
-        base->WORD[number][3] |= MPU_WORD_VLD_MASK;
-    }
-    else
-    { /* Disable the #number region MPU. */
-        base->WORD[number][3] &= ~MPU_WORD_VLD_MASK;
-    }
-}
-
-/*!
- * @brief Gets the MPU basic hardware information.
- *
- * @param base           MPU peripheral base address.
- * @param hardwareInform The pointer to the MPU hardware information structure. See "mpu_hardware_info_t".
- */
-void MPU_GetHardwareInfo(MPU_Type *base, mpu_hardware_info_t *hardwareInform);
-
-/*!
- * @brief Sets the MPU region.
- *
- * Note: Due to the MPU protection, the kMPU_RegionNum00 does not allow writes from the
- * core to affect the start and end address nor the permissions associated with
- * the debugger. It can only write the permission fields associated
- * with the other masters.
- *
- * @param base          MPU peripheral base address.
- * @param regionConfig  The pointer to the MPU user configuration structure. See "mpu_region_config_t".
- */
-void MPU_SetRegionConfig(MPU_Type *base, const mpu_region_config_t *regionConfig);
-
-/*!
- * @brief Sets the region start and end address.
- *
- * Memory region start address. Note: bit0 ~ bit4 is always marked as 0 by MPU.
- * The actual start address by MPU is 0-modulo-32 byte address.
- * Memory region end address. Note: bit0 ~ bit4 always be marked as 1 by MPU.
- * The actual end address used by MPU is 31-modulo-32 byte address.
- * Note: Due to the MPU protection, the startAddr and endAddr can't be
- * changed by the core when regionNum is "kMPU_RegionNum00".
- *
- * @param base          MPU peripheral base address.
- * @param regionNum     MPU region number.
- * @param startAddr     Region start address.
- * @param endAddr       Region end address.
- */
-void MPU_SetRegionAddr(MPU_Type *base, mpu_region_num_t regionNum, uint32_t startAddr, uint32_t endAddr);
-
-/*!
- * @brief Sets the MPU region access rights for low master port 0 ~ port 3.
- * This can be used to change the region access rights for any master port for any region.
- *
- * @param base          MPU peripheral base address.
- * @param regionNum     MPU region number.
- * @param masterNum     MPU master number. Should range from kMPU_Master0 ~ kMPU_Master3.
- * @param accessRights  The pointer to the MPU access rights configuration. See "mpu_low_masters_access_rights_t".
- */
-void MPU_SetRegionLowMasterAccessRights(MPU_Type *base,
-                                        mpu_region_num_t regionNum,
-                                        mpu_master_t masterNum,
-                                        const mpu_low_masters_access_rights_t *accessRights);
-
-/*!
- * @brief Sets the MPU region access rights for high master port 4 ~ port 7.
- * This can be used to change the region access rights for any master port for any region.
- *
- * @param base          MPU peripheral base address.
- * @param regionNum     MPU region number.
- * @param masterNum     MPU master number. Should range from kMPU_Master4 ~ kMPU_Master7.
- * @param accessRights  The pointer to the MPU access rights configuration. See "mpu_high_masters_access_rights_t".
- */
-void MPU_SetRegionHighMasterAccessRights(MPU_Type *base,
-                                         mpu_region_num_t regionNum,
-                                         mpu_master_t masterNum,
-                                         const mpu_high_masters_access_rights_t *accessRights);
-
-/*!
- * @brief Gets the numbers of slave ports where errors occur.
- *
- * @param base       MPU peripheral base address.
- * @param slaveNum   MPU slave port number.
- * @return The slave ports error status.
- *         true  - error happens in this slave port.
- *         false - error didn't happen in this slave port.
- */
-bool MPU_GetSlavePortErrorStatus(MPU_Type *base, mpu_slave_t slaveNum);
-
-/*!
- * @brief Gets the MPU detailed error access information.
- *
- * @param base       MPU peripheral base address.
- * @param slaveNum   MPU slave port number.
- * @param errInform  The pointer to the MPU access error information. See "mpu_access_err_info_t".
- */
-void MPU_GetDetailErrorAccessInfo(MPU_Type *base, mpu_slave_t slaveNum, mpu_access_err_info_t *errInform);
-
-/* @} */
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*! @}*/
-
-#endif /* _FSL_MPU_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_pdb.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_pdb.h"
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-/*!
- * @brief Get instance number for PDB module.
- *
- * @param base PDB peripheral base address
- */
-static uint32_t PDB_GetInstance(PDB_Type *base);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-/*! @brief Pointers to PDB bases for each instance. */
-static PDB_Type *const s_pdbBases[] = PDB_BASE_PTRS;
-/*! @brief Pointers to PDB clocks for each instance. */
-const clock_ip_name_t s_pdbClocks[] = PDB_CLOCKS;
-
-/*******************************************************************************
- * Codes
- ******************************************************************************/
-static uint32_t PDB_GetInstance(PDB_Type *base)
-{
-    uint32_t instance;
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < FSL_FEATURE_SOC_PDB_COUNT; instance++)
-    {
-        if (s_pdbBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < FSL_FEATURE_SOC_PDB_COUNT);
-
-    return instance;
-}
-
-void PDB_Init(PDB_Type *base, const pdb_config_t *config)
-{
-    assert(NULL != config);
-
-    uint32_t tmp32;
-
-    /* Enable the clock. */
-    CLOCK_EnableClock(s_pdbClocks[PDB_GetInstance(base)]);
-
-    /* Configure. */
-    /* PDBx_SC. */
-    tmp32 = base->SC &
-            ~(PDB_SC_LDMOD_MASK | PDB_SC_PRESCALER_MASK | PDB_SC_TRGSEL_MASK | PDB_SC_MULT_MASK | PDB_SC_CONT_MASK);
-
-    tmp32 |= PDB_SC_LDMOD(config->loadValueMode) | PDB_SC_PRESCALER(config->prescalerDivider) |
-             PDB_SC_TRGSEL(config->triggerInputSource) | PDB_SC_MULT(config->dividerMultiplicationFactor);
-    if (config->enableContinuousMode)
-    {
-        tmp32 |= PDB_SC_CONT_MASK;
-    }
-    base->SC = tmp32;
-
-    PDB_Enable(base, true); /* Enable the PDB module. */
-}
-
-void PDB_Deinit(PDB_Type *base)
-{
-    PDB_Enable(base, false); /* Disable the PDB module. */
-
-    /* Disable the clock. */
-    CLOCK_DisableClock(s_pdbClocks[PDB_GetInstance(base)]);
-}
-
-void PDB_GetDefaultConfig(pdb_config_t *config)
-{
-    assert(NULL != config);
-
-    config->loadValueMode = kPDB_LoadValueImmediately;
-    config->prescalerDivider = kPDB_PrescalerDivider1;
-    config->dividerMultiplicationFactor = kPDB_DividerMultiplicationFactor1;
-    config->triggerInputSource = kPDB_TriggerSoftware;
-    config->enableContinuousMode = false;
-}
-
-#if defined(FSL_FEATURE_PDB_HAS_DAC) && FSL_FEATURE_PDB_HAS_DAC
-void PDB_SetDACTriggerConfig(PDB_Type *base, uint32_t channel, pdb_dac_trigger_config_t *config)
-{
-    assert(channel < PDB_INTC_COUNT);
-    assert(NULL != config);
-
-    uint32_t tmp32 = 0U;
-
-    /* PDBx_DACINTC. */
-    if (config->enableExternalTriggerInput)
-    {
-        tmp32 |= PDB_INTC_EXT_MASK;
-    }
-    if (config->enableIntervalTrigger)
-    {
-        tmp32 |= PDB_INTC_TOE_MASK;
-    }
-    base->DAC[channel].INTC = tmp32;
-}
-#endif /* FSL_FEATURE_PDB_HAS_DAC */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_pdb.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,576 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _FSL_PDB_H_
-#define _FSL_PDB_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup pdb
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief PDB driver version 2.0.1. */
-#define FSL_PDB_DRIVER_VERSION (MAKE_VERSION(2, 0, 1))
-/*@}*/
-
-/*!
- * @brief PDB flags.
- */
-enum _pdb_status_flags
-{
-    kPDB_LoadOKFlag = PDB_SC_LDOK_MASK,      /*!< This flag is automatically cleared when the values in buffers are
-                                                  loaded into the internal registers after the LDOK bit is set or the
-                                                  PDBEN is cleared. */
-    kPDB_DelayEventFlag = PDB_SC_PDBIF_MASK, /*!< PDB timer delay event flag. */
-};
-
-/*!
- * @brief PDB ADC PreTrigger channel flags.
- */
-enum _pdb_adc_pretrigger_flags
-{
-    /* PDB PreTrigger channel match flags. */
-    kPDB_ADCPreTriggerChannel0Flag = PDB_S_CF(1U << 0), /*!< Pre-Trigger 0 flag. */
-    kPDB_ADCPreTriggerChannel1Flag = PDB_S_CF(1U << 1), /*!< Pre-Trigger 1 flag. */
-#if (PDB_DLY_COUNT > 2)
-    kPDB_ADCPreTriggerChannel2Flag = PDB_S_CF(1U << 2), /*!< Pre-Trigger 2 flag. */
-    kPDB_ADCPreTriggerChannel3Flag = PDB_S_CF(1U << 3), /*!< Pre-Trigger 3 flag. */
-#endif                                                  /* PDB_DLY_COUNT > 2 */
-#if (PDB_DLY_COUNT > 4)
-    kPDB_ADCPreTriggerChannel4Flag = PDB_S_CF(1U << 4), /*!< Pre-Trigger 4 flag. */
-    kPDB_ADCPreTriggerChannel5Flag = PDB_S_CF(1U << 5), /*!< Pre-Trigger 5 flag. */
-    kPDB_ADCPreTriggerChannel6Flag = PDB_S_CF(1U << 6), /*!< Pre-Trigger 6 flag. */
-    kPDB_ADCPreTriggerChannel7Flag = PDB_S_CF(1U << 7), /*!< Pre-Trigger 7 flag. */
-#endif                                                  /* PDB_DLY_COUNT > 4 */
-
-    /* PDB PreTrigger channel error flags. */
-    kPDB_ADCPreTriggerChannel0ErrorFlag = PDB_S_ERR(1U << 0), /*!< Pre-Trigger 0 Error. */
-    kPDB_ADCPreTriggerChannel1ErrorFlag = PDB_S_ERR(1U << 1), /*!< Pre-Trigger 1 Error. */
-#if (PDB_DLY_COUNT > 2)
-    kPDB_ADCPreTriggerChannel2ErrorFlag = PDB_S_ERR(1U << 2), /*!< Pre-Trigger 2 Error. */
-    kPDB_ADCPreTriggerChannel3ErrorFlag = PDB_S_ERR(1U << 3), /*!< Pre-Trigger 3 Error. */
-#endif                                                        /* PDB_DLY_COUNT > 2 */
-#if (PDB_DLY_COUNT > 4)
-    kPDB_ADCPreTriggerChannel4ErrorFlag = PDB_S_ERR(1U << 4), /*!< Pre-Trigger 4 Error. */
-    kPDB_ADCPreTriggerChannel5ErrorFlag = PDB_S_ERR(1U << 5), /*!< Pre-Trigger 5 Error. */
-    kPDB_ADCPreTriggerChannel6ErrorFlag = PDB_S_ERR(1U << 6), /*!< Pre-Trigger 6 Error. */
-    kPDB_ADCPreTriggerChannel7ErrorFlag = PDB_S_ERR(1U << 7), /*!< Pre-Trigger 7 Error. */
-#endif                                                        /* PDB_DLY_COUNT > 4 */
-};
-
-/*!
- * @brief PDB buffer interrupts.
- */
-enum _pdb_interrupt_enable
-{
-    kPDB_SequenceErrorInterruptEnable = PDB_SC_PDBEIE_MASK, /*!< PDB sequence error interrupt enable. */
-    kPDB_DelayInterruptEnable = PDB_SC_PDBIE_MASK,          /*!< PDB delay interrupt enable. */
-};
-
-/*!
- * @brief PDB load value mode.
- *
- * Selects the mode to load the internal values after doing the load operation (write 1 to PDBx_SC[LDOK]).
- * These values are for:
- *  - PDB counter (PDBx_MOD, PDBx_IDLY)
- *  - ADC trigger (PDBx_CHnDLYm)
- *  - DAC trigger (PDBx_DACINTx)
- *  - CMP trigger (PDBx_POyDLY)
- */
-typedef enum _pdb_load_value_mode
-{
-    kPDB_LoadValueImmediately = 0U,                     /*!< Load immediately after 1 is written to LDOK. */
-    kPDB_LoadValueOnCounterOverflow = 1U,               /*!< Load when the PDB counter overflows (reaches the MOD
-                                                             register value). */
-    kPDB_LoadValueOnTriggerInput = 2U,                  /*!< Load a trigger input event is detected. */
-    kPDB_LoadValueOnCounterOverflowOrTriggerInput = 3U, /*!< Load either when the PDB counter overflows or a trigger
-                                                             input is detected. */
-} pdb_load_value_mode_t;
-
-/*!
- * @brief Prescaler divider.
- *
- * Counting uses the peripheral clock divided by multiplication factor selected by times of MULT.
- */
-typedef enum _pdb_prescaler_divider
-{
-    kPDB_PrescalerDivider1 = 0U,   /*!< Divider x1. */
-    kPDB_PrescalerDivider2 = 1U,   /*!< Divider x2. */
-    kPDB_PrescalerDivider4 = 2U,   /*!< Divider x4. */
-    kPDB_PrescalerDivider8 = 3U,   /*!< Divider x8. */
-    kPDB_PrescalerDivider16 = 4U,  /*!< Divider x16. */
-    kPDB_PrescalerDivider32 = 5U,  /*!< Divider x32. */
-    kPDB_PrescalerDivider64 = 6U,  /*!< Divider x64. */
-    kPDB_PrescalerDivider128 = 7U, /*!< Divider x128. */
-} pdb_prescaler_divider_t;
-
-/*!
- * @brief Multiplication factor select for prescaler.
- *
- * Selects the multiplication factor of the prescaler divider for the counter clock.
- */
-typedef enum _pdb_divider_multiplication_factor
-{
-    kPDB_DividerMultiplicationFactor1 = 0U,  /*!< Multiplication factor is 1. */
-    kPDB_DividerMultiplicationFactor10 = 1U, /*!< Multiplication factor is 10. */
-    kPDB_DividerMultiplicationFactor20 = 2U, /*!< Multiplication factor is 20. */
-    kPDB_DividerMultiplicationFactor40 = 3U, /*!< Multiplication factor is 40. */
-} pdb_divider_multiplication_factor_t;
-
-/*!
- * @brief Trigger input source
- *
- * Selects the trigger input source for the PDB. The trigger input source can be internal or external (EXTRG pin), or
- * the software trigger. Refer to chip configuration details for the actual PDB input trigger connections.
- */
-typedef enum _pdb_trigger_input_source
-{
-    kPDB_TriggerInput0 = 0U,    /*!< Trigger-In 0. */
-    kPDB_TriggerInput1 = 1U,    /*!< Trigger-In 1. */
-    kPDB_TriggerInput2 = 2U,    /*!< Trigger-In 2. */
-    kPDB_TriggerInput3 = 3U,    /*!< Trigger-In 3. */
-    kPDB_TriggerInput4 = 4U,    /*!< Trigger-In 4. */
-    kPDB_TriggerInput5 = 5U,    /*!< Trigger-In 5. */
-    kPDB_TriggerInput6 = 6U,    /*!< Trigger-In 6. */
-    kPDB_TriggerInput7 = 7U,    /*!< Trigger-In 7. */
-    kPDB_TriggerInput8 = 8U,    /*!< Trigger-In 8. */
-    kPDB_TriggerInput9 = 9U,    /*!< Trigger-In 9. */
-    kPDB_TriggerInput10 = 10U,  /*!< Trigger-In 10. */
-    kPDB_TriggerInput11 = 11U,  /*!< Trigger-In 11. */
-    kPDB_TriggerInput12 = 12U,  /*!< Trigger-In 12. */
-    kPDB_TriggerInput13 = 13U,  /*!< Trigger-In 13. */
-    kPDB_TriggerInput14 = 14U,  /*!< Trigger-In 14. */
-    kPDB_TriggerSoftware = 15U, /*!< Trigger-In 15. */
-} pdb_trigger_input_source_t;
-
-/*!
- * @brief PDB module configuration.
- */
-typedef struct _pdb_config
-{
-    pdb_load_value_mode_t loadValueMode;                             /*!< Select the load value mode. */
-    pdb_prescaler_divider_t prescalerDivider;                        /*!< Select the prescaler divider. */
-    pdb_divider_multiplication_factor_t dividerMultiplicationFactor; /*!< Multiplication factor select for prescaler. */
-    pdb_trigger_input_source_t triggerInputSource;                   /*!< Select the trigger input source. */
-    bool enableContinuousMode;                                       /*!< Enable the PDB operation in Continuous mode.*/
-} pdb_config_t;
-
-/*!
- * @brief PDB ADC Pre-Trigger configuration.
- */
-typedef struct _pdb_adc_pretrigger_config
-{
-    uint32_t enablePreTriggerMask;          /*!< PDB Channel Pre-Trigger Enable. */
-    uint32_t enableOutputMask;              /*!< PDB Channel Pre-Trigger Output Select.
-                                                 PDB channel's corresponding pre-trigger asserts when the counter
-                                                 reaches the channel delay register. */
-    uint32_t enableBackToBackOperationMask; /*!< PDB Channel Pre-Trigger Back-to-Back Operation Enable.
-                                                 Back-to-back operation enables the ADC conversions complete to trigger
-                                                 the next PDB channel pre-trigger and trigger output, so that the ADC
-                                                 conversions can be triggered on next set of configuration and results
-                                                 registers.*/
-} pdb_adc_pretrigger_config_t;
-
-/*!
- * @brief PDB DAC trigger configuration.
- */
-typedef struct _pdb_dac_trigger_config
-{
-    bool enableExternalTriggerInput; /*!< Enables the external trigger for DAC interval counter. */
-    bool enableIntervalTrigger;      /*!< Enables the DAC interval trigger. */
-} pdb_dac_trigger_config_t;
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
- * @name Initialization
- * @{
- */
-
-/*!
- * @brief Initializes  the PDB module.
- *
- * This function is to make the initialization for PDB module. The operations includes are:
- *  - Enable the clock for PDB instance.
- *  - Configure the PDB module.
- *  - Enable the PDB module.
- *
- * @param base PDB peripheral base address.
- * @param config Pointer to configuration structure. See "pdb_config_t".
- */
-void PDB_Init(PDB_Type *base, const pdb_config_t *config);
-
-/*!
- * @brief De-initializes  the PDB module.
- *
- * @param base PDB peripheral base address.
- */
-void PDB_Deinit(PDB_Type *base);
-
-/*!
- * @brief Initializes the PDB user configure structure.
- *
- * This function initializes the user configure structure to default value. the default value are:
- * @code
- *   config->loadValueMode = kPDB_LoadValueImmediately;
- *   config->prescalerDivider = kPDB_PrescalerDivider1;
- *   config->dividerMultiplicationFactor = kPDB_DividerMultiplicationFactor1;
- *   config->triggerInputSource = kPDB_TriggerSoftware;
- *   config->enableContinuousMode = false;
- * @endcode
- * @param config Pointer to configuration structure. See "pdb_config_t".
- */
-void PDB_GetDefaultConfig(pdb_config_t *config);
-
-/*!
- * @brief Enables the PDB module.
- *
- * @param base PDB peripheral base address.
- * @param enable Enable the module or not.
- */
-static inline void PDB_Enable(PDB_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->SC |= PDB_SC_PDBEN_MASK;
-    }
-    else
-    {
-        base->SC &= ~PDB_SC_PDBEN_MASK;
-    }
-}
-
-/* @} */
-
-/*!
- * @name Basic Counter
- * @{
- */
-
-/*!
- * @brief Triggers the PDB counter by software.
- *
- * @param base PDB peripheral base address.
- */
-static inline void PDB_DoSoftwareTrigger(PDB_Type *base)
-{
-    base->SC |= PDB_SC_SWTRIG_MASK;
-}
-
-/*!
- * @brief Loads the counter values.
- *
- * This function is to load the counter values from their internal buffer.
- * See "pdb_load_value_mode_t" about PDB's load mode.
- *
- * @param base PDB peripheral base address.
- */
-static inline void PDB_DoLoadValues(PDB_Type *base)
-{
-    base->SC |= PDB_SC_LDOK_MASK;
-}
-
-/*!
- * @brief Enables the DMA for the PDB module.
- *
- * @param base PDB peripheral base address.
- * @param enable Enable the feature or not.
- */
-static inline void PDB_EnableDMA(PDB_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->SC |= PDB_SC_DMAEN_MASK;
-    }
-    else
-    {
-        base->SC &= ~PDB_SC_DMAEN_MASK;
-    }
-}
-
-/*!
- * @brief Enables the interrupts for the PDB module.
- *
- * @param base PDB peripheral base address.
- * @param mask Mask value for interrupts. See "_pdb_interrupt_enable".
- */
-static inline void PDB_EnableInterrupts(PDB_Type *base, uint32_t mask)
-{
-    assert(0U == (mask & ~(PDB_SC_PDBEIE_MASK | PDB_SC_PDBIE_MASK)));
-
-    base->SC |= mask;
-}
-
-/*!
- * @brief Disables the interrupts for the PDB module.
- *
- * @param base PDB peripheral base address.
- * @param mask Mask value for interrupts. See "_pdb_interrupt_enable".
- */
-static inline void PDB_DisableInterrupts(PDB_Type *base, uint32_t mask)
-{
-    assert(0U == (mask & ~(PDB_SC_PDBEIE_MASK | PDB_SC_PDBIE_MASK)));
-
-    base->SC &= ~mask;
-}
-
-/*!
- * @brief  Gets the status flags of the PDB module.
- *
- * @param  base PDB peripheral base address.
- *
- * @return      Mask value for asserted flags. See "_pdb_status_flags".
- */
-static inline uint32_t PDB_GetStatusFlags(PDB_Type *base)
-{
-    return base->SC & (PDB_SC_PDBIF_MASK | PDB_SC_LDOK_MASK);
-}
-
-/*!
- * @brief Clears the status flags of the PDB module.
- *
- * @param base PDB peripheral base address.
- * @param mask Mask value of flags. See "_pdb_status_flags".
- */
-static inline void PDB_ClearStatusFlags(PDB_Type *base, uint32_t mask)
-{
-    assert(0U == (mask & ~PDB_SC_PDBIF_MASK));
-
-    base->SC &= ~mask;
-}
-
-/*!
- * @brief  Specifies the period of the counter.
- *
- * @param  base  PDB peripheral base address.
- * @param  value Setting value for the modulus. 16-bit is available.
- */
-static inline void PDB_SetModulusValue(PDB_Type *base, uint32_t value)
-{
-    base->MOD = PDB_MOD_MOD(value);
-}
-
-/*!
- * @brief  Gets the PDB counter's current value.
- *
- * @param  base PDB peripheral base address.
- *
- * @return      PDB counter's current value.
- */
-static inline uint32_t PDB_GetCounterValue(PDB_Type *base)
-{
-    return base->CNT;
-}
-
-/*!
- * @brief Sets the value for PDB counter delay event.
- *
- * @param base  PDB peripheral base address.
- * @param value Setting value for PDB counter delay event. 16-bit is available.
- */
-static inline void PDB_SetCounterDelayValue(PDB_Type *base, uint32_t value)
-{
-    base->IDLY = PDB_IDLY_IDLY(value);
-}
-/* @} */
-
-/*!
- * @name ADC Pre-Trigger
- * @{
- */
-
-/*!
- * @brief Configures the ADC PreTrigger in PDB module.
- *
- * @param base    PDB peripheral base address.
- * @param channel Channel index for ADC instance.
- * @param config  Pointer to configuration structure. See "pdb_adc_pretrigger_config_t".
- */
-static inline void PDB_SetADCPreTriggerConfig(PDB_Type *base, uint32_t channel, pdb_adc_pretrigger_config_t *config)
-{
-    assert(channel < PDB_C1_COUNT);
-    assert(NULL != config);
-
-    base->CH[channel].C1 = PDB_C1_BB(config->enableBackToBackOperationMask) | PDB_C1_TOS(config->enableOutputMask) |
-                           PDB_C1_EN(config->enableOutputMask);
-}
-
-/*!
- * @brief Sets the value for ADC Pre-Trigger delay event.
- *
- * This function is to set the value for ADC Pre-Trigger delay event. IT Specifies the delay value for the channel's
- * corresponding pre-trigger. The pre-trigger asserts when the PDB counter is equal to the setting value here.
- *
- * @param base       PDB peripheral base address.
- * @param channel    Channel index for ADC instance.
- * @param preChannel Channel group index for ADC instance.
- * @param value      Setting value for ADC Pre-Trigger delay event. 16-bit is available.
- */
-static inline void PDB_SetADCPreTriggerDelayValue(PDB_Type *base, uint32_t channel, uint32_t preChannel, uint32_t value)
-{
-    assert(channel < PDB_C1_COUNT);
-    assert(preChannel < PDB_DLY_COUNT);
-
-    base->CH[channel].DLY[preChannel] = PDB_DLY_DLY(value);
-}
-
-/*!
- * @brief  Gets the ADC Pre-Trigger's status flags.
- *
- * @param  base    PDB peripheral base address.
- * @param  channel Channel index for ADC instance.
- *
- * @return         Mask value for asserted flags. See "_pdb_adc_pretrigger_flags".
- */
-static inline uint32_t PDB_GetADCPreTriggerStatusFlags(PDB_Type *base, uint32_t channel)
-{
-    assert(channel < PDB_C1_COUNT);
-
-    return base->CH[channel].S;
-}
-
-/*!
- * @brief Clears the ADC Pre-Trigger's status flags.
- *
- * @param base    PDB peripheral base address.
- * @param channel Channel index for ADC instance.
- * @param mask    Mask value for flags. See "_pdb_adc_pretrigger_flags".
- */
-static inline void PDB_ClearADCPreTriggerStatusFlags(PDB_Type *base, uint32_t channel, uint32_t mask)
-{
-    assert(channel < PDB_C1_COUNT);
-
-    base->CH[channel].S &= ~mask;
-}
-
-/* @} */
-
-#if defined(FSL_FEATURE_PDB_HAS_DAC) && FSL_FEATURE_PDB_HAS_DAC
-/*!
- * @name DAC Interval Trigger
- * @{
- */
-
-/*!
- * @brief Configures the DAC trigger in PDB module.
- *
- * @param base    PDB peripheral base address.
- * @param channel Channel index for DAC instance.
- * @param config  Pointer to configuration structure. See "pdb_dac_trigger_config_t".
- */
-void PDB_SetDACTriggerConfig(PDB_Type *base, uint32_t channel, pdb_dac_trigger_config_t *config);
-
-/*!
- * @brief Sets the value for the DAC interval event.
- *
- * This fucntion is to set the value for DAC interval event. DAC interval trigger would trigger the DAC module to update
- * buffer when the DAC interval counter is equal to the setting value here.
- *
- * @param base    PDB peripheral base address.
- * @param channel Channel index for DAC instance.
- * @param value   Setting value for the DAC interval event.
- */
-static inline void PDB_SetDACTriggerIntervalValue(PDB_Type *base, uint32_t channel, uint32_t value)
-{
-    assert(channel < PDB_INT_COUNT);
-
-    base->DAC[channel].INT = PDB_INT_INT(value);
-}
-
-/* @} */
-#endif /* FSL_FEATURE_PDB_HAS_DAC */
-
-/*!
- * @name Pulse-Out Trigger
- * @{
- */
-
-/*!
- * @brief Enables the pulse out trigger channels.
- *
- * @param base        PDB peripheral base address.
- * @param channelMask Channel mask value for multiple pulse out trigger channel.
- * @param enable Enable the feature or not.
- */
-static inline void PDB_EnablePulseOutTrigger(PDB_Type *base, uint32_t channelMask, bool enable)
-{
-    if (enable)
-    {
-        base->POEN |= PDB_POEN_POEN(channelMask);
-    }
-    else
-    {
-        base->POEN &= ~(PDB_POEN_POEN(channelMask));
-    }
-}
-
-/*!
- * @brief Sets event values for pulse out trigger.
- *
- * This function is used to set event values for pulse output trigger.
- * These pulse output trigger delay values specify the delay for the PDB Pulse-Out. Pulse-Out goes high when the PDB
- * counter is equal to the pulse output high value (value1). Pulse-Out goes low when the PDB counter is equal to the
- * pulse output low value (value2).
- *
- * @param base    PDB peripheral base address.
- * @param channel Channel index for pulse out trigger channel.
- * @param value1  Setting value for pulse out high.
- * @param value2  Setting value for pulse out low.
- */
-static inline void PDB_SetPulseOutTriggerDelayValue(PDB_Type *base, uint32_t channel, uint32_t value1, uint32_t value2)
-{
-    assert(channel < PDB_PODLY_COUNT);
-
-    base->PODLY[channel] = PDB_PODLY_DLY1(value1) | PDB_PODLY_DLY2(value2);
-}
-
-/* @} */
-#if defined(__cplusplus)
-}
-#endif
-/*!
- * @}
- */
-#endif /* _FSL_PDB_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_pit.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_pit.h"
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-/*!
- * @brief Gets the instance from the base address to be used to gate or ungate the module clock
- *
- * @param base PIT peripheral base address
- *
- * @return The PIT instance
- */
-static uint32_t PIT_GetInstance(PIT_Type *base);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-/*! @brief Pointers to PIT bases for each instance. */
-static PIT_Type *const s_pitBases[] = PIT_BASE_PTRS;
-
-/*! @brief Pointers to PIT clocks for each instance. */
-static const clock_ip_name_t s_pitClocks[] = PIT_CLOCKS;
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-static uint32_t PIT_GetInstance(PIT_Type *base)
-{
-    uint32_t instance;
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < FSL_FEATURE_SOC_PIT_COUNT; instance++)
-    {
-        if (s_pitBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < FSL_FEATURE_SOC_PIT_COUNT);
-
-    return instance;
-}
-
-void PIT_Init(PIT_Type *base, const pit_config_t *config)
-{
-    assert(config);
-
-    /* Ungate the PIT clock*/
-    CLOCK_EnableClock(s_pitClocks[PIT_GetInstance(base)]);
-
-    /* Enable PIT timers */
-    base->MCR &= ~PIT_MCR_MDIS_MASK;
-
-    /* Config timer operation when in debug mode */
-    if (config->enableRunInDebug)
-    {
-        base->MCR &= ~PIT_MCR_FRZ_MASK;
-    }
-    else
-    {
-        base->MCR |= PIT_MCR_FRZ_MASK;
-    }
-}
-
-void PIT_Deinit(PIT_Type *base)
-{
-    /* Disable PIT timers */
-    base->MCR |= PIT_MCR_MDIS_MASK;
-
-    /* Gate the PIT clock*/
-    CLOCK_DisableClock(s_pitClocks[PIT_GetInstance(base)]);
-}
-
-#if defined(FSL_FEATURE_PIT_HAS_LIFETIME_TIMER) && FSL_FEATURE_PIT_HAS_LIFETIME_TIMER
-
-uint64_t PIT_GetLifetimeTimerCount(PIT_Type *base)
-{
-    uint32_t valueH = 0U;
-    uint32_t valueL = 0U;
-
-    /* LTMR64H should be read before LTMR64L */
-    valueH = base->LTMR64H;
-    valueL = base->LTMR64L;
-
-    return (((uint64_t)valueH << 32U) + (uint64_t)(valueL));
-}
-
-#endif /* FSL_FEATURE_PIT_HAS_LIFETIME_TIMER */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_pit.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,355 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_PIT_H_
-#define _FSL_PIT_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup pit_driver
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-#define FSL_PIT_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) /*!< Version 2.0.0 */
-/*@}*/
-
-/*!
- * @brief List of PIT channels
- * @note Actual number of available channels is SoC dependent
- */
-typedef enum _pit_chnl
-{
-    kPIT_Chnl_0 = 0U, /*!< PIT channel number 0*/
-    kPIT_Chnl_1,      /*!< PIT channel number 1 */
-    kPIT_Chnl_2,      /*!< PIT channel number 2 */
-    kPIT_Chnl_3,      /*!< PIT channel number 3 */
-} pit_chnl_t;
-
-/*! @brief List of PIT interrupts */
-typedef enum _pit_interrupt_enable
-{
-    kPIT_TimerInterruptEnable = PIT_TCTRL_TIE_MASK, /*!< Timer interrupt enable*/
-} pit_interrupt_enable_t;
-
-/*! @brief List of PIT status flags */
-typedef enum _pit_status_flags
-{
-    kPIT_TimerFlag = PIT_TFLG_TIF_MASK, /*!< Timer flag */
-} pit_status_flags_t;
-
-/*!
- * @brief PIT config structure
- *
- * This structure holds the configuration settings for the PIT peripheral. To initialize this
- * structure to reasonable defaults, call the PIT_GetDefaultConfig() function and pass a
- * pointer to your config structure instance.
- *
- * The config struct can be made const so it resides in flash
- */
-typedef struct _pit_config
-{
-    bool enableRunInDebug; /*!< true: Timers run in debug mode; false: Timers stop in debug mode */
-} pit_config_t;
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
- * @name Initialization and deinitialization
- * @{
- */
-
-/*!
- * @brief Ungates the PIT clock, enables the PIT module and configures the peripheral for basic operation.
- *
- * @note This API should be called at the beginning of the application using the PIT driver.
- *
- * @param base   PIT peripheral base address
- * @param config Pointer to user's PIT config structure
- */
-void PIT_Init(PIT_Type *base, const pit_config_t *config);
-
-/*!
- * @brief Gate the PIT clock and disable the PIT module
- *
- * @param base PIT peripheral base address
- */
-void PIT_Deinit(PIT_Type *base);
-
-/*!
- * @brief Fill in the PIT config struct with the default settings
- *
- * The default values are:
- * @code
- *     config->enableRunInDebug = false;
- * @endcode
- * @param config Pointer to user's PIT config structure.
- */
-static inline void PIT_GetDefaultConfig(pit_config_t *config)
-{
-    assert(config);
-
-    /* Timers are stopped in Debug mode */
-    config->enableRunInDebug = false;
-}
-
-#if defined(FSL_FEATURE_PIT_HAS_CHAIN_MODE) && FSL_FEATURE_PIT_HAS_CHAIN_MODE
-
-/*!
- * @brief Enables or disables chaining a timer with the previous timer.
- *
- * When a timer has a chain mode enabled, it only counts after the previous
- * timer has expired. If the timer n-1 has counted down to 0, counter n
- * decrements the value by one. Each timer is 32-bits, this allows the developers
- * to chain timers together and form a longer timer (64-bits and larger). The first timer
- * (timer 0) cannot be chained to any other timer.
- *
- * @param base    PIT peripheral base address
- * @param channel Timer channel number which is chained with the previous timer
- * @param enable  Enable or disable chain.
- *                true:  Current timer is chained with the previous timer.
- *                false: Timer doesn't chain with other timers.
- */
-static inline void PIT_SetTimerChainMode(PIT_Type *base, pit_chnl_t channel, bool enable)
-{
-    if (enable)
-    {
-        base->CHANNEL[channel].TCTRL |= PIT_TCTRL_CHN_MASK;
-    }
-    else
-    {
-        base->CHANNEL[channel].TCTRL &= ~PIT_TCTRL_CHN_MASK;
-    }
-}
-
-#endif /* FSL_FEATURE_PIT_HAS_CHAIN_MODE */
-
-/*! @}*/
-
-/*!
- * @name Interrupt Interface
- * @{
- */
-
-/*!
- * @brief Enables the selected PIT interrupts.
- *
- * @param base    PIT peripheral base address
- * @param channel Timer channel number
- * @param mask    The interrupts to enable. This is a logical OR of members of the
- *                enumeration ::pit_interrupt_enable_t
- */
-static inline void PIT_EnableInterrupts(PIT_Type *base, pit_chnl_t channel, uint32_t mask)
-{
-    base->CHANNEL[channel].TCTRL |= mask;
-}
-
-/*!
- * @brief Disables the selected PIT interrupts.
- *
- * @param base    PIT peripheral base address
- * @param channel Timer channel number
- * @param mask    The interrupts to disable. This is a logical OR of members of the
- *                enumeration ::pit_interrupt_enable_t
- */
-static inline void PIT_DisableInterrupts(PIT_Type *base, pit_chnl_t channel, uint32_t mask)
-{
-    base->CHANNEL[channel].TCTRL &= ~mask;
-}
-
-/*!
- * @brief Gets the enabled PIT interrupts.
- *
- * @param base    PIT peripheral base address
- * @param channel Timer channel number
- *
- * @return The enabled interrupts. This is the logical OR of members of the
- *         enumeration ::pit_interrupt_enable_t
- */
-static inline uint32_t PIT_GetEnabledInterrupts(PIT_Type *base, pit_chnl_t channel)
-{
-    return (base->CHANNEL[channel].TCTRL & PIT_TCTRL_TIE_MASK);
-}
-
-/*! @}*/
-
-/*!
- * @name Status Interface
- * @{
- */
-
-/*!
- * @brief Gets the PIT status flags
- *
- * @param base    PIT peripheral base address
- * @param channel Timer channel number
- *
- * @return The status flags. This is the logical OR of members of the
- *         enumeration ::pit_status_flags_t
- */
-static inline uint32_t PIT_GetStatusFlags(PIT_Type *base, pit_chnl_t channel)
-{
-    return (base->CHANNEL[channel].TFLG & PIT_TFLG_TIF_MASK);
-}
-
-/*!
- * @brief  Clears the PIT status flags.
- *
- * @param base    PIT peripheral base address
- * @param channel Timer channel number
- * @param mask    The status flags to clear. This is a logical OR of members of the
- *                enumeration ::pit_status_flags_t
- */
-static inline void PIT_ClearStatusFlags(PIT_Type *base, pit_chnl_t channel, uint32_t mask)
-{
-    base->CHANNEL[channel].TFLG = mask;
-}
-
-/*! @}*/
-
-/*!
- * @name Read and Write the timer period
- * @{
- */
-
-/*!
- * @brief Sets the timer period in units of count.
- *
- * Timers begin counting from the value set by this function until it reaches 0,
- * then it will generate an interrupt and load this regiter value again.
- * Writing a new value to this register will not restart the timer; instead the value
- * will be loaded after the timer expires.
- *
- * @note User can call the utility macros provided in fsl_common.h to convert to ticks
- *
- * @param base    PIT peripheral base address
- * @param channel Timer channel number
- * @param count   Timer period in units of ticks
- */
-static inline void PIT_SetTimerPeriod(PIT_Type *base, pit_chnl_t channel, uint32_t count)
-{
-    base->CHANNEL[channel].LDVAL = count;
-}
-
-/*!
- * @brief Reads the current timer counting value.
- *
- * This function returns the real-time timer counting value, in a range from 0 to a
- * timer period.
- *
- * @note User can call the utility macros provided in fsl_common.h to convert ticks to usec or msec
- *
- * @param base    PIT peripheral base address
- * @param channel Timer channel number
- *
- * @return Current timer counting value in ticks
- */
-static inline uint32_t PIT_GetCurrentTimerCount(PIT_Type *base, pit_chnl_t channel)
-{
-    return base->CHANNEL[channel].CVAL;
-}
-
-/*! @}*/
-
-/*!
- * @name Timer Start and Stop
- * @{
- */
-
-/*!
- * @brief Starts the timer counting.
- *
- * After calling this function, timers load period value, count down to 0 and
- * then load the respective start value again. Each time a timer reaches 0,
- * it generates a trigger pulse and sets the timeout interrupt flag.
- *
- * @param base    PIT peripheral base address
- * @param channel Timer channel number.
- */
-static inline void PIT_StartTimer(PIT_Type *base, pit_chnl_t channel)
-{
-    base->CHANNEL[channel].TCTRL |= PIT_TCTRL_TEN_MASK;
-}
-
-/*!
- * @brief Stops the timer counting.
- *
- * This function stops every timer counting. Timers reload their periods
- * respectively after the next time they call the PIT_DRV_StartTimer.
- *
- * @param base    PIT peripheral base address
- * @param channel Timer channel number.
- */
-static inline void PIT_StopTimer(PIT_Type *base, pit_chnl_t channel)
-{
-    base->CHANNEL[channel].TCTRL &= ~PIT_TCTRL_TEN_MASK;
-}
-
-/*! @}*/
-
-#if defined(FSL_FEATURE_PIT_HAS_LIFETIME_TIMER) && FSL_FEATURE_PIT_HAS_LIFETIME_TIMER
-
-/*!
- * @brief Reads the current lifetime counter value.
- *
- * The lifetime timer is a 64-bit timer which chains timer 0 and timer 1 together.
- * Timer 0 and 1 are chained by calling the PIT_SetTimerChainMode before using this timer.
- * The period of lifetime timer is equal to the "period of timer 0 * period of timer 1".
- * For the 64-bit value, the higher 32-bit has the value of timer 1, and the lower 32-bit
- * has the value of timer 0.
- *
- * @param base PIT peripheral base address
- *
- * @return Current lifetime timer value
- */
-uint64_t PIT_GetLifetimeTimerCount(PIT_Type *base);
-
-#endif /* FSL_FEATURE_PIT_HAS_LIFETIME_TIMER */
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*! @}*/
-
-#endif /* _FSL_PIT_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_pmc.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "fsl_pmc.h"
-
-#if (defined(FSL_FEATURE_PMC_HAS_PARAM) && FSL_FEATURE_PMC_HAS_PARAM)
-void PMC_GetParam(PMC_Type *base, pmc_param_t *param)
-{
-    uint32_t reg = base->PARAM;
-    ;
-    param->vlpoEnable = (bool)(reg & PMC_PARAM_VLPOE_MASK);
-    param->hvdEnable = (bool)(reg & PMC_PARAM_HVDE_MASK);
-}
-#endif /* FSL_FEATURE_PMC_HAS_PARAM */
-
-void PMC_ConfigureLowVoltDetect(PMC_Type *base, const pmc_low_volt_detect_config_t *config)
-{
-    base->LVDSC1 = (0U |
-#if (defined(FSL_FEATURE_PMC_HAS_LVDV) && FSL_FEATURE_PMC_HAS_LVDV)
-                    ((uint32_t)config->voltSelect << PMC_LVDSC1_LVDV_SHIFT) |
-#endif
-                    ((uint32_t)config->enableInt << PMC_LVDSC1_LVDIE_SHIFT) |
-                    ((uint32_t)config->enableReset << PMC_LVDSC1_LVDRE_SHIFT)
-                    /* Clear the Low Voltage Detect Flag with previouse power detect setting */
-                    | PMC_LVDSC1_LVDACK_MASK);
-}
-
-void PMC_ConfigureLowVoltWarning(PMC_Type *base, const pmc_low_volt_warning_config_t *config)
-{
-    base->LVDSC2 = (0U |
-#if (defined(FSL_FEATURE_PMC_HAS_LVWV) && FSL_FEATURE_PMC_HAS_LVWV)
-                    ((uint32_t)config->voltSelect << PMC_LVDSC2_LVWV_SHIFT) |
-#endif
-                    ((uint32_t)config->enableInt << PMC_LVDSC2_LVWIE_SHIFT)
-                    /* Clear the Low Voltage Warning Flag with previouse power detect setting */
-                    | PMC_LVDSC2_LVWACK_MASK);
-}
-
-#if (defined(FSL_FEATURE_PMC_HAS_HVDSC1) && FSL_FEATURE_PMC_HAS_HVDSC1)
-void PMC_ConfigureHighVoltDetect(PMC_Type *base, const pmc_high_volt_detect_config_t *config)
-{
-    base->HVDSC1 = (((uint32_t)config->voltSelect << PMC_HVDSC1_HVDV_SHIFT) |
-                    ((uint32_t)config->enableInt << PMC_HVDSC1_HVDIE_SHIFT) |
-                    ((uint32_t)config->enableReset << PMC_HVDSC1_HVDRE_SHIFT)
-                    /* Clear the High Voltage Detect Flag with previouse power detect setting */
-                    | PMC_HVDSC1_HVDACK_MASK);
-}
-#endif /* FSL_FEATURE_PMC_HAS_HVDSC1 */
-
-#if ((defined(FSL_FEATURE_PMC_HAS_BGBE) && FSL_FEATURE_PMC_HAS_BGBE) || \
-     (defined(FSL_FEATURE_PMC_HAS_BGEN) && FSL_FEATURE_PMC_HAS_BGEN) || \
-     (defined(FSL_FEATURE_PMC_HAS_BGBDS) && FSL_FEATURE_PMC_HAS_BGBDS))
-void PMC_ConfigureBandgapBuffer(PMC_Type *base, const pmc_bandgap_buffer_config_t *config)
-{
-    base->REGSC = (0U
-#if (defined(FSL_FEATURE_PMC_HAS_BGBE) && FSL_FEATURE_PMC_HAS_BGBE)
-                   | ((uint32_t)config->enable << PMC_REGSC_BGBE_SHIFT)
-#endif /* FSL_FEATURE_PMC_HAS_BGBE */
-#if (defined(FSL_FEATURE_PMC_HAS_BGEN) && FSL_FEATURE_PMC_HAS_BGEN)
-                   | (((uint32_t)config->enableInLowPowerMode << PMC_REGSC_BGEN_SHIFT))
-#endif /* FSL_FEATURE_PMC_HAS_BGEN */
-#if (defined(FSL_FEATURE_PMC_HAS_BGBDS) && FSL_FEATURE_PMC_HAS_BGBDS)
-                   | ((uint32_t)config->drive << PMC_REGSC_BGBDS_SHIFT)
-#endif /* FSL_FEATURE_PMC_HAS_BGBDS */
-                       );
-}
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_pmc.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,423 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_PMC_H_
-#define _FSL_PMC_H_
-
-#include "fsl_common.h"
-
-/*! @addtogroup pmc */
-/*! @{ */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief PMC driver version */
-#define FSL_PMC_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) /*!< Version 2.0.0. */
-/*@}*/
-
-#if (defined(FSL_FEATURE_PMC_HAS_LVDV) && FSL_FEATURE_PMC_HAS_LVDV)
-/*!
- * @brief Low-Voltage Detect Voltage Select
- */
-typedef enum _pmc_low_volt_detect_volt_select
-{
-    kPMC_LowVoltDetectLowTrip = 0U, /*!< Low trip point selected (VLVD = VLVDL )*/
-    kPMC_LowVoltDetectHighTrip = 1U /*!< High trip point selected (VLVD = VLVDH )*/
-} pmc_low_volt_detect_volt_select_t;
-#endif
-
-#if (defined(FSL_FEATURE_PMC_HAS_LVWV) && FSL_FEATURE_PMC_HAS_LVWV)
-/*!
- * @brief Low-Voltage Warning Voltage Select
- */
-typedef enum _pmc_low_volt_warning_volt_select
-{
-    kPMC_LowVoltWarningLowTrip = 0U,  /*!< Low trip point selected (VLVW = VLVW1)*/
-    kPMC_LowVoltWarningMid1Trip = 1U, /*!< Mid 1 trip point selected (VLVW = VLVW2)*/
-    kPMC_LowVoltWarningMid2Trip = 2U, /*!< Mid 2 trip point selected (VLVW = VLVW3)*/
-    kPMC_LowVoltWarningHighTrip = 3U  /*!< High trip point selected (VLVW = VLVW4)*/
-} pmc_low_volt_warning_volt_select_t;
-#endif
-
-#if (defined(FSL_FEATURE_PMC_HAS_HVDSC1) && FSL_FEATURE_PMC_HAS_HVDSC1)
-/*!
- * @brief High-Voltage Detect Voltage Select
- */
-typedef enum _pmc_high_volt_detect_volt_select
-{
-    kPMC_HighVoltDetectLowTrip = 0U, /*!< Low trip point selected (VHVD = VHVDL )*/
-    kPMC_HighVoltDetectHighTrip = 1U /*!< High trip point selected (VHVD = VHVDH )*/
-} pmc_high_volt_detect_volt_select_t;
-#endif /* FSL_FEATURE_PMC_HAS_HVDSC1 */
-
-#if (defined(FSL_FEATURE_PMC_HAS_BGBDS) && FSL_FEATURE_PMC_HAS_BGBDS)
-/*!
- * @brief Bandgap Buffer Drive Select.
- */
-typedef enum _pmc_bandgap_buffer_drive_select
-{
-    kPMC_BandgapBufferDriveLow = 0U, /*!< Low drive.  */
-    kPMC_BandgapBufferDriveHigh = 1U /*!< High drive. */
-} pmc_bandgap_buffer_drive_select_t;
-#endif /* FSL_FEATURE_PMC_HAS_BGBDS */
-
-#if (defined(FSL_FEATURE_PMC_HAS_VLPO) && FSL_FEATURE_PMC_HAS_VLPO)
-/*!
- * @brief VLPx Option
- */
-typedef enum _pmc_vlp_freq_option
-{
-    kPMC_FreqRestrict = 0U,  /*!< Frequency is restricted in VLPx mode. */
-    kPMC_FreqUnrestrict = 1U /*!< Frequency is unrestricted in VLPx mode. */
-} pmc_vlp_freq_mode_t;
-#endif /* FSL_FEATURE_PMC_HAS_VLPO */
-
-#if (defined(FSL_FEATURE_PMC_HAS_VERID) && FSL_FEATURE_PMC_HAS_VERID)
-/*!
- @brief IP version ID definition.
- */
-typedef struct _pmc_version_id
-{
-    uint16_t feature; /*!< Feature Specification Number. */
-    uint8_t minor;    /*!< Minor version number.         */
-    uint8_t major;    /*!< Major version number.         */
-} pmc_version_id_t;
-#endif /* FSL_FEATURE_PMC_HAS_VERID */
-
-#if (defined(FSL_FEATURE_PMC_HAS_PARAM) && FSL_FEATURE_PMC_HAS_PARAM)
-/*! @brief IP parameter definition. */
-typedef struct _pmc_param
-{
-    bool vlpoEnable; /*!< VLPO enable. */
-    bool hvdEnable;  /*!< HVD enable.  */
-} pmc_param_t;
-#endif /* FSL_FEATURE_PMC_HAS_PARAM */
-
-/*!
- * @brief Low-Voltage Detect Configuration Structure
- */
-typedef struct _pmc_low_volt_detect_config
-{
-    bool enableInt;   /*!< Enable interrupt when low voltage detect*/
-    bool enableReset; /*!< Enable system reset when low voltage detect*/
-#if (defined(FSL_FEATURE_PMC_HAS_LVDV) && FSL_FEATURE_PMC_HAS_LVDV)
-    pmc_low_volt_detect_volt_select_t voltSelect; /*!< Low voltage detect trip point voltage selection*/
-#endif
-} pmc_low_volt_detect_config_t;
-
-/*!
- * @brief Low-Voltage Warning Configuration Structure
- */
-typedef struct _pmc_low_volt_warning_config
-{
-    bool enableInt; /*!< Enable interrupt when low voltage warning*/
-#if (defined(FSL_FEATURE_PMC_HAS_LVWV) && FSL_FEATURE_PMC_HAS_LVWV)
-    pmc_low_volt_warning_volt_select_t voltSelect; /*!< Low voltage warning trip point voltage selection*/
-#endif
-} pmc_low_volt_warning_config_t;
-
-#if (defined(FSL_FEATURE_PMC_HAS_HVDSC1) && FSL_FEATURE_PMC_HAS_HVDSC1)
-/*!
- * @brief High-Voltage Detect Configuration Structure
- */
-typedef struct _pmc_high_volt_detect_config
-{
-    bool enableInt;                                /*!< Enable interrupt when high voltage detect*/
-    bool enableReset;                              /*!< Enable system reset when high voltage detect*/
-    pmc_high_volt_detect_volt_select_t voltSelect; /*!< High voltage detect trip point voltage selection*/
-} pmc_high_volt_detect_config_t;
-#endif /* FSL_FEATURE_PMC_HAS_HVDSC1 */
-
-#if ((defined(FSL_FEATURE_PMC_HAS_BGBE) && FSL_FEATURE_PMC_HAS_BGBE) || \
-     (defined(FSL_FEATURE_PMC_HAS_BGEN) && FSL_FEATURE_PMC_HAS_BGEN) || \
-     (defined(FSL_FEATURE_PMC_HAS_BGBDS) && FSL_FEATURE_PMC_HAS_BGBDS))
-/*!
- * @brief Bandgap Buffer configuration.
- */
-typedef struct _pmc_bandgap_buffer_config
-{
-#if (defined(FSL_FEATURE_PMC_HAS_BGBE) && FSL_FEATURE_PMC_HAS_BGBE)
-    bool enable; /*!< Enable bandgap buffer.                   */
-#endif
-#if (defined(FSL_FEATURE_PMC_HAS_BGEN) && FSL_FEATURE_PMC_HAS_BGEN)
-    bool enableInLowPowerMode; /*!< Enable bandgap buffer in low power mode. */
-#endif                         /* FSL_FEATURE_PMC_HAS_BGEN */
-#if (defined(FSL_FEATURE_PMC_HAS_BGBDS) && FSL_FEATURE_PMC_HAS_BGBDS)
-    pmc_bandgap_buffer_drive_select_t drive; /*!< Bandgap buffer drive select.             */
-#endif                                       /* FSL_FEATURE_PMC_HAS_BGBDS */
-} pmc_bandgap_buffer_config_t;
-#endif
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif /* __cplusplus*/
-
-/*! @name Power Management Controller Control APIs*/
-/*@{*/
-
-#if (defined(FSL_FEATURE_PMC_HAS_VERID) && FSL_FEATURE_PMC_HAS_VERID)
-/*!
- * @brief Gets the PMC version ID.
- *
- * This function gets the PMC version ID, including major version number,
- * minor version number and feature specification number.
- *
- * @param base PMC peripheral base address.
- * @param versionId     Pointer to version ID structure.
- */
-static inline void PMC_GetVersionId(PMC_Type *base, pmc_version_id_t *versionId)
-{
-    *((uint32_t *)versionId) = base->VERID;
-}
-#endif /* FSL_FEATURE_PMC_HAS_VERID */
-
-#if (defined(FSL_FEATURE_PMC_HAS_PARAM) && FSL_FEATURE_PMC_HAS_PARAM)
-/*!
- * @brief Gets the PMC parameter.
- *
- * This function gets the PMC parameter, including VLPO enable and HVD enable.
- *
- * @param base PMC peripheral base address.
- * @param param         Pointer to PMC param structure.
- */
-void PMC_GetParam(PMC_Type *base, pmc_param_t *param);
-#endif
-
-/*!
- * @brief Configure the low voltage detect setting.
- *
- * This function configures the low voltage detect setting, including the trip
- * point voltage setting, enable interrupt or not, enable system reset or not.
- *
- * @param base PMC peripheral base address.
- * @param config  Low-Voltage detect configuration structure.
- */
-void PMC_ConfigureLowVoltDetect(PMC_Type *base, const pmc_low_volt_detect_config_t *config);
-
-/*!
- * @brief Get Low-Voltage Detect Flag status
- *
- * This function  reads the current LVDF status. If it returns 1, a low
- * voltage event is detected.
- *
- * @param base PMC peripheral base address.
- * @return Current low voltage detect flag
- *                - true: Low-Voltage detected
- *                - false: Low-Voltage not detected
- */
-static inline bool PMC_GetLowVoltDetectFlag(PMC_Type *base)
-{
-    return (bool)(base->LVDSC1 & PMC_LVDSC1_LVDF_MASK);
-}
-
-/*!
- * @brief Acknowledge to clear the Low-Voltage Detect flag
- *
- * This function acknowledges the low voltage detection errors (write 1 to
- * clear LVDF).
- *
- * @param base PMC peripheral base address.
- */
-static inline void PMC_ClearLowVoltDetectFlag(PMC_Type *base)
-{
-    base->LVDSC1 |= PMC_LVDSC1_LVDACK_MASK;
-}
-
-/*!
- * @brief Configure the low voltage warning setting.
- *
- * This function configures the low voltage warning setting, including the trip
- * point voltage setting and enable interrupt or not.
- *
- * @param base PMC peripheral base address.
- * @param config  Low-Voltage warning configuration structure.
- */
-void PMC_ConfigureLowVoltWarning(PMC_Type *base, const pmc_low_volt_warning_config_t *config);
-
-/*!
- * @brief Get Low-Voltage Warning Flag status
- *
- * This function polls the current LVWF status. When 1 is returned, it
- * indicates a low-voltage warning event. LVWF is set when V Supply transitions
- * below the trip point or after reset and V Supply is already below the V LVW.
- *
- * @param base PMC peripheral base address.
- * @return Current LVWF status
- *                  - true: Low-Voltage Warning Flag is set.
- *                  - false: the  Low-Voltage Warning does not happen.
- */
-static inline bool PMC_GetLowVoltWarningFlag(PMC_Type *base)
-{
-    return (bool)(base->LVDSC2 & PMC_LVDSC2_LVWF_MASK);
-}
-
-/*!
- * @brief Acknowledge to Low-Voltage Warning flag
- *
- * This function acknowledges the low voltage warning errors (write 1 to
- * clear LVWF).
- *
- * @param base PMC peripheral base address.
- */
-static inline void PMC_ClearLowVoltWarningFlag(PMC_Type *base)
-{
-    base->LVDSC2 |= PMC_LVDSC2_LVWACK_MASK;
-}
-
-#if (defined(FSL_FEATURE_PMC_HAS_HVDSC1) && FSL_FEATURE_PMC_HAS_HVDSC1)
-/*!
- * @brief Configure the high voltage detect setting.
- *
- * This function configures the high voltage detect setting, including the trip
- * point voltage setting, enable interrupt or not, enable system reset or not.
- *
- * @param base PMC peripheral base address.
- * @param config  High-Voltage detect configuration structure.
- */
-void PMC_ConfigureHighVoltDetect(PMC_Type *base, const pmc_high_volt_detect_config_t *config);
-
-/*!
- * @brief Get High-Voltage Detect Flag status
- *
- * This function  reads the current HVDF status. If it returns 1, a low
- * voltage event is detected.
- *
- * @param base PMC peripheral base address.
- * @return Current high voltage detect flag
- *                - true: High-Voltage detected
- *                - false: High-Voltage not detected
- */
-static inline bool PMC_GetHighVoltDetectFlag(PMC_Type *base)
-{
-    return (bool)(base->HVDSC1 & PMC_HVDSC1_HVDF_MASK);
-}
-
-/*!
- * @brief Acknowledge to clear the High-Voltage Detect flag
- *
- * This function acknowledges the high voltage detection errors (write 1 to
- * clear HVDF).
- *
- * @param base PMC peripheral base address.
- */
-static inline void PMC_ClearHighVoltDetectFlag(PMC_Type *base)
-{
-    base->HVDSC1 |= PMC_HVDSC1_HVDACK_MASK;
-}
-#endif /* FSL_FEATURE_PMC_HAS_HVDSC1 */
-
-#if ((defined(FSL_FEATURE_PMC_HAS_BGBE) && FSL_FEATURE_PMC_HAS_BGBE) || \
-     (defined(FSL_FEATURE_PMC_HAS_BGEN) && FSL_FEATURE_PMC_HAS_BGEN) || \
-     (defined(FSL_FEATURE_PMC_HAS_BGBDS) && FSL_FEATURE_PMC_HAS_BGBDS))
-/*!
- * @brief Configure the PMC bandgap
- *
- * This function configures the PMC bandgap, including the drive select and
- * behavior in low power mode.
- *
- * @param base PMC peripheral base address.
- * @param config Pointer to the configuration structure
- */
-void PMC_ConfigureBandgapBuffer(PMC_Type *base, const pmc_bandgap_buffer_config_t *config);
-#endif
-
-#if (defined(FSL_FEATURE_PMC_HAS_ACKISO) && FSL_FEATURE_PMC_HAS_ACKISO)
-/*!
- * @brief Gets the acknowledge Peripherals and I/O pads isolation flag.
- *
- * This function  reads the Acknowledge Isolation setting that indicates
- * whether certain peripherals and the I/O pads are in a latched state as
- * a result of having been in the VLLS mode.
- *
- * @param base PMC peripheral base address.
- * @param base  Base address for current PMC instance.
- * @return ACK isolation
- *               0 - Peripherals and I/O pads are in a normal run state.
- *               1 - Certain peripherals and I/O pads are in an isolated and
- *                   latched state.
- */
-static inline bool PMC_GetPeriphIOIsolationFlag(PMC_Type *base)
-{
-    return (bool)(base->REGSC & PMC_REGSC_ACKISO_MASK);
-}
-
-/*!
- * @brief Acknowledge to Peripherals and I/O pads isolation flag.
- *
- * This function  clears the ACK Isolation flag. Writing one to this setting
- * when it is set releases the I/O pads and certain peripherals to their normal
- * run mode state.
- *
- * @param base PMC peripheral base address.
- */
-static inline void PMC_ClearPeriphIOIsolationFlag(PMC_Type *base)
-{
-    base->REGSC |= PMC_REGSC_ACKISO_MASK;
-}
-#endif /* FSL_FEATURE_PMC_HAS_ACKISO */
-
-#if (defined(FSL_FEATURE_PMC_HAS_REGONS) && FSL_FEATURE_PMC_HAS_REGONS)
-/*!
- * @brief Gets the Regulator regulation status.
- *
- * This function  returns the regulator to a run regulation status. It provides
- * the current status of the internal voltage regulator.
- *
- * @param base PMC peripheral base address.
- * @param base  Base address for current PMC instance.
- * @return Regulation status
- *               0 - Regulator is in a stop regulation or in transition to/from the regulation.
- *               1 - Regulator is in a run regulation.
- *
- */
-static inline bool PMC_IsRegulatorInRunRegulation(PMC_Type *base)
-{
-    return (bool)(base->REGSC & PMC_REGSC_REGONS_MASK);
-}
-#endif /* FSL_FEATURE_PMC_HAS_REGONS */
-
-/*@}*/
-
-#if defined(__cplusplus)
-}
-#endif /* __cplusplus*/
-
-/*! @}*/
-
-#endif /* _FSL_PMC_H_*/
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_port.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,382 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SDRVL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_PORT_H_
-#define _FSL_PORT_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup port_driver
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! Version 2.0.1. */
-#define FSL_PORT_DRIVER_VERSION (MAKE_VERSION(2, 0, 1))
-/*@}*/
-
-/*! @brief Internal resistor pull feature selection */
-enum _port_pull
-{
-    kPORT_PullDisable = 0U, /*!< internal pull-up/down resistor is disabled. */
-    kPORT_PullDown = 2U,    /*!< internal pull-down resistor is enabled. */
-    kPORT_PullUp = 3U,      /*!< internal pull-up resistor is enabled. */
-};
-
-/*! @brief Slew rate selection */
-enum _port_slew_rate
-{
-    kPORT_FastSlewRate = 0U, /*!< fast slew rate is configured. */
-    kPORT_SlowSlewRate = 1U, /*!< slow slew rate is configured. */
-};
-
-#if defined(FSL_FEATURE_PORT_HAS_OPEN_DRAIN) && FSL_FEATURE_PORT_HAS_OPEN_DRAIN
-/*! @brief Internal resistor pull feature enable/disable */
-enum _port_open_drain_enable
-{
-    kPORT_OpenDrainDisable = 0U, /*!< internal pull-down resistor is disabled. */
-    kPORT_OpenDrainEnable = 1U,  /*!< internal pull-up resistor is enabled. */
-};
-#endif /* FSL_FEATURE_PORT_HAS_OPEN_DRAIN */
-
-/*! @brief Passive filter feature enable/disable */
-enum _port_passive_filter_enable
-{
-    kPORT_PassiveFilterDisable = 0U, /*!< fast slew rate is configured. */
-    kPORT_PassiveFilterEnable = 1U,  /*!< slow slew rate is configured. */
-};
-
-/*! @brief Configures the drive strength. */
-enum _port_drive_strength
-{
-    kPORT_LowDriveStrength = 0U,  /*!< low drive strength is configured. */
-    kPORT_HighDriveStrength = 1U, /*!< high drive strength is configured. */
-};
-
-#if defined(FSL_FEATURE_PORT_HAS_PIN_CONTROL_LOCK) && FSL_FEATURE_PORT_HAS_PIN_CONTROL_LOCK
-/*! @brief Unlock/lock the pin control register field[15:0] */
-enum _port_lock_register
-{
-    kPORT_UnlockRegister = 0U, /*!< Pin Control Register fields [15:0] are not locked. */
-    kPORT_LockRegister = 1U,   /*!< Pin Control Register fields [15:0] are locked. */
-};
-#endif /* FSL_FEATURE_PORT_HAS_PIN_CONTROL_LOCK */
-
-/*! @brief Pin mux selection */
-typedef enum _port_mux
-{
-    kPORT_PinDisabledOrAnalog = 0U, /*!< corresponding pin is disabled, but is used as an analog pin. */
-    kPORT_MuxAsGpio = 1U,           /*!< corresponding pin is configured as GPIO. */
-    kPORT_MuxAlt2 = 2U,             /*!< chip-specific */
-    kPORT_MuxAlt3 = 3U,             /*!< chip-specific */
-    kPORT_MuxAlt4 = 4U,             /*!< chip-specific */
-    kPORT_MuxAlt5 = 5U,             /*!< chip-specific */
-    kPORT_MuxAlt6 = 6U,             /*!< chip-specific */
-    kPORT_MuxAlt7 = 7U,             /*!< chip-specific */
-} port_mux_t;
-
-/*! @brief Configures the interrupt generation condition. */
-typedef enum _port_interrupt
-{
-    kPORT_InterruptOrDMADisabled = 0x0U, /*!< Interrupt/DMA request is disabled. */
-#if defined(FSL_FEATURE_PORT_HAS_DMA_REQUEST) && FSL_FEATURE_PORT_HAS_DMA_REQUEST
-    kPORT_DMARisingEdge = 0x1U,  /*!< DMA request on rising edge. */
-    kPORT_DMAFallingEdge = 0x2U, /*!< DMA request on falling edge. */
-    kPORT_DMAEitherEdge = 0x3U,  /*!< DMA request on either edge. */
-#endif
-#if defined(FSL_FEATURE_PORT_HAS_IRQC_FLAG) && FSL_FEATURE_PORT_HAS_IRQC_FLAG
-    kPORT_FlagRisingEdge = 0x05U,  /*!< Flag sets on rising edge. */
-    kPORT_FlagFallingEdge = 0x06U, /*!< Flag sets on falling edge. */
-    kPORT_FlagEitherEdge = 0x07U,  /*!< Flag sets on either edge. */
-#endif
-    kPORT_InterruptLogicZero = 0x8U,   /*!< Interrupt when logic zero. */
-    kPORT_InterruptRisingEdge = 0x9U,  /*!< Interrupt on rising edge. */
-    kPORT_InterruptFallingEdge = 0xAU, /*!< Interrupt on falling edge. */
-    kPORT_InterruptEitherEdge = 0xBU,  /*!< Interrupt on either edge. */
-    kPORT_InterruptLogicOne = 0xCU,    /*!< Interrupt when logic one. */
-#if defined(FSL_FEATURE_PORT_HAS_IRQC_TRIGGER) && FSL_FEATURE_PORT_HAS_IRQC_TRIGGER
-    kPORT_ActiveHighTriggerOutputEnable = 0xDU, /*!< Enable active high trigger output. */
-    kPORT_ActiveLowTriggerOutputEnable = 0xEU,  /*!< Enable active low trigger output. */
-#endif
-} port_interrupt_t;
-
-#if defined(FSL_FEATURE_PORT_HAS_DIGITAL_FILTER) && FSL_FEATURE_PORT_HAS_DIGITAL_FILTER
-/*! @brief Digital filter clock source selection */
-typedef enum _port_digital_filter_clock_source
-{
-    kPORT_BusClock = 0U, /*!< Digital filters are clocked by the bus clock. */
-    kPORT_LpoClock = 1U, /*!< Digital filters are clocked by the 1 kHz LPO clock. */
-} port_digital_filter_clock_source_t;
-
-/*! @brief PORT digital filter feature configuration definition */
-typedef struct _port_digital_filter_config
-{
-    uint32_t digitalFilterWidth;                    /*!< Set digital filter width */
-    port_digital_filter_clock_source_t clockSource; /*!< Set digital filter clockSource */
-} port_digital_filter_config_t;
-#endif /* FSL_FEATURE_PORT_HAS_DIGITAL_FILTER */
-
-/*! @brief PORT pin config structure */
-typedef struct _port_pin_config
-{
-    uint16_t pullSelect : 2; /*!< no-pull/pull-down/pull-up select */
-    uint16_t slewRate : 1;   /*!< fast/slow slew rate Configure */
-    uint16_t : 1;
-    uint16_t passiveFilterEnable : 1; /*!< passive filter enable/disable */
-#if defined(FSL_FEATURE_PORT_HAS_OPEN_DRAIN) && FSL_FEATURE_PORT_HAS_OPEN_DRAIN
-    uint16_t openDrainEnable : 1; /*!< open drain enable/disable */
-#else
-    uint16_t : 1;
-#endif                          /* FSL_FEATURE_PORT_HAS_OPEN_DRAIN */
-    uint16_t driveStrength : 1; /*!< fast/slow drive strength configure */
-    uint16_t : 1;
-    uint16_t mux : 3; /*!< pin mux Configure */
-    uint16_t : 4;
-#if defined(FSL_FEATURE_PORT_HAS_PIN_CONTROL_LOCK) && FSL_FEATURE_PORT_HAS_PIN_CONTROL_LOCK
-    uint16_t lockRegister : 1; /*!< lock/unlock the pcr field[15:0] */
-#else
-    uint16_t : 1;
-#endif /* FSL_FEATURE_PORT_HAS_PIN_CONTROL_LOCK */
-} port_pin_config_t;
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*! @name Configuration */
-/*@{*/
-
-/*!
- * @brief Sets the port PCR register.
- *
- * This is an example to define an input pin or output pin PCR configuration:
- * @code
- * // Define a digital input pin PCR configuration
- * port_pin_config_t config = {
- *      kPORT_PullUp,
- *      kPORT_FastSlewRate,
- *      kPORT_PassiveFilterDisable,
- *      kPORT_OpenDrainDisable,
- *      kPORT_LowDriveStrength,
- *      kPORT_MuxAsGpio,
- *      kPORT_UnLockRegister,
- * };
- * @endcode
- *
- * @param base   PORT peripheral base pointer.
- * @param pin    PORT pin number.
- * @param config PORT PCR register configure structure.
- */
-static inline void PORT_SetPinConfig(PORT_Type *base, uint32_t pin, const port_pin_config_t *config)
-{
-    assert(config);
-    uint32_t addr = (uint32_t)&base->PCR[pin];
-    *(volatile uint16_t *)(addr) = *((const uint16_t *)config);
-}
-
-/*!
- * @brief Sets the port PCR register for multiple pins.
- *
- * This is an example to define input pins or output pins PCR configuration:
- * @code
- * // Define a digital input pin PCR configuration
- * port_pin_config_t config = {
- *      kPORT_PullUp ,
- *      kPORT_PullEnable,
- *      kPORT_FastSlewRate,
- *      kPORT_PassiveFilterDisable,
- *      kPORT_OpenDrainDisable,
- *      kPORT_LowDriveStrength,
- *      kPORT_MuxAsGpio,
- *      kPORT_UnlockRegister,
- * };
- * @endcode
- *
- * @param base   PORT peripheral base pointer.
- * @param mask   PORT pins' numbers macro.
- * @param config PORT PCR register configure structure.
- */
-static inline void PORT_SetMultiplePinsConfig(PORT_Type *base, uint32_t mask, const port_pin_config_t *config)
-{
-    assert(config);
-
-    uint16_t pcrl = *((const uint16_t *)config);
-
-    if (mask & 0xffffU)
-    {
-        base->GPCLR = ((mask & 0xffffU) << 16) | pcrl;
-    }
-    if (mask >> 16)
-    {
-        base->GPCHR = (mask & 0xffff0000U) | pcrl;
-    }
-}
-
-/*!
- * @brief Configures the pin muxing.
- *
- * @param base  PORT peripheral base pointer.
- * @param pin   PORT pin number.
- * @param mux   pin muxing slot selection.
- *        - #kPORT_PinDisabledOrAnalog: Pin disabled or work in analog function.
- *        - #kPORT_MuxAsGpio          : Set as GPIO.
- *        - #kPORT_MuxAlt2            : chip-specific.
- *        - #kPORT_MuxAlt3            : chip-specific.
- *        - #kPORT_MuxAlt4            : chip-specific.
- *        - #kPORT_MuxAlt5            : chip-specific.
- *        - #kPORT_MuxAlt6            : chip-specific.
- *        - #kPORT_MuxAlt7            : chip-specific.
- * @Note : This function is NOT recommended to use together with the PORT_SetPinsConfig, because
- *         the PORT_SetPinsConfig need to configure the pin mux anyway (Otherwise the pin mux will
- *         be reset to zero : kPORT_PinDisabledOrAnalog).
- *         This function is recommended to use in the case you just need to reset the pin mux
- *
- */
-static inline void PORT_SetPinMux(PORT_Type *base, uint32_t pin, port_mux_t mux)
-{
-    base->PCR[pin] = (base->PCR[pin] & ~PORT_PCR_MUX_MASK) | PORT_PCR_MUX(mux);
-}
-
-#if defined(FSL_FEATURE_PORT_HAS_DIGITAL_FILTER) && FSL_FEATURE_PORT_HAS_DIGITAL_FILTER
-
-/*!
- * @brief Enables the digital filter in one port, each bit of the 32-bit register represents one pin.
- *
- * @param base  PORT peripheral base pointer.
- * @param mask  PORT pins' numbers macro.
- */
-static inline void PORT_EnablePinsDigitalFilter(PORT_Type *base, uint32_t mask, bool enable)
-{
-    if (enable == true)
-    {
-        base->DFER |= mask;
-    }
-    else
-    {
-        base->DFER &= ~mask;
-    }
-}
-
-/*!
- * @brief Sets the digital filter in one port, each bit of the 32-bit register represents one pin.
- *
- * @param base   PORT peripheral base pointer.
- * @param config PORT digital filter configuration structure.
- */
-static inline void PORT_SetDigitalFilterConfig(PORT_Type *base, const port_digital_filter_config_t *config)
-{
-    assert(config);
-
-    base->DFCR = PORT_DFCR_CS(config->clockSource);
-    base->DFWR = PORT_DFWR_FILT(config->digitalFilterWidth);
-}
-
-#endif /* FSL_FEATURE_PORT_HAS_DIGITAL_FILTER */
-
-/*@}*/
-
-/*! @name Interrupt */
-/*@{*/
-
-/*!
- * @brief Configures the port pin interrupt/DMA request.
- *
- * @param base    PORT peripheral base pointer.
- * @param pin     PORT pin number.
- * @param config  PORT pin interrupt configuration.
- *        - #kPORT_InterruptOrDMADisabled: Interrupt/DMA request disabled.
- *        - #kPORT_DMARisingEdge : DMA request on rising edge(if the DMA requests exit).
- *        - #kPORT_DMAFallingEdge: DMA request on falling edge(if the DMA requests exit).
- *        - #kPORT_DMAEitherEdge : DMA request on either edge(if the DMA requests exit).
- *        - #kPORT_FlagRisingEdge : Flag sets on rising edge(if the Flag states exit).
- *        - #kPORT_FlagFallingEdge : Flag sets on falling edge(if the Flag states exit).
- *        - #kPORT_FlagEitherEdge : Flag sets on either edge(if the Flag states exit).
- *        - #kPORT_InterruptLogicZero  : Interrupt when logic zero.
- *        - #kPORT_InterruptRisingEdge : Interrupt on rising edge.
- *        - #kPORT_InterruptFallingEdge: Interrupt on falling edge.
- *        - #kPORT_InterruptEitherEdge : Interrupt on either edge.
- *        - #kPORT_InterruptLogicOne   : Interrupt when logic one.
- *        - #kPORT_ActiveHighTriggerOutputEnable : Enable active high trigger output(if the trigger states exit).
- *        - #kPORT_ActiveLowTriggerOutputEnable  : Enable active low trigger output(if the trigger states exit).
- */
-static inline void PORT_SetPinInterruptConfig(PORT_Type *base, uint32_t pin, port_interrupt_t config)
-{
-    base->PCR[pin] = (base->PCR[pin] & ~PORT_PCR_IRQC_MASK) | PORT_PCR_IRQC(config);
-}
-
-/*!
- * @brief Reads the whole port status flag.
- *
- * If a pin is configured to generate the DMA request,  the corresponding flag
- * is cleared automatically at the completion of the requested DMA transfer.
- * Otherwise, the flag remains set until a logic one is written to that flag.
- * If configured for a level sensitive interrupt that remains asserted, the flag
- * is set again immediately.
- *
- * @param  base PORT peripheral base pointer.
- * @return Current port interrupt status flags, for example, 0x00010001 means the
- *         pin 0 and 17 have the interrupt.
- */
-static inline uint32_t PORT_GetPinsInterruptFlags(PORT_Type *base)
-{
-    return base->ISFR;
-}
-
-/*!
- * @brief Clears the multiple pins' interrupt status flag.
- *
- * @param base PORT peripheral base pointer.
- * @param mask PORT pins' numbers macro.
- */
-static inline void PORT_ClearPinsInterruptFlags(PORT_Type *base, uint32_t mask)
-{
-    base->ISFR = mask;
-}
-
-/*@}*/
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*! @}*/
-
-#endif /* _FSL_PORT_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_rcm.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_rcm.h"
-
-void RCM_ConfigureResetPinFilter(RCM_Type *base, const rcm_reset_pin_filter_config_t *config)
-{
-#if (defined(FSL_FEATURE_RCM_REG_WIDTH) && (FSL_FEATURE_RCM_REG_WIDTH == 32))
-    uint32_t reg;
-
-    reg = (((uint32_t)config->enableFilterInStop << RCM_RPC_RSTFLTSS_SHIFT) | (uint32_t)config->filterInRunWait);
-    if (config->filterInRunWait == kRCM_FilterBusClock)
-    {
-        reg |= ((uint32_t)config->busClockFilterCount << RCM_RPC_RSTFLTSEL_SHIFT);
-    }
-    base->RPC = reg;
-#else
-    base->RPFC = ((uint8_t)(config->enableFilterInStop << RCM_RPFC_RSTFLTSS_SHIFT) | (uint8_t)config->filterInRunWait);
-    if (config->filterInRunWait == kRCM_FilterBusClock)
-    {
-        base->RPFW = config->busClockFilterCount;
-    }
-#endif /* FSL_FEATURE_RCM_REG_WIDTH */
-}
-
-#if (defined(FSL_FEATURE_RCM_HAS_BOOTROM) && FSL_FEATURE_RCM_HAS_BOOTROM)
-void RCM_SetForceBootRomSource(RCM_Type *base, rcm_boot_rom_config_t config)
-{
-    uint32_t reg;
-
-    reg = base->FM;
-    reg &= ~RCM_FM_FORCEROM_MASK;
-    reg |= ((uint32_t)config << RCM_FM_FORCEROM_SHIFT);
-    base->FM = reg;
-}
-#endif /* #if FSL_FEATURE_RCM_HAS_BOOTROM */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_rcm.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,432 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_RCM_H_
-#define _FSL_RCM_H_
-
-#include "fsl_common.h"
-
-/*! @addtogroup rcm */
-/*! @{*/
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief RCM driver version 2.0.0. */
-#define FSL_RCM_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
-/*@}*/
-
-/*!
- * @brief System Reset Source Name definitions
- */
-typedef enum _rcm_reset_source
-{
-#if (defined(FSL_FEATURE_RCM_REG_WIDTH) && (FSL_FEATURE_RCM_REG_WIDTH == 32))
-/* RCM register bit width is 32. */
-#if (defined(FSL_FEATURE_RCM_HAS_WAKEUP) && FSL_FEATURE_RCM_HAS_WAKEUP)
-    kRCM_SourceWakeup = RCM_SRS_WAKEUP_MASK, /*!< Low-leakage wakeup reset */
-#endif
-    kRCM_SourceLvd = RCM_SRS_LVD_MASK, /*!< low voltage detect reset */
-#if (defined(FSL_FEATURE_RCM_HAS_LOC) && FSL_FEATURE_RCM_HAS_LOC)
-    kRCM_SourceLoc = RCM_SRS_LOC_MASK, /*!< Loss of clock reset */
-#endif                                 /* FSL_FEATURE_RCM_HAS_LOC */
-#if (defined(FSL_FEATURE_RCM_HAS_LOL) && FSL_FEATURE_RCM_HAS_LOL)
-    kRCM_SourceLol = RCM_SRS_LOL_MASK,   /*!< Loss of lock reset */
-#endif                                   /* FSL_FEATURE_RCM_HAS_LOL */
-    kRCM_SourceWdog = RCM_SRS_WDOG_MASK, /*!< Watchdog reset */
-    kRCM_SourcePin = RCM_SRS_PIN_MASK,   /*!< External pin reset */
-    kRCM_SourcePor = RCM_SRS_POR_MASK,   /*!< Power on reset */
-#if (defined(FSL_FEATURE_RCM_HAS_JTAG) && FSL_FEATURE_RCM_HAS_JTAG)
-    kRCM_SourceJtag = RCM_SRS_JTAG_MASK,     /*!< JTAG generated reset */
-#endif                                       /* FSL_FEATURE_RCM_HAS_JTAG */
-    kRCM_SourceLockup = RCM_SRS_LOCKUP_MASK, /*!< Core lock up reset */
-    kRCM_SourceSw = RCM_SRS_SW_MASK,         /*!< Software reset */
-#if (defined(FSL_FEATURE_RCM_HAS_MDM_AP) && FSL_FEATURE_RCM_HAS_MDM_AP)
-    kRCM_SourceMdmap = RCM_SRS_MDM_AP_MASK, /*!< MDM-AP system reset */
-#endif                                      /* FSL_FEATURE_RCM_HAS_MDM_AP */
-#if (defined(FSL_FEATURE_RCM_HAS_EZPORT) && FSL_FEATURE_RCM_HAS_EZPORT)
-    kRCM_SourceEzpt = RCM_SRS_EZPT_MASK,       /*!< EzPort reset */
-#endif                                         /* FSL_FEATURE_RCM_HAS_EZPORT */
-    kRCM_SourceSackerr = RCM_SRS_SACKERR_MASK, /*!< Parameter could get all reset flags */
-
-#else /* (FSL_FEATURE_RCM_REG_WIDTH == 32) */
-/* RCM register bit width is 8. */
-#if (defined(FSL_FEATURE_RCM_HAS_WAKEUP) && FSL_FEATURE_RCM_HAS_WAKEUP)
-    kRCM_SourceWakeup = RCM_SRS0_WAKEUP_MASK, /*!< Low-leakage wakeup reset */
-#endif
-    kRCM_SourceLvd = RCM_SRS0_LVD_MASK, /*!< low voltage detect reset */
-#if (defined(FSL_FEATURE_RCM_HAS_LOC) && FSL_FEATURE_RCM_HAS_LOC)
-    kRCM_SourceLoc = RCM_SRS0_LOC_MASK,   /*!< Loss of clock reset */
-#endif /* FSL_FEATURE_RCM_HAS_LOC */
-#if (defined(FSL_FEATURE_RCM_HAS_LOL) && FSL_FEATURE_RCM_HAS_LOL)
-    kRCM_SourceLol = RCM_SRS0_LOL_MASK,   /*!< Loss of lock reset */
-#endif /* FSL_FEATURE_RCM_HAS_LOL */
-    kRCM_SourceWdog = RCM_SRS0_WDOG_MASK, /*!< Watchdog reset */
-    kRCM_SourcePin = RCM_SRS0_PIN_MASK,   /*!< External pin reset */
-    kRCM_SourcePor = RCM_SRS0_POR_MASK, /*!< Power on reset */
-#if (defined(FSL_FEATURE_RCM_HAS_JTAG) && FSL_FEATURE_RCM_HAS_JTAG)
-    kRCM_SourceJtag = RCM_SRS1_JTAG_MASK << 8U,     /*!< JTAG generated reset */
-#endif /* FSL_FEATURE_RCM_HAS_JTAG */
-    kRCM_SourceLockup = RCM_SRS1_LOCKUP_MASK << 8U, /*!< Core lock up reset */
-    kRCM_SourceSw = RCM_SRS1_SW_MASK, /*!< Software reset */
-#if (defined(FSL_FEATURE_RCM_HAS_MDM_AP) && FSL_FEATURE_RCM_HAS_MDM_AP)
-    kRCM_SourceMdmap = RCM_SRS1_MDM_AP_MASK << 8U,    /*!< MDM-AP system reset */
-#endif /* FSL_FEATURE_RCM_HAS_MDM_AP */
-#if (defined(FSL_FEATURE_RCM_HAS_EZPORT) && FSL_FEATURE_RCM_HAS_EZPORT)
-    kRCM_SourceEzpt = RCM_SRS1_EZPT_MASK << 8U,       /*!< EzPort reset */
-#endif /* FSL_FEATURE_RCM_HAS_EZPORT */
-    kRCM_SourceSackerr = RCM_SRS1_SACKERR_MASK << 8U, /*!< Parameter could get all reset flags */
-#endif /* (FSL_FEATURE_RCM_REG_WIDTH == 32) */
-    kRCM_SourceAll = 0xffffffffU,
-} rcm_reset_source_t;
-
-/*!
- * @brief Reset pin filter select in Run and Wait modes
- */
-typedef enum _rcm_run_wait_filter_mode
-{
-    kRCM_FilterDisable = 0U,  /*!< All filtering disabled */
-    kRCM_FilterBusClock = 1U, /*!< Bus clock filter enabled */
-    kRCM_FilterLpoClock = 2U  /*!< LPO clock filter enabled */
-} rcm_run_wait_filter_mode_t;
-
-#if (defined(FSL_FEATURE_RCM_HAS_BOOTROM) && FSL_FEATURE_RCM_HAS_BOOTROM)
-/*!
- * @brief Boot from ROM configuration.
- */
-typedef enum _rcm_boot_rom_config
-{
-    kRCM_BootFlash = 0U,   /*!< Boot from flash */
-    kRCM_BootRomCfg0 = 1U, /*!< Boot from boot ROM due to BOOTCFG0 */
-    kRCM_BootRomFopt = 2U, /*!< Boot from boot ROM due to FOPT[7] */
-    kRCM_BootRomBoth = 3U  /*!< Boot from boot ROM due to both BOOTCFG0 and FOPT[7] */
-} rcm_boot_rom_config_t;
-#endif /* FSL_FEATURE_RCM_HAS_BOOTROM */
-
-#if (defined(FSL_FEATURE_RCM_HAS_SRIE) && FSL_FEATURE_RCM_HAS_SRIE)
-/*!
- * @brief Max delay time from interrupt asserts to system reset.
- */
-typedef enum _rcm_reset_delay
-{
-    kRCM_ResetDelay8Lpo = 0U,   /*!< Delay 8 LPO cycles.   */
-    kRCM_ResetDelay32Lpo = 1U,  /*!< Delay 32 LPO cycles.  */
-    kRCM_ResetDelay128Lpo = 2U, /*!< Delay 128 LPO cycles. */
-    kRCM_ResetDelay512Lpo = 3U  /*!< Delay 512 LPO cycles. */
-} rcm_reset_delay_t;
-
-/*!
- * @brief System reset interrupt enable bit definitions.
- */
-typedef enum _rcm_interrupt_enable
-{
-    kRCM_IntNone = 0U,                              /*!< No interrupt enabled.           */
-    kRCM_IntLossOfClk = RCM_SRIE_LOC_MASK,          /*!< Loss of clock interrupt.        */
-    kRCM_IntLossOfLock = RCM_SRIE_LOL_MASK,         /*!< Loss of lock interrupt.         */
-    kRCM_IntWatchDog = RCM_SRIE_WDOG_MASK,          /*!< Watch dog interrupt.            */
-    kRCM_IntExternalPin = RCM_SRIE_PIN_MASK,        /*!< External pin interrupt.         */
-    kRCM_IntGlobal = RCM_SRIE_GIE_MASK,             /*!< Global interrupts.              */
-    kRCM_IntCoreLockup = RCM_SRIE_LOCKUP_MASK,      /*!< Core lock up interrupt           */
-    kRCM_IntSoftware = RCM_SRIE_SW_MASK,            /*!< software interrupt              */
-    kRCM_IntStopModeAckErr = RCM_SRIE_SACKERR_MASK, /*!< Stop mode ACK error interrupt.  */
-#if (defined(FSL_FEATURE_RCM_HAS_CORE1) && FSL_FEATURE_RCM_HAS_CORE1)
-    kRCM_IntCore1 = RCM_SRIE_CORE1_MASK, /*!< Core 1 interrupt.               */
-#endif
-    kRCM_IntAll = RCM_SRIE_LOC_MASK /*!< Enable all interrupts.          */
-                  |
-                  RCM_SRIE_LOL_MASK | RCM_SRIE_WDOG_MASK | RCM_SRIE_PIN_MASK | RCM_SRIE_GIE_MASK |
-                  RCM_SRIE_LOCKUP_MASK | RCM_SRIE_SW_MASK | RCM_SRIE_SACKERR_MASK
-#if (defined(FSL_FEATURE_RCM_HAS_CORE1) && FSL_FEATURE_RCM_HAS_CORE1)
-                  |
-                  RCM_SRIE_CORE1_MASK
-#endif
-} rcm_interrupt_enable_t;
-#endif /* FSL_FEATURE_RCM_HAS_SRIE */
-
-#if (defined(FSL_FEATURE_RCM_HAS_VERID) && FSL_FEATURE_RCM_HAS_VERID)
-/*!
- * @brief IP version ID definition.
- */
-typedef struct _rcm_version_id
-{
-    uint16_t feature; /*!< Feature Specification Number. */
-    uint8_t minor;    /*!< Minor version number.         */
-    uint8_t major;    /*!< Major version number.         */
-} rcm_version_id_t;
-#endif
-
-/*!
- * @brief Reset pin filter configuration
- */
-typedef struct _rcm_reset_pin_filter_config
-{
-    bool enableFilterInStop;                    /*!< Reset pin filter select in stop mode. */
-    rcm_run_wait_filter_mode_t filterInRunWait; /*!< Reset pin filter in run/wait mode. */
-    uint8_t busClockFilterCount;                /*!< Reset pin bus clock filter width.  */
-} rcm_reset_pin_filter_config_t;
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-#if defined(__cplusplus)
-extern "C" {
-#endif /* __cplusplus*/
-
-/*! @name Reset Control Module APIs*/
-/*@{*/
-
-#if (defined(FSL_FEATURE_RCM_HAS_VERID) && FSL_FEATURE_RCM_HAS_VERID)
-/*!
- * @brief Gets the RCM version ID.
- *
- * This function gets the RCM version ID including the major version number,
- * the minor version number, and the feature specification number.
- *
- * @param base RCM peripheral base address.
- * @param versionId     Pointer to version ID structure.
- */
-static inline void RCM_GetVersionId(RCM_Type *base, rcm_version_id_t *versionId)
-{
-    *((uint32_t *)versionId) = base->VERID;
-}
-#endif
-
-#if (defined(FSL_FEATURE_RCM_HAS_PARAM) && FSL_FEATURE_RCM_HAS_PARAM)
-/*!
- * @brief Gets the reset source implemented status.
- *
- * This function gets the RCM parameter that indicates whether the corresponding reset source is implemented.
- * Use source masks defined in the rcm_reset_source_t to get the desired source status.
- *
- * Example:
-   @code
-   uint32_t status;
-
-   // To test whether the MCU is reset using Watchdog.
-   status = RCM_GetResetSourceImplementedStatus(RCM) & (kRCM_SourceWdog | kRCM_SourcePin);
-   @endcode
- *
- * @param base RCM peripheral base address.
- * @return All reset source implemented status bit map.
- */
-static inline uint32_t RCM_GetResetSourceImplementedStatus(RCM_Type *base)
-{
-    return base->PARAM;
-}
-#endif /* FSL_FEATURE_RCM_HAS_PARAM */
-
-/*!
- * @brief Gets the reset source status which caused a previous reset.
- *
- * This function gets the current reset source status. Use source masks
- * defined in the rcm_reset_source_t to get the desired source status.
- *
- * Example:
-   @code
-   uint32_t resetStatus;
-
-   // To get all reset source statuses.
-   resetStatus = RCM_GetPreviousResetSources(RCM) & kRCM_SourceAll;
-
-   // To test whether the MCU is reset using Watchdog.
-   resetStatus = RCM_GetPreviousResetSources(RCM) & kRCM_SourceWdog;
-
-   // To test multiple reset sources.
-   resetStatus = RCM_GetPreviousResetSources(RCM) & (kRCM_SourceWdog | kRCM_SourcePin);
-   @endcode
- *
- * @param base RCM peripheral base address.
- * @return All reset source status bit map.
- */
-static inline uint32_t RCM_GetPreviousResetSources(RCM_Type *base)
-{
-#if (defined(FSL_FEATURE_RCM_REG_WIDTH) && (FSL_FEATURE_RCM_REG_WIDTH == 32))
-    return base->SRS;
-#else
-    return (uint32_t)((uint32_t)base->SRS0 | ((uint32_t)base->SRS1 << 8U));
-#endif /* (FSL_FEATURE_RCM_REG_WIDTH == 32) */
-}
-
-#if (defined(FSL_FEATURE_RCM_HAS_SSRS) && FSL_FEATURE_RCM_HAS_SSRS)
-/*!
- * @brief Gets the sticky reset source status.
- *
- * This function gets the current reset source status that has not been cleared
- * by software for some specific source.
- *
- * Example:
-   @code
-   uint32_t resetStatus;
-
-   // To get all reset source statuses.
-   resetStatus = RCM_GetStickyResetSources(RCM) & kRCM_SourceAll;
-
-   // To test whether the MCU is reset using Watchdog.
-   resetStatus = RCM_GetStickyResetSources(RCM) & kRCM_SourceWdog;
-
-   // To test multiple reset sources.
-   resetStatus = RCM_GetStickyResetSources(RCM) & (kRCM_SourceWdog | kRCM_SourcePin);
-   @endcode
- *
- * @param base RCM peripheral base address.
- * @return All reset source status bit map.
- */
-static inline uint32_t RCM_GetStickyResetSources(RCM_Type *base)
-{
-#if (defined(FSL_FEATURE_RCM_REG_WIDTH) && (FSL_FEATURE_RCM_REG_WIDTH == 32))
-    return base->SSRS;
-#else
-    return (base->SSRS0 | ((uint32_t)base->SSRS1 << 8U));
-#endif /* (FSL_FEATURE_RCM_REG_WIDTH == 32) */
-}
-
-/*!
- * @brief Clears the sticky reset source status.
- *
- * This function clears the sticky system reset flags indicated by source masks.
- *
- * Example:
-   @code
-   // Clears multiple reset sources.
-   RCM_ClearStickyResetSources(kRCM_SourceWdog | kRCM_SourcePin);
-   @endcode
- *
- * @param base RCM peripheral base address.
- * @param sourceMasks reset source status bit map
- */
-static inline void RCM_ClearStickyResetSources(RCM_Type *base, uint32_t sourceMasks)
-{
-#if (defined(FSL_FEATURE_RCM_REG_WIDTH) && (FSL_FEATURE_RCM_REG_WIDTH == 32))
-    base->SSRS = sourceMasks;
-#else
-    base->SSRS0 = (sourceMasks & 0xffU);
-    base->SSRS1 = ((sourceMasks >> 8U) & 0xffU);
-#endif /* (FSL_FEATURE_RCM_REG_WIDTH == 32) */
-}
-#endif /* FSL_FEATURE_RCM_HAS_SSRS */
-
-/*!
- * @brief Configures the reset pin filter.
- *
- * This function sets the reset pin filter including the filter source, filter
- * width, and so on.
- *
- * @param base RCM peripheral base address.
- * @param config Pointer to the configuration structure.
- */
-void RCM_ConfigureResetPinFilter(RCM_Type *base, const rcm_reset_pin_filter_config_t *config);
-
-#if (defined(FSL_FEATURE_RCM_HAS_EZPMS) && FSL_FEATURE_RCM_HAS_EZPMS)
-/*!
- * @brief Gets the EZP_MS_B pin assert status.
- *
- * This function gets the easy port mode status (EZP_MS_B) pin assert status.
- *
- * @param base RCM peripheral base address.
- * @return status  true - asserted, false - reasserted
- */
-static inline bool RCM_GetEasyPortModePinStatus(RCM_Type *base)
-{
-    return (bool)(base->MR & RCM_MR_EZP_MS_MASK);
-}
-#endif /* FSL_FEATURE_RCM_HAS_EZPMS */
-
-#if (defined(FSL_FEATURE_RCM_HAS_BOOTROM) && FSL_FEATURE_RCM_HAS_BOOTROM)
-/*!
- * @brief Gets the ROM boot source.
- *
- * This function gets the ROM boot source during the last chip reset.
- *
- * @param base RCM peripheral base address.
- * @return The ROM boot source.
- */
-static inline rcm_boot_rom_config_t RCM_GetBootRomSource(RCM_Type *base)
-{
-    return (rcm_boot_rom_config_t)((base->MR & RCM_MR_BOOTROM_MASK) >> RCM_MR_BOOTROM_SHIFT);
-}
-
-/*!
- * @brief Clears the ROM boot source flag.
- *
- * This function clears the ROM boot source flag.
- *
- * @param base     Register base address of RCM
- */
-static inline void RCM_ClearBootRomSource(RCM_Type *base)
-{
-    base->MR |= RCM_MR_BOOTROM_MASK;
-}
-
-/*!
- * @brief Forces the boot from ROM.
- *
- * This function forces booting from ROM during all subsequent system resets.
- *
- * @param base RCM peripheral base address.
- * @param config   Boot configuration.
- */
-void RCM_SetForceBootRomSource(RCM_Type *base, rcm_boot_rom_config_t config);
-#endif /* FSL_FEATURE_RCM_HAS_BOOTROM */
-
-#if (defined(FSL_FEATURE_RCM_HAS_SRIE) && FSL_FEATURE_RCM_HAS_SRIE)
-/*!
- * @brief Sets the system reset interrupt configuration.
- *
- * For graceful shutdown, the RCM supports delaying the assertion of the system
- * reset for a period of time when the reset interrupt is generated. This function
- * can be used to enable the interrupt and the delay period. The interrupts
- * are passed in as bit mask. See rcm_int_t for details. For example, to
- * delay a reset for 512 LPO cycles after the WDOG timeout or loss-of-clock occurs,
- * configure as follows:
- * RCM_SetSystemResetInterruptConfig(kRCM_IntWatchDog | kRCM_IntLossOfClk, kRCM_ResetDelay512Lpo);
- *
- * @param base RCM peripheral base address.
- * @param intMask   Bit mask of the system reset interrupts to enable. See
- *                  rcm_interrupt_enable_t for details.
- * @param Delay     Bit mask of the system reset interrupts to enable.
- */
-static inline void RCM_SetSystemResetInterruptConfig(RCM_Type *base, uint32_t intMask, rcm_reset_delay_t delay)
-{
-    base->SRIE = (intMask | delay);
-}
-#endif /* FSL_FEATURE_RCM_HAS_SRIE */
-/*@}*/
-
-#if defined(__cplusplus)
-}
-#endif /* __cplusplus*/
-
-/*! @}*/
-
-#endif /* _FSL_RCM_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_rnga.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,281 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_rnga.h"
-
-#if defined(FSL_FEATURE_SOC_RNG_COUNT) && FSL_FEATURE_SOC_RNG_COUNT
-
-/*******************************************************************************
- * Definitions
- *******************************************************************************/
-
-/*******************************************************************************
- * RNG_CR - RNGA Control Register
- ******************************************************************************/
-/*!
- * @brief RNG_CR - RNGA Control Register (RW)
- *
- * Reset value: 0x00000000U
- *
- * Controls the operation of RNGA.
- */
-/*!
- * @name Constants and macros for entire RNG_CR register
- */
-/*@{*/
-#define RNG_CR_REG(base) ((base)->CR)
-#define RNG_RD_CR(base) (RNG_CR_REG(base))
-#define RNG_WR_CR(base, value) (RNG_CR_REG(base) = (value))
-#define RNG_RMW_CR(base, mask, value) (RNG_WR_CR(base, (RNG_RD_CR(base) & ~(mask)) | (value)))
-/*@}*/
-
-/*!
- * @name Register RNG_CR, field GO[0] (RW)
- *
- * Specifies whether random-data generation and loading (into OR[RANDOUT]) is
- * enabled.This field is sticky. You must reset RNGA to stop RNGA from loading
- * OR[RANDOUT] with data.
- *
- * Values:
- * - 0b0 - Disabled
- * - 0b1 - Enabled
- */
-/*@{*/
-/*! @brief Read current value of the RNG_CR_GO field. */
-#define RNG_RD_CR_GO(base) ((RNG_CR_REG(base) & RNG_CR_GO_MASK) >> RNG_CR_GO_SHIFT)
-
-/*! @brief Set the GO field to a new value. */
-#define RNG_WR_CR_GO(base, value) (RNG_RMW_CR(base, RNG_CR_GO_MASK, RNG_CR_GO(value)))
-/*@}*/
-
-/*!
- * @name Register RNG_CR, field SLP[4] (RW)
- *
- * Specifies whether RNGA is in Sleep or Normal mode. You can also enter Sleep
- * mode by asserting the DOZE signal.
- *
- * Values:
- * - 0b0 - Normal mode
- * - 0b1 - Sleep (low-power) mode
- */
-/*@{*/
-/*! @brief Read current value of the RNG_CR_SLP field. */
-#define RNG_RD_CR_SLP(base) ((RNG_CR_REG(base) & RNG_CR_SLP_MASK) >> RNG_CR_SLP_SHIFT)
-
-/*! @brief Set the SLP field to a new value. */
-#define RNG_WR_CR_SLP(base, value) (RNG_RMW_CR(base, RNG_CR_SLP_MASK, RNG_CR_SLP(value)))
-/*@}*/
-
-/*******************************************************************************
- * RNG_SR - RNGA Status Register
- ******************************************************************************/
-#define RNG_SR_REG(base) ((base)->SR)
-
-/*!
- * @name Register RNG_SR, field OREG_LVL[15:8] (RO)
- *
- * Indicates the number of random-data words that are in OR[RANDOUT], which
- * indicates whether OR[RANDOUT] is valid.If you read OR[RANDOUT] when SR[OREG_LVL]
- * is not 0, then the contents of a random number contained in OR[RANDOUT] are
- * returned, and RNGA writes 0 to both OR[RANDOUT] and SR[OREG_LVL].
- *
- * Values:
- * - 0b00000000 - No words (empty)
- * - 0b00000001 - One word (valid)
- */
-/*@{*/
-/*! @brief Read current value of the RNG_SR_OREG_LVL field. */
-#define RNG_RD_SR_OREG_LVL(base) ((RNG_SR_REG(base) & RNG_SR_OREG_LVL_MASK) >> RNG_SR_OREG_LVL_SHIFT)
-/*@}*/
-
-/*!
- * @name Register RNG_SR, field SLP[4] (RO)
- *
- * Specifies whether RNGA is in Sleep or Normal mode. You can also enter Sleep
- * mode by asserting the DOZE signal.
- *
- * Values:
- * - 0b0 - Normal mode
- * - 0b1 - Sleep (low-power) mode
- */
-/*@{*/
-/*! @brief Read current value of the RNG_SR_SLP field. */
-#define RNG_RD_SR_SLP(base) ((RNG_SR_REG(base) & RNG_SR_SLP_MASK) >> RNG_SR_SLP_SHIFT)
-/*@}*/
-
-/*******************************************************************************
- * RNG_OR - RNGA Output Register
- ******************************************************************************/
-/*!
- * @brief RNG_OR - RNGA Output Register (RO)
- *
- * Reset value: 0x00000000U
- *
- * Stores a random-data word generated by RNGA.
- */
-/*!
- * @name Constants and macros for entire RNG_OR register
- */
-/*@{*/
-#define RNG_OR_REG(base) ((base)->OR)
-#define RNG_RD_OR(base) (RNG_OR_REG(base))
-/*@}*/
-
-/*******************************************************************************
- * RNG_ER - RNGA Entropy Register
- ******************************************************************************/
-/*!
- * @brief RNG_ER - RNGA Entropy Register (WORZ)
- *
- * Reset value: 0x00000000U
- *
- * Specifies an entropy value that RNGA uses in addition to its ring oscillators
- * to seed its pseudorandom algorithm. This is a write-only register; reads
- * return all zeros.
- */
-/*!
- * @name Constants and macros for entire RNG_ER register
- */
-/*@{*/
-#define RNG_ER_REG(base) ((base)->ER)
-#define RNG_RD_ER(base) (RNG_ER_REG(base))
-#define RNG_WR_ER(base, value) (RNG_ER_REG(base) = (value))
-/*@}*/
-
-/*******************************************************************************
- * Prototypes
- *******************************************************************************/
-
-static uint32_t rnga_ReadEntropy(RNG_Type *base);
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-
-void RNGA_Init(RNG_Type *base)
-{
-    /* Enable the clock gate. */
-    CLOCK_EnableClock(kCLOCK_Rnga0);
-    CLOCK_DisableClock(kCLOCK_Rnga0); /* To solve the release version on twrkm43z75m */
-    CLOCK_EnableClock(kCLOCK_Rnga0);
-
-    /* Reset the registers for RNGA module to reset state. */
-    RNG_WR_CR(base, 0);
-    /* Enables the RNGA random data generation and loading.*/
-    RNG_WR_CR_GO(base, 1);
-}
-
-void RNGA_Deinit(RNG_Type *base)
-{
-    /* Disable the clock for RNGA module.*/
-    CLOCK_DisableClock(kCLOCK_Rnga0);
-}
-
-/*!
- * @brief Get a random data from RNGA.
- *
- * @param base RNGA base address
- */
-static uint32_t rnga_ReadEntropy(RNG_Type *base)
-{
-    uint32_t data = 0;
-    if (RNGA_GetMode(base) == kRNGA_ModeNormal) /* Is in normal mode.*/
-    {
-        /* Wait for valid random-data.*/
-        while (RNG_RD_SR_OREG_LVL(base) == 0)
-        {
-        }
-        data = RNG_RD_OR(base);
-    }
-    /* Get random-data word generated by RNGA.*/
-    return data;
-}
-
-status_t RNGA_GetRandomData(RNG_Type *base, void *data, size_t data_size)
-{
-    status_t result = kStatus_Success;
-    uint32_t random_32;
-    uint8_t *random_p;
-    uint32_t random_size;
-    uint8_t *data_p = (uint8_t *)data;
-    uint32_t i;
-
-    /* Check input parameters.*/
-    if (base && data && data_size)
-    {
-        do
-        {
-            /* Read Entropy.*/
-            random_32 = rnga_ReadEntropy(base);
-
-            random_p = (uint8_t *)&random_32;
-
-            if (data_size < sizeof(random_32))
-            {
-                random_size = data_size;
-            }
-            else
-            {
-                random_size = sizeof(random_32);
-            }
-
-            for (i = 0; i < random_size; i++)
-            {
-                *data_p++ = *random_p++;
-            }
-
-            data_size -= random_size;
-        } while (data_size > 0);
-    }
-    else
-    {
-        result = kStatus_InvalidArgument;
-    }
-
-    return result;
-}
-
-void RNGA_SetMode(RNG_Type *base, rnga_mode_t mode)
-{
-    RNG_WR_CR_SLP(base, (uint32_t)mode);
-}
-
-rnga_mode_t RNGA_GetMode(RNG_Type *base)
-{
-    return (rnga_mode_t)RNG_RD_SR_SLP(base);
-}
-
-void RNGA_Seed(RNG_Type *base, uint32_t seed)
-{
-    /* Write to RNGA Entropy Register.*/
-    RNG_WR_ER(base, seed);
-}
-
-#endif /* FSL_FEATURE_SOC_RNG_COUNT */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_rnga.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_RNGA_DRIVER_H_
-#define _FSL_RNGA_DRIVER_H_
-
-#include "fsl_common.h"
-
-#if defined(FSL_FEATURE_SOC_RNG_COUNT) && FSL_FEATURE_SOC_RNG_COUNT
-/*!
- * @addtogroup rnga_driver
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- *******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief RNGA driver version 2.0.1. */
-#define FSL_RNGA_DRIVER_VERSION (MAKE_VERSION(2, 0, 1))
-/*@}*/
-
-/*! @brief RNGA working mode */
-typedef enum _rnga_mode
-{
-    kRNGA_ModeNormal = 0U, /*!< Normal Mode. The ring-oscillator clocks are active; RNGA generates entropy
-                                           (randomness) from the clocks and stores it in shift registers.*/
-    kRNGA_ModeSleep = 1U,  /*!< Sleep Mode. The ring-oscillator clocks are inactive; RNGA does not generate entropy.*/
-} rnga_mode_t;
-
-/*******************************************************************************
- * API
- *******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
- * @brief Initializes the RNGA.
- *
- * This function initializes the RNGA.
- * When called, the RNGA entropy generation starts immediately.
- *
- * @param base RNGA base address
- */
-void RNGA_Init(RNG_Type *base);
-
-/*!
- * @brief Shuts down the RNGA.
- *
- * This function shuts down the RNGA.
- *
- * @param base RNGA base address
- */
-void RNGA_Deinit(RNG_Type *base);
-
-/*!
- * @brief Gets random data.
- *
- * This function gets random data from the RNGA.
- *
- * @param base RNGA base address
- * @param data pointer to user buffer to be filled by random data
- * @param data_size size of data in bytes
- * @return RNGA status
- */
-status_t RNGA_GetRandomData(RNG_Type *base, void *data, size_t data_size);
-
-/*!
- * @brief Feeds the RNGA module.
- *
- * This function inputs an entropy value that the RNGA uses to seed its
- * pseudo-random algorithm.
- *
- * @param base RNGA base address
- * @param seed input seed value
- */
-void RNGA_Seed(RNG_Type *base, uint32_t seed);
-
-/*!
- * @brief Sets the RNGA in normal mode or sleep mode.
- *
- * This function sets the RNGA in sleep mode or normal mode.
- *
- * @param base RNGA base address
- * @param mode normal mode or sleep mode
- */
-void RNGA_SetMode(RNG_Type *base, rnga_mode_t mode);
-
-/*!
- * @brief Gets the RNGA working mode.
- *
- * This function gets the RNGA working mode.
- *
- * @param base RNGA base address
- * @return normal mode or sleep mode
- */
-rnga_mode_t RNGA_GetMode(RNG_Type *base);
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*! @}*/
-
-#endif /* FSL_FEATURE_SOC_RNG_COUNT */
-#endif /* _FSL_RNGA_H_*/
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_rtc.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,370 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_rtc.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-#define SECONDS_IN_A_DAY (86400U)
-#define SECONDS_IN_A_HOUR (3600U)
-#define SECONDS_IN_A_MINUTE (60U)
-#define DAYS_IN_A_YEAR (365U)
-#define YEAR_RANGE_START (1970U)
-#define YEAR_RANGE_END (2099U)
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-/*!
- * @brief Checks whether the date and time passed in is valid
- *
- * @param datetime Pointer to structure where the date and time details are stored
- *
- * @return Returns false if the date & time details are out of range; true if in range
- */
-static bool RTC_CheckDatetimeFormat(const rtc_datetime_t *datetime);
-
-/*!
- * @brief Converts time data from datetime to seconds
- *
- * @param datetime Pointer to datetime structure where the date and time details are stored
- *
- * @return The result of the conversion in seconds
- */
-static uint32_t RTC_ConvertDatetimeToSeconds(const rtc_datetime_t *datetime);
-
-/*!
- * @brief Converts time data from seconds to a datetime structure
- *
- * @param seconds  Seconds value that needs to be converted to datetime format
- * @param datetime Pointer to the datetime structure where the result of the conversion is stored
- */
-static void RTC_ConvertSecondsToDatetime(uint32_t seconds, rtc_datetime_t *datetime);
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-static bool RTC_CheckDatetimeFormat(const rtc_datetime_t *datetime)
-{
-    /* Table of days in a month for a non leap year. First entry in the table is not used,
-     * valid months start from 1
-     */
-    uint8_t daysPerMonth[] = {0U, 31U, 28U, 31U, 30U, 31U, 30U, 31U, 31U, 30U, 31U, 30U, 31U};
-
-    /* Check year, month, hour, minute, seconds */
-    if ((datetime->year < YEAR_RANGE_START) || (datetime->year > YEAR_RANGE_END) || (datetime->month > 12U) ||
-        (datetime->month < 1U) || (datetime->hour >= 24U) || (datetime->minute >= 60U) || (datetime->second >= 60U))
-    {
-        /* If not correct then error*/
-        return false;
-    }
-
-    /* Adjust the days in February for a leap year */
-    if (!(datetime->year & 3U))
-    {
-        daysPerMonth[2] = 29U;
-    }
-
-    /* Check the validity of the day */
-    if (datetime->day > daysPerMonth[datetime->month])
-    {
-        return false;
-    }
-
-    return true;
-}
-
-static uint32_t RTC_ConvertDatetimeToSeconds(const rtc_datetime_t *datetime)
-{
-    /* Number of days from begin of the non Leap-year*/
-    uint16_t monthDays[] = {0U, 0U, 31U, 59U, 90U, 120U, 151U, 181U, 212U, 243U, 273U, 304U, 334U};
-    uint32_t seconds;
-
-    /* Compute number of days from 1970 till given year*/
-    seconds = (datetime->year - 1970U) * DAYS_IN_A_YEAR;
-    /* Add leap year days */
-    seconds += ((datetime->year / 4) - (1970U / 4));
-    /* Add number of days till given month*/
-    seconds += monthDays[datetime->month];
-    /* Add days in given month. We subtract the current day as it is
-     * represented in the hours, minutes and seconds field*/
-    seconds += (datetime->day - 1);
-    /* For leap year if month less than or equal to Febraury, decrement day counter*/
-    if ((!(datetime->year & 3U)) && (datetime->month <= 2U))
-    {
-        seconds--;
-    }
-
-    seconds = (seconds * SECONDS_IN_A_DAY) + (datetime->hour * SECONDS_IN_A_HOUR) +
-              (datetime->minute * SECONDS_IN_A_MINUTE) + datetime->second;
-
-    return seconds;
-}
-
-static void RTC_ConvertSecondsToDatetime(uint32_t seconds, rtc_datetime_t *datetime)
-{
-    uint32_t x;
-    uint32_t secondsRemaining, days;
-    uint16_t daysInYear;
-    /* Table of days in a month for a non leap year. First entry in the table is not used,
-     * valid months start from 1
-     */
-    uint8_t daysPerMonth[] = {0U, 31U, 28U, 31U, 30U, 31U, 30U, 31U, 31U, 30U, 31U, 30U, 31U};
-
-    /* Start with the seconds value that is passed in to be converted to date time format */
-    secondsRemaining = seconds;
-
-    /* Calcuate the number of days, we add 1 for the current day which is represented in the
-     * hours and seconds field
-     */
-    days = secondsRemaining / SECONDS_IN_A_DAY + 1;
-
-    /* Update seconds left*/
-    secondsRemaining = secondsRemaining % SECONDS_IN_A_DAY;
-
-    /* Calculate the datetime hour, minute and second fields */
-    datetime->hour = secondsRemaining / SECONDS_IN_A_HOUR;
-    secondsRemaining = secondsRemaining % SECONDS_IN_A_HOUR;
-    datetime->minute = secondsRemaining / 60U;
-    datetime->second = secondsRemaining % SECONDS_IN_A_MINUTE;
-
-    /* Calculate year */
-    daysInYear = DAYS_IN_A_YEAR;
-    datetime->year = YEAR_RANGE_START;
-    while (days > daysInYear)
-    {
-        /* Decrease day count by a year and increment year by 1 */
-        days -= daysInYear;
-        datetime->year++;
-
-        /* Adjust the number of days for a leap year */
-        if (datetime->year & 3U)
-        {
-            daysInYear = DAYS_IN_A_YEAR;
-        }
-        else
-        {
-            daysInYear = DAYS_IN_A_YEAR + 1;
-        }
-    }
-
-    /* Adjust the days in February for a leap year */
-    if (!(datetime->year & 3U))
-    {
-        daysPerMonth[2] = 29U;
-    }
-
-    for (x = 1U; x <= 12U; x++)
-    {
-        if (days <= daysPerMonth[x])
-        {
-            datetime->month = x;
-            break;
-        }
-        else
-        {
-            days -= daysPerMonth[x];
-        }
-    }
-
-    datetime->day = days;
-}
-
-void RTC_Init(RTC_Type *base, const rtc_config_t *config)
-{
-    assert(config);
-
-    uint32_t reg;
-
-    CLOCK_EnableClock(kCLOCK_Rtc0);
-
-    /* Issue a software reset if timer is invalid */
-    if (RTC_GetStatusFlags(RTC) & kRTC_TimeInvalidFlag)
-    {
-        RTC_Reset(RTC);
-    }
-
-    reg = base->CR;
-    /* Setup the update mode and supervisor access mode */
-    reg &= ~(RTC_CR_UM_MASK | RTC_CR_SUP_MASK);
-    reg |= RTC_CR_UM(config->updateMode) | RTC_CR_SUP(config->supervisorAccess);
-#if defined(FSL_FEATURE_RTC_HAS_WAKEUP_PIN) && FSL_FEATURE_RTC_HAS_WAKEUP_PIN
-    /* Setup the wakeup pin select */
-    reg &= ~(RTC_CR_WPS_MASK);
-    reg |= RTC_CR_WPS(config->wakeupSelect);
-#endif /* FSL_FEATURE_RTC_HAS_WAKEUP_PIN */
-    base->CR = reg;
-
-    /* Configure the RTC time compensation register */
-    base->TCR = (RTC_TCR_CIR(config->compensationInterval) | RTC_TCR_TCR(config->compensationTime));
-}
-
-void RTC_GetDefaultConfig(rtc_config_t *config)
-{
-    assert(config);
-
-    /* Wakeup pin will assert if the RTC interrupt asserts or if the wakeup pin is turned on */
-    config->wakeupSelect = false;
-    /* Registers cannot be written when locked */
-    config->updateMode = false;
-    /* Non-supervisor mode write accesses are not supported and will generate a bus error */
-    config->supervisorAccess = false;
-    /* Compensation interval used by the crystal compensation logic */
-    config->compensationInterval = 0;
-    /* Compensation time used by the crystal compensation logic */
-    config->compensationTime = 0;
-}
-
-status_t RTC_SetDatetime(RTC_Type *base, const rtc_datetime_t *datetime)
-{
-    assert(datetime);
-
-    /* Return error if the time provided is not valid */
-    if (!(RTC_CheckDatetimeFormat(datetime)))
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* Set time in seconds */
-    base->TSR = RTC_ConvertDatetimeToSeconds(datetime);
-
-    return kStatus_Success;
-}
-
-void RTC_GetDatetime(RTC_Type *base, rtc_datetime_t *datetime)
-{
-    assert(datetime);
-
-    uint32_t seconds = 0;
-
-    seconds = base->TSR;
-    RTC_ConvertSecondsToDatetime(seconds, datetime);
-}
-
-status_t RTC_SetAlarm(RTC_Type *base, const rtc_datetime_t *alarmTime)
-{
-    assert(alarmTime);
-
-    uint32_t alarmSeconds = 0;
-    uint32_t currSeconds = 0;
-
-    /* Return error if the alarm time provided is not valid */
-    if (!(RTC_CheckDatetimeFormat(alarmTime)))
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    alarmSeconds = RTC_ConvertDatetimeToSeconds(alarmTime);
-
-    /* Get the current time */
-    currSeconds = base->TSR;
-
-    /* Return error if the alarm time has passed */
-    if (alarmSeconds < currSeconds)
-    {
-        return kStatus_Fail;
-    }
-
-    /* Set alarm in seconds*/
-    base->TAR = alarmSeconds;
-
-    return kStatus_Success;
-}
-
-void RTC_GetAlarm(RTC_Type *base, rtc_datetime_t *datetime)
-{
-    assert(datetime);
-
-    uint32_t alarmSeconds = 0;
-
-    /* Get alarm in seconds  */
-    alarmSeconds = base->TAR;
-
-    RTC_ConvertSecondsToDatetime(alarmSeconds, datetime);
-}
-
-void RTC_ClearStatusFlags(RTC_Type *base, uint32_t mask)
-{
-    /* The alarm flag is cleared by writing to the TAR register */
-    if (mask & kRTC_AlarmFlag)
-    {
-        base->TAR = 0U;
-    }
-
-    /* The timer overflow flag is cleared by initializing the TSR register.
-     * The time counter should be disabled for this write to be successful
-     */
-    if (mask & kRTC_TimeOverflowFlag)
-    {
-        base->TSR = 1U;
-    }
-
-    /* The timer overflow flag is cleared by initializing the TSR register.
-     * The time counter should be disabled for this write to be successful
-     */
-    if (mask & kRTC_TimeInvalidFlag)
-    {
-        base->TSR = 1U;
-    }
-}
-
-#if defined(FSL_FEATURE_RTC_HAS_MONOTONIC) && (FSL_FEATURE_RTC_HAS_MONOTONIC)
-
-void RTC_GetMonotonicCounter(RTC_Type *base, uint64_t *counter)
-{
-    *counter = (((uint64_t)base->MCHR << 32) | ((uint64_t)base->MCLR));
-}
-
-void RTC_SetMonotonicCounter(RTC_Type *base, uint64_t counter)
-{
-    /* Prepare to initialize the register with the new value written */
-    base->MER &= ~RTC_MER_MCE_MASK;
-
-    base->MCHR = (uint32_t)((counter) >> 32);
-    base->MCLR = (uint32_t)(counter);
-}
-
-status_t RTC_IncrementMonotonicCounter(RTC_Type *base)
-{
-    if (base->SR & (RTC_SR_MOF_MASK | RTC_SR_TIF_MASK))
-    {
-        return kStatus_Fail;
-    }
-
-    /* Prepare to switch to increment mode */
-    base->MER |= RTC_MER_MCE_MASK;
-    /* Write anything so the counter increments*/
-    base->MCLR = 1U;
-
-    return kStatus_Success;
-}
-
-#endif /* FSL_FEATURE_RTC_HAS_MONOTONIC */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_rtc.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,405 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_RTC_H_
-#define _FSL_RTC_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup rtc_driver
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-#define FSL_RTC_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) /*!< Version 2.0.0 */
-/*@}*/
-
-/*! @brief List of RTC interrupts */
-typedef enum _rtc_interrupt_enable
-{
-    kRTC_TimeInvalidInterruptEnable = RTC_IER_TIIE_MASK,  /*!< Time invalid interrupt.*/
-    kRTC_TimeOverflowInterruptEnable = RTC_IER_TOIE_MASK, /*!< Time overflow interrupt.*/
-    kRTC_AlarmInterruptEnable = RTC_IER_TAIE_MASK,        /*!< Alarm interrupt.*/
-    kRTC_SecondsInterruptEnable = RTC_IER_TSIE_MASK       /*!< Seconds interrupt.*/
-} rtc_interrupt_enable_t;
-
-/*! @brief List of RTC flags */
-typedef enum _rtc_status_flags
-{
-    kRTC_TimeInvalidFlag = RTC_SR_TIF_MASK,  /*!< Time invalid flag */
-    kRTC_TimeOverflowFlag = RTC_SR_TOF_MASK, /*!< Time overflow flag */
-    kRTC_AlarmFlag = RTC_SR_TAF_MASK         /*!< Alarm flag*/
-} rtc_status_flags_t;
-
-/*! @brief List of RTC Oscillator capacitor load settings */
-typedef enum _rtc_osc_cap_load
-{
-    kRTC_Capacitor_2p = RTC_CR_SC2P_MASK,  /*!< 2pF capacitor load */
-    kRTC_Capacitor_4p = RTC_CR_SC4P_MASK,  /*!< 4pF capacitor load */
-    kRTC_Capacitor_8p = RTC_CR_SC8P_MASK,  /*!< 8pF capacitor load */
-    kRTC_Capacitor_16p = RTC_CR_SC16P_MASK /*!< 16pF capacitor load */
-} rtc_osc_cap_load_t;
-
-/*! @brief Structure is used to hold the date and time */
-typedef struct _rtc_datetime
-{
-    uint16_t year;  /*!< Range from 1970 to 2099.*/
-    uint8_t month;  /*!< Range from 1 to 12.*/
-    uint8_t day;    /*!< Range from 1 to 31 (depending on month).*/
-    uint8_t hour;   /*!< Range from 0 to 23.*/
-    uint8_t minute; /*!< Range from 0 to 59.*/
-    uint8_t second; /*!< Range from 0 to 59.*/
-} rtc_datetime_t;
-
-/*!
- * @brief RTC config structure
- *
- * This structure holds the configuration settings for the RTC peripheral. To initialize this
- * structure to reasonable defaults, call the RTC_GetDefaultConfig() function and pass a
- * pointer to your config structure instance.
- *
- * The config struct can be made const so it resides in flash
- */
-typedef struct _rtc_config
-{
-    bool wakeupSelect;             /*!< true: Wakeup pin outputs the 32KHz clock;
-                                        false:Wakeup pin used to wakeup the chip  */
-    bool updateMode;               /*!< true: Registers can be written even when locked under certain
-                                        conditions, false: No writes allowed when registers are locked */
-    bool supervisorAccess;         /*!< true: Non-supervisor accesses are allowed;
-                                        false: Non-supervisor accesses are not supported */
-    uint32_t compensationInterval; /*!< Compensation interval that is written to the CIR field in RTC TCR Register */
-    uint32_t compensationTime;     /*!< Compensation time that is written to the TCR field in RTC TCR Register */
-} rtc_config_t;
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
- * @name Initialization and deinitialization
- * @{
- */
-
-/*!
- * @brief Ungates the RTC clock and configures the peripheral for basic operation.
- *
- * This function will issue a software reset if the timer invalid flag is set.
- *
- * @note This API should be called at the beginning of the application using the RTC driver.
- *
- * @param base   RTC peripheral base address
- * @param config Pointer to user's RTC config structure.
- */
-void RTC_Init(RTC_Type *base, const rtc_config_t *config);
-
-/*!
- * @brief Stop the timer and gate the RTC clock
- *
- * @param base RTC peripheral base address
- */
-static inline void RTC_Deinit(RTC_Type *base)
-{
-    /* Stop the RTC timer */
-    base->SR &= ~RTC_SR_TCE_MASK;
-
-    /* Gate the module clock */
-    CLOCK_DisableClock(kCLOCK_Rtc0);
-}
-
-/*!
- * @brief Fill in the RTC config struct with the default settings
- *
- * The default values are:
- * @code
- *    config->wakeupSelect = false;
- *    config->updateMode = false;
- *    config->supervisorAccess = false;
- *    config->compensationInterval = 0;
- *    config->compensationTime = 0;
- * @endcode
- * @param config Pointer to user's RTC config structure.
- */
-void RTC_GetDefaultConfig(rtc_config_t *config);
-
-/*! @}*/
-
-/*!
- * @name Current Time & Alarm
- * @{
- */
-
-/*!
- * @brief Sets the RTC date and time according to the given time structure.
- *
- * The RTC counter must be stopped prior to calling this function as writes to the RTC
- * seconds register will fail if the RTC counter is running.
- *
- * @param base     RTC peripheral base address
- * @param datetime Pointer to structure where the date and time details to set are stored
- *
- * @return kStatus_Success: Success in setting the time and starting the RTC
- *         kStatus_InvalidArgument: Error because the datetime format is incorrect
- */
-status_t RTC_SetDatetime(RTC_Type *base, const rtc_datetime_t *datetime);
-
-/*!
- * @brief Gets the RTC time and stores it in the given time structure.
- *
- * @param base     RTC peripheral base address
- * @param datetime Pointer to structure where the date and time details are stored.
- */
-void RTC_GetDatetime(RTC_Type *base, rtc_datetime_t *datetime);
-
-/*!
- * @brief Sets the RTC alarm time
- *
- * The function checks whether the specified alarm time is greater than the present
- * time. If not, the function does not set the alarm and returns an error.
- *
- * @param base      RTC peripheral base address
- * @param alarmTime Pointer to structure where the alarm time is stored.
- *
- * @return kStatus_Success: success in setting the RTC alarm
- *         kStatus_InvalidArgument: Error because the alarm datetime format is incorrect
- *         kStatus_Fail: Error because the alarm time has already passed
- */
-status_t RTC_SetAlarm(RTC_Type *base, const rtc_datetime_t *alarmTime);
-
-/*!
- * @brief Returns the RTC alarm time.
- *
- * @param base     RTC peripheral base address
- * @param datetime Pointer to structure where the alarm date and time details are stored.
- */
-void RTC_GetAlarm(RTC_Type *base, rtc_datetime_t *datetime);
-
-/*! @}*/
-
-/*!
- * @name Interrupt Interface
- * @{
- */
-
-/*!
- * @brief Enables the selected RTC interrupts.
- *
- * @param base RTC peripheral base address
- * @param mask The interrupts to enable. This is a logical OR of members of the
- *             enumeration ::rtc_interrupt_enable_t
- */
-static inline void RTC_EnableInterrupts(RTC_Type *base, uint32_t mask)
-{
-    base->IER |= mask;
-}
-
-/*!
- * @brief Disables the selected RTC interrupts.
- *
- * @param base RTC peripheral base address
- * @param mask The interrupts to enable. This is a logical OR of members of the
- *             enumeration ::rtc_interrupt_enable_t
- */
-static inline void RTC_DisableInterrupts(RTC_Type *base, uint32_t mask)
-{
-    base->IER &= ~mask;
-}
-
-/*!
- * @brief Gets the enabled RTC interrupts.
- *
- * @param base RTC peripheral base address
- *
- * @return The enabled interrupts. This is the logical OR of members of the
- *         enumeration ::rtc_interrupt_enable_t
- */
-static inline uint32_t RTC_GetEnabledInterrupts(RTC_Type *base)
-{
-    return (base->IER & (RTC_IER_TIIE_MASK | RTC_IER_TOIE_MASK | RTC_IER_TAIE_MASK | RTC_IER_TSIE_MASK));
-}
-
-/*! @}*/
-
-/*!
- * @name Status Interface
- * @{
- */
-
-/*!
- * @brief Gets the RTC status flags
- *
- * @param base RTC peripheral base address
- *
- * @return The status flags. This is the logical OR of members of the
- *         enumeration ::rtc_status_flags_t
- */
-static inline uint32_t RTC_GetStatusFlags(RTC_Type *base)
-{
-    return (base->SR & (RTC_SR_TIF_MASK | RTC_SR_TOF_MASK | RTC_SR_TAF_MASK));
-}
-
-/*!
- * @brief  Clears the RTC status flags.
- *
- * @param base RTC peripheral base address
- * @param mask The status flags to clear. This is a logical OR of members of the
- *             enumeration ::rtc_status_flags_t
- */
-void RTC_ClearStatusFlags(RTC_Type *base, uint32_t mask);
-
-/*! @}*/
-
-/*!
- * @name Timer Start and Stop
- * @{
- */
-
-/*!
- * @brief Starts the RTC time counter.
- *
- * After calling this function, the timer counter increments once a second provided SR[TOF] or
- * SR[TIF] are not set.
- *
- * @param base RTC peripheral base address
- */
-static inline void RTC_StartTimer(RTC_Type *base)
-{
-    base->SR |= RTC_SR_TCE_MASK;
-}
-
-/*!
- * @brief Stops the RTC time counter.
- *
- * RTC's seconds register can be written to only when the timer is stopped.
- *
- * @param base RTC peripheral base address
- */
-static inline void RTC_StopTimer(RTC_Type *base)
-{
-    base->SR &= ~RTC_SR_TCE_MASK;
-}
-
-/*! @}*/
-
-/*!
- * @brief This function sets the specified capacitor configuration for the RTC oscillator.
- *
- * @param base    RTC peripheral base address
- * @param capLoad Oscillator loads to enable. This is a logical OR of members of the
- *                enumeration ::rtc_osc_cap_load_t
- */
-static inline void RTC_SetOscCapLoad(RTC_Type *base, uint32_t capLoad)
-{
-    uint32_t reg = base->CR;
-
-    reg &= ~(RTC_CR_SC2P_MASK | RTC_CR_SC4P_MASK | RTC_CR_SC8P_MASK | RTC_CR_SC16P_MASK);
-    reg |= capLoad;
-
-    base->CR = reg;
-}
-
-/*!
- * @brief Performs a software reset on the RTC module.
- *
- * This resets all RTC registers except for the SWR bit and the RTC_WAR and RTC_RAR
- * registers. The SWR bit is cleared by software explicitly clearing it.
- *
- * @param base RTC peripheral base address
- */
-static inline void RTC_Reset(RTC_Type *base)
-{
-    base->CR |= RTC_CR_SWR_MASK;
-    base->CR &= ~RTC_CR_SWR_MASK;
-
-    /* Set TSR register to 0x1 to avoid the timer invalid (TIF) bit being set in the SR register */
-    base->TSR = 1U;
-}
-
-#if defined(FSL_FEATURE_RTC_HAS_MONOTONIC) && (FSL_FEATURE_RTC_HAS_MONOTONIC)
-
-/*!
- * @name Monotonic counter functions
- * @{
- */
-
-/*!
- * @brief Reads the values of the Monotonic Counter High and Monotonic Counter Low and returns
- *        them as a single value.
- *
- * @param base    RTC peripheral base address
- * @param counter Pointer to variable where the value is stored.
- */
-void RTC_GetMonotonicCounter(RTC_Type *base, uint64_t *counter);
-
-/*!
- * @brief Writes values Monotonic Counter High and Monotonic Counter Low by decomposing
- *        the given single value.
- *
- * @param base    RTC peripheral base address
- * @param counter Counter value
- */
-void RTC_SetMonotonicCounter(RTC_Type *base, uint64_t counter);
-
-/*!
- * @brief Increments the Monotonic Counter by one.
- *
- * Increments the Monotonic Counter (registers RTC_MCLR and RTC_MCHR accordingly) by setting
- * the monotonic counter enable (MER[MCE]) and then writing to the RTC_MCLR register. A write to the
- * monotonic counter low that causes it to overflow also increments the monotonic counter high.
- *
- * @param base RTC peripheral base address
- *
- * @return kStatus_Success: success
- *         kStatus_Fail: error occurred, either time invalid or monotonic overflow flag was found
- */
-status_t RTC_IncrementMonotonicCounter(RTC_Type *base);
-
-/*! @}*/
-
-#endif /* FSL_FEATURE_RTC_HAS_MONOTONIC */
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*! @}*/
-
-#endif /* _FSL_RTC_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_sai.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1048 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_sai.h"
-
-/*******************************************************************************
- * Definitations
- ******************************************************************************/
-enum _sai_transfer_state
-{
-    kSAI_Busy = 0x0U, /*!< SAI is busy */
-    kSAI_Idle,        /*!< Transfer is done. */
-    kSAI_Error        /*!< Transfer error occured. */
-};
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-#if defined(FSL_FEATURE_SAI_HAS_MCLKDIV_REGISTER) && (FSL_FEATURE_SAI_HAS_MCLKDIV_REGISTER)
-
-/*!
- * @brief Set the master clock divider.
- *
- * This API will compute the master clock divider according to master clock frequency and master
- * clock source clock source frequency.
- *
- * @param base SAI base pointer.
- * @param mclk_Hz Mater clock frequency in Hz.
- * @param mclkSrcClock_Hz Master clock source frequency in Hz.
- */
-static void SAI_SetMasterClockDivider(I2S_Type *base, uint32_t mclk_Hz, uint32_t mclkSrcClock_Hz);
-#endif /* FSL_FEATURE_SAI_HAS_MCLKDIV_REGISTER */
-
-/*!
- * @brief Get the instance number for SAI.
- *
- * @param base SAI base pointer.
- */
-uint32_t SAI_GetInstance(I2S_Type *base);
-
-/*!
- * @brief sends a piece of data in non-blocking way.
- *
- * @param base SAI base pointer
- * @param channel Data channel used.
- * @param bitWidth How many bits in a audio word, usually 8/16/24/32 bits.
- * @param buffer Pointer to the data to be written.
- * @param size Bytes to be written.
- */
-static void SAI_WriteNonBlocking(I2S_Type *base, uint32_t channel, uint32_t bitWidth, uint8_t *buffer, uint32_t size);
-
-/*!
- * @brief Receive a piece of data in non-blocking way.
- *
- * @param base SAI base pointer
- * @param channel Data channel used.
- * @param bitWidth How many bits in a audio word, usually 8/16/24/32 bits.
- * @param buffer Pointer to the data to be read.
- * @param size Bytes to be read.
- */
-static void SAI_ReadNonBlocking(I2S_Type *base, uint32_t channel, uint32_t bitWidth, uint8_t *buffer, uint32_t size);
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-/*!@brief SAI handle pointer */
-sai_handle_t *s_saiHandle[FSL_FEATURE_SOC_I2S_COUNT][2];
-/* Base pointer array */
-static I2S_Type *const s_saiBases[] = I2S_BASE_PTRS;
-/* IRQ number array */
-static const IRQn_Type s_saiTxIRQ[] = I2S_TX_IRQS;
-static const IRQn_Type s_saiRxIRQ[] = I2S_RX_IRQS;
-/* Clock name array */
-static const clock_ip_name_t s_saiClock[] = SAI_CLOCKS;
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-#if defined(FSL_FEATURE_SAI_HAS_MCLKDIV_REGISTER) && (FSL_FEATURE_SAI_HAS_MCLKDIV_REGISTER)
-static void SAI_SetMasterClockDivider(I2S_Type *base, uint32_t mclk_Hz, uint32_t mclkSrcClock_Hz)
-{
-    uint32_t freq = mclkSrcClock_Hz;
-    uint16_t fract, divide;
-    uint32_t remaind = 0;
-    uint32_t current_remainder = 0xFFFFFFFFU;
-    uint16_t current_fract = 0;
-    uint16_t current_divide = 0;
-    uint32_t mul_freq = 0;
-    uint32_t max_fract = 256;
-
-    /*In order to prevent overflow */
-    freq /= 100;
-    mclk_Hz /= 100;
-
-    /* Compute the max fract number */
-    max_fract = mclk_Hz * 4096 / freq + 1;
-    if (max_fract > 256)
-    {
-        max_fract = 256;
-    }
-
-    /* Looking for the closet frequency */
-    for (fract = 1; fract < max_fract; fract++)
-    {
-        mul_freq = freq * fract;
-        remaind = mul_freq % mclk_Hz;
-        divide = mul_freq / mclk_Hz;
-
-        /* Find the exactly frequency */
-        if (remaind == 0)
-        {
-            current_fract = fract;
-            current_divide = mul_freq / mclk_Hz;
-            break;
-        }
-
-        /* Closer to next one, set the closest to next data */
-        if (remaind > mclk_Hz / 2)
-        {
-            remaind = mclk_Hz - remaind;
-            divide += 1;
-        }
-
-        /* Update the closest div and fract */
-        if (remaind < current_remainder)
-        {
-            current_fract = fract;
-            current_divide = divide;
-            current_remainder = remaind;
-        }
-    }
-
-    /* Fill the computed fract and divider to registers */
-    base->MDR = I2S_MDR_DIVIDE(current_divide - 1) | I2S_MDR_FRACT(current_fract - 1);
-
-    /* Waiting for the divider updated */
-    while (base->MCR & I2S_MCR_DUF_MASK)
-    {
-    }
-}
-#endif /* FSL_FEATURE_SAI_HAS_MCLKDIV_REGISTER */
-
-uint32_t SAI_GetInstance(I2S_Type *base)
-{
-    uint32_t instance;
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < FSL_FEATURE_SOC_I2S_COUNT; instance++)
-    {
-        if (s_saiBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < FSL_FEATURE_SOC_I2S_COUNT);
-
-    return instance;
-}
-
-static void SAI_WriteNonBlocking(I2S_Type *base, uint32_t channel, uint32_t bitWidth, uint8_t *buffer, uint32_t size)
-{
-    uint32_t i = 0;
-    uint8_t j = 0;
-    uint8_t bytesPerWord = bitWidth / 8U;
-    uint32_t data = 0;
-    uint32_t temp = 0;
-
-    for (i = 0; i < size / bytesPerWord; i++)
-    {
-        for (j = 0; j < bytesPerWord; j++)
-        {
-            temp = (uint32_t)(*buffer);
-            data |= (temp << (8U * j));
-            buffer++;
-        }
-        base->TDR[channel] = data;
-        data = 0;
-    }
-}
-
-static void SAI_ReadNonBlocking(I2S_Type *base, uint32_t channel, uint32_t bitWidth, uint8_t *buffer, uint32_t size)
-{
-    uint32_t i = 0;
-    uint8_t j = 0;
-    uint8_t bytesPerWord = bitWidth / 8U;
-    uint32_t data = 0;
-
-    for (i = 0; i < size / bytesPerWord; i++)
-    {
-        data = base->RDR[channel];
-        for (j = 0; j < bytesPerWord; j++)
-        {
-            *buffer = (data >> (8U * j)) & 0xFF;
-            buffer++;
-        }
-    }
-}
-
-void SAI_TxInit(I2S_Type *base, const sai_config_t *config)
-{
-    uint32_t val = 0;
-
-    /* Enable the SAI clock */
-    CLOCK_EnableClock(s_saiClock[SAI_GetInstance(base)]);
-
-#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
-    /* Configure Master clock output enable */
-    base->MCR = I2S_MCR_MOE(config->mclkOutputEnable);
-
-    /* Master clock source setting */
-    val = (base->MCR & ~I2S_MCR_MICS_MASK);
-    base->MCR = (val | I2S_MCR_MICS(config->mclkSource));
-#endif /* FSL_FEATURE_SAI_HAS_MCR */
-
-    /* Configure audio protocol */
-    switch (config->protocol)
-    {
-        case kSAI_BusLeftJustified:
-            base->TCR2 |= I2S_TCR2_BCP_MASK;
-            base->TCR3 &= ~I2S_TCR3_WDFL_MASK;
-            base->TCR4 = I2S_TCR4_MF(1U) | I2S_TCR4_SYWD(31U) | I2S_TCR4_FSE(0U) | I2S_TCR4_FSP(0U) | I2S_TCR4_FRSZ(1U);
-            break;
-
-        case kSAI_BusRightJustified:
-            base->TCR2 |= I2S_TCR2_BCP_MASK;
-            base->TCR3 &= ~I2S_TCR3_WDFL_MASK;
-            base->TCR4 = I2S_TCR4_MF(1U) | I2S_TCR4_SYWD(31U) | I2S_TCR4_FSE(0U) | I2S_TCR4_FSP(0U) | I2S_TCR4_FRSZ(1U);
-            break;
-
-        case kSAI_BusI2S:
-            base->TCR2 |= I2S_TCR2_BCP_MASK;
-            base->TCR3 &= ~I2S_TCR3_WDFL_MASK;
-            base->TCR4 = I2S_TCR4_MF(1U) | I2S_TCR4_SYWD(31U) | I2S_TCR4_FSE(1U) | I2S_TCR4_FSP(1U) | I2S_TCR4_FRSZ(1U);
-            break;
-
-        case kSAI_BusPCMA:
-            base->TCR2 &= ~I2S_TCR2_BCP_MASK;
-            base->TCR3 &= ~I2S_TCR3_WDFL_MASK;
-            base->TCR4 = I2S_TCR4_MF(1U) | I2S_TCR4_SYWD(0U) | I2S_TCR4_FSE(1U) | I2S_TCR4_FSP(0U) | I2S_TCR4_FRSZ(1U);
-            break;
-
-        case kSAI_BusPCMB:
-            base->TCR2 &= ~I2S_TCR2_BCP_MASK;
-            base->TCR3 &= ~I2S_TCR3_WDFL_MASK;
-            base->TCR4 = I2S_TCR4_MF(1U) | I2S_TCR4_SYWD(0U) | I2S_TCR4_FSE(0U) | I2S_TCR4_FSP(0U) | I2S_TCR4_FRSZ(1U);
-            break;
-
-        default:
-            break;
-    }
-
-    /* Set master or slave */
-    if (config->masterSlave == kSAI_Master)
-    {
-        base->TCR2 |= I2S_TCR2_BCD_MASK;
-        base->TCR4 |= I2S_TCR4_FSD_MASK;
-
-        /* Bit clock source setting */
-        val = base->TCR2 & (~I2S_TCR2_MSEL_MASK);
-        base->TCR2 = (val | I2S_TCR2_MSEL(config->bclkSource));
-    }
-    else
-    {
-        base->TCR2 &= ~I2S_TCR2_BCD_MASK;
-        base->TCR4 &= ~I2S_TCR4_FSD_MASK;
-    }
-
-    /* Set Sync mode */
-    switch (config->syncMode)
-    {
-        case kSAI_ModeAsync:
-            val = base->TCR2;
-            val &= ~I2S_TCR2_SYNC_MASK;
-            base->TCR2 = (val | I2S_TCR2_SYNC(0U));
-            break;
-        case kSAI_ModeSync:
-            val = base->TCR2;
-            val &= ~I2S_TCR2_SYNC_MASK;
-            base->TCR2 = (val | I2S_TCR2_SYNC(1U));
-            /* If sync with Rx, should set Rx to async mode */
-            val = base->RCR2;
-            val &= ~I2S_RCR2_SYNC_MASK;
-            base->RCR2 = (val | I2S_RCR2_SYNC(0U));
-            break;
-        case kSAI_ModeSyncWithOtherTx:
-            val = base->TCR2;
-            val &= ~I2S_TCR2_SYNC_MASK;
-            base->TCR2 = (val | I2S_TCR2_SYNC(2U));
-            break;
-        case kSAI_ModeSyncWithOtherRx:
-            val = base->TCR2;
-            val &= ~I2S_TCR2_SYNC_MASK;
-            base->TCR2 = (val | I2S_TCR2_SYNC(3U));
-            break;
-        default:
-            break;
-    }
-}
-
-void SAI_RxInit(I2S_Type *base, const sai_config_t *config)
-{
-    uint32_t val = 0;
-
-    /* Enable SAI clock first. */
-    CLOCK_EnableClock(s_saiClock[SAI_GetInstance(base)]);
-
-#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
-    /* Configure Master clock output enable */
-    base->MCR = I2S_MCR_MOE(config->mclkOutputEnable);
-
-    /* Master clock source setting */
-    val = (base->MCR & ~I2S_MCR_MICS_MASK);
-    base->MCR = (val | I2S_MCR_MICS(config->mclkSource));
-#endif /* FSL_FEATURE_SAI_HAS_MCR */
-
-    /* Configure audio protocol */
-    switch (config->protocol)
-    {
-        case kSAI_BusLeftJustified:
-            base->RCR2 |= I2S_RCR2_BCP_MASK;
-            base->RCR3 &= ~I2S_RCR3_WDFL_MASK;
-            base->RCR4 = I2S_RCR4_MF(1U) | I2S_RCR4_SYWD(31U) | I2S_RCR4_FSE(0U) | I2S_RCR4_FSP(0U) | I2S_RCR4_FRSZ(1U);
-            break;
-
-        case kSAI_BusRightJustified:
-            base->RCR2 |= I2S_RCR2_BCP_MASK;
-            base->RCR3 &= ~I2S_RCR3_WDFL_MASK;
-            base->RCR4 = I2S_RCR4_MF(1U) | I2S_RCR4_SYWD(31U) | I2S_RCR4_FSE(0U) | I2S_RCR4_FSP(0U) | I2S_RCR4_FRSZ(1U);
-            break;
-
-        case kSAI_BusI2S:
-            base->RCR2 |= I2S_RCR2_BCP_MASK;
-            base->RCR3 &= ~I2S_RCR3_WDFL_MASK;
-            base->RCR4 = I2S_RCR4_MF(1U) | I2S_RCR4_SYWD(31U) | I2S_RCR4_FSE(1U) | I2S_RCR4_FSP(1U) | I2S_RCR4_FRSZ(1U);
-            break;
-
-        case kSAI_BusPCMA:
-            base->RCR2 &= ~I2S_RCR2_BCP_MASK;
-            base->RCR3 &= ~I2S_RCR3_WDFL_MASK;
-            base->RCR4 = I2S_RCR4_MF(1U) | I2S_RCR4_SYWD(0U) | I2S_RCR4_FSE(1U) | I2S_RCR4_FSP(0U) | I2S_RCR4_FRSZ(1U);
-            break;
-
-        case kSAI_BusPCMB:
-            base->RCR2 &= ~I2S_RCR2_BCP_MASK;
-            base->RCR3 &= ~I2S_RCR3_WDFL_MASK;
-            base->RCR4 = I2S_RCR4_MF(1U) | I2S_RCR4_SYWD(0U) | I2S_RCR4_FSE(0U) | I2S_RCR4_FSP(0U) | I2S_RCR4_FRSZ(1U);
-            break;
-
-        default:
-            break;
-    }
-
-    /* Set master or slave */
-    if (config->masterSlave == kSAI_Master)
-    {
-        base->RCR2 |= I2S_RCR2_BCD_MASK;
-        base->RCR4 |= I2S_RCR4_FSD_MASK;
-
-        /* Bit clock source setting */
-        val = base->RCR2 & (~I2S_RCR2_MSEL_MASK);
-        base->RCR2 = (val | I2S_RCR2_MSEL(config->bclkSource));
-    }
-    else
-    {
-        base->RCR2 &= ~I2S_RCR2_BCD_MASK;
-        base->RCR4 &= ~I2S_RCR4_FSD_MASK;
-    }
-
-    /* Set Sync mode */
-    switch (config->syncMode)
-    {
-        case kSAI_ModeAsync:
-            val = base->RCR2;
-            val &= ~I2S_RCR2_SYNC_MASK;
-            base->RCR2 = (val | I2S_RCR2_SYNC(0U));
-            break;
-        case kSAI_ModeSync:
-            val = base->RCR2;
-            val &= ~I2S_RCR2_SYNC_MASK;
-            base->RCR2 = (val | I2S_RCR2_SYNC(1U));
-            /* If sync with Tx, should set Tx to async mode */
-            val = base->TCR2;
-            val &= ~I2S_TCR2_SYNC_MASK;
-            base->TCR2 = (val | I2S_TCR2_SYNC(0U));
-            break;
-        case kSAI_ModeSyncWithOtherTx:
-            val = base->RCR2;
-            val &= ~I2S_RCR2_SYNC_MASK;
-            base->RCR2 = (val | I2S_RCR2_SYNC(2U));
-            break;
-        case kSAI_ModeSyncWithOtherRx:
-            val = base->RCR2;
-            val &= ~I2S_RCR2_SYNC_MASK;
-            base->RCR2 = (val | I2S_RCR2_SYNC(3U));
-            break;
-        default:
-            break;
-    }
-}
-
-void SAI_Deinit(I2S_Type *base)
-{
-    SAI_TxEnable(base, false);
-    SAI_RxEnable(base, false);
-    CLOCK_DisableClock(s_saiClock[SAI_GetInstance(base)]);
-}
-
-void SAI_TxGetDefaultConfig(sai_config_t *config)
-{
-    config->bclkSource = kSAI_BclkSourceMclkDiv;
-    config->masterSlave = kSAI_Master;
-    config->mclkSource = kSAI_MclkSourceSysclk;
-    config->protocol = kSAI_BusLeftJustified;
-    config->syncMode = kSAI_ModeAsync;
-#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
-    config->mclkOutputEnable = true;
-#endif /* FSL_FEATURE_SAI_HAS_MCR */
-}
-
-void SAI_RxGetDefaultConfig(sai_config_t *config)
-{
-    config->bclkSource = kSAI_BclkSourceMclkDiv;
-    config->masterSlave = kSAI_Master;
-    config->mclkSource = kSAI_MclkSourceSysclk;
-    config->protocol = kSAI_BusLeftJustified;
-    config->syncMode = kSAI_ModeSync;
-#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
-    config->mclkOutputEnable = true;
-#endif /* FSL_FEATURE_SAI_HAS_MCR */
-}
-
-void SAI_TxReset(I2S_Type *base)
-{
-    /* Set the software reset and FIFO reset to clear internal state */
-    base->TCSR = I2S_TCSR_SR_MASK | I2S_TCSR_FR_MASK;
-
-    /* Clear software reset bit, this should be done by software */
-    base->TCSR &= ~I2S_TCSR_SR_MASK;
-
-    /* Reset all Tx register values */
-    base->TCR2 = 0;
-    base->TCR3 = 0;
-    base->TCR4 = 0;
-    base->TCR5 = 0;
-    base->TMR = 0;
-}
-
-void SAI_RxReset(I2S_Type *base)
-{
-    /* Set the software reset and FIFO reset to clear internal state */
-    base->RCSR = I2S_RCSR_SR_MASK | I2S_RCSR_FR_MASK;
-
-    /* Clear software reset bit, this should be done by software */
-    base->RCSR &= ~I2S_RCSR_SR_MASK;
-
-    /* Reset all Rx register values */
-    base->RCR2 = 0;
-    base->RCR3 = 0;
-    base->RCR4 = 0;
-    base->RCR5 = 0;
-    base->RMR = 0;
-}
-
-void SAI_TxEnable(I2S_Type *base, bool enable)
-{
-    if (enable)
-    {
-        /* If clock is sync with Rx, should enable RE bit. */
-        if (((base->TCR2 & I2S_TCR2_SYNC_MASK) >> I2S_TCR2_SYNC_SHIFT) == 0x1U)
-        {
-            base->RCSR = ((base->RCSR & 0xFFE3FFFFU) | I2S_RCSR_RE_MASK);
-        }
-        base->TCSR = ((base->TCSR & 0xFFE3FFFFU) | I2S_TCSR_TE_MASK);
-    }
-    else
-    {
-        /* Should not close RE even sync with Rx */
-        base->TCSR = ((base->TCSR & 0xFFE3FFFFU) & (~I2S_TCSR_TE_MASK));
-    }
-}
-
-void SAI_RxEnable(I2S_Type *base, bool enable)
-{
-    if (enable)
-    {
-        /* If clock is sync with Tx, should enable TE bit. */
-        if (((base->RCR2 & I2S_RCR2_SYNC_MASK) >> I2S_RCR2_SYNC_SHIFT) == 0x1U)
-        {
-            base->TCSR = ((base->TCSR & 0xFFE3FFFFU) | I2S_TCSR_TE_MASK);
-        }
-        base->RCSR = ((base->RCSR & 0xFFE3FFFFU) | I2S_RCSR_RE_MASK);
-    }
-    else
-    {
-        base->RCSR = ((base->RCSR & 0xFFE3FFFFU) & (~I2S_RCSR_RE_MASK));
-    }
-}
-
-void SAI_TxSetFormat(I2S_Type *base,
-                     sai_transfer_format_t *format,
-                     uint32_t mclkSourceClockHz,
-                     uint32_t bclkSourceClockHz)
-{
-    uint32_t bclk = format->sampleRate_Hz * 32U * 2U;
-
-/* Compute the mclk */
-#if defined(FSL_FEATURE_SAI_HAS_MCLKDIV_REGISTER) && (FSL_FEATURE_SAI_HAS_MCLKDIV_REGISTER)
-    /* Check if master clock divider enabled, then set master clock divider */
-    if (base->MCR & I2S_MCR_MOE_MASK)
-    {
-        SAI_SetMasterClockDivider(base, format->masterClockHz, mclkSourceClockHz);
-    }
-#endif /* FSL_FEATURE_SAI_HAS_MCLKDIV_REGISTER */
-
-    /* Set bclk if needed */
-    if (base->TCR2 & I2S_TCR2_BCD_MASK)
-    {
-        base->TCR2 &= ~I2S_TCR2_DIV_MASK;
-        base->TCR2 |= I2S_TCR2_DIV((bclkSourceClockHz / bclk) / 2U - 1U);
-    }
-
-    /* Set bitWidth */
-    if (format->protocol == kSAI_BusRightJustified)
-    {
-        base->TCR5 = I2S_TCR5_WNW(31U) | I2S_TCR5_W0W(31U) | I2S_TCR5_FBT(31U);
-    }
-    else
-    {
-        base->TCR5 = I2S_TCR5_WNW(31U) | I2S_TCR5_W0W(31U) | I2S_TCR5_FBT(format->bitWidth - 1);
-    }
-
-    /* Set mono or stereo */
-    base->TMR = (uint32_t)format->stereo;
-
-    /* Set data channel */
-    base->TCR3 &= ~I2S_TCR3_TCE_MASK;
-    base->TCR3 |= I2S_TCR3_TCE(1U << format->channel);
-
-#if defined(FSL_FEATURE_SAI_FIFO_COUNT) && (FSL_FEATURE_SAI_FIFO_COUNT > 1)
-    /* Set watermark */
-    base->TCR1 = format->watermark;
-#endif /* FSL_FEATURE_SAI_FIFO_COUNT  */
-}
-
-void SAI_RxSetFormat(I2S_Type *base,
-                     sai_transfer_format_t *format,
-                     uint32_t mclkSourceClockHz,
-                     uint32_t bclkSourceClockHz)
-{
-    uint32_t bclk = format->sampleRate_Hz * 32U * 2U;
-
-/* Compute the mclk */
-#if defined(FSL_FEATURE_SAI_HAS_MCLKDIV_REGISTER) && (FSL_FEATURE_SAI_HAS_MCLKDIV_REGISTER)
-    /* Check if master clock divider enabled */
-    if (base->MCR & I2S_MCR_MOE_MASK)
-    {
-        SAI_SetMasterClockDivider(base, format->masterClockHz, mclkSourceClockHz);
-    }
-#endif /* FSL_FEATURE_SAI_HAS_MCLKDIV_REGISTER */
-
-    /* Set bclk if needed */
-    if (base->RCR2 & I2S_RCR2_BCD_MASK)
-    {
-        base->RCR2 &= ~I2S_RCR2_DIV_MASK;
-        base->RCR2 |= I2S_RCR2_DIV((bclkSourceClockHz / bclk) / 2U - 1U);
-    }
-
-    /* Set bitWidth */
-    if (format->protocol == kSAI_BusRightJustified)
-    {
-        base->RCR5 = I2S_RCR5_WNW(31U) | I2S_RCR5_W0W(31U) | I2S_RCR5_FBT(31U);
-    }
-    else
-    {
-        base->RCR5 = I2S_RCR5_WNW(31U) | I2S_RCR5_W0W(31U) | I2S_RCR5_FBT(format->bitWidth - 1);
-    }
-
-    /* Set mono or stereo */
-    base->RMR = (uint32_t)format->stereo;
-
-    /* Set data channel */
-    base->RCR3 &= ~I2S_RCR3_RCE_MASK;
-    base->RCR3 |= I2S_RCR3_RCE(1U << format->channel);
-
-#if defined(FSL_FEATURE_SAI_FIFO_COUNT) && (FSL_FEATURE_SAI_FIFO_COUNT > 1)
-    /* Set watermark */
-    base->RCR1 = format->watermark;
-#endif /* FSL_FEATURE_SAI_FIFO_COUNT  */
-}
-
-void SAI_WriteBlocking(I2S_Type *base, uint32_t channel, uint32_t bitWidth, uint8_t *buffer, uint32_t size)
-{
-    uint32_t i = 0;
-    uint8_t bytesPerWord = bitWidth / 8U;
-
-    for (i = 0; i < size; i++)
-    {
-        /* Wait until it can write data */
-        while (!(base->TCSR & I2S_TCSR_FWF_MASK))
-        {
-        }
-
-        SAI_WriteNonBlocking(base, channel, bitWidth, buffer, bytesPerWord);
-        buffer += bytesPerWord;
-    }
-
-    /* Wait until the last data is sent */
-    while (!(base->TCSR & I2S_TCSR_FWF_MASK))
-    {
-    }
-}
-
-void SAI_ReadBlocking(I2S_Type *base, uint32_t channel, uint32_t bitWidth, uint8_t *buffer, uint32_t size)
-{
-    uint32_t i = 0;
-    uint8_t bytesPerWord = bitWidth / 8U;
-
-    for (i = 0; i < size; i++)
-    {
-        /* Wait until data is received */
-        while (!(base->RCSR & I2S_RCSR_FWF_MASK))
-        {
-        }
-
-        SAI_ReadNonBlocking(base, channel, bitWidth, buffer, bytesPerWord);
-        buffer += bytesPerWord;
-    }
-}
-
-void SAI_TransferTxCreateHandle(I2S_Type *base, sai_handle_t *handle, sai_transfer_callback_t callback, void *userData)
-{
-    assert(handle);
-
-    s_saiHandle[SAI_GetInstance(base)][0] = handle;
-
-    handle->callback = callback;
-    handle->userData = userData;
-
-    /* Enable Tx irq */
-    EnableIRQ(s_saiTxIRQ[SAI_GetInstance(base)]);
-}
-
-void SAI_TransferRxCreateHandle(I2S_Type *base, sai_handle_t *handle, sai_transfer_callback_t callback, void *userData)
-{
-    assert(handle);
-
-    s_saiHandle[SAI_GetInstance(base)][1] = handle;
-
-    handle->callback = callback;
-    handle->userData = userData;
-
-    /* Enable Rx irq */
-    EnableIRQ(s_saiRxIRQ[SAI_GetInstance(base)]);
-}
-
-status_t SAI_TransferTxSetFormat(I2S_Type *base,
-                                 sai_handle_t *handle,
-                                 sai_transfer_format_t *format,
-                                 uint32_t mclkSourceClockHz,
-                                 uint32_t bclkSourceClockHz)
-{
-    assert(handle);
-
-    if ((mclkSourceClockHz < format->sampleRate_Hz) || (bclkSourceClockHz < format->sampleRate_Hz))
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* Copy format to handle */
-    handle->bitWidth = format->bitWidth;
-#if defined(FSL_FEATURE_SAI_FIFO_COUNT) && (FSL_FEATURE_SAI_FIFO_COUNT > 1)
-    handle->watermark = format->watermark;
-#endif
-    handle->channel = format->channel;
-
-    SAI_TxSetFormat(base, format, mclkSourceClockHz, bclkSourceClockHz);
-
-    return kStatus_Success;
-}
-
-status_t SAI_TransferRxSetFormat(I2S_Type *base,
-                                 sai_handle_t *handle,
-                                 sai_transfer_format_t *format,
-                                 uint32_t mclkSourceClockHz,
-                                 uint32_t bclkSourceClockHz)
-{
-    assert(handle);
-
-    if ((mclkSourceClockHz < format->sampleRate_Hz) || (bclkSourceClockHz < format->sampleRate_Hz))
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* Copy format to handle */
-    handle->bitWidth = format->bitWidth;
-#if defined(FSL_FEATURE_SAI_FIFO_COUNT) && (FSL_FEATURE_SAI_FIFO_COUNT > 1)
-    handle->watermark = format->watermark;
-#endif
-    handle->channel = format->channel;
-
-    SAI_RxSetFormat(base, format, mclkSourceClockHz, bclkSourceClockHz);
-
-    return kStatus_Success;
-}
-
-status_t SAI_TransferSendNonBlocking(I2S_Type *base, sai_handle_t *handle, sai_transfer_t *xfer)
-{
-    assert(handle);
-
-    /* Check if the queue is full */
-    if (handle->saiQueue[handle->queueUser].data)
-    {
-        return kStatus_SAI_QueueFull;
-    }
-
-    /* Add into queue */
-    handle->transferSize[handle->queueUser] = xfer->dataSize;
-    handle->saiQueue[handle->queueUser].data = xfer->data;
-    handle->saiQueue[handle->queueUser].dataSize = xfer->dataSize;
-    handle->queueUser = (handle->queueUser + 1) % SAI_XFER_QUEUE_SIZE;
-
-    /* Set the state to busy */
-    handle->state = kSAI_Busy;
-
-/* Enable interrupt */
-#if defined(FSL_FEATURE_SAI_FIFO_COUNT) && (FSL_FEATURE_SAI_FIFO_COUNT > 1)
-    /* Use FIFO request interrupt and fifo error*/
-    SAI_TxEnableInterrupts(base, kSAI_FIFOErrorInterruptEnable | kSAI_FIFORequestInterruptEnable);
-#else
-    SAI_TxEnableInterrupts(base, kSAI_FIFOErrorInterruptEnable | kSAI_FIFOWarningInterruptEnable);
-#endif /* FSL_FEATURE_SAI_FIFO_COUNT */
-
-    /* Enable Tx transfer */
-    SAI_TxEnable(base, true);
-
-    return kStatus_Success;
-}
-
-status_t SAI_TransferReceiveNonBlocking(I2S_Type *base, sai_handle_t *handle, sai_transfer_t *xfer)
-{
-    assert(handle);
-
-    /* Check if the queue is full */
-    if (handle->saiQueue[handle->queueUser].data)
-    {
-        return kStatus_SAI_QueueFull;
-    }
-
-    /* Add into queue */
-    handle->transferSize[handle->queueUser] = xfer->dataSize;
-    handle->saiQueue[handle->queueUser].data = xfer->data;
-    handle->saiQueue[handle->queueUser].dataSize = xfer->dataSize;
-    handle->queueUser = (handle->queueUser + 1) % SAI_XFER_QUEUE_SIZE;
-
-    /* Set state to busy */
-    handle->state = kSAI_Busy;
-
-/* Enable interrupt */
-#if defined(FSL_FEATURE_SAI_FIFO_COUNT) && (FSL_FEATURE_SAI_FIFO_COUNT > 1)
-    /* Use FIFO request interrupt and fifo error*/
-    SAI_RxEnableInterrupts(base, kSAI_FIFOErrorInterruptEnable | kSAI_FIFORequestInterruptEnable);
-#else
-    SAI_RxEnableInterrupts(base, kSAI_FIFOErrorInterruptEnable | kSAI_FIFOWarningInterruptEnable);
-#endif /* FSL_FEATURE_SAI_FIFO_COUNT */
-
-    /* Enable Rx transfer */
-    SAI_RxEnable(base, true);
-
-    return kStatus_Success;
-}
-
-status_t SAI_TransferGetSendCount(I2S_Type *base, sai_handle_t *handle, size_t *count)
-{
-    assert(handle);
-
-    status_t status = kStatus_Success;
-
-    if (handle->state != kSAI_Busy)
-    {
-        status = kStatus_NoTransferInProgress;
-    }
-    else
-    {
-        *count = (handle->transferSize[handle->queueDriver] - handle->saiQueue[handle->queueDriver].dataSize);
-    }
-
-    return status;
-}
-
-status_t SAI_TransferGetReceiveCount(I2S_Type *base, sai_handle_t *handle, size_t *count)
-{
-    assert(handle);
-
-    status_t status = kStatus_Success;
-
-    if (handle->state != kSAI_Busy)
-    {
-        status = kStatus_NoTransferInProgress;
-    }
-    else
-    {
-        *count = (handle->transferSize[handle->queueDriver] - handle->saiQueue[handle->queueDriver].dataSize);
-    }
-
-    return status;
-}
-
-void SAI_TransferAbortSend(I2S_Type *base, sai_handle_t *handle)
-{
-    assert(handle);
-
-    /* Stop Tx transfer and disable interrupt */
-    SAI_TxEnable(base, false);
-#if defined(FSL_FEATURE_SAI_FIFO_COUNT) && (FSL_FEATURE_SAI_FIFO_COUNT > 1)
-    /* Use FIFO request interrupt and fifo error */
-    SAI_TxDisableInterrupts(base, kSAI_FIFOErrorInterruptEnable | kSAI_FIFORequestInterruptEnable);
-#else
-    SAI_TxDisableInterrupts(base, kSAI_FIFOErrorInterruptEnable | kSAI_FIFOWarningInterruptEnable);
-#endif /* FSL_FEATURE_SAI_FIFO_COUNT */
-
-    handle->state = kSAI_Idle;
-
-    /* Clear the queue */
-    memset(handle->saiQueue, 0, sizeof(sai_transfer_t) * SAI_XFER_QUEUE_SIZE);
-    handle->queueDriver = 0;
-    handle->queueUser = 0;
-}
-
-void SAI_TransferAbortReceive(I2S_Type *base, sai_handle_t *handle)
-{
-    assert(handle);
-
-    /* Stop Tx transfer and disable interrupt */
-    SAI_RxEnable(base, false);
-#if defined(FSL_FEATURE_SAI_FIFO_COUNT) && (FSL_FEATURE_SAI_FIFO_COUNT > 1)
-    /* Use FIFO request interrupt and fifo error */
-    SAI_RxDisableInterrupts(base, kSAI_FIFOErrorInterruptEnable | kSAI_FIFORequestInterruptEnable);
-#else
-    SAI_RxDisableInterrupts(base, kSAI_FIFOErrorInterruptEnable | kSAI_FIFOWarningInterruptEnable);
-#endif /* FSL_FEATURE_SAI_FIFO_COUNT */
-
-    handle->state = kSAI_Idle;
-
-    /* Clear the queue */
-    memset(handle->saiQueue, 0, sizeof(sai_transfer_t) * SAI_XFER_QUEUE_SIZE);
-    handle->queueDriver = 0;
-    handle->queueUser = 0;
-}
-
-void SAI_TransferTxHandleIRQ(I2S_Type *base, sai_handle_t *handle)
-{
-    assert(handle);
-
-    uint8_t *buffer = handle->saiQueue[handle->queueDriver].data;
-    uint8_t dataSize = handle->bitWidth / 8U;
-
-    /* Handle Error */
-    if (base->TCSR & I2S_TCSR_FEF_MASK)
-    {
-        /* Clear FIFO error flag to continue transfer */
-        SAI_TxClearStatusFlags(base, kSAI_FIFOErrorFlag);
-
-        /* Call the callback */
-        if (handle->callback)
-        {
-            (handle->callback)(base, handle, kStatus_SAI_TxError, handle->userData);
-        }
-    }
-
-/* Handle transfer */
-#if defined(FSL_FEATURE_SAI_FIFO_COUNT) && (FSL_FEATURE_SAI_FIFO_COUNT > 1)
-    if (base->TCSR & I2S_TCSR_FRF_MASK)
-    {
-        /* Judge if the data need to transmit is less than space */
-        uint8_t size = MIN((handle->saiQueue[handle->queueDriver].dataSize),
-                           (size_t)((FSL_FEATURE_SAI_FIFO_COUNT - handle->watermark) * dataSize));
-
-        /* Copy the data from sai buffer to FIFO */
-        SAI_WriteNonBlocking(base, handle->channel, handle->bitWidth, buffer, size);
-
-        /* Update the internal counter */
-        handle->saiQueue[handle->queueDriver].dataSize -= size;
-        handle->saiQueue[handle->queueDriver].data += size;
-    }
-#else
-    if (base->TCSR & I2S_TCSR_FWF_MASK)
-    {
-        uint8_t size = MIN((handle->saiQueue[handle->queueDriver].dataSize), dataSize);
-
-        SAI_WriteNonBlocking(base, handle->channel, handle->bitWidth, buffer, size);
-
-        /* Update internal counter */
-        handle->saiQueue[handle->queueDriver].dataSize -= size;
-        handle->saiQueue[handle->queueDriver].data += size;
-    }
-#endif /* FSL_FEATURE_SAI_FIFO_COUNT */
-
-    /* If finished a blcok, call the callback function */
-    if (handle->saiQueue[handle->queueDriver].dataSize == 0U)
-    {
-        memset(&handle->saiQueue[handle->queueDriver], 0, sizeof(sai_transfer_t));
-        handle->queueDriver = (handle->queueDriver + 1) % SAI_XFER_QUEUE_SIZE;
-        if (handle->callback)
-        {
-            (handle->callback)(base, handle, kStatus_SAI_TxIdle, handle->userData);
-        }
-    }
-
-    /* If all data finished, just stop the transfer */
-    if (handle->saiQueue[handle->queueDriver].data == NULL)
-    {
-        SAI_TransferAbortSend(base, handle);
-    }
-}
-
-void SAI_TransferRxHandleIRQ(I2S_Type *base, sai_handle_t *handle)
-{
-    assert(handle);
-
-    uint8_t *buffer = handle->saiQueue[handle->queueDriver].data;
-    uint8_t dataSize = handle->bitWidth / 8U;
-
-    /* Handle Error */
-    if (base->RCSR & I2S_RCSR_FEF_MASK)
-    {
-        /* Clear FIFO error flag to continue transfer */
-        SAI_RxClearStatusFlags(base, kSAI_FIFOErrorFlag);
-
-        /* Call the callback */
-        if (handle->callback)
-        {
-            (handle->callback)(base, handle, kStatus_SAI_RxError, handle->userData);
-        }
-    }
-
-/* Handle transfer */
-#if defined(FSL_FEATURE_SAI_FIFO_COUNT) && (FSL_FEATURE_SAI_FIFO_COUNT > 1)
-    if (base->RCSR & I2S_RCSR_FRF_MASK)
-    {
-        /* Judge if the data need to transmit is less than space */
-        uint8_t size = MIN((handle->saiQueue[handle->queueDriver].dataSize), (handle->watermark * dataSize));
-
-        /* Copy the data from sai buffer to FIFO */
-        SAI_ReadNonBlocking(base, handle->channel, handle->bitWidth, buffer, size);
-
-        /* Update the internal counter */
-        handle->saiQueue[handle->queueDriver].dataSize -= size;
-        handle->saiQueue[handle->queueDriver].data += size;
-    }
-#else
-    if (base->RCSR & I2S_RCSR_FWF_MASK)
-    {
-        uint8_t size = MIN((handle->saiQueue[handle->queueDriver].dataSize), dataSize);
-
-        SAI_ReadNonBlocking(base, handle->channel, handle->bitWidth, buffer, size);
-
-        /* Update internal state */
-        handle->saiQueue[handle->queueDriver].dataSize -= size;
-        handle->saiQueue[handle->queueDriver].data += size;
-    }
-#endif /* FSL_FEATURE_SAI_FIFO_COUNT */
-
-    /* If finished a blcok, call the callback function */
-    if (handle->saiQueue[handle->queueDriver].dataSize == 0U)
-    {
-        memset(&handle->saiQueue[handle->queueDriver], 0, sizeof(sai_transfer_t));
-        handle->queueDriver = (handle->queueDriver + 1) % SAI_XFER_QUEUE_SIZE;
-        if (handle->callback)
-        {
-            (handle->callback)(base, handle, kStatus_SAI_RxIdle, handle->userData);
-        }
-    }
-
-    /* If all data finished, just stop the transfer */
-    if (handle->saiQueue[handle->queueDriver].data == NULL)
-    {
-        SAI_TransferAbortReceive(base, handle);
-    }
-}
-
-#if defined(I2S0)
-#if defined(FSL_FEATURE_SAI_INT_SOURCE_NUM) && (FSL_FEATURE_SAI_INT_SOURCE_NUM == 1)
-void I2S0_DriverIRQHandler(void)
-{
-    if ((s_saiHandle[0][1]) && ((I2S0->RCSR & kSAI_FIFOWarningFlag) || (I2S0->RCSR & kSAI_FIFOErrorFlag)))
-    {
-        SAI_TransferRxHandleIRQ(I2S0, s_saiHandle[0][1]);
-    }
-    if ((s_saiHandle[0][0]) && ((I2S0->TCSR & kSAI_FIFOWarningFlag) || (I2S0->TCSR & kSAI_FIFOErrorFlag)))
-    {
-        SAI_TransferTxHandleIRQ(I2S0, s_saiHandle[0][0]);
-    }
-}
-#else
-void I2S0_Tx_DriverIRQHandler(void)
-{
-    assert(s_saiHandle[0][0]);
-    SAI_TransferTxHandleIRQ(I2S0, s_saiHandle[0][0]);
-}
-
-void I2S0_Rx_DriverIRQHandler(void)
-{
-    assert(s_saiHandle[0][1]);
-    SAI_TransferRxHandleIRQ(I2S0, s_saiHandle[0][1]);
-}
-#endif /* FSL_FEATURE_SAI_INT_SOURCE_NUM */
-#endif /* I2S0*/
-
-#if defined(I2S1)
-void I2S1_Tx_DriverIRQHandler(void)
-{
-    assert(s_saiHandle[1][0]);
-    SAI_TransferTxHandleIRQ(I2S1, s_saiHandle[1][0]);
-}
-
-void I2S1_Rx_DriverIRQHandler(void)
-{
-    assert(s_saiHandle[1][1]);
-    SAI_TransferRxHandleIRQ(I2S1, s_saiHandle[1][1]);
-}
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_sai.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,850 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _FSL_SAI_H_
-#define _FSL_SAI_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup sai
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-#define FSL_SAI_DRIVER_VERSION (MAKE_VERSION(2, 1, 0)) /*!< Version 2.1.0 */
-/*@}*/
-
-/*! @brief SAI return status*/
-enum _sai_status_t
-{
-    kStatus_SAI_TxBusy = MAKE_STATUS(kStatusGroup_SAI, 0),    /*!< SAI Tx is busy. */
-    kStatus_SAI_RxBusy = MAKE_STATUS(kStatusGroup_SAI, 1),    /*!< SAI Rx is busy. */
-    kStatus_SAI_TxError = MAKE_STATUS(kStatusGroup_SAI, 2),   /*!< SAI Tx FIFO error. */
-    kStatus_SAI_RxError = MAKE_STATUS(kStatusGroup_SAI, 3),   /*!< SAI Rx FIFO error. */
-    kStatus_SAI_QueueFull = MAKE_STATUS(kStatusGroup_SAI, 4), /*!< SAI transfer queue is full. */
-    kStatus_SAI_TxIdle = MAKE_STATUS(kStatusGroup_SAI, 5),    /*!< SAI Tx is idle */
-    kStatus_SAI_RxIdle = MAKE_STATUS(kStatusGroup_SAI, 6)     /*!< SAI Rx is idle */
-};
-
-/*! @brief Define the SAI bus type */
-typedef enum _sai_protocol
-{
-    kSAI_BusLeftJustified = 0x0U, /*!< Uses left justified format.*/
-    kSAI_BusRightJustified,       /*!< Uses right justified format. */
-    kSAI_BusI2S,                  /*!< Uses I2S format. */
-    kSAI_BusPCMA,                 /*!< Uses I2S PCM A format.*/
-    kSAI_BusPCMB                  /*!< Uses I2S PCM B format. */
-} sai_protocol_t;
-
-/*! @brief Master or slave mode */
-typedef enum _sai_master_slave
-{
-    kSAI_Master = 0x0U, /*!< Master mode */
-    kSAI_Slave = 0x1U   /*!< Slave mode */
-} sai_master_slave_t;
-
-/*! @brief Mono or stereo audio format */
-typedef enum _sai_mono_stereo
-{
-    kSAI_Stereo = 0x0U, /*!< Stereo sound. */
-    kSAI_MonoLeft,      /*!< Only left channel have sound. */
-    kSAI_MonoRight      /*!< Only Right channel have sound. */
-} sai_mono_stereo_t;
-
-/*! @brief Synchronous or asynchronous mode */
-typedef enum _sai_sync_mode
-{
-    kSAI_ModeAsync = 0x0U,    /*!< Asynchronous mode */
-    kSAI_ModeSync,            /*!< Synchronous mode (with receiver or transmit) */
-    kSAI_ModeSyncWithOtherTx, /*!< Synchronous with another SAI transmit */
-    kSAI_ModeSyncWithOtherRx  /*!< Synchronous with another SAI receiver */
-} sai_sync_mode_t;
-
-/*! @brief Mater clock source */
-typedef enum _sai_mclk_source
-{
-    kSAI_MclkSourceSysclk = 0x0U, /*!< Master clock from the system clock */
-    kSAI_MclkSourceSelect1,       /*!< Master clock from source 1 */
-    kSAI_MclkSourceSelect2,       /*!< Master clock from source 2 */
-    kSAI_MclkSourceSelect3        /*!< Master clock from source 3 */
-} sai_mclk_source_t;
-
-/*! @brief Bit clock source */
-typedef enum _sai_bclk_source
-{
-    kSAI_BclkSourceBusclk = 0x0U, /*!< Bit clock using bus clock */
-    kSAI_BclkSourceMclkDiv,       /*!< Bit clock using master clock divider */
-    kSAI_BclkSourceOtherSai0,     /*!< Bit clock from other SAI device  */
-    kSAI_BclkSourceOtherSai1      /*!< Bit clock from other SAI device */
-} sai_bclk_source_t;
-
-/*! @brief The SAI interrupt enable flag */
-enum _sai_interrupt_enable_t
-{
-    kSAI_WordStartInterruptEnable =
-        I2S_TCSR_WSIE_MASK, /*!< Word start flag, means the first word in a frame detected */
-    kSAI_SyncErrorInterruptEnable = I2S_TCSR_SEIE_MASK,   /*!< Sync error flag, means the sync error is detected */
-    kSAI_FIFOWarningInterruptEnable = I2S_TCSR_FWIE_MASK, /*!< FIFO warning flag, means the FIFO is empty */
-    kSAI_FIFOErrorInterruptEnable = I2S_TCSR_FEIE_MASK,   /*!< FIFO error flag */
-#if defined(FSL_FEATURE_SAI_FIFO_COUNT) && (FSL_FEATURE_SAI_FIFO_COUNT > 1)
-    kSAI_FIFORequestInterruptEnable = I2S_TCSR_FRIE_MASK, /*!< FIFO request, means reached watermark */
-#endif                                                    /* FSL_FEATURE_SAI_FIFO_COUNT */
-};
-
-/*! @brief The DMA request sources */
-enum _sai_dma_enable_t
-{
-    kSAI_FIFOWarningDMAEnable = I2S_TCSR_FWDE_MASK, /*!< FIFO warning caused by the DMA request */
-#if defined(FSL_FEATURE_SAI_FIFO_COUNT) && (FSL_FEATURE_SAI_FIFO_COUNT > 1)
-    kSAI_FIFORequestDMAEnable = I2S_TCSR_FRDE_MASK, /*!< FIFO request caused by the DMA request */
-#endif                                              /* FSL_FEATURE_SAI_FIFO_COUNT */
-};
-
-/*! @brief The SAI status flag */
-enum _sai_flags
-{
-    kSAI_WordStartFlag = I2S_TCSR_WSF_MASK, /*!< Word start flag, means the first word in a frame detected */
-    kSAI_SyncErrorFlag = I2S_TCSR_SEF_MASK, /*!< Sync error flag, means the sync error is detected */
-    kSAI_FIFOErrorFlag = I2S_TCSR_FEF_MASK, /*!< FIFO error flag */
-#if defined(FSL_FEATURE_SAI_FIFO_COUNT) && (FSL_FEATURE_SAI_FIFO_COUNT > 1)
-    kSAI_FIFORequestFlag = I2S_TCSR_FRF_MASK, /*!< FIFO request flag. */
-#endif                                        /* FSL_FEATURE_SAI_FIFO_COUNT */
-    kSAI_FIFOWarningFlag = I2S_TCSR_FWF_MASK, /*!< FIFO warning flag */
-};
-
-/*! @brief The reset type */
-typedef enum _sai_reset_type
-{
-    kSAI_ResetTypeSoftware = I2S_TCSR_SR_MASK,          /*!< Software reset, reset the logic state */
-    kSAI_ResetTypeFIFO = I2S_TCSR_FR_MASK,              /*!< FIFO reset, reset the FIFO read and write pointer */
-    kSAI_ResetAll = I2S_TCSR_SR_MASK | I2S_TCSR_FR_MASK /*!< All reset. */
-} sai_reset_type_t;
-
-#if defined(FSL_FEATURE_SAI_HAS_FIFO_PACKING) && FSL_FEATURE_SAI_HAS_FIFO_PACKING
-/*!
- * @brief The SAI packing mode
- * The mode includes 8 bit and 16 bit packing.
- */
-typedef enum _sai_fifo_packing
-{
-    kSAI_FifoPackingDisabled = 0x0U, /*!< Packing disabled */
-    kSAI_FifoPacking8bit = 0x2U,     /*!< 8 bit packing enabled */
-    kSAI_FifoPacking16bit = 0x3U     /*!< 16bit packing enabled */
-} sai_fifo_packing_t;
-#endif /* FSL_FEATURE_SAI_HAS_FIFO_PACKING */
-
-/*! @brief SAI user configure structure */
-typedef struct _sai_config
-{
-    sai_protocol_t protocol;  /*!< Audio bus protocol in SAI */
-    sai_sync_mode_t syncMode; /*!< SAI sync mode, control Tx/Rx clock sync */
-#if defined(FSL_FEATURE_SAI_HAS_MCR) && (FSL_FEATURE_SAI_HAS_MCR)
-    bool mclkOutputEnable;          /*!< Master clock output enable, true means master clock divider enabled */
-#endif                              /* FSL_FEATURE_SAI_HAS_MCR */
-    sai_mclk_source_t mclkSource;   /*!< Master Clock source */
-    sai_bclk_source_t bclkSource;   /*!< Bit Clock source */
-    sai_master_slave_t masterSlave; /*!< Master or slave */
-} sai_config_t;
-
-/*!@brief SAI transfer queue size, user can refine it according to use case. */
-#define SAI_XFER_QUEUE_SIZE (4)
-
-/*! @brief Audio sample rate */
-typedef enum _sai_sample_rate
-{
-    kSAI_SampleRate8KHz = 8000U,     /*!< Sample rate 8000Hz */
-    kSAI_SampleRate11025Hz = 11025U, /*!< Sample rate 11025Hz */
-    kSAI_SampleRate12KHz = 12000U,   /*!< Sample rate 12000Hz */
-    kSAI_SampleRate16KHz = 16000U,   /*!< Sample rate 16000Hz */
-    kSAI_SampleRate22050Hz = 22050U, /*!< Sample rate 22050Hz */
-    kSAI_SampleRate24KHz = 24000U,   /*!< Sample rate 24000Hz */
-    kSAI_SampleRate32KHz = 32000U,   /*!< Sample rate 32000Hz */
-    kSAI_SampleRate44100Hz = 44100U, /*!< Sample rate 44100Hz */
-    kSAI_SampleRate48KHz = 48000U,   /*!< Sample rate 48000Hz */
-    kSAI_SampleRate96KHz = 96000U    /*!< Sample rate 96000Hz */
-} sai_sample_rate_t;
-
-/*! @brief Audio word width */
-typedef enum _sai_word_width
-{
-    kSAI_WordWidth8bits = 8U,   /*!< Audio data width 8 bits */
-    kSAI_WordWidth16bits = 16U, /*!< Audio data width 16 bits */
-    kSAI_WordWidth24bits = 24U, /*!< Audio data width 24 bits */
-    kSAI_WordWidth32bits = 32U  /*!< Audio data width 32 bits */
-} sai_word_width_t;
-
-/*! @brief sai transfer format */
-typedef struct _sai_transfer_format
-{
-    uint32_t sampleRate_Hz;   /*!< Sample rate of audio data */
-    uint32_t bitWidth;        /*!< Data length of audio data, usually 8/16/24/32bits */
-    sai_mono_stereo_t stereo; /*!< Mono or stereo */
-    uint32_t masterClockHz;   /*!< Master clock frequency in Hz */
-#if defined(FSL_FEATURE_SAI_FIFO_COUNT) && (FSL_FEATURE_SAI_FIFO_COUNT > 1)
-    uint8_t watermark;       /*!< Watermark value */
-#endif                       /* FSL_FEATURE_SAI_FIFO_COUNT */
-    uint8_t channel;         /*!< Data channel used in transfer.*/
-    sai_protocol_t protocol; /*!< Which audio protocol used */
-} sai_transfer_format_t;
-
-/*! @brief SAI transfer structure */
-typedef struct _sai_transfer
-{
-    uint8_t *data;   /*!< Data start address to transfer. */
-    size_t dataSize; /*!< Transfer size. */
-} sai_transfer_t;
-
-typedef struct _sai_handle sai_handle_t;
-
-/*! @brief SAI transfer callback prototype */
-typedef void (*sai_transfer_callback_t)(I2S_Type *base, sai_handle_t *handle, status_t status, void *userData);
-
-/*! @brief SAI handle structure */
-struct _sai_handle
-{
-    uint32_t state;                               /*!< Transfer status */
-    sai_transfer_callback_t callback;             /*!< Callback function called at transfer event*/
-    void *userData;                               /*!< Callback parameter passed to callback function*/
-    uint8_t bitWidth;                             /*!< Bit width for transfer, 8/16/24/32bits */
-    uint8_t channel;                              /*!< Transfer channel */
-    sai_transfer_t saiQueue[SAI_XFER_QUEUE_SIZE]; /*!< Transfer queue storing queued transfer */
-    size_t transferSize[SAI_XFER_QUEUE_SIZE];     /*!< Data bytes need to transfer */
-    volatile uint8_t queueUser;                   /*!< Index for user to queue transfer */
-    volatile uint8_t queueDriver;                 /*!< Index for driver to get the transfer data and size */
-#if defined(FSL_FEATURE_SAI_FIFO_COUNT) && (FSL_FEATURE_SAI_FIFO_COUNT > 1)
-    uint8_t watermark; /*!< Watermark value */
-#endif
-};
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif /*_cplusplus*/
-
-/*!
- * @name Initialization and deinitialization
- * @{
- */
-
-/*!
- * @brief Initializes the SAI Tx peripheral.
- *
- * Ungates the SAI clock, resets the module, and configures SAI Tx with a configuration structure.
- * The configuration structure can be custom filled or set with default values by
- * SAI_TxGetDefaultConfig().
- *
- * @note  This API should be called at the beginning of the application to use
- * the SAI driver. Otherwise, accessing the SAIM module can cause a hard fault
- * because the clock is not enabled.
- *
- * @param base SAI base pointer
- * @param config SAI configure structure.
-*/
-void SAI_TxInit(I2S_Type *base, const sai_config_t *config);
-
-/*!
- * @brief Initializes the the SAI Rx peripheral.
- *
- * Ungates the SAI clock, resets the module, and configures the SAI Rx with a configuration structure.
- * The configuration structure can be custom filled or set with default values by
- * SAI_RxGetDefaultConfig().
- *
- * @note  This API should be called at the beginning of the application to use
- * the SAI driver. Otherwise, accessing the SAI module can cause a hard fault
- * because the clock is not enabled.
- *
- * @param base SAI base pointer
- * @param config SAI configure structure.
- */
-void SAI_RxInit(I2S_Type *base, const sai_config_t *config);
-
-/*!
- * @brief  Sets the SAI Tx configuration structure to default values.
- *
- * This API initializes the configuration structure for use in SAI_TxConfig().
- * The initialized structure can remain unchanged in SAI_TxConfig(), or it can be modified
- *  before calling SAI_TxConfig().
- * Example:
-   @code
-   sai_config_t config;
-   SAI_TxGetDefaultConfig(&config);
-   @endcode
- *
- * @param config pointer to master configuration structure
- */
-void SAI_TxGetDefaultConfig(sai_config_t *config);
-
-/*!
- * @brief  Sets the SAI Rx configuration structure to default values.
- *
- * This API initializes the configuration structure for use in SAI_RxConfig().
- * The initialized structure can remain unchanged in SAI_RxConfig() or it can be modified
- *  before calling SAI_RxConfig().
- * Example:
-   @code
-   sai_config_t config;
-   SAI_RxGetDefaultConfig(&config);
-   @endcode
- *
- * @param config pointer to master configuration structure
- */
-void SAI_RxGetDefaultConfig(sai_config_t *config);
-
-/*!
- * @brief De-initializes the SAI peripheral.
- *
- * This API gates the SAI clock. The SAI module can't operate unless SAI_TxInit
- * or SAI_RxInit is called to enable the clock.
- *
- * @param base SAI base pointer
-*/
-void SAI_Deinit(I2S_Type *base);
-
-/*!
- * @brief Resets the SAI Tx.
- *
- * This function enables the software reset and FIFO reset of SAI Tx. After reset, clear the reset bit.
- *
- * @param base SAI base pointer
- */
-void SAI_TxReset(I2S_Type *base);
-
-/*!
- * @brief Resets the SAI Rx.
- *
- * This function enables the software reset and FIFO reset of SAI Rx. After reset, clear the reset bit.
- *
- * @param base SAI base pointer
- */
-void SAI_RxReset(I2S_Type *base);
-
-/*!
- * @brief Enables/disables SAI Tx.
- *
- * @param base SAI base pointer
- * @param enable True means enable SAI Tx, false means disable.
- */
-void SAI_TxEnable(I2S_Type *base, bool enable);
-
-/*!
- * @brief Enables/disables SAI Rx.
- *
- * @param base SAI base pointer
- * @param enable True means enable SAI Rx, false means disable.
- */
-void SAI_RxEnable(I2S_Type *base, bool enable);
-
-/*! @} */
-
-/*!
- * @name Status
- * @{
- */
-
-/*!
- * @brief Gets the SAI Tx status flag state.
- *
- * @param base SAI base pointer
- * @return SAI Tx status flag value. Use the Status Mask to get the status value needed.
- */
-static inline uint32_t SAI_TxGetStatusFlag(I2S_Type *base)
-{
-    return base->TCSR;
-}
-
-/*!
- * @brief Clears the SAI Tx status flag state.
- *
- * @param base SAI base pointer
- * @param mask State mask. It can be a combination of the following source if defined:
- *        @arg kSAI_WordStartFlag
- *        @arg kSAI_SyncErrorFlag
- *        @arg kSAI_FIFOErrorFlag
- */
-static inline void SAI_TxClearStatusFlags(I2S_Type *base, uint32_t mask)
-{
-    base->TCSR = ((base->TCSR & 0xFFE3FFFFU) | mask);
-}
-
-/*!
- * @brief Gets the SAI Tx status flag state.
- *
- * @param base SAI base pointer
- * @return SAI Rx status flag value. Use the Status Mask to get the status value needed.
- */
-static inline uint32_t SAI_RxGetStatusFlag(I2S_Type *base)
-{
-    return base->RCSR;
-}
-
-/*!
- * @brief Clears the SAI Rx status flag state.
- *
- * @param base SAI base pointer
- * @param mask State mask. It can be a combination of the following source if defined:
- *        @arg kSAI_WordStartFlag
- *        @arg kSAI_SyncErrorFlag
- *        @arg kSAI_FIFOErrorFlag
- */
-static inline void SAI_RxClearStatusFlags(I2S_Type *base, uint32_t mask)
-{
-    base->RCSR = ((base->RCSR & 0xFFE3FFFFU) | mask);
-}
-
-/*! @} */
-
-/*!
- * @name Interrupts
- * @{
- */
-
-/*!
- * @brief Enables SAI Tx interrupt requests.
- *
- * @param base SAI base pointer
- * @param mask interrupt source
- *     The parameter can be a combination of the following source if defined:
- *     @arg kSAI_WordStartInterruptEnable
- *     @arg kSAI_SyncErrorInterruptEnable
- *     @arg kSAI_FIFOWarningInterruptEnable
- *     @arg kSAI_FIFORequestInterruptEnable
- *     @arg kSAI_FIFOErrorInterruptEnable
- */
-static inline void SAI_TxEnableInterrupts(I2S_Type *base, uint32_t mask)
-{
-    base->TCSR = ((base->TCSR & 0xFFE3FFFFU) | mask);
-}
-
-/*!
- * @brief Enables SAI Rx interrupt requests.
- *
- * @param base SAI base pointer
- * @param mask interrupt source
- *     The parameter can be a combination of the following source if defined:
- *     @arg kSAI_WordStartInterruptEnable
- *     @arg kSAI_SyncErrorInterruptEnable
- *     @arg kSAI_FIFOWarningInterruptEnable
- *     @arg kSAI_FIFORequestInterruptEnable
- *     @arg kSAI_FIFOErrorInterruptEnable
- */
-static inline void SAI_RxEnableInterrupts(I2S_Type *base, uint32_t mask)
-{
-    base->RCSR = ((base->RCSR & 0xFFE3FFFFU) | mask);
-}
-
-/*!
- * @brief Disables SAI Tx interrupt requests.
- *
- * @param base SAI base pointer
- * @param mask interrupt source
- *     The parameter can be a combination of the following source if defined:
- *     @arg kSAI_WordStartInterruptEnable
- *     @arg kSAI_SyncErrorInterruptEnable
- *     @arg kSAI_FIFOWarningInterruptEnable
- *     @arg kSAI_FIFORequestInterruptEnable
- *     @arg kSAI_FIFOErrorInterruptEnable
- */
-static inline void SAI_TxDisableInterrupts(I2S_Type *base, uint32_t mask)
-{
-    base->TCSR = ((base->TCSR & 0xFFE3FFFFU) & (~mask));
-}
-
-/*!
- * @brief Disables SAI Rx interrupt requests.
- *
- * @param base SAI base pointer
- * @param mask interrupt source
- *     The parameter can be a combination of the following source if defined:
- *     @arg kSAI_WordStartInterruptEnable
- *     @arg kSAI_SyncErrorInterruptEnable
- *     @arg kSAI_FIFOWarningInterruptEnable
- *     @arg kSAI_FIFORequestInterruptEnable
- *     @arg kSAI_FIFOErrorInterruptEnable
- */
-static inline void SAI_RxDisableInterrupts(I2S_Type *base, uint32_t mask)
-{
-    base->RCSR = ((base->RCSR & 0xFFE3FFFFU) & (~mask));
-}
-
-/*! @} */
-
-/*!
- * @name DMA Control
- * @{
- */
-
-/*!
- * @brief Enables/disables SAI Tx DMA requests.
- * @param base SAI base pointer
- * @param mask DMA source
- *     The parameter can be combination of the following source if defined:
- *     @arg kSAI_FIFOWarningDMAEnable
- *     @arg kSAI_FIFORequestDMAEnable
- * @param enable True means enable DMA, false means disable DMA.
- */
-static inline void SAI_TxEnableDMA(I2S_Type *base, uint32_t mask, bool enable)
-{
-    if (enable)
-    {
-        base->TCSR = ((base->TCSR & 0xFFE3FFFFU) | mask);
-    }
-    else
-    {
-        base->TCSR = ((base->TCSR & 0xFFE3FFFFU) & (~mask));
-    }
-}
-
-/*!
- * @brief Enables/disables SAI Rx DMA requests.
- * @param base SAI base pointer
- * @param mask DMA source
- *     The parameter can be a combination of the following source if defined:
- *     @arg kSAI_FIFOWarningDMAEnable
- *     @arg kSAI_FIFORequestDMAEnable
- * @param enable True means enable DMA, false means disable DMA.
- */
-static inline void SAI_RxEnableDMA(I2S_Type *base, uint32_t mask, bool enable)
-{
-    if (enable)
-    {
-        base->RCSR = ((base->RCSR & 0xFFE3FFFFU) | mask);
-    }
-    else
-    {
-        base->RCSR = ((base->RCSR & 0xFFE3FFFFU) & (~mask));
-    }
-}
-
-/*!
- * @brief  Gets the SAI Tx data register address.
- *
- * This API is used to provide a transfer address for SAI DMA transfer configuration.
- *
- * @param base SAI base pointer.
- * @param channel Which data channel used.
- * @return data register address.
- */
-static inline uint32_t SAI_TxGetDataRegisterAddress(I2S_Type *base, uint32_t channel)
-{
-    return (uint32_t)(&(base->TDR)[channel]);
-}
-
-/*!
- * @brief  Gets the SAI Rx data register address.
- *
- * This API is used to provide a transfer address for SAI DMA transfer configuration.
- *
- * @param base SAI base pointer.
- * @param channel Which data channel used.
- * @return data register address.
- */
-static inline uint32_t SAI_RxGetDataRegisterAddress(I2S_Type *base, uint32_t channel)
-{
-    return (uint32_t)(&(base->RDR)[channel]);
-}
-
-/*! @} */
-
-/*!
- * @name Bus Operations
- * @{
- */
-
-/*!
- * @brief Configures the SAI Tx audio format.
- *
- * The audio format can be changed at run-time. This function configures the sample rate and audio data
- * format to be transferred.
- *
- * @param base SAI base pointer.
- * @param format Pointer to SAI audio data format structure.
- * @param mclkSourceClockHz SAI master clock source frequency in Hz.
- * @param bclkSourceClockHz SAI bit clock source frequency in Hz. If bit clock source is master
- * clock, this value should equals to masterClockHz in format.
-*/
-void SAI_TxSetFormat(I2S_Type *base,
-                     sai_transfer_format_t *format,
-                     uint32_t mclkSourceClockHz,
-                     uint32_t bclkSourceClockHz);
-
-/*!
- * @brief Configures the SAI Rx audio format.
- *
- * The audio format can be changed at run-time. This function configures the sample rate and audio data
- * format to be transferred.
- *
- * @param base SAI base pointer.
- * @param format Pointer to SAI audio data format structure.
- * @param mclkSourceClockHz SAI master clock source frequency in Hz.
- * @param bclkSourceClockHz SAI bit clock source frequency in Hz. If bit clock source is master
- * clock, this value should equals to masterClockHz in format.
-*/
-void SAI_RxSetFormat(I2S_Type *base,
-                     sai_transfer_format_t *format,
-                     uint32_t mclkSourceClockHz,
-                     uint32_t bclkSourceClockHz);
-
-/*!
- * @brief Sends data using a blocking method.
- *
- * @note This function blocks by polling until data is ready to be sent.
- *
- * @param base SAI base pointer.
- * @param channel Data channel used.
- * @param bitWidth How many bits in a audio word, usually 8/16/24/32 bits.
- * @param buffer Pointer to the data to be written.
- * @param size Bytes to be written.
- */
-void SAI_WriteBlocking(I2S_Type *base, uint32_t channel, uint32_t bitWidth, uint8_t *buffer, uint32_t size);
-
-/*!
- * @brief Writes data into SAI FIFO.
- *
- * @param base SAI base pointer.
- * @param channel Data channel used.
- * @param data Data needs to be written.
- */
-static inline void SAI_WriteData(I2S_Type *base, uint32_t channel, uint32_t data)
-{
-    base->TDR[channel] = data;
-}
-
-/*!
- * @brief Receives data using a blocking method.
- *
- * @note This function blocks by polling until data is ready to be sent.
- *
- * @param base SAI base pointer.
- * @param channel Data channel used.
- * @param bitWidth How many bits in a audio word, usually 8/16/24/32 bits.
- * @param buffer Pointer to the data to be read.
- * @param size Bytes to be read.
- */
-void SAI_ReadBlocking(I2S_Type *base, uint32_t channel, uint32_t bitWidth, uint8_t *buffer, uint32_t size);
-
-/*!
- * @brief Reads data from SAI FIFO.
- *
- * @param base SAI base pointer.
- * @param channel Data channel used.
- * @return Data in SAI FIFO.
- */
-static inline uint32_t SAI_ReadData(I2S_Type *base, uint32_t channel)
-{
-    return base->RDR[channel];
-}
-
-/*! @} */
-
-/*!
- * @name Transactional
- * @{
- */
-
-/*!
- * @brief Initializes the SAI Tx handle.
- *
- * This function initializes the Tx handle for SAI Tx transactional APIs. Call
- * this function one time to get the handle initialized.
- *
- * @param base SAI base pointer
- * @param handle SAI handle pointer.
- * @param callback pointer to user callback function
- * @param userData user parameter passed to the callback function
- */
-void SAI_TransferTxCreateHandle(I2S_Type *base, sai_handle_t *handle, sai_transfer_callback_t callback, void *userData);
-
-/*!
- * @brief Initializes the SAI Rx handle.
- *
- * This function initializes the Rx handle for SAI Rx transactional APIs. Call
- * this function one time to get the handle initialized.
- *
- * @param base SAI base pointer.
- * @param handle SAI handle pointer.
- * @param callback pointer to user callback function
- * @param userData user parameter passed to the callback function
- */
-void SAI_TransferRxCreateHandle(I2S_Type *base, sai_handle_t *handle, sai_transfer_callback_t callback, void *userData);
-
-/*!
- * @brief Configures the SAI Tx audio format.
- *
- * The audio format can be changed at run-time. This function configures the sample rate and audio data
- * format to be transferred.
- *
- * @param base SAI base pointer.
- * @param handle SAI handle pointer.
- * @param format Pointer to SAI audio data format structure.
- * @param mclkSourceClockHz SAI master clock source frequency in Hz.
- * @param bclkSourceClockHz SAI bit clock source frequency in Hz. If a bit clock source is a master
- * clock, this value should equal to masterClockHz in format.
- * @return Status of this function. Return value is one of status_t.
-*/
-status_t SAI_TransferTxSetFormat(I2S_Type *base,
-                                 sai_handle_t *handle,
-                                 sai_transfer_format_t *format,
-                                 uint32_t mclkSourceClockHz,
-                                 uint32_t bclkSourceClockHz);
-
-/*!
- * @brief Configures the SAI Rx audio format.
- *
- * The audio format can be changed at run-time. This function configures the sample rate and audio data
- * format to be transferred.
- *
- * @param base SAI base pointer.
- * @param handle SAI handle pointer.
- * @param format Pointer to SAI audio data format structure.
- * @param mclkSourceClockHz SAI master clock source frequency in Hz.
- * @param bclkSourceClockHz SAI bit clock source frequency in Hz. If bit clock source is master
- * clock, this value should equals to masterClockHz in format.
- * @return Status of this function. Return value is one of status_t.
-*/
-status_t SAI_TransferRxSetFormat(I2S_Type *base,
-                                 sai_handle_t *handle,
-                                 sai_transfer_format_t *format,
-                                 uint32_t mclkSourceClockHz,
-                                 uint32_t bclkSourceClockHz);
-
-/*!
- * @brief Performs an interrupt non-blocking send transfer on SAI.
- *
- * @note This API returns immediately after the transfer initiates.
- * Call the SAI_TxGetTransferStatusIRQ to poll the transfer status and check whether
- * the transfer is finished. If the return status is not kStatus_SAI_Busy, the transfer
- * is finished.
- *
- * @param base SAI base pointer
- * @param handle pointer to sai_handle_t structure which stores the transfer state
- * @param xfer pointer to sai_transfer_t structure
- * @retval kStatus_Success Successfully started the data receive.
- * @retval kStatus_SAI_TxBusy Previous receive still not finished.
- * @retval kStatus_InvalidArgument The input parameter is invalid.
- */
-status_t SAI_TransferSendNonBlocking(I2S_Type *base, sai_handle_t *handle, sai_transfer_t *xfer);
-
-/*!
- * @brief Performs an interrupt non-blocking receive transfer on SAI.
- *
- * @note This API returns immediately after the transfer initiates.
- * Call the SAI_RxGetTransferStatusIRQ to poll the transfer status and check whether
- * the transfer is finished. If the return status is not kStatus_SAI_Busy, the transfer
- * is finished.
- *
- * @param base SAI base pointer
- * @param handle pointer to sai_handle_t structure which stores the transfer state
- * @param xfer pointer to sai_transfer_t structure
- * @retval kStatus_Success Successfully started the data receive.
- * @retval kStatus_SAI_RxBusy Previous receive still not finished.
- * @retval kStatus_InvalidArgument The input parameter is invalid.
- */
-status_t SAI_TransferReceiveNonBlocking(I2S_Type *base, sai_handle_t *handle, sai_transfer_t *xfer);
-
-/*!
- * @brief Gets a set byte count.
- *
- * @param base SAI base pointer.
- * @param handle pointer to sai_handle_t structure which stores the transfer state.
- * @param count Bytes count sent.
- * @retval kStatus_Success Succeed get the transfer count.
- * @retval kStatus_NoTransferInProgress There is not a non-blocking transaction currently in progress.
- */
-status_t SAI_TransferGetSendCount(I2S_Type *base, sai_handle_t *handle, size_t *count);
-
-/*!
- * @brief Gets a received byte count.
- *
- * @param base SAI base pointer.
- * @param handle pointer to sai_handle_t structure which stores the transfer state.
- * @param count Bytes count received.
- * @retval kStatus_Success Succeed get the transfer count.
- * @retval kStatus_NoTransferInProgress There is not a non-blocking transaction currently in progress.
- */
-status_t SAI_TransferGetReceiveCount(I2S_Type *base, sai_handle_t *handle, size_t *count);
-
-/*!
- * @brief Aborts the current send.
- *
- * @note This API can be called any time when an interrupt non-blocking transfer initiates
- * to abort the transfer early.
- *
- * @param base SAI base pointer.
- * @param handle pointer to sai_handle_t structure which stores the transfer state.
- */
-void SAI_TransferAbortSend(I2S_Type *base, sai_handle_t *handle);
-
-/*!
- * @brief Aborts the the current IRQ receive.
- *
- * @note This API can be called any time when an interrupt non-blocking transfer initiates
- * to abort the transfer early.
- *
- * @param base SAI base pointer
- * @param handle pointer to sai_handle_t structure which stores the transfer state.
- */
-void SAI_TransferAbortReceive(I2S_Type *base, sai_handle_t *handle);
-
-/*!
- * @brief Tx interrupt handler.
- *
- * @param base SAI base pointer.
- * @param handle pointer to sai_handle_t structure.
- */
-void SAI_TransferTxHandleIRQ(I2S_Type *base, sai_handle_t *handle);
-
-/*!
- * @brief Tx interrupt handler.
- *
- * @param base SAI base pointer.
- * @param handle pointer to sai_handle_t structure.
- */
-void SAI_TransferRxHandleIRQ(I2S_Type *base, sai_handle_t *handle);
-
-/*! @} */
-
-#if defined(__cplusplus)
-}
-#endif /*_cplusplus*/
-
-/*! @} */
-
-#endif /* _FSL_SAI_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_sai_edma.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,379 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_sai_edma.h"
-
-/*******************************************************************************
- * Definitations
- ******************************************************************************/
-/* Used for 32byte aligned */
-#define STCD_ADDR(address) (edma_tcd_t *)(((uint32_t)address + 32) & ~0x1FU)
-
-/*<! Structure definition for uart_edma_private_handle_t. The structure is private. */
-typedef struct _sai_edma_private_handle
-{
-    I2S_Type *base;
-    sai_edma_handle_t *handle;
-} sai_edma_private_handle_t;
-
-enum _sai_edma_transfer_state
-{
-    kSAI_Busy = 0x0U, /*!< SAI is busy */
-    kSAI_Idle,        /*!< Transfer is done. */
-};
-
-/*<! Private handle only used for internally. */
-static sai_edma_private_handle_t s_edmaPrivateHandle[FSL_FEATURE_SOC_I2S_COUNT][2];
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-/*!
- * @brief Get the instance number for SAI.
- *
- * @param base SAI base pointer.
- */
-extern uint32_t SAI_GetInstance(I2S_Type *base);
-
-/*!
- * @brief SAI EDMA callback for send.
- *
- * @param handle pointer to sai_edma_handle_t structure which stores the transfer state.
- * @param userData Parameter for user callback.
- * @param done If the DMA transfer finished.
- * @param tcds The TCD index.
- */
-static void SAI_TxEDMACallback(edma_handle_t *handle, void *userData, bool done, uint32_t tcds);
-
-/*!
- * @brief SAI EDMA callback for receive.
- *
- * @param handle pointer to sai_edma_handle_t structure which stores the transfer state.
- * @param userData Parameter for user callback.
- * @param done If the DMA transfer finished.
- * @param tcds The TCD index.
- */
-static void SAI_RxEDMACallback(edma_handle_t *handle, void *userData, bool done, uint32_t tcds);
-
-/*******************************************************************************
-* Code
-******************************************************************************/
-static void SAI_TxEDMACallback(edma_handle_t *handle, void *userData, bool done, uint32_t tcds)
-{
-    sai_edma_private_handle_t *privHandle = (sai_edma_private_handle_t *)userData;
-    sai_edma_handle_t *saiHandle = privHandle->handle;
-
-    /* If finished a blcok, call the callback function */
-    memset(&saiHandle->saiQueue[saiHandle->queueDriver], 0, sizeof(sai_transfer_t));
-    saiHandle->queueDriver = (saiHandle->queueDriver + 1) % SAI_XFER_QUEUE_SIZE;
-    if (saiHandle->callback)
-    {
-        (saiHandle->callback)(privHandle->base, saiHandle, kStatus_SAI_TxIdle, saiHandle->userData);
-    }
-
-    /* If all data finished, just stop the transfer */
-    if (saiHandle->saiQueue[saiHandle->queueDriver].data == NULL)
-    {
-        SAI_TransferAbortSendEDMA(privHandle->base, saiHandle);
-    }
-}
-
-static void SAI_RxEDMACallback(edma_handle_t *handle, void *userData, bool done, uint32_t tcds)
-{
-    sai_edma_private_handle_t *privHandle = (sai_edma_private_handle_t *)userData;
-    sai_edma_handle_t *saiHandle = privHandle->handle;
-
-    /* If finished a blcok, call the callback function */
-    memset(&saiHandle->saiQueue[saiHandle->queueDriver], 0, sizeof(sai_transfer_t));
-    saiHandle->queueDriver = (saiHandle->queueDriver + 1) % SAI_XFER_QUEUE_SIZE;
-    if (saiHandle->callback)
-    {
-        (saiHandle->callback)(privHandle->base, saiHandle, kStatus_SAI_RxIdle, saiHandle->userData);
-    }
-
-    /* If all data finished, just stop the transfer */
-    if (saiHandle->saiQueue[saiHandle->queueDriver].data == NULL)
-    {
-        SAI_TransferAbortReceiveEDMA(privHandle->base, saiHandle);
-    }
-}
-
-void SAI_TransferTxCreateHandleEDMA(
-    I2S_Type *base, sai_edma_handle_t *handle, sai_edma_callback_t callback, void *userData, edma_handle_t *dmaHandle)
-{
-    assert(handle && dmaHandle);
-
-    uint32_t instance = SAI_GetInstance(base);
-
-    /* Set sai base to handle */
-    handle->dmaHandle = dmaHandle;
-    handle->callback = callback;
-    handle->userData = userData;
-
-    /* Set SAI state to idle */
-    handle->state = kSAI_Idle;
-
-    s_edmaPrivateHandle[instance][0].base = base;
-    s_edmaPrivateHandle[instance][0].handle = handle;
-
-    /* Need to use scatter gather */
-    EDMA_InstallTCDMemory(dmaHandle, STCD_ADDR(handle->tcd), SAI_XFER_QUEUE_SIZE);
-
-    /* Install callback for Tx dma channel */
-    EDMA_SetCallback(dmaHandle, SAI_TxEDMACallback, &s_edmaPrivateHandle[instance][0]);
-}
-
-void SAI_TransferRxCreateHandleEDMA(
-    I2S_Type *base, sai_edma_handle_t *handle, sai_edma_callback_t callback, void *userData, edma_handle_t *dmaHandle)
-{
-    assert(handle && dmaHandle);
-
-    uint32_t instance = SAI_GetInstance(base);
-
-    /* Set sai base to handle */
-    handle->dmaHandle = dmaHandle;
-    handle->callback = callback;
-    handle->userData = userData;
-
-    /* Set SAI state to idle */
-    handle->state = kSAI_Idle;
-
-    s_edmaPrivateHandle[instance][1].base = base;
-    s_edmaPrivateHandle[instance][1].handle = handle;
-
-    /* Need to use scatter gather */
-    EDMA_InstallTCDMemory(dmaHandle, STCD_ADDR(handle->tcd), SAI_XFER_QUEUE_SIZE);
-
-    /* Install callback for Tx dma channel */
-    EDMA_SetCallback(dmaHandle, SAI_RxEDMACallback, &s_edmaPrivateHandle[instance][1]);
-}
-
-void SAI_TransferTxSetFormatEDMA(I2S_Type *base,
-                                 sai_edma_handle_t *handle,
-                                 sai_transfer_format_t *format,
-                                 uint32_t mclkSourceClockHz,
-                                 uint32_t bclkSourceClockHz)
-{
-    assert(handle && format);
-
-    /* Configure the audio format to SAI registers */
-    SAI_TxSetFormat(base, format, mclkSourceClockHz, bclkSourceClockHz);
-
-    /* Get the tranfer size from format, this should be used in EDMA configuration */
-    handle->bytesPerFrame = format->bitWidth / 8U;
-
-    /* Update the data channel SAI used */
-    handle->channel = format->channel;
-#if defined(FSL_FEATURE_SAI_FIFO_COUNT) && (FSL_FEATURE_SAI_FIFO_COUNT > 1)
-    handle->count = FSL_FEATURE_SAI_FIFO_COUNT - format->watermark;
-#else
-    handle->count = 1U;
-#endif /* FSL_FEATURE_SAI_FIFO_COUNT */
-}
-
-void SAI_TransferRxSetFormatEDMA(I2S_Type *base,
-                                 sai_edma_handle_t *handle,
-                                 sai_transfer_format_t *format,
-                                 uint32_t mclkSourceClockHz,
-                                 uint32_t bclkSourceClockHz)
-{
-    assert(handle && format);
-
-    /* Configure the audio format to SAI registers */
-    SAI_RxSetFormat(base, format, mclkSourceClockHz, bclkSourceClockHz);
-
-    /* Get the tranfer size from format, this should be used in EDMA configuration */
-    handle->bytesPerFrame = format->bitWidth / 8U;
-
-    /* Update the data channel SAI used */
-    handle->channel = format->channel;
-
-#if defined(FSL_FEATURE_SAI_FIFO_COUNT) && (FSL_FEATURE_SAI_FIFO_COUNT > 1)
-    handle->count = format->watermark;
-#else
-    handle->count = 1U;
-#endif /* FSL_FEATURE_SAI_FIFO_COUNT */
-}
-
-status_t SAI_TransferSendEDMA(I2S_Type *base, sai_edma_handle_t *handle, sai_transfer_t *xfer)
-{
-    assert(handle && xfer);
-
-    edma_transfer_config_t config = {0};
-    uint32_t destAddr = SAI_TxGetDataRegisterAddress(base, handle->channel);
-
-    /* Check if input parameter invalid */
-    if ((xfer->data == NULL) || (xfer->dataSize == 0U))
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    if (handle->saiQueue[handle->queueUser].data)
-    {
-        return kStatus_SAI_QueueFull;
-    }
-
-    /* Change the state of handle */
-    handle->state = kSAI_Busy;
-
-    /* Update the queue state */
-    handle->transferSize[handle->queueUser] = xfer->dataSize;
-    handle->saiQueue[handle->queueUser].data = xfer->data;
-    handle->saiQueue[handle->queueUser].dataSize = xfer->dataSize;
-    handle->queueUser = (handle->queueUser + 1) % SAI_XFER_QUEUE_SIZE;
-
-    /* Prepare edma configure */
-    EDMA_PrepareTransfer(&config, xfer->data, handle->bytesPerFrame, (void *)destAddr, handle->bytesPerFrame,
-                         handle->count * handle->bytesPerFrame, xfer->dataSize, kEDMA_MemoryToPeripheral);
-
-    EDMA_SubmitTransfer(handle->dmaHandle, &config);
-
-    /* Start DMA transfer */
-    EDMA_StartTransfer(handle->dmaHandle);
-
-    /* Enable DMA enable bit */
-    SAI_TxEnableDMA(base, kSAI_FIFORequestDMAEnable, true);
-
-    /* Enable SAI Tx clock */
-    SAI_TxEnable(base, true);
-
-    return kStatus_Success;
-}
-
-status_t SAI_TransferReceiveEDMA(I2S_Type *base, sai_edma_handle_t *handle, sai_transfer_t *xfer)
-{
-    assert(handle && xfer);
-
-    edma_transfer_config_t config = {0};
-    uint32_t srcAddr = SAI_RxGetDataRegisterAddress(base, handle->channel);
-
-    /* Check if input parameter invalid */
-    if ((xfer->data == NULL) || (xfer->dataSize == 0U))
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    if (handle->saiQueue[handle->queueUser].data)
-    {
-        return kStatus_SAI_QueueFull;
-    }
-
-    /* Change the state of handle */
-    handle->state = kSAI_Busy;
-
-    /* Update queue state  */
-    handle->transferSize[handle->queueUser] = xfer->dataSize;
-    handle->saiQueue[handle->queueUser].data = xfer->data;
-    handle->saiQueue[handle->queueUser].dataSize = xfer->dataSize;
-    handle->queueUser = (handle->queueUser + 1) % SAI_XFER_QUEUE_SIZE;
-
-    /* Prepare edma configure */
-    EDMA_PrepareTransfer(&config, (void *)srcAddr, handle->bytesPerFrame, xfer->data, handle->bytesPerFrame,
-                         handle->count * handle->bytesPerFrame, xfer->dataSize, kEDMA_PeripheralToMemory);
-
-    EDMA_SubmitTransfer(handle->dmaHandle, &config);
-
-    /* Start DMA transfer */
-    EDMA_StartTransfer(handle->dmaHandle);
-
-    /* Enable DMA enable bit */
-    SAI_RxEnableDMA(base, kSAI_FIFORequestDMAEnable, true);
-
-    /* Enable SAI Rx clock */
-    SAI_RxEnable(base, true);
-
-    return kStatus_Success;
-}
-
-void SAI_TransferAbortSendEDMA(I2S_Type *base, sai_edma_handle_t *handle)
-{
-    assert(handle);
-
-    /* Disable dma */
-    EDMA_AbortTransfer(handle->dmaHandle);
-
-    /* Disable DMA enable bit */
-    SAI_TxEnableDMA(base, kSAI_FIFORequestDMAEnable, false);
-
-    /* Set the handle state */
-    handle->state = kSAI_Idle;
-}
-
-void SAI_TransferAbortReceiveEDMA(I2S_Type *base, sai_edma_handle_t *handle)
-{
-    assert(handle);
-
-    /* Disable dma */
-    EDMA_AbortTransfer(handle->dmaHandle);
-
-    /* Disable DMA enable bit */
-    SAI_RxEnableDMA(base, kSAI_FIFORequestDMAEnable, false);
-
-    /* Set the handle state */
-    handle->state = kSAI_Idle;
-}
-
-status_t SAI_TransferGetSendCountEDMA(I2S_Type *base, sai_edma_handle_t *handle, size_t *count)
-{
-    assert(handle);
-
-    status_t status = kStatus_Success;
-
-    if (handle->state != kSAI_Busy)
-    {
-        status = kStatus_NoTransferInProgress;
-    }
-    else
-    {
-        *count = (handle->transferSize[handle->queueDriver] -
-                  EDMA_GetRemainingBytes(handle->dmaHandle->base, handle->dmaHandle->channel));
-    }
-
-    return status;
-}
-
-status_t SAI_TransferGetReceiveCountEDMA(I2S_Type *base, sai_edma_handle_t *handle, size_t *count)
-{
-    assert(handle);
-
-    status_t status = kStatus_Success;
-
-    if (handle->state != kSAI_Busy)
-    {
-        status = kStatus_NoTransferInProgress;
-    }
-    else
-    {
-        *count = (handle->transferSize[handle->queueDriver] -
-                  EDMA_GetRemainingBytes(handle->dmaHandle->base, handle->dmaHandle->channel));
-    }
-
-    return status;
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_sai_edma.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,232 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_SAI_EDMA_H_
-#define _FSL_SAI_EDMA_H_
-
-#include "fsl_sai.h"
-#include "fsl_edma.h"
-
-/*!
- * @addtogroup sai_edma
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-typedef struct _sai_edma_handle sai_edma_handle_t;
-
-/*! @brief SAI eDMA transfer callback function for finish and error */
-typedef void (*sai_edma_callback_t)(I2S_Type *base, sai_edma_handle_t *handle, status_t status, void *userData);
-
-/*! @brief SAI DMA transfer handle, users should not touch the content of the handle.*/
-struct _sai_edma_handle
-{
-    edma_handle_t *dmaHandle;                     /*!< DMA handler for SAI send */
-    uint8_t bytesPerFrame;                        /*!< Bytes in a frame */
-    uint8_t channel;                              /*!< Which data channel */
-    uint8_t count;                                /*!< The transfer data count in a DMA request */
-    uint32_t state;                               /*!< Internal state for SAI eDMA transfer */
-    sai_edma_callback_t callback;                 /*!< Callback for users while transfer finish or error occurs */
-    void *userData;                               /*!< User callback parameter */
-    edma_tcd_t tcd[SAI_XFER_QUEUE_SIZE + 1U];     /*!< TCD pool for eDMA transfer. */
-    sai_transfer_t saiQueue[SAI_XFER_QUEUE_SIZE]; /*!< Transfer queue storing queued transfer. */
-    size_t transferSize[SAI_XFER_QUEUE_SIZE];     /*!< Data bytes need to transfer */
-    volatile uint8_t queueUser;                   /*!< Index for user to queue transfer. */
-    volatile uint8_t queueDriver;                 /*!< Index for driver to get the transfer data and size */
-};
-
-/*******************************************************************************
- * APIs
- ******************************************************************************/
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
- * @name eDMA Transactional
- * @{
- */
-
-/*!
- * @brief Initializes the SAI eDMA handle.
- *
- * This function initializes the SAI master DMA handle, which can be used for other SAI master transactional APIs.
- * Usually, for a specified SAI instance, call this API once to get the initialized handle.
- *
- * @param base SAI base pointer.
- * @param handle SAI eDMA handle pointer.
- * @param base SAI peripheral base address.
- * @param callback Pointer to user callback function.
- * @param userData User parameter passed to the callback function.
- * @param dmaHandle eDMA handle pointer, this handle shall be static allocated by users.
- */
-void SAI_TransferTxCreateHandleEDMA(
-    I2S_Type *base, sai_edma_handle_t *handle, sai_edma_callback_t callback, void *userData, edma_handle_t *dmaHandle);
-
-/*!
- * @brief Initializes the SAI Rx eDMA handle.
- *
- * This function initializes the SAI slave DMA handle, which can be used for other SAI master transactional APIs.
- * Usually, for a specified SAI instance, call this API once to get the initialized handle.
- *
- * @param base SAI base pointer.
- * @param handle SAI eDMA handle pointer.
- * @param base SAI peripheral base address.
- * @param callback Pointer to user callback function.
- * @param userData User parameter passed to the callback function.
- * @param dmaHandle eDMA handle pointer, this handle shall be static allocated by users.
- */
-void SAI_TransferRxCreateHandleEDMA(
-    I2S_Type *base, sai_edma_handle_t *handle, sai_edma_callback_t callback, void *userData, edma_handle_t *dmaHandle);
-
-/*!
- * @brief Configures the SAI Tx audio format.
- *
- * The audio format can be changed at run-time. This function configures the sample rate and audio data
- * format to be transferred. This function also sets the eDMA parameter according to formatting requirements.
- *
- * @param base SAI base pointer.
- * @param handle SAI eDMA handle pointer.
- * @param format Pointer to SAI audio data format structure.
- * @param mclkSourceClockHz SAI master clock source frequency in Hz.
- * @param bclkSourceClockHz SAI bit clock source frequency in Hz. If bit clock source is master
- * clock, this value should equals to masterClockHz in format.
- * @retval kStatus_Success Audio format set successfully.
- * @retval kStatus_InvalidArgument The input argument is invalid.
-*/
-void SAI_TransferTxSetFormatEDMA(I2S_Type *base,
-                                 sai_edma_handle_t *handle,
-                                 sai_transfer_format_t *format,
-                                 uint32_t mclkSourceClockHz,
-                                 uint32_t bclkSourceClockHz);
-
-/*!
- * @brief Configures the SAI Rx audio format.
- *
- * The audio format can be changed at run-time. This function configures the sample rate and audio data
- * format to be transferred. This function also sets the eDMA parameter according to formatting requirements.
- *
- * @param base SAI base pointer.
- * @param handle SAI eDMA handle pointer.
- * @param format Pointer to SAI audio data format structure.
- * @param mclkSourceClockHz SAI master clock source frequency in Hz.
- * @param bclkSourceClockHz SAI bit clock source frequency in Hz. If a bit clock source is the master
- * clock, this value should equal to masterClockHz in format.
- * @retval kStatus_Success Audio format set successfully.
- * @retval kStatus_InvalidArgument The input argument is invalid.
-*/
-void SAI_TransferRxSetFormatEDMA(I2S_Type *base,
-                                 sai_edma_handle_t *handle,
-                                 sai_transfer_format_t *format,
-                                 uint32_t mclkSourceClockHz,
-                                 uint32_t bclkSourceClockHz);
-
-/*!
- * @brief Performs a non-blocking SAI transfer using DMA.
- *
- * @note This interface returns immediately after the transfer initiates. Call
- * SAI_GetTransferStatus to poll the transfer status and check whether the SAI transfer is finished.
- *
- * @param base SAI base pointer.
- * @param handle SAI eDMA handle pointer.
- * @param xfer Pointer to the DMA transfer structure.
- * @retval kStatus_Success Start a SAI eDMA send successfully.
- * @retval kStatus_InvalidArgument The input argument is invalid.
- * @retval kStatus_TxBusy SAI is busy sending data.
- */
-status_t SAI_TransferSendEDMA(I2S_Type *base, sai_edma_handle_t *handle, sai_transfer_t *xfer);
-
-/*!
- * @brief Performs a non-blocking SAI receive using eDMA.
- *
- * @note This interface returns immediately after the transfer initiates. Call
- * the SAI_GetReceiveRemainingBytes to poll the transfer status and check whether the SAI transfer is finished.
- *
- * @param base SAI base pointer
- * @param handle SAI eDMA handle pointer.
- * @param xfer Pointer to DMA transfer structure.
- * @retval kStatus_Success Start a SAI eDMA receive successfully.
- * @retval kStatus_InvalidArgument The input argument is invalid.
- * @retval kStatus_RxBusy SAI is busy receiving data.
- */
-status_t SAI_TransferReceiveEDMA(I2S_Type *base, sai_edma_handle_t *handle, sai_transfer_t *xfer);
-
-/*!
- * @brief Aborts a SAI transfer using eDMA.
- *
- * @param base SAI base pointer.
- * @param handle SAI eDMA handle pointer.
- */
-void SAI_TransferAbortSendEDMA(I2S_Type *base, sai_edma_handle_t *handle);
-
-/*!
- * @brief Aborts a SAI receive using eDMA.
- *
- * @param base SAI base pointer
- * @param handle SAI eDMA handle pointer.
- */
-void SAI_TransferAbortReceiveEDMA(I2S_Type *base, sai_edma_handle_t *handle);
-
-/*!
- * @brief Gets byte count sent by SAI.
- *
- * @param base SAI base pointer.
- * @param handle SAI eDMA handle pointer.
- * @param count Bytes count sent by SAI.
- * @retval kStatus_Success Succeed get the transfer count.
- * @retval kStatus_NoTransferInProgress There is no non-blocking transaction in progress.
- */
-status_t SAI_TransferGetSendCountEDMA(I2S_Type *base, sai_edma_handle_t *handle, size_t *count);
-
-/*!
- * @brief Gets byte count received by SAI.
- *
- * @param base SAI base pointer
- * @param handle SAI eDMA handle pointer.
- * @param count Bytes count received by SAI.
- * @retval kStatus_Success Succeed get the transfer count.
- * @retval kStatus_NoTransferInProgress There is no non-blocking transaction in progress.
- */
-status_t SAI_TransferGetReceiveCountEDMA(I2S_Type *base, sai_edma_handle_t *handle, size_t *count);
-
-/*! @} */
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*!
- * @}
- */
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_sdhc.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1294 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this
- * list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice,
- * this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_sdhc.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-/*! @brief Clock setting */
-/* Max SD clock divisor from base clock */
-#define SDHC_MAX_DVS ((SDHC_SYSCTL_DVS_MASK >> SDHC_SYSCTL_DVS_SHIFT) + 1U)
-#define SDHC_INITIAL_DVS (1U)   /* Initial value of SD clock divisor */
-#define SDHC_INITIAL_CLKFS (2U) /* Initial value of SD clock frequency selector */
-#define SDHC_NEXT_DVS(x) ((x) += 1U)
-#define SDHC_PREV_DVS(x) ((x) -= 1U)
-#define SDHC_MAX_CLKFS ((SDHC_SYSCTL_SDCLKFS_MASK >> SDHC_SYSCTL_SDCLKFS_SHIFT) + 1U)
-#define SDHC_NEXT_CLKFS(x) ((x) <<= 1U)
-#define SDHC_PREV_CLKFS(x) ((x) >>= 1U)
-
-/*! @brief ADMA table configuration */
-typedef struct _sdhc_adma_table_config
-{
-    uint32_t *admaTable;     /*!< ADMA table address, can't be null if transfer way is ADMA1/ADMA2 */
-    uint32_t admaTableWords; /*!< ADMA table length united as words, can't be 0 if transfer way is ADMA1/ADMA2 */
-} sdhc_adma_table_config_t;
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-/*!
- * @brief Get the instance.
- *
- * @param base SDHC peripheral base address.
- * @return Instance number.
- */
-static uint32_t SDHC_GetInstance(SDHC_Type *base);
-
-/*!
- * @brief Set transfer interrupt.
- *
- * @param base SDHC peripheral base address.
- * @param usingInterruptSignal True to use IRQ signal.
- */
-static void SDHC_SetTransferInterrupt(SDHC_Type *base, bool usingInterruptSignal);
-
-/*!
- * @brief Start transfer according to current transfer state
- *
- * @param base SDHC peripheral base address.
- * @param command Command to be sent.
- * @param data Data to be transferred.
- */
-static void SDHC_StartTransfer(SDHC_Type *base, sdhc_command_t *command, sdhc_data_t *data);
-
-/*!
- * @brief Receive command response
- *
- * @param base SDHC peripheral base address.
- * @param command Command to be sent.
- */
-static void SDHC_ReceiveCommandResponse(SDHC_Type *base, sdhc_command_t *command);
-
-/*!
- * @brief Read DATAPORT when buffer enable bit is set.
- *
- * @param base SDHC peripheral base address.
- * @param data Data to be read.
- * @param transferredWords The number of data words have been transferred last time transaction.
- * @return The number of total data words have been transferred after this time transaction.
- */
-static uint32_t SDHC_ReadDataPort(SDHC_Type *base, sdhc_data_t *data, uint32_t transferredWords);
-
-/*!
- * @brief Read data by using DATAPORT polling way.
- *
- * @param base SDHC peripheral base address.
- * @param data Data to be read.
- * @retval kStatus_Fail Read DATAPORT failed.
- * @retval kStatus_Success Operate successfully.
- */
-static status_t SDHC_ReadByDataPortBlocking(SDHC_Type *base, sdhc_data_t *data);
-
-/*!
- * @brief Write DATAPORT when buffer enable bit is set.
- *
- * @param base SDHC peripheral base address.
- * @param data Data to be read.
- * @param transferredWords The number of data words have been transferred last time.
- * @return The number of total data words have been transferred after this time transaction.
- */
-static uint32_t SDHC_WriteDataPort(SDHC_Type *base, sdhc_data_t *data, uint32_t transferredWords);
-
-/*!
- * @brief Write data by using DATAPORT polling way.
- *
- * @param base SDHC peripheral base address.
- * @param data Data to be transferred.
- * @retval kStatus_Fail Write DATAPORT failed.
- * @retval kStatus_Success Operate successfully.
- */
-static status_t SDHC_WriteByDataPortBlocking(SDHC_Type *base, sdhc_data_t *data);
-
-/*!
- * @brief Send command by using polling way.
- *
- * @param base SDHC peripheral base address.
- * @param command Command to be sent.
- * @retval kStatus_Fail Send command failed.
- * @retval kStatus_Success Operate successfully.
- */
-static status_t SDHC_SendCommandBlocking(SDHC_Type *base, sdhc_command_t *command);
-
-/*!
- * @brief Transfer data by DATAPORT and polling way.
- *
- * @param base SDHC peripheral base address.
- * @param data Data to be transferred.
- * @retval kStatus_Fail Transfer data failed.
- * @retval kStatus_Success Operate successfully.
- */
-static status_t SDHC_TransferByDataPortBlocking(SDHC_Type *base, sdhc_data_t *data);
-
-/*!
- * @brief Transfer data by ADMA2 and polling way.
- *
- * @param base SDHC peripheral base address.
- * @param data Data to be transferred.
- * @retval kStatus_Fail Transfer data failed.
- * @retval kStatus_Success Operate successfully.
- */
-static status_t SDHC_TransferByAdma2Blocking(SDHC_Type *base, sdhc_data_t *data);
-
-/*!
- * @brief Transfer data by polling way.
- *
- * @param dmaMode DMA mode.
- * @param base SDHC peripheral base address.
- * @param data Data to be transferred.
- * @retval kStatus_Fail Transfer data failed.
- * @retval kStatus_InvalidArgument Argument is invalid.
- * @retval kStatus_Success Operate successfully.
- */
-static status_t SDHC_TransferDataBlocking(sdhc_dma_mode_t dmaMode, SDHC_Type *base, sdhc_data_t *data);
-
-/*!
- * @brief Handle card detect interrupt.
- *
- * @param handle SDHC handle.
- * @param interruptFlags Card detect related interrupt flags.
- */
-static void SDHC_TransferHandleCardDetect(sdhc_handle_t *handle, uint32_t interruptFlags);
-
-/*!
- * @brief Handle command interrupt.
- *
- * @param base SDHC peripheral base address.
- * @param handle SDHC handle.
- * @param interruptFlags Command related interrupt flags.
- */
-static void SDHC_TransferHandleCommand(SDHC_Type *base, sdhc_handle_t *handle, uint32_t interruptFlags);
-
-/*!
- * @brief Handle data interrupt.
- *
- * @param base SDHC peripheral base address.
- * @param handle SDHC handle.
- * @param interruptFlags Data related interrupt flags.
- */
-static void SDHC_TransferHandleData(SDHC_Type *base, sdhc_handle_t *handle, uint32_t interruptFlags);
-
-/*!
- * @brief Handle SDIO card interrupt signal.
- *
- * @param handle SDHC handle.
- */
-static void SDHC_TransferHandleSdioInterrupt(sdhc_handle_t *handle);
-
-/*!
- * @brief Handle SDIO block gap event.
- *
- * @param handle SDHC handle.
- */
-static void SDHC_TransferHandleSdioBlockGap(sdhc_handle_t *handle);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-/*! @brief SDHC internal handle pointer array */
-static sdhc_handle_t *s_sdhcHandle[FSL_FEATURE_SOC_SDHC_COUNT];
-
-/*! @brief SDHC base pointer array */
-static SDHC_Type *const s_sdhcBase[] = SDHC_BASE_PTRS;
-
-/*! @brief SDHC IRQ name array */
-static const IRQn_Type s_sdhcIRQ[] = SDHC_IRQS;
-
-/*! @brief SDHC clock array name */
-static const clock_ip_name_t s_sdhcClock[] = SDHC_CLOCKS;
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-static uint32_t SDHC_GetInstance(SDHC_Type *base)
-{
-    uint8_t instance = 0;
-
-    while ((instance < FSL_FEATURE_SOC_SDHC_COUNT) && (s_sdhcBase[instance] != base))
-    {
-        instance++;
-    }
-
-    assert(instance < FSL_FEATURE_SOC_SDHC_COUNT);
-
-    return instance;
-}
-
-static void SDHC_SetTransferInterrupt(SDHC_Type *base, bool usingInterruptSignal)
-{
-    uint32_t interruptEnabled; /* The Interrupt status flags to be enabled */
-    sdhc_dma_mode_t dmaMode = (sdhc_dma_mode_t)((base->PROCTL & SDHC_PROCTL_DMAS_MASK) >> SDHC_PROCTL_DMAS_SHIFT);
-    bool cardDetectDat3 = (bool)(base->PROCTL & SDHC_PROCTL_D3CD_MASK);
-
-    /* Disable all interrupts */
-    SDHC_DisableInterruptStatus(base, (uint32_t)kSDHC_AllInterruptFlags);
-    SDHC_DisableInterruptSignal(base, (uint32_t)kSDHC_AllInterruptFlags);
-    DisableIRQ(s_sdhcIRQ[SDHC_GetInstance(base)]);
-
-    interruptEnabled =
-        (kSDHC_CommandIndexErrorFlag | kSDHC_CommandCrcErrorFlag | kSDHC_CommandEndBitErrorFlag |
-         kSDHC_CommandTimeoutFlag | kSDHC_CommandCompleteFlag | kSDHC_DataTimeoutFlag | kSDHC_DataCrcErrorFlag |
-         kSDHC_DataEndBitErrorFlag | kSDHC_DataCompleteFlag | kSDHC_AutoCommand12ErrorFlag);
-    if (cardDetectDat3)
-    {
-        interruptEnabled |= (kSDHC_CardInsertionFlag | kSDHC_CardRemovalFlag);
-    }
-    switch (dmaMode)
-    {
-        case kSDHC_DmaModeAdma1:
-        case kSDHC_DmaModeAdma2:
-            interruptEnabled |= (kSDHC_DmaErrorFlag | kSDHC_DmaCompleteFlag);
-            break;
-        case kSDHC_DmaModeNo:
-            interruptEnabled |= (kSDHC_BufferReadReadyFlag | kSDHC_BufferWriteReadyFlag);
-            break;
-        default:
-            break;
-    }
-
-    SDHC_EnableInterruptStatus(base, interruptEnabled);
-    if (usingInterruptSignal)
-    {
-        SDHC_EnableInterruptSignal(base, interruptEnabled);
-    }
-}
-
-static void SDHC_StartTransfer(SDHC_Type *base, sdhc_command_t *command, sdhc_data_t *data)
-{
-    assert(command);
-
-    uint32_t flags = 0U;
-    sdhc_transfer_config_t sdhcTransferConfig;
-    sdhc_dma_mode_t dmaMode;
-
-    /* Define the flag corresponding to each response type. */
-    switch (command->responseType)
-    {
-        case kSDHC_ResponseTypeNone:
-            break;
-        case kSDHC_ResponseTypeR1: /* Response 1 */
-            flags |= (kSDHC_ResponseLength48Flag | kSDHC_EnableCrcCheckFlag | kSDHC_EnableIndexCheckFlag);
-            break;
-        case kSDHC_ResponseTypeR1b: /* Response 1 with busy */
-            flags |= (kSDHC_ResponseLength48BusyFlag | kSDHC_EnableCrcCheckFlag | kSDHC_EnableIndexCheckFlag);
-            break;
-        case kSDHC_ResponseTypeR2: /* Response 2 */
-            flags |= (kSDHC_ResponseLength136Flag | kSDHC_EnableCrcCheckFlag);
-            break;
-        case kSDHC_ResponseTypeR3: /* Response 3 */
-            flags |= (kSDHC_ResponseLength48Flag);
-            break;
-        case kSDHC_ResponseTypeR4: /* Response 4 */
-            flags |= (kSDHC_ResponseLength48Flag);
-            break;
-        case kSDHC_ResponseTypeR5: /* Response 5 */
-            flags |= (kSDHC_ResponseLength48Flag | kSDHC_EnableCrcCheckFlag);
-            break;
-        case kSDHC_ResponseTypeR5b: /* Response 5 with busy */
-            flags |= (kSDHC_ResponseLength48BusyFlag | kSDHC_EnableCrcCheckFlag | kSDHC_EnableIndexCheckFlag);
-            break;
-        case kSDHC_ResponseTypeR6: /* Response 6 */
-            flags |= (kSDHC_ResponseLength48Flag | kSDHC_EnableCrcCheckFlag | kSDHC_EnableIndexCheckFlag);
-            break;
-        case kSDHC_ResponseTypeR7: /* Response 7 */
-            flags |= (kSDHC_ResponseLength48Flag | kSDHC_EnableCrcCheckFlag | kSDHC_EnableIndexCheckFlag);
-            break;
-        default:
-            break;
-    }
-    if (command->type == kSDHC_CommandTypeAbort)
-    {
-        flags |= kSDHC_CommandTypeAbortFlag;
-    }
-
-    if (data)
-    {
-        flags |= kSDHC_DataPresentFlag;
-        dmaMode = (sdhc_dma_mode_t)((base->PROCTL & SDHC_PROCTL_DMAS_MASK) >> SDHC_PROCTL_DMAS_SHIFT);
-        if (dmaMode != kSDHC_DmaModeNo)
-        {
-            flags |= kSDHC_EnableDmaFlag;
-        }
-        if (data->rxData)
-        {
-            flags |= kSDHC_DataReadFlag;
-        }
-        if (data->blockCount > 1U)
-        {
-            flags |= (kSDHC_MultipleBlockFlag | kSDHC_EnableBlockCountFlag);
-            if (data->enableAutoCommand12)
-            {
-                /* Enable Auto command 12. */
-                flags |= kSDHC_EnableAutoCommand12Flag;
-            }
-        }
-        if (data->blockCount > SDHC_MAX_BLOCK_COUNT)
-        {
-            sdhcTransferConfig.dataBlockSize = data->blockSize;
-            sdhcTransferConfig.dataBlockCount = SDHC_MAX_BLOCK_COUNT;
-
-            flags &= ~(uint32_t)kSDHC_EnableBlockCountFlag;
-        }
-        else
-        {
-            sdhcTransferConfig.dataBlockSize = data->blockSize;
-            sdhcTransferConfig.dataBlockCount = data->blockCount;
-        }
-    }
-    else
-    {
-        sdhcTransferConfig.dataBlockSize = 0U;
-        sdhcTransferConfig.dataBlockCount = 0U;
-    }
-
-    sdhcTransferConfig.commandArgument = command->argument;
-    sdhcTransferConfig.commandIndex = command->index;
-    sdhcTransferConfig.flags = flags;
-    SDHC_SetTransferConfig(base, &sdhcTransferConfig);
-}
-
-static void SDHC_ReceiveCommandResponse(SDHC_Type *base, sdhc_command_t *command)
-{
-    assert(command);
-
-    uint32_t i;
-
-    if (command->responseType != kSDHC_ResponseTypeNone)
-    {
-        command->response[0U] = SDHC_GetCommandResponse(base, 0U);
-        if (command->responseType == kSDHC_ResponseTypeR2)
-        {
-            command->response[1U] = SDHC_GetCommandResponse(base, 1U);
-            command->response[2U] = SDHC_GetCommandResponse(base, 2U);
-            command->response[3U] = SDHC_GetCommandResponse(base, 3U);
-
-            i = 4U;
-            /* R3-R2-R1-R0(lowest 8 bit is invalid bit) has the same format as R2 format in SD specification document
-            after removed internal CRC7 and end bit. */
-            do
-            {
-                command->response[i - 1U] <<= 8U;
-                if (i > 1U)
-                {
-                    command->response[i - 1U] |= ((command->response[i - 2U] & 0xFF000000U) >> 24U);
-                }
-            } while (i--);
-        }
-    }
-}
-
-static uint32_t SDHC_ReadDataPort(SDHC_Type *base, sdhc_data_t *data, uint32_t transferredWords)
-{
-    assert(data);
-
-    uint32_t i;
-    uint32_t totalWords;
-    uint32_t wordsCanBeRead; /* The words can be read at this time. */
-    uint32_t readWatermark = ((base->WML & SDHC_WML_RDWML_MASK) >> SDHC_WML_RDWML_SHIFT);
-
-    totalWords = ((data->blockCount * data->blockSize) / sizeof(uint32_t));
-
-    /* If watermark level is equal or bigger than totalWords, transfers totalWords data. */
-    if (readWatermark >= totalWords)
-    {
-        wordsCanBeRead = totalWords;
-    }
-    /* If watermark level is less than totalWords and left words to be sent is equal or bigger than readWatermark,
-    transfers watermark level words. */
-    else if ((readWatermark < totalWords) && ((totalWords - transferredWords) >= readWatermark))
-    {
-        wordsCanBeRead = readWatermark;
-    }
-    /* If watermark level is less than totalWords and left words to be sent is less than readWatermark, transfers left
-    words. */
-    else
-    {
-        wordsCanBeRead = (totalWords - transferredWords);
-    }
-
-    i = 0U;
-    while (i < wordsCanBeRead)
-    {
-        data->rxData[transferredWords++] = SDHC_ReadData(base);
-        i++;
-    }
-
-    return transferredWords;
-}
-
-static status_t SDHC_ReadByDataPortBlocking(SDHC_Type *base, sdhc_data_t *data)
-{
-    assert(data);
-
-    uint32_t totalWords;
-    uint32_t transferredWords = 0U;
-    status_t error = kStatus_Success;
-
-    totalWords = ((data->blockCount * data->blockSize) / sizeof(uint32_t));
-
-    while ((error == kStatus_Success) && (transferredWords < totalWords))
-    {
-        while (!(SDHC_GetInterruptStatusFlags(base) & (kSDHC_BufferReadReadyFlag | kSDHC_DataErrorFlag)))
-        {
-        }
-
-        if (SDHC_GetInterruptStatusFlags(base) & kSDHC_DataErrorFlag)
-        {
-            if (!(data->enableIgnoreError))
-            {
-                error = kStatus_Fail;
-            }
-        }
-        if (error == kStatus_Success)
-        {
-            transferredWords = SDHC_ReadDataPort(base, data, transferredWords);
-        }
-
-        /* Clear buffer enable flag to trigger transfer. Clear data error flag when SDHC encounter error */
-        SDHC_ClearInterruptStatusFlags(base, (kSDHC_BufferReadReadyFlag | kSDHC_DataErrorFlag));
-    }
-
-    /* Clear data complete flag after the last read operation. */
-    SDHC_ClearInterruptStatusFlags(base, kSDHC_DataCompleteFlag);
-
-    return error;
-}
-
-static uint32_t SDHC_WriteDataPort(SDHC_Type *base, sdhc_data_t *data, uint32_t transferredWords)
-{
-    assert(data);
-
-    uint32_t i;
-    uint32_t totalWords;
-    uint32_t wordsCanBeWrote; /* Words can be wrote at this time. */
-    uint32_t writeWatermark = ((base->WML & SDHC_WML_WRWML_MASK) >> SDHC_WML_WRWML_SHIFT);
-
-    totalWords = ((data->blockCount * data->blockSize) / sizeof(uint32_t));
-
-    /* If watermark level is equal or bigger than totalWords, transfers totalWords data.*/
-    if (writeWatermark >= totalWords)
-    {
-        wordsCanBeWrote = totalWords;
-    }
-    /* If watermark level is less than totalWords and left words to be sent is equal or bigger than watermark,
-    transfers watermark level words. */
-    else if ((writeWatermark < totalWords) && ((totalWords - transferredWords) >= writeWatermark))
-    {
-        wordsCanBeWrote = writeWatermark;
-    }
-    /* If watermark level is less than totalWords and left words to be sent is less than watermark, transfers left
-    words. */
-    else
-    {
-        wordsCanBeWrote = (totalWords - transferredWords);
-    }
-
-    i = 0U;
-    while (i < wordsCanBeWrote)
-    {
-        SDHC_WriteData(base, data->txData[transferredWords++]);
-        i++;
-    }
-
-    return transferredWords;
-}
-
-static status_t SDHC_WriteByDataPortBlocking(SDHC_Type *base, sdhc_data_t *data)
-{
-    assert(data);
-
-    uint32_t totalWords;
-    uint32_t transferredWords = 0U;
-    status_t error = kStatus_Success;
-
-    totalWords = (data->blockCount * data->blockSize) / sizeof(uint32_t);
-
-    while ((error == kStatus_Success) && (transferredWords < totalWords))
-    {
-        while (!(SDHC_GetInterruptStatusFlags(base) & (kSDHC_BufferWriteReadyFlag | kSDHC_DataErrorFlag)))
-        {
-        }
-
-        if (SDHC_GetInterruptStatusFlags(base) & kSDHC_DataErrorFlag)
-        {
-            if (!(data->enableIgnoreError))
-            {
-                error = kStatus_Fail;
-            }
-        }
-        if (error == kStatus_Success)
-        {
-            transferredWords = SDHC_WriteDataPort(base, data, transferredWords);
-        }
-
-        /* Clear buffer enable flag to trigger transfer. Clear error flag when SDHC encounter error. */
-        SDHC_ClearInterruptStatusFlags(base, (kSDHC_BufferWriteReadyFlag | kSDHC_DataErrorFlag));
-    }
-
-    /* Wait write data complete or data transfer error after the last writing operation. */
-    while (!(SDHC_GetInterruptStatusFlags(base) & (kSDHC_DataCompleteFlag | kSDHC_DataErrorFlag)))
-    {
-    }
-    if (SDHC_GetInterruptStatusFlags(base) & kSDHC_DataErrorFlag)
-    {
-        if (!(data->enableIgnoreError))
-        {
-            error = kStatus_Fail;
-        }
-    }
-    SDHC_ClearInterruptStatusFlags(base, (kSDHC_DataCompleteFlag | kSDHC_DataErrorFlag));
-
-    return error;
-}
-
-static status_t SDHC_SendCommandBlocking(SDHC_Type *base, sdhc_command_t *command)
-{
-    assert(command);
-
-    status_t error = kStatus_Success;
-
-    /* Wait command complete or SDHC encounters error. */
-    while (!(SDHC_GetInterruptStatusFlags(base) & (kSDHC_CommandCompleteFlag | kSDHC_CommandErrorFlag)))
-    {
-    }
-
-    if (SDHC_GetInterruptStatusFlags(base) & kSDHC_CommandErrorFlag)
-    {
-        error = kStatus_Fail;
-    }
-    /* Receive response when command completes successfully. */
-    if (error == kStatus_Success)
-    {
-        SDHC_ReceiveCommandResponse(base, command);
-    }
-
-    SDHC_ClearInterruptStatusFlags(base, (kSDHC_CommandCompleteFlag | kSDHC_CommandErrorFlag));
-
-    return error;
-}
-
-static status_t SDHC_TransferByDataPortBlocking(SDHC_Type *base, sdhc_data_t *data)
-{
-    assert(data);
-
-    status_t error = kStatus_Success;
-
-    if (data->rxData)
-    {
-        error = SDHC_ReadByDataPortBlocking(base, data);
-    }
-    else
-    {
-        error = SDHC_WriteByDataPortBlocking(base, data);
-    }
-
-    return error;
-}
-
-static status_t SDHC_TransferByAdma2Blocking(SDHC_Type *base, sdhc_data_t *data)
-{
-    status_t error = kStatus_Success;
-
-    /* Wait data complete or SDHC encounters error. */
-    while (!(SDHC_GetInterruptStatusFlags(base) & (kSDHC_DataCompleteFlag | kSDHC_DataErrorFlag | kSDHC_DmaErrorFlag)))
-    {
-    }
-    if (SDHC_GetInterruptStatusFlags(base) & (kSDHC_DataErrorFlag | kSDHC_DmaErrorFlag))
-    {
-        if (!(data->enableIgnoreError))
-        {
-            error = kStatus_Fail;
-        }
-    }
-    SDHC_ClearInterruptStatusFlags(
-        base, (kSDHC_DataCompleteFlag | kSDHC_DmaCompleteFlag | kSDHC_DataErrorFlag | kSDHC_DmaErrorFlag));
-    return error;
-}
-
-#if defined FSL_SDHC_ENABLE_ADMA1
-#define SDHC_TransferByAdma1Blocking(base, data) SDHC_TransferByAdma2Blocking(base, data)
-#endif /* FSL_SDHC_ENABLE_ADMA1 */
-
-static status_t SDHC_TransferDataBlocking(sdhc_dma_mode_t dmaMode, SDHC_Type *base, sdhc_data_t *data)
-{
-    status_t error = kStatus_Success;
-
-    switch (dmaMode)
-    {
-        case kSDHC_DmaModeNo:
-            error = SDHC_TransferByDataPortBlocking(base, data);
-            break;
-#if defined FSL_SDHC_ENABLE_ADMA1
-        case kSDHC_DmaModeAdma1:
-            error = SDHC_TransferByAdma1Blocking(base, data);
-            break;
-#endif /* FSL_SDHC_ENABLE_ADMA1 */
-        case kSDHC_DmaModeAdma2:
-            error = SDHC_TransferByAdma2Blocking(base, data);
-            break;
-        default:
-            error = kStatus_InvalidArgument;
-            break;
-    }
-
-    return error;
-}
-
-static void SDHC_TransferHandleCardDetect(sdhc_handle_t *handle, uint32_t interruptFlags)
-{
-    assert(interruptFlags & kSDHC_CardDetectFlag);
-
-    if (interruptFlags & kSDHC_CardInsertionFlag)
-    {
-        if (handle->callback.CardInserted)
-        {
-            handle->callback.CardInserted();
-        }
-    }
-    else
-    {
-        if (handle->callback.CardRemoved)
-        {
-            handle->callback.CardRemoved();
-        }
-    }
-}
-
-static void SDHC_TransferHandleCommand(SDHC_Type *base, sdhc_handle_t *handle, uint32_t interruptFlags)
-{
-    assert(interruptFlags & kSDHC_CommandFlag);
-
-    if ((interruptFlags & kSDHC_CommandErrorFlag) && (!(handle->data)) && (handle->callback.TransferComplete))
-    {
-        handle->callback.TransferComplete(base, handle, kStatus_SDHC_SendCommandFailed, handle->userData);
-    }
-    else
-    {
-        /* Receive response */
-        SDHC_ReceiveCommandResponse(base, handle->command);
-        if ((!(handle->data)) && (handle->callback.TransferComplete))
-        {
-            handle->callback.TransferComplete(base, handle, kStatus_Success, handle->userData);
-        }
-    }
-}
-
-static void SDHC_TransferHandleData(SDHC_Type *base, sdhc_handle_t *handle, uint32_t interruptFlags)
-{
-    assert(handle->data);
-    assert(interruptFlags & kSDHC_DataFlag);
-
-    if ((!(handle->data->enableIgnoreError)) && (interruptFlags & (kSDHC_DataErrorFlag | kSDHC_DmaErrorFlag)) &&
-        (handle->callback.TransferComplete))
-    {
-        handle->callback.TransferComplete(base, handle, kStatus_SDHC_TransferDataFailed, handle->userData);
-    }
-    else
-    {
-        if (interruptFlags & kSDHC_BufferReadReadyFlag)
-        {
-            handle->transferredWords = SDHC_ReadDataPort(base, handle->data, handle->transferredWords);
-        }
-        else if (interruptFlags & kSDHC_BufferWriteReadyFlag)
-        {
-            handle->transferredWords = SDHC_WriteDataPort(base, handle->data, handle->transferredWords);
-        }
-        else if ((interruptFlags & kSDHC_DataCompleteFlag) && (handle->callback.TransferComplete))
-        {
-            handle->callback.TransferComplete(base, handle, kStatus_Success, handle->userData);
-        }
-        else
-        {
-            /* Do nothing when DMA complete flag is set. Wait until data complete flag is set. */
-        }
-    }
-}
-
-static void SDHC_TransferHandleSdioInterrupt(sdhc_handle_t *handle)
-{
-    if (handle->callback.SdioInterrupt)
-    {
-        handle->callback.SdioInterrupt();
-    }
-}
-
-static void SDHC_TransferHandleSdioBlockGap(sdhc_handle_t *handle)
-{
-    if (handle->callback.SdioBlockGap)
-    {
-        handle->callback.SdioBlockGap();
-    }
-}
-
-void SDHC_Init(SDHC_Type *base, const sdhc_config_t *config)
-{
-    assert(config);
-#if !defined FSL_SDHC_ENABLE_ADMA1
-    assert(config->dmaMode != kSDHC_DmaModeAdma1);
-#endif /* FSL_SDHC_ENABLE_ADMA1 */
-
-    uint32_t proctl;
-    uint32_t wml;
-
-    /* Enable SDHC clock. */
-    CLOCK_EnableClock(s_sdhcClock[SDHC_GetInstance(base)]);
-
-    /* Reset SDHC. */
-    SDHC_Reset(base, kSDHC_ResetAll, 100);
-
-    proctl = base->PROCTL;
-    wml = base->WML;
-
-    proctl &= ~(SDHC_PROCTL_D3CD_MASK | SDHC_PROCTL_EMODE_MASK | SDHC_PROCTL_DMAS_MASK);
-    /* Set DAT3 as card detection pin */
-    if (config->cardDetectDat3)
-    {
-        proctl |= SDHC_PROCTL_D3CD_MASK;
-    }
-    /* Endian mode and DMA mode */
-    proctl |= (SDHC_PROCTL_EMODE(config->endianMode) | SDHC_PROCTL_DMAS(config->dmaMode));
-
-    /* Watermark level */
-    wml &= ~(SDHC_WML_RDWML_MASK | SDHC_WML_WRWML_MASK);
-    wml |= (SDHC_WML_RDWML(config->readWatermarkLevel) | SDHC_WML_WRWML(config->writeWatermarkLevel));
-
-    base->WML = wml;
-    base->PROCTL = proctl;
-
-    /* Disable all clock auto gated off feature because of DAT0 line logic(card buffer full status) can't be updated
-    correctly when clock auto gated off is enabled. */
-    base->SYSCTL |= (SDHC_SYSCTL_PEREN_MASK | SDHC_SYSCTL_HCKEN_MASK | SDHC_SYSCTL_IPGEN_MASK);
-
-    /* Enable interrupt status but doesn't enable interrupt signal. */
-    SDHC_SetTransferInterrupt(base, false);
-}
-
-void SDHC_Deinit(SDHC_Type *base)
-{
-    /* Disable clock. */
-    CLOCK_DisableClock(s_sdhcClock[SDHC_GetInstance(base)]);
-}
-
-bool SDHC_Reset(SDHC_Type *base, uint32_t mask, uint32_t timeout)
-{
-    base->SYSCTL |= (mask & (SDHC_SYSCTL_RSTA_MASK | SDHC_SYSCTL_RSTC_MASK | SDHC_SYSCTL_RSTD_MASK));
-    /* Delay some time to wait reset success. */
-    while ((base->SYSCTL & mask))
-    {
-        if (!timeout)
-        {
-            break;
-        }
-        timeout--;
-    }
-
-    return ((!timeout) ? false : true);
-}
-
-void SDHC_GetCapability(SDHC_Type *base, sdhc_capability_t *capability)
-{
-    assert(capability);
-
-    uint32_t htCapability;
-    uint32_t hostVer;
-    uint32_t maxBlockLength;
-
-    hostVer = base->HOSTVER;
-    htCapability = base->HTCAPBLT;
-
-    /* Get the capability of SDHC. */
-    capability->specVersion = ((hostVer & SDHC_HOSTVER_SVN_MASK) >> SDHC_HOSTVER_SVN_SHIFT);
-    capability->vendorVersion = ((hostVer & SDHC_HOSTVER_VVN_MASK) >> SDHC_HOSTVER_VVN_SHIFT);
-    maxBlockLength = ((htCapability & SDHC_HTCAPBLT_MBL_MASK) >> SDHC_HTCAPBLT_MBL_SHIFT);
-    capability->maxBlockLength = (512U << maxBlockLength);
-    /* Other attributes not in HTCAPBLT register. */
-    capability->maxBlockCount = SDHC_MAX_BLOCK_COUNT;
-    capability->flags = (htCapability & (kSDHC_SupportAdmaFlag | kSDHC_SupportHighSpeedFlag | kSDHC_SupportDmaFlag |
-                                         kSDHC_SupportSuspendResumeFlag | kSDHC_SupportV330Flag));
-#if defined FSL_FEATURE_SDHC_HAS_V300_SUPPORT && FSL_FEATURE_SDHC_HAS_V300_SUPPORT
-    capability->flags |= (htCapability & kSDHC_SupportV300Flag);
-#endif
-#if defined FSL_FEATURE_SDHC_HAS_V180_SUPPORT && FSL_FEATURE_SDHC_HAS_V180_SUPPORT
-    capability->flags |= (htCapability & kSDHC_SupportV180Flag);
-#endif
-    /* eSDHC on all kinetis boards will support 4/8 bit data bus width. */
-    capability->flags |= (kSDHC_Support4BitFlag | kSDHC_Support8BitFlag);
-}
-
-uint32_t SDHC_SetSdClock(SDHC_Type *base, uint32_t srcClock_Hz, uint32_t busClock_Hz)
-{
-    assert(busClock_Hz && (busClock_Hz < srcClock_Hz));
-
-    uint32_t divisor;
-    uint32_t prescaler;
-    uint32_t sysctl;
-    uint32_t nearestFrequency = 0;
-
-    divisor = SDHC_INITIAL_DVS;
-    prescaler = SDHC_INITIAL_CLKFS;
-
-    /* Disable SD clock. It should be disabled before changing the SD clock frequency.*/
-    base->SYSCTL &= ~SDHC_SYSCTL_SDCLKEN_MASK;
-
-    if (busClock_Hz > 0U)
-    {
-        while ((srcClock_Hz / prescaler / SDHC_MAX_DVS > busClock_Hz) && (prescaler < SDHC_MAX_CLKFS))
-        {
-            SDHC_NEXT_CLKFS(prescaler);
-        }
-        while ((srcClock_Hz / prescaler / divisor > busClock_Hz) && (divisor < SDHC_MAX_DVS))
-        {
-            SDHC_NEXT_DVS(divisor);
-        }
-        nearestFrequency = srcClock_Hz / prescaler / divisor;
-        SDHC_PREV_CLKFS(prescaler);
-        SDHC_PREV_DVS(divisor);
-
-        /* Set the SD clock frequency divisor, SD clock frequency select, data timeout counter value. */
-        sysctl = base->SYSCTL;
-        sysctl &= ~(SDHC_SYSCTL_DVS_MASK | SDHC_SYSCTL_SDCLKFS_MASK | SDHC_SYSCTL_DTOCV_MASK);
-        sysctl |= (SDHC_SYSCTL_DVS(divisor) | SDHC_SYSCTL_SDCLKFS(prescaler) | SDHC_SYSCTL_DTOCV(0xEU));
-        base->SYSCTL = sysctl;
-
-        /* Wait until the SD clock is stable. */
-        while (!(base->PRSSTAT & SDHC_PRSSTAT_SDSTB_MASK))
-        {
-        }
-        /* Enable the SD clock. */
-        base->SYSCTL |= SDHC_SYSCTL_SDCLKEN_MASK;
-    }
-
-    return nearestFrequency;
-}
-
-bool SDHC_SetCardActive(SDHC_Type *base, uint32_t timeout)
-{
-    base->SYSCTL |= SDHC_SYSCTL_INITA_MASK;
-    /* Delay some time to wait card become active state. */
-    while (!(base->SYSCTL & SDHC_SYSCTL_INITA_MASK))
-    {
-        if (!timeout)
-        {
-            break;
-        }
-        timeout--;
-    }
-
-    return ((!timeout) ? false : true);
-}
-
-void SDHC_SetTransferConfig(SDHC_Type *base, const sdhc_transfer_config_t *config)
-{
-    assert(config);
-
-    base->BLKATTR = ((base->BLKATTR & ~(SDHC_BLKATTR_BLKSIZE_MASK | SDHC_BLKATTR_BLKCNT_MASK)) |
-                     (SDHC_BLKATTR_BLKSIZE(config->dataBlockSize) | SDHC_BLKATTR_BLKCNT(config->dataBlockCount)));
-    base->CMDARG = config->commandArgument;
-    base->XFERTYP = (((config->commandIndex << SDHC_XFERTYP_CMDINX_SHIFT) & SDHC_XFERTYP_CMDINX_MASK) |
-                     (config->flags & (SDHC_XFERTYP_DMAEN_MASK | SDHC_XFERTYP_MSBSEL_MASK | SDHC_XFERTYP_DPSEL_MASK |
-                                       SDHC_XFERTYP_CMDTYP_MASK | SDHC_XFERTYP_BCEN_MASK | SDHC_XFERTYP_CICEN_MASK |
-                                       SDHC_XFERTYP_CCCEN_MASK | SDHC_XFERTYP_RSPTYP_MASK | SDHC_XFERTYP_DTDSEL_MASK |
-                                       SDHC_XFERTYP_AC12EN_MASK)));
-}
-
-void SDHC_EnableSdioControl(SDHC_Type *base, uint32_t mask, bool enable)
-{
-    uint32_t proctl = base->PROCTL;
-    uint32_t vendor = base->VENDOR;
-
-    if (enable)
-    {
-        if (mask & kSDHC_StopAtBlockGapFlag)
-        {
-            proctl |= SDHC_PROCTL_SABGREQ_MASK;
-        }
-        if (mask & kSDHC_ReadWaitControlFlag)
-        {
-            proctl |= SDHC_PROCTL_RWCTL_MASK;
-        }
-        if (mask & kSDHC_InterruptAtBlockGapFlag)
-        {
-            proctl |= SDHC_PROCTL_IABG_MASK;
-        }
-        if (mask & kSDHC_ExactBlockNumberReadFlag)
-        {
-            vendor |= SDHC_VENDOR_EXBLKNU_MASK;
-        }
-    }
-    else
-    {
-        if (mask & kSDHC_StopAtBlockGapFlag)
-        {
-            proctl &= ~SDHC_PROCTL_SABGREQ_MASK;
-        }
-        if (mask & kSDHC_ReadWaitControlFlag)
-        {
-            proctl &= ~SDHC_PROCTL_RWCTL_MASK;
-        }
-        if (mask & kSDHC_InterruptAtBlockGapFlag)
-        {
-            proctl &= ~SDHC_PROCTL_IABG_MASK;
-        }
-        if (mask & kSDHC_ExactBlockNumberReadFlag)
-        {
-            vendor &= ~SDHC_VENDOR_EXBLKNU_MASK;
-        }
-    }
-
-    base->PROCTL = proctl;
-    base->VENDOR = vendor;
-}
-
-void SDHC_SetMmcBootConfig(SDHC_Type *base, const sdhc_boot_config_t *config)
-{
-    assert(config);
-
-    uint32_t mmcboot;
-
-    mmcboot = base->MMCBOOT;
-    mmcboot |= (SDHC_MMCBOOT_DTOCVACK(config->ackTimeoutCount) | SDHC_MMCBOOT_BOOTMODE(config->bootMode) |
-                SDHC_MMCBOOT_BOOTBLKCNT(config->blockCount));
-    if (config->enableBootAck)
-    {
-        mmcboot |= SDHC_MMCBOOT_BOOTACK_MASK;
-    }
-    if (config->enableBoot)
-    {
-        mmcboot |= SDHC_MMCBOOT_BOOTEN_MASK;
-    }
-    if (config->enableAutoStopAtBlockGap)
-    {
-        mmcboot |= SDHC_MMCBOOT_AUTOSABGEN_MASK;
-    }
-    base->MMCBOOT = mmcboot;
-}
-
-status_t SDHC_SetAdmaTableConfig(SDHC_Type *base,
-                                 sdhc_dma_mode_t dmaMode,
-                                 uint32_t *table,
-                                 uint32_t tableWords,
-                                 const uint32_t *data,
-                                 uint32_t dataBytes)
-{
-    status_t error = kStatus_Success;
-    const uint32_t *startAddress;
-    uint32_t entries;
-    uint32_t i;
-#if defined FSL_SDHC_ENABLE_ADMA1
-    sdhc_adma1_descriptor_t *adma1EntryAddress;
-#endif
-    sdhc_adma2_descriptor_t *adma2EntryAddress;
-
-    if ((((!table) || (!tableWords)) && ((dmaMode == kSDHC_DmaModeAdma1) || (dmaMode == kSDHC_DmaModeAdma2))) ||
-        (!data) || (!dataBytes)
-#if !defined FSL_SDHC_ENABLE_ADMA1
-        || (dmaMode == kSDHC_DmaModeAdma1)
-#endif /* FSL_SDHC_ENABLE_ADMA1 */
-            )
-    {
-        error = kStatus_InvalidArgument;
-    }
-    else
-    {
-        switch (dmaMode)
-        {
-            case kSDHC_DmaModeNo:
-                break;
-#if defined FSL_SDHC_ENABLE_ADMA1
-            case kSDHC_DmaModeAdma1:
-                startAddress = data;
-                /* Check if ADMA descriptor's number is enough. */
-                entries = ((dataBytes / SDHC_ADMA1_DESCRIPTOR_MAX_LENGTH_PER_ENTRY) + 1U);
-                /* ADMA1 needs two descriptors to finish a transfer */
-                entries <<= 1U;
-                if (entries > ((tableWords * sizeof(uint32_t)) / sizeof(sdhc_adma1_descriptor_t)))
-                {
-                    error = kStatus_OutOfRange;
-                }
-                else
-                {
-                    adma1EntryAddress = (sdhc_adma1_descriptor_t *)(table);
-                    for (i = 0U; i < entries; i += 2U)
-                    {
-                        /* Each descriptor for ADMA1 is 32-bit in length */
-                        if ((dataBytes - sizeof(uint32_t) * (startAddress - data)) <=
-                            SDHC_ADMA1_DESCRIPTOR_MAX_LENGTH_PER_ENTRY)
-                        {
-                            /* The last piece of data, setting end flag in descriptor */
-                            adma1EntryAddress[i] = ((uint32_t)(dataBytes - sizeof(uint32_t) * (startAddress - data))
-                                                    << SDHC_ADMA1_DESCRIPTOR_LENGTH_SHIFT);
-                            adma1EntryAddress[i] |= kSDHC_Adma1DescriptorTypeSetLength;
-                            adma1EntryAddress[i + 1U] =
-                                ((uint32_t)(startAddress) << SDHC_ADMA1_DESCRIPTOR_ADDRESS_SHIFT);
-                            adma1EntryAddress[i + 1U] |=
-                                (SDHC_ADMA1_DESCRIPTOR_TYPE_TRANSFER | SDHC_ADMA1_DESCRIPTOR_END_MASK);
-                        }
-                        else
-                        {
-                            adma1EntryAddress[i] = ((uint32_t)SDHC_ADMA1_DESCRIPTOR_MAX_LENGTH_PER_ENTRY
-                                                    << SDHC_ADMA1_DESCRIPTOR_LENGTH_SHIFT);
-                            adma1EntryAddress[i] |= kSDHC_Adma1DescriptorTypeSetLength;
-                            adma1EntryAddress[i + 1U] =
-                                ((uint32_t)(startAddress) << SDHC_ADMA1_DESCRIPTOR_ADDRESS_SHIFT);
-                            adma1EntryAddress[i + 1U] |= kSDHC_Adma1DescriptorTypeTransfer;
-                            startAddress += SDHC_ADMA1_DESCRIPTOR_MAX_LENGTH_PER_ENTRY / sizeof(uint32_t);
-                        }
-                    }
-
-                    /* When use ADMA, disable simple DMA */
-                    base->DSADDR = 0U;
-                    base->ADSADDR = (uint32_t)table;
-                }
-                break;
-#endif /* FSL_SDHC_ENABLE_ADMA1 */
-            case kSDHC_DmaModeAdma2:
-                startAddress = data;
-                /* Check if ADMA descriptor's number is enough. */
-                entries = ((dataBytes / SDHC_ADMA2_DESCRIPTOR_MAX_LENGTH_PER_ENTRY) + 1U);
-                if (entries > ((tableWords * sizeof(uint32_t)) / sizeof(sdhc_adma2_descriptor_t)))
-                {
-                    error = kStatus_OutOfRange;
-                }
-                else
-                {
-                    adma2EntryAddress = (sdhc_adma2_descriptor_t *)(table);
-                    for (i = 0U; i < entries; i++)
-                    {
-                        /* Each descriptor for ADMA2 is 64-bit in length */
-                        if ((dataBytes - sizeof(uint32_t) * (startAddress - data)) <=
-                            SDHC_ADMA2_DESCRIPTOR_MAX_LENGTH_PER_ENTRY)
-                        {
-                            /* The last piece of data, setting end flag in descriptor */
-                            adma2EntryAddress[i].address = startAddress;
-                            adma2EntryAddress[i].attribute = ((dataBytes - sizeof(uint32_t) * (startAddress - data))
-                                                              << SDHC_ADMA2_DESCRIPTOR_LENGTH_SHIFT);
-                            adma2EntryAddress[i].attribute |=
-                                (kSDHC_Adma2DescriptorTypeTransfer | kSDHC_Adma2DescriptorEndFlag);
-                        }
-                        else
-                        {
-                            adma2EntryAddress[i].address = startAddress;
-                            adma2EntryAddress[i].attribute =
-                                (((SDHC_ADMA2_DESCRIPTOR_MAX_LENGTH_PER_ENTRY / sizeof(uint32_t)) * sizeof(uint32_t))
-                                 << SDHC_ADMA2_DESCRIPTOR_LENGTH_SHIFT);
-                            adma2EntryAddress[i].attribute |= kSDHC_Adma2DescriptorTypeTransfer;
-                            startAddress += (SDHC_ADMA2_DESCRIPTOR_MAX_LENGTH_PER_ENTRY / sizeof(uint32_t));
-                        }
-                    }
-
-                    /* When use ADMA, disable simple DMA */
-                    base->DSADDR = 0U;
-                    base->ADSADDR = (uint32_t)table;
-                }
-                break;
-            default:
-                break;
-        }
-    }
-
-    return error;
-}
-
-status_t SDHC_TransferBlocking(SDHC_Type *base, uint32_t *admaTable, uint32_t admaTableWords, sdhc_transfer_t *transfer)
-{
-    assert(transfer);
-    assert(transfer->command); /* Command must not be NULL, data can be NULL. */
-
-    status_t error = kStatus_Success;
-    sdhc_dma_mode_t dmaMode = (sdhc_dma_mode_t)((base->PROCTL & SDHC_PROCTL_DMAS_MASK) >> SDHC_PROCTL_DMAS_SHIFT);
-    sdhc_command_t *command = transfer->command;
-    sdhc_data_t *data = transfer->data;
-
-    /* DATA-PORT is 32-bit align, ADMA2 4 bytes align, ADMA1 is 4096 bytes align */
-    if ((!command) || (data && (data->blockSize % 4U)))
-    {
-        error = kStatus_InvalidArgument;
-    }
-    else
-    {
-        /* Wait until command/data bus out of busy status. */
-        while (SDHC_GetPresentStatusFlags(base) & kSDHC_CommandInhibitFlag)
-        {
-        }
-        while (data && (SDHC_GetPresentStatusFlags(base) & kSDHC_DataInhibitFlag))
-        {
-        }
-
-        /* Update ADMA descriptor table if data isn't NULL. */
-        if (data && (kStatus_Success != SDHC_SetAdmaTableConfig(base, dmaMode, admaTable, admaTableWords,
-                                                                (data->rxData ? data->rxData : data->txData),
-                                                                (data->blockCount * data->blockSize))))
-        {
-            error = kStatus_SDHC_PrepareAdmaDescriptorFailed;
-        }
-        else
-        {
-            SDHC_StartTransfer(base, command, data);
-
-            /* Send command and receive data. */
-            if (kStatus_Success != SDHC_SendCommandBlocking(base, command))
-            {
-                error = kStatus_SDHC_SendCommandFailed;
-            }
-            else if (data && (kStatus_Success != SDHC_TransferDataBlocking(dmaMode, base, data)))
-            {
-                error = kStatus_SDHC_TransferDataFailed;
-            }
-            else
-            {
-            }
-        }
-    }
-
-    return error;
-}
-
-void SDHC_TransferCreateHandle(SDHC_Type *base,
-                               sdhc_handle_t *handle,
-                               const sdhc_transfer_callback_t *callback,
-                               void *userData)
-{
-    assert(handle);
-    assert(callback);
-
-    /* Zero the handle. */
-    memset(handle, 0, sizeof(*handle));
-
-    /* Set the callback. */
-    handle->callback.CardInserted = callback->CardInserted;
-    handle->callback.CardRemoved = callback->CardRemoved;
-    handle->callback.SdioInterrupt = callback->SdioInterrupt;
-    handle->callback.SdioBlockGap = callback->SdioBlockGap;
-    handle->callback.TransferComplete = callback->TransferComplete;
-    handle->userData = userData;
-
-    /* Save the handle in global variables to support the double weak mechanism. */
-    s_sdhcHandle[SDHC_GetInstance(base)] = handle;
-
-    /* Enable interrupt in NVIC. */
-    SDHC_SetTransferInterrupt(base, true);
-    EnableIRQ(s_sdhcIRQ[SDHC_GetInstance(base)]);
-}
-
-status_t SDHC_TransferNonBlocking(
-    SDHC_Type *base, sdhc_handle_t *handle, uint32_t *admaTable, uint32_t admaTableWords, sdhc_transfer_t *transfer)
-{
-    assert(transfer);
-
-    sdhc_dma_mode_t dmaMode = (sdhc_dma_mode_t)((base->PROCTL & SDHC_PROCTL_DMAS_MASK) >> SDHC_PROCTL_DMAS_SHIFT);
-    status_t error = kStatus_Success;
-    sdhc_command_t *command = transfer->command;
-    sdhc_data_t *data = transfer->data;
-
-    /* DATA-PORT is 32-bit align, ADMA2 4 bytes align, ADMA1 is 4096 bytes align */
-    if ((!(transfer->command)) || ((transfer->data) && (transfer->data->blockSize % 4U)))
-    {
-        error = kStatus_InvalidArgument;
-    }
-    else
-    {
-        /* Wait until command/data bus out of busy status. */
-        if ((SDHC_GetPresentStatusFlags(base) & kSDHC_CommandInhibitFlag) ||
-            (data && (SDHC_GetPresentStatusFlags(base) & kSDHC_DataInhibitFlag)))
-        {
-            error = kStatus_SDHC_BusyTransferring;
-        }
-        else
-        {
-            /* Update ADMA descriptor table and reset transferred words if data isn't NULL. */
-            if (data && (kStatus_Success != SDHC_SetAdmaTableConfig(base, dmaMode, admaTable, admaTableWords,
-                                                                    (data->rxData ? data->rxData : data->txData),
-                                                                    (data->blockCount * data->blockSize))))
-            {
-                error = kStatus_SDHC_PrepareAdmaDescriptorFailed;
-            }
-            else
-            {
-                /* Save command and data into handle before transferring. */
-                handle->command = command;
-                handle->data = data;
-                handle->interruptFlags = 0U;
-                /* transferredWords will only be updated in ISR when transfer way is DATAPORT. */
-                handle->transferredWords = 0U;
-                SDHC_StartTransfer(base, command, data);
-            }
-        }
-    }
-
-    return error;
-}
-
-void SDHC_TransferHandleIRQ(SDHC_Type *base, sdhc_handle_t *handle)
-{
-    assert(handle);
-
-    uint32_t interruptFlags;
-
-    interruptFlags = SDHC_GetInterruptStatusFlags(base);
-    handle->interruptFlags = interruptFlags;
-
-    if (interruptFlags & kSDHC_CardDetectFlag)
-    {
-        SDHC_TransferHandleCardDetect(handle, (interruptFlags & kSDHC_CardDetectFlag));
-    }
-    if (interruptFlags & kSDHC_CommandFlag)
-    {
-        SDHC_TransferHandleCommand(base, handle, (interruptFlags & kSDHC_CommandFlag));
-    }
-    if (interruptFlags & kSDHC_DataFlag)
-    {
-        SDHC_TransferHandleData(base, handle, (interruptFlags & kSDHC_DataFlag));
-    }
-    if (interruptFlags & kSDHC_CardInterruptFlag)
-    {
-        SDHC_TransferHandleSdioInterrupt(handle);
-    }
-    if (interruptFlags & kSDHC_BlockGapEventFlag)
-    {
-        SDHC_TransferHandleSdioBlockGap(handle);
-    }
-
-    SDHC_ClearInterruptStatusFlags(base, interruptFlags);
-}
-
-#if defined(SDHC)
-void SDHC_DriverIRQHandler(void)
-{
-    assert(s_sdhcHandle[0]);
-
-    SDHC_TransferHandleIRQ(SDHC, s_sdhcHandle[0]);
-}
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_sdhc.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1082 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_SDHC_H_
-#define _FSL_SDHC_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup sdhc
- * @{
- */
-
-/*! @file */
-
-/******************************************************************************
- * Definitions.
- *****************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief Driver version 2.0.0. */
-#define FSL_SDHC_DRIVER_VERSION (MAKE_VERSION(2U, 0U, 0U))
-/*@}*/
-
-/*! @brief Maximum block count can be set one time */
-#define SDHC_MAX_BLOCK_COUNT (SDHC_BLKATTR_BLKCNT_MASK >> SDHC_BLKATTR_BLKCNT_SHIFT)
-
-/*! @brief SDHC status */
-enum _sdhc_status
-{
-    kStatus_SDHC_BusyTransferring = MAKE_STATUS(kStatusGroup_SDHC, 0U),            /*!< Transfer is on-going */
-    kStatus_SDHC_PrepareAdmaDescriptorFailed = MAKE_STATUS(kStatusGroup_SDHC, 1U), /*!< Set DMA descriptor failed */
-    kStatus_SDHC_SendCommandFailed = MAKE_STATUS(kStatusGroup_SDHC, 2U),           /*!< Send command failed */
-    kStatus_SDHC_TransferDataFailed = MAKE_STATUS(kStatusGroup_SDHC, 3U),          /*!< Transfer data failed */
-};
-
-/*! @brief Host controller capabilities flag mask */
-enum _sdhc_capability_flag
-{
-    kSDHC_SupportAdmaFlag = SDHC_HTCAPBLT_ADMAS_MASK,        /*!< Support ADMA */
-    kSDHC_SupportHighSpeedFlag = SDHC_HTCAPBLT_HSS_MASK,     /*!< Support high-speed */
-    kSDHC_SupportDmaFlag = SDHC_HTCAPBLT_DMAS_MASK,          /*!< Support DMA */
-    kSDHC_SupportSuspendResumeFlag = SDHC_HTCAPBLT_SRS_MASK, /*!< Support suspend/resume */
-    kSDHC_SupportV330Flag = SDHC_HTCAPBLT_VS33_MASK,         /*!< Support voltage 3.3V */
-#if defined FSL_FEATURE_SDHC_HAS_V300_SUPPORT && FSL_FEATURE_SDHC_HAS_V300_SUPPORT
-    kSDHC_SupportV300Flag = SDHC_HTCAPBLT_VS30_MASK, /*!< Support voltage 3.0V */
-#endif
-#if defined FSL_FEATURE_SDHC_HAS_V180_SUPPORT && FSL_FEATURE_SDHC_HAS_V180_SUPPORT
-    kSDHC_SupportV180Flag = SDHC_HTCAPBLT_VS18_MASK, /*!< Support voltage 1.8V */
-#endif
-    /* Put additional two flags in HTCAPBLT_MBL's position. */
-    kSDHC_Support4BitFlag = (SDHC_HTCAPBLT_MBL_SHIFT << 0U), /*!< Support 4 bit mode */
-    kSDHC_Support8BitFlag = (SDHC_HTCAPBLT_MBL_SHIFT << 1U), /*!< Support 8 bit mode */
-};
-
-/*! @brief Wakeup event mask */
-enum _sdhc_wakeup_event
-{
-    kSDHC_WakeupEventOnCardInt = SDHC_PROCTL_WECINT_MASK,    /*!< Wakeup on card interrupt */
-    kSDHC_WakeupEventOnCardInsert = SDHC_PROCTL_WECINS_MASK, /*!< Wakeup on card insertion */
-    kSDHC_WakeupEventOnCardRemove = SDHC_PROCTL_WECRM_MASK,  /*!< Wakeup on card removal */
-
-    kSDHC_WakeupEventsAll = (kSDHC_WakeupEventOnCardInt | kSDHC_WakeupEventOnCardInsert |
-                             kSDHC_WakeupEventOnCardRemove), /*!< All wakeup events */
-};
-
-/*! @brief Reset type mask */
-enum _sdhc_reset
-{
-    kSDHC_ResetAll = SDHC_SYSCTL_RSTA_MASK,     /*!< Reset all except card detection */
-    kSDHC_ResetCommand = SDHC_SYSCTL_RSTC_MASK, /*!< Reset command line */
-    kSDHC_ResetData = SDHC_SYSCTL_RSTD_MASK,    /*!< Reset data line */
-
-    kSDHC_ResetsAll = (kSDHC_ResetAll | kSDHC_ResetCommand | kSDHC_ResetData), /*!< All reset types */
-};
-
-/*! @brief Transfer flag mask */
-enum _sdhc_transfer_flag
-{
-    kSDHC_EnableDmaFlag = SDHC_XFERTYP_DMAEN_MASK, /*!< Enable DMA */
-
-    kSDHC_CommandTypeSuspendFlag = (SDHC_XFERTYP_CMDTYP(1U)), /*!< Suspend command */
-    kSDHC_CommandTypeResumeFlag = (SDHC_XFERTYP_CMDTYP(2U)),  /*!< Resume command */
-    kSDHC_CommandTypeAbortFlag = (SDHC_XFERTYP_CMDTYP(3U)),   /*!< Abort command */
-
-    kSDHC_EnableBlockCountFlag = SDHC_XFERTYP_BCEN_MASK,      /*!< Enable block count */
-    kSDHC_EnableAutoCommand12Flag = SDHC_XFERTYP_AC12EN_MASK, /*!< Enable auto CMD12 */
-    kSDHC_DataReadFlag = SDHC_XFERTYP_DTDSEL_MASK,            /*!< Enable data read */
-    kSDHC_MultipleBlockFlag = SDHC_XFERTYP_MSBSEL_MASK,       /*!< Multiple block data read/write */
-
-    kSDHC_ResponseLength136Flag = SDHC_XFERTYP_RSPTYP(1U),    /*!< 136 bit response length */
-    kSDHC_ResponseLength48Flag = SDHC_XFERTYP_RSPTYP(2U),     /*!< 48 bit response length */
-    kSDHC_ResponseLength48BusyFlag = SDHC_XFERTYP_RSPTYP(3U), /*!< 48 bit response length with busy status */
-
-    kSDHC_EnableCrcCheckFlag = SDHC_XFERTYP_CCCEN_MASK,   /*!< Enable CRC check */
-    kSDHC_EnableIndexCheckFlag = SDHC_XFERTYP_CICEN_MASK, /*!< Enable index check */
-    kSDHC_DataPresentFlag = SDHC_XFERTYP_DPSEL_MASK,      /*!< Data present flag */
-};
-
-/*! @brief Present status flag mask */
-enum _sdhc_present_status_flag
-{
-    kSDHC_CommandInhibitFlag = SDHC_PRSSTAT_CIHB_MASK,     /*!< Command inhibit */
-    kSDHC_DataInhibitFlag = SDHC_PRSSTAT_CDIHB_MASK,       /*!< Data inhibit */
-    kSDHC_DataLineActiveFlag = SDHC_PRSSTAT_DLA_MASK,      /*!< Data line active */
-    kSDHC_SdClockStableFlag = SDHC_PRSSTAT_SDSTB_MASK,     /*!< SD bus clock stable */
-    kSDHC_WriteTransferActiveFlag = SDHC_PRSSTAT_WTA_MASK, /*!< Write transfer active */
-    kSDHC_ReadTransferActiveFlag = SDHC_PRSSTAT_RTA_MASK,  /*!< Read transfer active */
-    kSDHC_BufferWriteEnableFlag = SDHC_PRSSTAT_BWEN_MASK,  /*!< Buffer write enable */
-    kSDHC_BufferReadEnableFlag = SDHC_PRSSTAT_BREN_MASK,   /*!< Buffer read enable */
-    kSDHC_CardInsertedFlag = SDHC_PRSSTAT_CINS_MASK,       /*!< Card inserted */
-    kSDHC_CommandLineLevelFlag = SDHC_PRSSTAT_CLSL_MASK,   /*!< Command line signal level */
-    kSDHC_Data0LineLevelFlag = (1U << 24U),                /*!< Data0 line signal level */
-    kSDHC_Data1LineLevelFlag = (1U << 25U),                /*!< Data1 line signal level */
-    kSDHC_Data2LineLevelFlag = (1U << 26U),                /*!< Data2 line signal level */
-    kSDHC_Data3LineLevelFlag = (1U << 27U),                /*!< Data3 line signal level */
-    kSDHC_Data4LineLevelFlag = (1U << 28U),                /*!< Data4 line signal level */
-    kSDHC_Data5LineLevelFlag = (1U << 29U),                /*!< Data5 line signal level */
-    kSDHC_Data6LineLevelFlag = (1U << 30U),                /*!< Data6 line signal level */
-    kSDHC_Data7LineLevelFlag = (1U << 31U),                /*!< Data7 line signal level */
-};
-
-/*! @brief Interrupt status flag mask */
-enum _sdhc_interrupt_status_flag
-{
-    kSDHC_CommandCompleteFlag = SDHC_IRQSTAT_CC_MASK,       /*!< Command complete */
-    kSDHC_DataCompleteFlag = SDHC_IRQSTAT_TC_MASK,          /*!< Data complete */
-    kSDHC_BlockGapEventFlag = SDHC_IRQSTAT_BGE_MASK,        /*!< Block gap event */
-    kSDHC_DmaCompleteFlag = SDHC_IRQSTAT_DINT_MASK,         /*!< DMA interrupt */
-    kSDHC_BufferWriteReadyFlag = SDHC_IRQSTAT_BWR_MASK,     /*!< Buffer write ready */
-    kSDHC_BufferReadReadyFlag = SDHC_IRQSTAT_BRR_MASK,      /*!< Buffer read ready */
-    kSDHC_CardInsertionFlag = SDHC_IRQSTAT_CINS_MASK,       /*!< Card inserted */
-    kSDHC_CardRemovalFlag = SDHC_IRQSTAT_CRM_MASK,          /*!< Card removed */
-    kSDHC_CardInterruptFlag = SDHC_IRQSTAT_CINT_MASK,       /*!< Card interrupt */
-    kSDHC_CommandTimeoutFlag = SDHC_IRQSTAT_CTOE_MASK,      /*!< Command timeout error */
-    kSDHC_CommandCrcErrorFlag = SDHC_IRQSTAT_CCE_MASK,      /*!< Command CRC error */
-    kSDHC_CommandEndBitErrorFlag = SDHC_IRQSTAT_CEBE_MASK,  /*!< Command end bit error */
-    kSDHC_CommandIndexErrorFlag = SDHC_IRQSTAT_CIE_MASK,    /*!< Command index error */
-    kSDHC_DataTimeoutFlag = SDHC_IRQSTAT_DTOE_MASK,         /*!< Data timeout error */
-    kSDHC_DataCrcErrorFlag = SDHC_IRQSTAT_DCE_MASK,         /*!< Data CRC error */
-    kSDHC_DataEndBitErrorFlag = SDHC_IRQSTAT_DEBE_MASK,     /*!< Data end bit error */
-    kSDHC_AutoCommand12ErrorFlag = SDHC_IRQSTAT_AC12E_MASK, /*!< Auto CMD12 error */
-    kSDHC_DmaErrorFlag = SDHC_IRQSTAT_DMAE_MASK,            /*!< DMA error */
-
-    kSDHC_CommandErrorFlag = (kSDHC_CommandTimeoutFlag | kSDHC_CommandCrcErrorFlag | kSDHC_CommandEndBitErrorFlag |
-                              kSDHC_CommandIndexErrorFlag), /*!< Command error */
-    kSDHC_DataErrorFlag = (kSDHC_DataTimeoutFlag | kSDHC_DataCrcErrorFlag | kSDHC_DataEndBitErrorFlag |
-                           kSDHC_AutoCommand12ErrorFlag),                                  /*!< Data error */
-    kSDHC_ErrorFlag = (kSDHC_CommandErrorFlag | kSDHC_DataErrorFlag | kSDHC_DmaErrorFlag), /*!< All error */
-    kSDHC_DataFlag = (kSDHC_DataCompleteFlag | kSDHC_DmaCompleteFlag | kSDHC_BufferWriteReadyFlag |
-                      kSDHC_BufferReadReadyFlag | kSDHC_DataErrorFlag | kSDHC_DmaErrorFlag), /*!< Data interrupts */
-    kSDHC_CommandFlag = (kSDHC_CommandErrorFlag | kSDHC_CommandCompleteFlag),                /*!< Command interrupts */
-    kSDHC_CardDetectFlag = (kSDHC_CardInsertionFlag | kSDHC_CardRemovalFlag), /*!< Card detection interrupts */
-
-    kSDHC_AllInterruptFlags = (kSDHC_BlockGapEventFlag | kSDHC_CardInterruptFlag | kSDHC_CommandFlag | kSDHC_DataFlag |
-                               kSDHC_ErrorFlag), /*!< All flags mask */
-};
-
-/*! @brief Auto CMD12 error status flag mask */
-enum _sdhc_auto_command12_error_status_flag
-{
-    kSDHC_AutoCommand12NotExecutedFlag = SDHC_AC12ERR_AC12NE_MASK,  /*!< Not executed error */
-    kSDHC_AutoCommand12TimeoutFlag = SDHC_AC12ERR_AC12TOE_MASK,     /*!< Timeout error */
-    kSDHC_AutoCommand12EndBitErrorFlag = SDHC_AC12ERR_AC12EBE_MASK, /*!< End bit error */
-    kSDHC_AutoCommand12CrcErrorFlag = SDHC_AC12ERR_AC12CE_MASK,     /*!< CRC error */
-    kSDHC_AutoCommand12IndexErrorFlag = SDHC_AC12ERR_AC12IE_MASK,   /*!< Index error */
-    kSDHC_AutoCommand12NotIssuedFlag = SDHC_AC12ERR_CNIBAC12E_MASK, /*!< Not issued error */
-};
-
-/*! @brief ADMA error status flag mask */
-enum _sdhc_adma_error_status_flag
-{
-    kSDHC_AdmaLenghMismatchFlag = SDHC_ADMAES_ADMALME_MASK,   /*!< Length mismatch error */
-    kSDHC_AdmaDescriptorErrorFlag = SDHC_ADMAES_ADMADCE_MASK, /*!< Descriptor error */
-};
-
-/*!
- * @brief ADMA error state
- *
- * This state is the detail state when ADMA error has occurred.
- */
-typedef enum _sdhc_adma_error_state
-{
-    kSDHC_AdmaErrorStateStopDma = 0x00U,         /*!< Stop DMA */
-    kSDHC_AdmaErrorStateFetchDescriptor = 0x01U, /*!< Fetch descriptor */
-    kSDHC_AdmaErrorStateChangeAddress = 0x02U,   /*!< Change address */
-    kSDHC_AdmaErrorStateTransferData = 0x03U,    /*!< Transfer data */
-} sdhc_adma_error_state_t;
-
-/*! @brief Force event mask */
-enum _sdhc_force_event
-{
-    kSDHC_ForceEventAutoCommand12NotExecuted = SDHC_FEVT_AC12NE_MASK,  /*!< Auto CMD12 not executed error */
-    kSDHC_ForceEventAutoCommand12Timeout = SDHC_FEVT_AC12TOE_MASK,     /*!< Auto CMD12 timeout error */
-    kSDHC_ForceEventAutoCommand12CrcError = SDHC_FEVT_AC12CE_MASK,     /*!< Auto CMD12 CRC error */
-    kSDHC_ForceEventEndBitError = SDHC_FEVT_AC12EBE_MASK,              /*!< Auto CMD12 end bit error */
-    kSDHC_ForceEventAutoCommand12IndexError = SDHC_FEVT_AC12IE_MASK,   /*!< Auto CMD12 index error */
-    kSDHC_ForceEventAutoCommand12NotIssued = SDHC_FEVT_CNIBAC12E_MASK, /*!< Auto CMD12 not issued error */
-    kSDHC_ForceEventCommandTimeout = SDHC_FEVT_CTOE_MASK,              /*!< Command timeout error */
-    kSDHC_ForceEventCommandCrcError = SDHC_FEVT_CCE_MASK,              /*!< Command CRC error */
-    kSDHC_ForceEventCommandEndBitError = SDHC_FEVT_CEBE_MASK,          /*!< Command end bit error */
-    kSDHC_ForceEventCommandIndexError = SDHC_FEVT_CIE_MASK,            /*!< Command index error */
-    kSDHC_ForceEventDataTimeout = SDHC_FEVT_DTOE_MASK,                 /*!< Data timeout error */
-    kSDHC_ForceEventDataCrcError = SDHC_FEVT_DCE_MASK,                 /*!< Data CRC error */
-    kSDHC_ForceEventDataEndBitError = SDHC_FEVT_DEBE_MASK,             /*!< Data end bit error */
-    kSDHC_ForceEventAutoCommand12Error = SDHC_FEVT_AC12E_MASK,         /*!< Auto CMD12 error */
-    kSDHC_ForceEventCardInt = SDHC_FEVT_CINT_MASK,                     /*!< Card interrupt */
-    kSDHC_ForceEventDmaError = SDHC_FEVT_DMAE_MASK,                    /*!< Dma error */
-
-    kSDHC_ForceEventsAll =
-        (kSDHC_ForceEventAutoCommand12NotExecuted | kSDHC_ForceEventAutoCommand12Timeout |
-         kSDHC_ForceEventAutoCommand12CrcError | kSDHC_ForceEventEndBitError | kSDHC_ForceEventAutoCommand12IndexError |
-         kSDHC_ForceEventAutoCommand12NotIssued | kSDHC_ForceEventCommandTimeout | kSDHC_ForceEventCommandCrcError |
-         kSDHC_ForceEventCommandEndBitError | kSDHC_ForceEventCommandIndexError | kSDHC_ForceEventDataTimeout |
-         kSDHC_ForceEventDataCrcError | kSDHC_ForceEventDataEndBitError | kSDHC_ForceEventAutoCommand12Error |
-         kSDHC_ForceEventCardInt | kSDHC_ForceEventDmaError), /*!< All force event flags mask */
-};
-
-/*! @brief Data transfer width */
-typedef enum _sdhc_data_bus_width
-{
-    kSDHC_DataBusWidth1Bit = 0U, /*!< 1-bit mode */
-    kSDHC_DataBusWidth4Bit = 1U, /*!< 4-bit mode */
-    kSDHC_DataBusWidth8Bit = 2U, /*!< 8-bit mode */
-} sdhc_data_bus_width_t;
-
-/*! @brief Endian mode */
-typedef enum _sdhc_endian_mode
-{
-    kSDHC_EndianModeBig = 0U,         /*!< Big endian mode */
-    kSDHC_EndianModeHalfWordBig = 1U, /*!< Half word big endian mode */
-    kSDHC_EndianModeLittle = 2U,      /*!< Little endian mode */
-} sdhc_endian_mode_t;
-
-/*! @brief DMA mode */
-typedef enum _sdhc_dma_mode
-{
-    kSDHC_DmaModeNo = 0U,    /*!< No DMA */
-    kSDHC_DmaModeAdma1 = 1U, /*!< ADMA1 is selected */
-    kSDHC_DmaModeAdma2 = 2U, /*!< ADMA2 is selected */
-} sdhc_dma_mode_t;
-
-/*! @brief SDIO control flag mask */
-enum _sdhc_sdio_control_flag
-{
-    kSDHC_StopAtBlockGapFlag = 0x01,       /*!< Stop at block gap */
-    kSDHC_ReadWaitControlFlag = 0x02,      /*!< Read wait control */
-    kSDHC_InterruptAtBlockGapFlag = 0x04,  /*!< Interrupt at block gap */
-    kSDHC_ExactBlockNumberReadFlag = 0x08, /*!< Exact block number read */
-};
-
-/*! @brief MMC card boot mode */
-typedef enum _sdhc_boot_mode
-{
-    kSDHC_BootModeNormal = 0U,      /*!< Normal boot */
-    kSDHC_BootModeAlternative = 1U, /*!< Alternative boot */
-} sdhc_boot_mode_t;
-
-/*! @brief The command type */
-typedef enum _sdhc_command_type
-{
-    kSDHC_CommandTypeNormal = 0U,  /*!< Normal command */
-    kSDHC_CommandTypeSuspend = 1U, /*!< Suspend command */
-    kSDHC_CommandTypeResume = 2U,  /*!< Resume command */
-    kSDHC_CommandTypeAbort = 3U,   /*!< Abort command */
-} sdhc_command_type_t;
-
-/*!
- * @brief The command response type.
- *
- * Define the command response type from card to host controller.
- */
-typedef enum _sdhc_response_type
-{
-    kSDHC_ResponseTypeNone = 0U, /*!< Response type: none */
-    kSDHC_ResponseTypeR1 = 1U,   /*!< Response type: R1 */
-    kSDHC_ResponseTypeR1b = 2U,  /*!< Response type: R1b */
-    kSDHC_ResponseTypeR2 = 3U,   /*!< Response type: R2 */
-    kSDHC_ResponseTypeR3 = 4U,   /*!< Response type: R3 */
-    kSDHC_ResponseTypeR4 = 5U,   /*!< Response type: R4 */
-    kSDHC_ResponseTypeR5 = 6U,   /*!< Response type: R5 */
-    kSDHC_ResponseTypeR5b = 7U,  /*!< Response type: R5b */
-    kSDHC_ResponseTypeR6 = 8U,   /*!< Response type: R6 */
-    kSDHC_ResponseTypeR7 = 9U,   /*!< Response type: R7 */
-} sdhc_response_type_t;
-
-/*! @brief The alignment size for ADDRESS filed in ADMA1's descriptor */
-#define SDHC_ADMA1_ADDRESS_ALIGN (4096U)
-/*! @brief The alignment size for LENGTH field in ADMA1's descriptor */
-#define SDHC_ADMA1_LENGTH_ALIGN (4096U)
-/*! @brief The alignment size for ADDRESS field in ADMA2's descriptor */
-#define SDHC_ADMA2_ADDRESS_ALIGN (4U)
-/*! @brief The alignment size for LENGTH filed in ADMA2's descriptor */
-#define SDHC_ADMA2_LENGTH_ALIGN (4U)
-
-/* ADMA1 descriptor table
- * |------------------------|---------|--------------------------|
- * | Address/page field     |Reserved |         Attribute        |
- * |------------------------|---------|--------------------------|
- * |31                    12|11      6|05  |04  |03|02 |01 |00   |
- * |------------------------|---------|----|----|--|---|---|-----|
- * | address or data length | 000000  |Act2|Act1| 0|Int|End|Valid|
- * |------------------------|---------|----|----|--|---|---|-----|
- *
- *
- * |------|------|-----------------|-------|-------------|
- * | Act2 | Act1 |     Comment     | 31-28 | 27 - 12     |
- * |------|------|-----------------|---------------------|
- * |   0  |   0  | No op           | Don't care          |
- * |------|------|-----------------|-------|-------------|
- * |   0  |   1  | Set data length |  0000 | Data Length |
- * |------|------|-----------------|-------|-------------|
- * |   1  |   0  | Transfer data   | Data address        |
- * |------|------|-----------------|---------------------|
- * |   1  |   1  | Link descriptor | Descriptor address  |
- * |------|------|-----------------|---------------------|
- */
-/*! @brief The bit shift for ADDRESS filed in ADMA1's descriptor */
-#define SDHC_ADMA1_DESCRIPTOR_ADDRESS_SHIFT (12U)
-/*! @brief The bit mask for ADDRESS field in ADMA1's descriptor */
-#define SDHC_ADMA1_DESCRIPTOR_ADDRESS_MASK (0xFFFFFU)
-/*! @brief The bit shift for LENGTH filed in ADMA1's descriptor */
-#define SDHC_ADMA1_DESCRIPTOR_LENGTH_SHIFT (12U)
-/*! @brief The mask for LENGTH field in ADMA1's descriptor */
-#define SDHC_ADMA1_DESCRIPTOR_LENGTH_MASK (0xFFFFU)
-/*! @brief The max value of LENGTH filed in ADMA1's descriptor */
-#define SDHC_ADMA1_DESCRIPTOR_MAX_LENGTH_PER_ENTRY (SDHC_ADMA1_DESCRIPTOR_LENGTH_MASK + 1U)
-
-/*! @brief The mask for the control/status field in ADMA1 descriptor */
-enum _sdhc_adma1_descriptor_flag
-{
-    kSDHC_Adma1DescriptorValidFlag = (1U << 0U),                     /*!< Valid flag */
-    kSDHC_Adma1DescriptorEndFlag = (1U << 1U),                       /*!< End flag */
-    kSDHC_Adma1DescriptorInterrupFlag = (1U << 2U),                  /*!< Interrupt flag */
-    kSDHC_Adma1DescriptorActivity1Flag = (1U << 4U),                 /*!< Activity 1 flag */
-    kSDHC_Adma1DescriptorActivity2Flag = (1U << 5U),                 /*!< Activity 2 flag */
-    kSDHC_Adma1DescriptorTypeNop = (kSDHC_Adma1DescriptorValidFlag), /*!< No operation */
-    kSDHC_Adma1DescriptorTypeTransfer =
-        (kSDHC_Adma1DescriptorActivity2Flag | kSDHC_Adma1DescriptorValidFlag), /*!< Transfer data */
-    kSDHC_Adma1DescriptorTypeLink = (kSDHC_Adma1DescriptorActivity1Flag | kSDHC_Adma1DescriptorActivity2Flag |
-                                     kSDHC_Adma1DescriptorValidFlag), /*!< Link descriptor */
-    kSDHC_Adma1DescriptorTypeSetLength =
-        (kSDHC_Adma1DescriptorActivity1Flag | kSDHC_Adma1DescriptorValidFlag), /*!< Set data length */
-};
-
-/* ADMA2 descriptor table
- * |----------------|---------------|-------------|--------------------------|
- * | Address field  |     Length    | Reserved    |         Attribute        |
- * |----------------|---------------|-------------|--------------------------|
- * |63            32|31           16|15         06|05  |04  |03|02 |01 |00   |
- * |----------------|---------------|-------------|----|----|--|---|---|-----|
- * | 32-bit address | 16-bit length | 0000000000  |Act2|Act1| 0|Int|End|Valid|
- * |----------------|---------------|-------------|----|----|--|---|---|-----|
- *
- *
- * | Act2 | Act1 |     Comment     | Operation                                                         |
- * |------|------|-----------------|-------------------------------------------------------------------|
- * |   0  |   0  | No op           | Don't care                                                        |
- * |------|------|-----------------|-------------------------------------------------------------------|
- * |   0  |   1  | Reserved        | Read this line and go to next one                                 |
- * |------|------|-----------------|-------------------------------------------------------------------|
- * |   1  |   0  | Transfer data   | Transfer data with address and length set in this descriptor line |
- * |------|------|-----------------|-------------------------------------------------------------------|
- * |   1  |   1  | Link descriptor | Link to another descriptor                                        |
- * |------|------|-----------------|-------------------------------------------------------------------|
- */
-/*! @brief The bit shift for LENGTH field in ADMA2's descriptor */
-#define SDHC_ADMA2_DESCRIPTOR_LENGTH_SHIFT (16U)
-/*! @brief The bit mask for LENGTH field in ADMA2's descriptor */
-#define SDHC_ADMA2_DESCRIPTOR_LENGTH_MASK (0xFFFFU)
-/*! @brief The max value of LENGTH field in ADMA2's descriptor */
-#define SDHC_ADMA2_DESCRIPTOR_MAX_LENGTH_PER_ENTRY (SDHC_ADMA2_DESCRIPTOR_LENGTH_MASK)
-
-/*! @brief ADMA1 descriptor control and status mask */
-enum _sdhc_adma2_descriptor_flag
-{
-    kSDHC_Adma2DescriptorValidFlag = (1U << 0U),     /*!< Valid flag */
-    kSDHC_Adma2DescriptorEndFlag = (1U << 1U),       /*!< End flag */
-    kSDHC_Adma2DescriptorInterruptFlag = (1U << 2U), /*!< Interrupt flag */
-    kSDHC_Adma2DescriptorActivity1Flag = (1U << 4U), /*!< Activity 1 mask */
-    kSDHC_Adma2DescriptorActivity2Flag = (1U << 5U), /*!< Activity 2 mask */
-
-    kSDHC_Adma2DescriptorTypeNop = (kSDHC_Adma2DescriptorValidFlag), /*!< No operation */
-    kSDHC_Adma2DescriptorTypeReserved =
-        (kSDHC_Adma2DescriptorActivity1Flag | kSDHC_Adma2DescriptorValidFlag), /*!< Reserved */
-    kSDHC_Adma2DescriptorTypeTransfer =
-        (kSDHC_Adma2DescriptorActivity2Flag | kSDHC_Adma2DescriptorValidFlag), /*!< Transfer type */
-    kSDHC_Adma2DescriptorTypeLink = (kSDHC_Adma2DescriptorActivity1Flag | kSDHC_Adma2DescriptorActivity2Flag |
-                                     kSDHC_Adma2DescriptorValidFlag), /*!< Link type */
-};
-
-/*! @brief Define the adma1 descriptor structure. */
-typedef uint32_t sdhc_adma1_descriptor_t;
-
-/*! @brief Define the ADMA2 descriptor structure. */
-typedef struct _sdhc_adma2_descriptor
-{
-    uint32_t attribute;      /*!< The control and status field */
-    const uint32_t *address; /*!< The address field */
-} sdhc_adma2_descriptor_t;
-
-/*!
- * @brief SDHC capability information.
- *
- * Define structure to save the capability information of SDHC.
- */
-typedef struct _sdhc_capability
-{
-    uint32_t specVersion;    /*!< Specification version */
-    uint32_t vendorVersion;  /*!< Vendor version */
-    uint32_t maxBlockLength; /*!< Maximum block length united as byte */
-    uint32_t maxBlockCount;  /*!< Maximum block count can be set one time */
-    uint32_t flags;          /*!< Capability flags to indicate the support information(_sdhc_capability_flag) */
-} sdhc_capability_t;
-
-/*! @brief Card transfer configuration.
- *
- * Define structure to configure the transfer-related command index/argument/flags and data block
- * size/data block numbers. This structure needs to be filled each time a command is sent to the card.
- */
-typedef struct _sdhc_transfer_config
-{
-    size_t dataBlockSize;     /*!< Data block size */
-    uint32_t dataBlockCount;  /*!< Data block count */
-    uint32_t commandArgument; /*!< Command argument */
-    uint32_t commandIndex;    /*!< Command index */
-    uint32_t flags;           /*!< Transfer flags(_sdhc_transfer_flag) */
-} sdhc_transfer_config_t;
-
-/*! @brief Data structure to configure the MMC boot feature */
-typedef struct _sdhc_boot_config
-{
-    uint32_t ackTimeoutCount;      /*!< Timeout value for the boot ACK */
-    sdhc_boot_mode_t bootMode;     /*!< Boot mode selection. */
-    uint32_t blockCount;           /*!< Stop at block gap value of automatic mode */
-    bool enableBootAck;            /*!< Enable or disable boot ACK */
-    bool enableBoot;               /*!< Enable or disable fast boot */
-    bool enableAutoStopAtBlockGap; /*!< Enable or disable auto stop at block gap function in boot period */
-} sdhc_boot_config_t;
-
-/*! @brief Data structure to initialize the SDHC */
-typedef struct _sdhc_config
-{
-    bool cardDetectDat3;           /*!< Enable DAT3 as card detection pin */
-    sdhc_endian_mode_t endianMode; /*!< Endian mode */
-    sdhc_dma_mode_t dmaMode;       /*!< DMA mode */
-    uint32_t readWatermarkLevel;   /*!< Watermark level for DMA read operation */
-    uint32_t writeWatermarkLevel;  /*!< Watermark level for DMA write operation */
-} sdhc_config_t;
-
-/*!
- * @brief Card data descriptor
- *
- * Define structure to contain data-related attribute. 'enableIgnoreError' is used for the case that upper card driver
- * want to ignore the error event to read/write all the data not to stop read/write immediately when error event
- * happen for example bus testing procedure for MMC card.
- */
-typedef struct _sdhc_data
-{
-    bool enableAutoCommand12; /*!< Enable auto CMD12 */
-    bool enableIgnoreError;   /*!< Enable to ignore error event to read/write all the data */
-    size_t blockSize;         /*!< Block size */
-    uint32_t blockCount;      /*!< Block count */
-    uint32_t *rxData;         /*!< Buffer to save data read */
-    const uint32_t *txData;   /*!< Data buffer to write */
-} sdhc_data_t;
-
-/*!
- * @brief Card command descriptor
- *
- * Define card command-related attribute.
- */
-typedef struct _sdhc_command
-{
-    uint32_t index;                    /*!< Command index */
-    uint32_t argument;                 /*!< Command argument */
-    sdhc_command_type_t type;          /*!< Command type */
-    sdhc_response_type_t responseType; /*!< Command response type */
-    uint32_t response[4U];             /*!< Response for this command */
-} sdhc_command_t;
-
-/*! @brief Transfer state */
-typedef struct _sdhc_transfer
-{
-    sdhc_data_t *data;       /*!< Data to transfer */
-    sdhc_command_t *command; /*!< Command to send */
-} sdhc_transfer_t;
-
-/*! @brief SDHC handle typedef */
-typedef struct _sdhc_handle sdhc_handle_t;
-
-/*! @brief SDHC callback functions. */
-typedef struct _sdhc_transfer_callback
-{
-    void (*CardInserted)(void);  /*!< Card inserted occurs when DAT3/CD pin is for card detect */
-    void (*CardRemoved)(void);   /*!< Card removed occurs */
-    void (*SdioInterrupt)(void); /*!< SDIO card interrupt occurs */
-    void (*SdioBlockGap)(void);  /*!< SDIO card stopped at block gap occurs */
-    void (*TransferComplete)(SDHC_Type *base,
-                             sdhc_handle_t *handle,
-                             status_t status,
-                             void *userData); /*!< Transfer complete callback */
-} sdhc_transfer_callback_t;
-
-/*!
- * @brief Host descriptor
- *
- * Define the structure to save the SDHC state information and callback function. The detail interrupt status when
- * send command or transfer data can be obtained from interruptFlags field by using mask defined in sdhc_interrupt_flag_t;
- *
- * @note All the fields except interruptFlags and transferredWords must be allocated by the user.
- */
-struct _sdhc_handle
-{
-    /* Transfer parameter */
-    sdhc_data_t *volatile data;       /*!< Data to transfer */
-    sdhc_command_t *volatile command; /*!< Command to send */
-
-    /* Transfer status */
-    volatile uint32_t interruptFlags;   /*!< Interrupt flags of last transaction */
-    volatile uint32_t transferredWords; /*!< Words transferred by DATAPORT way */
-
-    /* Callback functions */
-    sdhc_transfer_callback_t callback; /*!< Callback function */
-    void *userData;                    /*!< Parameter for transfer complete callback */
-};
-
-/*! @brief SDHC transfer function. */
-typedef status_t (*sdhc_transfer_function_t)(SDHC_Type *base, sdhc_transfer_t *content);
-
-/*! @brief SDHC host descriptor */
-typedef struct _sdhc_host
-{
-    SDHC_Type *base;                   /*!< SDHC peripheral base address */
-    uint32_t sourceClock_Hz;           /*!< SDHC source clock frequency united in Hz */
-    sdhc_config_t config;              /*!< SDHC configuration */
-    sdhc_capability_t capability;      /*!< SDHC capability information */
-    sdhc_transfer_function_t transfer; /*!< SDHC transfer function */
-} sdhc_host_t;
-
-/*************************************************************************************************
- * API
- ************************************************************************************************/
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
- * @name Initialization and deinitialization
- * @{
- */
-
-/*!
- * @brief SDHC module initialization function.
- *
- * Configure the SDHC according to the user configuration.
- *
- * Example:
-   @code
-   sdhc_config_t config;
-   config.enableDat3AsCDPin = false;
-   config.endianMode = kSDHC_EndianModeLittle;
-   config.dmaMode = kSDHC_DmaModeAdma2;
-   config.readWatermarkLevel = 512U;
-   config.writeWatermarkLevel = 512U;
-   SDHC_Init(SDHC, &config);
-   @endcode
- *
- * @param base SDHC peripheral base address.
- * @param config SDHC configuration information.
- * @retval kStatus_Success Operate successfully.
- */
-void SDHC_Init(SDHC_Type *base, const sdhc_config_t *config);
-
-/*!
- * @brief Deinitialize the SDHC.
- *
- * @param base SDHC peripheral base address.
- */
-void SDHC_Deinit(SDHC_Type *base);
-
-/*!
- * @brief Reset the SDHC.
- *
- * @param base SDHC peripheral base address.
- * @param mask The reset type mask(_sdhc_reset).
- * @param timeout Timeout for reset.
- * @retval true Reset successfully.
- * @retval false Reset failed.
- */
-bool SDHC_Reset(SDHC_Type *base, uint32_t mask, uint32_t timeout);
-
-/* @} */
-
-/*!
- * @name DMA Control
- * @{
- */
-
-/*!
- * @brief Set ADMA descriptor table configuration.
- *
- * @param base SDHC peripheral base address.
- * @param dmaMode DMA mode.
- * @param table ADMA table address.
- * @param tableWords ADMA table buffer length united as Words.
- * @param data Data buffer address.
- * @param dataBytes Data length united as bytes.
- * @retval kStatus_OutOfRange ADMA descriptor table length isn't enough to describe data.
- * @retval kStatus_Success Operate successfully.
- */
-status_t SDHC_SetAdmaTableConfig(SDHC_Type *base,
-                                 sdhc_dma_mode_t dmaMode,
-                                 uint32_t *table,
-                                 uint32_t tableWords,
-                                 const uint32_t *data,
-                                 uint32_t dataBytes);
-
-/* @} */
-
-/*!
- * @name Interrupts
- * @{
- */
-
-/*!
- * @brief Enable interrupt status
- *
- * @param base SDHC peripheral base address.
- * @param mask Interrupt status flags mask(_sdhc_interrupt_status_flag).
- */
-static inline void SDHC_EnableInterruptStatus(SDHC_Type *base, uint32_t mask)
-{
-    base->IRQSTATEN |= mask;
-}
-
-/*!
- * @brief Disable interrupt status.
- *
- * @param base SDHC peripheral base address.
- * @param mask The interrupt status flags mask(_sdhc_interrupt_status_flag).
- */
-static inline void SDHC_DisableInterruptStatus(SDHC_Type *base, uint32_t mask)
-{
-    base->IRQSTATEN &= ~mask;
-}
-
-/*!
- * @brief Enable interrupts signal corresponding to the interrupt status flag.
- *
- * @param base SDHC peripheral base address.
- * @param mask The interrupt status flags mask(_sdhc_interrupt_status_flag).
- */
-static inline void SDHC_EnableInterruptSignal(SDHC_Type *base, uint32_t mask)
-{
-    base->IRQSIGEN |= mask;
-}
-
-/*!
- * @brief Disable interrupts signal corresponding to the interrupt status flag.
- *
- * @param base SDHC peripheral base address.
- * @param mask The interrupt status flags mask(_sdhc_interrupt_status_flag).
- */
-static inline void SDHC_DisableInterruptSignal(SDHC_Type *base, uint32_t mask)
-{
-    base->IRQSIGEN &= ~mask;
-}
-
-/* @} */
-
-/*!
- * @name Status
- * @{
- */
-
-/*!
- * @brief Get current interrupt status.
- *
- * @param base SDHC peripheral base address.
- * @return Current interrupt status flags mask(_sdhc_interrupt_status_flag).
- */
-static inline uint32_t SDHC_GetInterruptStatusFlags(SDHC_Type *base)
-{
-    return base->IRQSTAT;
-}
-
-/*!
- * @brief Clear specified interrupt status.
- *
- * @param base SDHC peripheral base address.
- * @param mask The interrupt status flags mask(_sdhc_interrupt_status_flag).
- */
-static inline void SDHC_ClearInterruptStatusFlags(SDHC_Type *base, uint32_t mask)
-{
-    base->IRQSTAT = mask;
-}
-
-/*!
- * @brief Get the status of auto command 12 error.
- *
- * @param base SDHC peripheral base address.
- * @return Auto command 12 error status flags mask(_sdhc_auto_command12_error_status_flag).
- */
-static inline uint32_t SDHC_GetAutoCommand12ErrorStatusFlags(SDHC_Type *base)
-{
-    return base->AC12ERR;
-}
-
-/*!
- * @brief Get the status of ADMA error.
- *
- * @param base SDHC peripheral base address.
- * @return ADMA error status flags mask(_sdhc_adma_error_status_flag).
- */
-static inline uint32_t SDHC_GetAdmaErrorStatusFlags(SDHC_Type *base)
-{
-    return base->ADMAES;
-}
-
-/*!
- * @brief Get present status.
- *
- * This function gets the present SDHC's status except for interrupt status and error status.
- *
- * @param base SDHC peripheral base address.
- * @return Present SDHC's status flags mask(_sdhc_present_status_flag).
- */
-static inline uint32_t SDHC_GetPresentStatusFlags(SDHC_Type *base)
-{
-    return base->PRSSTAT;
-}
-
-/* @} */
-
-/*!
- * @name Bus Operations
- * @{
- */
-
-/*!
- * @brief Get the capability information
- *
- * @param base SDHC peripheral base address.
- * @param capability Structure to save capability information.
- */
-void SDHC_GetCapability(SDHC_Type *base, sdhc_capability_t *capability);
-
-/*!
- * @brief Enable or disable SD bus clock.
- *
- * @param base SDHC peripheral base address.
- * @param enable True to enable, false to disable.
- */
-static inline void SDHC_EnableSdClock(SDHC_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->SYSCTL |= SDHC_SYSCTL_SDCLKEN_MASK;
-    }
-    else
-    {
-        base->SYSCTL &= ~SDHC_SYSCTL_SDCLKEN_MASK;
-    }
-}
-
-/*!
- * @brief Set SD bus clock frequency.
- *
- * @param base SDHC peripheral base address.
- * @param srcClock_Hz SDHC source clock frequency united in Hz.
- * @param busClock_Hz SD bus clock frequency united in Hz.
- *
- * @return The nearest frequency of busClock_Hz configured to SD bus.
- */
-uint32_t SDHC_SetSdClock(SDHC_Type *base, uint32_t srcClock_Hz, uint32_t busClock_Hz);
-
-/*!
- * @brief Send 80 clocks to the card to set it to be active state.
- *
- * This function must be called after each time the card is inserted to make card can receive command correctly.
- *
- * @param base SDHC peripheral base address.
- * @param timeout Timeout to initialize card.
- * @retval true Set card active successfully.
- * @retval false Set card active failed.
- */
-bool SDHC_SetCardActive(SDHC_Type *base, uint32_t timeout);
-
-/*!
- * @brief Set the data transfer width.
- *
- * @param base SDHC peripheral base address.
- * @param width Data transfer width.
- */
-static inline void SDHC_SetDataBusWidth(SDHC_Type *base, sdhc_data_bus_width_t width)
-{
-    base->PROCTL = ((base->PROCTL & ~SDHC_PROCTL_DTW_MASK) | SDHC_PROCTL_DTW(width));
-}
-
-/*!
- * @brief Set card transfer-related configuration.
- *
- * This function fills card transfer-related command argument/transfer flag/data size. Command and data will be sent by
- * SDHC after calling this function.
- *
- * Example:
-   @code
-   sdhc_transfer_config_t transferConfig;
-   transferConfig.dataBlockSize = 512U;
-   transferConfig.dataBlockCount = 2U;
-   transferConfig.commandArgument = 0x01AAU;
-   transferConfig.commandIndex = 8U;
-   transferConfig.flags |= (kSDHC_EnableDmaFlag | kSDHC_EnableAutoCommand12Flag | kSDHC_MultipleBlockFlag);
-   SDHC_SetTransferConfig(SDHC, &transferConfig);
-   @endcode
- *
- * @param base SDHC peripheral base address.
- * @param config Command configuration structure.
- */
-void SDHC_SetTransferConfig(SDHC_Type *base, const sdhc_transfer_config_t *config);
-
-/*!
- * @brief Get the command response.
- *
- * @param base SDHC peripheral base address.
- * @param index The index of response register, range from 0 to 3.
- * @return Response register transfer.
- */
-static inline uint32_t SDHC_GetCommandResponse(SDHC_Type *base, uint32_t index)
-{
-    assert(index < 4U);
-
-    return base->CMDRSP[index];
-}
-
-/*!
- * @brief Fill the the data port.
- *
- * This function is mainly used to implement the data transfer by Data Port instead of DMA.
- *
- * @param base SDHC peripheral base address.
- * @param data The data about to be sent.
- */
-static inline void SDHC_WriteData(SDHC_Type *base, uint32_t data)
-{
-    base->DATPORT = data;
-}
-
-/*!
- * @brief Retrieve the data from the data port.
- *
- * This function is mainly used to implement the data transfer by Data Port instead of DMA.
- *
- * @param base SDHC peripheral base address.
- * @return The data has been read.
- */
-static inline uint32_t SDHC_ReadData(SDHC_Type *base)
-{
-    return base->DATPORT;
-}
-
-/*!
- * @brief Enable or disable wakeup event in low power mode
- *
- * @param base SDHC peripheral base address.
- * @param mask Wakeup events mask(_sdhc_wakeup_event).
- * @param enable True to enable, false to disable.
- */
-static inline void SDHC_EnableWakeupEvent(SDHC_Type *base, uint32_t mask, bool enable)
-{
-    if (enable)
-    {
-        base->PROCTL |= mask;
-    }
-    else
-    {
-        base->PROCTL &= ~mask;
-    }
-}
-
-/*!
- * @brief Enable or disable card detection level for test.
- *
- * @param base SDHC peripheral base address.
- * @param enable True to enable, false to disable.
- */
-static inline void SDHC_EnableCardDetectTest(SDHC_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->PROCTL |= SDHC_PROCTL_CDSS_MASK;
-    }
-    else
-    {
-        base->PROCTL &= ~SDHC_PROCTL_CDSS_MASK;
-    }
-}
-
-/*!
- * @brief Set card detection test level.
- *
- * This function set the card detection test level to indicate whether the card is inserted into SDHC when DAT[3]/
- * CD pin is selected as card detection pin. This function can also assert the pin logic when DAT[3]/CD pin is select
- * as the card detection pin.
- *
- * @param base SDHC peripheral base address.
- * @param high True to set the card detect level to high.
- */
-static inline void SDHC_SetCardDetectTestLevel(SDHC_Type *base, bool high)
-{
-    if (high)
-    {
-        base->PROCTL |= SDHC_PROCTL_CDTL_MASK;
-    }
-    else
-    {
-        base->PROCTL &= ~SDHC_PROCTL_CDTL_MASK;
-    }
-}
-
-/*!
- * @brief Enable or disable SDIO card control.
- *
- * @param base SDHC peripheral base address.
- * @param mask SDIO card control flags mask(_sdhc_sdio_control_flag).
- * @param enable True to enable, false to disable.
- */
-void SDHC_EnableSdioControl(SDHC_Type *base, uint32_t mask, bool enable);
-
-/*!
- * @brief Restart a transaction which has stopped at the block gap for SDIO card.
- *
- * @param base SDHC peripheral base address.
- */
-static inline void SDHC_SetContinueRequest(SDHC_Type *base)
-{
-    base->PROCTL |= SDHC_PROCTL_CREQ_MASK;
-}
-
-/*!
- * @brief Configure the MMC boot feature.
- *
- * Example:
-   @code
-   sdhc_boot_config_t bootConfig;
-   bootConfig.ackTimeoutCount = 4;
-   bootConfig.bootMode = kSDHC_BootModeNormal;
-   bootConfig.blockCount = 5;
-   bootConfig.enableBootAck = true;
-   bootConfig.enableBoot = true;
-   enableBoot.enableAutoStopAtBlockGap = true;
-   SDHC_SetMmcBootConfig(SDHC, &bootConfig);
-   @endcode
- *
- * @param base SDHC peripheral base address.
- * @param config The MMC boot configuration information.
- */
-void SDHC_SetMmcBootConfig(SDHC_Type *base, const sdhc_boot_config_t *config);
-
-/*!
- * @brief Force to generate events according to the given mask.
- *
- * @param base SDHC peripheral base address.
- * @param mask The force events mask(_sdhc_force_event).
- */
-static inline void SDHC_SetForceEvent(SDHC_Type *base, uint32_t mask)
-{
-    base->FEVT = mask;
-}
-
-/* @} */
-
-/*!
- * @name Transactional
- * @{
- */
-
-/*!
- * @brief Transfer command/data using blocking way.
- *
- * This function waits until the command response/data is got or SDHC encounters error by polling the status flag.
- * Application must not call this API in multiple threads at the same time because of that this API doesn't support
- * reentry mechanism.
- *
- * @note Needn't to call the API 'SDHC_TransferCreateHandle' when calling this API.
- *
- * @param base SDHC peripheral base address.
- * @param admaTable ADMA table address, can't be null if transfer way is ADMA1/ADMA2.
- * @param admaTableWords ADMA table length united as words, can't be 0 if transfer way is ADMA1/ADMA2.
- * @param transfer Transfer content.
- * @retval kStatus_InvalidArgument Argument is invalid.
- * @retval kStatus_SDHC_PrepareAdmaDescriptorFailed Prepare ADMA descriptor failed.
- * @retval kStatus_SDHC_SendCommandFailed Send command failed.
- * @retval kStatus_SDHC_TransferDataFailed Transfer data failed.
- * @retval kStatus_Success Operate successfully.
- */
-status_t SDHC_TransferBlocking(SDHC_Type *base,
-                               uint32_t *admaTable,
-                               uint32_t admaTableWords,
-                               sdhc_transfer_t *transfer);
-
-/*!
- * @brief Create the SDHC handle.
- *
- * @param base SDHC peripheral base address.
- * @param handle SDHC handle pointer.
- * @param callback Structure pointer to contain all callback functions.
- * @param userData Callback function parameter.
- */
-void SDHC_TransferCreateHandle(SDHC_Type *base,
-                               sdhc_handle_t *handle,
-                               const sdhc_transfer_callback_t *callback,
-                               void *userData);
-
-/*!
- * @brief Transfer command/data using interrupt and asynchronous way.
- *
- * This function send command and data and return immediately. It doesn't wait the transfer complete or encounter error.
- * Application must not call this API in multiple threads at the same time because of that this API doesn't support
- * reentry mechanism.
- *
- * @note Must call the API 'SDHC_TransferCreateHandle' when calling this API.
- *
- * @param base SDHC peripheral base address.
- * @param handle SDHC handle.
- * @param admaTable ADMA table address, can't be null if transfer way is ADMA1/ADMA2.
- * @param admaTableWords ADMA table length united as words, can't be 0 if transfer way is ADMA1/ADMA2.
- * @param transfer Transfer content.
- * @retval kStatus_InvalidArgument Argument is invalid.
- * @retval kStatus_SDHC_BusyTransferring Busy transferring.
- * @retval kStatus_SDHC_PrepareAdmaDescriptorFailed Prepare ADMA descriptor failed.
- * @retval kStatus_Success Operate successfully.
- */
-status_t SDHC_TransferNonBlocking(
-    SDHC_Type *base, sdhc_handle_t *handle, uint32_t *admaTable, uint32_t admaTableWords, sdhc_transfer_t *transfer);
-
-/*!
- * @brief IRQ handler for SDHC
- *
- * This function deals with IRQs on the given host controller.
- *
- * @param base SDHC peripheral base address.
- * @param handle SDHC handle.
- */
-void SDHC_TransferHandleIRQ(SDHC_Type *base, sdhc_handle_t *handle);
-
-/* @} */
-
-#if defined(__cplusplus)
-}
-#endif
-/*! @} */
-
-#endif /* _FSL_SDHC_H_*/
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_sim.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
-* Copyright (c) 2015, Freescale Semiconductor, Inc.
-* All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without modification,
-* are permitted provided that the following conditions are met:
-*
-* o Redistributions of source code must retain the above copyright notice, this list
-*   of conditions and the following disclaimer.
-*
-* o Redistributions in binary form must reproduce the above copyright notice, this
-*   list of conditions and the following disclaimer in the documentation and/or
-*   other materials provided with the distribution.
-*
-* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-*   contributors may be used to endorse or promote products derived from this
-*   software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include "fsl_sim.h"
-
-/*******************************************************************************
- * Codes
- ******************************************************************************/
-#if (defined(FSL_FEATURE_SIM_OPT_HAS_USB_VOLTAGE_REGULATOR) && FSL_FEATURE_SIM_OPT_HAS_USB_VOLTAGE_REGULATOR)
-void SIM_SetUsbVoltRegulatorEnableMode(uint32_t mask)
-{
-    SIM->SOPT1CFG |= (SIM_SOPT1CFG_URWE_MASK | SIM_SOPT1CFG_UVSWE_MASK | SIM_SOPT1CFG_USSWE_MASK);
-
-    SIM->SOPT1 = (SIM->SOPT1 & ~kSIM_UsbVoltRegEnableInAllModes) | mask;
-}
-#endif /* FSL_FEATURE_SIM_OPT_HAS_USB_VOLTAGE_REGULATOR */
-
-void SIM_GetUniqueId(sim_uid_t *uid)
-{
-#if defined(SIM_UIDH)
-    uid->H = SIM->UIDH;
-#endif
-    uid->MH = SIM->UIDMH;
-    uid->ML = SIM->UIDML;
-    uid->L = SIM->UIDL;
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_sim.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-/*
-* Copyright (c) 2015, Freescale Semiconductor, Inc.
-* All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without modification,
-* are permitted provided that the following conditions are met:
-*
-* o Redistributions of source code must retain the above copyright notice, this list
-*   of conditions and the following disclaimer.
-*
-* o Redistributions in binary form must reproduce the above copyright notice, this
-*   list of conditions and the following disclaimer in the documentation and/or
-*   other materials provided with the distribution.
-*
-* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
-*   contributors may be used to endorse or promote products derived from this
-*   software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef _FSL_SIM_H_
-#define _FSL_SIM_H_
-
-#include "fsl_common.h"
-
-/*! @addtogroup sim */
-/*! @{*/
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- *******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-#define FSL_SIM_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) /*!< Driver version 2.0.0 */
-/*@}*/
-
-#if (defined(FSL_FEATURE_SIM_OPT_HAS_USB_VOLTAGE_REGULATOR) && FSL_FEATURE_SIM_OPT_HAS_USB_VOLTAGE_REGULATOR)
-/*!@brief USB voltage regulator enable setting. */
-enum _sim_usb_volt_reg_enable_mode
-{
-    kSIM_UsbVoltRegEnable = SIM_SOPT1_USBREGEN_MASK,           /*!< Enable voltage regulator. */
-    kSIM_UsbVoltRegEnableInLowPower = SIM_SOPT1_USBVSTBY_MASK, /*!< Enable voltage regulator in VLPR/VLPW modes. */
-    kSIM_UsbVoltRegEnableInStop = SIM_SOPT1_USBSSTBY_MASK, /*!< Enable voltage regulator in STOP/VLPS/LLS/VLLS modes. */
-    kSIM_UsbVoltRegEnableInAllModes = SIM_SOPT1_USBREGEN_MASK | SIM_SOPT1_USBSSTBY_MASK |
-                                      SIM_SOPT1_USBVSTBY_MASK /*!< Enable voltage regulator in all power modes. */
-};
-#endif /* (defined(FSL_FEATURE_SIM_OPT_HAS_USB_VOLTAGE_REGULATOR) && FSL_FEATURE_SIM_OPT_HAS_USB_VOLTAGE_REGULATOR) */
-
-/*!@brief Unique ID. */
-typedef struct _sim_uid
-{
-#if defined(SIM_UIDH)
-    uint32_t H; /*!< UIDH.  */
-#endif
-    uint32_t MH; /*!< UIDMH. */
-    uint32_t ML; /*!< UIDML. */
-    uint32_t L;  /*!< UIDL.  */
-} sim_uid_t;
-
-/*!@brief Flash enable mode. */
-enum _sim_flash_mode
-{
-    kSIM_FlashDisableInWait = SIM_FCFG1_FLASHDOZE_MASK, /*!< Disable flash in wait mode.   */
-    kSIM_FlashDisable = SIM_FCFG1_FLASHDIS_MASK         /*!< Disable flash in normal mode. */
-};
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif /* __cplusplus*/
-
-#if (defined(FSL_FEATURE_SIM_OPT_HAS_USB_VOLTAGE_REGULATOR) && FSL_FEATURE_SIM_OPT_HAS_USB_VOLTAGE_REGULATOR)
-/*!
- * @brief Sets the USB voltage regulator setting.
- *
- * This function configures whether the USB voltage regulator is enabled in
- * normal RUN mode, STOP/VLPS/LLS/VLLS modes and VLPR/VLPW modes. The configurations
- * are passed in as mask value of \ref _sim_usb_volt_reg_enable_mode. For example, enable
- * USB voltage regulator in RUN/VLPR/VLPW modes and disable in STOP/VLPS/LLS/VLLS mode,
- * please use:
- *
- * SIM_SetUsbVoltRegulatorEnableMode(kSIM_UsbVoltRegEnable | kSIM_UsbVoltRegEnableInLowPower);
- *
- * @param mask  USB voltage regulator enable setting.
- */
-void SIM_SetUsbVoltRegulatorEnableMode(uint32_t mask);
-#endif /* FSL_FEATURE_SIM_OPT_HAS_USB_VOLTAGE_REGULATOR */
-
-/*!
- * @brief Get the unique identification register value.
- *
- * @param uid Pointer to the structure to save the UID value.
- */
-void SIM_GetUniqueId(sim_uid_t *uid);
-
-/*!
- * @brief Set the flash enable mode.
- *
- * @param mode The mode to set, see \ref _sim_flash_mode for mode details.
- */
-static inline void SIM_SetFlashMode(uint8_t mode)
-{
-    SIM->FCFG1 = mode;
-}
-
-#if defined(__cplusplus)
-}
-#endif /* __cplusplus*/
-
-/*! @}*/
-
-#endif /* _FSL_SIM_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_smc.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,360 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_smc.h"
-
-#if (defined(FSL_FEATURE_SMC_HAS_PARAM) && FSL_FEATURE_SMC_HAS_PARAM)
-void SMC_GetParam(SMC_Type *base, smc_param_t *param)
-{
-    uint32_t reg = base->PARAM;
-    param->hsrunEnable = (bool)(reg & SMC_PARAM_EHSRUN_MASK);
-    param->llsEnable = (bool)(reg & SMC_PARAM_ELLS_MASK);
-    param->lls2Enable = (bool)(reg & SMC_PARAM_ELLS2_MASK);
-    param->vlls0Enable = (bool)(reg & SMC_PARAM_EVLLS0_MASK);
-}
-#endif /* FSL_FEATURE_SMC_HAS_PARAM */
-
-status_t SMC_SetPowerModeRun(SMC_Type *base)
-{
-    uint8_t reg;
-
-    reg = base->PMCTRL;
-    /* configure Normal RUN mode */
-    reg &= ~SMC_PMCTRL_RUNM_MASK;
-    reg |= (kSMC_RunNormal << SMC_PMCTRL_RUNM_SHIFT);
-    base->PMCTRL = reg;
-
-    return kStatus_Success;
-}
-
-#if (defined(FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE) && FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE)
-status_t SMC_SetPowerModeHsrun(SMC_Type *base)
-{
-    uint8_t reg;
-
-    reg = base->PMCTRL;
-    /* configure High Speed RUN mode */
-    reg &= ~SMC_PMCTRL_RUNM_MASK;
-    reg |= (kSMC_Hsrun << SMC_PMCTRL_RUNM_SHIFT);
-    base->PMCTRL = reg;
-
-    return kStatus_Success;
-}
-#endif /* FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE */
-
-status_t SMC_SetPowerModeWait(SMC_Type *base)
-{
-    /* configure Normal Wait mode */
-    SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;
-    __WFI();
-
-    return kStatus_Success;
-}
-
-status_t SMC_SetPowerModeStop(SMC_Type *base, smc_partial_stop_option_t option)
-{
-    uint8_t reg;
-
-#if (defined(FSL_FEATURE_SMC_HAS_PSTOPO) && FSL_FEATURE_SMC_HAS_PSTOPO)
-    /* configure the Partial Stop mode in Noraml Stop mode */
-    reg = base->STOPCTRL;
-    reg &= ~SMC_STOPCTRL_PSTOPO_MASK;
-    reg |= ((uint32_t)option << SMC_STOPCTRL_PSTOPO_SHIFT);
-    base->STOPCTRL = reg;
-#endif
-
-    /* configure Normal Stop mode */
-    reg = base->PMCTRL;
-    reg &= ~SMC_PMCTRL_STOPM_MASK;
-    reg |= (kSMC_StopNormal << SMC_PMCTRL_STOPM_SHIFT);
-    base->PMCTRL = reg;
-
-    /* Set the SLEEPDEEP bit to enable deep sleep mode (stop mode) */
-    SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
-
-    /* read back to make sure the configuration valid before enter stop mode */
-    (void)base->PMCTRL;
-    __WFI();
-
-    /* check whether the power mode enter Stop mode succeed */
-    if (base->PMCTRL & SMC_PMCTRL_STOPA_MASK)
-    {
-        return kStatus_SMC_StopAbort;
-    }
-    else
-    {
-        return kStatus_Success;
-    }
-}
-
-status_t SMC_SetPowerModeVlpr(SMC_Type *base
-#if (defined(FSL_FEATURE_SMC_HAS_LPWUI) && FSL_FEATURE_SMC_HAS_LPWUI)
-                              ,
-                              bool wakeupMode
-#endif
-                              )
-{
-    uint8_t reg;
-
-    reg = base->PMCTRL;
-#if (defined(FSL_FEATURE_SMC_HAS_LPWUI) && FSL_FEATURE_SMC_HAS_LPWUI)
-    /* configure whether the system remains in VLP mode on an interrupt */
-    if (wakeupMode)
-    {
-        /* exits to RUN mode on an interrupt */
-        reg |= SMC_PMCTRL_LPWUI_MASK;
-    }
-    else
-    {
-        /* remains in VLP mode on an interrupt */
-        reg &= ~SMC_PMCTRL_LPWUI_MASK;
-    }
-#endif /* FSL_FEATURE_SMC_HAS_LPWUI */
-
-    /* configure VLPR mode */
-    reg &= ~SMC_PMCTRL_RUNM_MASK;
-    reg |= (kSMC_RunVlpr << SMC_PMCTRL_RUNM_SHIFT);
-    base->PMCTRL = reg;
-
-    return kStatus_Success;
-}
-
-status_t SMC_SetPowerModeVlpw(SMC_Type *base)
-{
-    /* Power mode transaction to VLPW can only happen in VLPR mode */
-    if (kSMC_PowerStateVlpr != SMC_GetPowerModeState(base))
-    {
-        return kStatus_Fail;
-    }
-
-    /* configure VLPW mode */
-    /* Set the SLEEPDEEP bit to enable deep sleep mode */
-    SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;
-    __WFI();
-
-    return kStatus_Success;
-}
-
-status_t SMC_SetPowerModeVlps(SMC_Type *base)
-{
-    uint8_t reg;
-
-    /* configure VLPS mode */
-    reg = base->PMCTRL;
-    reg &= ~SMC_PMCTRL_STOPM_MASK;
-    reg |= (kSMC_StopVlps << SMC_PMCTRL_STOPM_SHIFT);
-    base->PMCTRL = reg;
-
-    /* Set the SLEEPDEEP bit to enable deep sleep mode */
-    SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
-
-    /* read back to make sure the configuration valid before enter stop mode */
-    (void)base->PMCTRL;
-    __WFI();
-
-    /* check whether the power mode enter VLPS mode succeed */
-    if (base->PMCTRL & SMC_PMCTRL_STOPA_MASK)
-    {
-        return kStatus_SMC_StopAbort;
-    }
-    else
-    {
-        return kStatus_Success;
-    }
-}
-
-#if (defined(FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE)
-status_t SMC_SetPowerModeLls(SMC_Type *base
-#if ((defined(FSL_FEATURE_SMC_HAS_LLS_SUBMODE) && FSL_FEATURE_SMC_HAS_LLS_SUBMODE) || \
-     (defined(FSL_FEATURE_SMC_HAS_LPOPO) && FSL_FEATURE_SMC_HAS_LPOPO))
-                             ,
-                             const smc_power_mode_lls_config_t *config
-#endif
-                             )
-{
-    uint8_t reg;
-
-    /* configure to LLS mode */
-    reg = base->PMCTRL;
-    reg &= ~SMC_PMCTRL_STOPM_MASK;
-    reg |= (kSMC_StopLls << SMC_PMCTRL_STOPM_SHIFT);
-    base->PMCTRL = reg;
-
-/* configure LLS sub-mode*/
-#if (defined(FSL_FEATURE_SMC_HAS_LLS_SUBMODE) && FSL_FEATURE_SMC_HAS_LLS_SUBMODE)
-    reg = base->STOPCTRL;
-    reg &= ~SMC_STOPCTRL_LLSM_MASK;
-    reg |= ((uint32_t)config->subMode << SMC_STOPCTRL_LLSM_SHIFT);
-    base->STOPCTRL = reg;
-#endif /* FSL_FEATURE_SMC_HAS_LLS_SUBMODE */
-
-#if (defined(FSL_FEATURE_SMC_HAS_LPOPO) && FSL_FEATURE_SMC_HAS_LPOPO)
-    if (config->enableLpoClock)
-    {
-        base->STOPCTRL &= ~SMC_STOPCTRL_LPOPO_MASK;
-    }
-    else
-    {
-        base->STOPCTRL |= SMC_STOPCTRL_LPOPO_MASK;
-    }
-#endif /* FSL_FEATURE_SMC_HAS_LPOPO */
-
-    /* Set the SLEEPDEEP bit to enable deep sleep mode */
-    SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
-
-    /* read back to make sure the configuration valid before enter stop mode */
-    (void)base->PMCTRL;
-    __WFI();
-
-    /* check whether the power mode enter LLS mode succeed */
-    if (base->PMCTRL & SMC_PMCTRL_STOPA_MASK)
-    {
-        return kStatus_SMC_StopAbort;
-    }
-    else
-    {
-        return kStatus_Success;
-    }
-}
-#endif /* FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE */
-
-#if (defined(FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE)
-status_t SMC_SetPowerModeVlls(SMC_Type *base, const smc_power_mode_vlls_config_t *config)
-{
-    uint8_t reg;
-
-#if (defined(FSL_FEATURE_SMC_HAS_PORPO) && FSL_FEATURE_SMC_HAS_PORPO)
-#if (defined(FSL_FEATURE_SMC_USE_VLLSCTRL_REG) && FSL_FEATURE_SMC_USE_VLLSCTRL_REG) ||     \
-    (defined(FSL_FEATURE_SMC_USE_STOPCTRL_VLLSM) && FSL_FEATURE_SMC_USE_STOPCTRL_VLLSM) || \
-    (defined(FSL_FEATURE_SMC_HAS_LLS_SUBMODE) && FSL_FEATURE_SMC_HAS_LLS_SUBMODE)
-    if (config->subMode == kSMC_StopSub0)
-#endif
-    {
-        /* configure whether the Por Detect work in Vlls0 mode */
-        if (config->enablePorDetectInVlls0)
-        {
-#if (defined(FSL_FEATURE_SMC_USE_VLLSCTRL_REG) && FSL_FEATURE_SMC_USE_VLLSCTRL_REG)
-            base->VLLSCTRL &= ~SMC_VLLSCTRL_PORPO_MASK;
-#else
-            base->STOPCTRL &= ~SMC_STOPCTRL_PORPO_MASK;
-#endif
-        }
-        else
-        {
-#if (defined(FSL_FEATURE_SMC_USE_VLLSCTRL_REG) && FSL_FEATURE_SMC_USE_VLLSCTRL_REG)
-            base->VLLSCTRL |= SMC_VLLSCTRL_PORPO_MASK;
-#else
-            base->STOPCTRL |= SMC_STOPCTRL_PORPO_MASK;
-#endif
-        }
-    }
-#endif /* FSL_FEATURE_SMC_HAS_PORPO */
-
-#if (defined(FSL_FEATURE_SMC_HAS_RAM2_POWER_OPTION) && FSL_FEATURE_SMC_HAS_RAM2_POWER_OPTION)
-    else if (config->subMode == kSMC_StopSub2)
-    {
-        /* configure whether the Por Detect work in Vlls0 mode */
-        if (config->enableRam2InVlls2)
-        {
-#if (defined(FSL_FEATURE_SMC_USE_VLLSCTRL_REG) && FSL_FEATURE_SMC_USE_VLLSCTRL_REG)
-            base->VLLSCTRL |= SMC_VLLSCTRL_RAM2PO_MASK;
-#else
-            base->STOPCTRL |= SMC_STOPCTRL_RAM2PO_MASK;
-#endif
-        }
-        else
-        {
-#if (defined(FSL_FEATURE_SMC_USE_VLLSCTRL_REG) && FSL_FEATURE_SMC_USE_VLLSCTRL_REG)
-            base->VLLSCTRL &= ~SMC_VLLSCTRL_RAM2PO_MASK;
-#else
-            base->STOPCTRL &= ~SMC_STOPCTRL_RAM2PO_MASK;
-#endif
-        }
-    }
-    else
-    {
-    }
-#endif /* FSL_FEATURE_SMC_HAS_RAM2_POWER_OPTION */
-
-    /* configure to VLLS mode */
-    reg = base->PMCTRL;
-    reg &= ~SMC_PMCTRL_STOPM_MASK;
-    reg |= (kSMC_StopVlls << SMC_PMCTRL_STOPM_SHIFT);
-    base->PMCTRL = reg;
-
-/* configure the VLLS sub-mode */
-#if (defined(FSL_FEATURE_SMC_USE_VLLSCTRL_REG) && FSL_FEATURE_SMC_USE_VLLSCTRL_REG)
-    reg = base->VLLSCTRL;
-    reg &= ~SMC_VLLSCTRL_VLLSM_MASK;
-    reg |= ((uint32_t)config->subMode << SMC_VLLSCTRL_VLLSM_SHIFT);
-    base->VLLSCTRL = reg;
-#else
-#if (defined(FSL_FEATURE_SMC_HAS_LLS_SUBMODE) && FSL_FEATURE_SMC_HAS_LLS_SUBMODE)
-    reg = base->STOPCTRL;
-    reg &= ~SMC_STOPCTRL_LLSM_MASK;
-    reg |= ((uint32_t)config->subMode << SMC_STOPCTRL_LLSM_SHIFT);
-    base->STOPCTRL = reg;
-#else
-    reg = base->STOPCTRL;
-    reg &= ~SMC_STOPCTRL_VLLSM_MASK;
-    reg |= ((uint32_t)config->subMode << SMC_STOPCTRL_VLLSM_SHIFT);
-    base->STOPCTRL = reg;
-#endif /* FSL_FEATURE_SMC_HAS_LLS_SUBMODE */
-#endif
-
-#if (defined(FSL_FEATURE_SMC_HAS_LPOPO) && FSL_FEATURE_SMC_HAS_LPOPO)
-    if (config->enableLpoClock)
-    {
-        base->STOPCTRL &= ~SMC_STOPCTRL_LPOPO_MASK;
-    }
-    else
-    {
-        base->STOPCTRL |= SMC_STOPCTRL_LPOPO_MASK;
-    }
-#endif /* FSL_FEATURE_SMC_HAS_LPOPO */
-
-    /* Set the SLEEPDEEP bit to enable deep sleep mode */
-    SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
-
-    /* read back to make sure the configuration valid before enter stop mode */
-    (void)base->PMCTRL;
-    __WFI();
-
-    /* check whether the power mode enter LLS mode succeed */
-    if (base->PMCTRL & SMC_PMCTRL_STOPA_MASK)
-    {
-        return kStatus_SMC_StopAbort;
-    }
-    else
-    {
-        return kStatus_Success;
-    }
-}
-#endif /* FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_smc.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,419 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _FSL_SMC_H_
-#define _FSL_SMC_H_
-
-#include "fsl_common.h"
-
-/*! @addtogroup smc */
-/*! @{ */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief SMC driver version 2.0.1. */
-#define FSL_SMC_DRIVER_VERSION (MAKE_VERSION(2, 0, 1))
-/*@}*/
-
-/*!
- * @brief Power Modes Protection
- */
-typedef enum _smc_power_mode_protection
-{
-#if (defined(FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE)
-    kSMC_AllowPowerModeVlls = SMC_PMPROT_AVLLS_MASK, /*!< Allow Very-Low-Leakage Stop Mode. */
-#endif
-#if (defined(FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE)
-    kSMC_AllowPowerModeLls = SMC_PMPROT_ALLS_MASK, /*!< Allow Low-Leakage Stop Mode.      */
-#endif                                             /* FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE */
-    kSMC_AllowPowerModeVlp = SMC_PMPROT_AVLP_MASK, /*!< Allow Very-Low-Power Mode.        */
-#if (defined(FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE) && FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE)
-    kSMC_AllowPowerModeHsrun = SMC_PMPROT_AHSRUN_MASK, /*!< Allow High Speed Run mode.        */
-#endif                                                 /* FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE */
-    kSMC_AllowPowerModeAll = (0U
-#if (defined(FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE)
-                              |
-                              SMC_PMPROT_AVLLS_MASK
-#endif
-#if (defined(FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE)
-                              |
-                              SMC_PMPROT_ALLS_MASK
-#endif /* FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE */
-                              |
-                              SMC_PMPROT_AVLP_MASK
-#if (defined(FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE) && FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE)
-                              |
-                              kSMC_AllowPowerModeHsrun
-#endif                          /* FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE */
-                              ) /*!< Allow all power mode.              */
-} smc_power_mode_protection_t;
-
-/*!
- * @brief Power Modes in PMSTAT
- */
-typedef enum _smc_power_state
-{
-    kSMC_PowerStateRun = 0x01U << 0U,  /*!< 0000_0001 - Current power mode is RUN   */
-    kSMC_PowerStateStop = 0x01U << 1U, /*!< 0000_0010 - Current power mode is STOP  */
-    kSMC_PowerStateVlpr = 0x01U << 2U, /*!< 0000_0100 - Current power mode is VLPR  */
-    kSMC_PowerStateVlpw = 0x01U << 3U, /*!< 0000_1000 - Current power mode is VLPW  */
-    kSMC_PowerStateVlps = 0x01U << 4U, /*!< 0001_0000 - Current power mode is VLPS  */
-#if (defined(FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE)
-    kSMC_PowerStateLls = 0x01U << 5U, /*!< 0010_0000 - Current power mode is LLS   */
-#endif                                /* FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE */
-#if (defined(FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE)
-    kSMC_PowerStateVlls = 0x01U << 6U, /*!< 0100_0000 - Current power mode is VLLS  */
-#endif
-#if (defined(FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE) && FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE)
-    kSMC_PowerStateHsrun = 0x01U << 7U /*!< 1000_0000 - Current power mode is HSRUN */
-#endif                                 /* FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE */
-} smc_power_state_t;
-
-/*!
- * @brief Run mode definition
- */
-typedef enum _smc_run_mode
-{
-    kSMC_RunNormal = 0U, /*!< normal RUN mode.             */
-    kSMC_RunVlpr = 2U,   /*!< Very-Low-Power RUN mode.     */
-#if (defined(FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE) && FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE)
-    kSMC_Hsrun = 3U /*!< High Speed Run mode (HSRUN). */
-#endif              /* FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE */
-} smc_run_mode_t;
-
-/*!
- * @brief Stop mode definition
- */
-typedef enum _smc_stop_mode
-{
-    kSMC_StopNormal = 0U, /*!< Normal STOP mode.           */
-    kSMC_StopVlps = 2U,   /*!< Very-Low-Power STOP mode.   */
-#if (defined(FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE)
-    kSMC_StopLls = 3U, /*!< Low-Leakage Stop mode.      */
-#endif                 /* FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE */
-#if (defined(FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE)
-    kSMC_StopVlls = 4U /*!< Very-Low-Leakage Stop mode. */
-#endif
-} smc_stop_mode_t;
-
-#if (defined(FSL_FEATURE_SMC_USE_VLLSCTRL_REG) && FSL_FEATURE_SMC_USE_VLLSCTRL_REG) ||     \
-    (defined(FSL_FEATURE_SMC_USE_STOPCTRL_VLLSM) && FSL_FEATURE_SMC_USE_STOPCTRL_VLLSM) || \
-    (defined(FSL_FEATURE_SMC_HAS_LLS_SUBMODE) && FSL_FEATURE_SMC_HAS_LLS_SUBMODE)
-/*!
- * @brief VLLS/LLS stop sub mode definition
- */
-typedef enum _smc_stop_submode
-{
-    kSMC_StopSub0 = 0U, /*!< Stop submode 0, for VLLS0/LLS0. */
-    kSMC_StopSub1 = 1U, /*!< Stop submode 1, for VLLS1/LLS1. */
-    kSMC_StopSub2 = 2U, /*!< Stop submode 2, for VLLS2/LLS2. */
-    kSMC_StopSub3 = 3U  /*!< Stop submode 3, for VLLS3/LLS3. */
-} smc_stop_submode_t;
-#endif
-
-/*!
- * @brief Partial STOP option
- */
-typedef enum _smc_partial_stop_mode
-{
-    kSMC_PartialStop = 0U,  /*!< STOP - Normal Stop mode*/
-    kSMC_PartialStop1 = 1U, /*!< Partial Stop with both system and bus clocks disabled*/
-    kSMC_PartialStop2 = 2U, /*!< Partial Stop with system clock disabled and bus clock enabled*/
-} smc_partial_stop_option_t;
-
-/*!
- * @brief SMC configuration status
- */
-enum _smc_status
-{
-    kStatus_SMC_StopAbort = MAKE_STATUS(kStatusGroup_POWER, 0) /*!< Entering Stop mode is abort*/
-};
-
-#if (defined(FSL_FEATURE_SMC_HAS_VERID) && FSL_FEATURE_SMC_HAS_VERID)
-/*!
- * @brief IP version ID definition.
- */
-typedef struct _smc_version_id
-{
-    uint16_t feature; /*!< Feature Specification Number. */
-    uint8_t minor;    /*!< Minor version number.         */
-    uint8_t major;    /*!< Major version number.         */
-} smc_version_id_t;
-#endif /* FSL_FEATURE_SMC_HAS_VERID */
-
-#if (defined(FSL_FEATURE_SMC_HAS_PARAM) && FSL_FEATURE_SMC_HAS_PARAM)
-/*!
- * @brief IP parameter definition.
- */
-typedef struct _smc_param
-{
-    bool hsrunEnable; /*!< HSRUN mode enable. */
-    bool llsEnable;   /*!< LLS mode enable.   */
-    bool lls2Enable;  /*!< LLS2 mode enable.  */
-    bool vlls0Enable; /*!< VLLS0 mode enable. */
-} smc_param_t;
-#endif /* FSL_FEATURE_SMC_HAS_PARAM */
-
-#if (defined(FSL_FEATURE_SMC_HAS_LLS_SUBMODE) && FSL_FEATURE_SMC_HAS_LLS_SUBMODE) || \
-    (defined(FSL_FEATURE_SMC_HAS_LPOPO) && FSL_FEATURE_SMC_HAS_LPOPO)
-/*!
- * @brief SMC Low-Leakage Stop power mode config
- */
-typedef struct _smc_power_mode_lls_config
-{
-#if (defined(FSL_FEATURE_SMC_HAS_LLS_SUBMODE) && FSL_FEATURE_SMC_HAS_LLS_SUBMODE)
-    smc_stop_submode_t subMode; /*!< Low-leakage Stop sub-mode */
-#endif
-#if (defined(FSL_FEATURE_SMC_HAS_LPOPO) && FSL_FEATURE_SMC_HAS_LPOPO)
-    bool enableLpoClock; /*!< Enable LPO clock in LLS mode */
-#endif
-} smc_power_mode_lls_config_t;
-#endif /* (FSL_FEATURE_SMC_HAS_LLS_SUBMODE || FSL_FEATURE_SMC_HAS_LPOPO) */
-
-#if (defined(FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE)
-/*!
- * @brief SMC Very Low-Leakage Stop power mode config
- */
-typedef struct _smc_power_mode_vlls_config
-{
-#if (defined(FSL_FEATURE_SMC_USE_VLLSCTRL_REG) && FSL_FEATURE_SMC_USE_VLLSCTRL_REG) ||     \
-    (defined(FSL_FEATURE_SMC_USE_STOPCTRL_VLLSM) && FSL_FEATURE_SMC_USE_STOPCTRL_VLLSM) || \
-    (defined(FSL_FEATURE_SMC_HAS_LLS_SUBMODE) && FSL_FEATURE_SMC_HAS_LLS_SUBMODE)
-    smc_stop_submode_t subMode; /*!< Very Low-leakage Stop sub-mode */
-#endif
-#if (defined(FSL_FEATURE_SMC_HAS_PORPO) && FSL_FEATURE_SMC_HAS_PORPO)
-    bool enablePorDetectInVlls0; /*!< Enable Power on reset detect in VLLS mode */
-#endif
-#if (defined(FSL_FEATURE_SMC_HAS_RAM2_POWER_OPTION) && FSL_FEATURE_SMC_HAS_RAM2_POWER_OPTION)
-    bool enableRam2InVlls2; /*!< Enable RAM2 power in VLLS2 */
-#endif
-#if (defined(FSL_FEATURE_SMC_HAS_LPOPO) && FSL_FEATURE_SMC_HAS_LPOPO)
-    bool enableLpoClock; /*!< Enable LPO clock in VLLS mode */
-#endif
-} smc_power_mode_vlls_config_t;
-#endif
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif /* __cplusplus */
-
-/*! @name System mode controller APIs*/
-/*@{*/
-
-#if (defined(FSL_FEATURE_SMC_HAS_VERID) && FSL_FEATURE_SMC_HAS_VERID)
-/*!
- * @brief Gets the SMC version ID.
- *
- * This function gets the SMC version ID, including major version number,
- * minor version number and feature specification number.
- *
- * @param base SMC peripheral base address.
- * @param versionId     Pointer to version ID structure.
- */
-static inline void SMC_GetVersionId(SMC_Type *base, smc_version_id_t *versionId)
-{
-    *((uint32_t *)versionId) = base->VERID;
-}
-#endif /* FSL_FEATURE_SMC_HAS_VERID */
-
-#if (defined(FSL_FEATURE_SMC_HAS_PARAM) && FSL_FEATURE_SMC_HAS_PARAM)
-/*!
- * @brief Gets the SMC parameter.
- *
- * This function gets the SMC parameter, including the enabled power mdoes.
- *
- * @param base SMC peripheral base address.
- * @param param         Pointer to SMC param structure.
- */
-void SMC_GetParam(SMC_Type *base, smc_param_t *param);
-#endif
-
-/*!
- * @brief Configures all power mode protection settings.
- *
- * This function  configures the power mode protection settings for
- * supported power modes in the specified chip family. The available power modes
- * are defined in the smc_power_mode_protection_t. This should be done at an early
- * system level initialization stage. See the reference manual for details.
- * This register can only write once after the power reset.
- *
- * The allowed modes are passed as bit map, for example, to allow LLS and VLLS,
- * use SMC_SetPowerModeProtection(kSMC_AllowPowerModeVlls | kSMC_AllowPowerModeVlps).
- * To allow all modes, use SMC_SetPowerModeProtection(kSMC_AllowPowerModeAll).
- *
- * @param base SMC peripheral base address.
- * @param allowedModes Bitmap of the allowed power modes.
- */
-static inline void SMC_SetPowerModeProtection(SMC_Type *base, uint8_t allowedModes)
-{
-    base->PMPROT = allowedModes;
-}
-
-/*!
- * @brief Gets the current power mode status.
- *
- * This function  returns the current power mode stat. Once application
- * switches the power mode, it should always check the stat to check whether it
- * runs into the specified mode or not. An application  should  check
- * this mode before switching to a different mode. The system  requires that
- * only certain modes can switch to other specific modes. See the
- * reference manual for details and the smc_power_state_t for information about
- * the power stat.
- *
- * @param base SMC peripheral base address.
- * @return Current power mode status.
- */
-static inline smc_power_state_t SMC_GetPowerModeState(SMC_Type *base)
-{
-    return (smc_power_state_t)base->PMSTAT;
-}
-
-/*!
- * @brief Configure the system to RUN power mode.
- *
- * @param base SMC peripheral base address.
- * @return SMC configuration error code.
- */
-status_t SMC_SetPowerModeRun(SMC_Type *base);
-
-#if (defined(FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE) && FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE)
-/*!
- * @brief Configure the system to HSRUN power mode.
- *
- * @param base SMC peripheral base address.
- * @return SMC configuration error code.
- */
-status_t SMC_SetPowerModeHsrun(SMC_Type *base);
-#endif /* FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE */
-
-/*!
- * @brief Configure the system to WAIT power mode.
- *
- * @param base SMC peripheral base address.
- * @return SMC configuration error code.
- */
-status_t SMC_SetPowerModeWait(SMC_Type *base);
-
-/*!
- * @brief Configure the system to Stop power mode.
- *
- * @param base SMC peripheral base address.
- * @param  option Partial Stop mode option.
- * @return SMC configuration error code.
- */
-status_t SMC_SetPowerModeStop(SMC_Type *base, smc_partial_stop_option_t option);
-
-#if (defined(FSL_FEATURE_SMC_HAS_LPWUI) && FSL_FEATURE_SMC_HAS_LPWUI)
-/*!
- * @brief Configure the system to VLPR power mode.
- *
- * @param base SMC peripheral base address.
- * @param  wakeupMode Enter Normal Run mode if true, else stay in VLPR mode.
- * @return SMC configuration error code.
- */
-status_t SMC_SetPowerModeVlpr(SMC_Type *base, bool wakeupMode);
-#else
-/*!
- * @brief Configure the system to VLPR power mode.
- *
- * @param base SMC peripheral base address.
- * @return SMC configuration error code.
- */
-status_t SMC_SetPowerModeVlpr(SMC_Type *base);
-#endif /* FSL_FEATURE_SMC_HAS_LPWUI */
-
-/*!
- * @brief Configure the system to VLPW power mode.
- *
- * @param base SMC peripheral base address.
- * @return SMC configuration error code.
- */
-status_t SMC_SetPowerModeVlpw(SMC_Type *base);
-
-/*!
- * @brief Configure the system to VLPS power mode.
- *
- * @param base SMC peripheral base address.
- * @return SMC configuration error code.
- */
-status_t SMC_SetPowerModeVlps(SMC_Type *base);
-
-#if (defined(FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE)
-#if ((defined(FSL_FEATURE_SMC_HAS_LLS_SUBMODE) && FSL_FEATURE_SMC_HAS_LLS_SUBMODE) || \
-     (defined(FSL_FEATURE_SMC_HAS_LPOPO) && FSL_FEATURE_SMC_HAS_LPOPO))
-/*!
- * @brief Configure the system to LLS power mode.
- *
- * @param base SMC peripheral base address.
- * @param  config The LLS power mode configuration structure
- * @return SMC configuration error code.
- */
-status_t SMC_SetPowerModeLls(SMC_Type *base, const smc_power_mode_lls_config_t *config);
-#else
-/*!
- * @brief Configure the system to LLS power mode.
- *
- * @param base SMC peripheral base address.
- * @return SMC configuration error code.
- */
-status_t SMC_SetPowerModeLls(SMC_Type *base);
-#endif
-#endif /* FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE */
-
-#if (defined(FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE)
-/*!
- * @brief Configure the system to VLLS power mode.
- *
- * @param base SMC peripheral base address.
- * @param  config The VLLS power mode configuration structure.
- * @return SMC configuration error code.
- */
-status_t SMC_SetPowerModeVlls(SMC_Type *base, const smc_power_mode_vlls_config_t *config);
-#endif /* FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE */
-
-/*@}*/
-
-#if defined(__cplusplus)
-}
-#endif /* __cplusplus */
-
-/*! @}*/
-
-#endif /* _FSL_SMC_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_uart.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1032 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_uart.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/* UART transfer state. */
-enum _uart_tansfer_states
-{
-    kUART_TxIdle, /* TX idle. */
-    kUART_TxBusy, /* TX busy. */
-    kUART_RxIdle, /* RX idle. */
-    kUART_RxBusy  /* RX busy. */
-};
-
-/* Typedef for interrupt handler. */
-typedef void (*uart_isr_t)(UART_Type *base, uart_handle_t *handle);
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-
-/*!
- * @brief Get the UART instance from peripheral base address.
- *
- * @param base UART peripheral base address.
- * @return UART instance.
- */
-uint32_t UART_GetInstance(UART_Type *base);
-
-/*!
- * @brief Get the length of received data in RX ring buffer.
- *
- * @param handle UART handle pointer.
- * @return Length of received data in RX ring buffer.
- */
-static size_t UART_TransferGetRxRingBufferLength(uart_handle_t *handle);
-
-/*!
- * @brief Check whether the RX ring buffer is full.
- *
- * @param handle UART handle pointer.
- * @retval true  RX ring buffer is full.
- * @retval false RX ring buffer is not full.
- */
-static bool UART_TransferIsRxRingBufferFull(uart_handle_t *handle);
-
-/*!
- * @brief Read RX register using non-blocking method.
- *
- * This function reads data from the TX register directly, upper layer must make
- * sure the RX register is full or TX FIFO has data before calling this function.
- *
- * @param base UART peripheral base address.
- * @param data Start addresss of the buffer to store the received data.
- * @param length Size of the buffer.
- */
-static void UART_ReadNonBlocking(UART_Type *base, uint8_t *data, size_t length);
-
-/*!
- * @brief Write to TX register using non-blocking method.
- *
- * This function writes data to the TX register directly, upper layer must make
- * sure the TX register is empty or TX FIFO has empty room before calling this function.
- *
- * @note This function does not check whether all the data has been sent out to bus,
- * so before disable TX, check kUART_TransmissionCompleteFlag to ensure the TX is
- * finished.
- *
- * @param base UART peripheral base address.
- * @param data Start addresss of the data to write.
- * @param length Size of the buffer to be sent.
- */
-static void UART_WriteNonBlocking(UART_Type *base, const uint8_t *data, size_t length);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-/* Array of UART handle. */
-#if (defined(UART5))
-#define UART_HANDLE_ARRAY_SIZE 6
-#else /* UART5 */
-#if (defined(UART4))
-#define UART_HANDLE_ARRAY_SIZE 5
-#else /* UART4 */
-#if (defined(UART3))
-#define UART_HANDLE_ARRAY_SIZE 4
-#else /* UART3 */
-#if (defined(UART2))
-#define UART_HANDLE_ARRAY_SIZE 3
-#else /* UART2 */
-#if (defined(UART1))
-#define UART_HANDLE_ARRAY_SIZE 2
-#else /* UART1 */
-#if (defined(UART0))
-#define UART_HANDLE_ARRAY_SIZE 1
-#else /* UART0 */
-#error No UART instance.
-#endif /* UART 0 */
-#endif /* UART 1 */
-#endif /* UART 2 */
-#endif /* UART 3 */
-#endif /* UART 4 */
-#endif /* UART 5 */
-static uart_handle_t *s_uartHandle[UART_HANDLE_ARRAY_SIZE];
-/* Array of UART peripheral base address. */
-static UART_Type *const s_uartBases[] = UART_BASE_PTRS;
-
-/* Array of UART IRQ number. */
-static const IRQn_Type s_uartIRQ[] = UART_RX_TX_IRQS;
-/* Array of UART clock name. */
-static const clock_ip_name_t s_uartClock[] = UART_CLOCKS;
-
-/* UART ISR for transactional APIs. */
-static uart_isr_t s_uartIsr;
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-
-uint32_t UART_GetInstance(UART_Type *base)
-{
-    uint32_t instance;
-    uint32_t uartArrayCount = (sizeof(s_uartBases) / sizeof(s_uartBases[0]));
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < uartArrayCount; instance++)
-    {
-        if (s_uartBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < uartArrayCount);
-
-    return instance;
-}
-
-static size_t UART_TransferGetRxRingBufferLength(uart_handle_t *handle)
-{
-    size_t size;
-
-    if (handle->rxRingBufferTail > handle->rxRingBufferHead)
-    {
-        size = (size_t)(handle->rxRingBufferHead + handle->rxRingBufferSize - handle->rxRingBufferTail);
-    }
-    else
-    {
-        size = (size_t)(handle->rxRingBufferHead - handle->rxRingBufferTail);
-    }
-
-    return size;
-}
-
-static bool UART_TransferIsRxRingBufferFull(uart_handle_t *handle)
-{
-    bool full;
-
-    if (UART_TransferGetRxRingBufferLength(handle) == (handle->rxRingBufferSize - 1U))
-    {
-        full = true;
-    }
-    else
-    {
-        full = false;
-    }
-
-    return full;
-}
-
-void UART_Init(UART_Type *base, const uart_config_t *config, uint32_t srcClock_Hz)
-{
-    assert(config);
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-    assert(FSL_FEATURE_UART_FIFO_SIZEn(base) >= config->txFifoWatermark);
-    assert(FSL_FEATURE_UART_FIFO_SIZEn(base) >= config->rxFifoWatermark);
-#endif
-
-    uint16_t sbr;
-    uint8_t temp;
-
-    /* Enable uart clock */
-    CLOCK_EnableClock(s_uartClock[UART_GetInstance(base)]);
-
-    /* Disable UART TX RX before setting. */
-    base->C2 &= ~(UART_C2_TE_MASK | UART_C2_RE_MASK);
-
-    /* Calculate the baud rate modulo divisor, sbr*/
-    sbr = srcClock_Hz / (config->baudRate_Bps * 16);
-
-    /* Write the sbr value to the BDH and BDL registers*/
-    base->BDH = (base->BDH & ~UART_BDH_SBR_MASK) | (uint8_t)(sbr >> 8);
-    base->BDL = (uint8_t)sbr;
-
-#if defined(FSL_FEATURE_UART_HAS_BAUD_RATE_FINE_ADJUST_SUPPORT) && FSL_FEATURE_UART_HAS_BAUD_RATE_FINE_ADJUST_SUPPORT
-    /* Determine if a fractional divider is needed to fine tune closer to the
-     * desired baud, each value of brfa is in 1/32 increments,
-     * hence the multiply-by-32. */
-    uint16_t brfa = (32 * srcClock_Hz / (config->baudRate_Bps * 16)) - 32 * sbr;
-
-    /* Write the brfa value to the register*/
-    base->C4 = (base->C4 & ~UART_C4_BRFA_MASK) | (brfa & UART_C4_BRFA_MASK);
-#endif
-
-    /* Set bit count and parity mode. */
-    temp = base->C1 & ~(UART_C1_PE_MASK | UART_C1_PT_MASK | UART_C1_M_MASK);
-
-    if (kUART_ParityDisabled != config->parityMode)
-    {
-        temp |= (UART_C1_M_MASK | (uint8_t)config->parityMode);
-    }
-
-    base->C1 = temp;
-
-#if defined(FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT) && FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT
-    /* Set stop bit per char */
-    base->BDH = (base->BDH & ~UART_BDH_SBNS_MASK) | UART_BDH_SBNS((uint8_t)config->stopBitCount);
-#endif
-
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-    /* Set tx/rx FIFO watermark */
-    base->TWFIFO = config->txFifoWatermark;
-    base->RWFIFO = config->rxFifoWatermark;
-
-    /* Enable tx/rx FIFO */
-    base->PFIFO |= (UART_PFIFO_TXFE_MASK | UART_PFIFO_RXFE_MASK);
-
-    /* Flush FIFO */
-    base->CFIFO |= (UART_CFIFO_TXFLUSH_MASK | UART_CFIFO_RXFLUSH_MASK);
-#endif
-
-    /* Enable TX/RX base on configure structure. */
-    temp = base->C2;
-
-    if (config->enableTx)
-    {
-        temp |= UART_C2_TE_MASK;
-    }
-
-    if (config->enableRx)
-    {
-        temp |= UART_C2_RE_MASK;
-    }
-
-    base->C2 = temp;
-}
-
-void UART_Deinit(UART_Type *base)
-{
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-    /* Wait tx FIFO send out*/
-    while (0 != base->TCFIFO)
-    {
-    }
-#endif
-    /* Wait last char shoft out */
-    while (0 == (base->S1 & UART_S1_TC_MASK))
-    {
-    }
-
-    /* Disable the module. */
-    base->C2 = 0;
-
-    /* Disable uart clock */
-    CLOCK_DisableClock(s_uartClock[UART_GetInstance(base)]);
-}
-
-void UART_GetDefaultConfig(uart_config_t *config)
-{
-    assert(config);
-
-    config->baudRate_Bps = 115200U;
-    config->parityMode = kUART_ParityDisabled;
-#if defined(FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT) && FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT
-    config->stopBitCount = kUART_OneStopBit;
-#endif
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-    config->txFifoWatermark = 0;
-    config->rxFifoWatermark = 1;
-#endif
-    config->enableTx = false;
-    config->enableRx = false;
-}
-
-void UART_SetBaudRate(UART_Type *base, uint32_t baudRate_Bps, uint32_t srcClock_Hz)
-{
-    uint16_t sbr;
-    uint8_t oldCtrl;
-
-    /* Store C2 before disable Tx and Rx */
-    oldCtrl = base->C2;
-
-    /* Disable UART TX RX before setting. */
-    base->C2 &= ~(UART_C2_TE_MASK | UART_C2_RE_MASK);
-
-    /* Calculate the baud rate modulo divisor, sbr*/
-    sbr = srcClock_Hz / (baudRate_Bps * 16);
-
-    /* Write the sbr value to the BDH and BDL registers*/
-    base->BDH = (base->BDH & ~UART_BDH_SBR_MASK) | (uint8_t)(sbr >> 8);
-    base->BDL = (uint8_t)sbr;
-
-#if defined(FSL_FEATURE_UART_HAS_BAUD_RATE_FINE_ADJUST_SUPPORT) && FSL_FEATURE_UART_HAS_BAUD_RATE_FINE_ADJUST_SUPPORT
-    /* Determine if a fractional divider is needed to fine tune closer to the
-     * desired baud, each value of brfa is in 1/32 increments,
-     * hence the multiply-by-32. */
-    uint16_t brfa = (32 * srcClock_Hz / (baudRate_Bps * 16)) - 32 * sbr;
-
-    /* Write the brfa value to the register*/
-    base->C4 = (base->C4 & ~UART_C4_BRFA_MASK) | (brfa & UART_C4_BRFA_MASK);
-#endif
-
-    /* Restore C2. */
-    base->C2 = oldCtrl;
-}
-
-void UART_EnableInterrupts(UART_Type *base, uint32_t mask)
-{
-    /* The interrupt mask is combined by control bits from several register: ((CFIFO<<24) | (C3<<16) | (C2<<8) |(BDH))
-     */
-    base->BDH |= (mask & 0xFF);
-    base->C2 |= ((mask >> 8) & 0xFF);
-    base->C3 |= ((mask >> 16) & 0xFF);
-
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-    base->CFIFO |= ((mask >> 24) & 0xFF);
-#endif
-}
-
-void UART_DisableInterrupts(UART_Type *base, uint32_t mask)
-{
-    /* The interrupt mask is combined by control bits from several register: ((CFIFO<<24) | (C3<<16) | (C2<<8) |(BDH))
-     */
-    base->BDH &= ~(mask & 0xFF);
-    base->C2 &= ~((mask >> 8) & 0xFF);
-    base->C3 &= ~((mask >> 16) & 0xFF);
-
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-    base->CFIFO &= ~((mask >> 24) & 0xFF);
-#endif
-}
-
-uint32_t UART_GetEnabledInterrupts(UART_Type *base)
-{
-    uint32_t temp;
-
-    temp = base->BDH | ((uint32_t)(base->C2) << 8) | ((uint32_t)(base->C3) << 16);
-
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-    temp |= ((uint32_t)(base->CFIFO) << 24);
-#endif
-
-    return temp;
-}
-
-uint32_t UART_GetStatusFlags(UART_Type *base)
-{
-    uint32_t status_flag;
-
-    status_flag = base->S1 | ((uint32_t)(base->S2) << 8);
-
-#if defined(FSL_FEATURE_UART_HAS_EXTENDED_DATA_REGISTER_FLAGS) && FSL_FEATURE_UART_HAS_EXTENDED_DATA_REGISTER_FLAGS
-    status_flag |= ((uint32_t)(base->ED) << 16);
-#endif
-
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-    status_flag |= ((uint32_t)(base->SFIFO) << 24);
-#endif
-
-    return status_flag;
-}
-
-status_t UART_ClearStatusFlags(UART_Type *base, uint32_t mask)
-{
-    uint8_t reg = base->S2;
-    status_t status;
-
-#if defined(FSL_FEATURE_UART_HAS_LIN_BREAK_DETECT) && FSL_FEATURE_UART_HAS_LIN_BREAK_DETECT
-    reg &= ~(UART_S2_RXEDGIF_MASK | UART_S2_LBKDIF_MASK);
-#else
-    reg &= ~UART_S2_RXEDGIF_MASK;
-#endif
-
-    base->S2 = reg | (uint8_t)(mask >> 8);
-
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-    base->SFIFO = (uint8_t)(mask >> 24);
-#endif
-
-    if (mask & (kUART_IdleLineFlag | kUART_RxOverrunFlag | kUART_NoiseErrorFlag | kUART_FramingErrorFlag |
-                kUART_ParityErrorFlag))
-    {
-        /* Read base->D to clear the flags. */
-        (void)base->S1;
-        (void)base->D;
-    }
-
-    /* If some flags still pending. */
-    if (mask & UART_GetStatusFlags(base))
-    {
-        /* Some flags can only clear or set by the hardware itself, these flags are: kUART_TxDataRegEmptyFlag,
-        kUART_TransmissionCompleteFlag, kUART_RxDataRegFullFlag, kUART_RxActiveFlag, kUART_NoiseErrorInRxDataRegFlag,
-        kUART_ParityErrorInRxDataRegFlag, kUART_TxFifoEmptyFlag, kUART_RxFifoEmptyFlag. */
-        status = kStatus_UART_FlagCannotClearManually;
-    }
-    else
-    {
-        status = kStatus_Success;
-    }
-
-    return status;
-}
-
-void UART_WriteBlocking(UART_Type *base, const uint8_t *data, size_t length)
-{
-    /* This API can only ensure that the data is written into the data buffer but can't
-    ensure all data in the data buffer are sent into the transmit shift buffer. */
-    while (length--)
-    {
-        while (!(base->S1 & UART_S1_TDRE_MASK))
-        {
-        }
-        base->D = *(data++);
-    }
-}
-
-static void UART_WriteNonBlocking(UART_Type *base, const uint8_t *data, size_t length)
-{
-    size_t i;
-
-    /* The Non Blocking write data API assume user have ensured there is enough space in
-    peripheral to write. */
-    for (i = 0; i < length; i++)
-    {
-        base->D = data[i];
-    }
-}
-
-status_t UART_ReadBlocking(UART_Type *base, uint8_t *data, size_t length)
-{
-    uint32_t statusFlag;
-
-    while (length--)
-    {
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-        while (!base->RCFIFO)
-#else
-        while (!(base->S1 & UART_S1_RDRF_MASK))
-#endif
-        {
-            statusFlag = UART_GetStatusFlags(base);
-
-            if (statusFlag & kUART_RxOverrunFlag)
-            {
-                return kStatus_UART_RxHardwareOverrun;
-            }
-
-            if (statusFlag & kUART_NoiseErrorFlag)
-            {
-                return kStatus_UART_NoiseError;
-            }
-
-            if (statusFlag & kUART_FramingErrorFlag)
-            {
-                return kStatus_UART_FramingError;
-            }
-
-            if (statusFlag & kUART_ParityErrorFlag)
-            {
-                return kStatus_UART_ParityError;
-            }
-        }
-        *(data++) = base->D;
-    }
-
-    return kStatus_Success;
-}
-
-static void UART_ReadNonBlocking(UART_Type *base, uint8_t *data, size_t length)
-{
-    size_t i;
-
-    /* The Non Blocking read data API assume user have ensured there is enough space in
-    peripheral to write. */
-    for (i = 0; i < length; i++)
-    {
-        data[i] = base->D;
-    }
-}
-
-void UART_TransferCreateHandle(UART_Type *base,
-                               uart_handle_t *handle,
-                               uart_transfer_callback_t callback,
-                               void *userData)
-{
-    assert(handle);
-
-    uint32_t instance;
-
-    /* Zero the handle. */
-    memset(handle, 0, sizeof(*handle));
-
-    /* Set the TX/RX state. */
-    handle->rxState = kUART_RxIdle;
-    handle->txState = kUART_TxIdle;
-
-    /* Set the callback and user data. */
-    handle->callback = callback;
-    handle->userData = userData;
-
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-    /* Note:
-       Take care of the RX FIFO, RX interrupt request only assert when received bytes
-       equal or more than RX water mark, there is potential issue if RX water
-       mark larger than 1.
-       For example, if RX FIFO water mark is 2, upper layer needs 5 bytes and
-       5 bytes are received. the last byte will be saved in FIFO but not trigger
-       RX interrupt because the water mark is 2.
-     */
-    base->RWFIFO = 1U;
-#endif
-
-    /* Get instance from peripheral base address. */
-    instance = UART_GetInstance(base);
-
-    /* Save the handle in global variables to support the double weak mechanism. */
-    s_uartHandle[instance] = handle;
-
-    s_uartIsr = UART_TransferHandleIRQ;
-
-    /* Enable interrupt in NVIC. */
-    EnableIRQ(s_uartIRQ[instance]);
-}
-
-void UART_TransferStartRingBuffer(UART_Type *base, uart_handle_t *handle, uint8_t *ringBuffer, size_t ringBufferSize)
-{
-    assert(handle);
-
-    /* Setup the ringbuffer address */
-    if (ringBuffer)
-    {
-        handle->rxRingBuffer = ringBuffer;
-        handle->rxRingBufferSize = ringBufferSize;
-        handle->rxRingBufferHead = 0U;
-        handle->rxRingBufferTail = 0U;
-
-        /* Enable the interrupt to accept the data when user need the ring buffer. */
-        UART_EnableInterrupts(base, kUART_RxDataRegFullInterruptEnable | kUART_RxOverrunInterruptEnable);
-    }
-}
-
-void UART_TransferStopRingBuffer(UART_Type *base, uart_handle_t *handle)
-{
-    assert(handle);
-
-    if (handle->rxState == kUART_RxIdle)
-    {
-        UART_DisableInterrupts(base, kUART_RxDataRegFullInterruptEnable | kUART_RxOverrunInterruptEnable);
-    }
-
-    handle->rxRingBuffer = NULL;
-    handle->rxRingBufferSize = 0U;
-    handle->rxRingBufferHead = 0U;
-    handle->rxRingBufferTail = 0U;
-}
-
-status_t UART_TransferSendNonBlocking(UART_Type *base, uart_handle_t *handle, uart_transfer_t *xfer)
-{
-    status_t status;
-
-    /* Return error if xfer invalid. */
-    if ((0U == xfer->dataSize) || (NULL == xfer->data))
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* Return error if current TX busy. */
-    if (kUART_TxBusy == handle->txState)
-    {
-        status = kStatus_UART_TxBusy;
-    }
-    else
-    {
-        handle->txData = xfer->data;
-        handle->txDataSize = xfer->dataSize;
-        handle->txDataSizeAll = xfer->dataSize;
-        handle->txState = kUART_TxBusy;
-
-        /* Enable transmiter interrupt. */
-        UART_EnableInterrupts(base, kUART_TxDataRegEmptyInterruptEnable);
-
-        status = kStatus_Success;
-    }
-
-    return status;
-}
-
-void UART_TransferAbortSend(UART_Type *base, uart_handle_t *handle)
-{
-    UART_DisableInterrupts(base, kUART_TxDataRegEmptyInterruptEnable | kUART_TransmissionCompleteInterruptEnable);
-
-    handle->txDataSize = 0;
-    handle->txState = kUART_TxIdle;
-}
-
-status_t UART_TransferGetSendCount(UART_Type *base, uart_handle_t *handle, uint32_t *count)
-{
-    if (kUART_TxIdle == handle->txState)
-    {
-        return kStatus_NoTransferInProgress;
-    }
-
-    if (!count)
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    *count = handle->txDataSizeAll - handle->txDataSize;
-
-    return kStatus_Success;
-}
-
-status_t UART_TransferReceiveNonBlocking(UART_Type *base,
-                                         uart_handle_t *handle,
-                                         uart_transfer_t *xfer,
-                                         size_t *receivedBytes)
-{
-    uint32_t i;
-    status_t status;
-    /* How many bytes to copy from ring buffer to user memory. */
-    size_t bytesToCopy = 0U;
-    /* How many bytes to receive. */
-    size_t bytesToReceive;
-    /* How many bytes currently have received. */
-    size_t bytesCurrentReceived;
-    uint32_t regPrimask = 0U;
-
-    /* Return error if xfer invalid. */
-    if ((0U == xfer->dataSize) || (NULL == xfer->data))
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* How to get data:
-       1. If RX ring buffer is not enabled, then save xfer->data and xfer->dataSize
-          to uart handle, enable interrupt to store received data to xfer->data. When
-          all data received, trigger callback.
-       2. If RX ring buffer is enabled and not empty, get data from ring buffer first.
-          If there are enough data in ring buffer, copy them to xfer->data and return.
-          If there are not enough data in ring buffer, copy all of them to xfer->data,
-          save the xfer->data remained empty space to uart handle, receive data
-          to this empty space and trigger callback when finished. */
-
-    if (kUART_RxBusy == handle->rxState)
-    {
-        status = kStatus_UART_RxBusy;
-    }
-    else
-    {
-        bytesToReceive = xfer->dataSize;
-        bytesCurrentReceived = 0U;
-
-        /* If RX ring buffer is used. */
-        if (handle->rxRingBuffer)
-        {
-            /* Disable IRQ, protect ring buffer. */
-            regPrimask = DisableGlobalIRQ();
-
-            /* How many bytes in RX ring buffer currently. */
-            bytesToCopy = UART_TransferGetRxRingBufferLength(handle);
-
-            if (bytesToCopy)
-            {
-                bytesToCopy = MIN(bytesToReceive, bytesToCopy);
-
-                bytesToReceive -= bytesToCopy;
-
-                /* Copy data from ring buffer to user memory. */
-                for (i = 0U; i < bytesToCopy; i++)
-                {
-                    xfer->data[bytesCurrentReceived++] = handle->rxRingBuffer[handle->rxRingBufferTail];
-
-                    /* Wrap to 0. Not use modulo (%) because it might be large and slow. */
-                    if (handle->rxRingBufferTail + 1U == handle->rxRingBufferSize)
-                    {
-                        handle->rxRingBufferTail = 0U;
-                    }
-                    else
-                    {
-                        handle->rxRingBufferTail++;
-                    }
-                }
-            }
-
-            /* If ring buffer does not have enough data, still need to read more data. */
-            if (bytesToReceive)
-            {
-                /* No data in ring buffer, save the request to UART handle. */
-                handle->rxData = xfer->data + bytesCurrentReceived;
-                handle->rxDataSize = bytesToReceive;
-                handle->rxDataSizeAll = bytesToReceive;
-                handle->rxState = kUART_RxBusy;
-            }
-
-            /* Enable IRQ if previously enabled. */
-            EnableGlobalIRQ(regPrimask);
-
-            /* Call user callback since all data are received. */
-            if (0 == bytesToReceive)
-            {
-                if (handle->callback)
-                {
-                    handle->callback(base, handle, kStatus_UART_RxIdle, handle->userData);
-                }
-            }
-        }
-        /* Ring buffer not used. */
-        else
-        {
-            handle->rxData = xfer->data + bytesCurrentReceived;
-            handle->rxDataSize = bytesToReceive;
-            handle->rxDataSizeAll = bytesToReceive;
-            handle->rxState = kUART_RxBusy;
-
-            /* Enable RX interrupt. */
-            UART_EnableInterrupts(base, kUART_RxDataRegFullInterruptEnable | kUART_RxOverrunInterruptEnable);
-        }
-
-        /* Return the how many bytes have read. */
-        if (receivedBytes)
-        {
-            *receivedBytes = bytesCurrentReceived;
-        }
-
-        status = kStatus_Success;
-    }
-
-    return status;
-}
-
-void UART_TransferAbortReceive(UART_Type *base, uart_handle_t *handle)
-{
-    /* Only abort the receive to handle->rxData, the RX ring buffer is still working. */
-    if (!handle->rxRingBuffer)
-    {
-        /* Disable RX interrupt. */
-        UART_DisableInterrupts(base, kUART_RxDataRegFullInterruptEnable | kUART_RxOverrunInterruptEnable);
-    }
-
-    handle->rxDataSize = 0U;
-    handle->rxState = kUART_RxIdle;
-}
-
-status_t UART_TransferGetReceiveCount(UART_Type *base, uart_handle_t *handle, uint32_t *count)
-{
-    if (kUART_RxIdle == handle->rxState)
-    {
-        return kStatus_NoTransferInProgress;
-    }
-
-    if (!count)
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    *count = handle->rxDataSizeAll - handle->rxDataSize;
-
-    return kStatus_Success;
-}
-
-void UART_TransferHandleIRQ(UART_Type *base, uart_handle_t *handle)
-{
-    uint8_t count;
-    uint8_t tempCount;
-
-    assert(handle);
-
-    /* If RX overrun. */
-    if (UART_S1_OR_MASK & base->S1)
-    {
-        /* Read base->D, otherwise the RX does not work. */
-        (void)base->D;
-
-        /* Trigger callback. */
-        if (handle->callback)
-        {
-            handle->callback(base, handle, kStatus_UART_RxHardwareOverrun, handle->userData);
-        }
-    }
-
-    /* Receive data register full */
-    if ((UART_S1_RDRF_MASK & base->S1) && (UART_C2_RIE_MASK & base->C2))
-    {
-/* Get the size that can be stored into buffer for this interrupt. */
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-        count = base->RCFIFO;
-#else
-        count = 1;
-#endif
-
-        /* If handle->rxDataSize is not 0, first save data to handle->rxData. */
-        while ((count) && (handle->rxDataSize))
-        {
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-            tempCount = MIN(handle->rxDataSize, count);
-#else
-            tempCount = 1;
-#endif
-
-            /* Using non block API to read the data from the registers. */
-            UART_ReadNonBlocking(base, handle->rxData, tempCount);
-            handle->rxData += tempCount;
-            handle->rxDataSize -= tempCount;
-            count -= tempCount;
-
-            /* If all the data required for upper layer is ready, trigger callback. */
-            if (!handle->rxDataSize)
-            {
-                handle->rxState = kUART_RxIdle;
-
-                if (handle->callback)
-                {
-                    handle->callback(base, handle, kStatus_UART_RxIdle, handle->userData);
-                }
-            }
-        }
-
-        /* If use RX ring buffer, receive data to ring buffer. */
-        if (handle->rxRingBuffer)
-        {
-            while (count--)
-            {
-                /* If RX ring buffer is full, trigger callback to notify over run. */
-                if (UART_TransferIsRxRingBufferFull(handle))
-                {
-                    if (handle->callback)
-                    {
-                        handle->callback(base, handle, kStatus_UART_RxRingBufferOverrun, handle->userData);
-                    }
-                }
-
-                /* If ring buffer is still full after callback function, the oldest data is overrided. */
-                if (UART_TransferIsRxRingBufferFull(handle))
-                {
-                    /* Increase handle->rxRingBufferTail to make room for new data. */
-                    if (handle->rxRingBufferTail + 1U == handle->rxRingBufferSize)
-                    {
-                        handle->rxRingBufferTail = 0U;
-                    }
-                    else
-                    {
-                        handle->rxRingBufferTail++;
-                    }
-                }
-
-                /* Read data. */
-                handle->rxRingBuffer[handle->rxRingBufferHead] = base->D;
-
-                /* Increase handle->rxRingBufferHead. */
-                if (handle->rxRingBufferHead + 1U == handle->rxRingBufferSize)
-                {
-                    handle->rxRingBufferHead = 0U;
-                }
-                else
-                {
-                    handle->rxRingBufferHead++;
-                }
-            }
-        }
-        /* If no receive requst pending, stop RX interrupt. */
-        else if (!handle->rxDataSize)
-        {
-            UART_DisableInterrupts(base, kUART_RxDataRegFullInterruptEnable | kUART_RxOverrunInterruptEnable);
-        }
-        else
-        {
-        }
-    }
-
-    /* Send data register empty and the interrupt is enabled. */
-    if ((base->S1 & UART_S1_TDRE_MASK) && (base->C2 & UART_C2_TIE_MASK))
-    {
-/* Get the bytes that available at this moment. */
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-        count = FSL_FEATURE_UART_FIFO_SIZEn(base) - base->TCFIFO;
-#else
-        count = 1;
-#endif
-
-        while ((count) && (handle->txDataSize))
-        {
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-            tempCount = MIN(handle->txDataSize, count);
-#else
-            tempCount = 1;
-#endif
-
-            /* Using non block API to write the data to the registers. */
-            UART_WriteNonBlocking(base, handle->txData, tempCount);
-            handle->txData += tempCount;
-            handle->txDataSize -= tempCount;
-            count -= tempCount;
-
-            /* If all the data are written to data register, TX finished. */
-            if (!handle->txDataSize)
-            {
-                handle->txState = kUART_TxIdle;
-
-                /* Disable TX register empty interrupt. */
-                base->C2 = (base->C2 & ~UART_C2_TIE_MASK);
-
-                /* Trigger callback. */
-                if (handle->callback)
-                {
-                    handle->callback(base, handle, kStatus_UART_TxIdle, handle->userData);
-                }
-            }
-        }
-    }
-}
-
-void UART_TransferHandleErrorIRQ(UART_Type *base, uart_handle_t *handle)
-{
-    /* TODO: To be implemented. */
-}
-
-#if defined(UART0)
-#if ((!(defined(FSL_FEATURE_SOC_LPSCI_COUNT))) || \
-     ((defined(FSL_FEATURE_SOC_LPSCI_COUNT)) && (FSL_FEATURE_SOC_LPSCI_COUNT == 0)))
-void UART0_DriverIRQHandler(void)
-{
-    s_uartIsr(UART0, s_uartHandle[0]);
-}
-
-void UART0_RX_TX_DriverIRQHandler(void)
-{
-    UART0_DriverIRQHandler();
-}
-#endif
-#endif
-
-#if defined(UART1)
-void UART1_DriverIRQHandler(void)
-{
-    s_uartIsr(UART1, s_uartHandle[1]);
-}
-
-void UART1_RX_TX_DriverIRQHandler(void)
-{
-    UART1_DriverIRQHandler();
-}
-#endif
-
-#if defined(UART2)
-void UART2_DriverIRQHandler(void)
-{
-    s_uartIsr(UART2, s_uartHandle[2]);
-}
-
-void UART2_RX_TX_DriverIRQHandler(void)
-{
-    UART2_DriverIRQHandler();
-}
-
-#endif
-
-#if defined(UART3)
-void UART3_DriverIRQHandler(void)
-{
-    s_uartIsr(UART3, s_uartHandle[3]);
-}
-
-void UART3_RX_TX_DriverIRQHandler(void)
-{
-    UART3_DriverIRQHandler();
-}
-#endif
-
-#if defined(UART4)
-void UART4_DriverIRQHandler(void)
-{
-    s_uartIsr(UART4, s_uartHandle[4]);
-}
-
-void UART4_RX_TX_DriverIRQHandler(void)
-{
-    UART4_DriverIRQHandler();
-}
-#endif
-
-#if defined(UART5)
-void UART5_DriverIRQHandler(void)
-{
-    s_uartIsr(UART5, s_uartHandle[5]);
-}
-
-void UART5_RX_TX_DriverIRQHandler(void)
-{
-    UART5_DriverIRQHandler();
-}
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_uart.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,757 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_UART_H_
-#define _FSL_UART_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup uart_driver
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief UART driver version 2.1.0. */
-#define FSL_UART_DRIVER_VERSION (MAKE_VERSION(2, 1, 0))
-/*@}*/
-
-/*! @brief Error codes for the UART driver. */
-enum _uart_status
-{
-    kStatus_UART_TxBusy = MAKE_STATUS(kStatusGroup_UART, 0),              /*!< Transmitter is busy. */
-    kStatus_UART_RxBusy = MAKE_STATUS(kStatusGroup_UART, 1),              /*!< Receiver is busy. */
-    kStatus_UART_TxIdle = MAKE_STATUS(kStatusGroup_UART, 2),              /*!< UART transmitter is idle. */
-    kStatus_UART_RxIdle = MAKE_STATUS(kStatusGroup_UART, 3),              /*!< UART receiver is idle. */
-    kStatus_UART_TxWatermarkTooLarge = MAKE_STATUS(kStatusGroup_UART, 4), /*!< TX FIFO watermark too large  */
-    kStatus_UART_RxWatermarkTooLarge = MAKE_STATUS(kStatusGroup_UART, 5), /*!< RX FIFO watermark too large  */
-    kStatus_UART_FlagCannotClearManually =
-        MAKE_STATUS(kStatusGroup_UART, 6),                                /*!< UART flag can't be manually cleared. */
-    kStatus_UART_Error = MAKE_STATUS(kStatusGroup_UART, 7),               /*!< Error happens on UART. */
-    kStatus_UART_RxRingBufferOverrun = MAKE_STATUS(kStatusGroup_UART, 8), /*!< UART RX software ring buffer overrun. */
-    kStatus_UART_RxHardwareOverrun = MAKE_STATUS(kStatusGroup_UART, 9),   /*!< UART RX receiver overrun. */
-    kStatus_UART_NoiseError = MAKE_STATUS(kStatusGroup_UART, 10),         /*!< UART noise error. */
-    kStatus_UART_FramingError = MAKE_STATUS(kStatusGroup_UART, 11),       /*!< UART framing error. */
-    kStatus_UART_ParityError = MAKE_STATUS(kStatusGroup_UART, 12),        /*!< UART parity error. */
-};
-
-/*! @brief UART parity mode. */
-typedef enum _uart_parity_mode
-{
-    kUART_ParityDisabled = 0x0U, /*!< Parity disabled */
-    kUART_ParityEven = 0x2U,     /*!< Parity enabled, type even, bit setting: PE|PT = 10 */
-    kUART_ParityOdd = 0x3U,      /*!< Parity enabled, type odd,  bit setting: PE|PT = 11 */
-} uart_parity_mode_t;
-
-/*! @brief UART stop bit count. */
-typedef enum _uart_stop_bit_count
-{
-    kUART_OneStopBit = 0U, /*!< One stop bit */
-    kUART_TwoStopBit = 1U, /*!< Two stop bits */
-} uart_stop_bit_count_t;
-
-/*!
- * @brief UART interrupt configuration structure, default settings all disabled.
- *
- * This structure contains the settings for all of the UART interrupt configurations.
- */
-enum _uart_interrupt_enable
-{
-#if defined(FSL_FEATURE_UART_HAS_LIN_BREAK_DETECT) && FSL_FEATURE_UART_HAS_LIN_BREAK_DETECT
-    kUART_LinBreakInterruptEnable = (UART_BDH_LBKDIE_MASK), /*!< LIN break detect interrupt. */
-#endif
-    kUART_RxActiveEdgeInterruptEnable = (UART_BDH_RXEDGIE_MASK),   /*!< RX active edge interrupt. */
-    kUART_TxDataRegEmptyInterruptEnable = (UART_C2_TIE_MASK << 8), /*!< Transmit data register empty interrupt. */
-    kUART_TransmissionCompleteInterruptEnable = (UART_C2_TCIE_MASK << 8), /*!< Transmission complete interrupt. */
-    kUART_RxDataRegFullInterruptEnable = (UART_C2_RIE_MASK << 8),         /*!< Receiver data register full interrupt. */
-    kUART_IdleLineInterruptEnable = (UART_C2_ILIE_MASK << 8),             /*!< Idle line interrupt. */
-    kUART_RxOverrunInterruptEnable = (UART_C3_ORIE_MASK << 16),           /*!< Receiver overrun interrupt. */
-    kUART_NoiseErrorInterruptEnable = (UART_C3_NEIE_MASK << 16),          /*!< Noise error flag interrupt. */
-    kUART_FramingErrorInterruptEnable = (UART_C3_FEIE_MASK << 16),        /*!< Framing error flag interrupt. */
-    kUART_ParityErrorInterruptEnable = (UART_C3_PEIE_MASK << 16),         /*!< Parity error flag interrupt. */
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-    kUART_RxFifoOverflowInterruptEnable = (UART_CFIFO_TXOFE_MASK << 24),  /*!< TX FIFO overflow interrupt. */
-    kUART_TxFifoOverflowInterruptEnable = (UART_CFIFO_RXUFE_MASK << 24),  /*!< RX FIFO underflow interrupt. */
-    kUART_RxFifoUnderflowInterruptEnable = (UART_CFIFO_RXUFE_MASK << 24), /*!< RX FIFO underflow interrupt. */
-#endif
-};
-
-/*!
- * @brief UART status flags.
- *
- * This provides constants for the UART status flags for use in the UART functions.
- */
-enum _uart_flags
-{
-    kUART_TxDataRegEmptyFlag = (UART_S1_TDRE_MASK),     /*!< TX data register empty flag. */
-    kUART_TransmissionCompleteFlag = (UART_S1_TC_MASK), /*!< Transmission complete flag. */
-    kUART_RxDataRegFullFlag = (UART_S1_RDRF_MASK),      /*!< RX data register full flag. */
-    kUART_IdleLineFlag = (UART_S1_IDLE_MASK),           /*!< Idle line detect flag. */
-    kUART_RxOverrunFlag = (UART_S1_OR_MASK),            /*!< RX overrun flag. */
-    kUART_NoiseErrorFlag = (UART_S1_NF_MASK),           /*!< RX takes 3 samples of each received bit.
-                                                             If any of these samples differ, noise flag sets */
-    kUART_FramingErrorFlag = (UART_S1_FE_MASK),         /*!< Frame error flag, sets if logic 0 was detected
-                                                             where stop bit expected */
-    kUART_ParityErrorFlag = (UART_S1_PF_MASK),          /*!< If parity enabled, sets upon parity error detection */
-#if defined(FSL_FEATURE_UART_HAS_LIN_BREAK_DETECT) && FSL_FEATURE_UART_HAS_LIN_BREAK_DETECT
-    kUART_LinBreakFlag =
-        (UART_S2_LBKDIF_MASK << 8), /*!< LIN break detect interrupt flag, sets when
-                                                           LIN break char detected and LIN circuit enabled */
-#endif
-    kUART_RxActiveEdgeFlag = (UART_S2_RXEDGIF_MASK << 8), /*!< RX pin active edge interrupt flag,
-                                                                                 sets when active edge detected */
-    kUART_RxActiveFlag = (UART_S2_RAF_MASK << 8),         /*!< Receiver Active Flag (RAF),
-                                                                                 sets at beginning of valid start bit */
-#if defined(FSL_FEATURE_UART_HAS_EXTENDED_DATA_REGISTER_FLAGS) && FSL_FEATURE_UART_HAS_EXTENDED_DATA_REGISTER_FLAGS
-    kUART_NoiseErrorInRxDataRegFlag = (UART_ED_NOISY_MASK << 16),    /*!< Noisy bit, sets if noise detected. */
-    kUART_ParityErrorInRxDataRegFlag = (UART_ED_PARITYE_MASK << 16), /*!< Paritye bit, sets if parity error detected. */
-#endif
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-    kUART_TxFifoEmptyFlag = (UART_SFIFO_TXEMPT_MASK << 24),   /*!< TXEMPT bit, sets if TX buffer is empty */
-    kUART_RxFifoEmptyFlag = (UART_SFIFO_RXEMPT_MASK << 24),   /*!< RXEMPT bit, sets if RX buffer is empty */
-    kUART_TxFifoOverflowFlag = (UART_SFIFO_TXOF_MASK << 24),  /*!< TXOF bit, sets if TX buffer overflow occurred */
-    kUART_RxFifoOverflowFlag = (UART_SFIFO_RXOF_MASK << 24),  /*!< RXOF bit, sets if receive buffer overflow */
-    kUART_RxFifoUnderflowFlag = (UART_SFIFO_RXUF_MASK << 24), /*!< RXUF bit, sets if receive buffer underflow */
-#endif
-};
-
-/*! @brief UART configuration structure. */
-typedef struct _uart_config
-{
-    uint32_t baudRate_Bps;         /*!< UART baud rate  */
-    uart_parity_mode_t parityMode; /*!< Parity mode, disabled (default), even, odd */
-#if defined(FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT) && FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT
-    uart_stop_bit_count_t stopBitCount; /*!< Number of stop bits, 1 stop bit (default) or 2 stop bits  */
-#endif
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-    uint8_t txFifoWatermark; /*!< TX FIFO watermark */
-    uint8_t rxFifoWatermark; /*!< RX FIFO watermark */
-#endif
-    bool enableTx; /*!< Enable TX */
-    bool enableRx; /*!< Enable RX */
-} uart_config_t;
-
-/*! @brief UART transfer structure. */
-typedef struct _uart_transfer
-{
-    uint8_t *data;   /*!< The buffer of data to be transfer.*/
-    size_t dataSize; /*!< The byte count to be transfer. */
-} uart_transfer_t;
-
-/* Forward declaration of the handle typedef. */
-typedef struct _uart_handle uart_handle_t;
-
-/*! @brief UART transfer callback function. */
-typedef void (*uart_transfer_callback_t)(UART_Type *base, uart_handle_t *handle, status_t status, void *userData);
-
-/*! @brief UART handle structure. */
-struct _uart_handle
-{
-    uint8_t *volatile txData;   /*!< Address of remaining data to send. */
-    volatile size_t txDataSize; /*!< Size of the remaining data to send. */
-    size_t txDataSizeAll;       /*!< Size of the data to send out. */
-    uint8_t *volatile rxData;   /*!< Address of remaining data to receive. */
-    volatile size_t rxDataSize; /*!< Size of the remaining data to receive. */
-    size_t rxDataSizeAll;       /*!< Size of the data to receive. */
-
-    uint8_t *rxRingBuffer;              /*!< Start address of the receiver ring buffer. */
-    size_t rxRingBufferSize;            /*!< Size of the ring buffer. */
-    volatile uint16_t rxRingBufferHead; /*!< Index for the driver to store received data into ring buffer. */
-    volatile uint16_t rxRingBufferTail; /*!< Index for the user to get data from the ring buffer. */
-
-    uart_transfer_callback_t callback; /*!< Callback function. */
-    void *userData;                    /*!< UART callback function parameter.*/
-
-    volatile uint8_t txState; /*!< TX transfer state. */
-    volatile uint8_t rxState; /*!< RX transfer state */
-};
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif /* _cplusplus */
-
-/*!
- * @name Initialization and deinitialization
- * @{
- */
-
-/*!
- * @brief Initializes a UART instance with user configuration structure and peripheral clock.
- *
- * This function configures the UART module with the user-defined settings. The user can configure the configuration
- * structure and also get the default configuration by using the UART_GetDefaultConfig() function.
- * Example below shows how to use this API to configure UART.
- * @code
- *  uart_config_t uartConfig;
- *  uartConfig.baudRate_Bps = 115200U;
- *  uartConfig.parityMode = kUART_ParityDisabled;
- *  uartConfig.stopBitCount = kUART_OneStopBit;
- *  uartConfig.txFifoWatermark = 0;
- *  uartConfig.rxFifoWatermark = 1;
- *  UART_Init(UART1, &uartConfig, 20000000U);
- * @endcode
- *
- * @param base UART peripheral base address.
- * @param config Pointer to user-defined configuration structure.
- * @param srcClock_Hz UART clock source frequency in HZ.
- */
-void UART_Init(UART_Type *base, const uart_config_t *config, uint32_t srcClock_Hz);
-
-/*!
- * @brief Deinitializes a UART instance.
- *
- * This function waits for TX complete, disables TX and RX, and disables the UART clock.
- *
- * @param base UART peripheral base address.
- */
-void UART_Deinit(UART_Type *base);
-
-/*!
- * @brief Gets the default configuration structure.
- *
- * This function initializes the UART configuration structure to a default value. The default
- * values are:
- *   uartConfig->baudRate_Bps = 115200U;
- *   uartConfig->bitCountPerChar = kUART_8BitsPerChar;
- *   uartConfig->parityMode = kUART_ParityDisabled;
- *   uartConfig->stopBitCount = kUART_OneStopBit;
- *   uartConfig->txFifoWatermark = 0;
- *   uartConfig->rxFifoWatermark = 1;
- *   uartConfig->enableTx = false;
- *   uartConfig->enableRx = false;
- *
- * @param config Pointer to configuration structure.
- */
-void UART_GetDefaultConfig(uart_config_t *config);
-
-/*!
- * @brief Sets the UART instance baud rate.
- *
- * This function configures the UART module baud rate. This function is used to update
- * the UART module baud rate after the UART module is initialized by the UART_Init.
- * @code
- *  UART_SetBaudRate(UART1, 115200U, 20000000U);
- * @endcode
- *
- * @param base UART peripheral base address.
- * @param baudRate_Bps UART baudrate to be set.
- * @param srcClock_Hz UART clock source freqency in HZ.
- */
-void UART_SetBaudRate(UART_Type *base, uint32_t baudRate_Bps, uint32_t srcClock_Hz);
-
-/* @} */
-
-/*!
- * @name Status
- * @{
- */
-
-/*!
- * @brief Get UART status flags.
- *
- * This function get all UART status flags, the flags are returned as the logical
- * OR value of the enumerators @ref _uart_flags. To check specific status,
- * compare the return value with enumerators in @ref _uart_flags.
- * For example, to check whether the TX is empty:
- * @code
- *     if (kUART_TxDataRegEmptyFlag & UART_GetStatusFlags(UART1))
- *     {
- *         ...
- *     }
- * @endcode
- *
- * @param base UART peripheral base address.
- * @return UART status flags which are ORed by the enumerators in the _uart_flags.
- */
-uint32_t UART_GetStatusFlags(UART_Type *base);
-
-/*!
- * @brief Clears status flags with the provided mask.
- *
- * This function clears UART status flags with a provided mask. Automatically cleared flag
- * can't be cleared by this function.
- * Some flags can only be cleared or set by hardware itself. These flags are:
- *    kUART_TxDataRegEmptyFlag, kUART_TransmissionCompleteFlag, kUART_RxDataRegFullFlag,
- *    kUART_RxActiveFlag, kUART_NoiseErrorInRxDataRegFlag, kUART_ParityErrorInRxDataRegFlag,
- *    kUART_TxFifoEmptyFlag,kUART_RxFifoEmptyFlag
- * Note: This API should be called when the Tx/Rx is idle, otherwise it takes no effects.
- *
- * @param base UART peripheral base address.
- * @param mask The status flags to be cleared, it is logical OR value of @ref _uart_flags.
- * @retval kStatus_UART_FlagCannotClearManually The flag can't be cleared by this function but
- *         it is cleared automatically by hardware.
- * @retval kStatus_Success Status in the mask are cleared.
- */
-status_t UART_ClearStatusFlags(UART_Type *base, uint32_t mask);
-
-/* @} */
-
-/*!
- * @name Interrupts
- * @{
- */
-
-/*!
- * @brief Enables UART interrupts according to the provided mask.
- *
- * This function enables the UART interrupts according to the provided mask. The mask
- * is a logical OR of enumeration members. See @ref _uart_interrupt_enable.
- * For example, to enable TX empty interrupt and RX full interrupt:
- * @code
- *     UART_EnableInterrupts(UART1,kUART_TxDataRegEmptyInterruptEnable | kUART_RxDataRegFullInterruptEnable);
- * @endcode
- *
- * @param base UART peripheral base address.
- * @param mask The interrupts to enable. Logical OR of @ref _uart_interrupt_enable.
- */
-void UART_EnableInterrupts(UART_Type *base, uint32_t mask);
-
-/*!
- * @brief Disables the UART interrupts according to the provided mask.
- *
- * This function disables the UART interrupts according to the provided mask. The mask
- * is a logical OR of enumeration members. See @ref _uart_interrupt_enable.
- * For example, to disable TX empty interrupt and RX full interrupt:
- * @code
- *     UART_DisableInterrupts(UART1,kUART_TxDataRegEmptyInterruptEnable | kUART_RxDataRegFullInterruptEnable);
- * @endcode
- *
- * @param base UART peripheral base address.
- * @param mask The interrupts to disable. Logical OR of @ref _uart_interrupt_enable.
- */
-void UART_DisableInterrupts(UART_Type *base, uint32_t mask);
-
-/*!
- * @brief Gets the enabled UART interrupts.
- *
- * This function gets the enabled UART interrupts. The enabled interrupts are returned
- * as the logical OR value of the enumerators @ref _uart_interrupt_enable. To check
- * specific interrupts enable status, compare the return value with enumerators
- * in @ref _uart_interrupt_enable.
- * For example, to check whether TX empty interrupt is enabled:
- * @code
- *     uint32_t enabledInterrupts = UART_GetEnabledInterrupts(UART1);
- *
- *     if (kUART_TxDataRegEmptyInterruptEnable & enabledInterrupts)
- *     {
- *         ...
- *     }
- * @endcode
- *
- * @param base UART peripheral base address.
- * @return UART interrupt flags which are logical OR of the enumerators in @ref _uart_interrupt_enable.
- */
-uint32_t UART_GetEnabledInterrupts(UART_Type *base);
-
-/* @} */
-
-#if defined(FSL_FEATURE_UART_HAS_DMA_SELECT) && FSL_FEATURE_UART_HAS_DMA_SELECT
-/*!
- * @name DMA Control
- * @{
- */
-
-/*!
- * @brief Gets the UART data register address.
- *
- * This function returns the UART data register address, which is mainly used by DMA/eDMA.
- *
- * @param base UART peripheral base address.
- * @return UART data register address which are used both by transmitter and receiver.
- */
-static inline uint32_t UART_GetDataRegisterAddress(UART_Type *base)
-{
-    return (uint32_t) & (base->D);
-}
-
-/*!
- * @brief Enables or disables the UART transmitter DMA request.
- *
- * This function enables or disables the transmit data register empty flag, S1[TDRE], to generate the DMA requests.
- *
- * @param base UART peripheral base address.
- * @param enable True to enable, false to disable.
- */
-static inline void UART_EnableTxDMA(UART_Type *base, bool enable)
-{
-    if (enable)
-    {
-#if (defined(FSL_FEATURE_UART_IS_SCI) && FSL_FEATURE_UART_IS_SCI)
-        base->C4 |= UART_C4_TDMAS_MASK;
-#else
-        base->C5 |= UART_C5_TDMAS_MASK;
-#endif
-        base->C2 |= UART_C2_TIE_MASK;
-    }
-    else
-    {
-#if (defined(FSL_FEATURE_UART_IS_SCI) && FSL_FEATURE_UART_IS_SCI)
-        base->C4 &= ~UART_C4_TDMAS_MASK;
-#else
-        base->C5 &= ~UART_C5_TDMAS_MASK;
-#endif
-        base->C2 &= ~UART_C2_TIE_MASK;
-    }
-}
-
-/*!
- * @brief Enables or disables the UART receiver DMA.
- *
- * This function enables or disables the receiver data register full flag, S1[RDRF], to generate DMA requests.
- *
- * @param base UART peripheral base address.
- * @param enable True to enable, false to disable.
- */
-static inline void UART_EnableRxDMA(UART_Type *base, bool enable)
-{
-    if (enable)
-    {
-#if (defined(FSL_FEATURE_UART_IS_SCI) && FSL_FEATURE_UART_IS_SCI)
-        base->C4 |= UART_C4_RDMAS_MASK;
-#else
-        base->C5 |= UART_C5_RDMAS_MASK;
-#endif
-        base->C2 |= UART_C2_RIE_MASK;
-    }
-    else
-    {
-#if (defined(FSL_FEATURE_UART_IS_SCI) && FSL_FEATURE_UART_IS_SCI)
-        base->C4 &= ~UART_C4_RDMAS_MASK;
-#else
-        base->C5 &= ~UART_C5_RDMAS_MASK;
-#endif
-        base->C2 &= ~UART_C2_RIE_MASK;
-    }
-}
-
-/* @} */
-#endif /* FSL_FEATURE_UART_HAS_DMA_SELECT */
-
-/*!
- * @name Bus Operations
- * @{
- */
-
-/*!
- * @brief Enables or disables the UART transmitter.
- *
- * This function enables or disables the UART transmitter.
- *
- * @param base UART peripheral base address.
- * @param enable True to enable, false to disable.
- */
-static inline void UART_EnableTx(UART_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->C2 |= UART_C2_TE_MASK;
-    }
-    else
-    {
-        base->C2 &= ~UART_C2_TE_MASK;
-    }
-}
-
-/*!
- * @brief Enables or disables the UART receiver.
- *
- * This function enables or disables the UART receiver.
- *
- * @param base UART peripheral base address.
- * @param enable True to enable, false to disable.
- */
-static inline void UART_EnableRx(UART_Type *base, bool enable)
-{
-    if (enable)
-    {
-        base->C2 |= UART_C2_RE_MASK;
-    }
-    else
-    {
-        base->C2 &= ~UART_C2_RE_MASK;
-    }
-}
-
-/*!
- * @brief Writes to the TX register.
- *
- * This function writes data to the TX register directly. The upper layer must ensure
- * that the TX register is empty or TX FIFO has empty room before calling this function.
- *
- * @param base UART peripheral base address.
- * @param data The byte to write.
- */
-static inline void UART_WriteByte(UART_Type *base, uint8_t data)
-{
-    base->D = data;
-}
-
-/*!
- * @brief Reads the RX register directly.
- *
- * This function reads data from the TX register directly. The upper layer must
- * ensure that the RX register is full or that the TX FIFO has data before calling this function.
- *
- * @param base UART peripheral base address.
- * @return The byte read from UART data register.
- */
-static inline uint8_t UART_ReadByte(UART_Type *base)
-{
-    return base->D;
-}
-
-/*!
- * @brief Writes to the TX register using a blocking method.
- *
- * This function polls the TX register, waits for the TX register to be empty or for the TX FIFO
- * to have room and writes data to the TX buffer.
- *
- * @note This function does not check whether all the data has been sent out to the bus.
- * Before disabling the TX, check kUART_TransmissionCompleteFlag to ensure that the TX is
- * finished.
- *
- * @param base UART peripheral base address.
- * @param data Start address of the data to write.
- * @param length Size of the data to write.
- */
-void UART_WriteBlocking(UART_Type *base, const uint8_t *data, size_t length);
-
-/*!
- * @brief Read RX data register using a blocking method.
- *
- * This function polls the RX register, waits for the RX register to be full or for RX FIFO to
- * have data and read data from the TX register.
- *
- * @param base UART peripheral base address.
- * @param data Start address of the buffer to store the received data.
- * @param length Size of the buffer.
- * @retval kStatus_UART_RxHardwareOverrun Receiver overrun happened while receiving data.
- * @retval kStatus_UART_NoiseError Noise error happened while receiving data.
- * @retval kStatus_UART_FramingError Framing error happened while receiving data.
- * @retval kStatus_UART_ParityError Parity error happened while receiving data.
- * @retval kStatus_Success Successfully received all data.
- */
-status_t UART_ReadBlocking(UART_Type *base, uint8_t *data, size_t length);
-
-/* @} */
-
-/*!
- * @name Transactional
- * @{
- */
-
-/*!
- * @brief Initializes the UART handle.
- *
- * This function initializes the UART handle which can be used for other UART
- * transactional APIs. Usually, for a specified UART instance,
- * call this API once to get the initialized handle.
- *
- * @param base UART peripheral base address.
- * @param handle UART handle pointer.
- * @param callback The callback function.
- * @param userData The parameter of the callback function.
- */
-void UART_TransferCreateHandle(UART_Type *base,
-                               uart_handle_t *handle,
-                               uart_transfer_callback_t callback,
-                               void *userData);
-
-/*!
- * @brief Sets up the RX ring buffer.
- *
- * This function sets up the RX ring buffer to a specific UART handle.
- *
- * When the RX ring buffer is used, data received are stored into the ring buffer even when the
- * user doesn't call the UART_TransferReceiveNonBlocking() API. If there is already data received
- * in the ring buffer, the user can get the received data from the ring buffer directly.
- *
- * @note When using the RX ring buffer, one byte is reserved for internal use. In other
- * words, if @p ringBufferSize is 32, then only 31 bytes are used for saving data.
- *
- * @param base UART peripheral base address.
- * @param handle UART handle pointer.
- * @param ringBuffer Start address of the ring buffer for background receiving. Pass NULL to disable the ring buffer.
- * @param ringBufferSize size of the ring buffer.
- */
-void UART_TransferStartRingBuffer(UART_Type *base, uart_handle_t *handle, uint8_t *ringBuffer, size_t ringBufferSize);
-
-/*!
- * @brief Aborts the background transfer and uninstalls the ring buffer.
- *
- * This function aborts the background transfer and uninstalls the ring buffer.
- *
- * @param base UART peripheral base address.
- * @param handle UART handle pointer.
- */
-void UART_TransferStopRingBuffer(UART_Type *base, uart_handle_t *handle);
-
-/*!
- * @brief Transmits a buffer of data using the interrupt method.
- *
- * This function sends data using an interrupt method. This is a non-blocking function, which
- * returns directly without waiting for all data to be written to the TX register. When
- * all data is written to the TX register in the ISR, the UART driver calls the callback
- * function and passes the @ref kStatus_UART_TxIdle as status parameter.
- *
- * @note The kStatus_UART_TxIdle is passed to the upper layer when all data is written
- * to the TX register. However it does not ensure that all data are sent out. Before disabling the TX,
- * check the kUART_TransmissionCompleteFlag to ensure that the TX is finished.
- *
- * @param base UART peripheral base address.
- * @param handle UART handle pointer.
- * @param xfer UART transfer structure. See  #uart_transfer_t.
- * @retval kStatus_Success Successfully start the data transmission.
- * @retval kStatus_UART_TxBusy Previous transmission still not finished, data not all written to TX register yet.
- * @retval kStatus_InvalidArgument Invalid argument.
- */
-status_t UART_TransferSendNonBlocking(UART_Type *base, uart_handle_t *handle, uart_transfer_t *xfer);
-
-/*!
- * @brief Aborts the interrupt driven data transmit.
- *
- * This function aborts the interrupt driven data sending. The user can get the remainBytes to find out
- * how many bytes are still not sent out.
- *
- * @param base UART peripheral base address.
- * @param handle UART handle pointer.
- */
-void UART_TransferAbortSend(UART_Type *base, uart_handle_t *handle);
-
-/*!
- * @brief Get the number of bytes that have been written to UART TX register.
- *
- * This function gets the number of bytes that have been written to UART TX
- * register by interrupt method.
- *
- * @param base UART peripheral base address.
- * @param handle UART handle pointer.
- * @param count Send bytes count.
- * @retval kStatus_NoTransferInProgress No send in progress.
- * @retval kStatus_InvalidArgument Parameter is invalid.
- * @retval kStatus_Success Get successfully through the parameter \p count;
- */
-status_t UART_TransferGetSendCount(UART_Type *base, uart_handle_t *handle, uint32_t *count);
-
-/*!
- * @brief Receives a buffer of data using an interrupt method.
- *
- * This function receives data using an interrupt method. This is a non-blocking function, which
- *  returns without waiting for all data to be received.
- * If the RX ring buffer is used and not empty, the data in the ring buffer is copied and
- * the parameter @p receivedBytes shows how many bytes are copied from the ring buffer.
- * After copying, if the data in the ring buffer is not enough to read, the receive
- * request is saved by the UART driver. When the new data arrives, the receive request
- * is serviced first. When all data is received, the UART driver notifies the upper layer
- * through a callback function and passes the status parameter @ref kStatus_UART_RxIdle.
- * For example, the upper layer needs 10 bytes but there are only 5 bytes in the ring buffer.
- * The 5 bytes are copied to the xfer->data and this function returns with the
- * parameter @p receivedBytes set to 5. For the left 5 bytes, newly arrived data is
- * saved from the xfer->data[5]. When 5 bytes are received, the UART driver notifies the upper layer.
- * If the RX ring buffer is not enabled, this function enables the RX and RX interrupt
- * to receive data to the xfer->data. When all data is received, the upper layer is notified.
- *
- * @param base UART peripheral base address.
- * @param handle UART handle pointer.
- * @param xfer UART transfer structure, refer to #uart_transfer_t.
- * @param receivedBytes Bytes received from the ring buffer directly.
- * @retval kStatus_Success Successfully queue the transfer into transmit queue.
- * @retval kStatus_UART_RxBusy Previous receive request is not finished.
- * @retval kStatus_InvalidArgument Invalid argument.
- */
-status_t UART_TransferReceiveNonBlocking(UART_Type *base,
-                                         uart_handle_t *handle,
-                                         uart_transfer_t *xfer,
-                                         size_t *receivedBytes);
-
-/*!
- * @brief Aborts the interrupt-driven data receiving.
- *
- * This function aborts the interrupt-driven data receiving. The user can get the remainBytes to know
- * how many bytes not received yet.
- *
- * @param base UART peripheral base address.
- * @param handle UART handle pointer.
- */
-void UART_TransferAbortReceive(UART_Type *base, uart_handle_t *handle);
-
-/*!
- * @brief Get the number of bytes that have been received.
- *
- * This function gets the number of bytes that have been received.
- *
- * @param base UART peripheral base address.
- * @param handle UART handle pointer.
- * @param count Receive bytes count.
- * @retval kStatus_NoTransferInProgress No receive in progress.
- * @retval kStatus_InvalidArgument Parameter is invalid.
- * @retval kStatus_Success Get successfully through the parameter \p count;
- */
-status_t UART_TransferGetReceiveCount(UART_Type *base, uart_handle_t *handle, uint32_t *count);
-
-/*!
- * @brief UART IRQ handle function.
- *
- * This function handles the UART transmit and receive IRQ request.
- *
- * @param base UART peripheral base address.
- * @param handle UART handle pointer.
- */
-void UART_TransferHandleIRQ(UART_Type *base, uart_handle_t *handle);
-
-/*!
- * @brief UART Error IRQ handle function.
- *
- * This function handle the UART error IRQ request.
- *
- * @param base UART peripheral base address.
- * @param handle UART handle pointer.
- */
-void UART_TransferHandleErrorIRQ(UART_Type *base, uart_handle_t *handle);
-
-/* @} */
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*! @}*/
-
-#endif /* _FSL_UART_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_uart_edma.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,362 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_uart_edma.h"
-#include "fsl_dmamux.h"
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/* Array of UART handle. */
-#if (defined(UART5))
-#define UART_HANDLE_ARRAY_SIZE 6
-#else /* UART5 */
-#if (defined(UART4))
-#define UART_HANDLE_ARRAY_SIZE 5
-#else /* UART4 */
-#if (defined(UART3))
-#define UART_HANDLE_ARRAY_SIZE 4
-#else /* UART3 */
-#if (defined(UART2))
-#define UART_HANDLE_ARRAY_SIZE 3
-#else /* UART2 */
-#if (defined(UART1))
-#define UART_HANDLE_ARRAY_SIZE 2
-#else /* UART1 */
-#if (defined(UART0))
-#define UART_HANDLE_ARRAY_SIZE 1
-#else /* UART0 */
-#error No UART instance.
-#endif /* UART 0 */
-#endif /* UART 1 */
-#endif /* UART 2 */
-#endif /* UART 3 */
-#endif /* UART 4 */
-#endif /* UART 5 */
-
-/*<! Structure definition for uart_edma_private_handle_t. The structure is private. */
-typedef struct _uart_edma_private_handle
-{
-    UART_Type *base;
-    uart_edma_handle_t *handle;
-} uart_edma_private_handle_t;
-
-/* UART EDMA transfer handle. */
-enum _uart_edma_tansfer_states
-{
-    kUART_TxIdle, /* TX idle. */
-    kUART_TxBusy, /* TX busy. */
-    kUART_RxIdle, /* RX idle. */
-    kUART_RxBusy  /* RX busy. */
-};
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*<! Private handle only used for internally. */
-static uart_edma_private_handle_t s_edmaPrivateHandle[UART_HANDLE_ARRAY_SIZE];
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-
-/*!
- * @brief UART EDMA send finished callback function.
- *
- * This function is called when UART EDMA send finished. It disables the UART
- * TX EDMA request and sends @ref kStatus_UART_TxIdle to UART callback.
- *
- * @param handle The EDMA handle.
- * @param param Callback function parameter.
- */
-static void UART_SendEDMACallback(edma_handle_t *handle, void *param, bool transferDone, uint32_t tcds);
-
-/*!
- * @brief UART EDMA receive finished callback function.
- *
- * This function is called when UART EDMA receive finished. It disables the UART
- * RX EDMA request and sends @ref kStatus_UART_RxIdle to UART callback.
- *
- * @param handle The EDMA handle.
- * @param param Callback function parameter.
- */
-static void UART_ReceiveEDMACallback(edma_handle_t *handle, void *param, bool transferDone, uint32_t tcds);
-
-/*!
- * @brief Get the UART instance from peripheral base address.
- *
- * @param base UART peripheral base address.
- * @return UART instance.
- */
-extern uint32_t UART_GetInstance(UART_Type *base);
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-
-static void UART_SendEDMACallback(edma_handle_t *handle, void *param, bool transferDone, uint32_t tcds)
-{
-    uart_edma_private_handle_t *uartPrivateHandle = (uart_edma_private_handle_t *)param;
-
-    /* Avoid the warning for unused variables. */
-    handle = handle;
-    tcds = tcds;
-
-    if (transferDone)
-    {
-        UART_TransferAbortSendEDMA(uartPrivateHandle->base, uartPrivateHandle->handle);
-
-        if (uartPrivateHandle->handle->callback)
-        {
-            uartPrivateHandle->handle->callback(uartPrivateHandle->base, uartPrivateHandle->handle, kStatus_UART_TxIdle,
-                                                uartPrivateHandle->handle->userData);
-        }
-    }
-}
-
-static void UART_ReceiveEDMACallback(edma_handle_t *handle, void *param, bool transferDone, uint32_t tcds)
-{
-    uart_edma_private_handle_t *uartPrivateHandle = (uart_edma_private_handle_t *)param;
-
-    /* Avoid warning for unused parameters. */
-    handle = handle;
-    tcds = tcds;
-
-    if (transferDone)
-    {
-        /* Disable transfer. */
-        UART_TransferAbortReceiveEDMA(uartPrivateHandle->base, uartPrivateHandle->handle);
-
-        if (uartPrivateHandle->handle->callback)
-        {
-            uartPrivateHandle->handle->callback(uartPrivateHandle->base, uartPrivateHandle->handle, kStatus_UART_RxIdle,
-                                                uartPrivateHandle->handle->userData);
-        }
-    }
-}
-
-void UART_TransferCreateHandleEDMA(UART_Type *base,
-                           uart_edma_handle_t *handle,
-                           uart_edma_transfer_callback_t callback,
-                           void *userData,
-                           edma_handle_t *txEdmaHandle,
-                           edma_handle_t *rxEdmaHandle)
-{
-    assert(handle);
-
-    uint32_t instance = UART_GetInstance(base);
-
-    s_edmaPrivateHandle[instance].base = base;
-    s_edmaPrivateHandle[instance].handle = handle;
-
-    memset(handle, 0, sizeof(*handle));
-
-    handle->rxState = kUART_RxIdle;
-    handle->txState = kUART_TxIdle;
-
-    handle->rxEdmaHandle = rxEdmaHandle;
-    handle->txEdmaHandle = txEdmaHandle;
-
-    handle->callback = callback;
-    handle->userData = userData;
-
-#if defined(FSL_FEATURE_UART_HAS_FIFO) && FSL_FEATURE_UART_HAS_FIFO
-    /* Note:
-       Take care of the RX FIFO, EDMA request only assert when received bytes
-       equal or more than RX water mark, there is potential issue if RX water
-       mark larger than 1.
-       For example, if RX FIFO water mark is 2, upper layer needs 5 bytes and
-       5 bytes are received. the last byte will be saved in FIFO but not trigger
-       EDMA transfer because the water mark is 2.
-     */
-    if (rxEdmaHandle)
-    {
-        base->RWFIFO = 1U;
-    }
-#endif
-
-    /* Configure TX. */
-    if (txEdmaHandle)
-    {
-        EDMA_SetCallback(handle->txEdmaHandle, UART_SendEDMACallback, &s_edmaPrivateHandle[instance]);
-    }
-
-    /* Configure RX. */
-    if (rxEdmaHandle)
-    {
-        EDMA_SetCallback(handle->rxEdmaHandle, UART_ReceiveEDMACallback, &s_edmaPrivateHandle[instance]);
-    }
-}
-
-status_t UART_SendEDMA(UART_Type *base, uart_edma_handle_t *handle, uart_transfer_t *xfer)
-{
-    assert(handle->txEdmaHandle);
-
-    edma_transfer_config_t xferConfig;
-    status_t status;
-
-    /* Return error if xfer invalid. */
-    if ((0U == xfer->dataSize) || (NULL == xfer->data))
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* If previous TX not finished. */
-    if (kUART_TxBusy == handle->txState)
-    {
-        status = kStatus_UART_TxBusy;
-    }
-    else
-    {
-        handle->txState = kUART_TxBusy;
-        handle->txDataSizeAll = xfer->dataSize;
-
-        /* Prepare transfer. */
-        EDMA_PrepareTransfer(&xferConfig, xfer->data, sizeof(uint8_t), (void *)UART_GetDataRegisterAddress(base),
-                             sizeof(uint8_t), sizeof(uint8_t), xfer->dataSize, kEDMA_MemoryToPeripheral);
-
-        /* Submit transfer. */
-        EDMA_SubmitTransfer(handle->txEdmaHandle, &xferConfig);
-        EDMA_StartTransfer(handle->txEdmaHandle);
-
-        /* Enable UART TX EDMA. */
-        UART_EnableTxDMA(base, true);
-
-        status = kStatus_Success;
-    }
-
-    return status;
-}
-
-status_t UART_ReceiveEDMA(UART_Type *base, uart_edma_handle_t *handle, uart_transfer_t *xfer)
-{
-    assert(handle->rxEdmaHandle);
-
-    edma_transfer_config_t xferConfig;
-    status_t status;
-
-    /* Return error if xfer invalid. */
-    if ((0U == xfer->dataSize) || (NULL == xfer->data))
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    /* If previous RX not finished. */
-    if (kUART_RxBusy == handle->rxState)
-    {
-        status = kStatus_UART_RxBusy;
-    }
-    else
-    {
-        handle->rxState = kUART_RxBusy;
-        handle->rxDataSizeAll = xfer->dataSize;
-
-        /* Prepare transfer. */
-        EDMA_PrepareTransfer(&xferConfig, (void *)UART_GetDataRegisterAddress(base), sizeof(uint8_t), xfer->data,
-                             sizeof(uint8_t), sizeof(uint8_t), xfer->dataSize, kEDMA_PeripheralToMemory);
-
-        /* Submit transfer. */
-        EDMA_SubmitTransfer(handle->rxEdmaHandle, &xferConfig);
-        EDMA_StartTransfer(handle->rxEdmaHandle);
-
-        /* Enable UART RX EDMA. */
-        UART_EnableRxDMA(base, true);
-
-        status = kStatus_Success;
-    }
-
-    return status;
-}
-
-void UART_TransferAbortSendEDMA(UART_Type *base, uart_edma_handle_t *handle)
-{
-    assert(handle->txEdmaHandle);
-
-    /* Disable UART TX EDMA. */
-    UART_EnableTxDMA(base, false);
-
-    /* Stop transfer. */
-    EDMA_AbortTransfer(handle->txEdmaHandle);
-
-    handle->txState = kUART_TxIdle;
-}
-
-void UART_TransferAbortReceiveEDMA(UART_Type *base, uart_edma_handle_t *handle)
-{
-    assert(handle->rxEdmaHandle);
-
-    /* Disable UART RX EDMA. */
-    UART_EnableRxDMA(base, false);
-
-    /* Stop transfer. */
-    EDMA_AbortTransfer(handle->rxEdmaHandle);
-
-    handle->rxState = kUART_RxIdle;
-}
-
-status_t UART_TransferGetReceiveCountEDMA(UART_Type *base, uart_edma_handle_t *handle, uint32_t *count)
-{
-    assert(handle->rxEdmaHandle);
-
-    if (kUART_RxIdle == handle->rxState)
-    {
-        return kStatus_NoTransferInProgress;
-    }
-
-    if (!count)
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    *count = handle->rxDataSizeAll - EDMA_GetRemainingBytes(handle->rxEdmaHandle->base, handle->rxEdmaHandle->channel);
-
-    return kStatus_Success;
-}
-
-status_t UART_TransferGetSendCountEDMA(UART_Type *base, uart_edma_handle_t *handle, uint32_t *count)
-{
-    assert(handle->txEdmaHandle);
-
-    if (kUART_TxIdle == handle->txState)
-    {
-        return kStatus_NoTransferInProgress;
-    }
-
-    if (!count)
-    {
-        return kStatus_InvalidArgument;
-    }
-
-    *count = handle->txDataSizeAll - EDMA_GetRemainingBytes(handle->txEdmaHandle->base, handle->txEdmaHandle->channel);
-
-    return kStatus_Success;
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_uart_edma.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_UART_EDMA_H_
-#define _FSL_UART_EDMA_H_
-
-#include "fsl_uart.h"
-#include "fsl_dmamux.h"
-#include "fsl_edma.h"
-
-/*!
- * @addtogroup uart_edma_driver
- * @{
- */
-
-/*! @file*/
-
-/*******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/* Forward declaration of the handle typedef. */
-typedef struct _uart_edma_handle uart_edma_handle_t;
-
-/*! @brief UART transfer callback function. */
-typedef void (*uart_edma_transfer_callback_t)(UART_Type *base,
-                                              uart_edma_handle_t *handle,
-                                              status_t status,
-                                              void *userData);
-
-/*!
-* @brief UART eDMA handle
-*/
-struct _uart_edma_handle
-{
-    uart_edma_transfer_callback_t callback; /*!< Callback function. */
-    void *userData;                         /*!< UART callback function parameter.*/
-    size_t rxDataSizeAll;                   /*!< Size of the data to receive. */
-    size_t txDataSizeAll;                   /*!< Size of the data to send out. */
-
-    edma_handle_t *txEdmaHandle; /*!< The eDMA TX channel used. */
-    edma_handle_t *rxEdmaHandle; /*!< The eDMA RX channel used. */
-
-    volatile uint8_t txState; /*!< TX transfer state. */
-    volatile uint8_t rxState; /*!< RX transfer state */
-};
-
-/*******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
- * @name eDMA transactional
- * @{
- */
-
-/*!
- * @brief Initializes the UART handle which is used in transactional functions.
- * @param base UART peripheral base address.
- * @param handle Pointer to uart_edma_handle_t structure.
- * @param callback UART callback, NULL means no callback.
- * @param userData User callback function data.
- * @param rxEdmaHandle User requested DMA handle for RX DMA transfer.
- * @param txEdmaHandle User requested DMA handle for TX DMA transfer.
- */
-void UART_TransferCreateHandleEDMA(UART_Type *base,
-                           uart_edma_handle_t *handle,
-                           uart_edma_transfer_callback_t callback,
-                           void *userData,
-                           edma_handle_t *txEdmaHandle,
-                           edma_handle_t *rxEdmaHandle);
-
-/*!
- * @brief Sends data using eDMA.
- *
- * This function sends data using eDMA. This is a non-blocking function, which returns
- * right away. When all data is sent, the send callback function is called.
- *
- * @param base UART peripheral base address.
- * @param handle UART handle pointer.
- * @param xfer UART eDMA transfer structure. See #uart_transfer_t.
- * @retval kStatus_Success if succeed, others failed.
- * @retval kStatus_UART_TxBusy Previous transfer on going.
- * @retval kStatus_InvalidArgument Invalid argument.
- */
-status_t UART_SendEDMA(UART_Type *base, uart_edma_handle_t *handle, uart_transfer_t *xfer);
-
-/*!
- * @brief Receive data using eDMA.
- *
- * This function receives data using eDMA. This is a non-blocking function, which returns
- * right away. When all data is received, the receive callback function is called.
- *
- * @param base UART peripheral base address.
- * @param handle Pointer to uart_edma_handle_t structure.
- * @param xfer UART eDMA transfer structure. See #uart_transfer_t.
- * @retval kStatus_Success if succeed, others failed.
- * @retval kStatus_UART_RxBusy Previous transfer on going.
- * @retval kStatus_InvalidArgument Invalid argument.
- */
-status_t UART_ReceiveEDMA(UART_Type *base, uart_edma_handle_t *handle, uart_transfer_t *xfer);
-
-/*!
- * @brief Aborts the sent data using eDMA.
- *
- * This function aborts sent data using eDMA.
- *
- * @param base UART peripheral base address.
- * @param handle Pointer to uart_edma_handle_t structure.
- */
-void UART_TransferAbortSendEDMA(UART_Type *base, uart_edma_handle_t *handle);
-
-/*!
- * @brief Aborts the receive data using eDMA.
- *
- * This function aborts receive data using eDMA.
- *
- * @param base UART peripheral base address.
- * @param handle Pointer to uart_edma_handle_t structure.
- */
-void UART_TransferAbortReceiveEDMA(UART_Type *base, uart_edma_handle_t *handle);
-
-/*!
- * @brief Get the number of bytes that have been written to UART TX register.
- *
- * This function gets the number of bytes that have been written to UART TX
- * register by DMA.
- *
- * @param base UART peripheral base address.
- * @param handle UART handle pointer.
- * @param count Send bytes count.
- * @retval kStatus_NoTransferInProgress No send in progress.
- * @retval kStatus_InvalidArgument Parameter is invalid.
- * @retval kStatus_Success Get successfully through the parameter \p count;
- */
-status_t UART_TransferGetSendCountEDMA(UART_Type *base, uart_edma_handle_t *handle, uint32_t *count);
-
-/*!
- * @brief Get the number of bytes that have been received.
- *
- * This function gets the number of bytes that have been received.
- *
- * @param base UART peripheral base address.
- * @param handle UART handle pointer.
- * @param count Receive bytes count.
- * @retval kStatus_NoTransferInProgress No receive in progress.
- * @retval kStatus_InvalidArgument Parameter is invalid.
- * @retval kStatus_Success Get successfully through the parameter \p count;
- */
-status_t UART_TransferGetReceiveCountEDMA(UART_Type *base, uart_edma_handle_t *handle, uint32_t *count);
-
-/*@}*/
-
-#if defined(__cplusplus)
-}
-#endif
-
-/*! @}*/
-
-#endif /* _FSL_UART_EDMA_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_vref.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,172 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_vref.h"
-
-/*******************************************************************************
- * Prototypes
- ******************************************************************************/
-
-/*!
- * @brief Gets the instance from the base address
- *
- * @param base VREF peripheral base address
- *
- * @return The VREF instance
- */
-static uint32_t VREF_GetInstance(VREF_Type *base);
-
-/*******************************************************************************
- * Variables
- ******************************************************************************/
-
-/*! @brief Pointers to VREF bases for each instance. */
-static VREF_Type *const s_vrefBases[] = VREF_BASE_PTRS;
-
-/*! @brief Pointers to VREF clocks for each instance. */
-static const clock_ip_name_t s_vrefClocks[] = VREF_CLOCKS;
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-
-static uint32_t VREF_GetInstance(VREF_Type *base)
-{
-    uint32_t instance;
-
-    /* Find the instance index from base address mappings. */
-    for (instance = 0; instance < FSL_FEATURE_SOC_VREF_COUNT; instance++)
-    {
-        if (s_vrefBases[instance] == base)
-        {
-            break;
-        }
-    }
-
-    assert(instance < FSL_FEATURE_SOC_VREF_COUNT);
-
-    return instance;
-}
-
-void VREF_Init(VREF_Type *base, const vref_config_t *config)
-{
-    assert(config != NULL);
-
-    uint8_t reg = 0U;
-
-    /* Ungate clock for VREF */
-    CLOCK_EnableClock(s_vrefClocks[VREF_GetInstance(base)]);
-
-/* Configure VREF to a known state */
-#if defined(FSL_FEATURE_VREF_HAS_CHOP_OSC) && FSL_FEATURE_VREF_HAS_CHOP_OSC
-    /* Set chop oscillator bit */
-    base->TRM |= VREF_TRM_CHOPEN_MASK;
-#endif /* FSL_FEATURE_VREF_HAS_CHOP_OSC */
-    reg = base->SC;
-    /* Set buffer Mode selection and Regulator enable bit */
-    reg |= VREF_SC_MODE_LV(config->bufferMode) | VREF_SC_REGEN(1U);
-#if defined(FSL_FEATURE_VREF_HAS_COMPENSATION) && FSL_FEATURE_VREF_HAS_COMPENSATION
-    /* Set second order curvature compensation enable bit */
-    reg |= VREF_SC_ICOMPEN(1U);
-#endif /* FSL_FEATURE_VREF_HAS_COMPENSATION */
-    /* Enable VREF module */
-    reg |= VREF_SC_VREFEN(1U);
-    /* Update bit-field from value to Status and Control register */
-    base->SC = reg;
-#if defined(FSL_FEATURE_VREF_HAS_LOW_REFERENCE) && FSL_FEATURE_VREF_HAS_LOW_REFERENCE
-    reg = base->VREFL_TRM;
-    /* Clear old select external voltage reference and VREFL (0.4 V) reference buffer enable bits*/
-    reg &= ~(VREF_VREFL_TRM_VREFL_EN_MASK | VREF_VREFL_TRM_VREFL_SEL_MASK);
-    /* Select external voltage reference and set VREFL (0.4 V) reference buffer enable */
-    reg |= VREF_VREFL_TRM_VREFL_SEL(config->enableExternalVoltRef) | VREF_VREFL_TRM_VREFL_EN(config->enableLowRef);
-    base->VREFL_TRM = reg;
-#endif /* FSL_FEATURE_VREF_HAS_LOW_REFERENCE */
-
-    /* Wait until internal voltage stable */
-    while ((base->SC & VREF_SC_VREFST_MASK) == 0)
-    {
-    }
-}
-
-void VREF_Deinit(VREF_Type *base)
-{
-    /* Gate clock for VREF */
-    CLOCK_DisableClock(s_vrefClocks[VREF_GetInstance(base)]);
-}
-
-void VREF_GetDefaultConfig(vref_config_t *config)
-{
-/* Set High power buffer mode in */
-#if defined(FSL_FEATURE_VREF_MODE_LV_TYPE) && FSL_FEATURE_VREF_MODE_LV_TYPE
-    config->bufferMode = kVREF_ModeHighPowerBuffer;
-#else
-    config->bufferMode = kVREF_ModeTightRegulationBuffer;
-#endif /* FSL_FEATURE_VREF_MODE_LV_TYPE */
-
-#if defined(FSL_FEATURE_VREF_HAS_LOW_REFERENCE) && FSL_FEATURE_VREF_HAS_LOW_REFERENCE
-    /* Select internal voltage reference */
-    config->enableExternalVoltRef = false;
-    /* Set VREFL (0.4 V) reference buffer disable */
-    config->enableLowRef = false;
-#endif /* FSL_FEATURE_VREF_HAS_LOW_REFERENCE */
-}
-
-void VREF_SetTrimVal(VREF_Type *base, uint8_t trimValue)
-{
-    uint8_t reg = 0U;
-
-    /* Set TRIM bits value in voltage reference */
-    reg = base->TRM;
-    reg = ((reg & ~VREF_TRM_TRIM_MASK) | VREF_TRM_TRIM(trimValue));
-    base->TRM = reg;
-    /* Wait until internal voltage stable */
-    while ((base->SC & VREF_SC_VREFST_MASK) == 0)
-    {
-    }
-}
-
-#if defined(FSL_FEATURE_VREF_HAS_LOW_REFERENCE) && FSL_FEATURE_VREF_HAS_LOW_REFERENCE
-void VREF_SetLowReferenceTrimVal(VREF_Type *base, uint8_t trimValue)
-{
-    /* The values 111b and 110b are NOT valid/allowed */
-    assert((trimValue != 0x7U) && (trimValue != 0x6U));
-
-    uint8_t reg = 0U;
-
-    /* Set TRIM bits value in low voltage reference */
-    reg = base->VREFL_TRM;
-    reg = ((reg & ~VREF_VREFL_TRM_VREFL_TRIM_MASK) | VREF_VREFL_TRM_VREFL_TRIM(trimValue));
-    base->VREFL_TRM = reg;
-    /* Wait until internal voltage stable */
-    while ((base->SC & VREF_SC_VREFST_MASK) == 0)
-    {
-    }
-}
-#endif /* FSL_FEATURE_VREF_HAS_LOW_REFERENCE */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_vref.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,228 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _FSL_VREF_H_
-#define _FSL_VREF_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup vref
- * @{
- */
-
-/*! @file */
-
-/******************************************************************************
- * Definitions
- ******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-#define FSL_VREF_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) /*!< Version 2.0.0. */
-/*@}*/
-
-/* Those macros below defined to support SoC family which have VREFL (0.4V) reference */
-#if defined(FSL_FEATURE_VREF_HAS_LOW_REFERENCE) && FSL_FEATURE_VREF_HAS_LOW_REFERENCE
-#define SC VREFH_SC
-#define VREF_SC_MODE_LV VREF_VREFH_SC_MODE_LV
-#define VREF_SC_REGEN VREF_VREFH_SC_REGEN
-#define VREF_SC_VREFEN VREF_VREFH_SC_VREFEN
-#define VREF_SC_ICOMPEN VREF_VREFH_SC_ICOMPEN
-#define VREF_SC_REGEN_MASK VREF_VREFH_SC_REGEN_MASK
-#define VREF_SC_VREFST_MASK VREF_VREFH_SC_VREFST_MASK
-#define VREF_SC_VREFEN_MASK VREF_VREFH_SC_VREFEN_MASK
-#define VREF_SC_MODE_LV_MASK VREF_VREFH_SC_MODE_LV_MASK
-#define VREF_SC_ICOMPEN_MASK VREF_VREFH_SC_ICOMPEN_MASK
-#define TRM VREFH_TRM
-#define VREF_TRM_TRIM VREF_VREFH_TRM_TRIM
-#define VREF_TRM_CHOPEN_MASK VREF_VREFH_TRM_CHOPEN_MASK
-#define VREF_TRM_TRIM_MASK VREF_VREFH_TRM_TRIM_MASK
-#define VREF_TRM_CHOPEN_SHIFT VREF_VREFH_TRM_CHOPEN_SHIFT
-#define VREF_TRM_TRIM_SHIFT VREF_VREFH_TRM_TRIM_SHIFT
-#define VREF_SC_MODE_LV_SHIFT VREF_VREFH_SC_MODE_LV_SHIFT
-#define VREF_SC_REGEN_SHIFT VREF_VREFH_SC_REGEN_SHIFT
-#define VREF_SC_VREFST_SHIFT VREF_VREFH_SC_VREFST_SHIFT
-#define VREF_SC_ICOMPEN_SHIFT VREF_VREFH_SC_ICOMPEN_SHIFT
-#endif /* FSL_FEATURE_VREF_HAS_LOW_REFERENCE */
-
-/*!
- * @brief VREF modes.
- */
-typedef enum _vref_buffer_mode
-{
-    kVREF_ModeBandgapOnly = 0U, /*!< Bandgap on only, for stabilization and startup */
-#if defined(FSL_FEATURE_VREF_MODE_LV_TYPE) && FSL_FEATURE_VREF_MODE_LV_TYPE
-    kVREF_ModeHighPowerBuffer = 1U, /*!< High power buffer mode enabled */
-    kVREF_ModeLowPowerBuffer = 2U   /*!< Low power buffer mode enabled */
-#else
-    kVREF_ModeTightRegulationBuffer = 2U /*!< Tight regulation buffer enabled */
-#endif /* FSL_FEATURE_VREF_MODE_LV_TYPE */
-} vref_buffer_mode_t;
-
-/*!
- * @brief The description structure for the VREF module.
- */
-typedef struct _vref_config
-{
-    vref_buffer_mode_t bufferMode; /*!< Buffer mode selection */
-#if defined(FSL_FEATURE_VREF_HAS_LOW_REFERENCE) && FSL_FEATURE_VREF_HAS_LOW_REFERENCE
-    bool enableLowRef;          /*!< Set VREFL (0.4 V) reference buffer enable or disable */
-    bool enableExternalVoltRef; /*!< Select external voltage reference or not (internal) */
-#endif                          /* FSL_FEATURE_VREF_HAS_LOW_REFERENCE */
-} vref_config_t;
-
-/******************************************************************************
- * API
- ******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif /* __cplusplus */
-
-/*!
- * @name VREF functional operation
- * @{
- */
-
-/*!
- * @brief Enables the clock gate and configures the VREF module according to the configuration structure.
- *
- * This function must be called before calling all the other VREF driver functions,
- * read/write registers, and configurations with user-defined settings.
- * The example below shows how to set up  vref_config_t parameters and
- * how to call the VREF_Init function by passing in these parameters:
- * Example:
- * @code
- *   vref_config_t vrefConfig;
- *   vrefConfig.bufferMode = kVREF_ModeHighPowerBuffer;
- *   vrefConfig.enableExternalVoltRef = false;
- *   vrefConfig.enableLowRef = false;
- *   VREF_Init(VREF, &vrefConfig);
- * @endcode
- *
- * @param base VREF peripheral address.
- * @param config Pointer to the configuration structure.
- */
-void VREF_Init(VREF_Type *base, const vref_config_t *config);
-
-/*!
- * @brief Stops and disables the clock for the VREF module.
- *
- * This function should be called to shut down the module.
- * Example:
- * @code
- *   vref_config_t vrefUserConfig;
- *   VREF_Init(VREF);
- *   VREF_GetDefaultConfig(&vrefUserConfig);
- *   ...
- *   VREF_Deinit(VREF);
- * @endcode
- *
- * @param base VREF peripheral address.
- */
-void VREF_Deinit(VREF_Type *base);
-
-/*!
- * @brief Initializes the VREF configuration structure.
- *
- * This function initializes the VREF configuration structure to a default value.
- * Example:
- * @code
- *   vrefConfig->bufferMode = kVREF_ModeHighPowerBuffer;
- *   vrefConfig->enableExternalVoltRef = false;
- *   vrefConfig->enableLowRef = false;
- * @endcode
- *
- * @param config Pointer to the initialization structure.
- */
-void VREF_GetDefaultConfig(vref_config_t *config);
-
-/*!
- * @brief Sets a TRIM value for reference voltage.
- *
- * This function sets a TRIM value for reference voltage.
- * Note that the TRIM value maximum is 0x3F.
- *
- * @param base VREF peripheral address.
- * @param trimValue Value of the trim register to set the output reference voltage (maximum 0x3F (6-bit)).
- */
-void VREF_SetTrimVal(VREF_Type *base, uint8_t trimValue);
-
-/*!
- * @brief Reads the value of the TRIM meaning output voltage.
- *
- * This function gets the TRIM value from the TRM register.
- *
- * @param base VREF peripheral address.
- * @return Six-bit value of trim setting.
- */
-static inline uint8_t VREF_GetTrimVal(VREF_Type *base)
-{
-    return (base->TRM & VREF_TRM_TRIM_MASK);
-}
-#if defined(FSL_FEATURE_VREF_HAS_LOW_REFERENCE) && FSL_FEATURE_VREF_HAS_LOW_REFERENCE
-
-/*!
- * @brief Sets the TRIM value for low voltage reference.
- *
- * This function sets the TRIM value for low reference voltage.
- * NOTE:
- *      - The TRIM value maximum is 0x05U
- *      - The values 111b and 110b are not valid/allowed.
- *
- * @param base VREF peripheral address.
- * @param trimValue Value of the trim register to set output low reference voltage (maximum 0x05U (3-bit)).
- */
-void VREF_SetLowReferenceTrimVal(VREF_Type *base, uint8_t trimValue);
-
-/*!
- * @brief Reads the value of the TRIM meaning output voltage.
- *
- * This function gets the TRIM value from the VREFL_TRM register.
- *
- * @param base VREF peripheral address.
- * @return Three-bit value of the trim setting.
- */
-static inline uint8_t VREF_GetLowReferenceTrimVal(VREF_Type *base)
-{
-    return (base->VREFL_TRM & VREF_VREFL_TRM_VREFL_TRIM_MASK);
-}
-#endif /* FSL_FEATURE_VREF_HAS_LOW_REFERENCE */
-
-/*@}*/
-
-#if defined(__cplusplus)
-}
-#endif /* __cplusplus */
-
-/*! @}*/
-
-#endif /* _FSL_VREF_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_wdog.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "fsl_wdog.h"
-
-/*******************************************************************************
- * Code
- ******************************************************************************/
-
-void WDOG_GetDefaultConfig(wdog_config_t *config)
-{
-    assert(config);
-
-    config->enableWdog = true;
-    config->clockSource = kWDOG_LpoClockSource;
-    config->prescaler = kWDOG_ClockPrescalerDivide1;
-#if defined(FSL_FEATURE_WDOG_HAS_WAITEN) && FSL_FEATURE_WDOG_HAS_WAITEN
-    config->workMode.enableWait = true;
-#endif /* FSL_FEATURE_WDOG_HAS_WAITEN */
-    config->workMode.enableStop = false;
-    config->workMode.enableDebug = false;
-    config->enableUpdate = true;
-    config->enableInterrupt = false;
-    config->enableWindowMode = false;
-    config->windowValue = 0U;
-    config->timeoutValue = 0xFFFFU;
-}
-
-void WDOG_Init(WDOG_Type *base, const wdog_config_t *config)
-{
-    assert(config);
-
-    uint32_t value = 0U;
-    uint32_t primaskValue = 0U;
-
-    value = WDOG_STCTRLH_WDOGEN(config->enableWdog) | WDOG_STCTRLH_CLKSRC(config->clockSource) |
-            WDOG_STCTRLH_IRQRSTEN(config->enableInterrupt) | WDOG_STCTRLH_WINEN(config->enableWindowMode) |
-            WDOG_STCTRLH_ALLOWUPDATE(config->enableUpdate) | WDOG_STCTRLH_DBGEN(config->workMode.enableDebug) |
-            WDOG_STCTRLH_STOPEN(config->workMode.enableStop) |
-#if defined(FSL_FEATURE_WDOG_HAS_WAITEN) && FSL_FEATURE_WDOG_HAS_WAITEN
-            WDOG_STCTRLH_WAITEN(config->workMode.enableWait) |
-#endif /* FSL_FEATURE_WDOG_HAS_WAITEN */
-            WDOG_STCTRLH_DISTESTWDOG(1U);
-
-    /* Disable the global interrupts. Otherwise, an interrupt could effectively invalidate the unlock sequence
-     * and the WCT may expire. After the configuration finishes, re-enable the global interrupts. */
-    primaskValue = DisableGlobalIRQ();
-    WDOG_Unlock(base);
-    /* Wait one bus clock cycle */
-    base->RSTCNT = 0U;
-    /* Set configruation */
-    base->PRESC = WDOG_PRESC_PRESCVAL(config->prescaler);
-    base->WINH = (uint16_t)((config->windowValue >> 16U) & 0xFFFFU);
-    base->WINL = (uint16_t)((config->windowValue) & 0xFFFFU);
-    base->TOVALH = (uint16_t)((config->timeoutValue >> 16U) & 0xFFFFU);
-    base->TOVALL = (uint16_t)((config->timeoutValue) & 0xFFFFU);
-    base->STCTRLH = value;
-    EnableGlobalIRQ(primaskValue);
-}
-
-void WDOG_Deinit(WDOG_Type *base)
-{
-    uint32_t primaskValue = 0U;
-
-    /* Disable the global interrupts */
-    primaskValue = DisableGlobalIRQ();
-    WDOG_Unlock(base);
-    /* Wait one bus clock cycle */
-    base->RSTCNT = 0U;
-    WDOG_Disable(base);
-    EnableGlobalIRQ(primaskValue);
-    WDOG_ClearResetCount(base);
-}
-
-void WDOG_SetTestModeConfig(WDOG_Type *base, wdog_test_config_t *config)
-{
-    assert(config);
-
-    uint32_t value = 0U;
-    uint32_t primaskValue = 0U;
-
-    value = WDOG_STCTRLH_DISTESTWDOG(0U) | WDOG_STCTRLH_TESTWDOG(1U) | WDOG_STCTRLH_TESTSEL(config->testMode) |
-            WDOG_STCTRLH_BYTESEL(config->testedByte) | WDOG_STCTRLH_IRQRSTEN(0U) | WDOG_STCTRLH_WDOGEN(1U) |
-            WDOG_STCTRLH_ALLOWUPDATE(1U);
-
-    /* Disable the global interrupts. Otherwise, an interrupt could effectively invalidate the unlock sequence
-     * and the WCT may expire. After the configuration finishes, re-enable the global interrupts. */
-    primaskValue = DisableGlobalIRQ();
-    WDOG_Unlock(base);
-    /* Wait one bus clock cycle */
-    base->RSTCNT = 0U;
-    /* Set configruation */
-    base->TOVALH = (uint16_t)((config->timeoutValue >> 16U) & 0xFFFFU);
-    base->TOVALL = (uint16_t)((config->timeoutValue) & 0xFFFFU);
-    base->STCTRLH = value;
-    EnableGlobalIRQ(primaskValue);
-}
-
-uint32_t WDOG_GetStatusFlags(WDOG_Type *base)
-{
-    uint32_t status_flag = 0U;
-
-    status_flag |= (base->STCTRLH & WDOG_STCTRLH_WDOGEN_MASK);
-    status_flag |= (base->STCTRLL & WDOG_STCTRLL_INTFLG_MASK);
-
-    return status_flag;
-}
-
-void WDOG_ClearStatusFlags(WDOG_Type *base, uint32_t mask)
-{
-    if (mask & kWDOG_TimeoutFlag)
-    {
-        base->STCTRLL |= WDOG_STCTRLL_INTFLG_MASK;
-    }
-}
-
-void WDOG_Refresh(WDOG_Type *base)
-{
-    uint32_t primaskValue = 0U;
-
-    /* Disable the global interrupt to protect refresh sequence */
-    primaskValue = DisableGlobalIRQ();
-    base->REFRESH = WDOG_FIRST_WORD_OF_REFRESH;
-    base->REFRESH = WDOG_SECOND_WORD_OF_REFRESH;
-    EnableGlobalIRQ(primaskValue);
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/drivers/fsl_wdog.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,434 +0,0 @@
-/*
- * Copyright (c) 2015, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef _FSL_WDOG_H_
-#define _FSL_WDOG_H_
-
-#include "fsl_common.h"
-
-/*!
- * @addtogroup wdog_driver
- * @{
- */
-
-/*! @file */
-
-/*******************************************************************************
- * Definitions
- *******************************************************************************/
-
-/*! @name Driver version */
-/*@{*/
-/*! @brief Defines WDOG driver version 2.0.0. */
-#define FSL_WDOG_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
-/*@}*/
-
-/*! @name Unlock sequence */
-/*@{*/
-#define WDOG_FIRST_WORD_OF_UNLOCK (0xC520U)  /*!< First word of unlock sequence */
-#define WDOG_SECOND_WORD_OF_UNLOCK (0xD928U) /*!< Second word of unlock sequence */
-/*@}*/
-
-/*! @name Refresh sequence */
-/*@{*/
-#define WDOG_FIRST_WORD_OF_REFRESH (0xA602U)  /*!< First word of refresh sequence */
-#define WDOG_SECOND_WORD_OF_REFRESH (0xB480U) /*!< Second word of refresh sequence */
-/*@}*/
-
-/*! @brief Describes WDOG clock source. */
-typedef enum _wdog_clock_source
-{
-    kWDOG_LpoClockSource = 0U,       /*!< WDOG clock sourced from LPO*/
-    kWDOG_AlternateClockSource = 1U, /*!< WDOG clock sourced from alternate clock source*/
-} wdog_clock_source_t;
-
-/*! @brief Defines WDOG work mode. */
-typedef struct _wdog_work_mode
-{
-#if defined(FSL_FEATURE_WDOG_HAS_WAITEN) && FSL_FEATURE_WDOG_HAS_WAITEN
-    bool enableWait;  /*!< Enables or disables WDOG in wait mode  */
-#endif                /* FSL_FEATURE_WDOG_HAS_WAITEN */
-    bool enableStop;  /*!< Enables or disables WDOG in stop mode  */
-    bool enableDebug; /*!< Enables or disables WDOG in debug mode */
-} wdog_work_mode_t;
-
-/*! @brief Describes the selection of the clock prescaler. */
-typedef enum _wdog_clock_prescaler
-{
-    kWDOG_ClockPrescalerDivide1 = 0x0U, /*!< Divided by 1 */
-    kWDOG_ClockPrescalerDivide2 = 0x1U, /*!< Divided by 2 */
-    kWDOG_ClockPrescalerDivide3 = 0x2U, /*!< Divided by 3 */
-    kWDOG_ClockPrescalerDivide4 = 0x3U, /*!< Divided by 4 */
-    kWDOG_ClockPrescalerDivide5 = 0x4U, /*!< Divided by 5 */
-    kWDOG_ClockPrescalerDivide6 = 0x5U, /*!< Divided by 6 */
-    kWDOG_ClockPrescalerDivide7 = 0x6U, /*!< Divided by 7 */
-    kWDOG_ClockPrescalerDivide8 = 0x7U, /*!< Divided by 8 */
-} wdog_clock_prescaler_t;
-
-/*! @brief Describes WDOG configuration structure. */
-typedef struct _wdog_config
-{
-    bool enableWdog;                  /*!< Enables or disables WDOG */
-    wdog_clock_source_t clockSource;  /*!< Clock source select */
-    wdog_clock_prescaler_t prescaler; /*!< Clock prescaler value */
-    wdog_work_mode_t workMode;        /*!< Configures WDOG work mode in debug stop and wait mode */
-    bool enableUpdate;                /*!< Update write-once register enable */
-    bool enableInterrupt;             /*!< Enables or disables WDOG interrupt */
-    bool enableWindowMode;            /*!< Enables or disables WDOG window mode */
-    uint32_t windowValue;             /*!< Window value */
-    uint32_t timeoutValue;            /*!< Timeout value */
-} wdog_config_t;
-
-/*! @brief Describes WDOG test mode. */
-typedef enum _wdog_test_mode
-{
-    kWDOG_QuickTest = 0U, /*!< Selects quick test */
-    kWDOG_ByteTest = 1U,  /*!< Selects byte test */
-} wdog_test_mode_t;
-
-/*! @brief Describes WDOG tested byte selection in byte test mode. */
-typedef enum _wdog_tested_byte
-{
-    kWDOG_TestByte0 = 0U, /*!< Byte 0 selected in byte test mode */
-    kWDOG_TestByte1 = 1U, /*!< Byte 1 selected in byte test mode */
-    kWDOG_TestByte2 = 2U, /*!< Byte 2 selected in byte test mode */
-    kWDOG_TestByte3 = 3U, /*!< Byte 3 selected in byte test mode */
-} wdog_tested_byte_t;
-
-/*! @brief Describes WDOG test mode configuration structure. */
-typedef struct _wdog_test_config
-{
-    wdog_test_mode_t testMode;     /*!< Selects test mode */
-    wdog_tested_byte_t testedByte; /*!< Selects tested byte in byte test mode */
-    uint32_t timeoutValue;         /*!< Timeout value */
-} wdog_test_config_t;
-
-/*!
- * @brief WDOG interrupt configuration structure, default settings all disabled.
- *
- * This structure contains the settings for all of the WDOG interrupt configurations.
- */
-enum _wdog_interrupt_enable_t
-{
-    kWDOG_InterruptEnable = WDOG_STCTRLH_IRQRSTEN_MASK, /*!< WDOG timeout will generate interrupt before reset*/
-};
-
-/*!
- * @brief WDOG status flags.
- *
- * This structure contains the WDOG status flags for use in the WDOG functions.
- */
-enum _wdog_status_flags_t
-{
-    kWDOG_RunningFlag = WDOG_STCTRLH_WDOGEN_MASK, /*!< Running flag, set when WDOG is enabled*/
-    kWDOG_TimeoutFlag = WDOG_STCTRLL_INTFLG_MASK, /*!< Interrupt flag, set when an exception occurs*/
-};
-
-/*******************************************************************************
- * API
- *******************************************************************************/
-
-#if defined(__cplusplus)
-extern "C" {
-#endif /* __cplusplus */
-
-/*!
- * @name WDOG Initialization and De-initialization
- * @{
- */
-
-/*!
- * @brief Initializes WDOG configure sturcture.
- *
- * This function initializes the WDOG configure structure to default value. The default
- * value are:
- * @code
- *   wdogConfig->enableWdog = true;
- *   wdogConfig->clockSource = kWDOG_LpoClockSource;
- *   wdogConfig->prescaler = kWDOG_ClockPrescalerDivide1;
- *   wdogConfig->workMode.enableWait = true;
- *   wdogConfig->workMode.enableStop = false;
- *   wdogConfig->workMode.enableDebug = false;
- *   wdogConfig->enableUpdate = true;
- *   wdogConfig->enableInterrupt = false;
- *   wdogConfig->enableWindowMode = false;
- *   wdogConfig->windowValue = 0;
- *   wdogConfig->timeoutValue = 0xFFFFU;
- * @endcode
- *
- * @param config Pointer to WDOG config structure.
- * @see wdog_config_t
- */
-void WDOG_GetDefaultConfig(wdog_config_t *config);
-
-/*!
- * @brief Initializes the WDOG.
- *
- * This function initializes the WDOG. When called, the WDOG runs according to the configuration.
- * If user wants to reconfigure WDOG without forcing a reset first, enableUpdate must be set to true
- * in configuration.
- *
- * Example:
- * @code
- *   wdog_config_t config;
- *   WDOG_GetDefaultConfig(&config);
- *   config.timeoutValue = 0x7ffU;
- *   config.enableUpdate = true;
- *   WDOG_Init(wdog_base,&config);
- * @endcode
- *
- * @param base   WDOG peripheral base address
- * @param config The configuration of WDOG
- */
-void WDOG_Init(WDOG_Type *base, const wdog_config_t *config);
-
-/*!
- * @brief Shuts down the WDOG.
- *
- * This function shuts down the WDOG.
- * Make sure that the WDOG_STCTRLH.ALLOWUPDATE is 1 which means that the register update is enabled.
- */
-void WDOG_Deinit(WDOG_Type *base);
-
-/*!
- * @brief Configures WDOG functional test.
- *
- * This function is used to configure the WDOG functional test. When called, the WDOG goes into test mode
- * and runs according to the configuration.
- * Make sure that the WDOG_STCTRLH.ALLOWUPDATE is 1 which means that the register update is enabled.
- *
- * Example:
- * @code
- *   wdog_test_config_t test_config;
- *   test_config.testMode = kWDOG_QuickTest;
- *   test_config.timeoutValue = 0xfffffu;
- *   WDOG_SetTestModeConfig(wdog_base, &test_config);
- * @endcode
- * @param base   WDOG peripheral base address
- * @param config The functional test configuration of WDOG
- */
-void WDOG_SetTestModeConfig(WDOG_Type *base, wdog_test_config_t *config);
-
-/* @} */
-
-/*!
- * @name WDOG Functional Operation
- * @{
- */
-
-/*!
- * @brief Enables the WDOG module.
- *
- * This function write value into WDOG_STCTRLH register to enable the WDOG, it is a write-once register,
- * make sure that the WCT window is still open and this register has not been written in this WCT
- * while this function is called.
- *
- * @param base WDOG peripheral base address
- */
-static inline void WDOG_Enable(WDOG_Type *base)
-{
-    base->STCTRLH |= WDOG_STCTRLH_WDOGEN_MASK;
-}
-
-/*!
- * @brief Disables the WDOG module.
- *
- * This function write value into WDOG_STCTRLH register to disable the WDOG, it is a write-once register,
- * make sure that the WCT window is still open and this register has not been written in this WCT
- * while this function is called.
- *
- * @param base WDOG peripheral base address
- */
-static inline void WDOG_Disable(WDOG_Type *base)
-{
-    base->STCTRLH &= ~WDOG_STCTRLH_WDOGEN_MASK;
-}
-
-/*!
- * @brief Enable WDOG interrupt.
- *
- * This function write value into WDOG_STCTRLH register to enable WDOG interrupt, it is a write-once register,
- * make sure that the WCT window is still open and this register has not been written in this WCT
- * while this function is called.
- *
- * @param base WDOG peripheral base address
- * @param mask The interrupts to enable
- *        The parameter can be combination of the following source if defined:
- *        @arg kWDOG_InterruptEnable
- */
-static inline void WDOG_EnableInterrupts(WDOG_Type *base, uint32_t mask)
-{
-    base->STCTRLH |= mask;
-}
-
-/*!
- * @brief Disable WDOG interrupt.
- *
- * This function write value into WDOG_STCTRLH register to disable WDOG interrupt, it is a write-once register,
- * make sure that the WCT window is still open and this register has not been written in this WCT
- * while this function is called.
- *
- * @param base WDOG peripheral base address
- * @param mask The interrupts to disable
- *        The parameter can be combination of the following source if defined:
- *        @arg kWDOG_InterruptEnable
- */
-static inline void WDOG_DisableInterrupts(WDOG_Type *base, uint32_t mask)
-{
-    base->STCTRLH &= ~mask;
-}
-
-/*!
- * @brief Gets WDOG all status flags.
- *
- * This function gets all status flags.
- *
- * Example for getting Running Flag:
- * @code
- *   uint32_t status;
- *   status = WDOG_GetStatusFlags(wdog_base) & kWDOG_RunningFlag;
- * @endcode
- * @param base        WDOG peripheral base address
- * @return            State of the status flag: asserted (true) or not-asserted (false).@see _wdog_status_flags_t
- *                    - true: related status flag has been set.
- *                    - false: related status flag is not set.
- */
-uint32_t WDOG_GetStatusFlags(WDOG_Type *base);
-
-/*!
- * @brief Clear WDOG flag.
- *
- * This function clears WDOG status flag.
- *
- * Example for clearing timeout(interrupt) flag:
- * @code
- *   WDOG_ClearStatusFlags(wdog_base,kWDOG_TimeoutFlag);
- * @endcode
- * @param base        WDOG peripheral base address
- * @param mask        The status flags to clear.
- *                    The parameter could be any combination of the following values:
- *                    kWDOG_TimeoutFlag
- */
-void WDOG_ClearStatusFlags(WDOG_Type *base, uint32_t mask);
-
-/*!
- * @brief Set the WDOG timeout value.
- *
- * This function sets the timeout value.
- * It should be ensured that the time-out value for the WDOG is always greater than
- * 2xWCT time + 20 bus clock cycles.
- * This function write value into WDOG_TOVALH and WDOG_TOVALL registers which are wirte-once.
- * Make sure the WCT window is still open and these two registers have not been written in this WCT
- * while this function is called.
- *
- * @param base WDOG peripheral base address
- * @param timeoutCount WDOG timeout value, count of WDOG clock tick.
- */
-static inline void WDOG_SetTimeoutValue(WDOG_Type *base, uint32_t timeoutCount)
-{
-    base->TOVALH = (uint16_t)((timeoutCount >> 16U) & 0xFFFFU);
-    base->TOVALL = (uint16_t)((timeoutCount)&0xFFFFU);
-}
-
-/*!
- * @brief Sets the WDOG window value.
- *
- * This function sets the WDOG window value.
- * This function write value into WDOG_WINH and WDOG_WINL registers which are wirte-once.
- * Make sure the WCT window is still open and these two registers have not been written in this WCT
- * while this function is called.
- *
- * @param base WDOG peripheral base address
- * @param windowValue WDOG window value.
- */
-static inline void WDOG_SetWindowValue(WDOG_Type *base, uint32_t windowValue)
-{
-    base->WINH = (uint16_t)((windowValue >> 16U) & 0xFFFFU);
-    base->WINL = (uint16_t)((windowValue)&0xFFFFU);
-}
-
-/*!
- * @brief Unlocks the WDOG register written.
- *
- * This function unlocks the WDOG register written.
- * Before starting the unlock sequence and following congfiguration, disable the global interrupts.
- * Otherwise, an interrupt could effectively invalidate the unlock sequence and the WCT may expire,
- * After the configuration finishes, re-enable the global interrupts.
- *
- * @param base WDOG peripheral base address
- */
-static inline void WDOG_Unlock(WDOG_Type *base)
-{
-    base->UNLOCK = WDOG_FIRST_WORD_OF_UNLOCK;
-    base->UNLOCK = WDOG_SECOND_WORD_OF_UNLOCK;
-}
-
-/*!
- * @brief Refreshes the WDOG timer.
- *
- * This function feeds the WDOG.
- * This function should be called before WDOG timer is in timeout. Otherwise, a reset is asserted.
- *
- * @param base WDOG peripheral base address
- */
-void WDOG_Refresh(WDOG_Type *base);
-
-/*!
- * @brief Gets the WDOG reset count.
- *
- * This function gets the WDOG reset count value.
- *
- * @param base WDOG peripheral base address
- * @return     WDOG reset count value
- */
-static inline uint16_t WDOG_GetResetCount(WDOG_Type *base)
-{
-    return base->RSTCNT;
-}
-/*!
- * @brief Clears the WDOG reset count.
- *
- * This function clears the WDOG reset count value.
- *
- * @param base WDOG peripheral base address
- */
-static inline void WDOG_ClearResetCount(WDOG_Type *base)
-{
-    base->RSTCNT |= UINT16_MAX;
-}
-
-/*@}*/
-
-#if defined(__cplusplus)
-}
-#endif /* __cplusplus */
-
-/*! @}*/
-
-#endif /* _FSL_WDOG_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/peripheral_clock_defines.h	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2016, Freescale Semiconductor, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * o Redistributions of source code must retain the above copyright notice, this list
- *   of conditions and the following disclaimer.
- *
- * o Redistributions in binary form must reproduce the above copyright notice, this
- *   list of conditions and the following disclaimer in the documentation and/or
- *   other materials provided with the distribution.
- *
- * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
- *   contributors may be used to endorse or promote products derived from this
- *   software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _FSL_PERIPHERAL_CLOCK_H_
-#define _FSL_PERIPHERAL_CLOCK_H_
-
-#include "fsl_clock.h"
-
-/* Array for UART module clocks */
-#define UART_CLOCK_FREQS                                                                              \
-    {                                                                                            \
-        UART0_CLK_SRC, UART1_CLK_SRC, UART2_CLK_SRC, UART3_CLK_SRC, UART4_CLK_SRC, UART5_CLK_SRC \
-    }
-
-/* Array for I2C module clocks */
-#define I2C_CLOCK_FREQS                                 \
-    {                                              \
-        I2C0_CLK_SRC, I2C1_CLK_SRC, I2C2_CLK_SRC   \
-    }
-
-/* Array for DSPI module clocks */
-#define SPI_CLOCK_FREQS                                    \
-    {                                                 \
-        DSPI0_CLK_SRC, DSPI1_CLK_SRC, DSPI2_CLK_SRC   \
-    }
-
-#endif /* _FSL_PERIPHERAL_CLOCK_H_ */
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/pwmout_api.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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.
- */
-#include "mbed_assert.h"
-#include "pwmout_api.h"
-
-#if DEVICE_PWMOUT
-
-#include "cmsis.h"
-#include "pinmap.h"
-#include "fsl_ftm.h"
-#include "PeripheralPins.h"
-
-static float pwm_clock_mhz;
-/* Array of FTM peripheral base address. */
-static FTM_Type *const ftm_addrs[] = FTM_BASE_PTRS;
-
-void pwmout_init(pwmout_t* obj, PinName pin) {
-    PWMName pwm = (PWMName)pinmap_peripheral(pin, PinMap_PWM);
-    MBED_ASSERT(pwm != (PWMName)NC);
-
-    obj->pwm_name = pwm;
-
-    uint32_t pwm_base_clock;
-    pwm_base_clock = CLOCK_GetFreq(kCLOCK_BusClk);
-    float clkval = (float)pwm_base_clock / 1000000.0f;
-    uint32_t clkdiv = 0;
-    while (clkval > 1) {
-        clkdiv++;
-        clkval /= 2.0f;
-        if (clkdiv == 7) {
-            break;
-        }
-    }
-
-    pwm_clock_mhz = clkval;
-    uint32_t channel = pwm & 0xF;
-    uint32_t instance = pwm >> TPM_SHIFT;
-    ftm_config_t ftmInfo;
-
-    FTM_GetDefaultConfig(&ftmInfo);
-    ftmInfo.prescale = (ftm_clock_prescale_t)clkdiv;
-    /* Initialize FTM module */
-    FTM_Init(ftm_addrs[instance], &ftmInfo);
-
-    ftm_addrs[instance]->CONF |= FTM_CONF_NUMTOF(3);
-
-    ftm_chnl_pwm_signal_param_t config = {
-        .chnlNumber = (ftm_chnl_t)channel,
-        .level = kFTM_HighTrue,
-        .dutyCyclePercent = 0,
-        .firstEdgeDelayPercent = 0
-    };
-    // default to 20ms: standard for servos, and fine for e.g. brightness control
-    FTM_SetupPwm(ftm_addrs[instance], &config, 1, kFTM_EdgeAlignedPwm, 50, pwm_base_clock);
-
-    FTM_StartTimer(ftm_addrs[instance], kFTM_SystemClock);
-
-    // Wire pinout
-    pinmap_pinout(pin, PinMap_PWM);
-}
-
-void pwmout_free(pwmout_t* obj) {
-    FTM_Deinit(ftm_addrs[obj->pwm_name >> TPM_SHIFT]);
-}
-
-void pwmout_write(pwmout_t* obj, float value) {
-    if (value < 0.0f) {
-        value = 0.0f;
-    } else if (value > 1.0f) {
-        value = 1.0f;
-    }
-
-    FTM_Type *base = ftm_addrs[obj->pwm_name >> TPM_SHIFT];
-    uint16_t mod = base->MOD & FTM_MOD_MOD_MASK;
-    uint32_t new_count = (uint32_t)((float)(mod) * value);
-    // Update of CnV register
-    base->CONTROLS[obj->pwm_name & 0xF].CnV = new_count;
-    base->CNT = 0;
-    /* Software trigger to update registers */
-    FTM_SetSoftwareTrigger(base, true);
-}
-
-float pwmout_read(pwmout_t* obj) {
-    FTM_Type *base = ftm_addrs[obj->pwm_name >> TPM_SHIFT];
-    uint16_t count = (base->CONTROLS[obj->pwm_name & 0xF].CnV) & FTM_CnV_VAL_MASK;
-    uint16_t mod = base->MOD & FTM_MOD_MOD_MASK;
-
-    if (mod == 0)
-        return 0.0;
-    float v = (float)(count) / (float)(mod);
-    return (v > 1.0f) ? (1.0f) : (v);
-}
-
-void pwmout_period(pwmout_t* obj, float seconds) {
-    pwmout_period_us(obj, seconds * 1000000.0f);
-}
-
-void pwmout_period_ms(pwmout_t* obj, int ms) {
-    pwmout_period_us(obj, ms * 1000);
-}
-
-// Set the PWM period, keeping the duty cycle the same.
-void pwmout_period_us(pwmout_t* obj, int us) {
-    FTM_Type *base = ftm_addrs[obj->pwm_name >> TPM_SHIFT];
-    float dc = pwmout_read(obj);
-
-    // Stop FTM clock to ensure instant update of MOD register
-    base->MOD = FTM_MOD_MOD((pwm_clock_mhz * (float)us) - 1);
-    pwmout_write(obj, dc);
-}
-
-void pwmout_pulsewidth(pwmout_t* obj, float seconds) {
-    pwmout_pulsewidth_us(obj, seconds * 1000000.0f);
-}
-
-void pwmout_pulsewidth_ms(pwmout_t* obj, int ms) {
-    pwmout_pulsewidth_us(obj, ms * 1000);
-}
-
-void pwmout_pulsewidth_us(pwmout_t* obj, int us) {
-    FTM_Type *base = ftm_addrs[obj->pwm_name >> TPM_SHIFT];
-    uint32_t value = (uint32_t)(pwm_clock_mhz * (float)us);
-
-    // Update of CnV register
-    base->CONTROLS[obj->pwm_name & 0xF].CnV = value;
-    /* Software trigger to update registers */
-    FTM_SetSoftwareTrigger(base, true);
-}
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/serial_api.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,281 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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.
- */
-#include "serial_api.h"
-
-#if DEVICE_SERIAL
-
-// math.h required for floating point operations for baud rate calculation
-#include <math.h>
-#include "mbed_assert.h"
-
-#include <string.h>
-
-#include "cmsis.h"
-#include "pinmap.h"
-#include "fsl_uart.h"
-#include "peripheral_clock_defines.h"
-#include "PeripheralPins.h"
-#include "fsl_clock_config.h"
-
-static uint32_t serial_irq_ids[FSL_FEATURE_SOC_UART_COUNT] = {0};
-static uart_irq_handler irq_handler;
-/* Array of UART peripheral base address. */
-static UART_Type *const uart_addrs[] = UART_BASE_PTRS;
-/* Array of UART bus clock frequencies */
-static clock_name_t const uart_clocks[] = UART_CLOCK_FREQS;
-
-
-int stdio_uart_inited = 0;
-serial_t stdio_uart;
-
-void serial_init(serial_t *obj, PinName tx, PinName rx) {
-    uint32_t uart_tx = pinmap_peripheral(tx, PinMap_UART_TX);
-    uint32_t uart_rx = pinmap_peripheral(rx, PinMap_UART_RX);
-    obj->index = pinmap_merge(uart_tx, uart_rx);
-    MBED_ASSERT((int)obj->index != NC);
-
-    // Need to initialize the clocks here as ticker init gets called before mbed_sdk_init
-    if (SystemCoreClock == DEFAULT_SYSTEM_CLOCK)
-        BOARD_BootClockRUN();
-
-    uart_config_t config;
-
-    UART_GetDefaultConfig(&config);
-    config.baudRate_Bps = 9600;
-    config.enableTx = false;
-    config.enableRx = false;
-
-    UART_Init(uart_addrs[obj->index], &config, CLOCK_GetFreq(uart_clocks[obj->index]));
-
-    pinmap_pinout(tx, PinMap_UART_TX);
-    pinmap_pinout(rx, PinMap_UART_RX);
-
-    if (tx != NC) {
-        UART_EnableTx(uart_addrs[obj->index], true);
-        pin_mode(tx, PullUp);
-    }
-    if (rx != NC) {
-        UART_EnableRx(uart_addrs[obj->index], true);
-        pin_mode(rx, PullUp);
-    }
-
-    if (obj->index == STDIO_UART) {
-        stdio_uart_inited = 1;
-        memcpy(&stdio_uart, obj, sizeof(serial_t));
-    }
-}
-
-void serial_free(serial_t *obj) {
-    UART_Deinit(uart_addrs[obj->index]);
-    serial_irq_ids[obj->index] = 0;
-}
-
-void serial_baud(serial_t *obj, int baudrate) {
-    UART_SetBaudRate(uart_addrs[obj->index], (uint32_t)baudrate, CLOCK_GetFreq(uart_clocks[obj->index]));
-}
-
-void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) {
-    UART_Type *base = uart_addrs[obj->index];
-    uint8_t temp;
-    /* Set bit count and parity mode. */
-    temp = base->C1 & ~(UART_C1_PE_MASK | UART_C1_PT_MASK | UART_C1_M_MASK);
-    if (parity != ParityNone)
-    {
-        /* Enable Parity */
-        temp |= (UART_C1_PE_MASK | UART_C1_M_MASK);
-        if (parity == ParityOdd) {
-            temp |= UART_C1_PT_MASK;
-        } else {
-            // Hardware does not support forced parity
-            MBED_ASSERT(0);
-        }
-    }
-    base->C1 = temp;
-#if defined(FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT) && FSL_FEATURE_UART_HAS_STOP_BIT_CONFIG_SUPPORT
-    /* Set stop bit per char */
-    base->BDH = (base->BDH & ~UART_BDH_SBNS_MASK) | UART_BDH_SBNS((uint8_t)--stop_bits);
-#endif
-}
-
-/******************************************************************************
- * INTERRUPTS HANDLING
- ******************************************************************************/
-static inline void uart_irq(uint32_t transmit_empty, uint32_t receive_full, uint32_t index) {
-    UART_Type *base = uart_addrs[index];
-
-    /* If RX overrun. */
-    if (UART_S1_OR_MASK & base->S1)
-    {
-        /* Read base->D, otherwise the RX does not work. */
-        (void)base->D;
-    }
-
-    if (serial_irq_ids[index] != 0) {
-        if (transmit_empty)
-            irq_handler(serial_irq_ids[index], TxIrq);
-
-        if (receive_full)
-            irq_handler(serial_irq_ids[index], RxIrq);
-    }
-}
-
-void uart0_irq() {
-    uint32_t status_flags = UART0->S1;
-    uart_irq((status_flags & kUART_TxDataRegEmptyFlag), (status_flags & kUART_RxDataRegFullFlag), 0);
-}
-
-void uart1_irq() {
-    uint32_t status_flags = UART1->S1;
-    uart_irq((status_flags & UART_S1_TDRE_MASK), (status_flags & UART_S1_RDRF_MASK), 1);
-}
-
-void uart2_irq() {
-    uint32_t status_flags = UART2->S1;
-    uart_irq((status_flags & UART_S1_TDRE_MASK), (status_flags & UART_S1_RDRF_MASK), 2);
-}
-
-void uart3_irq() {
-    uint32_t status_flags = UART3->S1;
-    uart_irq((status_flags & UART_S1_TDRE_MASK), (status_flags & UART_S1_RDRF_MASK), 3);
-}
-
-void uart4_irq() {
-    uint32_t status_flags = UART4->S1;
-    uart_irq((status_flags & UART_S1_TDRE_MASK), (status_flags & UART_S1_RDRF_MASK), 4);
-}
-
-void uart5_irq() {
-    uint32_t status_flags = UART5->S1;
-    uart_irq((status_flags & UART_S1_TDRE_MASK), (status_flags & UART_S1_RDRF_MASK), 5);
-}
-
-void serial_irq_handler(serial_t *obj, uart_irq_handler handler, uint32_t id) {
-    irq_handler = handler;
-    serial_irq_ids[obj->index] = id;
-}
-
-void serial_irq_set(serial_t *obj, SerialIrq irq, uint32_t enable) {
-    IRQn_Type uart_irqs[] = UART_RX_TX_IRQS;
-    uint32_t vector = 0;
-
-    switch (obj->index) {
-        case 0:
-            vector = (uint32_t)&uart0_irq;
-            break;
-        case 1:
-            vector = (uint32_t)&uart1_irq;
-            break;
-        case 2:
-            vector = (uint32_t)&uart2_irq;
-            break;
-        case 3:
-            vector = (uint32_t)&uart3_irq;
-            break;
-        case 4:
-            vector = (uint32_t)&uart4_irq;
-            break;
-        case 5:
-            vector = (uint32_t)&uart5_irq;
-            break;
-        default:
-            break;
-    }
-
-    if (enable) {
-        switch (irq) {
-            case RxIrq:
-                UART_EnableInterrupts(uart_addrs[obj->index], kUART_RxDataRegFullInterruptEnable);
-                break;
-            case TxIrq:
-                UART_EnableInterrupts(uart_addrs[obj->index], kUART_TxDataRegEmptyInterruptEnable);
-                break;
-            default:
-                break;
-        }
-        NVIC_SetVector(uart_irqs[obj->index], vector);
-        NVIC_EnableIRQ(uart_irqs[obj->index]);
-
-    } else { // disable
-        int all_disabled = 0;
-        SerialIrq other_irq = (irq == RxIrq) ? (TxIrq) : (RxIrq);
-        switch (irq) {
-            case RxIrq:
-                UART_DisableInterrupts(uart_addrs[obj->index], kUART_RxDataRegFullInterruptEnable);
-                break;
-            case TxIrq:
-                UART_DisableInterrupts(uart_addrs[obj->index], kUART_TxDataRegEmptyInterruptEnable);
-                break;
-            default:
-                break;
-        }
-        switch (other_irq) {
-            case RxIrq:
-                all_disabled = ((UART_GetEnabledInterrupts(uart_addrs[obj->index]) & kUART_RxDataRegFullInterruptEnable) == 0);
-                break;
-            case TxIrq:
-                all_disabled = ((UART_GetEnabledInterrupts(uart_addrs[obj->index]) & kUART_TxDataRegEmptyInterruptEnable) == 0);
-                break;
-            default:
-                break;
-        }
-        if (all_disabled)
-            NVIC_DisableIRQ(uart_irqs[obj->index]);
-    }
-}
-
-int serial_getc(serial_t *obj) {
-    while (!serial_readable(obj));
-    uint8_t data;
-    data = UART_ReadByte(uart_addrs[obj->index]);
-
-    return data;
-}
-
-void serial_putc(serial_t *obj, int c) {
-    while (!serial_writable(obj));
-    UART_WriteByte(uart_addrs[obj->index], (uint8_t)c);
-}
-
-int serial_readable(serial_t *obj) {
-    uint32_t status_flags = UART_GetStatusFlags(uart_addrs[obj->index]);
-    if (status_flags & kUART_RxOverrunFlag)
-        UART_ClearStatusFlags(uart_addrs[obj->index], kUART_RxOverrunFlag);
-    return (status_flags & kUART_RxDataRegFullFlag);
-}
-
-int serial_writable(serial_t *obj) {
-    uint32_t status_flags = UART_GetStatusFlags(uart_addrs[obj->index]);
-    if (status_flags & kUART_RxOverrunFlag)
-        UART_ClearStatusFlags(uart_addrs[obj->index], kUART_RxOverrunFlag);
-    return (status_flags & kUART_TxDataRegEmptyFlag);
-}
-
-void serial_clear(serial_t *obj) {
-}
-
-void serial_pinout_tx(PinName tx) {
-    pinmap_pinout(tx, PinMap_UART_TX);
-}
-
-void serial_break_set(serial_t *obj) {
-    uart_addrs[obj->index]->C2 |= UART_C2_SBK_MASK;
-}
-
-void serial_break_clear(serial_t *obj) {
-    uart_addrs[obj->index]->C2 &= ~UART_C2_SBK_MASK;
-}
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/spi_api.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2013 ARM Limited
- *
- * 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.
- */
-#include <math.h>
-#include "mbed_assert.h"
-
-#include "spi_api.h"
-
-#if DEVICE_SPI
-
-#include "cmsis.h"
-#include "pinmap.h"
-#include "mbed_error.h"
-#include "fsl_dspi.h"
-#include "peripheral_clock_defines.h"
-#include "PeripheralPins.h"
-
-/* Array of SPI peripheral base address. */
-static SPI_Type *const spi_address[] = SPI_BASE_PTRS;
-/* Array of SPI bus clock frequencies */
-static clock_name_t const spi_clocks[] = SPI_CLOCK_FREQS;
-
-void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel) {
-    // determine the SPI to use
-    uint32_t spi_mosi = pinmap_peripheral(mosi, PinMap_SPI_MOSI);
-    uint32_t spi_miso = pinmap_peripheral(miso, PinMap_SPI_MISO);
-    uint32_t spi_sclk = pinmap_peripheral(sclk, PinMap_SPI_SCLK);
-    uint32_t spi_ssel = pinmap_peripheral(ssel, PinMap_SPI_SSEL);
-    uint32_t spi_data = pinmap_merge(spi_mosi, spi_miso);
-    uint32_t spi_cntl = pinmap_merge(spi_sclk, spi_ssel);
-
-    obj->instance = pinmap_merge(spi_data, spi_cntl);
-    MBED_ASSERT((int)obj->instance != NC);
-
-    // pin out the spi pins
-    pinmap_pinout(mosi, PinMap_SPI_MOSI);
-    pinmap_pinout(miso, PinMap_SPI_MISO);
-    pinmap_pinout(sclk, PinMap_SPI_SCLK);
-    if (ssel != NC) {
-        pinmap_pinout(ssel, PinMap_SPI_SSEL);
-    }
-}
-
-void spi_free(spi_t *obj) {
-    DSPI_Deinit(spi_address[obj->instance]);
-}
-
-void spi_format(spi_t *obj, int bits, int mode, int slave) {
-
-    dspi_master_config_t master_config;
-    dspi_slave_config_t slave_config;
-
-    if (slave) {
-        /* Slave config */
-        DSPI_SlaveGetDefaultConfig(&slave_config);
-        slave_config.whichCtar = kDSPI_Ctar0;
-        slave_config.ctarConfig.bitsPerFrame = (uint32_t)bits;;
-        slave_config.ctarConfig.cpol = (mode & 0x2) ? kDSPI_ClockPolarityActiveLow : kDSPI_ClockPolarityActiveHigh;
-        slave_config.ctarConfig.cpha = (mode & 0x1) ? kDSPI_ClockPhaseSecondEdge : kDSPI_ClockPhaseFirstEdge;
-
-        DSPI_SlaveInit(spi_address[obj->instance], &slave_config);
-    } else {
-        /* Master config */
-        DSPI_MasterGetDefaultConfig(&master_config);
-        master_config.ctarConfig.bitsPerFrame = (uint32_t)bits;;
-        master_config.ctarConfig.cpol = (mode & 0x2) ? kDSPI_ClockPolarityActiveLow : kDSPI_ClockPolarityActiveHigh;
-        master_config.ctarConfig.cpha = (mode & 0x1) ? kDSPI_ClockPhaseSecondEdge : kDSPI_ClockPhaseFirstEdge;
-        master_config.ctarConfig.direction = kDSPI_MsbFirst;
-        master_config.ctarConfig.pcsToSckDelayInNanoSec = 0;
-
-        DSPI_MasterInit(spi_address[obj->instance], &master_config, CLOCK_GetFreq(spi_clocks[obj->instance]));
-    }
-}
-
-void spi_frequency(spi_t *obj, int hz) {
-    uint32_t busClock = CLOCK_GetFreq(spi_clocks[obj->instance]);
-    DSPI_MasterSetBaudRate(spi_address[obj->instance], kDSPI_Ctar0, (uint32_t)hz, busClock);
-    //Half clock period delay after SPI transfer
-    DSPI_MasterSetDelayTimes(spi_address[obj->instance], kDSPI_Ctar0, kDSPI_LastSckToPcs, busClock, 500000000 / hz);
-}
-
-static inline int spi_readable(spi_t * obj) {
-    return (DSPI_GetStatusFlags(spi_address[obj->instance]) & kDSPI_RxFifoDrainRequestFlag);
-}
-
-int spi_master_write(spi_t *obj, int value) {
-    dspi_command_data_config_t command;
-    uint32_t rx_data;
-    DSPI_GetDefaultDataCommandConfig(&command);
-    command.isEndOfQueue = true;
-
-    DSPI_MasterWriteDataBlocking(spi_address[obj->instance], &command, (uint16_t)value);
-
-    DSPI_ClearStatusFlags(spi_address[obj->instance], kDSPI_TxFifoFillRequestFlag);
-
-    // wait rx buffer full
-    while (!spi_readable(obj));
-    rx_data = DSPI_ReadData(spi_address[obj->instance]);
-    DSPI_ClearStatusFlags(spi_address[obj->instance], kDSPI_RxFifoDrainRequestFlag);
-    return rx_data & 0xffff;
-}
-
-int spi_slave_receive(spi_t *obj) {
-    return spi_readable(obj);
-}
-
-int spi_slave_read(spi_t *obj) {
-    uint32_t rx_data;
-
-    while (!spi_readable(obj));
-    rx_data = DSPI_ReadData(spi_address[obj->instance]);
-    DSPI_ClearStatusFlags(spi_address[obj->instance], kDSPI_RxFifoDrainRequestFlag);
-    return rx_data & 0xffff;
-}
-
-void spi_slave_write(spi_t *obj, int value) {
-    DSPI_SlaveWriteDataBlocking(spi_address[obj->instance], (uint32_t)value);
-}
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KSDK2_MCUS/TARGET_K64F/us_ticker.c	Wed Sep 07 20:44:12 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * 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.
- */
-#include <stddef.h>
-#include "us_ticker_api.h"
-#include "PeripheralNames.h"
-#include "fsl_pit.h"
-#include "fsl_clock_config.h"
-
-static int us_ticker_inited = 0;
-
-void us_ticker_init(void) {
-    if (us_ticker_inited) {
-        return;
-    }
-    us_ticker_inited = 1;
-    // Need to initialize the clocks here as ticker init gets called before mbed_sdk_init
-    if (SystemCoreClock == DEFAULT_SYSTEM_CLOCK)
-        BOARD_BootClockRUN();
-    //Common for ticker/timer
-    uint32_t busClock;
-    // Structure to initialize PIT
-    pit_config_t pitConfig;
-
-    PIT_GetDefaultConfig(&pitConfig);
-    PIT_Init(PIT, &pitConfig);
-
-    busClock = CLOCK_GetFreq(kCLOCK_BusClk);
-
-    //Timer
-    PIT_SetTimerPeriod(PIT, kPIT_Chnl_0, busClock / 1000000 - 1);
-    PIT_SetTimerPeriod(PIT, kPIT_Chnl_1, 0xFFFFFFFF);
-    PIT_SetTimerChainMode(PIT, kPIT_Chnl_1, true);
-    PIT_StartTimer(PIT, kPIT_Chnl_0);
-    PIT_StartTimer(PIT, kPIT_Chnl_1);
-
-    //Ticker
-    PIT_SetTimerPeriod(PIT, kPIT_Chnl_2, busClock / 1000000 - 1);
-    PIT_SetTimerChainMode(PIT, kPIT_Chnl_3, true);
-    NVIC_SetVector(PIT3_IRQn, (uint32_t)us_ticker_irq_handler);
-    NVIC_EnableIRQ(PIT3_IRQn);
-}
-
-
-uint32_t us_ticker_read() {
-    if (!us_ticker_inited) {
-        us_ticker_init();
-    }
-
-    return ~(PIT_GetCurrentTimerCount(PIT, kPIT_Chnl_1));
-}
-
-void us_ticker_disable_interrupt(void) {
-    PIT_DisableInterrupts(PIT, kPIT_Chnl_3, kPIT_TimerInterruptEnable);
-}
-
-void us_ticker_clear_interrupt(void) {
-    PIT_ClearStatusFlags(PIT, kPIT_Chnl_3, PIT_TFLG_TIF_MASK);
-}
-
-void us_ticker_set_interrupt(timestamp_t timestamp) {
-    int delta = (int)(timestamp - us_ticker_read());
-    if (delta <= 0) {
-        // This event was in the past.
-        // Set the interrupt as pending, but don't process it here.
-        // This prevents a recurive loop under heavy load
-        // which can lead to a stack overflow.
-        NVIC_SetPendingIRQ(PIT3_IRQn);
-        return;
-    }
-
-    PIT_StopTimer(PIT, kPIT_Chnl_3);
-    PIT_StopTimer(PIT, kPIT_Chnl_2);
-    PIT_SetTimerPeriod(PIT, kPIT_Chnl_3, (uint32_t)delta);
-    PIT_EnableInterrupts(PIT, kPIT_Chnl_3, kPIT_TimerInterruptEnable);
-    PIT_StartTimer(PIT, kPIT_Chnl_3);
-    PIT_StartTimer(PIT, kPIT_Chnl_2);
-}