#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#

comment "Atmel SAMD/L Configuration Options"

choice
	prompt "Atmel SAMD/L Chip Selection"
	default ARCH_CHIP_SAMD20J18 if ARCH_CHIP_SAMD
	default ARCH_CHIP_SAMD21J18 if ARCH_CHIP_SAML
	depends on ARCH_CHIP_SAMD || ARCH_CHIP_SAML

config ARCH_CHIP_SAMD20E14
	bool "SAMD20E14"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD20
	select ARCH_FAMILY_SAMD20E
	---help---
		Flash 16KB SRAM 2KB

config ARCH_CHIP_SAMD20E15
	bool "SAMD20E15"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD20
	select ARCH_FAMILY_SAMD20E
	---help---
		Flash 32KB SRAM 4KB

config ARCH_CHIP_SAMD20E16
	bool "SAMD20E16"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD20
	select ARCH_FAMILY_SAMD20E
	---help---
		Flash 64KB SRAM 8KB

config ARCH_CHIP_SAMD20E17
	bool "SAMD20E17"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD20
	select ARCH_FAMILY_SAMD20E
	---help---
		Flash 128KB SRAM 16KB

config ARCH_CHIP_SAMD20E18
	bool "SAMD20E18"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD20
	select ARCH_FAMILY_SAMD20E
	---help---
		Flash 256KB SRAM 32KB

config ARCH_CHIP_SAMD20G14
	bool "SAMD20G14"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD20
	select ARCH_FAMILY_SAMD20G
	---help---
		Flash 16KB SRAM 2KB

config ARCH_CHIP_SAMD20G15
	bool "SAMD20G15"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD20
	select ARCH_FAMILY_SAMD20G
	---help---
		Flash 32KB SRAM 4KB

config ARCH_CHIP_SAMD20G16
	bool "SAMD20G16"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD20
	select ARCH_FAMILY_SAMD20G
	---help---
		Flash 64KB SRAM 8KB

config ARCH_CHIP_SAMD20G17
	bool "SAMD20G17"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD20
	select ARCH_FAMILY_SAMD20G
	---help---
		Flash 128KB SRAM 16KB

config ARCH_CHIP_SAMD20G18
	bool "SAMD20G18"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD20
	select ARCH_FAMILY_SAMD20G
	---help---
		Flash 256KB SRAM 32KB

config ARCH_CHIP_SAMD20J14
	bool "SAMD20J14"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD20
	select ARCH_FAMILY_SAMD20J
	---help---
		Flash 16KB SRAM 2KB

config ARCH_CHIP_SAMD20J15
	bool "SAMD20J15"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD20
	select ARCH_FAMILY_SAMD20J
	---help---
		Flash 32KB SRAM 4KB

config ARCH_CHIP_SAMD20J16
	bool "SAMD20J16"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD20
	select ARCH_FAMILY_SAMD20J
	---help---
		Flash 64KB SRAM 8KB

config ARCH_CHIP_SAMD20J17
	bool "SAMD20J17"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD20
	select ARCH_FAMILY_SAMD20J
	---help---
		Flash 128KB SRAM 16KB

config ARCH_CHIP_SAMD20J18
	bool "SAMD20J18"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD20
	select ARCH_FAMILY_SAMD20J
	---help---
		Flash 256KB SRAM 32KB

config ARCH_CHIP_SAMD21E15A
	bool "SAMD21E15A"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD21
	select ARCH_FAMILY_SAMD21E
	---help---
		Flash 32KB SRAM 4KB

config ARCH_CHIP_SAMD21E15B
	bool "SAMD21E15B"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD21
	select ARCH_FAMILY_SAMD21E
	---help---
		Flash 32KB SRAM 4KB RWW FLASH 1KB

config ARCH_CHIP_SAMD21E16A
	bool "SAMD21E16A"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD21
	select ARCH_FAMILY_SAMD21E
	---help---
		Flash 64KB SRAM 8KB

