# NXP LPC55XXX CPU0 platform configuration options

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

if SOC_LPC55S69_CPU0

config SOC
	default "lpc55S69_cpu0"

config PINMUX_MCUX_LPC
	default y
	depends on PINMUX

config GPIO_MCUX_LPC
	default y
	depends on GPIO

config UART_MCUX_FLEXCOMM
	default y
	depends on SERIAL

config SOC_FLASH_MCUX
	default y
	depends on FLASH
	depends on !TRUSTED_EXECUTION_NONSECURE

config WDT_MCUX_WWDT
	default y
	depends on WATCHDOG

config ADC_MCUX_LPADC
	default y
	depends on ADC

config DMA_MCUX_LPC
	default y
	depends on DMA

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

config I2S_MCUX_FLEXCOMM
	default y if HAS_MCUX_FLEXCOMM
	depends on I2S
	select INIT_PLL0

config PWM_MCUX_SCTIMER
	default y
	depends on PWM

endif # SOC_LPC55S69_CPU0
