nuttx/arch/arm/src/efm32/Kconfig

602 lines
12 KiB
Plaintext

#
# arch/arm/src/efm32/Kconfig
#
if ARCH_CHIP_EFM32
comment "EFM32 Configuration Options"
choice
prompt "EFM32 Chip Selection"
default ARCH_CHIP_EFM32TG840F32
config ARCH_CHIP_EFM32TG840F32
bool "EFM32TG840F32"
select EFM32_EFM32TG
select ARCH_CORTEXM3
---help---
This chip is a Tiny Gecko with 32 KB flash and 4 KB RAM in a QFN64
package
config ARCH_CHIP_EFM32G880F128
bool "EFM32G880F128"
select EFM32_EFM32G
select ARCH_CORTEXM3
---help---
This chip is a Gecko with 128KiB flash and 16KiB RAM in a LQFP100
package
config ARCH_CHIP_EFM32G890F128
bool "EFM32G890F128"
select EFM32_EFM32G
select ARCH_CORTEXM3
---help---
This chip is a Gecko with 128KiB flash and 16KiB RAM in a BGA112
package
config ARCH_CHIP_EFM32GG332F1024
bool "EFM32GG332F1024"
select EFM32_EFM32GG
select ARCH_CORTEXM3
---help---
This chip is a Giant Gecko with 1024KiB flash and 128KiB RAM in a
QFP64 package.
config ARCH_CHIP_EFM32GG990F1024
bool "EFM32GG990F1024"
select EFM32_EFM32GG
select ARCH_CORTEXM3
---help---
This chip is a Giant Gecko with 1024KiB flash and 128KiB RAM in a
BGA112 package.
endchoice
# These hidden selections represent automatically selected MCU families and,
# in turn, select general capabilities of the MCU family
config EFM32_EFM32TG
bool
default n
config EFM32_EFM32G
bool
default n
select EFM32_HAVE_USART2
select EFM32_HAVE_UART0
select EFM32_HAVE_LEUART1
config EFM32_EFM32GG
bool
default n
select EFM32_HAVE_USART2
select EFM32_HAVE_UART0
select EFM32_HAVE_UART1
select EFM32_HAVE_LEUART1
select EFM32_HAVE_OTGFS
menu "EFM32 Peripheral Support"
# These "hidden" settings determine is a peripheral option is available for
# the selection MCU
config EFM32_HAVE_USART2
bool
default n
config EFM32_HAVE_UART0
bool
default n
config EFM32_HAVE_UART1
bool
default n
config EFM32_HAVE_LEUART1
bool
default n
config EFM32_HAVE_OTGFS
bool
default n
# When there are multiple instances of a device, these "hidden" settings
# will automatically be selected and will represent the 'OR' of the
# instances selected.
config EFM32_USART_ISUART
bool
default n
config EFM32_USART_ISSPI
bool
default n
config EFM32_UART
bool
default n
config EFM32_LEUART
bool
default n
select MCU_SERIAL
# Then, these are the actual, selectable peripheral options
config EFM32_DMA
bool "DMA"
default n
select ARCH_DMA
config EFM32_RMU
bool "Reset Management Unit (RMU) "
default n
config EFM32_RMU_DEBUG
bool "Reset Management Unit (RMU) DEBUG "
default n
depends on EFM32_RMU && DEBUG
config EFM32_I2C0
bool "I2C0"
default n
config EFM32_I2C1
bool "I2C1"
default n
config EFM32_USART0
bool "USART0"
default n
select ARCH_HAVE_USART0
select ARCH_HAVE_SERIAL_TERMIOS
config EFM32_USART1
bool "USART1"
default n
select ARCH_HAVE_USART1
select ARCH_HAVE_SERIAL_TERMIOS
config EFM32_USART2
bool "USART2"
default n
depends on EFM32_HAVE_USART2
select ARCH_HAVE_USART2
select ARCH_HAVE_SERIAL_TERMIOS
config EFM32_UART0
bool "UART0"
default n
select ARCH_HAVE_UART0
select EFM32_UART
config EFM32_UART1
bool "UART1"
default n
select ARCH_HAVE_UART1
select EFM32_UART
config EFM32_LEUART0
bool "Low energy UART0"
default n
select ARCH_HAVE_OTHER_UART
select EFM32_LEUART
config EFM32_LEUART1
bool "Low energy UART1"
default n
depends on EFM32_HAVE_LEUART1
select ARCH_HAVE_OTHER_UART
select EFM32_LEUART
config EFM32_OTGFS
bool "USB Full-Speed OTG"
default n
depends on EFM32_HAVE_OTGFS && EXPERIMENTAL
select USBHOST_HAVE_ASYNCH if USBHOST
config EFM32_TIMER0
bool "TIMER0"
default n
select ARCH_HAVE_TIMER0
select EFM32_TIMER
config EFM32_TIMER1
bool "TIMER1"
default n
select ARCH_HAVE_TIMER1
select EFM32_TIMER
config EFM32_TIMER2
bool "TIMER2"
default n
select ARCH_HAVE_TIMER2
select EFM32_TIMER
config EFM32_TIMER3
bool "TIMER3"
default n
select ARCH_HAVE_TIMER3
select EFM32_TIMER
endmenu # EFM32 Peripheral Support
config EFM32_GPIO_IRQ
bool "GPIO pin interrupts"
---help---
Enable support for interrupting GPIO pins
config EFM32_LECLOCK
bool "Enable LE clocking (unconditionally)"
default n
---help---
Even you don't use core clock LE as source for LFA or LFB, to read
are write any register not clocked by HFPERCLK or HFCORECLK,
HFCORECLKLE should be enabled.
if EFM32_DMA
config EFM32_DMA_ALTDSEC
int "Enable alternate descriptors"
default 8
depends on EXPERIMENTAL
---help---
Enable support for alternate descriptors. Not fully implemented.
endif
choice
prompt "USART0 Mode"
default EFM32_USART0_ISUART
depends on EFM32_USART0
config EFM32_USART0_ISUART
bool "USART0 is a UART"
select USART0_ISUART
select EFM32_USART_ISUART
config EFM32_USART0_ISSPI
bool "USART0 is SPI"
select EFM32_USART_ISSPI
endchoice # USART0 Mode
choice
prompt "USART1 Mode"
default EFM32_USART1_ISUART
depends on EFM32_USART1
config EFM32_USART1_ISUART
bool "USART1 is a UART"
select USART1_ISUART
select EFM32_USART_ISUART
config EFM32_USART1_ISSPI
bool "USART1 is SPI"
select EFM32_USART_ISSPI
endchoice # USART1 Mode
choice
prompt "USART2 Mode"
default EFM32_USART2_ISUART
depends on EFM32_USART2
config EFM32_USART2_ISUART
bool "USART2 is a UART"
select USART2_ISUART
select EFM32_USART_ISUART
config EFM32_USART2_ISSPI
bool "USART2 is SPI"
select EFM32_USART_ISSPI
endchoice # USART2 Mode
choice
prompt "LEUART Serial Console"
default NO_LEUART_SERIAL_CONSOLE
depends on DEV_CONSOLE && EFM32_LEUART
config LEUART0_SERIAL_CONSOLE
bool "Use LEUART0 as the serial console"
depends on EFM32_LEUART0
select OTHER_SERIAL_CONSOLE
---help---
Use the LEUART0 device as the serial console
config LEUART1_SERIAL_CONSOLE
bool "Use LEUART1 as the serial console"
depends on EFM32_LEUART1
select OTHER_SERIAL_CONSOLE
---help---
Use the LEUART0 device as the serial console
config NO_LEUART_SERIAL_CONSOLE
bool "No LEUART serial console"
---help---
No serial console OR some other serial device provides the serial console
endchoice # LEUART Serial Console
menu "LEUART0 Configuration"
depends on EFM32_LEUART0
config LEUART0_RXBUFSIZE
int "Receive buffer size"
default 64
---help---
Characters are buffered as they are received. This specifies
the size of the receive buffer.
config LEUART0_TXBUFSIZE
int "Transmit buffer size"
default 64
---help---
Characters are buffered before being sent. This specifies
the size of the transmit buffer.
config LEUART0_BAUD
int "BAUD rate"
default 2400
---help---
The configured BAUD of the UART.
config LEUART0_BITS
int "Character size"
default 8
range 8 9
---help---
The number of bits. Must be either 8 or 9.
config LEUART0_PARITY
int "Parity setting"
range 0 2
default 0
---help---
0=no parity, 1=odd parity, 2=even parity
config LEUART0_2STOP
int "use 2 stop bits"
default 0
range 0 1
---help---
1=Two stop bits
endmenu # LEUART0 Configuration
menu "LEUART1 Configuration"
depends on EFM32_LEUART1
config LEUART1_RXBUFSIZE
int "Receive buffer size"
default 64
---help---
Characters are buffered as they are received. This specifies
the size of the receive buffer.
config LEUART1_TXBUFSIZE
int "Transmit buffer size"
default 64
---help---
Characters are buffered before being sent. This specifies
the size of the transmit buffer.
config LEUART1_BAUD
int "BAUD rate"
default 2400
---help---
The configured BAUD of the UART.
config LEUART1_BITS
int "Character size"
default 8
range 8 9
---help---
The number of bits. Must be either 8 or 9.
config LEUART1_PARITY
int "Parity setting"
range 0 2
default 0
---help---
0=no parity, 1=odd parity, 2=even parity
config LEUART1_2STOP
int "use 2 stop bits"
default 0
range 0 1
---help---
1=Two stop bits
endmenu # LEUART1 Configuration
if EFM32_USART_ISSPI
menu "SPI Configuration"
config EFM32_SPI_DMA
bool "SPI DMA support"
default n
depends on EFM32_DMA
---help---
Select to enable DMA SPI transfers
if EFM32_SPI_DMA
config EFM32_SPI_DMA_TIMEO_NSEC
int "Per word timeout (nsec)"
default 500
---help---
A timeout will be be used to detect hung DMA transfers. The timeout
will vary as a function of the number of words transferred. This
value provides the per-word timeout value in nanoseconds.
config EFM32_SPI_DMA_MINSIZE
int "Minimum DMA size"
default 16
---help---
DMA is particularly helpful for the case of large SPI transfers.
Smaller SPI transfer may be more efficiently performed without DMA.
This option determines a threshold: For transfers of this size and
below, DMA will not be used. A value of zero will force all DMA-
based transfers.
endif # EFM32_SPI_DMA
endmenu # SPI Configuration
endif # EFM32_USART_ISSPI
menu "USB FS Host Configuration"
depends on USBHOST && EFM32_OTGFS
config EFM32_OTGFS_RXFIFO_SIZE
int "Rx Packet Size"
default 128
---help---
Size of the RX FIFO in 32-bit words. Default 128 (512 bytes)
config EFM32_OTGFS_NPTXFIFO_SIZE
int "Non-periodic Tx FIFO Size"
default 96
---help---
Size of the non-periodic Tx FIFO in 32-bit words. Default 96 (384 bytes)
config EFM32_OTGFS_PTXFIFO_SIZE
int "Periodic Tx FIFO size"
default 128
---help---
Size of the periodic Tx FIFO in 32-bit words. Default 96 (384 bytes)
config EFM32_OTGFS_DESCSIZE
int "Descriptor Size"
default 128
---help---
Maximum size to allocate for descriptor memory descriptor. Default: 128
config EFM32_OTGFS_SOFINTR
bool "Enable SOF interrupts"
default n
---help---
Enable SOF interrupts. Why would you ever want to do that?
endmenu
config EFM32_TIMER0
bool "TIMER0"
default n
depends on EFM32_HAVE_TIMER0
config EFM32_TIMER0_PWM
bool "TIMER0 PWM"
default n
depends on EFM32_TIMER0
select ARCH_HAVE_PWM_PULSECOUNT
---help---
Reserve timer 0 for use by PWM
Timer devices may be used for different purposes. One special purpose is
to generate modulated outputs for such things as motor control.
If EFM32_TIMER0 is defined then THIS following may also be defined
to indicate that the timer is intended to be used for pulsed output
modulation.
config EFM32_TIMER0_CHANNEL
int "TIMER0 PWM Output Channel"
default 0
range 0 2
depends on EFM32_TIMER0_PWM
---help---
If TIMER0 is enabled for PWM usage, you also need specifies the timer output
channel {0,1,2}
config EFM32_TIMER1
bool "TIMER1"
default n
depends on EFM32_HAVE_TIMER1
config EFM32_TIMER1_PWM
bool "TIMER1 PWM"
default n
depends on EFM32_TIMER1
select ARCH_HAVE_PWM_PULSECOUNT
---help---
Reserve timer 0 for use by PWM
Timer devices may be used for different purposes. One special purpose is
to generate modulated outputs for such things as motor control.
If EFM32_TIMER1 is defined then THIS following may also be defined
to indicate that the timer is intended to be used for pulsed output
modulation.
config EFM32_TIMER1_CHANNEL
int "TIMER1 PWM Output Channel"
default 0
range 0 2
depends on EFM32_TIMER1_PWM
---help---
If TIMER1 is enabled for PWM usage, you also need specifies the timer output
channel {0,1,2}
config EFM32_TIMER2
bool "TIMER2"
default n
depends on EFM32_HAVE_TIMER2
config EFM32_TIMER2_PWM
bool "TIMER2 PWM"
default n
depends on EFM32_TIMER2
select ARCH_HAVE_PWM_PULSECOUNT
---help---
Reserve timer 0 for use by PWM
Timer devices may be used for different purposes. One special purpose is
to generate modulated outputs for such things as motor control.
If EFM32_TIMER2 is defined then THIS following may also be defined
to indicate that the timer is intended to be used for pulsed output
modulation.
config EFM32_TIMER2_CHANNEL
int "TIMER2 PWM Output Channel"
default 0
range 0 2
depends on EFM32_TIMER2_PWM
---help---
If TIMER2 is enabled for PWM usage, you also need specifies the timer output
channel {0,1,2}
config EFM32_TIMER3
bool "TIMER3"
default n
depends on EFM32_HAVE_TIMER3
config EFM32_TIMER3_PWM
bool "TIMER3 PWM"
default n
depends on EFM32_TIMER3
select ARCH_HAVE_PWM_PULSECOUNT
---help---
Reserve timer 0 for use by PWM
Timer devices may be used for different purposes. One special purpose is
to generate modulated outputs for such things as motor control.
If EFM32_TIMER3 is defined then THIS following may also be defined
to indicate that the timer is intended to be used for pulsed output
modulation.
config EFM32_TIMER3_CHANNEL
int "TIMER3 PWM Output Channel"
default 0
range 0 2
depends on EFM32_TIMER3_PWM
---help---
If TIMER3 is enabled for PWM usage, you also need specifies the timer output
channel {0,1,2}
config EFM32_RTC_BURTC
bool "Use BURTC as RTC"
default n
---help---
Enable RTC with EFM32 BURTC
endif # ARCH_CHIP_EFM32