# NXP MIMXRT6XX platform configuration options

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

if SOC_MIMXRT685S_CM33

config SOC
	default "mimxrt685s_cm33"

config PINMUX_MCUX_LPC
	default y
	depends on PINMUX

config GPIO_MCUX_LPC
	default y
	depends on GPIO

config UART_MCUX_FLEXCOMM
	default y if HAS_MCUX_FLEXCOMM
	depends on SERIAL

config I2C_MCUX_FLEXCOMM
	default y if HAS_MCUX_FLEXCOMM
	depends on I2C

config SPI_MCUX_FLEXCOMM
	default y if HAS_MCUX_FLEXCOMM
	depends on SPI

config I2S_MCUX_FLEXCOMM
	default y if HAS_MCUX_FLEXCOMM
	depends on I2S
	select INIT_AUDIO_PLL

config DMA_MCUX_LPC
	default y
	depends on DMA

config CLOCK_CONTROL_MCUX_SYSCON
	default y if HAS_MCUX_SYSCON
	depends on CLOCK_CONTROL

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

config COUNTER_MCUX_LPC_RTC
	default y
	depends on COUNTER

config PWM_MCUX_SCTIMER
	default y
	depends on PWM

config WDT_MCUX_WWDT
	default y
	depends on WATCHDOG

config USB_MCUX
	default y
	depends on USB_DEVICE_DRIVER

choice USB_MCUX_CONTROLLER_TYPE
	default USB_DC_NXP_LPCIP3511
endchoice

config COUNTER_MCUX_CTIMER
	default y
	depends on COUNTER

endif # SOC_MIMXRT685S_CM33
