18#if defined(__ICCARM__)
36#define MAKE_STATUS(group, code) ((((group)*100) + (code)))
39#define MAKE_VERSION(major, minor, bugfix) (((major) << 16) | ((minor) << 8) | (bugfix))
44#define FSL_COMMON_DRIVER_VERSION (MAKE_VERSION(2, 0, 1))
48#define DEBUG_CONSOLE_DEVICE_TYPE_NONE 0U
49#define DEBUG_CONSOLE_DEVICE_TYPE_UART 1U
50#define DEBUG_CONSOLE_DEVICE_TYPE_LPUART 2U
51#define DEBUG_CONSOLE_DEVICE_TYPE_LPSCI 3U
52#define DEBUG_CONSOLE_DEVICE_TYPE_USBCDC 4U
53#define DEBUG_CONSOLE_DEVICE_TYPE_FLEXCOMM 5U
54#define DEBUG_CONSOLE_DEVICE_TYPE_IUART 6U
55#define DEBUG_CONSOLE_DEVICE_TYPE_VUSART 7U
56#define DEBUG_CONSOLE_DEVICE_TYPE_MINI_USART 8U
57#define DEBUG_CONSOLE_DEVICE_TYPE_SWO 9U
180#if ((defined(FSL_FEATURE_SOC_SYSCON_COUNT) && (FSL_FEATURE_SOC_SYSCON_COUNT > 0)) || \
181 (defined(FSL_FEATURE_SOC_ASYNC_SYSCON_COUNT) && (FSL_FEATURE_SOC_ASYNC_SYSCON_COUNT > 0)))
182#include "fsl_reset.h"
188#ifndef FSL_DRIVER_TRANSFER_DOUBLE_WEAK_IRQ
189#define FSL_DRIVER_TRANSFER_DOUBLE_WEAK_IRQ 1
195#define MIN(a, b) ((a) < (b) ? (a) : (b))
199#define MAX(a, b) ((a) > (b) ? (a) : (b))
204#if !defined(ARRAY_SIZE)
205#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
210#if !defined(UINT16_MAX)
211#define UINT16_MAX ((uint16_t)-1)
214#if !defined(UINT32_MAX)
215#define UINT32_MAX ((uint32_t)-1)
222#define USEC_TO_COUNT(us, clockFreqInHz) (uint64_t)((uint64_t)us * clockFreqInHz / 1000000U)
224#define COUNT_TO_USEC(count, clockFreqInHz) (uint64_t)((uint64_t)count * 1000000U / clockFreqInHz)
227#define MSEC_TO_COUNT(ms, clockFreqInHz) (uint64_t)((uint64_t)ms * clockFreqInHz / 1000U)
229#define COUNT_TO_MSEC(count, clockFreqInHz) (uint64_t)((uint64_t)count * 1000U / clockFreqInHz)
234#if (defined(__ICCARM__))
240#define SDK_PRAGMA(x) _Pragma(#x)
243#define SDK_ALIGN(var, alignbytes) SDK_PRAGMA(data_alignment = alignbytes) var
245#if defined(FSL_FEATURE_L1DCACHE_LINESIZE_BYTE)
246#define SDK_L1DCACHE_ALIGN(var) SDK_PRAGMA(data_alignment = FSL_FEATURE_L1DCACHE_LINESIZE_BYTE) var
249#if defined(FSL_FEATURE_L2CACHE_LINESIZE_BYTE)
250#define SDK_L2CACHE_ALIGN(var) SDK_PRAGMA(data_alignment = FSL_FEATURE_L2CACHE_LINESIZE_BYTE) var
252#elif defined(__CC_ARM) || defined(__ARMCC_VERSION)
254#define SDK_ALIGN(var, alignbytes) __attribute__((aligned(alignbytes))) var
256#if defined(FSL_FEATURE_L1DCACHE_LINESIZE_BYTE)
257#define SDK_L1DCACHE_ALIGN(var) __attribute__((aligned(FSL_FEATURE_L1DCACHE_LINESIZE_BYTE))) var
260#if defined(FSL_FEATURE_L2CACHE_LINESIZE_BYTE)
261#define SDK_L2CACHE_ALIGN(var) __attribute__((aligned(FSL_FEATURE_L2CACHE_LINESIZE_BYTE))) var
263#elif defined(__GNUC__)
265#define SDK_ALIGN(var, alignbytes) var __attribute__((aligned(alignbytes)))
267#if defined(FSL_FEATURE_L1DCACHE_LINESIZE_BYTE)
268#define SDK_L1DCACHE_ALIGN(var) var __attribute__((aligned(FSL_FEATURE_L1DCACHE_LINESIZE_BYTE)))
271#if defined(FSL_FEATURE_L2CACHE_LINESIZE_BYTE)
272#define SDK_L2CACHE_ALIGN(var) var __attribute__((aligned(FSL_FEATURE_L2CACHE_LINESIZE_BYTE)))
275#error Toolchain not supported
276#define SDK_ALIGN(var, alignbytes) var
277#if defined(FSL_FEATURE_L1DCACHE_LINESIZE_BYTE)
278#define SDK_L1DCACHE_ALIGN(var) var
280#if defined(FSL_FEATURE_L2CACHE_LINESIZE_BYTE)
281#define SDK_L2CACHE_ALIGN(var) var
286#define SDK_SIZEALIGN(var, alignbytes) \
287 ((unsigned int)((var) + ((alignbytes)-1)) & (unsigned int)(~(unsigned int)((alignbytes)-1)))
297#if (defined(__ICCARM__))
298#if ((!(defined(FSL_FEATURE_HAS_NO_NONCACHEABLE_SECTION) && FSL_FEATURE_HAS_NO_NONCACHEABLE_SECTION)) && defined(FSL_FEATURE_L1ICACHE_LINESIZE_BYTE))
299#define AT_NONCACHEABLE_SECTION(var) var @"NonCacheable"
300#define AT_NONCACHEABLE_SECTION_ALIGN(var, alignbytes) SDK_PRAGMA(data_alignment = alignbytes) var @"NonCacheable"
301#define AT_NONCACHEABLE_SECTION_INIT(var) var @"NonCacheable.init"
302#define AT_NONCACHEABLE_SECTION_ALIGN_INIT(var, alignbytes) SDK_PRAGMA(data_alignment = alignbytes) var @"NonCacheable.init"
304#define AT_NONCACHEABLE_SECTION(var) var
305#define AT_NONCACHEABLE_SECTION_ALIGN(var, alignbytes) SDK_PRAGMA(data_alignment = alignbytes) var
306#define AT_NONCACHEABLE_SECTION_INIT(var) var
307#define AT_NONCACHEABLE_SECTION_ALIGN_INIT(var, alignbytes) SDK_PRAGMA(data_alignment = alignbytes) var
309#elif(defined(__CC_ARM) || defined(__ARMCC_VERSION))
310#if ((!(defined(FSL_FEATURE_HAS_NO_NONCACHEABLE_SECTION) && FSL_FEATURE_HAS_NO_NONCACHEABLE_SECTION)) && defined(FSL_FEATURE_L1ICACHE_LINESIZE_BYTE))
311#define AT_NONCACHEABLE_SECTION(var) __attribute__((section("NonCacheable"), zero_init)) var
312#define AT_NONCACHEABLE_SECTION_ALIGN(var, alignbytes) \
313 __attribute__((section("NonCacheable"), zero_init)) __attribute__((aligned(alignbytes))) var
314#define AT_NONCACHEABLE_SECTION_INIT(var) __attribute__((section("NonCacheable.init"))) var
315#define AT_NONCACHEABLE_SECTION_ALIGN_INIT(var, alignbytes) \
316 __attribute__((section("NonCacheable.init"))) __attribute__((aligned(alignbytes))) var
318#define AT_NONCACHEABLE_SECTION(var) var
319#define AT_NONCACHEABLE_SECTION_ALIGN(var, alignbytes) __attribute__((aligned(alignbytes))) var
320#define AT_NONCACHEABLE_SECTION_INIT(var) var
321#define AT_NONCACHEABLE_SECTION_ALIGN_INIT(var, alignbytes) __attribute__((aligned(alignbytes))) var
323#elif(defined(__GNUC__))
327#if ((!(defined(FSL_FEATURE_HAS_NO_NONCACHEABLE_SECTION) && FSL_FEATURE_HAS_NO_NONCACHEABLE_SECTION)) && defined(FSL_FEATURE_L1ICACHE_LINESIZE_BYTE))
328#define AT_NONCACHEABLE_SECTION_INIT(var) __attribute__((section("NonCacheable.init"))) var
329#define AT_NONCACHEABLE_SECTION_ALIGN_INIT(var, alignbytes) \
330 __attribute__((section("NonCacheable.init"))) var __attribute__((aligned(alignbytes)))
331#define AT_NONCACHEABLE_SECTION(var) __attribute__((section("NonCacheable,\"aw\",%nobits @"))) var
332#define AT_NONCACHEABLE_SECTION_ALIGN(var, alignbytes) \
333 __attribute__((section("NonCacheable,\"aw\",%nobits @"))) var __attribute__((aligned(alignbytes)))
335#define AT_NONCACHEABLE_SECTION(var) var
336#define AT_NONCACHEABLE_SECTION_ALIGN(var, alignbytes) var __attribute__((aligned(alignbytes)))
337#define AT_NONCACHEABLE_SECTION_INIT(var) var
338#define AT_NONCACHEABLE_SECTION_ALIGN_INIT(var, alignbytes) var __attribute__((aligned(alignbytes)))
341#error Toolchain not supported.
342#define AT_NONCACHEABLE_SECTION(var) var
343#define AT_NONCACHEABLE_SECTION_ALIGN(var, alignbytes) var
344#define AT_NONCACHEABLE_SECTION_INIT(var) var
345#define AT_NONCACHEABLE_SECTION_ALIGN_INIT(var, alignbytes) var
351#if defined(FSL_SDK_DRIVER_QUICK_ACCESS_ENABLE) && FSL_SDK_DRIVER_QUICK_ACCESS_ENABLE
352#if (defined(__ICCARM__))
353#define AT_QUICKACCESS_SECTION_CODE(func) func @"CodeQuickAccess"
354#define AT_QUICKACCESS_SECTION_DATA(func) func @"DataQuickAccess"
355#elif(defined(__CC_ARM) || defined(__ARMCC_VERSION))
356#define AT_QUICKACCESS_SECTION_CODE(func) __attribute__((section("CodeQuickAccess"))) func
357#define AT_QUICKACCESS_SECTION_DATA(func) __attribute__((section("DataQuickAccess"))) func
358#elif(defined(__GNUC__))
359#define AT_QUICKACCESS_SECTION_CODE(func) __attribute__((section("CodeQuickAccess"))) func
360#define AT_QUICKACCESS_SECTION_DATA(func) __attribute__((section("DataQuickAccess"))) func
362#error Toolchain not supported.
365#if (defined(__ICCARM__))
366#define AT_QUICKACCESS_SECTION_CODE(func) func
367#define AT_QUICKACCESS_SECTION_DATA(func) func
368#elif(defined(__CC_ARM) || defined(__ARMCC_VERSION))
369#define AT_QUICKACCESS_SECTION_CODE(func) func
370#define AT_QUICKACCESS_SECTION_DATA(func) func
371#elif(defined(__GNUC__))
372#define AT_QUICKACCESS_SECTION_CODE(func) func
373#define AT_QUICKACCESS_SECTION_DATA(func) func
375#error Toolchain not supported.
381#if (defined(__ICCARM__))
382#define RAMFUNCTION_SECTION_CODE(func) func @"RamFunction"
383#elif(defined(__CC_ARM) || defined(__ARMCC_VERSION))
384#define RAMFUNCTION_SECTION_CODE(func) __attribute__((section("RamFunction"))) func
385#elif(defined(__GNUC__))
386#define RAMFUNCTION_SECTION_CODE(func) __attribute__((section("RamFunction"))) func
388#error Toolchain not supported.
395#if defined(__cplusplus)
416 static inline status_t EnableIRQ(IRQn_Type interrupt)
418 if (NotAvail_IRQn == interrupt)
423#if defined(FSL_FEATURE_NUMBER_OF_LEVEL1_INT_VECTORS) && (FSL_FEATURE_NUMBER_OF_LEVEL1_INT_VECTORS > 0)
424 if (interrupt >= FSL_FEATURE_NUMBER_OF_LEVEL1_INT_VECTORS)
430#if defined(__GIC_PRIO_BITS)
431 GIC_EnableIRQ(interrupt);
433 NVIC_EnableIRQ(interrupt);
454 static inline status_t DisableIRQ(IRQn_Type interrupt)
456 if (NotAvail_IRQn == interrupt)
461#if defined(FSL_FEATURE_NUMBER_OF_LEVEL1_INT_VECTORS) && (FSL_FEATURE_NUMBER_OF_LEVEL1_INT_VECTORS > 0)
462 if (interrupt >= FSL_FEATURE_NUMBER_OF_LEVEL1_INT_VECTORS)
468#if defined(__GIC_PRIO_BITS)
469 GIC_DisableIRQ(interrupt);
471 NVIC_DisableIRQ(interrupt);
484 static inline uint32_t DisableGlobalIRQ(
void)
486#if defined(CPSR_I_Msk)
487 uint32_t cpsr = __get_CPSR() & CPSR_I_Msk;
493 uint32_t regPrimask = __get_PRIMASK();
511 static inline void EnableGlobalIRQ(uint32_t primask)
513#if defined(CPSR_I_Msk)
514 __set_CPSR((__get_CPSR() & ~CPSR_I_Msk) | primask);
516 __set_PRIMASK(primask);
520#if defined(ENABLE_RAM_VECTOR_TABLE)
528 uint32_t InstallIRQHandler(IRQn_Type irq, uint32_t irqHandler);
531#if (defined(FSL_FEATURE_SOC_SYSCON_COUNT) && (FSL_FEATURE_SOC_SYSCON_COUNT > 0))
581#if defined(__cplusplus)
void EnableDeepSleepIRQ(IRQn_Type interrupt)
Enable specific interrupt for wake-up from deep-sleep mode.
void SDK_Free(void *ptr)
Free memory.
_Pragma("diag_suppress=Pm120") _Pragma("diag_error
void * SDK_Malloc(size_t size, size_t alignbytes)
Allocate memory with given alignment and aligned size.
void DisableDeepSleepIRQ(IRQn_Type interrupt)
Disable specific interrupt for wake-up from deep-sleep mode.
_status_groups
Status group numbers.
_generic_status
Generic status return codes.
int32_t status_t
Type used for all status and error return values.
@ kStatusGroup_FLEXIO_MCULCD
@ kStatusGroup_FLEXIO_CAMERA
@ kStatusGroup_SERIALMANAGER
@ kStatusGroup_FLEXIO_SPI
@ kStatusGroup_TIMERMANAGER
@ kStatusGroup_DebugConsole
@ kStatusGroup_FLEXIO_I2C
@ kStatusGroup_COMMON_TASK
@ kStatusGroup_EXTERN_EEPROM
@ kStatusGroup_LPC_SPI_SSP
@ kStatusGroup_LPC_MINISPI
@ kStatusGroup_MEM_MANAGER
@ kStatusGroup_ApplicationRangeStart
@ kStatusGroup_FLEXIO_UART
@ kStatusGroup_FLEXIO_I2S
@ kStatusGroup_FLEXCOMM_I2C
@ kStatus_NoTransferInProgress
@ kStatus_InvalidArgument