Add support for RW61X in MCUX-SDK

Enable support for the highly integrated NXP triradio solution "RW612",
designed for a broad array of applications, including, but not limited to:
connected smart home devices, gaming controllers,
enterprise and industrial automation, smart accessories,
and "smart energy".

Signed-off-by: Declan Snyder <declan.snyder@nxp.com>
Co-authored-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
This commit is contained in:
Declan Snyder 2024-03-07 18:41:13 -06:00 committed by Daniel DeGrasse
parent ac24626660
commit 259bc153dd
7 changed files with 4477 additions and 2 deletions

2220
dts/nxp/rw/RW610-pinctrl.h Normal file

File diff suppressed because it is too large Load Diff

2220
dts/nxp/rw/RW612-pinctrl.h Normal file

File diff suppressed because it is too large Load Diff

View File

@ -47,7 +47,7 @@ zephyr_compile_definitions(${MCUX_CPU})
# practice, drilling down like this avoids the need for repetitive
# build scripts for every mcux device.
zephyr_library_sources(mcux-sdk/devices/${MCUX_DEVICE_PATH}/drivers/fsl_clock.c)
if (${MCUX_DEVICE} MATCHES "LPC|MIMXRT6|MIMXRT5")
if (${MCUX_DEVICE} MATCHES "LPC|MIMXRT6|MIMXRT5|RW6")
zephyr_library_sources(mcux-sdk/devices/${MCUX_DEVICE_PATH}/drivers/fsl_power.c)
zephyr_library_sources(mcux-sdk/devices/${MCUX_DEVICE_PATH}/drivers/fsl_reset.c)
endif()

View File

@ -68,3 +68,4 @@ Patch List:
- All *.a binary archive files. Files are still present in the SDK github repo but are not allowed in Zephyr Project
- mcux-sdk\manifests
- mcux-sdk\docs
4. Add RW61X device_system.cmake

View File

@ -218,7 +218,7 @@ include_driver_ifdef(CONFIG_DMA_NXP_EDMA edma_rev2 driver_edma_rev2)
if ((${MCUX_DEVICE} MATCHES "MIMXRT1[0-9][0-9][0-9]") AND (NOT (CONFIG_SOC_MIMXRT1166_CM4 OR CONFIG_SOC_MIMXRT1176_CM4)))
include_driver_ifdef(CONFIG_HAS_MCUX_CACHE cache/armv7-m7 driver_cache_armv7_m7)
elseif(${MCUX_DEVICE} MATCHES "MIMXRT(5|6)")
elseif((${MCUX_DEVICE} MATCHES "MIMXRT(5|6)") OR (${MCUX_DEVICE} MATCHES "RW61"))
include_driver_ifdef(CONFIG_HAS_MCUX_CACHE cache/cache64 driver_cache_cache64)
elseif((${MCUX_DEVICE} MATCHES "MK(28|66)") OR (${MCUX_DEVICE} MATCHES "MKE(14|16|18)") OR (CONFIG_SOC_MIMXRT1166_CM4) OR (CONFIG_SOC_MIMXRT1176_CM4))
include_driver_ifdef(CONFIG_HAS_MCUX_CACHE cache/lmem driver_cache_lmem)
@ -233,6 +233,14 @@ elseif (${MCUX_DEVICE} MATCHES "MIMXRT10[0-9][0-9]")
include_driver_ifdef(CONFIG_PM_MCUX_PMU pmu driver_pmu)
endif()
if((${MCUX_DEVICE} MATCHES "RW61") AND (NOT DEFINED CONFIG_MINIMAL_LIBC))
# Whenever building for RW61x without minimal LIBC, use optimized memcpy.
# This will avoid issues with unaligned access to peripheral RAM regions
# caused by the memcpy implmentation in newlib
zephyr_library_sources(${CMAKE_CURRENT_LIST_DIR}/mcux-sdk/utilities/misc_utilities/fsl_memcpy.S)
endif()
if("${CONFIG_SOC_FAMILY}" STREQUAL "nxp_kinetis")
include_driver_ifdef(CONFIG_SOC_FLASH_MCUX flash driver_flash)

View File

@ -0,0 +1,13 @@
#Description: device_system; user_visible: False
include_guard(GLOBAL)
message("device_system component is included.")
target_sources(${MCUX_SDK_PROJECT_NAME} PRIVATE
${CMAKE_CURRENT_LIST_DIR}/system_RW610.c
)
target_include_directories(${MCUX_SDK_PROJECT_NAME} PUBLIC
${CMAKE_CURRENT_LIST_DIR}/.
)

View File

@ -0,0 +1,13 @@
#Description: device_system; user_visible: False
include_guard(GLOBAL)
message("device_system component is included.")
target_sources(${MCUX_SDK_PROJECT_NAME} PRIVATE
${CMAKE_CURRENT_LIST_DIR}/system_RW612.c
)
target_include_directories(${MCUX_SDK_PROJECT_NAME} PUBLIC
${CMAKE_CURRENT_LIST_DIR}/.
)