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

if ARCH_CHIP_ESP32

choice ESP32_DEFAULT_CPU_FREQ
	prompt "CPU frequency"
	default ESP32_DEFAULT_CPU_FREQ_240
	help
		CPU frequency to be set on application startup.

	config ESP32_DEFAULT_CPU_FREQ_80
		bool "80 MHz"
	config ESP32_DEFAULT_CPU_FREQ_160
		bool "160 MHz"
	config ESP32_DEFAULT_CPU_FREQ_240
		bool "240 MHz"
endchoice # CPU frequency

config ESP32_DEFAULT_CPU_FREQ_MHZ
	int
	default 80 if ESP32_DEFAULT_CPU_FREQ_80
	default 160 if ESP32_DEFAULT_CPU_FREQ_160
	default 240 if ESP32_DEFAULT_CPU_FREQ_240

menu "ESP32 Peripheral Selection"

config ESP32_UART
	bool
	default n

config ESP32_BT
	bool "Bluetooth"
	default n
	depends on EXPERIMENTAL
	---help---
		No yet implemented

config ESP32_EMAC
	bool "Ethernet MAC"
	default n
	select NET
	---help---
		Enable ESP32 ethernet support.

config ESP32_I2C
	bool
	default n

config ESP32_I2S0
	bool "I2S 0"
	default n
	depends on EXPERIMENTAL
	---help---
		No yet implemented

config ESP32_I2S1
	bool "I2S 2"
	default n
	depends on EXPERIMENTAL
	---help---
		No yet implemented

config ESP32_LEDC
	bool "LED PWM (LEDC)"
	default n
	depends on EXPERIMENTAL
	---help---
		No yet implemented

config ESP32_PCNT
	bool "Pulse Count Module (PCNT)"
	default n
	depends on EXPERIMENTAL
	---help---
		No yet implemented

config ESP32_RMT
	bool "Remote Control Module (RMT)"
	default n
	depends on EXPERIMENTAL
	---help---
		No yet implemented

config ESP32_RNG
	bool "Random Number Generator (RNG)"
	default n
	depends on EXPERIMENTAL
	select ARCH_HAVE_RNG
	---help---
		ESP32 supports a RNG that passed on Dieharder test suite.

config ESP32_SDIO_SAVE
	bool "SDIO Slave"
	default n
	depends on EXPERIMENTAL
	---help---
		No yet implemented

config ESP32_SDMMC
	bool "SD/MMC card support"
	default n
	depends on EXPERIMENTAL
	---help---
		No yet implemented

config ESP32_SPI
	bool
	default n

config ESP32_SPIFLASH
	bool "SPI Flash"
	default n
	select MTD
	select MTD_BYTE_WRITE
	select MTD_PARTITION

config ESP32_SPI2
	bool "SPI 2"
	default n
	select ESP32_SPI
	select ESP32_GPIO_IRQ
	select SPI

config ESP32_SPI3
	bool "SPI 3"
	default n
	select ESP32_SPI
	select ESP32_GPIO_IRQ
	select SPI

config XTENSA_TIMER1
	bool "Xtensa Timer 1"
	default n

config XTENSA_TIMER2
	bool "Xtensa Timer 2"
	default n

config ESP32_TIMER0
	bool "64-bit Timer 0"
	default n
	depends on EXPERIMENTAL
	---help---
		No yet implemented

config ESP32_TIMER1
	bool "64-bit Timer 1"
	default n
	depends on EXPERIMENTAL
	---help---
		No yet implemented

config ESP32_TIMER2
	bool "64-bit Timer 2"
	default n
	depends on EXPERIMENTAL
	---help---
		No yet implemented

config ESP32_TIMER3
	bool "64-bit Timer 3"
	default n
	depends on EXPERIMENTAL
	---help---
		No yet implemented

config ESP32_MWDT0
	bool "Timer 0 Watchdog"
	default n
	depends on EXPERIMENTAL
	select ESP32_TIMER0
	---help---
		No yet implemented

config ESP32_MWDT1
	bool "Timer 1 Watchdog"
	default n
	depends on EXPERIMENTAL
	select ESP32_TIMER1
	---help---
		No yet implemented

