#
# 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_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

config SAMDL_SERCOM0_ISSPI
	bool "SPI"
	select SAMDL_HAVE_SPI

config SAMDL_SERCOM0_ISUSART
	bool "USART"
	select ARCH_HAVE_USART0
	select USART0_ISUART

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

config SAMDL_SERCOM1_ISSPI
	bool "SPI"
	select SAMDL_HAVE_SPI

config SAMDL_SERCOM1_ISUSART
	bool "USART"
	select ARCH_HAVE_USART1
	select USART1_ISUART

endchoice

choice
	prompt "SERCOM2 mode"
	default SAMDL_SERCOM2_ISUSART
	depends on SAMDL_SERCOM2

config SAMDL_SERCOM2_ISI2C
	bool "I2C"
	select I2C

config SAMDL_SERCOM2_ISSPI
	bool "SPI"
	select SAMDL_HAVE_SPI

config SAMDL_SERCOM2_ISUSART
	bool "USART"
	select ARCH_HAVE_USART2
	select USART2_ISUART

endchoice

choice
	prompt "SERCOM3 mode"
	default SAMDL_SERCOM3_ISUSART
	depends on SAMDL_SERCOM3

config SAMDL_SERCOM3_ISI2C
	bool "I2C"
	select I2C

config SAMDL_SERCOM3_ISSPI
	bool "SPI"
	select SAMDL_HAVE_SPI

config SAMDL_SERCOM3_ISUSART
	bool "USART"
	select ARCH_HAVE_USART3
	select USART3_ISUART

endchoice

choice
	prompt "SERCOM4 mode"
	default SAMDL_SERCOM4_ISUSART
	depends on SAMDL_SERCOM4

config SAMDL_SERCOM4_ISI2C
	bool "I2C"
	select I2C

config SAMDL_SERCOM4_ISSPI
	bool "SPI"
	select SAMDL_HAVE_SPI

config SAMDL_SERCOM4_ISUSART
	bool "USART"
	select ARCH_HAVE_USART4
	select USART4_ISUART

endchoice

choice
	prompt "SERCOM5 mode"
	default SAMDL_SERCOM5_ISUSART
	depends on SAMDL_SERCOM5

config SAMDL_SERCOM5_ISI2C
	bool "I2C"
	select I2C

config SAMDL_SERCOM5_ISSPI
	bool "SPI"
	select SAMDL_HAVE_SPI

config SAMDL_SERCOM5_ISUSART
	bool "USART"
	select ARCH_HAVE_USART5
	select USART5_ISUART

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
	---help---
		Enable very low-level register access debug.  Depends on DEBUG_SPI.

endif # SAMDL_HAVE_SPI
