# NXP MIMXRT5XX platform configuration options

# Copyright (c) 2022, NXP
# SPDX-License-Identifier: Apache-2.0

if SOC_MIMXRT595S_CM33

config SOC
	default "mimxrt595s_cm33"

if MCUX_OS_TIMER

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default 1000000

endif # MCUX_OS_TIMER

if CORTEX_M_SYSTICK

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default 250105263

endif # CORTEX_M_SYSTICK

choice USB_MCUX_CONTROLLER_TYPE
	default USB_DC_NXP_LPCIP3511
endchoice

# Enable the MEMC FlexSPI driver when using device power
# management so we can reconfigure the FlexSPI pins to
# save power. The MEMC FlexSPI driver is enabled when we
# enable the Flash subsystem, however we would like to
# reconfigure the FlexSPI pins even when the Flash driver
# is disabled, hence MEMC is selected when PM_DEVICE
# is turned on.
config MEMC
	default y if PM_DEVICE
	select MEMC_MCUX_FLEXSPI

endif # SOC_MIMXRT685S_CM33