config ESP32_MWDT2
	bool "Timer 2 Watchdog"
	default n
	depends on EXPERIMENTAL
	select ESP32_TIMER2
	---help---
		No yet implemented

config ESP32_MWDT3
	bool "Timer 3 Watchdog"
	default n
	depends on EXPERIMENTAL
	select ESP32_TIMER3
	---help---
		No yet implemented

config ESP32_RWDT
	bool "RTC Watchdog"
	default n
	depends on EXPERIMENTAL
	---help---
		No yet implemented

config ESP32_UART0
	bool "UART 0"
	default n
	select ESP32_UART
	select UART0_SERIALDRIVER
	select ARCH_HAVE_SERIAL_TERMIOS

config ESP32_UART1
	bool "UART 1"
	default n
	select ESP32_UART
	select UART1_SERIALDRIVER
	select ARCH_HAVE_SERIAL_TERMIOS

config ESP32_UART2
	bool "UART 2"
	default n
	select ESP32_UART
	select UART2_SERIALDRIVER
	select ARCH_HAVE_SERIAL_TERMIOS

config ESP32_WIRELESS
	bool "Wireless"
	default n
	depends on EXPERIMENTAL
	---help---
		No yet implemented

config ESP32_I2C0
	bool "I2C 0"
	default n
	select ESP32_I2C
	select I2C
	select I2C_DRIVER

config ESP32_I2C1
	bool "I2C 1"
	default n
	select ESP32_I2C
	select I2C
	select I2C_DRIVER

endmenu # ESP32 Peripheral Selection

menu "Memory Configuration"

config ESP32_BT_RESERVE_DRAM
	int "Reserved BT DRAM"
	default 0

config ESP32_TRACEMEM_RESERVE_DRAM
	int "Reserved trace memory DRAM"
	default 0

config ESP32_ULP_COPROC_RESERVE_MEM
	int "Reserved ULP co-processor DRAM"
	default 0

endmenu # Memory Configuration

config ESP32_GPIO_IRQ
	bool "GPIO pin interrupts"
	---help---
		Enable support for interrupting GPIO pins

menu "UART configuration"
	depends on ESP32_UART

if ESP32_UART0

config ESP32_UART0_TXPIN
	int "UART0 Tx Pin"
	default 1
	range 0 39

config ESP32_UART0_RXPIN
	int "UART0 Rx Pin"
	default 3
	range 0 39

if SERIAL_IFLOWCONTROL || SERIAL_OFLOWCONTROL
config ESP32_UART0_RTSPIN
	int "UART0 RTS Pin"
	default 22
	range 0 39

config ESP32_UART0_CTSPIN
	int "UART0 CTS Pin"
	default 19
	range 0 39

endif # SERIAL_IFLOWCONTROL || SERIAL_OFLOWCONTROL
endif # ESP32_UART0

if ESP32_UART1

config ESP32_UART1_TXPIN
	int "UART1 Tx Pin"
	default 10
	range 0 39

config ESP32_UART1_RXPIN
	int "UART1 Rx Pin"
	default 9
	range 0 39

if SERIAL_IFLOWCONTROL || SERIAL_OFLOWCONTROL
config ESP32_UART1_RTSPIN
	int "UART1 RTS Pin"
	default 11
	range 0 39

config ESP32_UART1_CTSPIN
	int "UART1 CTS Pin"
	default 6
	range 0 39

endif # SERIAL_IFLOWCONTROL || SERIAL_OFLOWCONTROL
endif # ESP32_UART1

if ESP32_UART2

config ESP32_UART2_TXPIN
	int "UART2 Tx Pin"
	default 17
	range 0 39

config ESP32_UART2_RXPIN
	int "UART2 Rx Pin"
	default 16
	range 0 39

if SERIAL_IFLOWCONTROL || SERIAL_OFLOWCONTROL
config ESP32_UART2_RTSPIN
	int "UART2 RTS Pin"
	default 7
	range 0 39

config ESP32_UART2_CTSPIN
	int "UART2 CTS Pin"
	default 8
	range 0 39

