# LPC11U6X MCU clock control driver config

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

menuconfig CLOCK_CONTROL_LPC11U6X
	bool "LPC11U6X Reset and clock control"
	depends on SOC_SERIES_LPC11U6X
	help
	  Enable driver for reset and clock control used in
	  LPC11U6X MCUs

if CLOCK_CONTROL_LPC11U6X

config CLOCK_CONTROL_LPC11U6X_ENABLE_SRAM1
	bool "SRAM1"
	help
	  Enable SRAM1

config CLOCK_CONTROL_LPC11U6X_ENABLE_USB_RAM
	bool "USB RAM"
	help
	  Enable USB RAM

choice CLOCK_CONTROL_LPC11U6X_PLL_SRC
	prompt "LPC11U6X PLL Clock source"

config CLOCK_CONTROL_LPC11U6X_PLL_SRC_IRC
	bool "IRC"
	help
	  Use the internal oscillator as the clock source for the PLL

config CLOCK_CONTROL_LPC11U6X_PLL_SRC_SYSOSC
	bool "SYSOSC"
	help
	  Use the system oscillator as the clock source for the PLL

endchoice # CLOCK_CONTROL_LPC11U6X_PLL_SRC

endif # CLOCK_CONTROL_LPC11U6X
