# Atmel SAM4E MCU series

# Copyright (c) 2017 Justin Watson
# Copyright (c) 2018 Vincent van der Locht
# Copyright (c) 2019 Gerson Fernando Budke
# SPDX-License-Identifier: Apache-2.0

choice
	prompt "Atmel SAM4E MCU Selection"
	depends on SOC_SERIES_SAM4E

	config SOC_PART_NUMBER_SAM4E16E
		bool "SAM4E16E"

	config SOC_PART_NUMBER_SAM4E16C
		bool "SAM4E16C"

	config SOC_PART_NUMBER_SAM4E8E
		bool "SAM4E8E"

	config SOC_PART_NUMBER_SAM4E8C
		bool "SAM4E8C"

endchoice

if SOC_SERIES_SAM4E

config SOC_ATMEL_SAM4E_EXT_SLCK
	bool "Atmel SAM4E to use external crystal oscillator for slow clock"
	help
	  Says y if you want to use external 32 kHz crystal
	  oscillator to drive the slow clock. Note that this
	  adds a few seconds to boot time, as the crystal
	  needs to stabilize after power-up.

	  Says n if you do not need accurate and precise timers.
	  The slow clock will be driven by the internal fast
	  RC oscillator running at 32 kHz.

config SOC_ATMEL_SAM4E_EXT_MAINCK
	bool "Atmel SAM4E to use external crystal oscillator for main clock"
	help
	  The main clock is being used to drive the PLL, and
	  thus driving the processor clock.

	  Says y if you want to use external crystal oscillator
	  to drive the main clock. Note that this adds about
	  a second to boot time, as the crystal needs to
	  stabilize after power-up.

	  The crystal used here can be from 3 to 20 MHz.

	  Says n here will use the internal fast RC oscillator
	  running at 12 MHz.

config SOC_ATMEL_SAM4E_PLLA_MULA
	hex "PLL MULA"
	default 0x09
	help
	  This is the multiplier (MULA) used by the PLL.
	  The processor clock is (MAINCK * (MULA + 1) / DIVA).

	  Board config file can override this settings
	  for a particular board.

	  With default of MULA == 9, and DIVA == 1,
	  PLL is running at 10 times of main clock.

config SOC_ATMEL_SAM4E_PLLA_DIVA
	hex "PLL DIVA"
	default 0x01
	help
	  This is the divider (DIVA) used by the PLL.
	  The processor clock is (MAINCK * (MULA + 1) / DIVA).

	  Board config file can override this settings
	  for a particular board.

	  With default of MULA == 9, and DIVA == 1,
	  PLL is running at 10 times of main clock.

config SOC_ATMEL_SAM4E_WAIT_MODE
	bool "Atmel SAM4E goes to Wait mode instead of Sleep mode"
	depends on SOC_ATMEL_SAM4E_EXT_MAINCK
	default y if DEBUG
	help
	  For JTAG debugging CPU clock (HCLK) should not stop. In order
	  to achieve this, make CPU go to Wait mode instead of Sleep
	  mode while using external crystal oscillator for main clock.

endif # SOC_SERIES_SAM4E