config ARCH_CHIP_SAMD21E16B
	bool "SAMD21E16B"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD21
	select ARCH_FAMILY_SAMD21E
	---help---
		Flash 64KB SRAM 8KB RWW FLASH 2KB

config ARCH_CHIP_SAMD21E17A
	bool "SAMD21E17A"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD21
	select ARCH_FAMILY_SAMD21E
	---help---
		Flash 128KB SRAM 16KB

config ARCH_CHIP_SAMD21E18A
	bool "SAMD21E18A"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD21
	select ARCH_FAMILY_SAMD21E
	---help---
		Flash 256KB SRAM 32KB

config ARCH_CHIP_SAMD21G15A
	bool "SAMD21G15A"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD21
	select ARCH_FAMILY_SAMD21G
	---help---
		Flash 32KB SRAM 4KB

config ARCH_CHIP_SAMD21G15B
	bool "SAMD21G15B"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD21
	select ARCH_FAMILY_SAMD21G
	---help---
		Flash 32KB SRAM 4KB RWW FLASH 1KB

config ARCH_CHIP_SAMD21G16A
	bool "SAMD21G16A"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD21
	select ARCH_FAMILY_SAMD21G
	---help---
		Flash 64KB SRAM 8KB

config ARCH_CHIP_SAMD21G16B
	bool "SAMD21G16B"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD21
	select ARCH_FAMILY_SAMD21E
	---help---
		Flash 64KB SRAM 8KB RWW FLASH 2KB

config ARCH_CHIP_SAMD21G17A
	bool "SAMD21G17A"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD21
	select ARCH_FAMILY_SAMD21G
	---help---
		Flash 128KB SRAM 16KB

config ARCH_CHIP_SAMD21G18A
	bool "SAMD21G18A"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD21
	select ARCH_FAMILY_SAMD21G
	---help---
		Flash 256KB SRAM 32KB

config ARCH_CHIP_SAMD21J15A
	bool "SAMD21J15A"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD21
	select ARCH_FAMILY_SAMD21J
	---help---
		Flash 32KB SRAM 4KB

config ARCH_CHIP_SAMD21J15B
	bool "SAMD21J15B"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD21
	select ARCH_FAMILY_SAMD21J
	---help---
		Flash 32KB SRAM 4KB RWW FLASH 1KB

config ARCH_CHIP_SAMD21J16A
	bool "SAMD21J16A"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD21
	select ARCH_FAMILY_SAMD21J
	---help---
		Flash 64KB SRAM 8KB

config ARCH_CHIP_SAMD21J16B
	bool "SAMD21J16B"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD21
	select ARCH_FAMILY_SAMD21J
	---help---
		Flash 64KB SRAM 8KB RWW FLASH 2KB

config ARCH_CHIP_SAMD21J17A
	bool "SAMD21J17A"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD21
	select ARCH_FAMILY_SAMD21E
	---help---
		Flash 128KB SRAM 16KB

config ARCH_CHIP_SAMD21J18A
	bool "SAMD21J18A"
	depends on ARCH_CHIP_SAMD
	select ARCH_FAMILY_SAMD21
	select ARCH_FAMILY_SAMD21J
	---help---
		Flash 256KB SRAM 32KB

config ARCH_CHIP_SAML21E15
	bool "SAML21E15"
	depends on ARCH_CHIP_SAML
	select ARCH_FAMILY_SAML21
	select ARCH_FAMILY_SAML21E
	---help---
		Flash 32KB SRAM 4KB

config ARCH_CHIP_SAML21E16
	bool "SAML21E16"
	depends on ARCH_CHIP_SAML
	select ARCH_FAMILY_SAML21
	select ARCH_FAMILY_SAML21E
	---help---
		Flash 64KB SRAM 8KB

config ARCH_CHIP_SAML21E17
	bool "SAML21E17"
	depends on ARCH_CHIP_SAML
	select ARCH_FAMILY_SAML21
	select ARCH_FAMILY_SAML21E
	---help---
		Flash 128KB SRAM 16KB

