# Copyright (c) 2019 ML!PA Consulting GmbH
# SPDX-License-Identifier: Apache-2.0

if SOC_SERIES_SAMD51 || SOC_SERIES_SAME51 || SOC_SERIES_SAME53 || SOC_SERIES_SAME54

config SOC_ATMEL_SAMD5X_XOSC32K
	bool "Enable the external 32 kHz crystal oscillator"
	help
	  Say y to enable the external 32 kHZ crystal oscillator at
	  startup.  This can then be selected as the main clock source
	  for the SOC.

choice
	prompt "Main clock source"
	help
	  Selects the clock that the main clocks, such as the CPU
	  clock and AHB clock, will be derived from.

config SOC_ATMEL_SAMD5X_XOSC32K_AS_MAIN
	depends on SOC_ATMEL_SAMD5X_XOSC32K
	bool "XOSC32K"

config SOC_ATMEL_SAMD5X_OSCULP32K_AS_MAIN
	bool "OSCULP32K"

endchoice

endif
