# Translate the SoC name and part number into the mcux device and cpu # name respectively. string(TOUPPER ${CONFIG_SOC} MCUX_DEVICE) if("${MCUX_DEVICE}" STREQUAL "LPC54114") set(MCUX_CPU CPU_${CONFIG_SOC_PART_NUMBER}_cm4) elseif("${MCUX_DEVICE}" STREQUAL "LPC54114_M0") set(MCUX_CPU CPU_${CONFIG_SOC_PART_NUMBER}_cm0plus) set(MCUX_DEVICE LPC54114) elseif("${MCUX_DEVICE}" STREQUAL "LPC55S16") set(MCUX_CPU CPU_${CONFIG_SOC_PART_NUMBER}) set(MCUX_DEVICE LPC55S16) elseif("${MCUX_DEVICE}" STREQUAL "LPC55S28") set(MCUX_CPU CPU_${CONFIG_SOC_PART_NUMBER}) set(MCUX_DEVICE LPC55S28) elseif("${MCUX_DEVICE}" STREQUAL "LPC55S69_CPU0") set(MCUX_CPU CPU_${CONFIG_SOC_PART_NUMBER}_cm33_core0) set(MCUX_DEVICE LPC55S69) elseif("${MCUX_DEVICE}" STREQUAL "LPC55S69_CPU1") set(MCUX_CPU CPU_${CONFIG_SOC_PART_NUMBER}_cm33_core1) set(MCUX_DEVICE LPC55S69) elseif("${MCUX_DEVICE}" STREQUAL "MIMXRT1052") string(REGEX REPLACE "(.*)[AB]$" "CPU_\\1B" MCUX_CPU ${CONFIG_SOC_PART_NUMBER}) elseif("${MCUX_DEVICE}" STREQUAL "MIMXRT685S_CM33") set(MCUX_CPU CPU_${CONFIG_SOC_PART_NUMBER}_cm33) set(MCUX_DEVICE MIMXRT685S) elseif("${MCUX_DEVICE}" STREQUAL "MIMXRT1176_CM4") set(MCUX_CPU CPU_${CONFIG_SOC_PART_NUMBER}_cm4) set(MCUX_DEVICE MIMXRT1176) elseif("${MCUX_DEVICE}" STREQUAL "MIMXRT1176_CM7") set(MCUX_CPU CPU_${CONFIG_SOC_PART_NUMBER}_cm7) set(MCUX_DEVICE MIMXRT1176) else() set(MCUX_CPU CPU_${CONFIG_SOC_PART_NUMBER}) endif() zephyr_include_directories(devices/${MCUX_DEVICE}) # The mcux uses the cpu name to expose SoC-specific features of a # given peripheral. For example, the UART peripheral may be # instantiated with/without a hardware FIFO, and the size of that FIFO # may be different for each instance in a given SoC. See # fsl_device_registers.h and ${MCUX_DEVICE}_features.h zephyr_compile_definitions(${MCUX_CPU}) # Build mcux device-specific objects. Although it is not normal # practice, drilling down like this avoids the need for repetitive # build scripts for every mcux device. zephyr_library_sources(devices/${MCUX_DEVICE}/fsl_clock.c) if (${MCUX_DEVICE} MATCHES "LPC|MIMXRT6") zephyr_library_sources(devices/${MCUX_DEVICE}/fsl_power.c) zephyr_library_sources(devices/${MCUX_DEVICE}/fsl_reset.c) if ((${MCUX_DEVICE} MATCHES "MIMXRT6") AND (CONFIG_PM)) zephyr_code_relocate(devices/${MCUX_DEVICE}/fsl_power.c SRAM) endif() endif() if (${MCUX_DEVICE} MATCHES "MIMXRT117") zephyr_library_sources(devices/${MCUX_DEVICE}/fsl_romapi.c) zephyr_library_sources(devices/${MCUX_DEVICE}/fsl_pmu.c) zephyr_library_sources(devices/${MCUX_DEVICE}/fsl_dcdc.c) zephyr_library_sources(devices/${MCUX_DEVICE}/fsl_anatop_ai.c) if ("${MCUX_DEVICE}" STREQUAL "MIMXRT1176_CM4") zephyr_include_directories(devices/${MCUX_DEVICE}/cm4/) zephyr_library_sources_ifdef( CONFIG_HAS_MCUX_CACHE devices/${MCUX_DEVICE}/cm4/fsl_cache.c ) endif() endif() # Build mcux drivers that can be used for multiple SoC's. add_subdirectory(boards) add_subdirectory(components) add_subdirectory(drivers) add_subdirectory_ifdef( CONFIG_USB_DEVICE_DRIVER middleware/usb ) add_subdirectory_ifdef( CONFIG_IEEE802154_KW41Z middleware/wireless/framework_5.3.3 ) enable_language(C ASM) zephyr_library_sources_ifdef(CONFIG_SOC_LPC54114_M4 devices/${MCUX_DEVICE}/gcc/startup_LPC54114_cm4.S) zephyr_library_sources_ifdef(CONFIG_SOC_MIMXRT685S_CM33 devices/${MCUX_DEVICE}/system_MIMXRT685S_cm33.c)