endif # SERIAL_IFLOWCONTROL || SERIAL_OFLOWCONTROL
endif # ESP32_UART2

endmenu # UART configuration

menu "I2C configuration"
	depends on ESP32_I2C

if ESP32_I2C0

config ESP32_I2C0_SCLPIN
	int "I2C0 SCL Pin"
	default 24
	range 0 39

config ESP32_I2C0_SDAPIN
	int "I2C0 SDA Pin"
	default 23
	range 0 39

endif # ESP32_I2C0

if ESP32_I2C1

config ESP32_I2C1_SCLPIN
	int "I2C1 SCL Pin"
	default 26
	range 0 39

config ESP32_I2C1_SDAPIN
	int "I2C1 SDA Pin"
	default 25
	range 0 39

endif # ESP32_I2C1

endmenu # I2C configuration

menu "SPI configuration"
	depends on ESP32_SPI

config ESP32_SPI_SWCS
	bool "SPI software CS"
	default y
	---help---
		Use SPI software CS.

config ESP32_SPI_UDCS
	bool "User defined CS"
	default n
	depends on ESP32_SPI_SWCS
	---help---
		Use user defined CS.

config ESP32_SPI2_DMA
	bool "SPI2 use DMA"
	default y
	depends on ESP32_SPI2

config ESP32_SPI3_DMA
	bool "SPI3 use DMA"
	default y
	depends on ESP32_SPI3

config SPI_DMADESC_NUM
	int "SPI master DMA description number"
	default 2

config SPI_SLAVE_BUFSIZE
	int "SPI slave buffer size"
	default 2048
	depends on SPI_SLAVE

if ESP32_SPI2

config ESP32_SPI2_CSPIN
	int "SPI2 CS Pin"
	default 15
	range 0 39

config ESP32_SPI2_CLKPIN
	int "SPI2 CLK Pin"
	default 14
	range 0 39

config ESP32_SPI2_MOSIPIN
	int "SPI2 MOSI Pin"
	default 13
	range 0 39

config ESP32_SPI2_MISOPIN
	int "SPI2 MISO Pin"
	default 12
	range 0 39

endif # ESP32_SPI2

if ESP32_SPI3

config ESP32_SPI3_CSPIN
	int "SPI3 CS Pin"
	default 5
	range 0 39

config ESP32_SPI3_CLKPIN
	int "SPI3 CLK Pin"
	default 18
	range 0 39

config ESP32_SPI3_MOSIPIN
	int "SPI3 MOSI Pin"
	default 23
	range 0 39

config ESP32_SPI3_MISOPIN
	int "SPI3 MISO Pin"
	default 19
	range 0 39

endif # ESP32_SPI3

endmenu # ESP32_SPI

menu "SPI Flash configuration"
	depends on ESP32_SPIFLASH

config ESP32_MTD_OFFSET
	hex "MTD base address in SPI Flash"
	default 0x180000
	help
		MTD base address in SPI Flash.

config ESP32_MTD_SIZE
	hex "MTD size in SPI Flash"
	default 0x100000
	help
		MTD size in SPI Flash.

config ESP32_SPIFLASH_DEBUG
	bool "Debug SPI Flash"
	default n
	depends on DEBUG_FS_INFO
	help
		Enable this option, read and write of SPI Flash
		will show input arguments and result.

endmenu # ESP32_SPIFLASH

menu "Ethernet configuration"
	depends on ESP32_EMAC

config ESP32_ETH_NRXDESC
	int "RX description number"
	default 9
	---help---
		Descriptions of RX should be more than TX's.

config ESP32_ETH_NTXDESC
	int "TX description number"
	default 8

config ESP32_ETH_MDCPIN
	int "MDC Pin"
	default 23
	range 0 39

config ESP32_ETH_MDIOPIN
	int "MDIO Pin"
	default 18
	range 0 39

config ESP32_ETH_PHY_RSTPIN
	int "Reset PHY Pin"
	default 5
	range 0 39

config ESP32_ETH_PHY_ADDR
	int "PHY address"
	default 1

endmenu # ESP32_EMAC

endif # ARCH_CHIP_ESP32