config ARCH_CHIP_SAML21E18
	bool "SAML21E18"
	depends on ARCH_CHIP_SAML
	select ARCH_FAMILY_SAML21
	select ARCH_FAMILY_SAML21E
	---help---
		Flash 256KB SRAM 32KB

config ARCH_CHIP_SAML21G16
	bool "SAML21G16"
	depends on ARCH_CHIP_SAML
	select ARCH_FAMILY_SAML21
	select ARCH_FAMILY_SAML21G
	---help---
		Flash 64KB SRAM 4KB

config ARCH_CHIP_SAML21G17
	bool "SAML21G17"
	depends on ARCH_CHIP_SAML
	select ARCH_FAMILY_SAML21
	select ARCH_FAMILY_SAML21G
	---help---
		Flash 128KB SRAM 16KB

config ARCH_CHIP_SAML21G18
	bool "SAML21G18"
	depends on ARCH_CHIP_SAML
	select ARCH_FAMILY_SAML21
	select ARCH_FAMILY_SAML21G
	---help---
		Flash 256KB SRAM 32KB

config ARCH_CHIP_SAML21J16
	bool "SAML21J16"
	depends on ARCH_CHIP_SAML
	select ARCH_FAMILY_SAML21
	select ARCH_FAMILY_SAML21J
	---help---
		Flash 64KB SRAM 4KB

config ARCH_CHIP_SAML21J17
	bool "SAML21J17"
	depends on ARCH_CHIP_SAML
	select ARCH_FAMILY_SAML21
	select ARCH_FAMILY_SAML21J
	---help---
		Flash 128KB SRAM 16KB

config ARCH_CHIP_SAML21J18
	bool "SAML21J18"
	depends on ARCH_CHIP_SAML
	select ARCH_FAMILY_SAML21
	select ARCH_FAMILY_SAML21J
	---help---
		Flash 256KB SRAM 32KB

endchoice

config ARCH_FAMILY_SAMD20
	bool
	default n
	select SAMDL_HAVE_TC2
	select SAMDL_HAVE_TC3
	select SAMDL_HAVE_TC5

config ARCH_FAMILY_SAMD20E
	bool
	default n

config ARCH_FAMILY_SAMD20G
	bool
	default n
	select SAMDL_HAVE_SERCOM4
	select SAMDL_HAVE_SERCOM5

config ARCH_FAMILY_SAMD20J
	bool
	default n
	select SAMDL_HAVE_SERCOM4
	select SAMDL_HAVE_SERCOM5
	select SAMDL_HAVE_TC6
	select SAMDL_HAVE_TC7

config ARCH_FAMILY_SAMD21
	bool
	default n
	select SAMDL_HAVE_DMAC
	select SAMDL_HAVE_USB

config ARCH_FAMILY_SAMD21E
	bool
	default n

config ARCH_FAMILY_SAMD21G
	bool
	default n
	select SAMDL_HAVE_SERCOM4
	select SAMDL_HAVE_SERCOM5

config ARCH_FAMILY_SAMD21J
	bool
	default n
	select SAMDL_HAVE_SERCOM4
	select SAMDL_HAVE_SERCOM5
	select SAMDL_HAVE_TC2
	select SAMDL_HAVE_TC3
	select SAMDL_HAVE_TC5

config ARCH_FAMILY_SAML21
	bool
	default n
	select SAMDL_HAVE_DMAC
	select SAMDL_HAVE_USB

config ARCH_FAMILY_SAML21E
	bool
	default n

config ARCH_FAMILY_SAML21G
	bool
	default n
	select SAMDL_HAVE_SERCOM4
	select SAMDL_HAVE_SERCOM5

config ARCH_FAMILY_SAML21J
	bool
	default n
	select SAMDL_HAVE_SERCOM4
	select SAMDL_HAVE_SERCOM5
	select SAMDL_HAVE_TC2
	select SAMDL_HAVE_TC3
	select SAMDL_HAVE_TC5

menu "SAMD/L Peripheral Support"

config SAMDL_HAVE_DMAC
	bool
	default n

