1list(APPEND CMAKE_MODULE_PATH
2    ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/devices/${MCUX_DEVICE_PATH}
3    ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/devices/${MCUX_DEVICE_PATH}/drivers
4    ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/common
5    ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/flexcomm
6    ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/lpflexcomm
7    ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/flexio
8    ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/dmamux
9    ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/components/osa
10    ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/components/lists
11)
12
13if(CONFIG_CPU_CORTEX_A)
14    list(APPEND CMAKE_MODULE_PATH
15        ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/CMSIS/Core_AArch64/Include
16    )
17else()
18    list(APPEND CMAKE_MODULE_PATH
19        ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/cache/armv7-m7
20        ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/CMSIS/Core/Include
21    )
22endif()
23
24function(include_ifdef feature_toggle module)
25  if(${${feature_toggle}})
26    include(${module})
27  endif()
28endfunction()
29
30function(include_driver_ifdef feature_toggle directory module)
31  if(${${feature_toggle}})
32    list(APPEND CMAKE_MODULE_PATH
33        ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/${directory}
34    )
35    zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/${directory})
36    include(${module})
37  endif()
38endfunction()
39
40message("Load components for ${MCUX_DEVICE}:")
41
42#specific operation to shared drivers
43if((DEFINED CONFIG_FLASH_MCUX_FLEXSPI_XIP) AND (DEFINED CONFIG_FLASH))
44  zephyr_code_relocate(FILES ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/flexspi/fsl_flexspi.c
45    LOCATION ${CONFIG_FLASH_MCUX_FLEXSPI_XIP_MEM}_TEXT)
46endif()
47
48if(NOT CONFIG_ASSERT OR CONFIG_FORCE_NO_ASSERT)
49  zephyr_compile_definitions(NDEBUG) # squelch fsl_flexcan.c warning
50endif()
51
52zephyr_compile_definitions_ifdef(
53  CONFIG_PTP_CLOCK_MCUX
54  ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
55)
56
57zephyr_compile_definitions_ifdef(
58  CONFIG_PTP_CLOCK_NXP_ENET
59  ENET_ENHANCEDBUFFERDESCRIPTOR_MODE
60)
61
62zephyr_compile_definitions_ifdef(
63  CONFIG_SOC_MIMX9596
64  FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL=1
65)
66
67zephyr_library_compile_definitions_ifdef(
68  CONFIG_HAS_MCUX_CACHE FSL_SDK_ENABLE_DRIVER_CACHE_CONTROL
69)
70
71# note: if FSL_IRQSTEER_ENABLE_MASTER_INT is not
72# defined then it will automatically be defined
73# and set to 1 via fsl_irqsteer.h
74zephyr_library_compile_definitions_ifdef(
75  CONFIG_NXP_IRQSTEER
76  FSL_IRQSTEER_ENABLE_MASTER_INT=0
77)
78
79zephyr_library_compile_definitions_ifdef(
80  CONFIG_DAI_NXP_SAI
81  MCUX_SDK_SAI_ALLOW_NULL_FIFO_WATERMARK=1
82)
83
84zephyr_library_compile_definitions_ifdef(
85  CONFIG_DAI_NXP_SAI
86  MCUX_SDK_SAI_DISABLE_IMPLICIT_CHAN_CONFIG=1
87)
88
89# Required by all SCFW-based SoCs
90if (CONFIG_SOC_MIMX8QM6_ADSP OR CONFIG_SOC_MIMX8QX6_ADSP)
91    list(APPEND CMAKE_MODULE_PATH
92        ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/devices/${MCUX_DEVICE_PATH}/scfw_api
93    )
94    zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/devices/${MCUX_DEVICE_PATH}/scfw_api)
95    include(driver_scfw_api)
96endif()
97
98include(driver_common)
99
100#Include system_xxx file
101#This can be extended to other SoC series if needed
102if (DEFINED CONFIG_SOC_RESET_HOOK OR DEFINED CONFIG_SOC_SERIES_IMXRT6XX
103    OR DEFINED CONFIG_SOC_SERIES_LPC55XXX OR DEFINED CONFIG_SOC_SERIES_MCXN
104    OR DEFINED CONFIG_SOC_MCXW727C)
105if (CONFIG_SOC_MIMXRT1166_CM4)
106include(device_system_MIMXRT1166_cm4)
107elseif (CONFIG_SOC_MIMXRT1166_CM7)
108include(device_system_MIMXRT1166_cm7)
109elseif (CONFIG_SOC_MIMXRT1176_CM4)
110include(device_system_MIMXRT1176_cm4)
111elseif (CONFIG_SOC_MIMXRT1176_CM7)
112include(device_system_MIMXRT1176_cm7)
113elseif (CONFIG_SOC_MIMXRT1189_CM33)
114include(device_system_MIMXRT1189_cm33)
115elseif (CONFIG_SOC_MIMXRT1189_CM7)
116include(device_system_MIMXRT1189_cm7)
117elseif (CONFIG_SOC_LPC55S69_CPU0)
118include(device_system_LPC55S69_cm33_core0)
119elseif (CONFIG_SOC_LPC55S69_CPU1)
120include(device_system_LPC55S69_cm33_core1)
121elseif (CONFIG_SOC_LPC54114_M4)
122include(device_system_LPC54114_cm4)
123elseif (CONFIG_SOC_LPC54114_M0)
124include(device_system_LPC54114_cm0plus)
125elseif (CONFIG_SOC_MCXN947_CPU0)
126include(device_system_MCXN947_cm33_core0)
127elseif (CONFIG_SOC_MCXN947_CPU1)
128include(device_system_MCXN947_cm33_core1)
129elseif (CONFIG_SOC_MCXN236)
130include(device_system_MCXN236)
131elseif (CONFIG_SOC_MIMXRT798S_CM33_CPU0)
132include(device_system_MIMXRT798S_cm33_core0)
133elseif (CONFIG_SOC_MIMXRT798S_CM33_CPU1)
134include(device_system_MIMXRT798S_cm33_core1)
135elseif (CONFIG_SOC_MCXW727C_CPU0)
136include(device_system_MCXW727C_cm33_core0)
137else()
138include(device_system)
139endif()
140endif()
141
142zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/common)
143
144#include shared drivers
145include_driver_ifdef(CONFIG_ADC_MCUX_LPADC		lpadc		driver_lpadc)
146include_driver_ifdef(CONFIG_COUNTER_MCUX_CTIMER		ctimer		driver_ctimer)
147include_driver_ifdef(CONFIG_COUNTER_MCUX_LPC_RTC	lpc_rtc		driver_lpc_rtc)
148include_driver_ifdef(CONFIG_DMA_MCUX_LPC		lpc_dma		driver_lpc_dma)
149include_driver_ifdef(CONFIG_GPIO_MCUX_LPC		lpc_gpio        driver_lpc_gpio)
150include_driver_ifdef(CONFIG_NXP_PINT			pint    	driver_pint)
151include_driver_ifdef(CONFIG_NXP_PINT			inputmux	driver_inputmux)
152include_driver_ifdef(CONFIG_I2C_MCUX_FLEXCOMM		flexcomm	driver_flexcomm)
153include_driver_ifdef(CONFIG_I2C_MCUX_FLEXCOMM		flexcomm/i2c	driver_flexcomm_i2c)
154include_driver_ifdef(CONFIG_I2S_MCUX_FLEXCOMM		flexcomm	driver_flexcomm)
155include_driver_ifdef(CONFIG_I2S_MCUX_FLEXCOMM		flexcomm/i2s	driver_flexcomm_i2s)
156include_driver_ifdef(CONFIG_MCUX_OS_TIMER		ostimer		driver_ostimer)
157include_driver_ifdef(CONFIG_PWM_MCUX_SCTIMER		sctimer		driver_sctimer)
158include_driver_ifdef(CONFIG_SOC_FLASH_LPC		flashiap	driver_flashiap)
159include_driver_ifdef(CONFIG_SPI_MCUX_FLEXCOMM		flexcomm	driver_flexcomm)
160include_driver_ifdef(CONFIG_SPI_MCUX_FLEXCOMM		flexcomm/spi	driver_flexcomm_spi)
161include_driver_ifdef(CONFIG_UART_MCUX_FLEXCOMM		flexcomm	driver_flexcomm)
162include_driver_ifdef(CONFIG_UART_MCUX_FLEXCOMM		flexcomm/usart	driver_flexcomm_usart)
163include_driver_ifdef(CONFIG_WDT_MCUX_WWDT		wwdt		driver_wwdt)
164include_driver_ifdef(CONFIG_ADC_MCUX_ADC12		adc12		driver_adc12)
165include_driver_ifdef(CONFIG_ADC_MCUX_ADC16		adc16		driver_adc16)
166include_driver_ifdef(CONFIG_CAN_MCUX_FLEXCAN		flexcan		driver_flexcan)
167include_driver_ifdef(CONFIG_CAN_MCUX_FLEXCAN_FD		flexcan		driver_flexcan)
168include_driver_ifdef(CONFIG_COUNTER_NXP_PIT		pit		driver_pit)
169include_driver_ifdef(CONFIG_COUNTER_MCUX_RTC		rtc		driver_rtc)
170include_driver_ifdef(CONFIG_DAC_MCUX_DAC		dac		driver_dac)
171include_driver_ifdef(CONFIG_DAC_MCUX_DAC32		dac32		driver_dac32)
172include_driver_ifdef(CONFIG_DMA_MCUX_EDMA		dmamux		driver_dmamux)
173include_driver_ifdef(CONFIG_DMA_MCUX_EDMA_V3		dmamux		driver_dmamux)
174include_driver_ifdef(CONFIG_DMA_MCUX_EDMA		edma		driver_edma)
175include_driver_ifdef(CONFIG_DMA_MCUX_EDMA_V3		dma3		driver_dma3)
176include_driver_ifdef(CONFIG_DMA_MCUX_EDMA_V4		edma4		driver_edma4)
177include_driver_ifdef(CONFIG_ENTROPY_MCUX_RNGA		rnga		driver_rnga)
178include_driver_ifdef(CONFIG_ENTROPY_MCUX_TRNG		trng		driver_trng)
179include_driver_ifdef(CONFIG_ENTROPY_MCUX_CAAM		caam		driver_caam)
180include_driver_ifdef(CONFIG_ETH_NXP_ENET		enet		driver_enet)
181include_driver_ifdef(CONFIG_ETH_NXP_IMX_NETC		netc		driver_netc)
182include_driver_ifdef(CONFIG_HAS_MCUX_SMC		smc		driver_smc)
183include_driver_ifdef(CONFIG_I2C_MCUX			i2c		driver_i2c)
184include_driver_ifdef(CONFIG_I2C_NXP_II2C		ii2c		driver_ii2c)
185include_driver_ifdef(CONFIG_NXP_LP_FLEXCOMM		lpflexcomm	driver_lpflexcomm)
186if (CONFIG_NXP_LP_FLEXCOMM)
187include_driver_ifdef(CONFIG_I2C_MCUX_LPI2C		lpflexcomm/lpi2c	driver_lpi2c)
188else()
189include_driver_ifdef(CONFIG_I2C_MCUX_LPI2C		lpi2c		driver_lpi2c)
190endif()
191include_driver_ifdef(CONFIG_I3C_MCUX			i3c		driver_i3c)
192include_driver_ifdef(CONFIG_MCUX_ACMP			acmp		driver_acmp)
193include_driver_ifdef(CONFIG_PWM_MCUX_FTM		ftm     	driver_ftm)
194include_driver_ifdef(CONFIG_PWM_MCUX_TPM		tpm		driver_tpm)
195include_driver_ifdef(CONFIG_PWM_MCUX_PWT		pwt		driver_pwt)
196include_driver_ifdef(CONFIG_PWM_MCUX_QTMR		qtmr_1		driver_qtmr_1)
197include_driver_ifdef(CONFIG_RTC_MCUX			rtc		driver_rtc)
198include_driver_ifdef(CONFIG_SPI_MCUX_DSPI		dspi		driver_dspi)
199include_driver_ifdef(CONFIG_SPI_MCUX_ECSPI		ecspi		driver_ecspi)
200if (CONFIG_NXP_LP_FLEXCOMM)
201include_driver_ifdef(CONFIG_SPI_MCUX_LPSPI		lpflexcomm/lpspi	driver_lpspi)
202else()
203include_driver_ifdef(CONFIG_SPI_MCUX_LPSPI		lpspi		driver_lpspi)
204endif()
205include_driver_ifdef(CONFIG_MCUX_FLEXIO			flexio		driver_flexio)
206include_driver_ifdef(CONFIG_SPI_MCUX_FLEXIO		flexio/spi	driver_flexio_spi)
207include_driver_ifdef(CONFIG_MIPI_DBI_NXP_FLEXIO_LCDIF	flexio/mculcd	driver_flexio_mculcd)
208include_driver_ifdef(CONFIG_UART_MCUX			uart		driver_uart)
209include_driver_ifdef(CONFIG_UART_MCUX_LPSCI		lpsci		driver_lpsci)
210if (CONFIG_NXP_LP_FLEXCOMM)
211include_driver_ifdef(CONFIG_UART_MCUX_LPUART		lpflexcomm/lpuart	driver_lpuart)
212else()
213include_driver_ifdef(CONFIG_UART_MCUX_LPUART		lpuart		driver_lpuart)
214endif()
215include_driver_ifdef(CONFIG_WDT_MCUX_WDOG		wdog		driver_wdog)
216include_driver_ifdef(CONFIG_WDT_MCUX_WDOG32		wdog32		driver_wdog32)
217include_driver_ifdef(CONFIG_COUNTER_MCUX_GPT		gpt		driver_gpt)
218include_driver_ifdef(CONFIG_COUNTER_MCUX_TPM		tpm		driver_tpm)
219include_driver_ifdef(CONFIG_MCUX_GPT_TIMER		gpt		driver_gpt)
220include_driver_ifdef(CONFIG_COUNTER_MCUX_QTMR		qtmr_1		driver_qtmr_1)
221include_driver_ifdef(CONFIG_DISPLAY_MCUX_ELCDIF		elcdif		driver_elcdif)
222include_driver_ifdef(CONFIG_DISPLAY_MCUX_DCNANO_LCDIF	lcdif		driver_lcdif)
223include_driver_ifdef(CONFIG_MIPI_DBI_NXP_DCNANO_LCDIF	lcdif		driver_lcdif)
224include_driver_ifdef(CONFIG_MCUX_PXP			pxp		driver_pxp)
225include_driver_ifdef(CONFIG_LV_USE_GPU_NXP_PXP		pxp		driver_pxp)
226include_driver_ifdef(CONFIG_ETH_MCUX			enet		driver_enet)
227include_driver_ifdef(CONFIG_GPIO_MCUX_IGPIO		igpio		driver_igpio)
228include_driver_ifdef(CONFIG_GPIO_MCUX_RGPIO		rgpio		driver_rgpio)
229include_driver_ifdef(CONFIG_I2S_MCUX_SAI		sai		driver_sai)
230include_driver_ifdef(CONFIG_DAI_NXP_SAI			sai		driver_sai)
231include_driver_ifdef(CONFIG_MEMC_MCUX_FLEXSPI		flexspi		driver_flexspi)
232include_driver_ifdef(CONFIG_PWM_MCUX			pwm		driver_pwm)
233include_driver_ifdef(CONFIG_VIDEO_MCUX_CSI		csi		driver_csi)
234include_driver_ifdef(CONFIG_VIDEO_MCUX_MIPI_CSI2RX	mipi_csi2rx     driver_mipi_csi2rx)
235include_driver_ifdef(CONFIG_WDT_MCUX_IMX_WDOG		wdog01		driver_wdog01)
236include_driver_ifdef(CONFIG_WDT_MCUX_RTWDOG		rtwdog		driver_rtwdog)
237include_driver_ifdef(CONFIG_DMA_MCUX_LPC		lpc_dma		driver_lpc_dma)
238include_driver_ifdef(CONFIG_MEMC_MCUX_FLEXSPI		flexspi		driver_flexspi)
239include_driver_ifdef(CONFIG_HAS_MCUX_RDC		rdc		driver_rdc)
240include_driver_ifdef(CONFIG_UART_MCUX_IUART		iuart		driver_iuart)
241include_driver_ifdef(CONFIG_ADC_MCUX_12B1MSPS_SAR	adc_12b1msps_sar	driver_adc_12b1msps_sar)
242include_driver_ifdef(CONFIG_HWINFO_MCUX_SRC		src		driver_src)
243include_driver_ifdef(CONFIG_HWINFO_MCUX_SIM		sim		driver_sim)
244include_driver_ifdef(CONFIG_HWINFO_MCUX_RCM		rcm		driver_rcm)
245include_driver_ifdef(CONFIG_IPM_MCUX			mailbox		driver_mailbox)
246include_driver_ifdef(CONFIG_MBOX_NXP_MAILBOX		mailbox		driver_mailbox)
247include_driver_ifdef(CONFIG_COUNTER_MCUX_SNVS		snvs_hp		driver_snvs_hp)
248include_driver_ifdef(CONFIG_COUNTER_MCUX_SNVS_SRTC	snvs_lp		driver_snvs_lp)
249include_driver_ifdef(CONFIG_COUNTER_MCUX_LPTMR		lptmr		driver_lptmr)
250include_driver_ifdef(CONFIG_MCUX_LPTMR_TIMER		lptmr		driver_lptmr)
251include_driver_ifdef(CONFIG_IMX_USDHC			usdhc		driver_usdhc)
252include_driver_ifdef(CONFIG_MIPI_DSI_MCUX		mipi_dsi_split	driver_mipi_dsi_split)
253include_driver_ifdef(CONFIG_MIPI_DSI_MCUX_2L		mipi_dsi	driver_mipi_dsi)
254include_driver_ifdef(CONFIG_ADC_LPC_ADC			lpc_adc		driver_lpc_adc)
255include_driver_ifdef(CONFIG_MCUX_SDIF			sdif		driver_sdif)
256include_driver_ifdef(CONFIG_ADC_MCUX_ETC		adc_etc		driver_adc_etc)
257include_driver_ifdef(CONFIG_MCUX_XBARA			xbara		driver_xbara)
258include_driver_ifdef(CONFIG_MCUX_XBARB			xbarb		driver_xbarb)
259include_driver_ifdef(CONFIG_QDEC_MCUX			enc		driver_enc)
260include_driver_ifdef(CONFIG_CRYPTO_MCUX_DCP		dcp		driver_dcp)
261include_driver_ifdef(CONFIG_DMA_MCUX_SMARTDMA		smartdma	driver_lpc_smartdma)
262include_driver_ifdef(CONFIG_DMA_MCUX_SMARTDMA		inputmux	driver_inputmux)
263include_driver_ifdef(CONFIG_DAC_MCUX_LPDAC		dac_1		driver_dac_1)
264include_driver_ifdef(CONFIG_NXP_IRQSTEER		irqsteer	driver_irqsteer)
265include_driver_ifdef(CONFIG_AUDIO_DMIC_MCUX		dmic		driver_dmic)
266include_driver_ifdef(CONFIG_DMA_NXP_EDMA		edma_rev2	driver_edma_rev2)
267include_driver_ifdef(CONFIG_DMA_NXP_SDMA		sdma		driver_sdma)
268include_driver_ifdef(CONFIG_SOC_SERIES_MCXN		mcx_spc		driver_mcx_spc)
269include_driver_ifdef(CONFIG_SOC_SERIES_MCXA		mcx_spc		driver_mcx_spc)
270include_driver_ifdef(CONFIG_ADC_MCUX_GAU		cns_adc		driver_cns_adc)
271include_driver_ifdef(CONFIG_DAC_MCUX_GAU		cns_dac		driver_cns_dac)
272include_driver_ifdef(CONFIG_DAI_NXP_ESAI		esai		driver_esai)
273include_driver_ifdef(CONFIG_MCUX_LPCMP		        lpcmp		driver_lpcmp)
274include_driver_ifdef(CONFIG_NXP_RF_IMU			imu		driver_imu)
275include_driver_ifdef(CONFIG_TRDC_MCUX_TRDC              trdc            driver_trdc)
276include_driver_ifdef(CONFIG_S3MU_MCUX_S3MU              s3mu            driver_s3mu)
277include_driver_ifdef(CONFIG_PINCTRL_NXP_PORT            port            driver_port)
278include_driver_ifdef(CONFIG_DAI_NXP_MICFIL		pdm		driver_pdm)
279include_driver_ifdef(CONFIG_GLIKEY_MCUX_GLIKEY		glikey		driver_glikey)
280if(CONFIG_BT_NXP OR CONFIG_IEEE802154_MCXW)
281include_driver_ifdef(CONFIG_SOC_SERIES_MCXW		spc		driver_spc)
282endif()
283
284if (${MCUX_DEVICE} MATCHES "MIMXRT1189")
285  include_driver_ifdef(CONFIG_ETH_NXP_IMX_NETC	netc/socs/imxrt1180	driver_netc_soc_imxrt1180)
286  include_driver_ifdef(CONFIG_ETH_NXP_IMX_NETC	msgintr			driver_msgintr)
287elseif (${MCUX_DEVICE} MATCHES "MIMX9596")
288  include_driver_ifdef(CONFIG_ETH_NXP_IMX_NETC	netc/socs/imx95		driver_netc_soc_imx95)
289  include_driver_ifdef(CONFIG_ETH_NXP_IMX_NETC	msgintr			driver_msgintr)
290  include_driver_ifdef(CONFIG_ETH_NXP_IMX_NETC	irqsteer		driver_irqsteer)
291endif()
292
293if (((${MCUX_DEVICE} MATCHES "MIMXRT1[0-9][0-9][0-9]") AND (NOT (CONFIG_SOC_MIMXRT1166_CM4 OR CONFIG_SOC_MIMXRT1176_CM4 OR CONFIG_SOC_MIMXRT1189_CM33))) OR
294    ((${MCUX_DEVICE} MATCHES "MIMX9596") AND CONFIG_SOC_MIMX9596_M7))
295  include_driver_ifdef(CONFIG_HAS_MCUX_CACHE		cache/armv7-m7	driver_cache_armv7_m7)
296elseif((${MCUX_DEVICE} MATCHES "MIMXRT(5|6)") OR (${MCUX_DEVICE} MATCHES "RW61") OR (${MCUX_DEVICE} MATCHES "MCXN.4."))
297  include_driver_ifdef(CONFIG_HAS_MCUX_CACHE		cache/cache64	driver_cache_cache64)
298elseif((${MCUX_DEVICE} MATCHES "MK(28|66)") OR (${MCUX_DEVICE} MATCHES "MKE(14|16|18)") OR (CONFIG_SOC_MIMXRT1166_CM4) OR (CONFIG_SOC_MIMXRT1176_CM4))
299  include_driver_ifdef(CONFIG_HAS_MCUX_CACHE		cache/lmem	driver_cache_lmem)
300endif()
301  include_driver_ifdef(CONFIG_HAS_MCUX_XCACHE		cache/xcache	driver_cache_xcache)
302
303if ((${MCUX_DEVICE} MATCHES "MIMX9596") OR (${MCUX_DEVICE} MATCHES "MIMX8UD7") OR (${MCUX_DEVICE} MATCHES "MIMXRT118"))
304  include_driver_ifdef(CONFIG_IPM_IMX			mu1		driver_mu1)
305  include_driver_ifdef(CONFIG_MBOX_NXP_IMX_MU		mu1		driver_mu1)
306else()
307  include_driver_ifdef(CONFIG_IPM_IMX			mu		driver_mu)
308  include_driver_ifdef(CONFIG_MBOX_NXP_IMX_MU		mu		driver_mu)
309endif()
310
311if(CONFIG_CPU_CORTEX_A)
312  include_driver_ifdef(CONFIG_HAS_MCUX_CACHE		cache/armv8-a	driver_cache_armv8a)
313endif()
314
315if (${MCUX_DEVICE} MATCHES "MIMXRT11[0-9][0-9]")
316   include_driver_ifdef(CONFIG_PM_MCUX_GPC		gpc_3		driver_gpc_3)
317   include_ifdef(CONFIG_HWINFO_MCUX_SRC_V2		driver_soc_src)
318   include_driver_ifdef(CONFIG_WDT_MCUX_RTWDOG		soc_src		driver_soc_src)
319elseif (${MCUX_DEVICE} MATCHES "MIMXRT10[0-9][0-9]")
320   include_driver_ifdef(CONFIG_PM_MCUX_GPC		gpc_1		driver_gpc_1)
321   include_driver_ifdef(CONFIG_PM_MCUX_DCDC		dcdc_1		driver_dcdc_1)
322   include_driver_ifdef(CONFIG_PM_MCUX_PMU		pmu		driver_pmu)
323endif()
324
325if((${MCUX_DEVICE} MATCHES "RW61") AND (NOT DEFINED CONFIG_MINIMAL_LIBC))
326	# Whenever building for RW61x without minimal LIBC, use optimized memcpy.
327	# This will avoid issues with unaligned access to peripheral RAM regions
328	# caused by the memcpy implmentation in newlib
329	zephyr_library_sources(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/utilities/misc_utilities/fsl_memcpy.S)
330endif()
331
332
333if("${CONFIG_SOC_FAMILY}" STREQUAL "nxp_kinetis")
334
335  include_driver_ifdef(CONFIG_SOC_FLASH_MCUX		flash		driver_flash)
336
337  include(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/port/driver_port.cmake)
338  zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/port)
339
340  if(${MCUX_DEVICE} MATCHES "MK(80|82|64|66|M34|M35|E14F|E16F|E18F|22F12)")
341    include(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/sysmpu/driver_sysmpu.cmake)
342    zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/sysmpu)
343  endif()
344
345endif()
346
347if(CONFIG_SOC_SERIES_MCXC)
348    include_driver_ifdef(CONFIG_SOC_FLASH_MCUX		flash		driver_flash)
349elseif(CONFIG_SOC_SERIES_MCXA)
350    zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/mcxa_romapi)
351elseif(CONFIG_SOC_SERIES_MCXN)
352    include_driver_ifdef(CONFIG_SOC_FLASH_MCUX		mcx_romapi	driver_flashiap)
353    zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/mcx_romapi/flash)
354elseif(CONFIG_SOC_SERIES_MCXW)
355    include_driver_ifdef(CONFIG_SOC_FLASH_MCUX		flash_k4	driver_flash_k4)
356endif()
357
358# Temporary change to handle LPC SOC family name change between HWMv1 and HWMv2
359if(("${CONFIG_SOC_FAMILY}" STREQUAL "lpc") OR ("${CONFIG_SOC_FAMILY}" STREQUAL "nxp_lpc"))
360
361if ((${MCUX_DEVICE} MATCHES "LPC8[0-9][0-9]") OR (${MCUX_DEVICE} MATCHES "LPC5(1|4)"))
362  include_driver_ifdef(CONFIG_SOC_FLASH_MCUX		iap		driver_iap)
363  include_driver_ifdef(CONFIG_ENTROPY_MCUX_RNG		iap		driver_rng)
364elseif (${MCUX_DEVICE} MATCHES "LPC55")
365  if (${MCUX_DEVICE} MATCHES "LPC55S*3")
366   if(${CONFIG_SOC_FLASH_MCUX})
367      list(APPEND CMAKE_MODULE_PATH
368        ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/devices/LPC55S36/drivers
369      )
370      zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/devices/LPC55S36/drivers/flash)
371      include(driver_flashiap)
372    endif()
373  else()
374    include_driver_ifdef(CONFIG_SOC_FLASH_MCUX		iap1		driver_iap1)
375  endif()
376  include_driver_ifdef(CONFIG_ENTROPY_MCUX_RNG		rng_1		driver_rng_1)
377endif()
378
379if (${MCUX_DEVICE} MATCHES "LPC5")
380  include(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/lpc_iocon/driver_lpc_iocon.cmake)
381  zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/lpc_iocon)
382  if (${MCUX_DEVICE} MATCHES "LPC55S*3" AND (DEFINED CONFIG_ADC_MCUX_LPADC OR DEFINED CONFIG_DAC_MCUX_LPDAC))
383    include(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/vref_1/driver_vref_1.cmake)
384    zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/vref_1)
385  endif()
386elseif (${MCUX_DEVICE} MATCHES "LPC8")
387  include(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/lpc_iocon_lite/driver_lpc_iocon_lite.cmake)
388  zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/lpc_iocon_lite)
389endif()
390
391endif()
392
393if(${MCUX_DEVICE} MATCHES "MIMXRT(5|6)")
394  include(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/lpc_iopctl/driver_lpc_iopctl.cmake)
395  zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/lpc_iopctl)
396endif()
397
398if(CONFIG_SOC_FAMILY_NXP_IMXRT)
399  include_driver_ifdef(CONFIG_ETH_NXP_ENET ocotp driver_ocotp)
400endif()
401
402if(CONFIG_ETH_MCUX)
403  zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/components/phy)
404  zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/components/phy/device/phyksz8081)
405  zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/components/phy/device/phyar8031)
406  zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/components/phy/device/phylan8720a)
407  zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/components/phy/device/phyrtl8211f)
408  zephyr_library_sources(mcux-sdk/components/phy/device/phyksz8081/fsl_phyksz8081.c)
409  zephyr_library_sources(mcux-sdk/components/phy/device/phyar8031/fsl_phyar8031.c)
410  zephyr_library_sources(mcux-sdk/components/phy/device/phylan8720a/fsl_phylan8720a.c)
411  zephyr_library_sources(mcux-sdk/components/phy/device/phyrtl8211f/fsl_phyrtl8211f.c)
412
413  zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/components/phy/mdio/enet)
414  #zephyr_library_sources(mcux-sdk/components/phy/mdio/enet/fsl_enet_mdio.c)
415endif()
416
417if (CONFIG_USB_DEVICE_DRIVER)
418  set(CONFIG_USE_component_osa_zephyr true)
419
420  list(APPEND CMAKE_MODULE_PATH
421    ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/components/osa
422  )
423
424  list(APPEND CMAKE_MODULE_PATH
425    ${CMAKE_CURRENT_LIST_DIR}/middleware/mcux-sdk-middleware-usb
426  )
427  include(middleware_usb_phy)
428  include_ifdef(CONFIG_USB_DC_NXP_EHCI         middleware_usb_device_ehci)
429  include_ifdef(CONFIG_USB_DC_NXP_LPCIP3511    middleware_usb_device_ip3511fs)
430  include(set_component_osa)
431
432  zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/middleware/mcux-sdk-middleware-usb/device)
433  zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/middleware/mcux-sdk-middleware-usb/phy)
434  zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/middleware/mcux-sdk-middleware-usb/include)
435endif()
436
437
438if (CONFIG_UDC_DRIVER)
439  set(CONFIG_USE_component_osa_zephyr true)
440
441  list(APPEND CMAKE_MODULE_PATH
442    ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/components/osa
443  )
444
445  list(APPEND CMAKE_MODULE_PATH
446    ${CMAKE_CURRENT_LIST_DIR}/middleware/mcux-sdk-middleware-usb
447  )
448  include_ifdef(CONFIG_DT_HAS_NXP_USBPHY_ENABLED  middleware_usb_phy)
449  include_ifdef(CONFIG_UDC_NXP_EHCI               middleware_usb_device_ehci)
450  include_ifdef(CONFIG_UDC_NXP_IP3511             middleware_usb_device_ip3511fs)
451  include(set_component_osa)
452
453  zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/middleware/mcux-sdk-middleware-usb/device)
454  zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/middleware/mcux-sdk-middleware-usb/phy)
455  zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/middleware/mcux-sdk-middleware-usb/include)
456endif()
457
458if(${MCUX_DEVICE} MATCHES "RW61")
459  set(CONFIG_USE_component_osa_zephyr true)
460  if(CONFIG_NXP_FW_LOADER)
461    list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/mcux-sdk/components/flash/mflash)
462    list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/mcux-sdk/components/flash/mflash/rdrw612bga)
463    list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/mcux-sdk/drivers/cache/cache64)
464    list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/mcux-sdk/drivers/flexspi)
465    include(component_mflash_rdrw610)
466  endif()
467endif()
468
469if(${CONFIG_USE_component_osa_zephyr})
470  zephyr_include_directories(${CMAKE_CURRENT_SOURCE_DIR}/mcux-sdk/components/osa)
471endif()
472
473include_ifdef(CONFIG_USE_component_osa_zephyr set_component_osa)
474
475if(CONFIG_WIFI_NXP)
476    list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/mcux-sdk/components/wifi_bt_module)
477    include(component_wifi_bt_module_tx_pwr_limits)
478endif()
479
480if(CONFIG_NXP_FW_LOADER)
481    list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/mcux-sdk/components/conn_fwloader)
482    include(driver_conn_fwloader)
483endif()
484
485if(CONFIG_NXP_RF_IMU)
486  if(CONFIG_SOC_SERIES_RW6XX)
487      list(APPEND CMAKE_MODULE_PATH
488          ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/components/rpmsg
489          ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/imu
490          ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/gdma
491      )
492    include(component_wireless_imu_adapter)
493  elseif(CONFIG_SOC_SERIES_MCXW)
494      zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/components/rpmsg)
495      zephyr_library_sources(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/components/rpmsg/fsl_adapter_rpmsg.c)
496      include(component_lists)
497      zephyr_compile_definitions(HAL_RPMSG_SELECT_ROLE=0U)
498  endif()
499endif()
500
501if(${MCUX_DEVICE} MATCHES "MCXW")
502  list(APPEND CMAKE_MODULE_PATH
503      ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/ccm32k
504  )
505
506  include(driver_ccm32k)
507  zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/ccm32k)
508endif()
509
510if(CONFIG_SOC_SERIES_MCXW)
511  list(APPEND CMAKE_MODULE_PATH
512      ${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/elemu
513  )
514  zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/elemu)
515  zephyr_library_sources(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/drivers/elemu/fsl_elemu.c)
516
517  if(CONFIG_NET_L2_IEEE802154 OR CONFIG_NET_L2_OPENTHREAD)
518    zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/components/lists)
519    zephyr_library_sources(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/components/lists/fsl_component_generic_list.c)
520
521    zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/components/osa)
522    zephyr_library_sources(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/components/osa/fsl_os_abstraction_zephyr.c)
523    zephyr_compile_definitions(OSA_USED=1U)
524  endif()
525endif()
526