config SAMDL_HAVE_SERCOM4
	bool
	default n

config SAMDL_HAVE_SERCOM5
	bool
	default n

config SAMDL_HAVE_TC5
	bool
	default n

config SAMDL_HAVE_TC2
	bool
	default n

config SAMDL_HAVE_TC3
	bool
	default n

config SAMDL_HAVE_TC6
	bool
	default n

config SAMDL_HAVE_TC7
	bool
	default n

config SAMDL_HAVE_USB
	bool
	default n

config SAMDL_AC
	bool "Analog Comparator"
	default n

config SAMDL_ADC
	bool "Analog-to-Digital Converter"
	default n

config SAMDL_DAC
	bool "Digital-to-Analog Converter"
	default n

config SAMDL_DMAC
	bool "DMA Controller"
	default n
	select ARCH_DMA
	depends on SAMDL_HAVE_DMAC && EXPERIMENTAL

config SAMDL_EVSYS
	bool "Event System"
	default n

config SAMDL_NVMCTRL
	bool "Non-Volatile Memory Controller"
	default n

config SAMDL_PTC
	bool "Peripheral Touch Controller"
	default n

config SAMDL_RTC
	bool "Real Time Counter"
	default n

config SAMDL_SERCOM0
	bool "Serial Communication Interface 0"
	default n

config SAMDL_SERCOM1
	bool "Serial Communication Interface 1"
	default n

config SAMDL_SERCOM2
	bool "Serial Communication Interface 2"
	default n

config SAMDL_SERCOM3
	bool "Serial Communication Interface 3"
	default n

config SAMDL_SERCOM4
	bool "Serial Communication Interface 4"
	default n
	depends on SAMDL_HAVE_SERCOM4

config SAMDL_SERCOM5
	bool "Serial Communication Interface 5"
	default n
	depends on SAMDL_HAVE_SERCOM5

config SAMDL_TC0
	bool "Timer/Counter 0"
	default n

config SAMDL_TC1
	bool "Timer/Counter 1"
	default n

config SAMDL_TC2
	bool "Timer/Counter 2"
	default n
	depends on SAMDL_HAVE_TC2

config SAMDL_TC3
	bool "Timer/Counter 3"
	default n
	depends on SAMDL_HAVE_TC3

config SAMDL_TC4
	bool "Timer/Counter 4"
	default n

config SAMDL_TC5
	bool "Timer/Counter 5"
	default n
	depends on SAMDL_HAVE_TC5

config SAMDL_TC6
	bool "Timer/Counter 6"
	default n
	depends on SAMDL_HAVE_TC6

config SAMDL_TC7
	bool "Timer/Counter 7"
	default n
	depends on SAMDL_HAVE_TC7

config SAMDL_USB
	bool "USB"
	default n
	depends on SAMDL_HAVE_USB

config SAMDL_WDT
	bool "Watchdog Timer"
	default n

endmenu

choice
	prompt "SERCOM0 mode"
	default SAMDL_SERCOM0_ISUSART
	depends on SAMDL_SERCOM0

config SAMDL_SERCOM0_ISI2C
	bool "I2C"
	select I2C
	select SAMDL_HAVE_I2C

config SAMDL_SERCOM0_ISSPI
	bool "SPI"
	select SAMDL_HAVE_SPI

config SAMDL_SERCOM0_ISUSART
	bool "USART"
	select USART0_SERIALDRIVER

endchoice

config SAMDL_DMAC_NDESC
	int "Number of additional DMA Descriptors"
	default 0
	depends on SAMDL_DMAC
	---help---
		This provides the number of additional DMA descriptors that can be
		use to support multi-linked DMA transfers.  A minimum of 16
		descriptors will always be allocated (16 for the base descriptor which
		overlap the writeback descriptors).  If this value is set to zero,
		then only single block DMA transfers can be supported.

		Each additional DMA descriptor will require 16-bytes for LPRAM
		memory.

choice
	prompt "SERCOM1 mode"
	default SAMDL_SERCOM1_ISUSART
	depends on SAMDL_SERCOM1

config SAMDL_SERCOM1_ISI2C
	bool "I2C"
	select I2C
	select SAMDL_HAVE_I2C

config SAMDL_SERCOM1_ISSPI
	bool "SPI"
	select SAMDL_HAVE_SPI

config SAMDL_SERCOM1_ISUSART
	bool "USART"
	select USART1_SERIALDRIVER

endchoice

choice
	prompt "SERCOM2 mode"
	default SAMDL_SERCOM2_ISUSART
	depends on SAMDL_SERCOM2

config SAMDL_SERCOM2_ISI2C
	bool "I2C"
	select I2C
	select SAMDL_HAVE_I2C

config SAMDL_SERCOM2_ISSPI
	bool "SPI"
	select SAMDL_HAVE_SPI

config SAMDL_SERCOM2_ISUSART
	bool "USART"
	select USART2_SERIALDRIVER

endchoice

choice
	prompt "SERCOM3 mode"
	default SAMDL_SERCOM3_ISUSART
	depends on SAMDL_SERCOM3

config SAMDL_SERCOM3_ISI2C
	bool "I2C"
	select I2C
	select SAMDL_HAVE_I2C

config SAMDL_SERCOM3_ISSPI
	bool "SPI"
	select SAMDL_HAVE_SPI

config SAMDL_SERCOM3_ISUSART
	bool "USART"
	select USART3_SERIALDRIVER

endchoice

choice
	prompt "SERCOM4 mode"
	default SAMDL_SERCOM4_ISUSART
	depends on SAMDL_SERCOM4

config SAMDL_SERCOM4_ISI2C
	bool "I2C"
	select I2C
	select SAMDL_HAVE_I2C

config SAMDL_SERCOM4_ISSPI
	bool "SPI"
	select SAMDL_HAVE_SPI

config SAMDL_SERCOM4_ISUSART
	bool "USART"
	select USART4_SERIALDRIVER

endchoice

choice
	prompt "SERCOM5 mode"
	default SAMDL_SERCOM5_ISUSART
	depends on SAMDL_SERCOM5

config SAMDL_SERCOM5_ISI2C
	bool "I2C"
	select I2C
	select SAMDL_HAVE_I2C

config SAMDL_SERCOM5_ISSPI
	bool "SPI"
	select SAMDL_HAVE_SPI

config SAMDL_SERCOM5_ISUSART
	bool "USART"
	select USART5_SERIALDRIVER

endchoice

config SAMDL_HAVE_SPI
	bool
	select SPI

if SAMDL_HAVE_SPI

config SAMDL_SPI_REGDEBUG
	bool "SPI register-Level Debug"
	default n
	depends on DEBUG_SPI_INFO
	---help---
		Enable very low-level register access debug.  Depends on DEBUG_SPI.

endif # SAMDL_HAVE_SPI

config SAMDL_HAVE_I2C
	bool
	select I2C

if SAMDL_HAVE_I2C

config SAMDL_I2C_REGDEBUG
	bool "I2C register-Level Debug"
	default n
	depends on DEBUG_I2C_INFO
	---help---
		Enable very low-level register access debug.  Depends on DEBUG_I2C.

endif # SAMDL_HAVE_I2C

if SAMDL_HAVE_USB

config SAMDL_USB_ENABLE_PPEP
	bool "Enable Ping-Pong Endpoints"
	default n
	---help---
		To maximize throughput, an endpoint can be configured for ping-pong
		operation.  When this is done the input and output endpoint with the same
		address are used in the same direction.  The CPU or DMA Controller can
		then read/write one data buffer while the USB module writes/reads from
		the other buffer.  This gives double buffered communication.

config SAMDL_USB_REGDEBUG
	bool "USB register-Level Debug"
	default n
	depends on DEBUG_USB_INFO
	---help---
		Enable very low-level register access debug.  Depends on
		CONFIG_DEBUG_USB_INFO.

endif # SAMDL_HAVE_USB
